:root{--bg_h:#f9f5d7;--bg:#fbf1c7;--bg_s:#f2e5bc;--bg1:#ebdbb2;--bg2:#d5c4a1;--bg3:#bdae93;--bg4:#a89984;--fg:#282828;--fg1:#3c3836;--fg2:#504945;--fg3:#665c54;--fg4:#7c6f64;--red:#9d0006;--green:#79740e;--yellow:#b57614;--blue:#076678;--purple:#8f3f71;--aqua:#427b58;--orange:#af3a03;--gray:#928374;--red-dim:#cc2412;--green-dim:#98971a;--yellow-dim:#d79921;--blue-dim:#458598;--purple-dim:#b16286;--aqua-dim:#689d6a;--orange-dim:#d65d0e;--gray-dim:#7c6f64}.darkmode{--bg_h:#1d2021;--bg:#282828;--bg_s:#32302f;--bg1:#3c3836;--bg2:#504945;--bg3:#665c54;--bg4:#7c6f64;--fg:#fbf1c7;--fg1:#ebdbb2;--fg2:#d5c4a1;--fg3:#bdae93;--fg4:#a89984;--red:#fb4934;--green:#b8bb26;--yellow:#fabd2f;--blue:#83a598;--purple:#d3869b;--aqua:#8ec07c;--gray:#928374;--orange:#fe8019;--red-dim:#cc2412;--green-dim:#98971a;--yellow-dim:#d79921;--blue-dim:#458588;--purple-dim:#b16286;--aqua-dim:#689d6a;--gray-dim:#a89984;--orange-dim:#d65d0e}.bg{color:#3c3836;background-color:#fbf1c7}.chroma{color:#3c3836;background-color:#fbf1c7}.chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.chroma .hl{background-color:#e1d8b3}.chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#9d9b9a}.chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#9d9b9a}.chroma .line{display:flex}.chroma .k{color:#af3a03}.chroma .kc{color:#af3a03}.chroma .kd{color:#af3a03}.chroma .kn{color:#af3a03}.chroma .kp{color:#af3a03}.chroma .kr{color:#af3a03}.chroma .kt{color:#b57614}.chroma .na{color:#79740e;font-weight:700}.chroma .nb{color:#b57614}.chroma .no{color:#d3869b}.chroma .ni{color:#b57614}.chroma .ne{color:#fb4934}.chroma .nf{color:#b57614}.chroma .nl{color:#9d0006}.chroma .nt{color:#9d0006}.chroma .s{color:#79740e}.chroma .sa{color:#79740e}.chroma .sb{color:#79740e}.chroma .sc{color:#79740e}.chroma .dl{color:#79740e}.chroma .sd{color:#79740e}.chroma .s2{color:#79740e}.chroma .se{color:#79740e}.chroma .sh{color:#79740e}.chroma .si{color:#79740e}.chroma .sx{color:#79740e}.chroma .sr{color:#79740e}.chroma .s1{color:#79740e}.chroma .ss{color:#076678}.chroma .m{color:#8f3f71}.chroma .mb{color:#8f3f71}.chroma .mf{color:#8f3f71}.chroma .mh{color:#8f3f71}.chroma .mi{color:#8f3f71}.chroma .il{color:#8f3f71}.chroma .mo{color:#8f3f71}.chroma .o{color:#af3a03}.chroma .ow{color:#af3a03}.chroma .c{color:#928374;font-style:italic}.chroma .ch{color:#928374;font-style:italic}.chroma .cm{color:#928374;font-style:italic}.chroma .c1{color:#928374;font-style:italic}.chroma .cs{color:#928374;font-style:italic}.chroma .cp{color:#427b58}.chroma .cpf{color:#427b58;font-style:italic}.chroma .gd{color:#282828;background-color:#9d0006}.chroma .ge{color:#076678;text-decoration:underline}.chroma .gr{background-color:#9d0006;font-weight:700}.chroma .gh{color:#79740e;font-weight:700}.chroma .gi{color:#282828;background-color:#79740e}.chroma .go{color:#504945}.chroma .gu{color:#79740e;font-weight:700}.chroma .gt{background-color:#3c3836;font-weight:700}.darkmode .bg{color:#ebdbb2;background-color:#282828}.darkmode .chroma{color:#ebdbb2;background-color:#282828}.darkmode .chroma .lnlinks{outline:none;text-decoration:none;color:inherit}.darkmode .chroma .lntd{vertical-align:top;padding:0;margin:0;border:0}.darkmode .chroma .lntable{border-spacing:0;padding:0;margin:0;border:0}.darkmode .chroma .hl{background-color:#3d3d3d}.darkmode .chroma .lnt{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#756d59}.darkmode .chroma .ln{white-space:pre;-webkit-user-select:none;user-select:none;margin-right:.4em;padding:0 .4em;color:#756d59}.darkmode .chroma .line{display:flex}.darkmode .chroma .k{color:#fe8019}.darkmode .chroma .kc{color:#fe8019}.darkmode .chroma .kd{color:#fe8019}.darkmode .chroma .kn{color:#fe8019}.darkmode .chroma .kp{color:#fe8019}.darkmode .chroma .kr{color:#fe8019}.darkmode .chroma .kt{color:#fabd2f}.darkmode .chroma .na{color:#b8bb26;font-weight:700}.darkmode .chroma .nb{color:#fabd2f}.darkmode .chroma .no{color:#d3869b}.darkmode .chroma .ni{color:#fabd2f}.darkmode .chroma .ne{color:#fb4934}.darkmode .chroma .nf{color:#fabd2f}.darkmode .chroma .nl{color:#fb4934}.darkmode .chroma .nt{color:#fb4934}.darkmode .chroma .s{color:#b8bb26}.darkmode .chroma .sa{color:#b8bb26}.darkmode .chroma .sb{color:#b8bb26}.darkmode .chroma .sc{color:#b8bb26}.darkmode .chroma .dl{color:#b8bb26}.darkmode .chroma .sd{color:#b8bb26}.darkmode .chroma .s2{color:#b8bb26}.darkmode .chroma .se{color:#b8bb26}.darkmode .chroma .sh{color:#b8bb26}.darkmode .chroma .si{color:#b8bb26}.darkmode .chroma .sx{color:#b8bb26}.darkmode .chroma .sr{color:#b8bb26}.darkmode .chroma .s1{color:#b8bb26}.darkmode .chroma .ss{color:#83a598}.darkmode .chroma .m{color:#d3869b}.darkmode .chroma .mb{color:#d3869b}.darkmode .chroma .mf{color:#d3869b}.darkmode .chroma .mh{color:#d3869b}.darkmode .chroma .mi{color:#d3869b}.darkmode .chroma .il{color:#d3869b}.darkmode .chroma .mo{color:#d3869b}.darkmode .chroma .o{color:#fe8019}.darkmode .chroma .ow{color:#fe8019}.darkmode .chroma .c{color:#928374;font-style:italic}.darkmode .chroma .ch{color:#928374;font-style:italic}.darkmode .chroma .cm{color:#928374;font-style:italic}.darkmode .chroma .c1{color:#928374;font-style:italic}.darkmode .chroma .cs{color:#928374;font-style:italic}.darkmode .chroma .cp{color:#8ec07c}.darkmode .chroma .cpf{color:#8ec07c;font-style:italic}.darkmode .chroma .gd{color:#282828;background-color:#fb4934}.darkmode .chroma .ge{color:#83a598;text-decoration:underline}.darkmode .chroma .gr{background-color:#fb4934;font-weight:700}.darkmode .chroma .gh{color:#b8bb26;font-weight:700}.darkmode .chroma .gi{color:#282828;background-color:#b8bb26}.darkmode .chroma .go{color:#504945}.darkmode .chroma .gu{color:#b8bb26;font-weight:700}.darkmode .chroma .gt{background-color:#fb4934;font-weight:700}.content .MathJax{font-size:100%!important;overflow-x:auto;overflow-y:hidden}.content .katex{font-size:100%!important;overflow-x:auto;overflow-y:hidden}.content :last-child{margin-bottom:0}.content a{text-decoration:underline}.content a:hover{text-decoration:none}.content a.footnote-ref{text-decoration:none}.content a.footnote-ref::before{content:"["}.content a.footnote-ref::after{content:"]"}.content blockquote{background-color:var(--bg_s);border-left:3px solid var(--fg4);border-radius:0 .3rem .3rem 0;font-style:italic;padding:1rem 1.5rem;margin-left:0;margin-right:0}.content blockquote blockquote{background-color:var(--bg1)}.content pre{background-color:var(--bg_s)!important;border-radius:.3rem;border:1px solid var(--bg2);font-family:latin modern mono,Courier,monospace;position:relative;overflow-x:auto;padding:1.1rem 1.25rem;font-size:.92em;line-height:1.6}.content pre code{padding:0}.content code{background-color:var(--bg_s);border-radius:.3rem;font-family:latin modern mono,Courier,monospace;padding:0 .2rem}.content mark{background-color:var(--bg_s);color:var(--fg1);border-radius:.3rem;padding:0 .2rem}.content kbd{background-color:var(--bg_s);color:var(--fg1);border-radius:.3rem}.content table{display:block;overflow-x:auto;margin:auto;background-color:var(--bg);border-collapse:collapse;border:none}.content table td,.content table th{border:var(--fg4)1px solid;padding:.4rem .75rem}.content table th{background-color:var(--bg_s);font-weight:700}.content ol,.content ul{margin-left:1.1rem}.content dt{font-weight:700}.content dd{margin-left:1.1rem}button.copy-button{background-color:var(--bg1);color:var(--fg1);position:absolute;top:calc((4px + 1.1rem)/2);right:calc((4px + 1.1rem)/2);opacity:0;border:none;padding:.5rem;border-radius:.3rem;cursor:pointer;transition:opacity .2s ease,background-color .2s ease}pre:hover button.copy-button{opacity:.7}button.copy-button:hover{opacity:1!important;background-color:var(--bg)}button.copy-button .octicon-check{color:var(--green)}.content blockquote,.content div,.content h1,.content h2,.content h3,.content h4,.content h5,.content h6,.content p,.content pre,.content ol,.content table,.content ul,.content dl,.content video{margin-bottom:1.1rem}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{line-height:2.483281573rem}.content h1{font-size:2.4rem}.content h2{font-size:1.8867633066rem}.content h3{font-size:1.483281573rem}.content h4{font-size:1.1660838522rem}.content h5{font-size:.916718427rem}.content h6{font-size:.7206794544rem}.content p{text-align:justify}.content strong.chinese{font-weight:400;text-emphasis-style:dot;text-emphasis-position:under;-webkit-text-emphasis-style:dot;-webkit-text-emphasis-position:under}.content.numbered-subtitles{counter-reset:section-h2}.content.numbered-subtitles h2{counter-reset:section-h3}.content.numbered-subtitles h2:before{counter-increment:section-h2;content:counter(section-h2)" "}.content.numbered-subtitles h3{counter-reset:section-h4}.content.numbered-subtitles h3:before{counter-increment:section-h3;content:counter(section-h2)"." counter(section-h3)" "}.content.numbered-subtitles h4{counter-reset:section-h5}.content.numbered-subtitles h4:before{counter-increment:section-h4;content:counter(section-h2)"." counter(section-h3)"." counter(section-h4)" "}.content.numbered-subtitles h5{counter-reset:section-h6}.content.numbered-subtitles h5:before{counter-increment:section-h5;content:counter(section-h2)"." counter(section-h3)"." counter(section-h4)"." counter(section-h5)" "}.content.numbered-subtitles h6:before{counter-increment:section-h6;content:counter(section-h2)"." counter(section-h3)"." counter(section-h4)"." counter(section-h5)"." counter(section-h6)" "}.toc.numbered-subtitles{counter-reset:ul-h2}.toc.numbered-subtitles li{counter-reset:ul-h3}.toc.numbered-subtitles li:before{counter-increment:ul-h2;content:counter(ul-h2)" "}.toc.numbered-subtitles li li{counter-reset:ul-h4}.toc.numbered-subtitles li li:before{counter-increment:ul-h3;content:counter(ul-h2)"." counter(ul-h3)" "}.toc.numbered-subtitles li li li{counter-reset:ul-h5}.toc.numbered-subtitles li li li:before{counter-increment:ul-h4;content:counter(ul-h2)"." counter(ul-h3)"." counter(ul-h4)" "}.toc.numbered-subtitles li li li li{counter-reset:ul-h6}.toc.numbered-subtitles li li li li:before{counter-increment:ul-h5;content:counter(ul-h2)"." counter(ul-h3)"." counter(ul-h4)"." counter(ul-h5)" "}.toc.numbered-subtitles li li li li li:before{counter-increment:ul-h6;content:counter(ul-h2)"." counter(ul-h3)"." counter(ul-h4)"." counter(ul-h5)"." counter(ul-h6)" "}.image-container{text-align:center;margin:2rem 0}.image-container img{max-width:100%;height:auto;border:1px solid var(--bg1);border-radius:8px;display:block;margin:0 auto}.image-container figcaption{margin-top:.5rem;color:var(--bg4);font-size:.9rem}.carousel{position:relative;overflow:hidden;width:100%;margin:2rem 0;max-width:80vw}.carousel-track{display:flex;will-change:transform;backface-visibility:hidden}.carousel-slide{min-width:100%}.carousel-slide img{width:100%;display:block;border-radius:8px}.carousel-caption{overflow-wrap:break-word;word-break:break-word;text-align:center;margin-bottom:.6rem;color:var(--bg4);opacity:.8}.carousel-btn{position:absolute;top:50%;transform:translateY(-50%);width:42px;height:42px;border:none;border-radius:50%;cursor:pointer;background:rgba(0,0,0,.45);color:#fff;z-index:10}.carousel-btn:hover{background:rgba(0,0,0,.65)}.carousel-btn.prev{left:16px}.carousel-btn.next{right:16px}.carousel-dots{position:absolute;bottom:16px;left:50%;transform:translateX(-50%);display:flex;gap:8px;z-index:10}.carousel-dot{width:10px;height:10px;border-radius:50%;border:none;cursor:pointer;background:rgba(255,255,255,.4)}.carousel-dot.active{background:#fff}table{display:block;overflow-x:auto;margin:auto;background-color:var(--bg);border-collapse:collapse;border:none}table td:not(:last-child),table th:not(:last-child){padding-right:1em}table th{font-weight:700}table .image-container{margin:0}.cols-2{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:.5rem 2rem;padding-left:1rem}.cols-2>li{margin:0}.post-layout{grid-template-columns:minmax(0,1fr)}.post-layout.has-toc{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:2rem}.post-toc{max-width:240px;position:sticky;top:5rem;align-self:start}@media(max-width:1000px){.post-layout.has-toc{grid-template-columns:1fr}.post-toc{display:none}}.post-toc .toc{max-height:calc(100vh - 6rem);overflow-y:auto;font-size:.9rem}