.mermaid .cluster-label,.mermaid .edgeLabel,.mermaid .label,.mermaid .loopText,.mermaid .loopText0,.mermaid .loopText1,.mermaid .loopText2,.mermaid .loopText3,.mermaid .loopText4,.mermaid .loopText5,.mermaid .loopText6,.mermaid .loopText7,.mermaid .loopText8,.mermaid .loopText9,.mermaid .messageText,.mermaid .messageText0,.mermaid .messageText1,.mermaid .messageText2,.mermaid .messageText3,.mermaid .messageText4,.mermaid .messageText5,.mermaid .messageText6,.mermaid .messageText7,.mermaid .messageText8,.mermaid .messageText9,.mermaid .nodeLabel,.mermaid text{fill:#333!important;color:#333!important}.mermaid .actor,.mermaid .actor0,.mermaid .actor1,.mermaid .actor2,.mermaid .actor3,.mermaid .actor4,.mermaid .actor5,.mermaid .actor6,.mermaid .actor7,.mermaid .actor8,.mermaid .actor9{color:#333!important}.mermaid .actor{fill:#007aff!important;stroke:#0056b3!important}.mermaid .actor text,.mermaid .actor tspan{fill:#fff!important;color:#fff!important}.mermaid .messageLine0,.mermaid .messageLine1,.mermaid .messageLine2,.mermaid .messageLine3,.mermaid .messageLine4,.mermaid .messageLine5,.mermaid .messageLine6,.mermaid .messageLine7,.mermaid .messageLine8,.mermaid .messageLine9{stroke:#333!important}.mermaid .labelBox,.mermaid .loopBox{fill:#007aff!important;stroke:#0056b3!important}.mermaid .labelText,.mermaid .labelText tspan{fill:#1a1a1a!important;color:#1a1a1a!important}.mermaid .activation0,.mermaid .activation1,.mermaid .activation2,.mermaid .activation3,.mermaid .activation4,.mermaid .activation5,.mermaid .activation6,.mermaid .activation7,.mermaid .activation8,.mermaid .activation9{fill:#e0e0e0!important;stroke:#ccc!important}svg[id^=mermaid] .actor{fill:#007aff!important;stroke:#0056b3!important}svg[id^=mermaid] .actor text,svg[id^=mermaid] .actor tspan{fill:#fff!important;color:#fff!important}svg[id^=mermaid] .labelBox,svg[id^=mermaid] .loopBox{fill:#007aff!important;stroke:#0056b3!important}svg[id^=mermaid] .labelText,svg[id^=mermaid] .labelText tspan{fill:#1a1a1a!important;color:#1a1a1a!important}@media(prefers-color-scheme:dark){.mermaid .cluster-label,.mermaid .edgeLabel,.mermaid .label,.mermaid .loopText,.mermaid .loopText0,.mermaid .loopText1,.mermaid .loopText2,.mermaid .loopText3,.mermaid .loopText4,.mermaid .loopText5,.mermaid .loopText6,.mermaid .loopText7,.mermaid .loopText8,.mermaid .loopText9,.mermaid .messageText,.mermaid .messageText0,.mermaid .messageText1,.mermaid .messageText2,.mermaid .messageText3,.mermaid .messageText4,.mermaid .messageText5,.mermaid .messageText6,.mermaid .messageText7,.mermaid .messageText8,.mermaid .messageText9,.mermaid .nodeLabel,.mermaid text{fill:#fff!important;color:#fff!important}.mermaid .actor,.mermaid .actor0,.mermaid .actor1,.mermaid .actor2,.mermaid .actor3,.mermaid .actor4,.mermaid .actor5,.mermaid .actor6,.mermaid .actor7,.mermaid .actor8,.mermaid .actor9{color:#fff!important}.mermaid .actor{fill:#007aff!important;stroke:#0056b3!important}.mermaid .messageLine0,.mermaid .messageLine1,.mermaid .messageLine2,.mermaid .messageLine3,.mermaid .messageLine4,.mermaid .messageLine5,.mermaid .messageLine6,.mermaid .messageLine7,.mermaid .messageLine8,.mermaid .messageLine9{stroke:#fff!important}.mermaid #arrowhead path,.mermaid #crosshead path,.mermaid #filled-head path,.mermaid .marker{fill:#fff!important;stroke:#fff!important}.mermaid .labelBox,.mermaid .loopBox{fill:#007aff!important;stroke:#0056b3!important}.mermaid .labelText,.mermaid .labelText tspan{fill:#c9d1d9!important;color:#c9d1d9!important}.mermaid .activation0,.mermaid .activation1,.mermaid .activation2,.mermaid .activation3,.mermaid .activation4,.mermaid .activation5,.mermaid .activation6,.mermaid .activation7,.mermaid .activation8,.mermaid .activation9{fill:#4d4d4d!important;stroke:#555!important}svg[id^=mermaid] .messageText{fill:#fff!important}svg[id^=mermaid] text{fill:#fff!important;color:#fff!important}svg[id^=mermaid] .actor{fill:#007aff!important;stroke:#0056b3!important}svg[id^=mermaid] .actor text,svg[id^=mermaid] .actor tspan{fill:#fff!important;color:#fff!important}svg[id^=mermaid] .actor-line,svg[id^=mermaid] .messageLine0,svg[id^=mermaid] .messageLine1{stroke:#fff!important}svg[id^=mermaid] .labelText,svg[id^=mermaid] .loopText,svg[id^=mermaid] .loopText tspan{fill:#fff!important}svg[id^=mermaid] .labelBox,svg[id^=mermaid] .loopBox{fill:#007aff!important;stroke:#0056b3!important}svg[id^=mermaid] .labelText,svg[id^=mermaid] .labelText tspan{fill:#c9d1d9!important;color:#c9d1d9!important}svg[id^=mermaid] #arrowhead path,svg[id^=mermaid] #crosshead path,svg[id^=mermaid] #filled-head path,svg[id^=mermaid] .marker{fill:#fff!important;stroke:#fff!important}}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--color-base);color:var(--color-text);transition:background-color .3s ease,color .3s ease}code{font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace}*{transition:background-color .3s ease,color .3s ease,border-color .3s ease}:root{--color-base:#ffffff;--color-text:#1a1a1a;--color-heading:#2d2d2d;--color-subtitle:#666666;--color-link:#007aff;--color-link-hover:#0056b3;--color-background:#ffffff;--color-surface:#f8f9fa;--color-border:#e9ecef;--color-code-bg:#f6f8fa;--color-code-border:#e1e4e8;--color-inline-code-bg:#f1f3f4;--color-inline-code-text:#d73a49;--code-bg:#f6f8fa;--code-text:#24292e;--code-comment:#6a737d;--code-keyword:#d73a49;--code-string:#032f62;--code-number:#005cc5;--code-function:#6f42c1;--code-variable:#e36209;--code-operator:#d73a49;--code-punctuation:#24292e;--code-property:#005cc5;--code-selector:#6f42c1;--code-important:#e36209;--code-deleted:#b31d28;--code-inserted:#22863a}@media(prefers-color-scheme:dark){:root{--color-base:#0d1117;--color-text:#c9d1d9;--color-heading:#f0f6fc;--color-subtitle:#8b949e;--color-link:#58a6ff;--color-link-hover:#79c0ff;--color-background:#0d1117;--color-surface:#161b22;--color-border:#30363d;--color-code-bg:#161b22;--color-code-border:#30363d;--color-inline-code-bg:#21262d;--color-inline-code-text:#f85149;--code-bg:#161b22;--code-text:#c9d1d9;--code-comment:#8b949e;--code-keyword:#ff7b72;--code-string:#a5d6ff;--code-number:#79c0ff;--code-function:#d2a8ff;--code-variable:#ffa657;--code-operator:#ff7b72;--code-punctuation:#c9d1d9;--code-property:#79c0ff;--code-selector:#d2a8ff;--code-important:#ffa657;--code-deleted:#ff8182;--code-inserted:#7ee787}}.theme-toggle{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem 1rem;background:var(--color-surface);border:1px solid var(--color-border);border-radius:6px;color:var(--color-text);font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s ease}.theme-toggle:hover{background:var(--color-border);transform:translateY(-1px)}.theme-toggle:active{transform:translateY(0)}.theme-toggle .theme-icon{font-size:1rem}@media(max-width:768px){.theme-toggle .theme-label{display:none}}code[class*=language-],pre[class*=language-]{font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,Courier New,monospace;font-size:14px;line-height:1.5;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;tab-size:2;-webkit-hyphens:none;hyphens:none;border-radius:6px;transition:all .2s ease-in-out}pre[class*=language-]{padding:1rem;margin:1.5rem 0;overflow:auto;background:var(--code-bg);border:1px solid var(--color-code-border);border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.1)}pre[class*=language-]::-webkit-scrollbar{height:8px}pre[class*=language-]::-webkit-scrollbar-track{background:var(--color-surface);border-radius:4px}pre[class*=language-]::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:4px}pre[class*=language-]::-webkit-scrollbar-thumb:hover{background:var(--color-subtitle)}:not(pre)>code[class*=language-]{padding:.2em .4em;border-radius:3px;background:var(--color-inline-code-bg);color:var(--color-inline-code-text);font-size:.85em;font-weight:500}.token{color:var(--code-text)}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:var(--code-comment);font-style:italic}.token.punctuation{color:var(--code-punctuation)}.token.namespace{opacity:.7}.token.boolean,.token.constant,.token.deleted,.token.number,.token.property,.token.symbol,.token.tag{color:var(--code-property)}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:var(--code-string)}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url{color:var(--code-operator)}.token.atrule,.token.attr-value,.token.keyword{color:var(--code-keyword)}.token.class-name,.token.function{color:var(--code-function)}.token.variable{color:var(--code-variable)}.token.bold,.token.important{font-weight:700;color:var(--code-important)}.token.italic{font-style:italic}.token.important,.token.regex{color:var(--code-important)}.token.number{color:var(--code-number)}.language-bash .token.function,.language-sh .token.function,.language-shell .token.function{color:var(--code-string)}.language-yaml .token.key{color:var(--code-property)}.language-yaml .token.string{color:var(--code-string)}.language-json .token.property{color:var(--code-property)}.language-json .token.string{color:var(--code-string)}.language-json .token.number{color:var(--code-number)}.language-go .token.keyword,.language-json .token.boolean,.language-json .token.null{color:var(--code-keyword)}.language-go .token.function{color:var(--code-function)}.language-go .token.string{color:var(--code-string)}.language-go .token.number{color:var(--code-number)}.language-go .token.operator{color:var(--code-operator)}.language-go .token.comment{color:var(--code-comment)}.language-hcl .token.keyword,.language-terraform .token.keyword,.language-tf .token.keyword{color:var(--code-keyword)}.language-hcl .token.string,.language-terraform .token.string,.language-tf .token.string{color:var(--code-string)}.language-hcl .token.number,.language-terraform .token.number,.language-tf .token.number{color:var(--code-number)}.language-hcl .token.function,.language-terraform .token.function,.language-tf .token.function{color:var(--code-function)}.language-hcl .token.property,.language-terraform .token.property,.language-tf .token.property{color:var(--code-property)}.language-python .token.keyword{color:var(--code-keyword)}.language-python .token.function{color:var(--code-function)}.language-python .token.string{color:var(--code-string)}.language-python .token.number{color:var(--code-number)}.language-python .token.operator{color:var(--code-operator)}.language-python .token.comment{color:var(--code-comment)}.line-numbers .line-numbers-rows{border-right:1px solid var(--color-border)}.line-numbers-rows>span:before{color:var(--code-comment)}.code-block-header{display:flex;justify-content:space-between;align-items:center;padding:.5rem 1rem;background:var(--color-surface);border-bottom:1px solid var(--color-border);border-radius:8px 8px 0 0;font-size:.875rem;color:var(--color-subtitle)}.language-label{font-weight:500;text-transform:uppercase;letter-spacing:.5px;font-size:.75rem}.copy-button{background:rgba(0,0,0,0);border:1px solid var(--color-border);color:var(--color-text);padding:.25rem .5rem;border-radius:4px;font-size:.75rem;cursor:pointer;transition:all .2s ease}.copy-button:hover{background:var(--color-border)}.copy-button:active{transform:translateY(1px)}code[class*=language-]:focus,pre[class*=language-]:focus{outline:2px solid var(--color-link);outline-offset:2px}@media print{code[class*=language-],pre[class*=language-]{background:#fff!important;color:#000!important;border:1px solid #ccc!important;box-shadow:none!important}.token{color:#000!important}.token.comment{color:#666!important}.token.keyword{color:#000!important;font-weight:700!important}.token.number,.token.string{color:#333!important}}body .gist .highlight{background:var(--code-bg)}body .gist .blob-code-inner,body .gist .blob-num,body .gist .highlight,body .gist .pl-enm,body .gist .pl-ko,body .gist .pl-mdr,body .gist .pl-mo,body .gist .pl-mp1 .pl-sf,body .gist .pl-ms,body .gist .pl-pdc1,body .gist .pl-scp,body .gist .pl-smc,body .gist .pl-som,body .gist .pl-va,body .gist .pl-vpf,body .gist .pl-vpu{color:var(--code-text)}body .gist .pl-c,body .gist .pl-c span,body .gist .pl-pdc{color:var(--code-comment);font-style:italic}body .gist .pl-k,body .gist .pl-kolp,body .gist .pl-mc,body .gist .pl-pde{color:var(--code-keyword)}body .gist .pl-s,body .gist .pl-s1{color:var(--code-string)}body .gist .pl-e,body .gist .pl-eoa,body .gist .pl-eoac,body .gist .pl-eoac .pl-pde,body .gist .pl-kou,body .gist .pl-mb,body .gist .pl-mm,body .gist .pl-mp .pl-s3,body .gist .pl-mq,body .gist .pl-s3,body .gist .pl-sok,body .gist .pl-sv{color:var(--code-function)}body .gist .pl-ent,body .gist .pl-entl,body .gist .pl-entm,body .gist .pl-mdh,body .gist .pl-mdi,body .gist .pl-mh,body .gist .pl-pdv,body .gist .pl-smi,body .gist .pl-sol{color:var(--code-variable)}.blog-list{width:100%;border:0;border-collapse:initial;border-spacing:15px}.blog-list .article-title a{background-color:rgba(0,0,0,0);font-weight:700;color:var(--color-heading);font-size:2em;text-decoration:none}.blog-list .article-title a:focus,.blog-list .article-title a:hover{color:var(--color-link-hover);text-decoration:none}.blog-list .date{font-weight:lighter;font-size:1em}.article h1,.article h2,.article h3,.article h4,.article h5,.article h6,.blog-list .date{color:var(--color-heading)}.article .highlight,.article code{color:var(--color-subtitle)}.article table,.article td,.article th{border:1px solid var(--color-border)}.article img{max-width:100%;height:auto;display:block;margin:1.5rem auto}.article a{text-decoration:none;color:var(--color-link)}.article a:hover{color:var(--color-link-hover)}.article .github-link img{max-width:30vw}.gist *,.gist .gist-file{background-color:var(--color-base);border:none!important}.gist .js-line-number{display:none}.gist .gist-data,.gist .gist-meta{border:none!important;background-color:var(--color-base)}.gist .gist-meta{display:none}.gist .gist-meta a{color:var(--color-text)}.tweet-container_root__0rJLq{width:100%;min-width:250px;max-width:550px;overflow:hidden;color:var(--tweet-font-color);font-family:var(--tweet-font-family);font-weight:400;box-sizing:border-box;border:var(--tweet-border);border-radius:12px;margin:var(--tweet-container-margin);background-color:var(--tweet-bg-color);transition-property:background-color,box-shadow;transition-duration:.2s}.tweet-container_root__0rJLq:hover{background-color:var(--tweet-bg-color-hover)}.tweet-container_article__0ERPK{position:relative;box-sizing:inherit;padding:.75rem 1rem}