:root{--header-height: 4rem;--font-family-sans: "Fira Sans", sans-serif;--font-family-mono: "Fira Mono", monospace;--color-neutral-11: #1b1b1b;--color-neutral-13: #1e1e22;--color-neutral-14: #232326;--color-neutral-17: #2c2c2d;--color-neutral-18: #2b2c2f;--color-neutral-19: #2f3033;--color-neutral-22: #383838;--color-neutral-27: #414247;--color-neutral-33: #555;--color-neutral-33b: #535353;--color-neutral-36: #59595e;--color-neutral-40: #666;--color-neutral-42: #6b6b6b;--color-neutral-45: #737373;--color-neutral-50: #808080;--color-neutral-53: #868686;--color-neutral-55: #8c8c8c;--color-neutral-59: #969696;--color-neutral-60: #95959d;--color-neutral-60b: #999;--color-neutral-60c: #8e9aa4;--color-neutral-61: #9b9b9d;--color-neutral-67: #aaa;--color-neutral-69: #b1b1b1;--color-neutral-72: #b8b8b8;--color-neutral-73: #b9b9b9;--color-neutral-75: #bfbfbf;--color-neutral-78: #c8c8c8;--color-neutral-82: #d2d2d2;--color-neutral-88: #e1e1e1;--color-neutral-93: #ececec;--color-neutral-96: #f0effb;--color-neutral-97: #f7f7f7;--color-black: #000;--color-white: #fff;--tree-menu-active-color: var(--color-neutral-93);--tree-menu-chevron-filter: brightness(70%);--tree-menu-label-active-bg-color: rgba(236,236,236,.1);--tree-menu-label-active-color: var(--color-neutral-93);--tree-menu-label-color: var(--color-neutral-61);--tree-menu-toc-bg-color: rgba(0,0,0,.25);--tree-menu-toggle-hover-color: rgba(236,236,236,.1)}@media (prefers-color-scheme: light){.light-mode{--tree-menu-active-color: var(--color-black);--tree-menu-chevron-filter: invert(65%);--tree-menu-label-active-bg-color: var(--color-neutral-88);--tree-menu-label-active-color: var(--color-black);--tree-menu-label-color: var(--color-neutral-33);--tree-menu-toc-bg-color: var(--color-neutral-93);--tree-menu-toggle-hover-color: var(--color-neutral-75)}}video{max-width:100%}html{font-family:var(--font-family-sans);background-color:#fff}body{padding:0;margin:0}pre{padding:1rem;overflow:hidden !important}pre code{overflow:auto}pre[data-linenos]{padding:1rem 0}pre table td{padding:0}pre table td:nth-of-type(1){text-align:center;vertical-align:top;user-select:none;padding-right:6px;position:sticky;left:0;background-color:#f6f8fa;z-index:1;}pre table td:nth-of-type(1)::after{content:"";position:absolute;top:0;right:0;bottom:0;border-left:1px solid rgba(127,127,127,.2);z-index:2}pre table td:nth-of-type(2){padding-left:6px}pre mark{display:block;background-color:rgba(254,252,232,.9)}pre table{width:100%;border-collapse:collapse}pre code,.markdown-body pre tt{display:block;max-width:100%;padding:0;margin:0;overflow:auto;line-height:inherit;word-wrap:normal;background-color:rgba(0,0,0,0);border:0}.tree-menu{margin:0;padding:0;position:relative}.tree-menu__state{display:none}.tree-menu__item{list-style:none}.tree-menu__item>.tree-menu{display:none;padding-left:12px}.tree-menu__label{display:grid;grid-template-columns:1fr min-content;border-radius:4px;overflow:hidden;margin-bottom:2px;color:var(--tree-menu-label-color)}.tree-menu__label:hover{background-color:var(--tree-menu-label-active-bg-color)}.tree-menu__label:hover .tree-menu__link{color:var(--tree-menu-label-active-color)}.tree-menu__label--with-chevron .tree-menu__link{padding-right:4px}.tree-menu__link{display:flex;align-items:center;flex-grow:1;padding:4px 12px;min-height:32px;text-decoration:none;line-height:1.35;font-size:1rem;text-wrap:balance}.tree-menu__link,.tree-menu__link:focus,.tree-menu__link:active,.tree-menu__link:hover,.tree-menu__link:link,.tree-menu__link:visited{color:var(--tree-menu-label-color)}.tree-menu__link[data-highlight-intrapage-link-active=true]{color:var(--tree-menu-active-color)}.tree-menu__toggle{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:44px;cursor:pointer;user-select:none;color:var(--tree-menu-label-color)}.tree-menu__toggle:hover{background-color:var(--tree-menu-toggle-hover-color)}.tree-menu__chevron{transition:transform 250ms;transform:rotate(-90deg);filter:var(--tree-menu-chevron-filter)}.tree-menu__item--active>.tree-menu__label{background-color:var(--tree-menu-label-active-bg-color)}.tree-menu__item--active>.tree-menu__label,.tree-menu__item--active>.tree-menu__label .tree-menu__toggle,.tree-menu__item--active>.tree-menu__label .tree-menu__link{color:var(--tree-menu-label-active-color)}.tree-menu__state:checked+.tree-menu__item>.tree-menu__label .tree-menu__chevron{transform:rotate(0deg)}.tree-menu__state:checked+.tree-menu__item>.tree-menu{display:block}.tree-menu__toc{grid-row:2;grid-column:1/span 2;background-color:var(--tree-menu-toc-bg-color)}.layout{min-height:100vh}.layout__header{position:sticky;top:0;width:100%;background-color:rgba(0,0,0,0);z-index:800}.layout__header .back{position:absolute;width:100%;height:100%;background-color:rgba(255,255,255,.8);border-bottom:1px solid #e5e7eb;backdrop-filter:blur(12px);z-index:-1}.layout__header .nav{overflow:hidden;max-width:90rem;width:100%;margin:0 auto;height:var(--header-height);display:flex;gap:.5rem;align-items:center;padding:0 1.5rem;box-sizing:border-box}.layout__header .nav a{height:2rem;text-decoration:none;color:currentColor;border-radius:.25rem}.layout__header .nav a.home{display:flex;align-items:center;margin-right:auto}.layout__header .nav a.home img{display:initial !important;height:100%;vertical-align:middle}.layout__header .nav a.home span{width:120px;font-weight:800;margin:0 .5rem}.layout__header .nav a.section-btn{color:#4b5563;font-size:.875rem;padding:.25rem .5rem}.layout__header .nav a.icon-btn{padding:.25rem .5rem}.layout__body{max-width:90rem;margin-left:auto;margin-right:auto;display:flex;align-items:center;justify-content:center;padding-bottom:64px}.layout__body .side{position:sticky;top:var(--header-height);width:16rem;flex-shrink:0}.layout__body .content{display:flex;flex:1 1 auto;max-width:100%;justify-content:center;overflow-x:hidden;padding-top:1rem;padding-left:1.5rem;padding-right:1.5rem;padding-top:1rem}.layout__body .content article{width:100%;max-width:100%}@media (min-width: 768px){.layout__body .content{padding-left:3rem;padding-right:3rem}}.layout__body .side.right{display:none}@media (min-width: 1280px){.layout__body .side.right{display:block}}.layout__body .side.left{align-self:flex-start;display:none}@media (min-width: 768px){.layout__body .side.left{display:block}}.container{--container-padding: 8px;width:100%;max-width:calc(1200px + var(--container-padding) * 2);margin:0 auto;padding:0 var(--container-padding)}.markdown-body h1 .zola-anchor,.markdown-body h2 .zola-anchor,.markdown-body h3 .zola-anchor,.markdown-body h4 .zola-anchor,.markdown-body h5 .zola-anchor,.markdown-body h6 .zola-anchor{margin-left:.5rem;opacity:0;transition:opacity .2s ease}.markdown-body h1:hover .zola-anchor,.markdown-body h2:hover .zola-anchor,.markdown-body h3:hover .zola-anchor,.markdown-body h4:hover .zola-anchor,.markdown-body h5:hover .zola-anchor,.markdown-body h6:hover .zola-anchor{opacity:1}.outline{padding:1rem;overflow-x:hidden;overflow-y:auto}.outline__content{overflow:hidden}.outline__content ul{margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem;list-style:none}.outline a{box-sizing:border-box;display:block;padding:.375rem .5rem;color:#6b7280;text-decoration:none;font-size:.875rem;padding:.375rem .5rem;border-radius:.25rem;width:100%}.z-code{color:#c0c5ce;background-color:#2b2c2f}div.incorrect{position:relative;background-color:#481e21;border-left:10px solid darkred;border-radius:10px;padding-right:55px}div.incorrect .z-code,div.incorrect .z-code code{background-color:#481e21}div.incorrect:hover{border-color:red}div.incorrect:hover img{filter:invert(10%) sepia(85%) saturate(7491%) hue-rotate(5deg) brightness(116%) contrast(114%)}div.incorrect-image{position:absolute;z-index:99;right:20px;top:10px}div.incorrect-image img{width:35px;height:35px;filter:invert(11%) sepia(57%) saturate(5143%) hue-rotate(350deg) brightness(118%) contrast(87%)}.z-variable.z-parameter.z-function{color:#a3abb8}.z-comment,.z-punctuation.z-definition.z-comment{color:#8e9aa4}.z-punctuation.z-definition.z-string,.z-punctuation.z-definition.z-variable,.z-punctuation.z-definition.z-string,.z-punctuation.z-definition.z-parameters,.z-punctuation.z-definition.z-string,.z-punctuation.z-definition.z-array{color:#a3abb8}.z-none{color:#a3abb8}.z-keyword.z-operator{color:#a3abb8}.z-keyword{color:#c594c5}.z-variable{color:#a3abb8}.z-entity.z-name.z-function,.z-meta.z-require,.z-support.z-function.z-any-method{color:#6199d2}.z-support.z-class,.z-entity.z-name.z-class,.z-entity.z-name.z-type.z-class{color:#dfc479}.z-meta.z-class{color:#eff1f5}.z-keyword.z-other.z-special-method{color:#8fa1b3}.z-storage{color:#b48ead}.z-support.z-function{color:#6199d2}.z-string,.z-constant.z-other.z-symbol,.z-entity.z-other.z-inherited-class{color:#9fc37f}.z-none{color:#e79e6d}.z-constant{color:#e79e6d}.z-entity.z-name.z-tag{color:#e0858d}.z-entity.z-other.z-attribute-name{color:#d08770}.z-entity.z-other.z-attribute-name.z-id,.z-punctuation.z-definition.z-entity{color:#8fa1b3}.z-meta.z-selector{color:#b48ead}.z-markup.z-heading .z-punctuation.z-definition.z-heading,.z-entity.z-name.z-section{color:#8fa1b3}.z-keyword.z-other.z-unit{color:#e79e6d}.z-markup.z-bold,.z-punctuation.z-definition.z-bold{color:#dfc479;font-weight:bold}.z-markup.z-italic,.z-punctuation.z-definition.z-italic{color:#b48ead;font-style:italic}.z-markup.z-raw.z-inline{color:#9fc37f}.z-string.z-other.z-link{color:#e0858d}.z-meta.z-link{color:#e79e6d}.z-markup.z-list{color:#e0858d}.z-markup.z-quote{color:#e79e6d}.z-meta.z-separator{color:#a3abb8;background-color:#4f5b66}.z-markup.z-inserted,.z-markup.z-inserted.z-git_gutter{color:#9fc37f}.z-markup.z-deleted,.z-markup.z-deleted.z-git_gutter{color:#e0858d}.z-markup.z-changed,.z-markup.z-changed.z-git_gutter{color:#b48ead}.z-markup.z-ignored,.z-markup.z-ignored.z-git_gutter{color:#4f5b66}.z-markup.z-untracked,.z-markup.z-untracked.z-git_gutter{color:#4f5b66}.z-constant.z-other.z-color{color:#96b5b4}.z-string.z-regexp{color:#96b5b4}.z-constant.z-character.z-escape{color:#96b5b4}.z-punctuation.z-section.z-embedded,.z-variable.z-interpolation{color:#ab7967}.z-invalid.z-illegal{color:#2b303b;background-color:#bf616a}.z-markup.z-deleted.z-git_gutter{color:#f92672}.z-markup.z-inserted.z-git_gutter{color:#a6e22e}.z-markup.z-changed.z-git_gutter{color:#967efb}.z-markup.z-ignored.z-git_gutter{color:#565656}.z-markup.z-untracked.z-git_gutter{color:#565656}.z-meta.z-generic.z-rust,.z-entity.z-name.z-struct.z-rust,.z-entity.z-name.z-enum.z-rust,.z-entity.z-name.z-impl.z-rust{color:#dfc479}.z-punctuation.z-definition.z-generic.z-rust{color:#c0c5ce}.z-storage.z-type.z-function,.z-keyword.z-operator.z-rust,.z-storage.z-type.z-struct.z-rust,.z-punctuation.z-accessor.z-rust,.z-storage.z-modifier.z-rust{color:#c594c5}.z-support.z-macro.z-rust{color:#6199d2}.z-punctuation.z-definition.z-string{color:#9fc37f}.z-entity.z-name.z-trait.z-rust{color:#56b6c2}.z-meta.z-annotation.z-rust,.z-variable.z-annotation.z-rust{color:#d19a66}.z-meta.z-annotation.z-parameters.z-rust,.z-variable.z-function.z-rust{color:#d1af8f}.z-meta.z-annotation.z-parameters.z-rust .z-begin,.z-meta.z-annotation.z-parameters.z-rust .z-end,.z-meta.z-annotation.z-parameters.z-rust .z-punctuation,.z-variable.z-function.z-rust .z-begin,.z-variable.z-function.z-rust .z-end,.z-variable.z-function.z-rust .z-punctuation{color:#d19a66}.z-variable.z-function.z-shell,.z-support.z-function.z-shell{color:#6199d2}.z-variable.z-parameter.z-option{color:#c594c5}.card-grid{display:grid;grid-template-columns:repeat(auto-fill, minmax(300px, 1fr));gap:20px;padding:20px;overflow:hidden}.card-grid .card{display:flex;height:13rem;flex-direction:column;color:inherit;text-decoration:inherit;background:#fff;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.1);transition:transform .2s ease;overflow:hidden}.card-grid .card img{width:100%}.card-grid .card .preview-grid{display:flex;overflow:hidden;gap:2px;width:100%;height:100%}.card-grid .card .preview-grid img{min-width:0;flex:1;inset:0;height:100%;object-fit:cover}.card-grid .card__content{display:flex;flex-direction:column;padding:8px}.card-grid .card__content h2{margin-top:0;margin-bottom:10px;font-size:1.2em;color:#333}.card-grid .card__content p{color:#666;margin-bottom:15px}.card-grid .card:hover{transform:translateY(-5px);box-shadow:0 4px 12px rgba(0,0,0,.15)}.nav-btn{display:flex;padding:.5rem;align-items:center;justify-content:center;border-radius:.25rem;transition:all 300ms ease-in-out;outline:1px solid rgba(0,0,0,0)}.nav-btn:hover{outline:1px solid #ccc}