diff --git a/docs/.vitepress/config.js b/docs/.vitepress/config.js index 7dfe4fd..5420b8b 100644 --- a/docs/.vitepress/config.js +++ b/docs/.vitepress/config.js @@ -4,7 +4,7 @@ export default defineConfig({ title: "Helios Case Study", description: "case study - Helios data stream analysis platform", cleanUrls: true, - base: '/', + base: '/case-study/', themeConfig: { nav: [{ text: "Home", link: "/" }], sidebar: { diff --git a/docs/.vitepress/dist/404.html b/docs/.vitepress/dist/404.html index 99f06f4..ba60a17 100644 --- a/docs/.vitepress/dist/404.html +++ b/docs/.vitepress/dist/404.html @@ -5,17 +5,17 @@ 404 | Helios Case Study - - + + - - + +
- + \ No newline at end of file diff --git a/docs/.vitepress/dist/about-us.html b/docs/.vitepress/dist/about-us.html new file mode 100644 index 0000000..10a98dd --- /dev/null +++ b/docs/.vitepress/dist/about-us.html @@ -0,0 +1,24 @@ + + + + + + Helios Case Study + + + + + + + + + + + + + +

Meet the Team

Tony Liao

Email: kuanchiliao@gmail.com

LinkedIn | GitHub

James Drabinsky

Email: james.drabinsky@gmail.com

LinkedIn | GitHub

Garrett Cochran

Email: garrettjcochran@gmail.com

LinkedIn | GitHub

Sean Powell

Email: b.sean.powell@gmail.com

LinkedIn | GitHub

+ + + + \ No newline at end of file diff --git a/docs/.vitepress/dist/about_us/garrett.jpeg b/docs/.vitepress/dist/about_us/garrett.jpeg new file mode 100644 index 0000000..2b53806 Binary files /dev/null and b/docs/.vitepress/dist/about_us/garrett.jpeg differ diff --git a/docs/.vitepress/dist/about_us/james.jpeg b/docs/.vitepress/dist/about_us/james.jpeg new file mode 100644 index 0000000..f7f283a Binary files /dev/null and b/docs/.vitepress/dist/about_us/james.jpeg differ diff --git a/docs/.vitepress/dist/about_us/sean.jpeg b/docs/.vitepress/dist/about_us/sean.jpeg new file mode 100644 index 0000000..efcce6c Binary files /dev/null and b/docs/.vitepress/dist/about_us/sean.jpeg differ diff --git a/docs/.vitepress/dist/about_us/tony.jpeg b/docs/.vitepress/dist/about_us/tony.jpeg new file mode 100644 index 0000000..c807d62 Binary files /dev/null and b/docs/.vitepress/dist/about_us/tony.jpeg differ diff --git a/docs/.vitepress/dist/api-examples.html b/docs/.vitepress/dist/api-examples.html index 2f0acde..c4ec4f6 100644 --- a/docs/.vitepress/dist/api-examples.html +++ b/docs/.vitepress/dist/api-examples.html @@ -5,19 +5,19 @@ Runtime API Examples | Helios Case Study - - + + - - - - - + + + + + -
Skip to content

Runtime API Examples

This page demonstrates usage of some of the runtime APIs provided by VitePress.

The main useData() API can be used to access site, theme, and page data for the current page. It works in both .md and .vue files:

md
<script setup>
+    
Skip to content

Runtime API Examples

This page demonstrates usage of some of the runtime APIs provided by VitePress.

The main useData() API can be used to access site, theme, and page data for the current page. It works in both .md and .vue files:

md
<script setup>
 import { useData } from 'vitepress'
 
 const { theme, page, frontmatter } = useData()
@@ -53,6 +53,10 @@
         "text": "Building Helios: Design Choices",
         "link": "/building-helios"
       },
+      {
+        "text": "Automating Deployment",
+        "link": "/automating-deployment"
+      },
       {
         "text": "Improving Core Platform",
         "link": "/improving-core-platform"
@@ -65,10 +69,6 @@
         "text": "Load Testing",
         "link": "/load-testing"
       },
-      {
-        "text": "Automating Deployment",
-        "link": "/automating-deployment"
-      },
       {
         "text": "Future Work",
         "link": "/future-work"
@@ -79,6 +79,12 @@
       }
     ]
   },
+  "outline": {
+    "level": [
+      2,
+      3
+    ]
+  },
   "socialLinks": [
     {
       "icon": "github",
@@ -96,8 +102,8 @@
   "filePath": "api-examples.md"
 }

Page Frontmatter

{
   "outline": "deep"
-}

More

Check out the documentation for the full list of runtime APIs.

- +}

More

Check out the documentation for the full list of runtime APIs.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/assets/about-us.md.C2qKxKgR.js b/docs/.vitepress/dist/assets/about-us.md.C2qKxKgR.js new file mode 100644 index 0000000..1a90020 --- /dev/null +++ b/docs/.vitepress/dist/assets/about-us.md.C2qKxKgR.js @@ -0,0 +1 @@ +import"./chunks/theme.H2-gvx_u.js";import{_ as s,c as i,f as r,N as o,o as n}from"./chunks/framework.CE9GIcbU.js";const d="/case-study/about_us/tony.jpeg",m="/case-study/about_us/james.jpeg",c="/case-study/about_us/garrett.jpeg",u="/case-study/about_us/sean.jpeg",v={name:"AboutUs",data(){return{mouseX:0,mouseY:0,cursorX:0,cursorY:0,isOverActiveArea:!1,hideTimeout:null}},mounted(){document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseenter",this.handleMouseEnter,!0),document.addEventListener("mouseleave",this.handleMouseLeave,!0),this.animateCursor()},beforeUnmount(){document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseenter",this.handleMouseEnter,!0),document.removeEventListener("mouseleave",this.handleMouseLeave,!0),cancelAnimationFrame(this.animationFrame),clearTimeout(this.hideTimeout)},methods:{handleMouseMove(a){this.mouseX=a.clientX,this.mouseY=a.clientY,this.isOverActiveArea&&this.showCursor()},handleMouseEnter(a){a.target&&a.target.matches("header, main")&&(this.isOverActiveArea=!0,this.showCursor())},handleMouseLeave(a){a.target&&a.target.matches("header, main")&&(this.isOverActiveArea=!1,this.hideCursor())},animateCursor(){this.cursorX+=(this.mouseX-this.cursorX)*.15,this.cursorY+=(this.mouseY-this.cursorY)*.15;const e=document.querySelector(".cursor-element");e&&(e.style.transform=`translate(${this.cursorX}px, ${this.cursorY}px)`),this.animationFrame=requestAnimationFrame(this.animateCursor)},showCursor(){const a=document.querySelector(".cursor-glow");a==null||a.classList.add("active"),clearTimeout(this.hideTimeout),this.hideTimeout=setTimeout(()=>{this.isOverActiveArea&&(a==null||a.classList.remove("active"))},2e3)},hideCursor(){const a=document.querySelector(".cursor-glow");a==null||a.classList.remove("active"),clearTimeout(this.hideTimeout)}}},h=i('

Meet the Team

Tony Liao

Email: kuanchiliao@gmail.com

LinkedIn | GitHub

James Drabinsky

Email: james.drabinsky@gmail.com

LinkedIn | GitHub

Garrett Cochran

Email: garrettjcochran@gmail.com

LinkedIn | GitHub

Sean Powell

Email: b.sean.powell@gmail.com

LinkedIn | GitHub

',2);function l(a,e,t,b,g,f){return h}const p=s(v,[["render",l],["__scopeId","data-v-78673a82"]]),w=JSON.parse('{"title":"","description":"","frontmatter":{"layout":false},"headers":[],"relativePath":"about-us.md","filePath":"about-us.md"}'),_={name:"about-us.md"},A=Object.assign(_,{setup(a){return(e,t)=>(n(),r("div",null,[o(p)]))}});export{w as __pageData,A as default}; diff --git a/docs/.vitepress/dist/assets/about-us.md.C2qKxKgR.lean.js b/docs/.vitepress/dist/assets/about-us.md.C2qKxKgR.lean.js new file mode 100644 index 0000000..aaf26b1 --- /dev/null +++ b/docs/.vitepress/dist/assets/about-us.md.C2qKxKgR.lean.js @@ -0,0 +1 @@ +import"./chunks/theme.H2-gvx_u.js";import{_ as s,c as i,f as r,N as o,o as n}from"./chunks/framework.CE9GIcbU.js";const d="/case-study/about_us/tony.jpeg",m="/case-study/about_us/james.jpeg",c="/case-study/about_us/garrett.jpeg",u="/case-study/about_us/sean.jpeg",v={name:"AboutUs",data(){return{mouseX:0,mouseY:0,cursorX:0,cursorY:0,isOverActiveArea:!1,hideTimeout:null}},mounted(){document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseenter",this.handleMouseEnter,!0),document.addEventListener("mouseleave",this.handleMouseLeave,!0),this.animateCursor()},beforeUnmount(){document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseenter",this.handleMouseEnter,!0),document.removeEventListener("mouseleave",this.handleMouseLeave,!0),cancelAnimationFrame(this.animationFrame),clearTimeout(this.hideTimeout)},methods:{handleMouseMove(a){this.mouseX=a.clientX,this.mouseY=a.clientY,this.isOverActiveArea&&this.showCursor()},handleMouseEnter(a){a.target&&a.target.matches("header, main")&&(this.isOverActiveArea=!0,this.showCursor())},handleMouseLeave(a){a.target&&a.target.matches("header, main")&&(this.isOverActiveArea=!1,this.hideCursor())},animateCursor(){this.cursorX+=(this.mouseX-this.cursorX)*.15,this.cursorY+=(this.mouseY-this.cursorY)*.15;const e=document.querySelector(".cursor-element");e&&(e.style.transform=`translate(${this.cursorX}px, ${this.cursorY}px)`),this.animationFrame=requestAnimationFrame(this.animateCursor)},showCursor(){const a=document.querySelector(".cursor-glow");a==null||a.classList.add("active"),clearTimeout(this.hideTimeout),this.hideTimeout=setTimeout(()=>{this.isOverActiveArea&&(a==null||a.classList.remove("active"))},2e3)},hideCursor(){const a=document.querySelector(".cursor-glow");a==null||a.classList.remove("active"),clearTimeout(this.hideTimeout)}}},h=i("",2);function l(a,e,t,b,g,f){return h}const p=s(v,[["render",l],["__scopeId","data-v-78673a82"]]),w=JSON.parse('{"title":"","description":"","frontmatter":{"layout":false},"headers":[],"relativePath":"about-us.md","filePath":"about-us.md"}'),_={name:"about-us.md"},A=Object.assign(_,{setup(a){return(e,t)=>(n(),r("div",null,[o(p)]))}});export{w as __pageData,A as default}; diff --git a/docs/.vitepress/dist/assets/api-examples.md.C9MzH2FB.js b/docs/.vitepress/dist/assets/api-examples.md.C61jmcDT.js similarity index 81% rename from docs/.vitepress/dist/assets/api-examples.md.C9MzH2FB.js rename to docs/.vitepress/dist/assets/api-examples.md.C61jmcDT.js index 60d64c2..46ebbd9 100644 --- a/docs/.vitepress/dist/assets/api-examples.md.C9MzH2FB.js +++ b/docs/.vitepress/dist/assets/api-examples.md.C61jmcDT.js @@ -1,4 +1,4 @@ -import{u as h,c as p,j as s,t as i,k as e,a2 as r,a,o as k}from"./chunks/framework.BJvAGJ4I.js";const d=r(`

Runtime API Examples

This page demonstrates usage of some of the runtime APIs provided by VitePress.

The main useData() API can be used to access site, theme, and page data for the current page. It works in both .md and .vue files:

md
<script setup>
+import{x as h,f as p,g as s,t as i,B as e,c as r,m as a,o as k}from"./chunks/framework.CE9GIcbU.js";const d=r(`

Runtime API Examples

This page demonstrates usage of some of the runtime APIs provided by VitePress.

The main useData() API can be used to access site, theme, and page data for the current page. It works in both .md and .vue files:

md
<script setup>
 import { useData } from 'vitepress'
 
 const { theme, page, frontmatter } = useData()
diff --git a/docs/.vitepress/dist/assets/api-examples.md.C61jmcDT.lean.js b/docs/.vitepress/dist/assets/api-examples.md.C61jmcDT.lean.js
new file mode 100644
index 0000000..fcf92c2
--- /dev/null
+++ b/docs/.vitepress/dist/assets/api-examples.md.C61jmcDT.lean.js
@@ -0,0 +1 @@
+import{x as h,f as p,g as s,t as i,B as e,c as r,m as a,o as k}from"./chunks/framework.CE9GIcbU.js";const d=r("",6),o=s("h3",{id:"page-data",tabindex:"-1"},[a("Page Data "),s("a",{class:"header-anchor",href:"#page-data","aria-label":'Permalink to "Page Data"'},"​")],-1),E=s("h3",{id:"page-frontmatter",tabindex:"-1"},[a("Page Frontmatter "),s("a",{class:"header-anchor",href:"#page-frontmatter","aria-label":'Permalink to "Page Frontmatter"'},"​")],-1),g=s("h2",{id:"more",tabindex:"-1"},[a("More "),s("a",{class:"header-anchor",href:"#more","aria-label":'Permalink to "More"'},"​")],-1),c=s("p",null,[a("Check out the documentation for the "),s("a",{href:"https://vitepress.dev/reference/runtime-api#usedata",target:"_blank",rel:"noreferrer"},"full list of runtime APIs"),a(".")],-1),D=JSON.parse('{"title":"Runtime API Examples","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api-examples.md","filePath":"api-examples.md"}'),m={name:"api-examples.md"},F=Object.assign(m,{setup(u){const{site:y,theme:t,page:n,frontmatter:l}=h();return(_,f)=>(k(),p("div",null,[d,s("pre",null,i(e(t)),1),o,s("pre",null,i(e(n)),1),E,s("pre",null,i(e(l)),1),g,c]))}});export{D as __pageData,F as default};
diff --git a/docs/.vitepress/dist/assets/api-examples.md.C9MzH2FB.lean.js b/docs/.vitepress/dist/assets/api-examples.md.C9MzH2FB.lean.js
deleted file mode 100644
index 70a46a1..0000000
--- a/docs/.vitepress/dist/assets/api-examples.md.C9MzH2FB.lean.js
+++ /dev/null
@@ -1 +0,0 @@
-import{u as h,c as p,j as s,t as i,k as e,a2 as r,a,o as k}from"./chunks/framework.BJvAGJ4I.js";const d=r("",6),o=s("h3",{id:"page-data",tabindex:"-1"},[a("Page Data "),s("a",{class:"header-anchor",href:"#page-data","aria-label":'Permalink to "Page Data"'},"​")],-1),E=s("h3",{id:"page-frontmatter",tabindex:"-1"},[a("Page Frontmatter "),s("a",{class:"header-anchor",href:"#page-frontmatter","aria-label":'Permalink to "Page Frontmatter"'},"​")],-1),g=s("h2",{id:"more",tabindex:"-1"},[a("More "),s("a",{class:"header-anchor",href:"#more","aria-label":'Permalink to "More"'},"​")],-1),c=s("p",null,[a("Check out the documentation for the "),s("a",{href:"https://vitepress.dev/reference/runtime-api#usedata",target:"_blank",rel:"noreferrer"},"full list of runtime APIs"),a(".")],-1),D=JSON.parse('{"title":"Runtime API Examples","description":"","frontmatter":{"outline":"deep"},"headers":[],"relativePath":"api-examples.md","filePath":"api-examples.md"}'),m={name:"api-examples.md"},F=Object.assign(m,{setup(u){const{site:y,theme:t,page:n,frontmatter:l}=h();return(_,f)=>(k(),p("div",null,[d,s("pre",null,i(e(t)),1),o,s("pre",null,i(e(n)),1),E,s("pre",null,i(e(l)),1),g,c]))}});export{D as __pageData,F as default};
diff --git a/docs/.vitepress/dist/assets/app.BGSLNiZC.js b/docs/.vitepress/dist/assets/app.BGSLNiZC.js
deleted file mode 100644
index b065964..0000000
--- a/docs/.vitepress/dist/assets/app.BGSLNiZC.js
+++ /dev/null
@@ -1 +0,0 @@
-import{t as p}from"./chunks/theme.CRDhqLDM.js";import{U as o,a6 as u,a7 as c,a8 as l,a9 as f,aa as d,ab as m,ac as h,ad as g,ae as A,af as y,d as P,u as v,y as C,x as b,ag as w,ah as E,ai as R,a3 as S}from"./chunks/framework.BJvAGJ4I.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=P({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return C(()=>{b(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&w(),E(),R(),s.setup&&s.setup(),()=>S(s.Layout)}});async function x(){globalThis.__VITEPRESS__=!0;const e=_(),a=D();a.provide(c,e);const t=l(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function D(){return g(T)}function _(){let e=o,a;return A(t=>{let n=y(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&x().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{x as createApp};
diff --git a/docs/.vitepress/dist/assets/app.CoicuEUp.js b/docs/.vitepress/dist/assets/app.CoicuEUp.js
new file mode 100644
index 0000000..513a991
--- /dev/null
+++ b/docs/.vitepress/dist/assets/app.CoicuEUp.js
@@ -0,0 +1 @@
+import{R as p}from"./chunks/theme.H2-gvx_u.js";import{Z as o,ab as u,ac as l,ad as c,ae as f,af as d,ag as m,ah as h,ai as g,aj as A,ak as P,d as v,x as w,G as y,E as C,al as R,am as b,an as E,h as S}from"./chunks/framework.CE9GIcbU.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(p),T=v({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=w();return y(()=>{C(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&R(),b(),E(),s.setup&&s.setup(),()=>S(s.Layout)}});async function j(){globalThis.__VITEPRESS__=!0;const e=D(),a=x();a.provide(l,e);const t=c(e.route);return a.provide(f,t),a.component("Content",d),a.component("ClientOnly",m),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:h}),{app:a,router:e,data:t}}function x(){return g(T)}function D(){let e=o,a;return A(t=>{let n=P(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=import(n)),o&&(e=!1),r},s.NotFound)}o&&j().then(({app:e,router:a,data:t})=>{a.go().then(()=>{u(a.route,t.site),e.mount("#app")})});export{j as createApp};
diff --git a/docs/.vitepress/dist/assets/automating-deployment.md.CzzCffgA.js b/docs/.vitepress/dist/assets/automating-deployment.md.CzzCffgA.js
new file mode 100644
index 0000000..9bfb524
--- /dev/null
+++ b/docs/.vitepress/dist/assets/automating-deployment.md.CzzCffgA.js
@@ -0,0 +1 @@
+import{_ as a}from"./chunks/cli_dropshadow.CnHJm-0V.js";import{_ as i,e as r,f as s,g as e,N as t,m as n,o as l}from"./chunks/framework.CE9GIcbU.js";const $=JSON.parse('{"title":"Automating Deployment","description":"","frontmatter":{},"headers":[],"relativePath":"automating-deployment.md","filePath":"automating-deployment.md"}'),c={name:"automating-deployment.md"},d=e("h1",{id:"automating-deployment",tabindex:"-1"},[n("Automating Deployment "),e("a",{class:"header-anchor",href:"#automating-deployment","aria-label":'Permalink to "Automating Deployment"'},"​")],-1),u=e("h2",{id:"command-line-interface",tabindex:"-1"},[n("Command-Line Interface "),e("a",{class:"header-anchor",href:"#command-line-interface","aria-label":'Permalink to "Command-Line Interface"'},"​")],-1),m=e("p",null,"The Helios Command-Line Interface (CLI) streamlines the deployment, configuration and management of Helios infrastructure on AWS.",-1),p=e("p",null,"This interface simplifies what would otherwise be complex AWS operations, allowing users to quickly set up, manage, and tear down their Helios environment without navigating multiple AWS interfaces or writing custom scripts.",-1),h=e("p",null,"How it works:",-1),f={class:"icon-list"},_=e("span",null,"When deploying Helios with the CLI, a user will be prompted for an AWS profile name and an optional ChatGPT API key.",-1),g=e("span",null," Once credentials are provided, the CLI uses the stored AWS credentials in your local AWS environment configuration files to deploy all Helios infrastructure within your AWS account.",-1),w=e("span",null," Under the hood, Helios leverages the AWS Cloud Development Kit (AWS CDK) which we will go into more detail below.",-1),y=e("p",null,[e("img",{src:a,alt:"CLI"})],-1),C=e("h2",{id:"aws-cdk",tabindex:"-1"},[n("AWS CDK "),e("a",{class:"header-anchor",href:"#aws-cdk","aria-label":'Permalink to "AWS CDK"'},"​")],-1),A=e("p",null,"To automate deployment for our users, we evaluated the AWS CDK and Terraform.",-1),b={class:"icon-list"},v=e("span",null,[e("strong",null,"Terraform"),n(": an open source infrastructure as code tool that enables declarative configuration of cloud resources across multiple providers, using its own domain-specific language.")],-1),S=e("span",null,[e("strong",null,"AWS CDK"),n(": an infrastructure as code framework for defining cloud infrastructure, which then compiles into CloudFormation YAML templates. This process combines the flexibility of a programming language with the reliability of declarative deployments, allowing developers to use object-oriented techniques to model their infrastructure.")],-1),W=e("p",null,"Comparing the AWS CDK and Terraform, while we found Terraform easier to use and quicker for initial deployments, however, we ultimately preferred the CDK. In our opinion, it offered us slightly better debugging capabilities and greater control in defining our infrastructure, particularly for complex, interconnected resources.",-1),D=e("p",null,"After careful consideration, we opted for the AWS CDK as our infrastructure-as-code solution.",-1);function I(k,T,x,K,L,H){const o=r("Icon");return l(),s("div",null,[d,u,m,p,h,e("div",f,[e("p",null,[t(o,{name:"CloudIcon"}),_]),e("p",null,[t(o,{name:"KeyIcon"}),g]),e("p",null,[t(o,{name:"CubeTransparentIcon"}),w])]),y,C,A,e("div",b,[e("p",null,[t(o,{name:"terraform-icon"}),v]),e("p",null,[t(o,{name:"aws-icon"}),S])]),W,D])}const q=i(c,[["render",I]]);export{$ as __pageData,q as default};
diff --git a/docs/.vitepress/dist/assets/automating-deployment.md.CzzCffgA.lean.js b/docs/.vitepress/dist/assets/automating-deployment.md.CzzCffgA.lean.js
new file mode 100644
index 0000000..9bfb524
--- /dev/null
+++ b/docs/.vitepress/dist/assets/automating-deployment.md.CzzCffgA.lean.js
@@ -0,0 +1 @@
+import{_ as a}from"./chunks/cli_dropshadow.CnHJm-0V.js";import{_ as i,e as r,f as s,g as e,N as t,m as n,o as l}from"./chunks/framework.CE9GIcbU.js";const $=JSON.parse('{"title":"Automating Deployment","description":"","frontmatter":{},"headers":[],"relativePath":"automating-deployment.md","filePath":"automating-deployment.md"}'),c={name:"automating-deployment.md"},d=e("h1",{id:"automating-deployment",tabindex:"-1"},[n("Automating Deployment "),e("a",{class:"header-anchor",href:"#automating-deployment","aria-label":'Permalink to "Automating Deployment"'},"​")],-1),u=e("h2",{id:"command-line-interface",tabindex:"-1"},[n("Command-Line Interface "),e("a",{class:"header-anchor",href:"#command-line-interface","aria-label":'Permalink to "Command-Line Interface"'},"​")],-1),m=e("p",null,"The Helios Command-Line Interface (CLI) streamlines the deployment, configuration and management of Helios infrastructure on AWS.",-1),p=e("p",null,"This interface simplifies what would otherwise be complex AWS operations, allowing users to quickly set up, manage, and tear down their Helios environment without navigating multiple AWS interfaces or writing custom scripts.",-1),h=e("p",null,"How it works:",-1),f={class:"icon-list"},_=e("span",null,"When deploying Helios with the CLI, a user will be prompted for an AWS profile name and an optional ChatGPT API key.",-1),g=e("span",null," Once credentials are provided, the CLI uses the stored AWS credentials in your local AWS environment configuration files to deploy all Helios infrastructure within your AWS account.",-1),w=e("span",null," Under the hood, Helios leverages the AWS Cloud Development Kit (AWS CDK) which we will go into more detail below.",-1),y=e("p",null,[e("img",{src:a,alt:"CLI"})],-1),C=e("h2",{id:"aws-cdk",tabindex:"-1"},[n("AWS CDK "),e("a",{class:"header-anchor",href:"#aws-cdk","aria-label":'Permalink to "AWS CDK"'},"​")],-1),A=e("p",null,"To automate deployment for our users, we evaluated the AWS CDK and Terraform.",-1),b={class:"icon-list"},v=e("span",null,[e("strong",null,"Terraform"),n(": an open source infrastructure as code tool that enables declarative configuration of cloud resources across multiple providers, using its own domain-specific language.")],-1),S=e("span",null,[e("strong",null,"AWS CDK"),n(": an infrastructure as code framework for defining cloud infrastructure, which then compiles into CloudFormation YAML templates. This process combines the flexibility of a programming language with the reliability of declarative deployments, allowing developers to use object-oriented techniques to model their infrastructure.")],-1),W=e("p",null,"Comparing the AWS CDK and Terraform, while we found Terraform easier to use and quicker for initial deployments, however, we ultimately preferred the CDK. In our opinion, it offered us slightly better debugging capabilities and greater control in defining our infrastructure, particularly for complex, interconnected resources.",-1),D=e("p",null,"After careful consideration, we opted for the AWS CDK as our infrastructure-as-code solution.",-1);function I(k,T,x,K,L,H){const o=r("Icon");return l(),s("div",null,[d,u,m,p,h,e("div",f,[e("p",null,[t(o,{name:"CloudIcon"}),_]),e("p",null,[t(o,{name:"KeyIcon"}),g]),e("p",null,[t(o,{name:"CubeTransparentIcon"}),w])]),y,C,A,e("div",b,[e("p",null,[t(o,{name:"terraform-icon"}),v]),e("p",null,[t(o,{name:"aws-icon"}),S])]),W,D])}const q=i(c,[["render",I]]);export{$ as __pageData,q as default};
diff --git a/docs/.vitepress/dist/assets/automating-deployment.md.zDcF1udB.js b/docs/.vitepress/dist/assets/automating-deployment.md.zDcF1udB.js
deleted file mode 100644
index dd12736..0000000
--- a/docs/.vitepress/dist/assets/automating-deployment.md.zDcF1udB.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as i,c as e,o as E,a2 as o}from"./chunks/framework.BJvAGJ4I.js";const n=JSON.parse('{"title":"Automating Deployment","description":"","frontmatter":{},"headers":[],"relativePath":"automating-deployment.md","filePath":"automating-deployment.md"}'),h={name:"automating-deployment.md"},s=o('

Automating Deployment

Command-Line Interface

The Helios Command-Line Interface (CLI) streamlines the deployment, configuration and management of Helios infrastructure on AWS.

This interface simplifies what would otherwise be complex AWS operations, allowing users to quickly set up, manage, and tear down their Helios environment without navigating multiple AWS interfaces or writing custom scripts.

How it works:

  • When deploying Helios with the CLI, a user will be prompted for an AWS profile name and an optional ChatGPT API key.
  • Once credentials are provided, the CLI uses the stored AWS credentials in your local AWS environment configuration files to deploy all Helios infrastructure within your AWS account.
  • Under the hood, Helios leverages the AWS Cloud Development Kit (AWS CDK) which we will go into more detail below.

AWS CDK

To automate deployment for our users, we evaluated the AWS CDK and Terraform.

  • Terraform: an open source infrastructure as code tool that enables declarative configuration of cloud resources across multiple providers, using its own domain-specific language.
  • AWS CDK: an infrastructure as code framework for defining cloud infrastructure, which then compiles into CloudFormation YAML templates. This process combines the flexibility of a programming language with the reliability of declarative deployments, allowing developers to use object-oriented techniques to model their infrastructure.

Comparing the AWS CDK and Terraform, while we found Terraform easier to use and quicker for initial deployments, however, we ultimately preferred the CDK. In our opinion, it offered us slightly better debugging capabilities and greater control in defining our infrastructure, particularly for complex, interconnected resources.

After careful consideration, we opted for the AWS CDK as our infrastructure-as-code solution.

',12),g=[s];function I(t,H,A,c,a,R){return E(),e("div",null,g)}const r=i(h,[["render",I]]);export{n as __pageData,r as default}; diff --git a/docs/.vitepress/dist/assets/automating-deployment.md.zDcF1udB.lean.js b/docs/.vitepress/dist/assets/automating-deployment.md.zDcF1udB.lean.js deleted file mode 100644 index 4ec8912..0000000 --- a/docs/.vitepress/dist/assets/automating-deployment.md.zDcF1udB.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,c as e,o as E,a2 as o}from"./chunks/framework.BJvAGJ4I.js";const n=JSON.parse('{"title":"Automating Deployment","description":"","frontmatter":{},"headers":[],"relativePath":"automating-deployment.md","filePath":"automating-deployment.md"}'),h={name:"automating-deployment.md"},s=o("",12),g=[s];function I(t,H,A,c,a,R){return E(),e("div",null,g)}const r=i(h,[["render",I]]);export{n as __pageData,r as default}; diff --git a/docs/.vitepress/dist/assets/blackbox.DaaLKg1o.png b/docs/.vitepress/dist/assets/blackbox.DaaLKg1o.png new file mode 100644 index 0000000..9762c20 Binary files /dev/null and b/docs/.vitepress/dist/assets/blackbox.DaaLKg1o.png differ diff --git a/docs/.vitepress/dist/assets/building-helios.md.NyMLTPtG.js b/docs/.vitepress/dist/assets/building-helios.md.NyMLTPtG.js new file mode 100644 index 0000000..cbd8854 --- /dev/null +++ b/docs/.vitepress/dist/assets/building-helios.md.NyMLTPtG.js @@ -0,0 +1 @@ +import{_ as n,e as o,f as r,g as e,N as a,u as l,c as s,o as c,m as d}from"./chunks/framework.CE9GIcbU.js";const u="/case-study/assets/eventtable.2ng75EEu.png",h="/case-study/assets/rowbased.CzBh14Lk.png",p="/case-study/assets/columnbased.BF7ZPucB.png",m="/case-study/assets/node_cluster_opt.CWSwPPFP.png",g="/case-study/assets/lambdacoldstarts.xrsyvsw9.png",Q=JSON.parse('{"title":"Building Helios: Design Choices","description":"","frontmatter":{},"headers":[],"relativePath":"building-helios.md","filePath":"building-helios.md"}'),f={name:"building-helios.md"},b=s('

Building Helios: Design Choices

Choosing a Database

When evaluating storage solutions for real-time event streaming and querying, we investigated relational databases, document databases, and columnar databases. In this section we explore some of the fundamental differences between these database types.

Our criteria

',4),y={class:"icon-list"},_=e("span",null,"High write throughput: The database must be capable of handling continuous writes of large volumes of streaming data, allowing Helios to ingest data efficiently without bottlenecks.",-1),w=e("span",null,"Low-latency query performance: Aggregating large datasets for analytical queries inherently challenges performance, and real-time analytics demands rapid insights for timely decision-making. Specifically, the database should be able to execute aggregation queries spanning multiple columns across tens of millions of rows in under a few seconds.",-1),v=e("span",null,"Extensive SQL support: Given SQL's popularity and reliability as a querying language, we prioritized databases that support a wide range of SQL features. This ensures users can leverage complex joins, filters, and aggregations, enhancing the flexibility and depth of their data analysis.",-1),k=s('

Document-based Storage

Document databases such as MongoDB and Couchbase store data in flexible, JSON-like documents. Each document can have a different structure, allowing for schema flexibility. Many document databases are designed for horizontal scaling and quick read access for contiguous pieces of data.

While document databases offer schema flexibility, we require our data to have a consistent structure, making schema flexibility a liability rather than an asset. In addition, they don’t align with our needs for high-performance analytical queries across large datasets. Please see our benchmarking section for performance metrics.

Row-based Storage

Relational databases such as Postgres and MySQL use row-based storage. It is the conventional method of storing data, where each row is treated as a primary unit and is sequentially stored on the disk. A key characteristic of row-based storage includes efficient transactions, particularly in regards to record updates and deletions.

However, row-based storage is often inefficient when it comes to analytical queries, especially those that require an aggregation of data over a few columns. In these queries, the database must read entire rows of data even when only a subset of columns are needed.

The following is a basic event table along with a basic analytic query that asks the question “How many events has each user initiated?”

Event Table

Below is an example of how row-based databases might execute an analytical query:

Row Table

Column-based Storage

Columnar databases such as Clickhouse and Apache Druid use column-based storage. The key difference is that columns are treated as the primary unit and stored sequentially on the disk. When running queries that span only a few columns, a columnar database can ignore unneeded columns. Additionally, columns can be compressed more efficiently than rows, leading to better storage efficiency and speed. More performance details can be found in our Benchmarking section.

Below is an example of how column-based databases might execute an analytical query:

Column Table

One key limitation is that the data in a columnar database is not well-suited for frequent updates or deletions of existing data. Fortunately, this drawback should not be limiting for Helios users. By nature, many real-time streaming data use-cases mostly require database reads and insertions that do not modify existing data.

After evaluating these database types, it was clear that columnar-based storage is the best fit for analytical queries.

Why Clickhouse

After deciding on a columnar database, we evaluated a number of database options and ultimately selected Clickhouse as our preferred choice because it met all of our original criteria plus had a few extra standout benefits:

',19),C={class:"icon-list"},q=e("span",null,"High write throughput",-1),x=e("span",null,"Low-latency query performance",-1),T=e("span",null,"Comprehensive Documentation",-1),S=e("span",null,"Open Source",-1),P=s('

Of the criteria listed above, ClickHouse's impressive read and write latency particularly impressed us. For more insights into ClickHouse's performance, see our Load Testing results.

Deploying ClickHouse

Single Node vs Node Cluster

Node Cluster

We explored several options when determining the optimal deployment strategy for the Helios production ClickHouse server. While many database deployments utilize clustered architectures for high availability and scalability, with modern implementations often leveraging containerization and orchestration tools like Kubernetes, we found this approach less suitable for ClickHouse.

Contrary to the typical horizontal scaling strategy for other database types like Druid, the ClickHouse development team specifically advises against premature horizontal scaling. Their recommendation stems from ClickHouse's design, which is optimized for efficient performance on a single server, even at scales of hundreds of billions of rows. This guidance challenged our initial assumptions about needing a containerized cluster deployment strategy.

💡 “ClickHouse was designed from the ground up to utilize the full resources of a machine. We commonly find successful deployments with ClickHouse deployed on servers with hundreds of cores, terabytes of RAM, and petabytes of disk space. Most analytical queries have a sort, filter, and aggregation stage. Each of these can be parallelized independently and will, by default, use as many threads as cores, thus utilizing the full machine resources for a query.”

Key factors in our decision-making process included:

',8),A={class:"icon-list"},H=e("span",null,"Performance optimization: ClickHouse can efficiently handle massive datasets on a single server",-1),I=e("span",null,"Simplicity: Reduced complexity in deployment and management compared to a clustered setup.",-1),B=e("span",null,"Cost-effectiveness: Maximizing resource utilization before scaling horizontally.",-1),D=e("span",null,"Scalability: Ensuring our architecture can still accommodate future growth when necessary.",-1),L=s('

Based on these considerations, we opted to host ClickHouse on an Amazon EC2 virtual server with Elastic Block Storage (EBS). This approach allows us to leverage ClickHouse's inherent strengths while maintaining the flexibility for users to scale as needed. Later in the Scaling Helios section, we will go deeper into EBS and other vertical scaling considerations as it pertains to Helios.

Lambda Trade-offs

Cold Starts

Users of Helios may experience an initial delay when connecting their Kinesis streams, this is due to the AWS Lambda cold start. We looked into cold starts to better understand if this would have a significant impact on our user experience.

Lambda functions typically operate on a shared pool of virtual CPUs, essentially Amazon EC2 instances. When a request comes in, AWS must allocate a worker from this EC2 pool to handle it. This allocation process involves initializing the execution environment and loading a module containing the provided function code. This setup process explains why cold starts occur, introducing a brief delay before the function can begin processing the request.

This prep time setting up the execution environment, a cold start, is not charged, but it adds latency to the Lambda invocation. One could pay to ensure dedicated CPUs are available to avoid this cold start latency.

Cold Starts

Ultimately, we decided to stick with the default setup to save users money and have our Lambda function run with cold starts versus implementing a warm Lambda. We believe that the latency impact from this initial setup is of minimal concern as per the nature of event streams; after the first execution, each Lambda execution environment will stay active as long as they are continually invoked.

',8);function z(E,N,W,V,R,O){const t=o("Icon"),i=o("TippyWrapper");return c(),r("div",null,[b,e("div",y,[e("p",null,[a(t,{name:"ArrowTrendingUpIcon"}),_]),e("p",null,[a(t,{name:"BoltIcon"}),w]),e("p",null,[a(t,{name:"CodeBracketIcon"}),v])]),k,e("div",C,[e("p",null,[a(t,{name:"ArrowTrendingUpIcon"}),q]),e("p",null,[a(t,{name:"BoltIcon"}),x]),e("p",null,[a(t,{name:"CodeBracketIcon"}),a(i,{content:"Provides the most support for ANSI SQL compared to the other columnar databases we evaluated such as Apache Druid and Apache Pinot, allowing users to leverage familiar query syntax and features"},{default:l(()=>[d("SQL Support")]),_:1})]),e("p",null,[a(t,{name:"DocumentTextIcon"}),T]),e("p",null,[a(t,{name:"LockOpenIcon"}),S])]),P,e("div",A,[e("p",null,[a(t,{name:"CpuChipIcon"}),H]),e("p",null,[a(t,{name:"CircleStackIcon"}),I]),e("p",null,[a(t,{name:"CurrencyDollarIcon"}),B]),e("p",null,[a(t,{name:"ArrowsPointingOutIcon"}),D])]),L])}const U=n(f,[["render",z]]);export{Q as __pageData,U as default}; diff --git a/docs/.vitepress/dist/assets/building-helios.md.NyMLTPtG.lean.js b/docs/.vitepress/dist/assets/building-helios.md.NyMLTPtG.lean.js new file mode 100644 index 0000000..6ca9eb3 --- /dev/null +++ b/docs/.vitepress/dist/assets/building-helios.md.NyMLTPtG.lean.js @@ -0,0 +1 @@ +import{_ as n,e as o,f as r,g as e,N as a,u as l,c as s,o as c,m as d}from"./chunks/framework.CE9GIcbU.js";const u="/case-study/assets/eventtable.2ng75EEu.png",h="/case-study/assets/rowbased.CzBh14Lk.png",p="/case-study/assets/columnbased.BF7ZPucB.png",m="/case-study/assets/node_cluster_opt.CWSwPPFP.png",g="/case-study/assets/lambdacoldstarts.xrsyvsw9.png",Q=JSON.parse('{"title":"Building Helios: Design Choices","description":"","frontmatter":{},"headers":[],"relativePath":"building-helios.md","filePath":"building-helios.md"}'),f={name:"building-helios.md"},b=s("",4),y={class:"icon-list"},_=e("span",null,"High write throughput: The database must be capable of handling continuous writes of large volumes of streaming data, allowing Helios to ingest data efficiently without bottlenecks.",-1),w=e("span",null,"Low-latency query performance: Aggregating large datasets for analytical queries inherently challenges performance, and real-time analytics demands rapid insights for timely decision-making. Specifically, the database should be able to execute aggregation queries spanning multiple columns across tens of millions of rows in under a few seconds.",-1),v=e("span",null,"Extensive SQL support: Given SQL's popularity and reliability as a querying language, we prioritized databases that support a wide range of SQL features. This ensures users can leverage complex joins, filters, and aggregations, enhancing the flexibility and depth of their data analysis.",-1),k=s("",19),C={class:"icon-list"},q=e("span",null,"High write throughput",-1),x=e("span",null,"Low-latency query performance",-1),T=e("span",null,"Comprehensive Documentation",-1),S=e("span",null,"Open Source",-1),P=s("",8),A={class:"icon-list"},H=e("span",null,"Performance optimization: ClickHouse can efficiently handle massive datasets on a single server",-1),I=e("span",null,"Simplicity: Reduced complexity in deployment and management compared to a clustered setup.",-1),B=e("span",null,"Cost-effectiveness: Maximizing resource utilization before scaling horizontally.",-1),D=e("span",null,"Scalability: Ensuring our architecture can still accommodate future growth when necessary.",-1),L=s("",8);function z(E,N,W,V,R,O){const t=o("Icon"),i=o("TippyWrapper");return c(),r("div",null,[b,e("div",y,[e("p",null,[a(t,{name:"ArrowTrendingUpIcon"}),_]),e("p",null,[a(t,{name:"BoltIcon"}),w]),e("p",null,[a(t,{name:"CodeBracketIcon"}),v])]),k,e("div",C,[e("p",null,[a(t,{name:"ArrowTrendingUpIcon"}),q]),e("p",null,[a(t,{name:"BoltIcon"}),x]),e("p",null,[a(t,{name:"CodeBracketIcon"}),a(i,{content:"Provides the most support for ANSI SQL compared to the other columnar databases we evaluated such as Apache Druid and Apache Pinot, allowing users to leverage familiar query syntax and features"},{default:l(()=>[d("SQL Support")]),_:1})]),e("p",null,[a(t,{name:"DocumentTextIcon"}),T]),e("p",null,[a(t,{name:"LockOpenIcon"}),S])]),P,e("div",A,[e("p",null,[a(t,{name:"CpuChipIcon"}),H]),e("p",null,[a(t,{name:"CircleStackIcon"}),I]),e("p",null,[a(t,{name:"CurrencyDollarIcon"}),B]),e("p",null,[a(t,{name:"ArrowsPointingOutIcon"}),D])]),L])}const U=n(f,[["render",z]]);export{Q as __pageData,U as default}; diff --git a/docs/.vitepress/dist/assets/building-helios.md.cznknSt2.js b/docs/.vitepress/dist/assets/building-helios.md.cznknSt2.js deleted file mode 100644 index b4e83f0..0000000 --- a/docs/.vitepress/dist/assets/building-helios.md.cznknSt2.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as A,c as e,o as g,a2 as B}from"./chunks/framework.BJvAGJ4I.js";const D=JSON.parse('{"title":"Building Helios: Design Choices","description":"","frontmatter":{},"headers":[],"relativePath":"building-helios.md","filePath":"building-helios.md"}'),C={name:"building-helios.md"},I=B('

Building Helios: Design Choices

Choosing a Database

When evaluating storage solutions for real-time event streaming and querying, we investigated relational databases, document databases, and columnar databases. In this section we explore some of the fundamental differences between these database types.

Our criteria

  1. High write throughput: The database must be capable of handling continuous writes of large volumes of streaming data, allowing Helios to ingest data efficiently without bottlenecks.
  2. Low-latency query performance: Aggregating large datasets for analytical queries inherently challenges performance, and real-time analytics demands rapid insights for timely decision-making. Specifically, the database should be able to execute aggregation queries spanning multiple columns across tens of millions of rows in under a few seconds.
  3. Extensive SQL support: Given SQL's popularity and reliability as a querying language, we prioritized databases that support a wide range of SQL features. This ensures users can leverage complex joins, filters, and aggregations, enhancing the flexibility and depth of their data analysis.

Document-based Storage

Document databases such as MongoDB and Couchbase store data in flexible, JSON-like documents. Each document can have a different structure, allowing for schema flexibility. Many document databases are designed for horizontal scaling and quick read access for contiguous pieces of data.

While document databases offer schema flexibility, we require our data to have a consistent structure, making schema flexibility a liability rather than an asset. In addition, they don’t align with our needs for high-performance analytical queries across large datasets. Please see our benchmarking section for performance metrics.

Row-based Storage

Relational databases such as Postgres and MySQL use row-based storage. It is the conventional method of storing data, where each row is treated as a primary unit and is sequentially stored on the disk. A key characteristic of row-based storage includes efficient transactions, particularly in regards to record updates and deletions.

However, row-based storage is often inefficient when it comes to analytical queries, especially those that require an aggregation of data over a few columns. In these queries, the database must read entire rows of data even when only a subset of columns are needed.

The following is a basic event table along with a basic analytic query that asks the question “How many events has each user initiated?”

Below is an example of how row-based databases might execute an analytical query:

Column-based Storage

Columnar databases such as Clickhouse and Apache Druid use column-based storage. The key difference is that columns are treated as the primary unit and stored sequentially on the disk. When running queries that span only a few columns, a columnar database can ignore unneeded columns. Additionally, columns can be compressed more efficiently than rows, leading to better storage efficiency and speed. More performance details can be found in our Benchmarking[link] section.

Below is an example of how column-based databases might execute an analytical query:

One key limitation is that the data in a columnar database is not well-suited for frequent updates or deletions of existing data. Fortunately, this drawback should not be limiting for Helios users. By nature, many real-time streaming data use-cases mostly require database reads and insertions that do not modify existing data.

After evaluating these database types, it was clear that columnar-based storage is the best fit for analytical queries.

Why Clickhouse

After deciding on a columnar database, we evaluated a number of database option and ultimately selected Clickhouse as our preferred choice because it met all of our original criteria and had a few extra standout benefits:

  • High write throughput
  • Low-latency query performance
  • SQL Support
  • Comprehensive Documentation
  • Open Source

Of the criteria listed above, the one that stood out to us the most was ClickHouse’s low read and write latency. Detailed benchmark information can be found in ‘Load Testing.’

Deploying ClickHouse

Single Node vs Node Cluster

We explored several options when determining the optimal deployment strategy for the Helios production ClickHouse server. While many database deployments utilize clustered architectures for high availability and scalability, with modern implementations often leveraging containerization and orchestration tools like Kubernetes, we found this approach less suitable for ClickHouse.

Contrary to the typical horizontal scaling strategy for other database types like Druid, the ClickHouse development team specifically advises against premature horizontal scaling. Their recommendation stems from ClickHouse's design, which is optimized for efficient performance on a single server, even at scales of hundreds of billions of rows. This guidance challenged our initial assumptions about needing a containerized cluster deployment strategy.

💡 “ClickHouse was designed from the ground up to utilize the full resources of a machine. We commonly find successful deployments with ClickHouse deployed on servers with hundreds of cores, terabytes of RAM, and petabytes of disk space. Most analytical queries have a sort, filter, and aggregation stage. Each of these can be parallelized independently and will, by default, use as many threads as cores, thus utilizing the full machine resources for a query.”

Key factors in our decision-making process included:

  1. Performance optimization: ClickHouse can efficiently handle massive datasets on a single server
  2. Simplicity: Reduced complexity in deployment and management compared to a clustered setup.
  3. Cost-effectiveness: Maximizing resource utilization before scaling horizontally.
  4. Scalability: Ensuring our architecture can still accommodate future growth when necessary.

Based on these considerations, we opted to host ClickHouse on an Amazon EC2 virtual server with Elastic Block Storage (EBS). This approach allows us to leverage ClickHouse's inherent strengths while maintaining the flexibility for users to scale as needed. Later in the Scaling Helios section, we will go deeper into EBS and other vertical scaling considerations as it pertains to Helios.

Lambda Trade-offs

Cold Starts

Users of Helios may experience an initial delay when connecting their Kinesis streams, this is due to the AWS Lambda cold start. We looked into cold starts to better understand if this would have a significant impact on our user experience.

Lambda functions typically operate on a shared pool of virtual CPUs, essentially Amazon EC2 instances. When a request comes in, AWS must allocate a worker from this EC2 pool to handle it. This allocation process involves initializing the execution environment and loading a module containing the provided function code. This setup process explains why cold starts occur, introducing a brief delay before the function can begin processing the request.

This prep time setting up the execution environment, a cold start, is not charged, but it adds latency to the Lambda invocation. One could pay to ensure dedicated CPUs are available to avoid this cold start latency.

Ultimately, we decided to stick with the default setup to save users money and have our Lambda function run with cold starts versus implementing a warm Lambda. We believe that the latency impact from this initial setup is of minimal concern as per the nature of event streams; after the first execution, each Lambda execution environment will stay active as long as they are continually invoked.

',42),i=[I];function w(c,E,n,s,Q,o){return g(),e("div",null,i)}const O=A(C,[["render",w]]);export{D as __pageData,O as default}; diff --git a/docs/.vitepress/dist/assets/building-helios.md.cznknSt2.lean.js b/docs/.vitepress/dist/assets/building-helios.md.cznknSt2.lean.js deleted file mode 100644 index 54fc650..0000000 --- a/docs/.vitepress/dist/assets/building-helios.md.cznknSt2.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as A,c as e,o as g,a2 as B}from"./chunks/framework.BJvAGJ4I.js";const D=JSON.parse('{"title":"Building Helios: Design Choices","description":"","frontmatter":{},"headers":[],"relativePath":"building-helios.md","filePath":"building-helios.md"}'),C={name:"building-helios.md"},I=B("",42),i=[I];function w(c,E,n,s,Q,o){return g(),e("div",null,i)}const O=A(C,[["render",w]]);export{D as __pageData,O as default}; diff --git a/docs/.vitepress/dist/assets/chunks/cli_dropshadow.CnHJm-0V.js b/docs/.vitepress/dist/assets/chunks/cli_dropshadow.CnHJm-0V.js new file mode 100644 index 0000000..ce0caf6 --- /dev/null +++ b/docs/.vitepress/dist/assets/chunks/cli_dropshadow.CnHJm-0V.js @@ -0,0 +1 @@ +const s="/case-study/assets/cli_dropshadow.ByRs60AM.png";export{s as _}; diff --git a/docs/.vitepress/dist/assets/chunks/framework.BJvAGJ4I.js b/docs/.vitepress/dist/assets/chunks/framework.BJvAGJ4I.js deleted file mode 100644 index d2508f6..0000000 --- a/docs/.vitepress/dist/assets/chunks/framework.BJvAGJ4I.js +++ /dev/null @@ -1,17 +0,0 @@ -/** -* @vue/shared v3.4.37 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function ps(e,t){const n=new Set(e.split(","));return s=>n.has(s)}const se={},mt=[],Ae=()=>{},_o=()=>!1,Ut=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),gs=e=>e.startsWith("onUpdate:"),le=Object.assign,ms=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},bo=Object.prototype.hasOwnProperty,z=(e,t)=>bo.call(e,t),U=Array.isArray,yt=e=>_n(e)==="[object Map]",Fr=e=>_n(e)==="[object Set]",W=e=>typeof e=="function",re=e=>typeof e=="string",Je=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Hr=e=>(Z(e)||W(e))&&W(e.then)&&W(e.catch),$r=Object.prototype.toString,_n=e=>$r.call(e),wo=e=>_n(e).slice(8,-1),jr=e=>_n(e)==="[object Object]",ys=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=ps(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),bn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},vo=/-(\w)/g,Le=bn(e=>e.replace(vo,(t,n)=>n?n.toUpperCase():"")),Eo=/\B([A-Z])/g,Qe=bn(e=>e.replace(Eo,"-$1").toLowerCase()),wn=bn(e=>e.charAt(0).toUpperCase()+e.slice(1)),rn=bn(e=>e?`on${wn(e)}`:""),Ye=(e,t)=>!Object.is(e,t),$n=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Co=e=>{const t=parseFloat(e);return isNaN(t)?e:t},So=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let Bs;const Dr=()=>Bs||(Bs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function _s(e){if(U(e)){const t={};for(let n=0;n{if(n){const s=n.split(To);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function bs(e){let t="";if(re(e))t=e;else if(U(e))for(let n=0;n!!(e&&e.__v_isRef===!0),Mo=e=>re(e)?e:e==null?"":U(e)||Z(e)&&(e.toString===$r||!W(e.toString))?Br(e)?Mo(e.value):JSON.stringify(e,kr,2):String(e),kr=(e,t)=>Br(t)?kr(e,t.value):yt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[jn(s,i)+" =>"]=r,n),{})}:Fr(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>jn(n))}:Je(t)?jn(t):Z(t)&&!U(t)&&!jr(t)?String(t):t,jn=(e,t="")=>{var n;return Je(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.4.37 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let Ee;class Io{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Ee,!t&&Ee&&(this.index=(Ee.scopes||(Ee.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=Ee;try{return Ee=this,t()}finally{Ee=n}}}on(){Ee=this}off(){Ee=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),et()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=qe,n=ct;try{return qe=!0,ct=this,this._runnings++,ks(this),this.fn()}finally{Ks(this),this._runnings--,ct=n,qe=t}}stop(){this.active&&(ks(this),Ks(this),this.onStop&&this.onStop(),this.active=!1)}}function Fo(e){return e.value}function ks(e){e._trackId++,e._depsLength=0}function Ks(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},fn=new WeakMap,at=Symbol(""),rs=Symbol("");function we(e,t,n){if(qe&&ct){let s=fn.get(e);s||fn.set(e,s=new Map);let r=s.get(n);r||s.set(n,r=Yr(()=>s.delete(n))),Gr(ct,r)}}function $e(e,t,n,s,r,i){const o=fn.get(e);if(!o)return;let l=[];if(t==="clear")l=[...o.values()];else if(n==="length"&&U(e)){const c=Number(s);o.forEach((f,d)=>{(d==="length"||!Je(d)&&d>=c)&&l.push(f)})}else switch(n!==void 0&&l.push(o.get(n)),t){case"add":U(e)?ys(n)&&l.push(o.get("length")):(l.push(o.get(at)),yt(e)&&l.push(o.get(rs)));break;case"delete":U(e)||(l.push(o.get(at)),yt(e)&&l.push(o.get(rs)));break;case"set":yt(e)&&l.push(o.get(at));break}vs();for(const c of l)c&&Xr(c,4);Es()}function Ho(e,t){const n=fn.get(e);return n&&n.get(t)}const $o=ps("__proto__,__v_isRef,__isVue"),zr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Je)),Ws=jo();function jo(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=J(this);for(let i=0,o=this.length;i{e[t]=function(...n){Ze(),vs();const s=J(this)[t].apply(this,n);return Es(),et(),s}}),e}function Vo(e){Je(e)||(e=String(e));const t=J(this);return we(t,"has",e),t.hasOwnProperty(e)}class Jr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Qo:ti:i?ei:Zr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=U(t);if(!r){if(o&&z(Ws,n))return Reflect.get(Ws,n,s);if(n==="hasOwnProperty")return Vo}const l=Reflect.get(t,n,s);return(Je(n)?zr.has(n):$o(n))||(r||we(t,"get",n),i)?l:ge(l)?o&&ys(n)?l:l.value:Z(l)?r?Cn(l):En(l):l}}class Qr extends Jr{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=dt(i);if(!St(s)&&!dt(s)&&(i=J(i),s=J(s)),!U(t)&&ge(i)&&!ge(s))return c?!1:(i.value=s,!0)}const o=U(t)&&ys(n)?Number(n)e,vn=e=>Reflect.getPrototypeOf(e);function Wt(e,t,n=!1,s=!1){e=e.__v_raw;const r=J(e),i=J(t);n||(Ye(t,i)&&we(r,"get",t),we(r,"get",i));const{has:o}=vn(r),l=s?Cs:n?Ts:Ht;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function qt(e,t=!1){const n=this.__v_raw,s=J(n),r=J(e);return t||(Ye(e,r)&&we(s,"has",e),we(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Gt(e,t=!1){return e=e.__v_raw,!t&&we(J(e),"iterate",at),Reflect.get(e,"size",e)}function qs(e,t=!1){!t&&!St(e)&&!dt(e)&&(e=J(e));const n=J(this);return vn(n).has.call(n,e)||(n.add(e),$e(n,"add",e,e)),this}function Gs(e,t,n=!1){!n&&!St(t)&&!dt(t)&&(t=J(t));const s=J(this),{has:r,get:i}=vn(s);let o=r.call(s,e);o||(e=J(e),o=r.call(s,e));const l=i.call(s,e);return s.set(e,t),o?Ye(t,l)&&$e(s,"set",e,t):$e(s,"add",e,t),this}function Xs(e){const t=J(this),{has:n,get:s}=vn(t);let r=n.call(t,e);r||(e=J(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&$e(t,"delete",e,void 0),i}function Ys(){const e=J(this),t=e.size!==0,n=e.clear();return t&&$e(e,"clear",void 0,void 0),n}function Xt(e,t){return function(s,r){const i=this,o=i.__v_raw,l=J(o),c=t?Cs:e?Ts:Ht;return!e&&we(l,"iterate",at),o.forEach((f,d)=>s.call(r,c(f),c(d),i))}}function Yt(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=yt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),d=n?Cs:t?Ts:Ht;return!t&&we(i,"iterate",c?rs:at),{next(){const{value:h,done:m}=f.next();return m?{value:h,done:m}:{value:l?[d(h[0]),d(h[1])]:d(h),done:m}},[Symbol.iterator](){return this}}}}function De(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Ko(){const e={get(i){return Wt(this,i)},get size(){return Gt(this)},has:qt,add:qs,set:Gs,delete:Xs,clear:Ys,forEach:Xt(!1,!1)},t={get(i){return Wt(this,i,!1,!0)},get size(){return Gt(this)},has:qt,add(i){return qs.call(this,i,!0)},set(i,o){return Gs.call(this,i,o,!0)},delete:Xs,clear:Ys,forEach:Xt(!1,!0)},n={get(i){return Wt(this,i,!0)},get size(){return Gt(this,!0)},has(i){return qt.call(this,i,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:Xt(!0,!1)},s={get(i){return Wt(this,i,!0,!0)},get size(){return Gt(this,!0)},has(i){return qt.call(this,i,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:Xt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=Yt(i,!1,!1),n[i]=Yt(i,!0,!1),t[i]=Yt(i,!1,!0),s[i]=Yt(i,!0,!0)}),[e,n,t,s]}const[Wo,qo,Go,Xo]=Ko();function Ss(e,t){const n=t?e?Xo:Go:e?qo:Wo;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const Yo={get:Ss(!1,!1)},zo={get:Ss(!1,!0)},Jo={get:Ss(!0,!1)};const Zr=new WeakMap,ei=new WeakMap,ti=new WeakMap,Qo=new WeakMap;function Zo(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function el(e){return e.__v_skip||!Object.isExtensible(e)?0:Zo(wo(e))}function En(e){return dt(e)?e:xs(e,!1,Uo,Yo,Zr)}function tl(e){return xs(e,!1,ko,zo,ei)}function Cn(e){return xs(e,!0,Bo,Jo,ti)}function xs(e,t,n,s,r){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=el(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function bt(e){return dt(e)?bt(e.__v_raw):!!(e&&e.__v_isReactive)}function dt(e){return!!(e&&e.__v_isReadonly)}function St(e){return!!(e&&e.__v_isShallow)}function ni(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function on(e){return Object.isExtensible(e)&&Vr(e,"__v_skip",!0),e}const Ht=e=>Z(e)?En(e):e,Ts=e=>Z(e)?Cn(e):e;class si{constructor(t,n,s,r){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new ws(()=>t(this._value),()=>Mt(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Ye(t._value,t._value=t.effect.run())&&Mt(t,4),As(t),t.effect._dirtyLevel>=2&&Mt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function nl(e,t,n=!1){let s,r;const i=W(e);return i?(s=e,r=Ae):(s=e.get,r=e.set),new si(s,r,i||!r,n)}function As(e){var t;qe&&ct&&(e=J(e),Gr(ct,(t=e.dep)!=null?t:e.dep=Yr(()=>e.dep=void 0,e instanceof si?e:void 0)))}function Mt(e,t=4,n,s){e=J(e);const r=e.dep;r&&Xr(r,t)}function ge(e){return!!(e&&e.__v_isRef===!0)}function fe(e){return ii(e,!1)}function ri(e){return ii(e,!0)}function ii(e,t){return ge(e)?e:new sl(e,t)}class sl{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Ht(t)}get value(){return As(this),this._value}set value(t){const n=this.__v_isShallow||St(t)||dt(t);t=n?t:J(t),Ye(t,this._rawValue)&&(this._rawValue,this._rawValue=t,this._value=n?t:Ht(t),Mt(this,4))}}function oi(e){return ge(e)?e.value:e}const rl={get:(e,t,n)=>oi(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ge(r)&&!ge(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function li(e){return bt(e)?e:new Proxy(e,rl)}class il{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>As(this),()=>Mt(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function ol(e){return new il(e)}class ll{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Ho(J(this._object),this._key)}}class cl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function al(e,t,n){return ge(e)?e:W(e)?new cl(e):Z(e)&&arguments.length>1?fl(e,t,n):fe(e)}function fl(e,t,n){const s=e[t];return ge(s)?s:new ll(e,t,n)}/** -* @vue/runtime-core v3.4.37 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Ge(e,t,n,s){try{return s?e(...s):e()}catch(r){Sn(r,t,n)}}function Oe(e,t,n,s){if(W(e)){const r=Ge(e,t,n,s);return r&&Hr(r)&&r.catch(i=>{Sn(i,t,n)}),r}if(U(e)){const r=[];for(let i=0;i>>1,r=he[s],i=jt(r);iNe&&he.splice(t,1)}function pl(e){U(e)?wt.push(...e):(!ke||!ke.includes(e,e.allowRecurse?it+1:it))&&wt.push(e),ai()}function zs(e,t,n=$t?Ne+1:0){for(;njt(n)-jt(s));if(wt.length=0,ke){ke.push(...t);return}for(ke=t,it=0;ite.id==null?1/0:e.id,gl=(e,t)=>{const n=jt(e)-jt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function fi(e){is=!1,$t=!0,he.sort(gl);try{for(Ne=0;Ne{s._d&&ar(-1);const i=dn(t);let o;try{o=e(...r)}finally{dn(i),s._d&&ar(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Pe(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;o{e.isMounted=!0}),yi(()=>{e.isUnmounting=!0}),e}const Se=[Function,Array],ui={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Se,onEnter:Se,onAfterEnter:Se,onEnterCancelled:Se,onBeforeLeave:Se,onLeave:Se,onAfterLeave:Se,onLeaveCancelled:Se,onBeforeAppear:Se,onAppear:Se,onAfterAppear:Se,onAppearCancelled:Se},di=e=>{const t=e.subTree;return t.component?di(t.component):t},_l={name:"BaseTransition",props:ui,setup(e,{slots:t}){const n=In(),s=yl();return()=>{const r=t.default&&pi(t.default(),!0);if(!r||!r.length)return;let i=r[0];if(r.length>1){for(const m of r)if(m.type!==ye){i=m;break}}const o=J(e),{mode:l}=o;if(s.isLeaving)return Vn(i);const c=Js(i);if(!c)return Vn(i);let f=os(c,o,s,n,m=>f=m);hn(c,f);const d=n.subTree,h=d&&Js(d);if(h&&h.type!==ye&&!lt(c,h)&&di(n).type!==ye){const m=os(h,o,s,n);if(hn(h,m),l==="out-in"&&c.type!==ye)return s.isLeaving=!0,m.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Vn(i);l==="in-out"&&c.type!==ye&&(m.delayLeave=(C,O,M)=>{const B=hi(s,h);B[String(h.key)]=h,C[Ke]=()=>{O(),C[Ke]=void 0,delete f.delayedLeave},f.delayedLeave=M})}return i}}},bl=_l;function hi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function os(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:d,onEnterCancelled:h,onBeforeLeave:m,onLeave:C,onAfterLeave:O,onLeaveCancelled:M,onBeforeAppear:B,onAppear:k,onAfterAppear:G,onAppearCancelled:p}=t,y=String(e.key),I=hi(n,e),x=(L,_)=>{L&&Oe(L,s,9,_)},F=(L,_)=>{const N=_[1];x(L,_),U(L)?L.every(S=>S.length<=1)&&N():L.length<=1&&N()},$={mode:o,persisted:l,beforeEnter(L){let _=c;if(!n.isMounted)if(i)_=B||c;else return;L[Ke]&&L[Ke](!0);const N=I[y];N&<(e,N)&&N.el[Ke]&&N.el[Ke](),x(_,[L])},enter(L){let _=f,N=d,S=h;if(!n.isMounted)if(i)_=k||f,N=G||d,S=p||h;else return;let q=!1;const ee=L[zt]=ne=>{q||(q=!0,ne?x(S,[L]):x(N,[L]),$.delayedLeave&&$.delayedLeave(),L[zt]=void 0)};_?F(_,[L,ee]):ee()},leave(L,_){const N=String(e.key);if(L[zt]&&L[zt](!0),n.isUnmounting)return _();x(m,[L]);let S=!1;const q=L[Ke]=ee=>{S||(S=!0,_(),ee?x(M,[L]):x(O,[L]),L[Ke]=void 0,I[N]===e&&delete I[N])};I[N]=e,C?F(C,[L,q]):q()},clone(L){const _=os(L,t,n,s,r);return r&&r(_),_}};return $}function Vn(e){if(An(e))return e=ze(e),e.children=null,e}function Js(e){if(!An(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&W(n.default))return n.default()}}function hn(e,t){e.shapeFlag&6&&e.component?hn(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function pi(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader,An=e=>e.type.__isKeepAlive;function wl(e,t){mi(e,"a",t)}function vl(e,t){mi(e,"da",t)}function mi(e,t,n=ae){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(On(t,s,n),n){let r=n.parent;for(;r&&r.parent;)An(r.parent.vnode)&&El(s,t,n,r),r=r.parent}}function El(e,t,n,s){const r=On(t,e,s,!0);Rn(()=>{ms(s[t],r)},n)}function On(e,t,n=ae,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{Ze();const l=Bt(n),c=Oe(t,n,e,o);return l(),et(),c});return s?r.unshift(i):r.push(i),i}}const Ve=e=>(t,n=ae)=>{(!Pn||e==="sp")&&On(e,(...s)=>t(...s),n)},Cl=Ve("bm"),Tt=Ve("m"),Sl=Ve("bu"),xl=Ve("u"),yi=Ve("bum"),Rn=Ve("um"),Tl=Ve("sp"),Al=Ve("rtg"),Ol=Ve("rtc");function Rl(e,t=ae){On("ec",e,t)}const _i="components";function Ja(e,t){return wi(_i,e,!0,t)||e}const bi=Symbol.for("v-ndc");function Qa(e){return re(e)?wi(_i,e,!1)||e:e||bi}function wi(e,t,n=!0,s=!1){const r=pe||ae;if(r){const i=r.type;{const l=vc(i,!1);if(l&&(l===t||l===Le(t)||l===wn(Le(t))))return i}const o=Qs(r[e]||i[e],t)||Qs(r.appContext[e],t);return!o&&s?i:o}}function Qs(e,t){return e&&(e[t]||e[Le(t)]||e[wn(Le(t))])}function Za(e,t,n,s){let r;const i=n;if(U(e)||re(e)){r=new Array(e.length);for(let o=0,l=e.length;ot(o,l,void 0,i));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;lmn(t)?!(t.type===ye||t.type===be&&!vi(t.children)):!0)?e:null}function tf(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:rn(s)]=e[s];return n}const ls=e=>e?Xi(e)?Ns(e):ls(e.parent):null,It=le(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ls(e.parent),$root:e=>ls(e.root),$emit:e=>e.emit,$options:e=>Ls(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Rs(e.update)}),$nextTick:e=>e.n||(e.n=xn.bind(e.proxy)),$watch:e=>sc.bind(e)}),Dn=(e,t)=>e!==se&&!e.__isScriptSetup&&z(e,t),Ll={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const C=o[t];if(C!==void 0)switch(C){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Dn(s,t))return o[t]=1,s[t];if(r!==se&&z(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&z(f,t))return o[t]=3,i[t];if(n!==se&&z(n,t))return o[t]=4,n[t];cs&&(o[t]=0)}}const d=It[t];let h,m;if(d)return t==="$attrs"&&we(e.attrs,"get",""),d(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==se&&z(n,t))return o[t]=4,n[t];if(m=c.config.globalProperties,z(m,t))return m[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Dn(r,t)?(r[t]=n,!0):s!==se&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==se&&z(e,o)||Dn(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z(It,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function nf(){return Ml().slots}function Ml(){const e=In();return e.setupContext||(e.setupContext=zi(e))}function Zs(e){return U(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let cs=!0;function Il(e){const t=Ls(e),n=e.proxy,s=e.ctx;cs=!1,t.beforeCreate&&er(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:d,beforeMount:h,mounted:m,beforeUpdate:C,updated:O,activated:M,deactivated:B,beforeDestroy:k,beforeUnmount:G,destroyed:p,unmounted:y,render:I,renderTracked:x,renderTriggered:F,errorCaptured:$,serverPrefetch:L,expose:_,inheritAttrs:N,components:S,directives:q,filters:ee}=t;if(f&&Pl(f,s,null),o)for(const Y in o){const D=o[Y];W(D)&&(s[Y]=D.bind(n))}if(r){const Y=r.call(n,n);Z(Y)&&(e.data=En(Y))}if(cs=!0,i)for(const Y in i){const D=i[Y],ce=W(D)?D.bind(n,n):W(D.get)?D.get.bind(n,n):Ae,kt=!W(D)&&W(D.set)?D.set.bind(n):Ae,tt=ie({get:ce,set:kt});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Me=>tt.value=Me})}if(l)for(const Y in l)Ei(l[Y],s,n,Y);if(c){const Y=W(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(D=>{Vl(D,Y[D])})}d&&er(d,e,"c");function V(Y,D){U(D)?D.forEach(ce=>Y(ce.bind(n))):D&&Y(D.bind(n))}if(V(Cl,h),V(Tt,m),V(Sl,C),V(xl,O),V(wl,M),V(vl,B),V(Rl,$),V(Ol,x),V(Al,F),V(yi,G),V(Rn,y),V(Tl,L),U(_))if(_.length){const Y=e.exposed||(e.exposed={});_.forEach(D=>{Object.defineProperty(Y,D,{get:()=>n[D],set:ce=>n[D]=ce})})}else e.exposed||(e.exposed={});I&&e.render===Ae&&(e.render=I),N!=null&&(e.inheritAttrs=N),S&&(e.components=S),q&&(e.directives=q)}function Pl(e,t,n=Ae){U(e)&&(e=as(e));for(const s in e){const r=e[s];let i;Z(r)?"default"in r?i=Ct(r.from||s,r.default,!0):i=Ct(r.from||s):i=Ct(r),ge(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function er(e,t,n){Oe(U(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ei(e,t,n,s){const r=s.includes(".")?Vi(n,s):()=>n[s];if(re(e)){const i=t[e];W(i)&&Fe(r,i)}else if(W(e))Fe(r,e.bind(n));else if(Z(e))if(U(e))e.forEach(i=>Ei(i,t,n,s));else{const i=W(e.handler)?e.handler.bind(n):t[e.handler];W(i)&&Fe(r,i,e)}}function Ls(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>pn(c,f,o,!0)),pn(c,t,o)),Z(t)&&i.set(t,c),c}function pn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&pn(e,i,n,!0),r&&r.forEach(o=>pn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=Nl[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const Nl={data:tr,props:nr,emits:nr,methods:Lt,computed:Lt,beforeCreate:me,created:me,beforeMount:me,mounted:me,beforeUpdate:me,updated:me,beforeDestroy:me,beforeUnmount:me,destroyed:me,unmounted:me,activated:me,deactivated:me,errorCaptured:me,serverPrefetch:me,components:Lt,directives:Lt,watch:Hl,provide:tr,inject:Fl};function tr(e,t){return t?e?function(){return le(W(e)?e.call(this,this):e,W(t)?t.call(this,this):t)}:t:e}function Fl(e,t){return Lt(as(e),as(t))}function as(e){if(U(e)){const t={};for(let n=0;n1)return n&&W(t)?t.call(s&&s.proxy):t}}const Si={},xi=()=>Object.create(Si),Ti=e=>Object.getPrototypeOf(e)===Si;function Dl(e,t,n,s=!1){const r={},i=xi();e.propsDefaults=Object.create(null),Ai(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:tl(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Ul(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const d=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[m,C]=Oi(h,t,!0);le(o,m),C&&l.push(...C)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!c)return Z(e)&&s.set(e,mt),mt;if(U(i))for(let d=0;de[0]==="_"||e==="$stable",Ms=e=>U(e)?e.map(Te):[Te(e)],kl=(e,t,n)=>{if(t._n)return t;const s=ml((...r)=>Ms(t(...r)),n);return s._c=!1,s},Li=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Ri(r))continue;const i=e[r];if(W(i))t[r]=kl(r,i,s);else if(i!=null){const o=Ms(i);t[r]=()=>o}}},Mi=(e,t)=>{const n=Ms(t);e.slots.default=()=>n},Ii=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},Kl=(e,t,n)=>{const s=e.slots=xi();if(e.vnode.shapeFlag&32){const r=t._;r?(Ii(s,t,n),n&&Vr(s,"_",r,!0)):Li(t,s)}else t&&Mi(e,t)},Wl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=se;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:Ii(r,t,n):(i=!t.$stable,Li(t,r)),o=t}else t&&(Mi(e,t),o={default:1});if(i)for(const l in r)!Ri(l)&&o[l]==null&&delete r[l]};function gn(e,t,n,s,r=!1){if(U(e)){e.forEach((m,C)=>gn(m,t&&(U(t)?t[C]:t),n,s,r));return}if(vt(s)&&!r)return;const i=s.shapeFlag&4?Ns(s.component):s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,d=l.refs===se?l.refs={}:l.refs,h=l.setupState;if(f!=null&&f!==c&&(re(f)?(d[f]=null,z(h,f)&&(h[f]=null)):ge(f)&&(f.value=null)),W(c))Ge(c,l,12,[o,d]);else{const m=re(c),C=ge(c);if(m||C){const O=()=>{if(e.f){const M=m?z(h,c)?h[c]:d[c]:c.value;r?U(M)&&ms(M,i):U(M)?M.includes(i)||M.push(i):m?(d[c]=[i],z(h,c)&&(h[c]=d[c])):(c.value=[i],e.k&&(d[e.k]=c.value))}else m?(d[c]=o,z(h,c)&&(h[c]=o)):C&&(c.value=o,e.k&&(d[e.k]=o))};o?(O.id=-1,_e(O,n)):O()}}}const Pi=Symbol("_vte"),ql=e=>e.__isTeleport,Pt=e=>e&&(e.disabled||e.disabled===""),rr=e=>typeof SVGElement<"u"&&e instanceof SVGElement,ir=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,us=(e,t)=>{const n=e&&e.to;return re(n)?t?t(n):null:n},Gl={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:d,pc:h,pbc:m,o:{insert:C,querySelector:O,createText:M,createComment:B}}=f,k=Pt(t.props);let{shapeFlag:G,children:p,dynamicChildren:y}=t;if(e==null){const I=t.el=M(""),x=t.anchor=M("");C(I,n,s),C(x,n,s);const F=t.target=us(t.props,O),$=Fi(F,t,M,C);F&&(o==="svg"||rr(F)?o="svg":(o==="mathml"||ir(F))&&(o="mathml"));const L=(_,N)=>{G&16&&d(p,_,N,r,i,o,l,c)};k?L(n,x):F&&L(F,$)}else{t.el=e.el,t.targetStart=e.targetStart;const I=t.anchor=e.anchor,x=t.target=e.target,F=t.targetAnchor=e.targetAnchor,$=Pt(e.props),L=$?n:x,_=$?I:F;if(o==="svg"||rr(x)?o="svg":(o==="mathml"||ir(x))&&(o="mathml"),y?(m(e.dynamicChildren,y,L,r,i,o,l),Is(e,t,!0)):c||h(e,t,L,_,r,i,o,l,!1),k)$?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Jt(t,n,I,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const N=t.target=us(t.props,O);N&&Jt(t,N,null,f,0)}else $&&Jt(t,x,F,f,1)}Ni(t)},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:d,target:h,props:m}=e;if(h&&(r(f),r(d)),i&&r(c),o&16){const C=i||!Pt(m);for(let O=0;O{or||(console.error("Hydration completed but contains mismatches."),or=!0)},Yl=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",zl=e=>e.namespaceURI.includes("MathML"),Qt=e=>{if(Yl(e))return"svg";if(zl(e))return"mathml"},Zt=e=>e.nodeType===8;function Jl(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,d=(p,y)=>{if(!y.hasChildNodes()){n(null,p,y),un(),y._vnode=p;return}h(y.firstChild,p,null,null,null),un(),y._vnode=p},h=(p,y,I,x,F,$=!1)=>{$=$||!!y.dynamicChildren;const L=Zt(p)&&p.data==="[",_=()=>M(p,y,I,x,F,L),{type:N,ref:S,shapeFlag:q,patchFlag:ee}=y;let ne=p.nodeType;y.el=p,ee===-2&&($=!1,y.dynamicChildren=null);let V=null;switch(N){case ft:ne!==3?y.children===""?(c(y.el=r(""),o(p),p),V=p):V=_():(p.data!==y.children&&(gt(),p.data=y.children),V=i(p));break;case ye:G(p)?(V=i(p),k(y.el=p.content.firstChild,p,I)):ne!==8||L?V=_():V=i(p);break;case Nt:if(L&&(p=i(p),ne=p.nodeType),ne===1||ne===3){V=p;const Y=!y.children.length;for(let D=0;D{$=$||!!y.dynamicChildren;const{type:L,props:_,patchFlag:N,shapeFlag:S,dirs:q,transition:ee}=y,ne=L==="input"||L==="option";if(ne||N!==-1){q&&Pe(y,null,I,"created");let V=!1;if(G(p)){V=Hi(x,ee)&&I&&I.vnode.props&&I.vnode.props.appear;const D=p.content.firstChild;V&&ee.beforeEnter(D),k(D,p,I),y.el=p=D}if(S&16&&!(_&&(_.innerHTML||_.textContent))){let D=C(p.firstChild,y,p,I,x,F,$);for(;D;){gt();const ce=D;D=D.nextSibling,l(ce)}}else S&8&&p.textContent!==y.children&&(gt(),p.textContent=y.children);if(_){if(ne||!$||N&48){const D=p.tagName.includes("-");for(const ce in _)(ne&&(ce.endsWith("value")||ce==="indeterminate")||Ut(ce)&&!_t(ce)||ce[0]==="."||D)&&s(p,ce,null,_[ce],void 0,I)}else if(_.onClick)s(p,"onClick",null,_.onClick,void 0,I);else if(N&4&&bt(_.style))for(const D in _.style)_.style[D]}let Y;(Y=_&&_.onVnodeBeforeMount)&&xe(Y,I,y),q&&Pe(y,null,I,"beforeMount"),((Y=_&&_.onVnodeMounted)||q||V)&&Ui(()=>{Y&&xe(Y,I,y),V&&ee.enter(p),q&&Pe(y,null,I,"mounted")},x)}return p.nextSibling},C=(p,y,I,x,F,$,L)=>{L=L||!!y.dynamicChildren;const _=y.children,N=_.length;for(let S=0;S{const{slotScopeIds:L}=y;L&&(F=F?F.concat(L):L);const _=o(p),N=C(i(p),y,_,I,x,F,$);return N&&Zt(N)&&N.data==="]"?i(y.anchor=N):(gt(),c(y.anchor=f("]"),_,N),N)},M=(p,y,I,x,F,$)=>{if(gt(),y.el=null,$){const N=B(p);for(;;){const S=i(p);if(S&&S!==N)l(S);else break}}const L=i(p),_=o(p);return l(p),n(null,y,_,L,I,x,Qt(_),F),L},B=(p,y="[",I="]")=>{let x=0;for(;p;)if(p=i(p),p&&Zt(p)&&(p.data===y&&x++,p.data===I)){if(x===0)return i(p);x--}return p},k=(p,y,I)=>{const x=y.parentNode;x&&x.replaceChild(p,y);let F=I;for(;F;)F.vnode.el===y&&(F.vnode.el=F.subTree.el=p),F=F.parent},G=p=>p.nodeType===1&&p.tagName.toLowerCase()==="template";return[d,h]}const _e=Ui;function Ql(e){return Zl(e,Jl)}function Zl(e,t){const n=Dr();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:d,parentNode:h,nextSibling:m,setScopeId:C=Ae,insertStaticContent:O}=e,M=(a,u,g,v=null,b=null,E=null,R=void 0,T=null,A=!!u.dynamicChildren)=>{if(a===u)return;a&&!lt(a,u)&&(v=Kt(a),Me(a,b,E,!0),a=null),u.patchFlag===-2&&(A=!1,u.dynamicChildren=null);const{type:w,ref:P,shapeFlag:j}=u;switch(w){case ft:B(a,u,g,v);break;case ye:k(a,u,g,v);break;case Nt:a==null&&G(u,g,v,R);break;case be:S(a,u,g,v,b,E,R,T,A);break;default:j&1?I(a,u,g,v,b,E,R,T,A):j&6?q(a,u,g,v,b,E,R,T,A):(j&64||j&128)&&w.process(a,u,g,v,b,E,R,T,A,ht)}P!=null&&b&&gn(P,a&&a.ref,E,u||a,!u)},B=(a,u,g,v)=>{if(a==null)s(u.el=l(u.children),g,v);else{const b=u.el=a.el;u.children!==a.children&&f(b,u.children)}},k=(a,u,g,v)=>{a==null?s(u.el=c(u.children||""),g,v):u.el=a.el},G=(a,u,g,v)=>{[a.el,a.anchor]=O(a.children,u,g,v,a.el,a.anchor)},p=({el:a,anchor:u},g,v)=>{let b;for(;a&&a!==u;)b=m(a),s(a,g,v),a=b;s(u,g,v)},y=({el:a,anchor:u})=>{let g;for(;a&&a!==u;)g=m(a),r(a),a=g;r(u)},I=(a,u,g,v,b,E,R,T,A)=>{u.type==="svg"?R="svg":u.type==="math"&&(R="mathml"),a==null?x(u,g,v,b,E,R,T,A):L(a,u,b,E,R,T,A)},x=(a,u,g,v,b,E,R,T)=>{let A,w;const{props:P,shapeFlag:j,transition:H,dirs:K}=a;if(A=a.el=o(a.type,E,P&&P.is,P),j&8?d(A,a.children):j&16&&$(a.children,A,null,v,b,Un(a,E),R,T),K&&Pe(a,null,v,"created"),F(A,a,a.scopeId,R,v),P){for(const te in P)te!=="value"&&!_t(te)&&i(A,te,null,P[te],E,v);"value"in P&&i(A,"value",null,P.value,E),(w=P.onVnodeBeforeMount)&&xe(w,v,a)}K&&Pe(a,null,v,"beforeMount");const X=Hi(b,H);X&&H.beforeEnter(A),s(A,u,g),((w=P&&P.onVnodeMounted)||X||K)&&_e(()=>{w&&xe(w,v,a),X&&H.enter(A),K&&Pe(a,null,v,"mounted")},b)},F=(a,u,g,v,b)=>{if(g&&C(a,g),v)for(let E=0;E{for(let w=A;w{const T=u.el=a.el;let{patchFlag:A,dynamicChildren:w,dirs:P}=u;A|=a.patchFlag&16;const j=a.props||se,H=u.props||se;let K;if(g&&nt(g,!1),(K=H.onVnodeBeforeUpdate)&&xe(K,g,u,a),P&&Pe(u,a,g,"beforeUpdate"),g&&nt(g,!0),(j.innerHTML&&H.innerHTML==null||j.textContent&&H.textContent==null)&&d(T,""),w?_(a.dynamicChildren,w,T,g,v,Un(u,b),E):R||D(a,u,T,null,g,v,Un(u,b),E,!1),A>0){if(A&16)N(T,j,H,g,b);else if(A&2&&j.class!==H.class&&i(T,"class",null,H.class,b),A&4&&i(T,"style",j.style,H.style,b),A&8){const X=u.dynamicProps;for(let te=0;te{K&&xe(K,g,u,a),P&&Pe(u,a,g,"updated")},v)},_=(a,u,g,v,b,E,R)=>{for(let T=0;T{if(u!==g){if(u!==se)for(const E in u)!_t(E)&&!(E in g)&&i(a,E,u[E],null,b,v);for(const E in g){if(_t(E))continue;const R=g[E],T=u[E];R!==T&&E!=="value"&&i(a,E,T,R,b,v)}"value"in g&&i(a,"value",u.value,g.value,b)}},S=(a,u,g,v,b,E,R,T,A)=>{const w=u.el=a?a.el:l(""),P=u.anchor=a?a.anchor:l("");let{patchFlag:j,dynamicChildren:H,slotScopeIds:K}=u;K&&(T=T?T.concat(K):K),a==null?(s(w,g,v),s(P,g,v),$(u.children||[],g,P,b,E,R,T,A)):j>0&&j&64&&H&&a.dynamicChildren?(_(a.dynamicChildren,H,g,b,E,R,T),(u.key!=null||b&&u===b.subTree)&&Is(a,u,!0)):D(a,u,g,P,b,E,R,T,A)},q=(a,u,g,v,b,E,R,T,A)=>{u.slotScopeIds=T,a==null?u.shapeFlag&512?b.ctx.activate(u,g,v,R,A):ee(u,g,v,b,E,R,A):ne(a,u,A)},ee=(a,u,g,v,b,E,R)=>{const T=a.component=yc(a,v,b);if(An(a)&&(T.ctx.renderer=ht),_c(T,!1,R),T.asyncDep){if(b&&b.registerDep(T,V,R),!a.el){const A=T.subTree=ue(ye);k(null,A,u,g)}}else V(T,a,u,g,b,E,R)},ne=(a,u,g)=>{const v=u.component=a.component;if(cc(a,u,g))if(v.asyncDep&&!v.asyncResolved){Y(v,u,g);return}else v.next=u,hl(v.update),v.effect.dirty=!0,v.update();else u.el=a.el,v.vnode=u},V=(a,u,g,v,b,E,R)=>{const T=()=>{if(a.isMounted){let{next:P,bu:j,u:H,parent:K,vnode:X}=a;{const pt=$i(a);if(pt){P&&(P.el=X.el,Y(a,P,R)),pt.asyncDep.then(()=>{a.isUnmounted||T()});return}}let te=P,Q;nt(a,!1),P?(P.el=X.el,Y(a,P,R)):P=X,j&&$n(j),(Q=P.props&&P.props.onVnodeBeforeUpdate)&&xe(Q,K,P,X),nt(a,!0);const oe=Bn(a),Re=a.subTree;a.subTree=oe,M(Re,oe,h(Re.el),Kt(Re),a,b,E),P.el=oe.el,te===null&&ac(a,oe.el),H&&_e(H,b),(Q=P.props&&P.props.onVnodeUpdated)&&_e(()=>xe(Q,K,P,X),b)}else{let P;const{el:j,props:H}=u,{bm:K,m:X,parent:te}=a,Q=vt(u);if(nt(a,!1),K&&$n(K),!Q&&(P=H&&H.onVnodeBeforeMount)&&xe(P,te,u),nt(a,!0),j&&Hn){const oe=()=>{a.subTree=Bn(a),Hn(j,a.subTree,a,b,null)};Q?u.type.__asyncLoader().then(()=>!a.isUnmounted&&oe()):oe()}else{const oe=a.subTree=Bn(a);M(null,oe,g,v,a,b,E),u.el=oe.el}if(X&&_e(X,b),!Q&&(P=H&&H.onVnodeMounted)){const oe=u;_e(()=>xe(P,te,oe),b)}(u.shapeFlag&256||te&&vt(te.vnode)&&te.vnode.shapeFlag&256)&&a.a&&_e(a.a,b),a.isMounted=!0,u=g=v=null}},A=a.effect=new ws(T,Ae,()=>Rs(w),a.scope),w=a.update=()=>{A.dirty&&A.run()};w.i=a,w.id=a.uid,nt(a,!0),w()},Y=(a,u,g)=>{u.component=a;const v=a.vnode.props;a.vnode=u,a.next=null,Ul(a,u.props,v,g),Wl(a,u.children,g),Ze(),zs(a),et()},D=(a,u,g,v,b,E,R,T,A=!1)=>{const w=a&&a.children,P=a?a.shapeFlag:0,j=u.children,{patchFlag:H,shapeFlag:K}=u;if(H>0){if(H&128){kt(w,j,g,v,b,E,R,T,A);return}else if(H&256){ce(w,j,g,v,b,E,R,T,A);return}}K&8?(P&16&&At(w,b,E),j!==w&&d(g,j)):P&16?K&16?kt(w,j,g,v,b,E,R,T,A):At(w,b,E,!0):(P&8&&d(g,""),K&16&&$(j,g,v,b,E,R,T,A))},ce=(a,u,g,v,b,E,R,T,A)=>{a=a||mt,u=u||mt;const w=a.length,P=u.length,j=Math.min(w,P);let H;for(H=0;HP?At(a,b,E,!0,!1,j):$(u,g,v,b,E,R,T,A,j)},kt=(a,u,g,v,b,E,R,T,A)=>{let w=0;const P=u.length;let j=a.length-1,H=P-1;for(;w<=j&&w<=H;){const K=a[w],X=u[w]=A?We(u[w]):Te(u[w]);if(lt(K,X))M(K,X,g,null,b,E,R,T,A);else break;w++}for(;w<=j&&w<=H;){const K=a[j],X=u[H]=A?We(u[H]):Te(u[H]);if(lt(K,X))M(K,X,g,null,b,E,R,T,A);else break;j--,H--}if(w>j){if(w<=H){const K=H+1,X=KH)for(;w<=j;)Me(a[w],b,E,!0),w++;else{const K=w,X=w,te=new Map;for(w=X;w<=H;w++){const ve=u[w]=A?We(u[w]):Te(u[w]);ve.key!=null&&te.set(ve.key,w)}let Q,oe=0;const Re=H-X+1;let pt=!1,Vs=0;const Ot=new Array(Re);for(w=0;w=Re){Me(ve,b,E,!0);continue}let Ie;if(ve.key!=null)Ie=te.get(ve.key);else for(Q=X;Q<=H;Q++)if(Ot[Q-X]===0&<(ve,u[Q])){Ie=Q;break}Ie===void 0?Me(ve,b,E,!0):(Ot[Ie-X]=w+1,Ie>=Vs?Vs=Ie:pt=!0,M(ve,u[Ie],g,null,b,E,R,T,A),oe++)}const Ds=pt?ec(Ot):mt;for(Q=Ds.length-1,w=Re-1;w>=0;w--){const ve=X+w,Ie=u[ve],Us=ve+1{const{el:E,type:R,transition:T,children:A,shapeFlag:w}=a;if(w&6){tt(a.component.subTree,u,g,v);return}if(w&128){a.suspense.move(u,g,v);return}if(w&64){R.move(a,u,g,ht);return}if(R===be){s(E,u,g);for(let j=0;jT.enter(E),b);else{const{leave:j,delayLeave:H,afterLeave:K}=T,X=()=>s(E,u,g),te=()=>{j(E,()=>{X(),K&&K()})};H?H(E,X,te):te()}else s(E,u,g)},Me=(a,u,g,v=!1,b=!1)=>{const{type:E,props:R,ref:T,children:A,dynamicChildren:w,shapeFlag:P,patchFlag:j,dirs:H,cacheIndex:K}=a;if(j===-2&&(b=!1),T!=null&&gn(T,null,g,a,!0),K!=null&&(u.renderCache[K]=void 0),P&256){u.ctx.deactivate(a);return}const X=P&1&&H,te=!vt(a);let Q;if(te&&(Q=R&&R.onVnodeBeforeUnmount)&&xe(Q,u,a),P&6)yo(a.component,g,v);else{if(P&128){a.suspense.unmount(g,v);return}X&&Pe(a,null,u,"beforeUnmount"),P&64?a.type.remove(a,u,g,ht,v):w&&!w.hasOnce&&(E!==be||j>0&&j&64)?At(w,u,g,!1,!0):(E===be&&j&384||!b&&P&16)&&At(A,u,g),v&&$s(a)}(te&&(Q=R&&R.onVnodeUnmounted)||X)&&_e(()=>{Q&&xe(Q,u,a),X&&Pe(a,null,u,"unmounted")},g)},$s=a=>{const{type:u,el:g,anchor:v,transition:b}=a;if(u===be){mo(g,v);return}if(u===Nt){y(a);return}const E=()=>{r(g),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(a.shapeFlag&1&&b&&!b.persisted){const{leave:R,delayLeave:T}=b,A=()=>R(g,E);T?T(a.el,E,A):A()}else E()},mo=(a,u)=>{let g;for(;a!==u;)g=m(a),r(a),a=g;r(u)},yo=(a,u,g)=>{const{bum:v,scope:b,update:E,subTree:R,um:T,m:A,a:w}=a;lr(A),lr(w),v&&$n(v),b.stop(),E&&(E.active=!1,Me(R,a,u,g)),T&&_e(T,u),_e(()=>{a.isUnmounted=!0},u),u&&u.pendingBranch&&!u.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===u.pendingId&&(u.deps--,u.deps===0&&u.resolve())},At=(a,u,g,v=!1,b=!1,E=0)=>{for(let R=E;R{if(a.shapeFlag&6)return Kt(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const u=m(a.anchor||a.el),g=u&&u[Pi];return g?m(g):u};let Nn=!1;const js=(a,u,g)=>{a==null?u._vnode&&Me(u._vnode,null,null,!0):M(u._vnode||null,a,u,null,null,null,g),u._vnode=a,Nn||(Nn=!0,zs(),un(),Nn=!1)},ht={p:M,um:Me,m:tt,r:$s,mt:ee,mc:$,pc:D,pbc:_,n:Kt,o:e};let Fn,Hn;return t&&([Fn,Hn]=t(ht)),{render:js,hydrate:Fn,createApp:jl(js,Fn)}}function Un({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function nt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Hi(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Is(e,t,n=!1){const s=e.children,r=t.children;if(U(s)&&U(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function $i(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:$i(t)}function lr(e){if(e)for(let t=0;tCt(tc);function ji(e,t){return Ln(e,null,t)}function rf(e,t){return Ln(e,null,{flush:"post"})}const en={};function Fe(e,t,n){return Ln(e,t,n)}function Ln(e,t,{immediate:n,deep:s,flush:r,once:i,onTrack:o,onTrigger:l}=se){if(t&&i){const x=t;t=(...F)=>{x(...F),I()}}const c=ae,f=x=>s===!0?x:ot(x,s===!1?1:void 0);let d,h=!1,m=!1;if(ge(e)?(d=()=>e.value,h=St(e)):bt(e)?(d=()=>f(e),h=!0):U(e)?(m=!0,h=e.some(x=>bt(x)||St(x)),d=()=>e.map(x=>{if(ge(x))return x.value;if(bt(x))return f(x);if(W(x))return Ge(x,c,2)})):W(e)?t?d=()=>Ge(e,c,2):d=()=>(C&&C(),Oe(e,c,3,[O])):d=Ae,t&&s){const x=d;d=()=>ot(x())}let C,O=x=>{C=p.onStop=()=>{Ge(x,c,4),C=p.onStop=void 0}},M;if(Pn)if(O=Ae,t?n&&Oe(t,c,3,[d(),m?[]:void 0,O]):d(),r==="sync"){const x=nc();M=x.__watcherHandles||(x.__watcherHandles=[])}else return Ae;let B=m?new Array(e.length).fill(en):en;const k=()=>{if(!(!p.active||!p.dirty))if(t){const x=p.run();(s||h||(m?x.some((F,$)=>Ye(F,B[$])):Ye(x,B)))&&(C&&C(),Oe(t,c,3,[x,B===en?void 0:m&&B[0]===en?[]:B,O]),B=x)}else p.run()};k.allowRecurse=!!t;let G;r==="sync"?G=k:r==="post"?G=()=>_e(k,c&&c.suspense):(k.pre=!0,c&&(k.id=c.uid),G=()=>Rs(k));const p=new ws(d,Ae,G),y=Kr(),I=()=>{p.stop(),y&&ms(y.effects,p)};return t?n?k():B=p.run():r==="post"?_e(p.run.bind(p),c&&c.suspense):p.run(),M&&M.push(I),I}function sc(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?Vi(s,e):()=>s[e]:e.bind(s,s);let i;W(t)?i=t:(i=t.handler,n=t);const o=Bt(this),l=Ln(r,i.bind(s),n);return o(),l}function Vi(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{ot(s,t,n)});else if(jr(e)){for(const s in e)ot(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&ot(e[s],t,n)}return e}const rc=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${Qe(t)}Modifiers`];function ic(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||se;let r=n;const i=t.startsWith("update:"),o=i&&rc(s,t.slice(7));o&&(o.trim&&(r=n.map(d=>re(d)?d.trim():d)),o.number&&(r=n.map(Co)));let l,c=s[l=rn(t)]||s[l=rn(Le(t))];!c&&i&&(c=s[l=rn(Qe(t))]),c&&Oe(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Oe(f,e,6,r)}}function Di(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!W(e)){const c=f=>{const d=Di(f,t,!0);d&&(l=!0,le(o,d))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(Z(e)&&s.set(e,null),null):(U(i)?i.forEach(c=>o[c]=null):le(o,i),Z(e)&&s.set(e,o),o)}function Mn(e,t){return!e||!Ut(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,Qe(t))||z(e,t))}function Bn(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:d,props:h,data:m,setupState:C,ctx:O,inheritAttrs:M}=e,B=dn(e);let k,G;try{if(n.shapeFlag&4){const y=r||s,I=y;k=Te(f.call(I,y,d,h,C,m,O)),G=l}else{const y=t;k=Te(y.length>1?y(h,{attrs:l,slots:o,emit:c}):y(h,null)),G=t.props?l:oc(l)}}catch(y){Ft.length=0,Sn(y,e,1),k=ue(ye)}let p=k;if(G&&M!==!1){const y=Object.keys(G),{shapeFlag:I}=p;y.length&&I&7&&(i&&y.some(gs)&&(G=lc(G,i)),p=ze(p,G,!1,!0))}return n.dirs&&(p=ze(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&(p.transition=n.transition),k=p,dn(B),k}const oc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Ut(n))&&((t||(t={}))[n]=e[n]);return t},lc=(e,t)=>{const n={};for(const s in e)(!gs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function cc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?cr(s,o,f):!!o;if(c&8){const d=t.dynamicProps;for(let h=0;he.__isSuspense;function Ui(e,t){t&&t.pendingBranch?U(e)?t.effects.push(...e):t.effects.push(e):pl(e)}const be=Symbol.for("v-fgt"),ft=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Nt=Symbol.for("v-stc"),Ft=[];let Ce=null;function Bi(e=!1){Ft.push(Ce=e?null:[])}function uc(){Ft.pop(),Ce=Ft[Ft.length-1]||null}let Vt=1;function ar(e){Vt+=e,e<0&&Ce&&(Ce.hasOnce=!0)}function ki(e){return e.dynamicChildren=Vt>0?Ce||mt:null,uc(),Vt>0&&Ce&&Ce.push(e),e}function of(e,t,n,s,r,i){return ki(qi(e,t,n,s,r,i,!0))}function Ki(e,t,n,s,r){return ki(ue(e,t,n,s,r,!0))}function mn(e){return e?e.__v_isVNode===!0:!1}function lt(e,t){return e.type===t.type&&e.key===t.key}const Wi=({key:e})=>e??null,ln=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||ge(e)||W(e)?{i:pe,r:e,k:t,f:!!n}:e:null);function qi(e,t=null,n=null,s=0,r=null,i=e===be?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Wi(t),ref:t&&ln(t),scopeId:Tn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:pe};return l?(Ps(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Vt>0&&!o&&Ce&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ce.push(c),c}const ue=dc;function dc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===bi)&&(e=ye),mn(e)){const l=ze(e,t,!0);return n&&Ps(l,n),Vt>0&&!i&&Ce&&(l.shapeFlag&6?Ce[Ce.indexOf(e)]=l:Ce.push(l)),l.patchFlag=-2,l}if(Ec(e)&&(e=e.__vccOpts),t){t=hc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=bs(l)),Z(c)&&(ni(c)&&!U(c)&&(c=le({},c)),t.style=_s(c))}const o=re(e)?1:fc(e)?128:ql(e)?64:Z(e)?4:W(e)?2:0;return qi(e,t,n,s,r,o,i,!0)}function hc(e){return e?ni(e)||Ti(e)?le({},e):e:null}function ze(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?pc(r||{},t):r,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&Wi(f),ref:t&&t.ref?n&&i?U(i)?i.concat(ln(t)):[i,ln(t)]:ln(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==be?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ze(e.ssContent),ssFallback:e.ssFallback&&ze(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&hn(d,c.clone(d)),d}function Gi(e=" ",t=0){return ue(ft,null,e,t)}function lf(e,t){const n=ue(Nt,null,e);return n.staticCount=t,n}function cf(e="",t=!1){return t?(Bi(),Ki(ye,null,e)):ue(ye,null,e)}function Te(e){return e==null||typeof e=="boolean"?ue(ye):U(e)?ue(be,null,e.slice()):typeof e=="object"?We(e):ue(ft,null,String(e))}function We(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ze(e)}function Ps(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(U(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ps(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Ti(t)?t._ctx=pe:r===3&&pe&&(pe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else W(t)?(t={default:t,_ctx:pe},n=32):(t=String(t),s&64?(n=16,t=[Gi(t)]):n=8);e.children=t,e.shapeFlag|=n}function pc(...e){const t={};for(let n=0;nae||pe;let yn,ds;{const e=Dr(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};yn=t("__VUE_INSTANCE_SETTERS__",n=>ae=n),ds=t("__VUE_SSR_SETTERS__",n=>Pn=n)}const Bt=e=>{const t=ae;return yn(e),e.scope.on(),()=>{e.scope.off(),yn(t)}},fr=()=>{ae&&ae.scope.off(),yn(null)};function Xi(e){return e.vnode.shapeFlag&4}let Pn=!1;function _c(e,t=!1,n=!1){t&&ds(t);const{props:s,children:r}=e.vnode,i=Xi(e);Dl(e,s,i,t),Kl(e,r,n);const o=i?bc(e,t):void 0;return t&&ds(!1),o}function bc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Ll);const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?zi(e):null,i=Bt(e);Ze();const o=Ge(s,e,0,[e.props,r]);if(et(),i(),Hr(o)){if(o.then(fr,fr),t)return o.then(l=>{ur(e,l,t)}).catch(l=>{Sn(l,e,0)});e.asyncDep=o}else ur(e,o,t)}else Yi(e,t)}function ur(e,t,n){W(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=li(t)),Yi(e,n)}let dr;function Yi(e,t,n){const s=e.type;if(!e.render){if(!t&&dr&&!s.render){const r=s.template||Ls(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=le(le({isCustomElement:i,delimiters:l},o),c);s.render=dr(r,f)}}e.render=s.render||Ae}{const r=Bt(e);Ze();try{Il(e)}finally{et(),r()}}}const wc={get(e,t){return we(e,"get",""),e[t]}};function zi(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,wc),slots:e.slots,emit:e.emit,expose:t}}function Ns(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(li(on(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in It)return It[n](e)},has(t,n){return n in t||n in It}})):e.proxy}function vc(e,t=!0){return W(e)?e.displayName||e.name:e.name||t&&e.__name}function Ec(e){return W(e)&&"__vccOpts"in e}const ie=(e,t)=>nl(e,t,Pn);function hs(e,t,n){const s=arguments.length;return s===2?Z(t)&&!U(t)?mn(t)?ue(e,null,[t]):ue(e,t):ue(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&mn(n)&&(n=[n]),ue(e,t,n))}const Cc="3.4.37";/** -* @vue/runtime-dom v3.4.37 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const Sc="http://www.w3.org/2000/svg",xc="http://www.w3.org/1998/Math/MathML",He=typeof document<"u"?document:null,hr=He&&He.createElement("template"),Tc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?He.createElementNS(Sc,e):t==="mathml"?He.createElementNS(xc,e):n?He.createElement(e,{is:n}):He.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>He.createTextNode(e),createComment:e=>He.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>He.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{hr.innerHTML=s==="svg"?`${e}`:s==="mathml"?`${e}`:e;const l=hr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ue="transition",Rt="animation",Dt=Symbol("_vtc"),Ji=(e,{slots:t})=>hs(bl,Ac(e),t);Ji.displayName="Transition";const Qi={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Ji.props=le({},ui,Qi);const st=(e,t=[])=>{U(e)?e.forEach(n=>n(...t)):e&&e(...t)},pr=e=>e?U(e)?e.some(t=>t.length>1):e.length>1:!1;function Ac(e){const t={};for(const S in e)S in Qi||(t[S]=e[S]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:d=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:C=`${n}-leave-to`}=e,O=Oc(r),M=O&&O[0],B=O&&O[1],{onBeforeEnter:k,onEnter:G,onEnterCancelled:p,onLeave:y,onLeaveCancelled:I,onBeforeAppear:x=k,onAppear:F=G,onAppearCancelled:$=p}=t,L=(S,q,ee)=>{rt(S,q?d:l),rt(S,q?f:o),ee&&ee()},_=(S,q)=>{S._isLeaving=!1,rt(S,h),rt(S,C),rt(S,m),q&&q()},N=S=>(q,ee)=>{const ne=S?F:G,V=()=>L(q,S,ee);st(ne,[q,V]),gr(()=>{rt(q,S?c:i),Be(q,S?d:l),pr(ne)||mr(q,s,M,V)})};return le(t,{onBeforeEnter(S){st(k,[S]),Be(S,i),Be(S,o)},onBeforeAppear(S){st(x,[S]),Be(S,c),Be(S,f)},onEnter:N(!1),onAppear:N(!0),onLeave(S,q){S._isLeaving=!0;const ee=()=>_(S,q);Be(S,h),Be(S,m),Mc(),gr(()=>{S._isLeaving&&(rt(S,h),Be(S,C),pr(y)||mr(S,s,B,ee))}),st(y,[S,ee])},onEnterCancelled(S){L(S,!1),st(p,[S])},onAppearCancelled(S){L(S,!0),st($,[S])},onLeaveCancelled(S){_(S),st(I,[S])}})}function Oc(e){if(e==null)return null;if(Z(e))return[kn(e.enter),kn(e.leave)];{const t=kn(e);return[t,t]}}function kn(e){return So(e)}function Be(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Dt]||(e[Dt]=new Set)).add(t)}function rt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Dt];n&&(n.delete(t),n.size||(e[Dt]=void 0))}function gr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Rc=0;function mr(e,t,n,s){const r=e._endId=++Rc,i=()=>{r===e._endId&&s()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=Lc(e,t);if(!o)return s();const f=o+"end";let d=0;const h=()=>{e.removeEventListener(f,m),i()},m=C=>{C.target===e&&++d>=c&&h()};setTimeout(()=>{d(n[O]||"").split(", "),r=s(`${Ue}Delay`),i=s(`${Ue}Duration`),o=yr(r,i),l=s(`${Rt}Delay`),c=s(`${Rt}Duration`),f=yr(l,c);let d=null,h=0,m=0;t===Ue?o>0&&(d=Ue,h=o,m=i.length):t===Rt?f>0&&(d=Rt,h=f,m=c.length):(h=Math.max(o,f),d=h>0?o>f?Ue:Rt:null,m=d?d===Ue?i.length:c.length:0);const C=d===Ue&&/\b(transform|all)(,|$)/.test(s(`${Ue}Property`).toString());return{type:d,timeout:h,propCount:m,hasTransform:C}}function yr(e,t){for(;e.length_r(n)+_r(e[s])))}function _r(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Mc(){return document.body.offsetHeight}function Ic(e,t,n){const s=e[Dt];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const br=Symbol("_vod"),Pc=Symbol("_vsh"),Nc=Symbol(""),Fc=/(^|;)\s*display\s*:/;function Hc(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&cn(s,l,"")}else for(const o in t)n[o]==null&&cn(s,o,"");for(const o in n)o==="display"&&(i=!0),cn(s,o,n[o])}else if(r){if(t!==n){const o=s[Nc];o&&(n+=";"+o),s.cssText=n,i=Fc.test(n)}}else t&&e.removeAttribute("style");br in e&&(e[br]=i?s.display:"",e[Pc]&&(s.display="none"))}const wr=/\s*!important$/;function cn(e,t,n){if(U(n))n.forEach(s=>cn(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=$c(e,t);wr.test(n)?e.setProperty(Qe(s),n.replace(wr,""),"important"):e[s]=n}}const vr=["Webkit","Moz","ms"],Kn={};function $c(e,t){const n=Kn[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return Kn[t]=s;s=wn(s);for(let r=0;rWn||(kc.then(()=>Wn=0),Wn=Date.now());function Wc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Oe(qc(s,n.value),t,5,[s])};return n.value=e,n.attached=Kc(),n}function qc(e,t){if(U(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Tr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Gc=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?Ic(e,s,o):t==="style"?Hc(e,n,s):Ut(t)?gs(t)||Uc(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Xc(e,t,s,o))?(jc(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Cr(e,t,s,o,i,t!=="value")):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Cr(e,t,s,o))};function Xc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Tr(t)&&W(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Tr(t)&&re(n)?!1:t in e}const Yc=["ctrl","shift","alt","meta"],zc={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Yc.some(n=>e[`${n}Key`]&&!t.includes(n))},af=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=Qe(r.key);if(t.some(o=>o===i||Jc[o]===i))return e(r)})},Qc=le({patchProp:Gc},Tc);let qn,Ar=!1;function Zc(){return qn=Ar?qn:Ql(Qc),Ar=!0,qn}const uf=(...e)=>{const t=Zc().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=ta(s);if(r)return n(r,!0,ea(r))},t};function ea(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ta(e){return re(e)?document.querySelector(e):e}const na=window.__VP_SITE_DATA__;function Fs(e){return Kr()?(No(e),!0):!1}function Xe(e){return typeof e=="function"?e():oi(e)}const Zi=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const sa=Object.prototype.toString,ra=e=>sa.call(e)==="[object Object]",eo=()=>{},Or=ia();function ia(){var e,t;return Zi&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function oa(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const to=e=>e();function la(e=to){const t=fe(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:Cn(t),pause:n,resume:s,eventFilter:r}}function ca(e){return In()}function no(...e){if(e.length!==1)return al(...e);const t=e[0];return typeof t=="function"?Cn(ol(()=>({get:t,set:eo}))):fe(t)}function aa(e,t,n={}){const{eventFilter:s=to,...r}=n;return Fe(e,oa(s,t),r)}function fa(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=la(s);return{stop:aa(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function Hs(e,t=!0,n){ca()?Tt(e,n):t?e():xn(e)}function so(e){var t;const n=Xe(e);return(t=n==null?void 0:n.$el)!=null?t:n}const je=Zi?window:void 0;function xt(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=je):[t,n,s,r]=e,!t)return eo;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(d=>d()),i.length=0},l=(d,h,m,C)=>(d.addEventListener(h,m,C),()=>d.removeEventListener(h,m,C)),c=Fe(()=>[so(t),Xe(r)],([d,h])=>{if(o(),!d)return;const m=ra(h)?{...h}:h;i.push(...n.flatMap(C=>s.map(O=>l(d,C,O,m))))},{immediate:!0,flush:"post"}),f=()=>{c(),o()};return Fs(f),f}function ua(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function df(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=je,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=ua(t);return xt(r,i,d=>{d.repeat&&Xe(l)||c(d)&&n(d)},o)}function da(){const e=fe(!1),t=In();return t&&Tt(()=>{e.value=!0},t),e}function ha(e){const t=da();return ie(()=>(t.value,!!e()))}function ro(e,t={}){const{window:n=je}=t,s=ha(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=fe(!1),o=f=>{i.value=f.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=ji(()=>{s.value&&(l(),r=n.matchMedia(Xe(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return Fs(()=>{c(),l(),r=void 0}),i}const tn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},nn="__vueuse_ssr_handlers__",pa=ga();function ga(){return nn in tn||(tn[nn]=tn[nn]||{}),tn[nn]}function io(e,t){return pa[e]||t}function ma(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const ya={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Rr="vueuse-storage";function _a(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:d,window:h=je,eventFilter:m,onError:C=_=>{console.error(_)},initOnMounted:O}=s,M=(d?ri:fe)(typeof t=="function"?t():t);if(!n)try{n=io("getDefaultStorage",()=>{var _;return(_=je)==null?void 0:_.localStorage})()}catch(_){C(_)}if(!n)return M;const B=Xe(t),k=ma(B),G=(r=s.serializer)!=null?r:ya[k],{pause:p,resume:y}=fa(M,()=>x(M.value),{flush:i,deep:o,eventFilter:m});h&&l&&Hs(()=>{xt(h,"storage",$),xt(h,Rr,L),O&&$()}),O||$();function I(_,N){h&&h.dispatchEvent(new CustomEvent(Rr,{detail:{key:e,oldValue:_,newValue:N,storageArea:n}}))}function x(_){try{const N=n.getItem(e);if(_==null)I(N,null),n.removeItem(e);else{const S=G.write(_);N!==S&&(n.setItem(e,S),I(N,S))}}catch(N){C(N)}}function F(_){const N=_?_.newValue:n.getItem(e);if(N==null)return c&&B!=null&&n.setItem(e,G.write(B)),B;if(!_&&f){const S=G.read(N);return typeof f=="function"?f(S,B):k==="object"&&!Array.isArray(S)?{...B,...S}:S}else return typeof N!="string"?N:G.read(N)}function $(_){if(!(_&&_.storageArea!==n)){if(_&&_.key==null){M.value=B;return}if(!(_&&_.key!==e)){p();try{(_==null?void 0:_.newValue)!==G.write(M.value)&&(M.value=F(_))}catch(N){C(N)}finally{_?xn(y):y()}}}}function L(_){$(_.detail)}return M}function oo(e){return ro("(prefers-color-scheme: dark)",e)}function ba(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=je,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:d=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},m=oo({window:r}),C=ie(()=>m.value?"dark":"light"),O=c||(o==null?no(s):_a(o,s,i,{window:r,listenToStorageChanges:l})),M=ie(()=>O.value==="auto"?C.value:O.value),B=io("updateHTMLAttrs",(y,I,x)=>{const F=typeof y=="string"?r==null?void 0:r.document.querySelector(y):so(y);if(!F)return;let $;if(d&&($=r.document.createElement("style"),$.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),r.document.head.appendChild($)),I==="class"){const L=x.split(/\s/g);Object.values(h).flatMap(_=>(_||"").split(/\s/g)).filter(Boolean).forEach(_=>{L.includes(_)?F.classList.add(_):F.classList.remove(_)})}else F.setAttribute(I,x);d&&(r.getComputedStyle($).opacity,document.head.removeChild($))});function k(y){var I;B(t,n,(I=h[y])!=null?I:y)}function G(y){e.onChanged?e.onChanged(y,k):k(y)}Fe(M,G,{flush:"post",immediate:!0}),Hs(()=>G(M.value));const p=ie({get(){return f?O.value:M.value},set(y){O.value=y}});try{return Object.assign(p,{store:O,system:C,state:M})}catch{return p}}function wa(e={}){const{valueDark:t="dark",valueLight:n="",window:s=je}=e,r=ba({...e,onChanged:(l,c)=>{var f;e.onChanged?(f=e.onChanged)==null||f.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>r.system?r.system.value:oo({window:s}).value?"dark":"light");return ie({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function Gn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function lo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const Xn=new WeakMap;function hf(e,t=!1){const n=fe(t);let s=null,r="";Fe(no(e),l=>{const c=Gn(Xe(l));if(c){const f=c;if(Xn.get(f)||Xn.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(r=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=Gn(Xe(e));!l||n.value||(Or&&(s=xt(l,"touchmove",c=>{va(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=Gn(Xe(e));!l||!n.value||(Or&&(s==null||s()),l.style.overflow=r,Xn.delete(l),n.value=!1)};return Fs(o),ie({get(){return n.value},set(l){l?i():o()}})}function pf(e={}){const{window:t=je,behavior:n="auto"}=e;if(!t)return{x:fe(0),y:fe(0)};const s=fe(t.scrollX),r=fe(t.scrollY),i=ie({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return xt(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function gf(e={}){const{window:t=je,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0}=e,o=fe(n),l=fe(s),c=()=>{t&&(i?(o.value=t.innerWidth,l.value=t.innerHeight):(o.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),Hs(c),xt("resize",c,{passive:!0}),r){const f=ro("(orientation: portrait)");Fe(f,()=>c())}return{width:o,height:l}}const Yn={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var zn={};const co=/^(?:[a-z]+:|\/\/)/i,Ea="vitepress-theme-appearance",Ca=/#.*$/,Sa=/[?#].*$/,xa=/(?:(^|\/)index)?\.(?:md|html)$/,de=typeof document<"u",ao={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Ta(e,t,n=!1){if(t===void 0)return!1;if(e=Lr(`/${e}`),n)return new RegExp(t).test(e);if(Lr(t)!==e)return!1;const s=t.match(Ca);return s?(de?location.hash:"")===s[0]:!0}function Lr(e){return decodeURI(e).replace(Sa,"").replace(xa,"$1")}function Aa(e){return co.test(e)}function Oa(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!Aa(n)&&Ta(t,`/${n}/`,!0))||"root"}function Ra(e,t){var s,r,i,o,l,c,f;const n=Oa(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:uo(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function fo(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=La(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function La(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Ma(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function uo(e,t){return[...e.filter(n=>!Ma(t,n)),...t]}const Ia=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Pa=/^[a-z]:/i;function Mr(e){const t=Pa.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Ia,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const Jn=new Set;function Na(e){if(Jn.size===0){const n=typeof process=="object"&&(zn==null?void 0:zn.VITE_EXTRA_EXTENSIONS)||(Yn==null?void 0:Yn.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>Jn.add(s))}const t=e.split(".").pop();return t==null||!Jn.has(t.toLowerCase())}const Fa=Symbol(),ut=ri(na);function mf(e){const t=ie(()=>Ra(ut.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?fe(!0):n?wa({storageKey:Ea,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):fe(!1),r=fe(de?location.hash:"");return de&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Fe(()=>e.data,()=>{r.value=de?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>fo(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:s,hash:ie(()=>r.value)}}function Ha(){const e=Ct(Fa);if(!e)throw new Error("vitepress data not properly injected in app");return e}function $a(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Ir(e){return co.test(e)||!e.startsWith("/")?e:$a(ut.value.base,e)}function ja(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),de){const n="/";t=Mr(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Mr(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let an=[];function yf(e){an.push(e),Rn(()=>{an=an.filter(t=>t!==e)})}function Va(){let e=ut.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Pr(e,n);else if(Array.isArray(e))for(const s of e){const r=Pr(s,n);if(r){t=r;break}}return t}function Pr(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const Da=Symbol(),ho="http://a.com",Ua=()=>({path:"/",component:null,data:ao});function _f(e,t){const n=En(Ua()),s={route:n,go:r};async function r(l=de?location.href:"/"){var c,f;l=Qn(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(de&&l!==Qn(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=s.onAfterRouteChanged)==null?void 0:f.call(s,l)))}let i=null;async function o(l,c=0,f=!1){var m;if(await((m=s.onBeforePageLoad)==null?void 0:m.call(s,l))===!1)return;const d=new URL(l,ho),h=i=d.pathname;try{let C=await e(h);if(!C)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:O,__pageData:M}=C;if(!O)throw new Error(`Invalid route component: ${O}`);n.path=de?h:Ir(h),n.component=on(O),n.data=on(M),de&&xn(()=>{let B=ut.value.base+M.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ut.value.cleanUrls&&!B.endsWith("/")&&(B+=".html"),B!==d.pathname&&(d.pathname=B,l=B+d.search+d.hash,history.replaceState({},"",l)),d.hash&&!c){let k=null;try{k=document.getElementById(decodeURIComponent(d.hash).slice(1))}catch(G){console.warn(G)}if(k){Nr(k,d.hash);return}}window.scrollTo(0,c)})}}catch(C){if(!/fetch|Page not found/.test(C.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(C),!f)try{const O=await fetch(ut.value.base+"hashmap.json");window.__VP_HASH_MAP__=await O.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=de?h:Ir(h),n.component=t?on(t):null;const O=de?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...ao,relativePath:O}}}}return de&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:d,origin:h,pathname:m,hash:C,search:O}=new URL(f,c.baseURI),M=new URL(location.href);h===M.origin&&Na(m)&&(l.preventDefault(),m===M.pathname&&O===M.search?(C!==M.hash&&(history.pushState({},"",d),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:M.href,newURL:d}))),C?Nr(c,C,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(d))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(Qn(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Ba(){const e=Ct(Da);if(!e)throw new Error("useRouter() is called without provider.");return e}function po(){return Ba().route}function Nr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-Va()+i;requestAnimationFrame(r)}}function Qn(e){const t=new URL(e,ho);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ut.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const Zn=()=>an.forEach(e=>e()),bf=gi({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=po(),{site:n}=Ha();return()=>hs(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?hs(t.component,{onVnodeMounted:Zn,onVnodeUpdated:Zn,onVnodeUnmounted:Zn}):"404 Page Not Found"])}}),wf=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},vf=gi({setup(e,{slots:t}){const n=fe(!1);return Tt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Ef(){de&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function Cf(){if(de){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(d=>d.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),ka(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const d=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,d)})}})}}async function ka(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function Sf(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=es(l);for(const f of document.head.children)if(f.isEqualNode(c)){s.push(f);return}});return}const o=i.map(es);s.forEach((l,c)=>{const f=o.findIndex(d=>d==null?void 0:d.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};ji(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=fo(o,i);f!==document.title&&(document.title=f);const d=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==d&&h.setAttribute("content",d):es(["meta",{name:"description",content:d}]),r(uo(o.head,Wa(c)))})}function es([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&!t.async&&(s.async=!1),s}function Ka(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Wa(e){return e.filter(t=>!Ka(t))}const ts=new Set,go=()=>document.createElement("link"),qa=e=>{const t=go();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Ga=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let sn;const Xa=de&&(sn=go())&&sn.relList&&sn.relList.supports&&sn.relList.supports("prefetch")?qa:Ga;function xf(){if(!de||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!ts.has(c)){ts.add(c);const f=ja(c);f&&Xa(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):ts.add(l))})})};Tt(s);const r=po();Fe(()=>r.path,s),Rn(()=>{n&&n.disconnect()})}export{yi as $,rf as A,xl as B,Va as C,Ja as D,Za as E,be as F,ri as G,yf as H,ue as I,Qa as J,co as K,po as L,pc as M,Ct as N,gf as O,_s as P,df as Q,xn as R,pf as S,Ji as T,de as U,Cn as V,hf as W,Vl as X,ff as Y,tf as Z,wf as _,Gi as a,af as a0,nf as a1,lf as a2,hs as a3,En as a4,sf as a5,Sf as a6,Da as a7,mf as a8,Fa as a9,bf as aa,vf as ab,ut as ac,uf as ad,_f as ae,ja as af,xf as ag,Cf as ah,Ef as ai,Ki as b,of as c,gi as d,cf as e,Na as f,Ir as g,ie as h,Aa as i,qi as j,oi as k,za as l,Ta as m,bs as n,Bi as o,Ya as p,ro as q,ef as r,fe as s,Mo as t,Ha as u,Fe as v,ml as w,ji as x,Tt as y,Rn as z}; diff --git a/docs/.vitepress/dist/assets/chunks/framework.CE9GIcbU.js b/docs/.vitepress/dist/assets/chunks/framework.CE9GIcbU.js new file mode 100644 index 0000000..e5fe88c --- /dev/null +++ b/docs/.vitepress/dist/assets/chunks/framework.CE9GIcbU.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.38 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function ps(e,t){const n=new Set(e.split(","));return s=>n.has(s)}const se={},mt=[],Ae=()=>{},Eo=()=>!1,Bt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),gs=e=>e.startsWith("onUpdate:"),le=Object.assign,ms=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Co=Object.prototype.hasOwnProperty,z=(e,t)=>Co.call(e,t),B=Array.isArray,yt=e=>bn(e)==="[object Map]",Hr=e=>bn(e)==="[object Set]",k=e=>typeof e=="function",re=e=>typeof e=="string",Je=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",$r=e=>(Z(e)||k(e))&&k(e.then)&&k(e.catch),jr=Object.prototype.toString,bn=e=>jr.call(e),So=e=>bn(e).slice(8,-1),Vr=e=>bn(e)==="[object Object]",ys=e=>re(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,_t=ps(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),wn=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},xo=/-(\w)/g,Le=wn(e=>e.replace(xo,(t,n)=>n?n.toUpperCase():"")),To=/\B([A-Z])/g,Qe=wn(e=>e.replace(To,"-$1").toLowerCase()),vn=wn(e=>e.charAt(0).toUpperCase()+e.slice(1)),on=wn(e=>e?`on${vn(e)}`:""),Ye=(e,t)=>!Object.is(e,t),jn=(e,...t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},Ao=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Ro=e=>{const t=re(e)?Number(e):NaN;return isNaN(t)?e:t};let ks;const Ur=()=>ks||(ks=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function _s(e){if(B(e)){const t={};for(let n=0;n{if(n){const s=n.split(Lo);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function bs(e){let t="";if(re(e))t=e;else if(B(e))for(let n=0;n!!(e&&e.__v_isRef===!0),Fo=e=>re(e)?e:e==null?"":B(e)||Z(e)&&(e.toString===jr||!k(e.toString))?kr(e)?Fo(e.value):JSON.stringify(e,Kr,2):String(e),Kr=(e,t)=>kr(t)?Kr(e,t.value):yt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[Vn(s,i)+" =>"]=r,n),{})}:Hr(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Vn(n))}:Je(t)?Vn(t):Z(t)&&!B(t)&&!Vr(t)?String(t):t,Vn=(e,t="")=>{var n;return Je(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.38 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let Ee;class Ho{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=Ee,!t&&Ee&&(this.index=(Ee.scopes||(Ee.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=Ee;try{return Ee=this,t()}finally{Ee=n}}}on(){Ee=this}off(){Ee=this.parent}stop(t){if(this._active){let n,s;for(n=0,s=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),et()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=qe,n=ct;try{return qe=!0,ct=this,this._runnings++,Ks(this),this.fn()}finally{Ws(this),this._runnings--,ct=n,qe=t}}stop(){this.active&&(Ks(this),Ws(this),this.onStop&&this.onStop(),this.active=!1)}}function Vo(e){return e.value}function Ks(e){e._trackId++,e._depsLength=0}function Ws(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},un=new WeakMap,at=Symbol(""),rs=Symbol("");function we(e,t,n){if(qe&&ct){let s=un.get(e);s||un.set(e,s=new Map);let r=s.get(n);r||s.set(n,r=zr(()=>s.delete(n))),Xr(ct,r)}}function $e(e,t,n,s,r,i){const o=un.get(e);if(!o)return;let l=[];if(t==="clear")l=[...o.values()];else if(n==="length"&&B(e)){const c=Number(s);o.forEach((f,d)=>{(d==="length"||!Je(d)&&d>=c)&&l.push(f)})}else switch(n!==void 0&&l.push(o.get(n)),t){case"add":B(e)?ys(n)&&l.push(o.get("length")):(l.push(o.get(at)),yt(e)&&l.push(o.get(rs)));break;case"delete":B(e)||(l.push(o.get(at)),yt(e)&&l.push(o.get(rs)));break;case"set":yt(e)&&l.push(o.get(at));break}vs();for(const c of l)c&&Yr(c,4);Es()}function Do(e,t){const n=un.get(e);return n&&n.get(t)}const Uo=ps("__proto__,__v_isRef,__isVue"),Jr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Je)),qs=Bo();function Bo(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const s=J(this);for(let i=0,o=this.length;i{e[t]=function(...n){Ze(),vs();const s=J(this)[t].apply(this,n);return Es(),et(),s}}),e}function ko(e){Je(e)||(e=String(e));const t=J(this);return we(t,"has",e),t.hasOwnProperty(e)}class Qr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?nl:ni:i?ti:ei).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const o=B(t);if(!r){if(o&&z(qs,n))return Reflect.get(qs,n,s);if(n==="hasOwnProperty")return ko}const l=Reflect.get(t,n,s);return(Je(n)?Jr.has(n):Uo(n))||(r||we(t,"get",n),i)?l:ge(l)?o&&ys(n)?l:l.value:Z(l)?r?Sn(l):Cn(l):l}}class Zr extends Qr{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];if(!this._isShallow){const c=dt(i);if(!St(s)&&!dt(s)&&(i=J(i),s=J(s)),!B(t)&&ge(i)&&!ge(s))return c?!1:(i.value=s,!0)}const o=B(t)&&ys(n)?Number(n)e,En=e=>Reflect.getPrototypeOf(e);function qt(e,t,n=!1,s=!1){e=e.__v_raw;const r=J(e),i=J(t);n||(Ye(t,i)&&we(r,"get",t),we(r,"get",i));const{has:o}=En(r),l=s?Cs:n?Ts:$t;if(o.call(r,t))return l(e.get(t));if(o.call(r,i))return l(e.get(i));e!==r&&e.get(t)}function Gt(e,t=!1){const n=this.__v_raw,s=J(n),r=J(e);return t||(Ye(e,r)&&we(s,"has",e),we(s,"has",r)),e===r?n.has(e):n.has(e)||n.has(r)}function Xt(e,t=!1){return e=e.__v_raw,!t&&we(J(e),"iterate",at),Reflect.get(e,"size",e)}function Gs(e,t=!1){!t&&!St(e)&&!dt(e)&&(e=J(e));const n=J(this);return En(n).has.call(n,e)||(n.add(e),$e(n,"add",e,e)),this}function Xs(e,t,n=!1){!n&&!St(t)&&!dt(t)&&(t=J(t));const s=J(this),{has:r,get:i}=En(s);let o=r.call(s,e);o||(e=J(e),o=r.call(s,e));const l=i.call(s,e);return s.set(e,t),o?Ye(t,l)&&$e(s,"set",e,t):$e(s,"add",e,t),this}function Ys(e){const t=J(this),{has:n,get:s}=En(t);let r=n.call(t,e);r||(e=J(e),r=n.call(t,e)),s&&s.call(t,e);const i=t.delete(e);return r&&$e(t,"delete",e,void 0),i}function zs(){const e=J(this),t=e.size!==0,n=e.clear();return t&&$e(e,"clear",void 0,void 0),n}function Yt(e,t){return function(s,r){const i=this,o=i.__v_raw,l=J(o),c=t?Cs:e?Ts:$t;return!e&&we(l,"iterate",at),o.forEach((f,d)=>s.call(r,c(f),c(d),i))}}function zt(e,t,n){return function(...s){const r=this.__v_raw,i=J(r),o=yt(i),l=e==="entries"||e===Symbol.iterator&&o,c=e==="keys"&&o,f=r[e](...s),d=n?Cs:t?Ts:$t;return!t&&we(i,"iterate",c?rs:at),{next(){const{value:h,done:m}=f.next();return m?{value:h,done:m}:{value:l?[d(h[0]),d(h[1])]:d(h),done:m}},[Symbol.iterator](){return this}}}}function De(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Xo(){const e={get(i){return qt(this,i)},get size(){return Xt(this)},has:Gt,add:Gs,set:Xs,delete:Ys,clear:zs,forEach:Yt(!1,!1)},t={get(i){return qt(this,i,!1,!0)},get size(){return Xt(this)},has:Gt,add(i){return Gs.call(this,i,!0)},set(i,o){return Xs.call(this,i,o,!0)},delete:Ys,clear:zs,forEach:Yt(!1,!0)},n={get(i){return qt(this,i,!0)},get size(){return Xt(this,!0)},has(i){return Gt.call(this,i,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:Yt(!0,!1)},s={get(i){return qt(this,i,!0,!0)},get size(){return Xt(this,!0)},has(i){return Gt.call(this,i,!0)},add:De("add"),set:De("set"),delete:De("delete"),clear:De("clear"),forEach:Yt(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(i=>{e[i]=zt(i,!1,!1),n[i]=zt(i,!0,!1),t[i]=zt(i,!1,!0),s[i]=zt(i,!0,!0)}),[e,n,t,s]}const[Yo,zo,Jo,Qo]=Xo();function Ss(e,t){const n=t?e?Qo:Jo:e?zo:Yo;return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(z(n,r)&&r in s?n:s,r,i)}const Zo={get:Ss(!1,!1)},el={get:Ss(!1,!0)},tl={get:Ss(!0,!1)};const ei=new WeakMap,ti=new WeakMap,ni=new WeakMap,nl=new WeakMap;function sl(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function rl(e){return e.__v_skip||!Object.isExtensible(e)?0:sl(So(e))}function Cn(e){return dt(e)?e:xs(e,!1,Wo,Zo,ei)}function il(e){return xs(e,!1,Go,el,ti)}function Sn(e){return xs(e,!0,qo,tl,ni)}function xs(e,t,n,s,r){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=r.get(e);if(i)return i;const o=rl(e);if(o===0)return e;const l=new Proxy(e,o===2?s:n);return r.set(e,l),l}function bt(e){return dt(e)?bt(e.__v_raw):!!(e&&e.__v_isReactive)}function dt(e){return!!(e&&e.__v_isReadonly)}function St(e){return!!(e&&e.__v_isShallow)}function si(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function ln(e){return Object.isExtensible(e)&&Dr(e,"__v_skip",!0),e}const $t=e=>Z(e)?Cn(e):e,Ts=e=>Z(e)?Sn(e):e;class ri{constructor(t,n,s,r){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new ws(()=>t(this._value),()=>Mt(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!r,this.__v_isReadonly=s}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Ye(t._value,t._value=t.effect.run())&&Mt(t,4),As(t),t.effect._dirtyLevel>=2&&Mt(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function ol(e,t,n=!1){let s,r;const i=k(e);return i?(s=e,r=Ae):(s=e.get,r=e.set),new ri(s,r,i||!r,n)}function As(e){var t;qe&&ct&&(e=J(e),Xr(ct,(t=e.dep)!=null?t:e.dep=zr(()=>e.dep=void 0,e instanceof ri?e:void 0)))}function Mt(e,t=4,n,s){e=J(e);const r=e.dep;r&&Yr(r,t)}function ge(e){return!!(e&&e.__v_isRef===!0)}function fe(e){return oi(e,!1)}function ii(e){return oi(e,!0)}function oi(e,t){return ge(e)?e:new ll(e,t)}class ll{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:$t(t)}get value(){return As(this),this._value}set value(t){const n=this.__v_isShallow||St(t)||dt(t);t=n?t:J(t),Ye(t,this._rawValue)&&(this._rawValue,this._rawValue=t,this._value=n?t:$t(t),Mt(this,4))}}function li(e){return ge(e)?e.value:e}const cl={get:(e,t,n)=>li(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return ge(r)&&!ge(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function ci(e){return bt(e)?e:new Proxy(e,cl)}class al{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:s}=t(()=>As(this),()=>Mt(this));this._get=n,this._set=s}get value(){return this._get()}set value(t){this._set(t)}}function fl(e){return new al(e)}class ul{constructor(t,n,s){this._object=t,this._key=n,this._defaultValue=s,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Do(J(this._object),this._key)}}class dl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function hl(e,t,n){return ge(e)?e:k(e)?new dl(e):Z(e)&&arguments.length>1?pl(e,t,n):fe(e)}function pl(e,t,n){const s=e[t];return ge(s)?s:new ul(e,t,n)}/** +* @vue/runtime-core v3.4.38 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Ge(e,t,n,s){try{return s?e(...s):e()}catch(r){xn(r,t,n)}}function Re(e,t,n,s){if(k(e)){const r=Ge(e,t,n,s);return r&&$r(r)&&r.catch(i=>{xn(i,t,n)}),r}if(B(e)){const r=[];for(let i=0;i>>1,r=he[s],i=Vt(r);iNe&&he.splice(t,1)}function _l(e){B(e)?wt.push(...e):(!ke||!ke.includes(e,e.allowRecurse?it+1:it))&&wt.push(e),fi()}function Js(e,t,n=jt?Ne+1:0){for(;nVt(n)-Vt(s));if(wt.length=0,ke){ke.push(...t);return}for(ke=t,it=0;ite.id==null?1/0:e.id,bl=(e,t)=>{const n=Vt(e)-Vt(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function ui(e){is=!1,jt=!0,he.sort(bl);try{for(Ne=0;Ne{s._d&&fr(-1);const i=hn(t);let o;try{o=e(...r)}finally{hn(i),s._d&&fr(1)}return o};return s._n=!0,s._c=!0,s._d=!0,s}function Pe(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let o=0;o{e.isMounted=!0}),_i(()=>{e.isUnmounting=!0}),e}const Se=[Function,Array],di={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Se,onEnter:Se,onAfterEnter:Se,onEnterCancelled:Se,onBeforeLeave:Se,onLeave:Se,onAfterLeave:Se,onLeaveCancelled:Se,onBeforeAppear:Se,onAppear:Se,onAfterAppear:Se,onAppearCancelled:Se},hi=e=>{const t=e.subTree;return t.component?hi(t.component):t},El={name:"BaseTransition",props:di,setup(e,{slots:t}){const n=Pn(),s=vl();return()=>{const r=t.default&&gi(t.default(),!0);if(!r||!r.length)return;let i=r[0];if(r.length>1){for(const m of r)if(m.type!==ye){i=m;break}}const o=J(e),{mode:l}=o;if(s.isLeaving)return Dn(i);const c=Qs(i);if(!c)return Dn(i);let f=os(c,o,s,n,m=>f=m);pn(c,f);const d=n.subTree,h=d&&Qs(d);if(h&&h.type!==ye&&!lt(c,h)&&hi(n).type!==ye){const m=os(h,o,s,n);if(pn(h,m),l==="out-in"&&c.type!==ye)return s.isLeaving=!0,m.afterLeave=()=>{s.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},Dn(i);l==="in-out"&&c.type!==ye&&(m.delayLeave=(S,R,M)=>{const K=pi(s,h);K[String(h.key)]=h,S[Ke]=()=>{R(),S[Ke]=void 0,delete f.delayedLeave},f.delayedLeave=M})}return i}}},Cl=El;function pi(e,t){const{leavingVNodes:n}=e;let s=n.get(t.type);return s||(s=Object.create(null),n.set(t.type,s)),s}function os(e,t,n,s,r){const{appear:i,mode:o,persisted:l=!1,onBeforeEnter:c,onEnter:f,onAfterEnter:d,onEnterCancelled:h,onBeforeLeave:m,onLeave:S,onAfterLeave:R,onLeaveCancelled:M,onBeforeAppear:K,onAppear:W,onAfterAppear:G,onAppearCancelled:p}=t,y=String(e.key),I=pi(n,e),x=(L,_)=>{L&&Re(L,s,9,_)},F=(L,_)=>{const P=_[1];x(L,_),B(L)?L.every(E=>E.length<=1)&&P():L.length<=1&&P()},j={mode:o,persisted:l,beforeEnter(L){let _=c;if(!n.isMounted)if(i)_=K||c;else return;L[Ke]&&L[Ke](!0);const P=I[y];P&<(e,P)&&P.el[Ke]&&P.el[Ke](),x(_,[L])},enter(L){let _=f,P=d,E=h;if(!n.isMounted)if(i)_=W||f,P=G||d,E=p||h;else return;let U=!1;const ee=L[Jt]=ne=>{U||(U=!0,ne?x(E,[L]):x(P,[L]),j.delayedLeave&&j.delayedLeave(),L[Jt]=void 0)};_?F(_,[L,ee]):ee()},leave(L,_){const P=String(e.key);if(L[Jt]&&L[Jt](!0),n.isUnmounting)return _();x(m,[L]);let E=!1;const U=L[Ke]=ee=>{E||(E=!0,_(),ee?x(M,[L]):x(R,[L]),L[Ke]=void 0,I[P]===e&&delete I[P])};I[P]=e,S?F(S,[L,U]):U()},clone(L){const _=os(L,t,n,s,r);return r&&r(_),_}};return j}function Dn(e){if(Rn(e))return e=ze(e),e.children=null,e}function Qs(e){if(!Rn(e))return e;const{shapeFlag:t,children:n}=e;if(n){if(t&16)return n[0];if(t&32&&k(n.default))return n.default()}}function pn(e,t){e.shapeFlag&6&&e.component?pn(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function gi(e,t=!1,n){let s=[],r=0;for(let i=0;i1)for(let i=0;i!!e.type.__asyncLoader,Rn=e=>e.type.__isKeepAlive;function Sl(e,t){yi(e,"a",t)}function xl(e,t){yi(e,"da",t)}function yi(e,t,n=ae){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(On(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Rn(r.parent.vnode)&&Tl(s,t,n,r),r=r.parent}}function Tl(e,t,n,s){const r=On(t,e,s,!0);Ln(()=>{ms(s[t],r)},n)}function On(e,t,n=ae,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...o)=>{Ze();const l=kt(n),c=Re(t,n,e,o);return l(),et(),c});return s?r.unshift(i):r.push(i),i}}const Ve=e=>(t,n=ae)=>{(!Nn||e==="sp")&&On(e,(...s)=>t(...s),n)},Al=Ve("bm"),Tt=Ve("m"),Rl=Ve("bu"),Ol=Ve("u"),_i=Ve("bum"),Ln=Ve("um"),Ll=Ve("sp"),Ml=Ve("rtg"),Il=Ve("rtc");function Pl(e,t=ae){On("ec",e,t)}const Ls="components";function ef(e,t){return wi(Ls,e,!0,t)||e}const bi=Symbol.for("v-ndc");function tf(e){return re(e)?wi(Ls,e,!1)||e:e||bi}function wi(e,t,n=!0,s=!1){const r=pe||ae;if(r){const i=r.type;if(e===Ls){const l=xc(i,!1);if(l&&(l===t||l===Le(t)||l===vn(Le(t))))return i}const o=Zs(r[e]||i[e],t)||Zs(r.appContext[e],t);return!o&&s?i:o}}function Zs(e,t){return e&&(e[t]||e[Le(t)]||e[vn(Le(t))])}function nf(e,t,n,s){let r;const i=n;if(B(e)||re(e)){r=new Array(e.length);for(let o=0,l=e.length;ot(o,l,void 0,i));else{const o=Object.keys(e);r=new Array(o.length);for(let l=0,c=o.length;lyn(t)?!(t.type===ye||t.type===be&&!vi(t.children)):!0)?e:null}function rf(e,t){const n={};for(const s in e)n[/[A-Z]/.test(s)?`on:${s}`:on(s)]=e[s];return n}const ls=e=>e?Yi(e)?Fs(e):ls(e.parent):null,It=le(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>ls(e.parent),$root:e=>ls(e.root),$emit:e=>e.emit,$options:e=>Ms(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Os(e.update)}),$nextTick:e=>e.n||(e.n=Tn.bind(e.proxy)),$watch:e=>lc.bind(e)}),Un=(e,t)=>e!==se&&!e.__isScriptSetup&&z(e,t),Nl={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:o,type:l,appContext:c}=e;let f;if(t[0]!=="$"){const S=o[t];if(S!==void 0)switch(S){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(Un(s,t))return o[t]=1,s[t];if(r!==se&&z(r,t))return o[t]=2,r[t];if((f=e.propsOptions[0])&&z(f,t))return o[t]=3,i[t];if(n!==se&&z(n,t))return o[t]=4,n[t];cs&&(o[t]=0)}}const d=It[t];let h,m;if(d)return t==="$attrs"&&we(e.attrs,"get",""),d(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==se&&z(n,t))return o[t]=4,n[t];if(m=c.config.globalProperties,z(m,t))return m[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return Un(r,t)?(r[t]=n,!0):s!==se&&z(s,t)?(s[t]=n,!0):z(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,propsOptions:i}},o){let l;return!!n[o]||e!==se&&z(e,o)||Un(t,o)||(l=i[0])&&z(l,o)||z(s,o)||z(It,o)||z(r.config.globalProperties,o)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:z(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function of(){return Fl().slots}function Fl(){const e=Pn();return e.setupContext||(e.setupContext=Ji(e))}function er(e){return B(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let cs=!0;function Hl(e){const t=Ms(e),n=e.proxy,s=e.ctx;cs=!1,t.beforeCreate&&tr(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:o,watch:l,provide:c,inject:f,created:d,beforeMount:h,mounted:m,beforeUpdate:S,updated:R,activated:M,deactivated:K,beforeDestroy:W,beforeUnmount:G,destroyed:p,unmounted:y,render:I,renderTracked:x,renderTriggered:F,errorCaptured:j,serverPrefetch:L,expose:_,inheritAttrs:P,components:E,directives:U,filters:ee}=t;if(f&&$l(f,s,null),o)for(const Y in o){const D=o[Y];k(D)&&(s[Y]=D.bind(n))}if(r){const Y=r.call(n,n);Z(Y)&&(e.data=Cn(Y))}if(cs=!0,i)for(const Y in i){const D=i[Y],ce=k(D)?D.bind(n,n):k(D.get)?D.get.bind(n,n):Ae,Kt=!k(D)&&k(D.set)?D.set.bind(n):Ae,tt=ie({get:ce,set:Kt});Object.defineProperty(s,Y,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Me=>tt.value=Me})}if(l)for(const Y in l)Ei(l[Y],s,n,Y);if(c){const Y=k(c)?c.call(n):c;Reflect.ownKeys(Y).forEach(D=>{kl(D,Y[D])})}d&&tr(d,e,"c");function V(Y,D){B(D)?D.forEach(ce=>Y(ce.bind(n))):D&&Y(D.bind(n))}if(V(Al,h),V(Tt,m),V(Rl,S),V(Ol,R),V(Sl,M),V(xl,K),V(Pl,j),V(Il,x),V(Ml,F),V(_i,G),V(Ln,y),V(Ll,L),B(_))if(_.length){const Y=e.exposed||(e.exposed={});_.forEach(D=>{Object.defineProperty(Y,D,{get:()=>n[D],set:ce=>n[D]=ce})})}else e.exposed||(e.exposed={});I&&e.render===Ae&&(e.render=I),P!=null&&(e.inheritAttrs=P),E&&(e.components=E),U&&(e.directives=U)}function $l(e,t,n=Ae){B(e)&&(e=as(e));for(const s in e){const r=e[s];let i;Z(r)?"default"in r?i=Ct(r.from||s,r.default,!0):i=Ct(r.from||s):i=Ct(r),ge(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:o=>i.value=o}):t[s]=i}}function tr(e,t,n){Re(B(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ei(e,t,n,s){const r=s.includes(".")?Di(n,s):()=>n[s];if(re(e)){const i=t[e];k(i)&&Fe(r,i)}else if(k(e))Fe(r,e.bind(n));else if(Z(e))if(B(e))e.forEach(i=>Ei(i,t,n,s));else{const i=k(e.handler)?e.handler.bind(n):t[e.handler];k(i)&&Fe(r,i,e)}}function Ms(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:o}}=e.appContext,l=i.get(t);let c;return l?c=l:!r.length&&!n&&!s?c=t:(c={},r.length&&r.forEach(f=>gn(c,f,o,!0)),gn(c,t,o)),Z(t)&&i.set(t,c),c}function gn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&gn(e,i,n,!0),r&&r.forEach(o=>gn(e,o,n,!0));for(const o in t)if(!(s&&o==="expose")){const l=jl[o]||n&&n[o];e[o]=l?l(e[o],t[o]):t[o]}return e}const jl={data:nr,props:sr,emits:sr,methods:Lt,computed:Lt,beforeCreate:me,created:me,beforeMount:me,mounted:me,beforeUpdate:me,updated:me,beforeDestroy:me,beforeUnmount:me,destroyed:me,unmounted:me,activated:me,deactivated:me,errorCaptured:me,serverPrefetch:me,components:Lt,directives:Lt,watch:Dl,provide:nr,inject:Vl};function nr(e,t){return t?e?function(){return le(k(e)?e.call(this,this):e,k(t)?t.call(this,this):t)}:t:e}function Vl(e,t){return Lt(as(e),as(t))}function as(e){if(B(e)){const t={};for(let n=0;n1)return n&&k(t)?t.call(s&&s.proxy):t}}const Si={},xi=()=>Object.create(Si),Ti=e=>Object.getPrototypeOf(e)===Si;function Kl(e,t,n,s=!1){const r={},i=xi();e.propsDefaults=Object.create(null),Ai(e,t,r,i);for(const o in e.propsOptions[0])o in r||(r[o]=void 0);n?e.props=s?r:il(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Wl(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:o}}=e,l=J(r),[c]=e.propsOptions;let f=!1;if((s||o>0)&&!(o&16)){if(o&8){const d=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[m,S]=Ri(h,t,!0);le(o,m),S&&l.push(...S)};!n&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}if(!i&&!c)return Z(e)&&s.set(e,mt),mt;if(B(i))for(let d=0;de[0]==="_"||e==="$stable",Is=e=>B(e)?e.map(Te):[Te(e)],Gl=(e,t,n)=>{if(t._n)return t;const s=wl((...r)=>Is(t(...r)),n);return s._c=!1,s},Li=(e,t,n)=>{const s=e._ctx;for(const r in e){if(Oi(r))continue;const i=e[r];if(k(i))t[r]=Gl(r,i,s);else if(i!=null){const o=Is(i);t[r]=()=>o}}},Mi=(e,t)=>{const n=Is(t);e.slots.default=()=>n},Ii=(e,t,n)=>{for(const s in t)(n||s!=="_")&&(e[s]=t[s])},Xl=(e,t,n)=>{const s=e.slots=xi();if(e.vnode.shapeFlag&32){const r=t._;r?(Ii(s,t,n),n&&Dr(s,"_",r,!0)):Li(t,s)}else t&&Mi(e,t)},Yl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,o=se;if(s.shapeFlag&32){const l=t._;l?n&&l===1?i=!1:Ii(r,t,n):(i=!t.$stable,Li(t,r)),o=t}else t&&(Mi(e,t),o={default:1});if(i)for(const l in r)!Oi(l)&&o[l]==null&&delete r[l]};function mn(e,t,n,s,r=!1){if(B(e)){e.forEach((m,S)=>mn(m,t&&(B(t)?t[S]:t),n,s,r));return}if(vt(s)&&!r)return;const i=s.shapeFlag&4?Fs(s.component):s.el,o=r?null:i,{i:l,r:c}=e,f=t&&t.r,d=l.refs===se?l.refs={}:l.refs,h=l.setupState;if(f!=null&&f!==c&&(re(f)?(d[f]=null,z(h,f)&&(h[f]=null)):ge(f)&&(f.value=null)),k(c))Ge(c,l,12,[o,d]);else{const m=re(c),S=ge(c);if(m||S){const R=()=>{if(e.f){const M=m?z(h,c)?h[c]:d[c]:c.value;r?B(M)&&ms(M,i):B(M)?M.includes(i)||M.push(i):m?(d[c]=[i],z(h,c)&&(h[c]=d[c])):(c.value=[i],e.k&&(d[e.k]=c.value))}else m?(d[c]=o,z(h,c)&&(h[c]=o)):S&&(c.value=o,e.k&&(d[e.k]=o))};o?(R.id=-1,_e(R,n)):R()}}}const Pi=Symbol("_vte"),zl=e=>e.__isTeleport,Pt=e=>e&&(e.disabled||e.disabled===""),ir=e=>typeof SVGElement<"u"&&e instanceof SVGElement,or=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,us=(e,t)=>{const n=e&&e.to;return re(n)?t?t(n):null:n},Jl={name:"Teleport",__isTeleport:!0,process(e,t,n,s,r,i,o,l,c,f){const{mc:d,pc:h,pbc:m,o:{insert:S,querySelector:R,createText:M,createComment:K}}=f,W=Pt(t.props);let{shapeFlag:G,children:p,dynamicChildren:y}=t;if(e==null){const I=t.el=M(""),x=t.anchor=M("");S(I,n,s),S(x,n,s);const F=t.target=us(t.props,R),j=Fi(F,t,M,S);F&&(o==="svg"||ir(F)?o="svg":(o==="mathml"||or(F))&&(o="mathml"));const L=(_,P)=>{G&16&&d(p,_,P,r,i,o,l,c)};W?L(n,x):F&&L(F,j)}else{t.el=e.el,t.targetStart=e.targetStart;const I=t.anchor=e.anchor,x=t.target=e.target,F=t.targetAnchor=e.targetAnchor,j=Pt(e.props),L=j?n:x,_=j?I:F;if(o==="svg"||ir(x)?o="svg":(o==="mathml"||or(x))&&(o="mathml"),y?(m(e.dynamicChildren,y,L,r,i,o,l),Ps(e,t,!0)):c||h(e,t,L,_,r,i,o,l,!1),W)j?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):Qt(t,n,I,f,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const P=t.target=us(t.props,R);P&&Qt(t,P,null,f,0)}else j&&Qt(t,x,F,f,1)}Ni(t)},remove(e,t,n,{um:s,o:{remove:r}},i){const{shapeFlag:o,children:l,anchor:c,targetStart:f,targetAnchor:d,target:h,props:m}=e;if(h&&(r(f),r(d)),i&&r(c),o&16){const S=i||!Pt(m);for(let R=0;R{lr||(console.error("Hydration completed but contains mismatches."),lr=!0)},Zl=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",ec=e=>e.namespaceURI.includes("MathML"),Zt=e=>{if(Zl(e))return"svg";if(ec(e))return"mathml"},en=e=>e.nodeType===8;function tc(e){const{mt:t,p:n,o:{patchProp:s,createText:r,nextSibling:i,parentNode:o,remove:l,insert:c,createComment:f}}=e,d=(p,y)=>{if(!y.hasChildNodes()){n(null,p,y),dn(),y._vnode=p;return}h(y.firstChild,p,null,null,null),dn(),y._vnode=p},h=(p,y,I,x,F,j=!1)=>{j=j||!!y.dynamicChildren;const L=en(p)&&p.data==="[",_=()=>M(p,y,I,x,F,L),{type:P,ref:E,shapeFlag:U,patchFlag:ee}=y;let ne=p.nodeType;y.el=p,ee===-2&&(j=!1,y.dynamicChildren=null);let V=null;switch(P){case ft:ne!==3?y.children===""?(c(y.el=r(""),o(p),p),V=p):V=_():(p.data!==y.children&&(gt(),p.data=y.children),V=i(p));break;case ye:G(p)?(V=i(p),W(y.el=p.content.firstChild,p,I)):ne!==8||L?V=_():V=i(p);break;case Nt:if(L&&(p=i(p),ne=p.nodeType),ne===1||ne===3){V=p;const Y=!y.children.length;for(let D=0;D{j=j||!!y.dynamicChildren;const{type:L,props:_,patchFlag:P,shapeFlag:E,dirs:U,transition:ee}=y,ne=L==="input"||L==="option";if(ne||P!==-1){U&&Pe(y,null,I,"created");let V=!1;if(G(p)){V=$i(x,ee)&&I&&I.vnode.props&&I.vnode.props.appear;const D=p.content.firstChild;V&&ee.beforeEnter(D),W(D,p,I),y.el=p=D}if(E&16&&!(_&&(_.innerHTML||_.textContent))){let D=S(p.firstChild,y,p,I,x,F,j);for(;D;){gt();const ce=D;D=D.nextSibling,l(ce)}}else E&8&&p.textContent!==y.children&&(gt(),p.textContent=y.children);if(_){if(ne||!j||P&48){const D=p.tagName.includes("-");for(const ce in _)(ne&&(ce.endsWith("value")||ce==="indeterminate")||Bt(ce)&&!_t(ce)||ce[0]==="."||D)&&s(p,ce,null,_[ce],void 0,I)}else if(_.onClick)s(p,"onClick",null,_.onClick,void 0,I);else if(P&4&&bt(_.style))for(const D in _.style)_.style[D]}let Y;(Y=_&&_.onVnodeBeforeMount)&&xe(Y,I,y),U&&Pe(y,null,I,"beforeMount"),((Y=_&&_.onVnodeMounted)||U||V)&&Bi(()=>{Y&&xe(Y,I,y),V&&ee.enter(p),U&&Pe(y,null,I,"mounted")},x)}return p.nextSibling},S=(p,y,I,x,F,j,L)=>{L=L||!!y.dynamicChildren;const _=y.children,P=_.length;for(let E=0;E{const{slotScopeIds:L}=y;L&&(F=F?F.concat(L):L);const _=o(p),P=S(i(p),y,_,I,x,F,j);return P&&en(P)&&P.data==="]"?i(y.anchor=P):(gt(),c(y.anchor=f("]"),_,P),P)},M=(p,y,I,x,F,j)=>{if(gt(),y.el=null,j){const P=K(p);for(;;){const E=i(p);if(E&&E!==P)l(E);else break}}const L=i(p),_=o(p);return l(p),n(null,y,_,L,I,x,Zt(_),F),L},K=(p,y="[",I="]")=>{let x=0;for(;p;)if(p=i(p),p&&en(p)&&(p.data===y&&x++,p.data===I)){if(x===0)return i(p);x--}return p},W=(p,y,I)=>{const x=y.parentNode;x&&x.replaceChild(p,y);let F=I;for(;F;)F.vnode.el===y&&(F.vnode.el=F.subTree.el=p),F=F.parent},G=p=>p.nodeType===1&&p.tagName.toLowerCase()==="template";return[d,h]}const _e=Bi;function nc(e){return Hi(e)}function sc(e){return Hi(e,tc)}function Hi(e,t){const n=Ur();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:o,createText:l,createComment:c,setText:f,setElementText:d,parentNode:h,nextSibling:m,setScopeId:S=Ae,insertStaticContent:R}=e,M=(a,u,g,v=null,b=null,C=null,O=void 0,T=null,A=!!u.dynamicChildren)=>{if(a===u)return;a&&!lt(a,u)&&(v=Wt(a),Me(a,b,C,!0),a=null),u.patchFlag===-2&&(A=!1,u.dynamicChildren=null);const{type:w,ref:N,shapeFlag:$}=u;switch(w){case ft:K(a,u,g,v);break;case ye:W(a,u,g,v);break;case Nt:a==null&&G(u,g,v,O);break;case be:E(a,u,g,v,b,C,O,T,A);break;default:$&1?I(a,u,g,v,b,C,O,T,A):$&6?U(a,u,g,v,b,C,O,T,A):($&64||$&128)&&w.process(a,u,g,v,b,C,O,T,A,ht)}N!=null&&b&&mn(N,a&&a.ref,C,u||a,!u)},K=(a,u,g,v)=>{if(a==null)s(u.el=l(u.children),g,v);else{const b=u.el=a.el;u.children!==a.children&&f(b,u.children)}},W=(a,u,g,v)=>{a==null?s(u.el=c(u.children||""),g,v):u.el=a.el},G=(a,u,g,v)=>{[a.el,a.anchor]=R(a.children,u,g,v,a.el,a.anchor)},p=({el:a,anchor:u},g,v)=>{let b;for(;a&&a!==u;)b=m(a),s(a,g,v),a=b;s(u,g,v)},y=({el:a,anchor:u})=>{let g;for(;a&&a!==u;)g=m(a),r(a),a=g;r(u)},I=(a,u,g,v,b,C,O,T,A)=>{u.type==="svg"?O="svg":u.type==="math"&&(O="mathml"),a==null?x(u,g,v,b,C,O,T,A):L(a,u,b,C,O,T,A)},x=(a,u,g,v,b,C,O,T)=>{let A,w;const{props:N,shapeFlag:$,transition:H,dirs:q}=a;if(A=a.el=o(a.type,C,N&&N.is,N),$&8?d(A,a.children):$&16&&j(a.children,A,null,v,b,Bn(a,C),O,T),q&&Pe(a,null,v,"created"),F(A,a,a.scopeId,O,v),N){for(const te in N)te!=="value"&&!_t(te)&&i(A,te,null,N[te],C,v);"value"in N&&i(A,"value",null,N.value,C),(w=N.onVnodeBeforeMount)&&xe(w,v,a)}q&&Pe(a,null,v,"beforeMount");const X=$i(b,H);X&&H.beforeEnter(A),s(A,u,g),((w=N&&N.onVnodeMounted)||X||q)&&_e(()=>{w&&xe(w,v,a),X&&H.enter(A),q&&Pe(a,null,v,"mounted")},b)},F=(a,u,g,v,b)=>{if(g&&S(a,g),v)for(let C=0;C{for(let w=A;w{const T=u.el=a.el;let{patchFlag:A,dynamicChildren:w,dirs:N}=u;A|=a.patchFlag&16;const $=a.props||se,H=u.props||se;let q;if(g&&nt(g,!1),(q=H.onVnodeBeforeUpdate)&&xe(q,g,u,a),N&&Pe(u,a,g,"beforeUpdate"),g&&nt(g,!0),($.innerHTML&&H.innerHTML==null||$.textContent&&H.textContent==null)&&d(T,""),w?_(a.dynamicChildren,w,T,g,v,Bn(u,b),C):O||D(a,u,T,null,g,v,Bn(u,b),C,!1),A>0){if(A&16)P(T,$,H,g,b);else if(A&2&&$.class!==H.class&&i(T,"class",null,H.class,b),A&4&&i(T,"style",$.style,H.style,b),A&8){const X=u.dynamicProps;for(let te=0;te{q&&xe(q,g,u,a),N&&Pe(u,a,g,"updated")},v)},_=(a,u,g,v,b,C,O)=>{for(let T=0;T{if(u!==g){if(u!==se)for(const C in u)!_t(C)&&!(C in g)&&i(a,C,u[C],null,b,v);for(const C in g){if(_t(C))continue;const O=g[C],T=u[C];O!==T&&C!=="value"&&i(a,C,T,O,b,v)}"value"in g&&i(a,"value",u.value,g.value,b)}},E=(a,u,g,v,b,C,O,T,A)=>{const w=u.el=a?a.el:l(""),N=u.anchor=a?a.anchor:l("");let{patchFlag:$,dynamicChildren:H,slotScopeIds:q}=u;q&&(T=T?T.concat(q):q),a==null?(s(w,g,v),s(N,g,v),j(u.children||[],g,N,b,C,O,T,A)):$>0&&$&64&&H&&a.dynamicChildren?(_(a.dynamicChildren,H,g,b,C,O,T),(u.key!=null||b&&u===b.subTree)&&Ps(a,u,!0)):D(a,u,g,N,b,C,O,T,A)},U=(a,u,g,v,b,C,O,T,A)=>{u.slotScopeIds=T,a==null?u.shapeFlag&512?b.ctx.activate(u,g,v,O,A):ee(u,g,v,b,C,O,A):ne(a,u,A)},ee=(a,u,g,v,b,C,O)=>{const T=a.component=vc(a,v,b);if(Rn(a)&&(T.ctx.renderer=ht),Ec(T,!1,O),T.asyncDep){if(b&&b.registerDep(T,V,O),!a.el){const A=T.subTree=ue(ye);W(null,A,u,g)}}else V(T,a,u,g,b,C,O)},ne=(a,u,g)=>{const v=u.component=a.component;if(dc(a,u,g))if(v.asyncDep&&!v.asyncResolved){Y(v,u,g);return}else v.next=u,yl(v.update),v.effect.dirty=!0,v.update();else u.el=a.el,v.vnode=u},V=(a,u,g,v,b,C,O)=>{const T=()=>{if(a.isMounted){let{next:N,bu:$,u:H,parent:q,vnode:X}=a;{const pt=ji(a);if(pt){N&&(N.el=X.el,Y(a,N,O)),pt.asyncDep.then(()=>{a.isUnmounted||T()});return}}let te=N,Q;nt(a,!1),N?(N.el=X.el,Y(a,N,O)):N=X,$&&jn($),(Q=N.props&&N.props.onVnodeBeforeUpdate)&&xe(Q,q,N,X),nt(a,!0);const oe=kn(a),Oe=a.subTree;a.subTree=oe,M(Oe,oe,h(Oe.el),Wt(Oe),a,b,C),N.el=oe.el,te===null&&hc(a,oe.el),H&&_e(H,b),(Q=N.props&&N.props.onVnodeUpdated)&&_e(()=>xe(Q,q,N,X),b)}else{let N;const{el:$,props:H}=u,{bm:q,m:X,parent:te}=a,Q=vt(u);if(nt(a,!1),q&&jn(q),!Q&&(N=H&&H.onVnodeBeforeMount)&&xe(N,te,u),nt(a,!0),$&&$n){const oe=()=>{a.subTree=kn(a),$n($,a.subTree,a,b,null)};Q?u.type.__asyncLoader().then(()=>!a.isUnmounted&&oe()):oe()}else{const oe=a.subTree=kn(a);M(null,oe,g,v,a,b,C),u.el=oe.el}if(X&&_e(X,b),!Q&&(N=H&&H.onVnodeMounted)){const oe=u;_e(()=>xe(N,te,oe),b)}(u.shapeFlag&256||te&&vt(te.vnode)&&te.vnode.shapeFlag&256)&&a.a&&_e(a.a,b),a.isMounted=!0,u=g=v=null}},A=a.effect=new ws(T,Ae,()=>Os(w),a.scope),w=a.update=()=>{A.dirty&&A.run()};w.i=a,w.id=a.uid,nt(a,!0),w()},Y=(a,u,g)=>{u.component=a;const v=a.vnode.props;a.vnode=u,a.next=null,Wl(a,u.props,v,g),Yl(a,u.children,g),Ze(),Js(a),et()},D=(a,u,g,v,b,C,O,T,A=!1)=>{const w=a&&a.children,N=a?a.shapeFlag:0,$=u.children,{patchFlag:H,shapeFlag:q}=u;if(H>0){if(H&128){Kt(w,$,g,v,b,C,O,T,A);return}else if(H&256){ce(w,$,g,v,b,C,O,T,A);return}}q&8?(N&16&&At(w,b,C),$!==w&&d(g,$)):N&16?q&16?Kt(w,$,g,v,b,C,O,T,A):At(w,b,C,!0):(N&8&&d(g,""),q&16&&j($,g,v,b,C,O,T,A))},ce=(a,u,g,v,b,C,O,T,A)=>{a=a||mt,u=u||mt;const w=a.length,N=u.length,$=Math.min(w,N);let H;for(H=0;H<$;H++){const q=u[H]=A?We(u[H]):Te(u[H]);M(a[H],q,g,null,b,C,O,T,A)}w>N?At(a,b,C,!0,!1,$):j(u,g,v,b,C,O,T,A,$)},Kt=(a,u,g,v,b,C,O,T,A)=>{let w=0;const N=u.length;let $=a.length-1,H=N-1;for(;w<=$&&w<=H;){const q=a[w],X=u[w]=A?We(u[w]):Te(u[w]);if(lt(q,X))M(q,X,g,null,b,C,O,T,A);else break;w++}for(;w<=$&&w<=H;){const q=a[$],X=u[H]=A?We(u[H]):Te(u[H]);if(lt(q,X))M(q,X,g,null,b,C,O,T,A);else break;$--,H--}if(w>$){if(w<=H){const q=H+1,X=qH)for(;w<=$;)Me(a[w],b,C,!0),w++;else{const q=w,X=w,te=new Map;for(w=X;w<=H;w++){const ve=u[w]=A?We(u[w]):Te(u[w]);ve.key!=null&&te.set(ve.key,w)}let Q,oe=0;const Oe=H-X+1;let pt=!1,Ds=0;const Rt=new Array(Oe);for(w=0;w=Oe){Me(ve,b,C,!0);continue}let Ie;if(ve.key!=null)Ie=te.get(ve.key);else for(Q=X;Q<=H;Q++)if(Rt[Q-X]===0&<(ve,u[Q])){Ie=Q;break}Ie===void 0?Me(ve,b,C,!0):(Rt[Ie-X]=w+1,Ie>=Ds?Ds=Ie:pt=!0,M(ve,u[Ie],g,null,b,C,O,T,A),oe++)}const Us=pt?rc(Rt):mt;for(Q=Us.length-1,w=Oe-1;w>=0;w--){const ve=X+w,Ie=u[ve],Bs=ve+1{const{el:C,type:O,transition:T,children:A,shapeFlag:w}=a;if(w&6){tt(a.component.subTree,u,g,v);return}if(w&128){a.suspense.move(u,g,v);return}if(w&64){O.move(a,u,g,ht);return}if(O===be){s(C,u,g);for(let $=0;$T.enter(C),b);else{const{leave:$,delayLeave:H,afterLeave:q}=T,X=()=>s(C,u,g),te=()=>{$(C,()=>{X(),q&&q()})};H?H(C,X,te):te()}else s(C,u,g)},Me=(a,u,g,v=!1,b=!1)=>{const{type:C,props:O,ref:T,children:A,dynamicChildren:w,shapeFlag:N,patchFlag:$,dirs:H,cacheIndex:q}=a;if($===-2&&(b=!1),T!=null&&mn(T,null,g,a,!0),q!=null&&(u.renderCache[q]=void 0),N&256){u.ctx.deactivate(a);return}const X=N&1&&H,te=!vt(a);let Q;if(te&&(Q=O&&O.onVnodeBeforeUnmount)&&xe(Q,u,a),N&6)vo(a.component,g,v);else{if(N&128){a.suspense.unmount(g,v);return}X&&Pe(a,null,u,"beforeUnmount"),N&64?a.type.remove(a,u,g,ht,v):w&&!w.hasOnce&&(C!==be||$>0&&$&64)?At(w,u,g,!1,!0):(C===be&&$&384||!b&&N&16)&&At(A,u,g),v&&js(a)}(te&&(Q=O&&O.onVnodeUnmounted)||X)&&_e(()=>{Q&&xe(Q,u,a),X&&Pe(a,null,u,"unmounted")},g)},js=a=>{const{type:u,el:g,anchor:v,transition:b}=a;if(u===be){wo(g,v);return}if(u===Nt){y(a);return}const C=()=>{r(g),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(a.shapeFlag&1&&b&&!b.persisted){const{leave:O,delayLeave:T}=b,A=()=>O(g,C);T?T(a.el,C,A):A()}else C()},wo=(a,u)=>{let g;for(;a!==u;)g=m(a),r(a),a=g;r(u)},vo=(a,u,g)=>{const{bum:v,scope:b,update:C,subTree:O,um:T,m:A,a:w}=a;cr(A),cr(w),v&&jn(v),b.stop(),C&&(C.active=!1,Me(O,a,u,g)),T&&_e(T,u),_e(()=>{a.isUnmounted=!0},u),u&&u.pendingBranch&&!u.isUnmounted&&a.asyncDep&&!a.asyncResolved&&a.suspenseId===u.pendingId&&(u.deps--,u.deps===0&&u.resolve())},At=(a,u,g,v=!1,b=!1,C=0)=>{for(let O=C;O{if(a.shapeFlag&6)return Wt(a.component.subTree);if(a.shapeFlag&128)return a.suspense.next();const u=m(a.anchor||a.el),g=u&&u[Pi];return g?m(g):u};let Fn=!1;const Vs=(a,u,g)=>{a==null?u._vnode&&Me(u._vnode,null,null,!0):M(u._vnode||null,a,u,null,null,null,g),u._vnode=a,Fn||(Fn=!0,Js(),dn(),Fn=!1)},ht={p:M,um:Me,m:tt,r:js,mt:ee,mc:j,pc:D,pbc:_,n:Wt,o:e};let Hn,$n;return t&&([Hn,$n]=t(ht)),{render:Vs,hydrate:Hn,createApp:Bl(Vs,Hn)}}function Bn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function nt({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function $i(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Ps(e,t,n=!1){const s=e.children,r=t.children;if(B(s)&&B(r))for(let i=0;i>1,e[n[l]]0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,o=n[i-1];i-- >0;)n[i]=o,o=t[o];return n}function ji(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:ji(t)}function cr(e){if(e)for(let t=0;tCt(ic);function Vi(e,t){return Mn(e,null,t)}function cf(e,t){return Mn(e,null,{flush:"post"})}const tn={};function Fe(e,t,n){return Mn(e,t,n)}function Mn(e,t,{immediate:n,deep:s,flush:r,once:i,onTrack:o,onTrigger:l}=se){if(t&&i){const x=t;t=(...F)=>{x(...F),I()}}const c=ae,f=x=>s===!0?x:ot(x,s===!1?1:void 0);let d,h=!1,m=!1;if(ge(e)?(d=()=>e.value,h=St(e)):bt(e)?(d=()=>f(e),h=!0):B(e)?(m=!0,h=e.some(x=>bt(x)||St(x)),d=()=>e.map(x=>{if(ge(x))return x.value;if(bt(x))return f(x);if(k(x))return Ge(x,c,2)})):k(e)?t?d=()=>Ge(e,c,2):d=()=>(S&&S(),Re(e,c,3,[R])):d=Ae,t&&s){const x=d;d=()=>ot(x())}let S,R=x=>{S=p.onStop=()=>{Ge(x,c,4),S=p.onStop=void 0}},M;if(Nn)if(R=Ae,t?n&&Re(t,c,3,[d(),m?[]:void 0,R]):d(),r==="sync"){const x=oc();M=x.__watcherHandles||(x.__watcherHandles=[])}else return Ae;let K=m?new Array(e.length).fill(tn):tn;const W=()=>{if(!(!p.active||!p.dirty))if(t){const x=p.run();(s||h||(m?x.some((F,j)=>Ye(F,K[j])):Ye(x,K)))&&(S&&S(),Re(t,c,3,[x,K===tn?void 0:m&&K[0]===tn?[]:K,R]),K=x)}else p.run()};W.allowRecurse=!!t;let G;r==="sync"?G=W:r==="post"?G=()=>_e(W,c&&c.suspense):(W.pre=!0,c&&(W.id=c.uid),G=()=>Os(W));const p=new ws(d,Ae,G),y=Wr(),I=()=>{p.stop(),y&&ms(y.effects,p)};return t?n?W():K=p.run():r==="post"?_e(p.run.bind(p),c&&c.suspense):p.run(),M&&M.push(I),I}function lc(e,t,n){const s=this.proxy,r=re(e)?e.includes(".")?Di(s,e):()=>s[e]:e.bind(s,s);let i;k(t)?i=t:(i=t.handler,n=t);const o=kt(this),l=Mn(r,i.bind(s),n);return o(),l}function Di(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r{ot(s,t,n)});else if(Vr(e)){for(const s in e)ot(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&ot(e[s],t,n)}return e}const cc=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Le(t)}Modifiers`]||e[`${Qe(t)}Modifiers`];function ac(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||se;let r=n;const i=t.startsWith("update:"),o=i&&cc(s,t.slice(7));o&&(o.trim&&(r=n.map(d=>re(d)?d.trim():d)),o.number&&(r=n.map(Ao)));let l,c=s[l=on(t)]||s[l=on(Le(t))];!c&&i&&(c=s[l=on(Qe(t))]),c&&Re(c,e,6,r);const f=s[l+"Once"];if(f){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Re(f,e,6,r)}}function Ui(e,t,n=!1){const s=t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let o={},l=!1;if(!k(e)){const c=f=>{const d=Ui(f,t,!0);d&&(l=!0,le(o,d))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!i&&!l?(Z(e)&&s.set(e,null),null):(B(i)?i.forEach(c=>o[c]=null):le(o,i),Z(e)&&s.set(e,o),o)}function In(e,t){return!e||!Bt(t)?!1:(t=t.slice(2).replace(/Once$/,""),z(e,t[0].toLowerCase()+t.slice(1))||z(e,Qe(t))||z(e,t))}function kn(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:o,attrs:l,emit:c,render:f,renderCache:d,props:h,data:m,setupState:S,ctx:R,inheritAttrs:M}=e,K=hn(e);let W,G;try{if(n.shapeFlag&4){const y=r||s,I=y;W=Te(f.call(I,y,d,h,S,m,R)),G=l}else{const y=t;W=Te(y.length>1?y(h,{attrs:l,slots:o,emit:c}):y(h,null)),G=t.props?l:fc(l)}}catch(y){Ft.length=0,xn(y,e,1),W=ue(ye)}let p=W;if(G&&M!==!1){const y=Object.keys(G),{shapeFlag:I}=p;y.length&&I&7&&(i&&y.some(gs)&&(G=uc(G,i)),p=ze(p,G,!1,!0))}return n.dirs&&(p=ze(p,null,!1,!0),p.dirs=p.dirs?p.dirs.concat(n.dirs):n.dirs),n.transition&&(p.transition=n.transition),W=p,hn(K),W}const fc=e=>{let t;for(const n in e)(n==="class"||n==="style"||Bt(n))&&((t||(t={}))[n]=e[n]);return t},uc=(e,t)=>{const n={};for(const s in e)(!gs(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function dc(e,t,n){const{props:s,children:r,component:i}=e,{props:o,children:l,patchFlag:c}=t,f=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return s?ar(s,o,f):!!o;if(c&8){const d=t.dynamicProps;for(let h=0;he.__isSuspense;function Bi(e,t){t&&t.pendingBranch?B(e)?t.effects.push(...e):t.effects.push(e):_l(e)}const be=Symbol.for("v-fgt"),ft=Symbol.for("v-txt"),ye=Symbol.for("v-cmt"),Nt=Symbol.for("v-stc"),Ft=[];let Ce=null;function ki(e=!1){Ft.push(Ce=e?null:[])}function gc(){Ft.pop(),Ce=Ft[Ft.length-1]||null}let Dt=1;function fr(e){Dt+=e,e<0&&Ce&&(Ce.hasOnce=!0)}function Ki(e){return e.dynamicChildren=Dt>0?Ce||mt:null,gc(),Dt>0&&Ce&&Ce.push(e),e}function af(e,t,n,s,r,i){return Ki(Gi(e,t,n,s,r,i,!0))}function Wi(e,t,n,s,r){return Ki(ue(e,t,n,s,r,!0))}function yn(e){return e?e.__v_isVNode===!0:!1}function lt(e,t){return e.type===t.type&&e.key===t.key}const qi=({key:e})=>e??null,cn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?re(e)||ge(e)||k(e)?{i:pe,r:e,k:t,f:!!n}:e:null);function Gi(e,t=null,n=null,s=0,r=null,i=e===be?0:1,o=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&qi(t),ref:t&&cn(t),scopeId:An,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:pe};return l?(Ns(c,n),i&128&&e.normalize(c)):n&&(c.shapeFlag|=re(n)?8:16),Dt>0&&!o&&Ce&&(c.patchFlag>0||i&6)&&c.patchFlag!==32&&Ce.push(c),c}const ue=mc;function mc(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===bi)&&(e=ye),yn(e)){const l=ze(e,t,!0);return n&&Ns(l,n),Dt>0&&!i&&Ce&&(l.shapeFlag&6?Ce[Ce.indexOf(e)]=l:Ce.push(l)),l.patchFlag=-2,l}if(Tc(e)&&(e=e.__vccOpts),t){t=yc(t);let{class:l,style:c}=t;l&&!re(l)&&(t.class=bs(l)),Z(c)&&(si(c)&&!B(c)&&(c=le({},c)),t.style=_s(c))}const o=re(e)?1:pc(e)?128:zl(e)?64:Z(e)?4:k(e)?2:0;return Gi(e,t,n,s,r,o,i,!0)}function yc(e){return e?si(e)||Ti(e)?le({},e):e:null}function ze(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:o,children:l,transition:c}=e,f=t?_c(r||{},t):r,d={__v_isVNode:!0,__v_skip:!0,type:e.type,props:f,key:f&&qi(f),ref:t&&t.ref?n&&i?B(i)?i.concat(cn(t)):[i,cn(t)]:cn(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==be?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:c,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&ze(e.ssContent),ssFallback:e.ssFallback&&ze(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return c&&s&&pn(d,c.clone(d)),d}function Xi(e=" ",t=0){return ue(ft,null,e,t)}function ff(e,t){const n=ue(Nt,null,e);return n.staticCount=t,n}function uf(e="",t=!1){return t?(ki(),Wi(ye,null,e)):ue(ye,null,e)}function Te(e){return e==null||typeof e=="boolean"?ue(ye):B(e)?ue(be,null,e.slice()):typeof e=="object"?We(e):ue(ft,null,String(e))}function We(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:ze(e)}function Ns(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(B(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),Ns(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Ti(t)?t._ctx=pe:r===3&&pe&&(pe.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else k(t)?(t={default:t,_ctx:pe},n=32):(t=String(t),s&64?(n=16,t=[Xi(t)]):n=8);e.children=t,e.shapeFlag|=n}function _c(...e){const t={};for(let n=0;nae||pe;let _n,ds;{const e=Ur(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(o=>o(i)):r[0](i)}};_n=t("__VUE_INSTANCE_SETTERS__",n=>ae=n),ds=t("__VUE_SSR_SETTERS__",n=>Nn=n)}const kt=e=>{const t=ae;return _n(e),e.scope.on(),()=>{e.scope.off(),_n(t)}},ur=()=>{ae&&ae.scope.off(),_n(null)};function Yi(e){return e.vnode.shapeFlag&4}let Nn=!1;function Ec(e,t=!1,n=!1){t&&ds(t);const{props:s,children:r}=e.vnode,i=Yi(e);Kl(e,s,i,t),Xl(e,r,n);const o=i?Cc(e,t):void 0;return t&&ds(!1),o}function Cc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Nl);const{setup:s}=n;if(s){const r=e.setupContext=s.length>1?Ji(e):null,i=kt(e);Ze();const o=Ge(s,e,0,[e.props,r]);if(et(),i(),$r(o)){if(o.then(ur,ur),t)return o.then(l=>{dr(e,l,t)}).catch(l=>{xn(l,e,0)});e.asyncDep=o}else dr(e,o,t)}else zi(e,t)}function dr(e,t,n){k(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=ci(t)),zi(e,n)}let hr;function zi(e,t,n){const s=e.type;if(!e.render){if(!t&&hr&&!s.render){const r=s.template||Ms(e).template;if(r){const{isCustomElement:i,compilerOptions:o}=e.appContext.config,{delimiters:l,compilerOptions:c}=s,f=le(le({isCustomElement:i,delimiters:l},o),c);s.render=hr(r,f)}}e.render=s.render||Ae}{const r=kt(e);Ze();try{Hl(e)}finally{et(),r()}}}const Sc={get(e,t){return we(e,"get",""),e[t]}};function Ji(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Sc),slots:e.slots,emit:e.emit,expose:t}}function Fs(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(ci(ln(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in It)return It[n](e)},has(t,n){return n in t||n in It}})):e.proxy}function xc(e,t=!0){return k(e)?e.displayName||e.name:e.name||t&&e.__name}function Tc(e){return k(e)&&"__vccOpts"in e}const ie=(e,t)=>ol(e,t,Nn);function hs(e,t,n){const s=arguments.length;return s===2?Z(t)&&!B(t)?yn(t)?ue(e,null,[t]):ue(e,t):ue(e,null,t):(s>3?n=Array.prototype.slice.call(arguments,2):s===3&&yn(n)&&(n=[n]),ue(e,t,n))}const Ac="3.4.38";/** +* @vue/runtime-dom v3.4.38 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Rc="http://www.w3.org/2000/svg",Oc="http://www.w3.org/1998/Math/MathML",He=typeof document<"u"?document:null,pr=He&&He.createElement("template"),Lc={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?He.createElementNS(Rc,e):t==="mathml"?He.createElementNS(Oc,e):n?He.createElement(e,{is:n}):He.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>He.createTextNode(e),createComment:e=>He.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>He.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const o=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{pr.innerHTML=s==="svg"?`${e}`:s==="mathml"?`${e}`:e;const l=pr.content;if(s==="svg"||s==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[o?o.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ue="transition",Ot="animation",Ut=Symbol("_vtc"),Qi=(e,{slots:t})=>hs(Cl,Mc(e),t);Qi.displayName="Transition";const Zi={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};Qi.props=le({},di,Zi);const st=(e,t=[])=>{B(e)?e.forEach(n=>n(...t)):e&&e(...t)},gr=e=>e?B(e)?e.some(t=>t.length>1):e.length>1:!1;function Mc(e){const t={};for(const E in e)E in Zi||(t[E]=e[E]);if(e.css===!1)return t;const{name:n="v",type:s,duration:r,enterFromClass:i=`${n}-enter-from`,enterActiveClass:o=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=i,appearActiveClass:f=o,appearToClass:d=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:m=`${n}-leave-active`,leaveToClass:S=`${n}-leave-to`}=e,R=Ic(r),M=R&&R[0],K=R&&R[1],{onBeforeEnter:W,onEnter:G,onEnterCancelled:p,onLeave:y,onLeaveCancelled:I,onBeforeAppear:x=W,onAppear:F=G,onAppearCancelled:j=p}=t,L=(E,U,ee)=>{rt(E,U?d:l),rt(E,U?f:o),ee&&ee()},_=(E,U)=>{E._isLeaving=!1,rt(E,h),rt(E,S),rt(E,m),U&&U()},P=E=>(U,ee)=>{const ne=E?F:G,V=()=>L(U,E,ee);st(ne,[U,V]),mr(()=>{rt(U,E?c:i),Be(U,E?d:l),gr(ne)||yr(U,s,M,V)})};return le(t,{onBeforeEnter(E){st(W,[E]),Be(E,i),Be(E,o)},onBeforeAppear(E){st(x,[E]),Be(E,c),Be(E,f)},onEnter:P(!1),onAppear:P(!0),onLeave(E,U){E._isLeaving=!0;const ee=()=>_(E,U);Be(E,h),Be(E,m),Fc(),mr(()=>{E._isLeaving&&(rt(E,h),Be(E,S),gr(y)||yr(E,s,K,ee))}),st(y,[E,ee])},onEnterCancelled(E){L(E,!1),st(p,[E])},onAppearCancelled(E){L(E,!0),st(j,[E])},onLeaveCancelled(E){_(E),st(I,[E])}})}function Ic(e){if(e==null)return null;if(Z(e))return[Kn(e.enter),Kn(e.leave)];{const t=Kn(e);return[t,t]}}function Kn(e){return Ro(e)}function Be(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[Ut]||(e[Ut]=new Set)).add(t)}function rt(e,t){t.split(/\s+/).forEach(s=>s&&e.classList.remove(s));const n=e[Ut];n&&(n.delete(t),n.size||(e[Ut]=void 0))}function mr(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Pc=0;function yr(e,t,n,s){const r=e._endId=++Pc,i=()=>{r===e._endId&&s()};if(n)return setTimeout(i,n);const{type:o,timeout:l,propCount:c}=Nc(e,t);if(!o)return s();const f=o+"end";let d=0;const h=()=>{e.removeEventListener(f,m),i()},m=S=>{S.target===e&&++d>=c&&h()};setTimeout(()=>{d(n[R]||"").split(", "),r=s(`${Ue}Delay`),i=s(`${Ue}Duration`),o=_r(r,i),l=s(`${Ot}Delay`),c=s(`${Ot}Duration`),f=_r(l,c);let d=null,h=0,m=0;t===Ue?o>0&&(d=Ue,h=o,m=i.length):t===Ot?f>0&&(d=Ot,h=f,m=c.length):(h=Math.max(o,f),d=h>0?o>f?Ue:Ot:null,m=d?d===Ue?i.length:c.length:0);const S=d===Ue&&/\b(transform|all)(,|$)/.test(s(`${Ue}Property`).toString());return{type:d,timeout:h,propCount:m,hasTransform:S}}function _r(e,t){for(;e.lengthbr(n)+br(e[s])))}function br(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Fc(){return document.body.offsetHeight}function Hc(e,t,n){const s=e[Ut];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const wr=Symbol("_vod"),$c=Symbol("_vsh"),jc=Symbol(""),Vc=/(^|;)\s*display\s*:/;function Dc(e,t,n){const s=e.style,r=re(n);let i=!1;if(n&&!r){if(t)if(re(t))for(const o of t.split(";")){const l=o.slice(0,o.indexOf(":")).trim();n[l]==null&&an(s,l,"")}else for(const o in t)n[o]==null&&an(s,o,"");for(const o in n)o==="display"&&(i=!0),an(s,o,n[o])}else if(r){if(t!==n){const o=s[jc];o&&(n+=";"+o),s.cssText=n,i=Vc.test(n)}}else t&&e.removeAttribute("style");wr in e&&(e[wr]=i?s.display:"",e[$c]&&(s.display="none"))}const vr=/\s*!important$/;function an(e,t,n){if(B(n))n.forEach(s=>an(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=Uc(e,t);vr.test(n)?e.setProperty(Qe(s),n.replace(vr,""),"important"):e[s]=n}}const Er=["Webkit","Moz","ms"],Wn={};function Uc(e,t){const n=Wn[t];if(n)return n;let s=Le(t);if(s!=="filter"&&s in e)return Wn[t]=s;s=vn(s);for(let r=0;rqn||(Gc.then(()=>qn=0),qn=Date.now());function Yc(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Re(zc(s,n.value),t,5,[s])};return n.value=e,n.attached=Xc(),n}function zc(e,t){if(B(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Ar=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Jc=(e,t,n,s,r,i)=>{const o=r==="svg";t==="class"?Hc(e,s,o):t==="style"?Dc(e,n,s):Bt(t)?gs(t)||Wc(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Qc(e,t,s,o))?(Bc(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Sr(e,t,s,o,i,t!=="value")):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Sr(e,t,s,o))};function Qc(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Ar(t)&&k(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Ar(t)&&re(n)?!1:t in e}const Zc=["ctrl","shift","alt","meta"],ea={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Zc.some(n=>e[`${n}Key`]&&!t.includes(n))},df=(e,t)=>{const n=e._withMods||(e._withMods={}),s=t.join(".");return n[s]||(n[s]=(r,...i)=>{for(let o=0;o{const n=e._withKeys||(e._withKeys={}),s=t.join(".");return n[s]||(n[s]=r=>{if(!("key"in r))return;const i=Qe(r.key);if(t.some(o=>o===i||ta[o]===i))return e(r)})},eo=le({patchProp:Jc},Lc);let Ht,Rr=!1;function na(){return Ht||(Ht=nc(eo))}function sa(){return Ht=Rr?Ht:sc(eo),Rr=!0,Ht}const pf=(...e)=>{const t=na().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=no(s);if(!r)return;const i=t._component;!k(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.innerHTML="";const o=n(r,!1,to(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),o},t},gf=(...e)=>{const t=sa().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=no(s);if(r)return n(r,!0,to(r))},t};function to(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function no(e){return re(e)?document.querySelector(e):e}const mf=(e,t)=>{const n=e.__vccOpts||e;for(const[s,r]of t)n[s]=r;return n},ra=window.__VP_SITE_DATA__;function Hs(e){return Wr()?(jo(e),!0):!1}function Xe(e){return typeof e=="function"?e():li(e)}const so=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const ia=Object.prototype.toString,oa=e=>ia.call(e)==="[object Object]",ro=()=>{},Or=la();function la(){var e,t;return so&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(?:ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function ca(e,t){function n(...s){return new Promise((r,i)=>{Promise.resolve(e(()=>t.apply(this,s),{fn:t,thisArg:this,args:s})).then(r).catch(i)})}return n}const io=e=>e();function aa(e=io){const t=fe(!0);function n(){t.value=!1}function s(){t.value=!0}const r=(...i)=>{t.value&&e(...i)};return{isActive:Sn(t),pause:n,resume:s,eventFilter:r}}function fa(e){return Pn()}function oo(...e){if(e.length!==1)return hl(...e);const t=e[0];return typeof t=="function"?Sn(fl(()=>({get:t,set:ro}))):fe(t)}function ua(e,t,n={}){const{eventFilter:s=io,...r}=n;return Fe(e,ca(s,t),r)}function da(e,t,n={}){const{eventFilter:s,...r}=n,{eventFilter:i,pause:o,resume:l,isActive:c}=aa(s);return{stop:ua(e,t,{...r,eventFilter:i}),pause:o,resume:l,isActive:c}}function $s(e,t=!0,n){fa()?Tt(e,n):t?e():Tn(e)}function lo(e){var t;const n=Xe(e);return(t=n==null?void 0:n.$el)!=null?t:n}const je=so?window:void 0;function xt(...e){let t,n,s,r;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,s,r]=e,t=je):[t,n,s,r]=e,!t)return ro;Array.isArray(n)||(n=[n]),Array.isArray(s)||(s=[s]);const i=[],o=()=>{i.forEach(d=>d()),i.length=0},l=(d,h,m,S)=>(d.addEventListener(h,m,S),()=>d.removeEventListener(h,m,S)),c=Fe(()=>[lo(t),Xe(r)],([d,h])=>{if(o(),!d)return;const m=oa(h)?{...h}:h;i.push(...n.flatMap(S=>s.map(R=>l(d,S,R,m))))},{immediate:!0,flush:"post"}),f=()=>{c(),o()};return Hs(f),f}function ha(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function yf(...e){let t,n,s={};e.length===3?(t=e[0],n=e[1],s=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],s=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:r=je,eventName:i="keydown",passive:o=!1,dedupe:l=!1}=s,c=ha(t);return xt(r,i,d=>{d.repeat&&Xe(l)||c(d)&&n(d)},o)}function pa(){const e=fe(!1),t=Pn();return t&&Tt(()=>{e.value=!0},t),e}function ga(e){const t=pa();return ie(()=>(t.value,!!e()))}function co(e,t={}){const{window:n=je}=t,s=ga(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let r;const i=fe(!1),o=f=>{i.value=f.matches},l=()=>{r&&("removeEventListener"in r?r.removeEventListener("change",o):r.removeListener(o))},c=Vi(()=>{s.value&&(l(),r=n.matchMedia(Xe(e)),"addEventListener"in r?r.addEventListener("change",o):r.addListener(o),i.value=r.matches)});return Hs(()=>{c(),l(),r=void 0}),i}const nn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},sn="__vueuse_ssr_handlers__",ma=ya();function ya(){return sn in nn||(nn[sn]=nn[sn]||{}),nn[sn]}function ao(e,t){return ma[e]||t}function _a(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const ba={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Lr="vueuse-storage";function wa(e,t,n,s={}){var r;const{flush:i="pre",deep:o=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:f=!1,shallow:d,window:h=je,eventFilter:m,onError:S=_=>{console.error(_)},initOnMounted:R}=s,M=(d?ii:fe)(typeof t=="function"?t():t);if(!n)try{n=ao("getDefaultStorage",()=>{var _;return(_=je)==null?void 0:_.localStorage})()}catch(_){S(_)}if(!n)return M;const K=Xe(t),W=_a(K),G=(r=s.serializer)!=null?r:ba[W],{pause:p,resume:y}=da(M,()=>x(M.value),{flush:i,deep:o,eventFilter:m});h&&l&&$s(()=>{n instanceof Storage?xt(h,"storage",j):xt(h,Lr,L),R&&j()}),R||j();function I(_,P){if(h){const E={key:e,oldValue:_,newValue:P,storageArea:n};h.dispatchEvent(n instanceof Storage?new StorageEvent("storage",E):new CustomEvent(Lr,{detail:E}))}}function x(_){try{const P=n.getItem(e);if(_==null)I(P,null),n.removeItem(e);else{const E=G.write(_);P!==E&&(n.setItem(e,E),I(P,E))}}catch(P){S(P)}}function F(_){const P=_?_.newValue:n.getItem(e);if(P==null)return c&&K!=null&&n.setItem(e,G.write(K)),K;if(!_&&f){const E=G.read(P);return typeof f=="function"?f(E,K):W==="object"&&!Array.isArray(E)?{...K,...E}:E}else return typeof P!="string"?P:G.read(P)}function j(_){if(!(_&&_.storageArea!==n)){if(_&&_.key==null){M.value=K;return}if(!(_&&_.key!==e)){p();try{(_==null?void 0:_.newValue)!==G.write(M.value)&&(M.value=F(_))}catch(P){S(P)}finally{_?Tn(y):y()}}}}function L(_){j(_.detail)}return M}function fo(e){return co("(prefers-color-scheme: dark)",e)}const va="*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}";function Ea(e={}){const{selector:t="html",attribute:n="class",initialValue:s="auto",window:r=je,storage:i,storageKey:o="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:f,disableTransition:d=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},m=fo({window:r}),S=ie(()=>m.value?"dark":"light"),R=c||(o==null?oo(s):wa(o,s,i,{window:r,listenToStorageChanges:l})),M=ie(()=>R.value==="auto"?S.value:R.value),K=ao("updateHTMLAttrs",(y,I,x)=>{const F=typeof y=="string"?r==null?void 0:r.document.querySelector(y):lo(y);if(!F)return;const j=new Set,L=new Set;let _=null;if(I==="class"){const E=x.split(/\s/g);Object.values(h).flatMap(U=>(U||"").split(/\s/g)).filter(Boolean).forEach(U=>{E.includes(U)?j.add(U):L.add(U)})}else _={key:I,value:x};if(j.size===0&&L.size===0&&_===null)return;let P;d&&(P=r.document.createElement("style"),P.appendChild(document.createTextNode(va)),r.document.head.appendChild(P));for(const E of j)F.classList.add(E);for(const E of L)F.classList.remove(E);_&&F.setAttribute(_.key,_.value),d&&(r.getComputedStyle(P).opacity,document.head.removeChild(P))});function W(y){var I;K(t,n,(I=h[y])!=null?I:y)}function G(y){e.onChanged?e.onChanged(y,W):W(y)}Fe(M,G,{flush:"post",immediate:!0}),$s(()=>G(M.value));const p=ie({get(){return f?R.value:M.value},set(y){R.value=y}});try{return Object.assign(p,{store:R,system:S,state:M})}catch{return p}}function Ca(e={}){const{valueDark:t="dark",valueLight:n="",window:s=je}=e,r=Ea({...e,onChanged:(l,c)=>{var f;e.onChanged?(f=e.onChanged)==null||f.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),i=ie(()=>r.system?r.system.value:fo({window:s}).value?"dark":"light");return ie({get(){return r.value==="dark"},set(l){const c=l?"dark":"light";i.value===c?r.value="auto":r.value=c}})}function Gn(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function uo(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const Xn=new WeakMap;function _f(e,t=!1){const n=fe(t);let s=null,r="";Fe(oo(e),l=>{const c=Gn(Xe(l));if(c){const f=c;if(Xn.get(f)||Xn.set(f,f.style.overflow),f.style.overflow!=="hidden"&&(r=f.style.overflow),f.style.overflow==="hidden")return n.value=!0;if(n.value)return f.style.overflow="hidden"}},{immediate:!0});const i=()=>{const l=Gn(Xe(e));!l||n.value||(Or&&(s=xt(l,"touchmove",c=>{Sa(c)},{passive:!1})),l.style.overflow="hidden",n.value=!0)},o=()=>{const l=Gn(Xe(e));!l||!n.value||(Or&&(s==null||s()),l.style.overflow=r,Xn.delete(l),n.value=!1)};return Hs(o),ie({get(){return n.value},set(l){l?i():o()}})}function bf(e={}){const{window:t=je,behavior:n="auto"}=e;if(!t)return{x:fe(0),y:fe(0)};const s=fe(t.scrollX),r=fe(t.scrollY),i=ie({get(){return s.value},set(l){scrollTo({left:l,behavior:n})}}),o=ie({get(){return r.value},set(l){scrollTo({top:l,behavior:n})}});return xt(t,"scroll",()=>{s.value=t.scrollX,r.value=t.scrollY},{capture:!1,passive:!0}),{x:i,y:o}}function wf(e={}){const{window:t=je,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:s=Number.POSITIVE_INFINITY,listenOrientation:r=!0,includeScrollbar:i=!0,type:o="inner"}=e,l=fe(n),c=fe(s),f=()=>{t&&(o==="outer"?(l.value=t.outerWidth,c.value=t.outerHeight):i?(l.value=t.innerWidth,c.value=t.innerHeight):(l.value=t.document.documentElement.clientWidth,c.value=t.document.documentElement.clientHeight))};if(f(),$s(f),xt("resize",f,{passive:!0}),r){const d=co("(orientation: portrait)");Fe(d,()=>f())}return{width:l,height:c}}const Yn={BASE_URL:"/case-study/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};var zn={};const ho=/^(?:[a-z]+:|\/\/)/i,xa="vitepress-theme-appearance",Ta=/#.*$/,Aa=/[?#].*$/,Ra=/(?:(^|\/)index)?\.(?:md|html)$/,de=typeof document<"u",po={relativePath:"404.md",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Oa(e,t,n=!1){if(t===void 0)return!1;if(e=Mr(`/${e}`),n)return new RegExp(t).test(e);if(Mr(t)!==e)return!1;const s=t.match(Ta);return s?(de?location.hash:"")===s[0]:!0}function Mr(e){return decodeURI(e).replace(Aa,"").replace(Ra,"$1")}function La(e){return ho.test(e)}function Ma(e,t){return Object.keys((e==null?void 0:e.locales)||{}).find(n=>n!=="root"&&!La(n)&&Oa(t,`/${n}/`,!0))||"root"}function Ia(e,t){var s,r,i,o,l,c,f;const n=Ma(e,t);return Object.assign({},e,{localeIndex:n,lang:((s=e.locales[n])==null?void 0:s.lang)??e.lang,dir:((r=e.locales[n])==null?void 0:r.dir)??e.dir,title:((i=e.locales[n])==null?void 0:i.title)??e.title,titleTemplate:((o=e.locales[n])==null?void 0:o.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:mo(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(f=e.locales[n])==null?void 0:f.themeConfig}})}function go(e,t){const n=t.title||e.title,s=t.titleTemplate??e.titleTemplate;if(typeof s=="string"&&s.includes(":title"))return s.replace(/:title/g,n);const r=Pa(e.title,s);return n===r.slice(3)?n:`${n}${r}`}function Pa(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Na(e,t){const[n,s]=t;if(n!=="meta")return!1;const r=Object.entries(s)[0];return r==null?!1:e.some(([i,o])=>i===n&&o[r[0]]===r[1])}function mo(e,t){return[...e.filter(n=>!Na(t,n)),...t]}const Fa=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Ha=/^[a-z]:/i;function Ir(e){const t=Ha.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace(Fa,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const Jn=new Set;function $a(e){if(Jn.size===0){const n=typeof process=="object"&&(zn==null?void 0:zn.VITE_EXTRA_EXTENSIONS)||(Yn==null?void 0:Yn.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(s=>Jn.add(s))}const t=e.split(".").pop();return t==null||!Jn.has(t.toLowerCase())}const ja=Symbol(),ut=ii(ra);function vf(e){const t=ie(()=>Ia(ut.value,e.data.relativePath)),n=t.value.appearance,s=n==="force-dark"?fe(!0):n?Ca({storageKey:xa,initialValue:()=>n==="dark"?"dark":"auto",...typeof n=="object"?n:{}}):fe(!1),r=fe(de?location.hash:"");return de&&window.addEventListener("hashchange",()=>{r.value=location.hash}),Fe(()=>e.data,()=>{r.value=de?location.hash:""}),{site:t,theme:ie(()=>t.value.themeConfig),page:ie(()=>e.data),frontmatter:ie(()=>e.data.frontmatter),params:ie(()=>e.data.params),lang:ie(()=>t.value.lang),dir:ie(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ie(()=>t.value.localeIndex||"root"),title:ie(()=>go(t.value,e.data)),description:ie(()=>e.data.description||t.value.description),isDark:s,hash:ie(()=>r.value)}}function Va(){const e=Ct(ja);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Da(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Pr(e){return ho.test(e)||!e.startsWith("/")?e:Da(ut.value.base,e)}function Ua(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),de){const n="/case-study/";t=Ir(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let s=__VP_HASH_MAP__[t.toLowerCase()];if(s||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",s=__VP_HASH_MAP__[t.toLowerCase()]),!s)return null;t=`${n}assets/${t}.${s}.js`}else t=`./${Ir(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let fn=[];function Ef(e){fn.push(e),Ln(()=>{fn=fn.filter(t=>t!==e)})}function Ba(){let e=ut.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Nr(e,n);else if(Array.isArray(e))for(const s of e){const r=Nr(s,n);if(r){t=r;break}}return t}function Nr(e,t){const n=document.querySelector(e);if(!n)return 0;const s=n.getBoundingClientRect().bottom;return s<0?0:s+t}const ka=Symbol(),yo="http://a.com",Ka=()=>({path:"/",component:null,data:po});function Cf(e,t){const n=Cn(Ka()),s={route:n,go:r};async function r(l=de?location.href:"/"){var c,f;l=Qn(l),await((c=s.onBeforeRouteChange)==null?void 0:c.call(s,l))!==!1&&(de&&l!==Qn(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await o(l),await((f=s.onAfterRouteChanged)==null?void 0:f.call(s,l)))}let i=null;async function o(l,c=0,f=!1){var m;if(await((m=s.onBeforePageLoad)==null?void 0:m.call(s,l))===!1)return;const d=new URL(l,yo),h=i=d.pathname;try{let S=await e(h);if(!S)throw new Error(`Page not found: ${h}`);if(i===h){i=null;const{default:R,__pageData:M}=S;if(!R)throw new Error(`Invalid route component: ${R}`);n.path=de?h:Pr(h),n.component=ln(R),n.data=ln(M),de&&Tn(()=>{let K=ut.value.base+M.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!ut.value.cleanUrls&&!K.endsWith("/")&&(K+=".html"),K!==d.pathname&&(d.pathname=K,l=K+d.search+d.hash,history.replaceState({},"",l)),d.hash&&!c){let W=null;try{W=document.getElementById(decodeURIComponent(d.hash).slice(1))}catch(G){console.warn(G)}if(W){Fr(W,d.hash);return}}window.scrollTo(0,c)})}}catch(S){if(!/fetch|Page not found/.test(S.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(S),!f)try{const R=await fetch(ut.value.base+"hashmap.json");window.__VP_HASH_MAP__=await R.json(),await o(l,c,!0);return}catch{}if(i===h){i=null,n.path=de?h:Pr(h),n.component=t?ln(t):null;const R=de?h.replace(/(^|\/)$/,"$1index").replace(/(\.html)?$/,".md").replace(/^\//,""):"404.md";n.data={...po,relativePath:R}}}}return de&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.defaultPrevented||!(l.target instanceof Element)||l.target.closest("button")||l.button!==0||l.ctrlKey||l.shiftKey||l.altKey||l.metaKey)return;const c=l.target.closest("a");if(!c||c.closest(".vp-raw")||c.hasAttribute("download")||c.hasAttribute("target"))return;const f=c.getAttribute("href")??(c instanceof SVGAElement?c.getAttribute("xlink:href"):null);if(f==null)return;const{href:d,origin:h,pathname:m,hash:S,search:R}=new URL(f,c.baseURI),M=new URL(location.href);h===M.origin&&$a(m)&&(l.preventDefault(),m===M.pathname&&R===M.search?(S!==M.hash&&(history.pushState({},"",d),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:M.href,newURL:d}))),S?Fr(c,S,c.classList.contains("header-anchor")):window.scrollTo(0,0)):r(d))},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await o(Qn(location.href),l.state&&l.state.scrollPosition||0),(c=s.onAfterRouteChanged)==null||c.call(s,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),s}function Wa(){const e=Ct(ka);if(!e)throw new Error("useRouter() is called without provider.");return e}function _o(){return Wa().route}function Fr(e,t,n=!1){let s=null;try{s=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(r){console.warn(r)}if(s){let r=function(){!n||Math.abs(o-window.scrollY)>window.innerHeight?window.scrollTo(0,o):window.scrollTo({left:0,top:o,behavior:"smooth"})};const i=parseInt(window.getComputedStyle(s).paddingTop,10),o=window.scrollY+s.getBoundingClientRect().top-Ba()+i;requestAnimationFrame(r)}}function Qn(e){const t=new URL(e,yo);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),ut.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const Zn=()=>fn.forEach(e=>e()),Sf=mi({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=_o(),{site:n}=Va();return()=>hs(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?hs(t.component,{onVnodeMounted:Zn,onVnodeUpdated:Zn,onVnodeUnmounted:Zn}):"404 Page Not Found"])}}),xf=mi({setup(e,{slots:t}){const n=fe(!1);return Tt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Tf(){de&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const s=(n=t.parentElement)==null?void 0:n.parentElement;if(!s)return;const r=Array.from(s.querySelectorAll("input")).indexOf(t);if(r<0)return;const i=s.querySelector(".blocks");if(!i)return;const o=Array.from(i.children).find(f=>f.classList.contains("active"));if(!o)return;const l=i.children[r];if(!l||o===l)return;o.classList.remove("active"),l.classList.add("active");const c=s==null?void 0:s.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function Af(){if(de){const e=new WeakMap;window.addEventListener("click",t=>{var s;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const r=n.parentElement,i=(s=n.nextElementSibling)==null?void 0:s.nextElementSibling;if(!r||!i)return;const o=/language-(shellscript|shell|bash|sh|zsh)/.test(r.className),l=[".vp-copy-ignore",".diff.remove"],c=i.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(d=>d.remove());let f=c.textContent||"";o&&(f=f.replace(/^ *(\$|>) /gm,"").trim()),qa(f).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const d=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,d)})}})}}async function qa(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const s=document.getSelection(),r=s?s.rangeCount>0&&s.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),r&&(s.removeAllRanges(),s.addRange(r)),n&&n.focus()}}function Rf(e,t){let n=!0,s=[];const r=i=>{if(n){n=!1,i.forEach(l=>{const c=es(l);for(const f of document.head.children)if(f.isEqualNode(c)){s.push(f);return}});return}const o=i.map(es);s.forEach((l,c)=>{const f=o.findIndex(d=>d==null?void 0:d.isEqualNode(l??null));f!==-1?delete o[f]:(l==null||l.remove(),delete s[c])}),o.forEach(l=>l&&document.head.appendChild(l)),s=[...s,...o].filter(Boolean)};Vi(()=>{const i=e.data,o=t.value,l=i&&i.description,c=i&&i.frontmatter.head||[],f=go(o,i);f!==document.title&&(document.title=f);const d=l||o.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==d&&h.setAttribute("content",d):es(["meta",{name:"description",content:d}]),r(mo(o.head,Xa(c)))})}function es([e,t,n]){const s=document.createElement(e);for(const r in t)s.setAttribute(r,t[r]);return n&&(s.innerHTML=n),e==="script"&&!t.async&&(s.async=!1),s}function Ga(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Xa(e){return e.filter(t=>!Ga(t))}const ts=new Set,bo=()=>document.createElement("link"),Ya=e=>{const t=bo();t.rel="prefetch",t.href=e,document.head.appendChild(t)},za=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let rn;const Ja=de&&(rn=bo())&&rn.relList&&rn.relList.supports&&rn.relList.supports("prefetch")?Ya:za;function Of(){if(!de||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const s=()=>{n&&n.disconnect(),n=new IntersectionObserver(i=>{i.forEach(o=>{if(o.isIntersecting){const l=o.target;n.unobserve(l);const{pathname:c}=l;if(!ts.has(c)){ts.add(c);const f=Ua(c);f&&Ja(f)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(i=>{const{hostname:o,pathname:l}=new URL(i.href instanceof SVGAnimatedString?i.href.animVal:i.href,i.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||i.target!=="_blank"&&o===location.hostname&&(l!==location.pathname?n.observe(i):ts.add(l))})})};Tt(s);const r=_o();Fe(()=>r.path,s),Ln(()=>{n&&n.disconnect()})}export{Sn as $,Pr as A,li as B,Oa as C,co as D,Vi as E,be as F,Tt as G,Ln as H,cf as I,Ol as J,Ba as K,ii as L,Ef as M,ue as N,tf as O,ho as P,_o as Q,_c as R,Ct as S,lf as T,wf as U,_s as V,yf as W,Tn as X,bf as Y,de as Z,mf as _,ie as a,_f as a0,kl as a1,rf as a2,hf as a3,_i as a4,of as a5,ge as a6,bt as a7,Pn as a8,yn as a9,pf as aa,Rf as ab,ka as ac,vf as ad,ja as ae,Sf as af,xf as ag,ut as ah,gf as ai,Cf as aj,Ua as ak,Of as al,Af as am,Tf as an,Cn as b,ff as c,mi as d,ef as e,af as f,Gi as g,hs as h,nf as i,Wi as j,df as k,uf as l,Xi as m,bs as n,ki as o,Qa as p,Za as q,fe as r,sf as s,Fo as t,wl as u,Qi as v,Fe as w,Va as x,La as y,$a as z}; diff --git a/docs/.vitepress/dist/assets/chunks/theme.CRDhqLDM.js b/docs/.vitepress/dist/assets/chunks/theme.CRDhqLDM.js deleted file mode 100644 index 3d5604b..0000000 --- a/docs/.vitepress/dist/assets/chunks/theme.CRDhqLDM.js +++ /dev/null @@ -1 +0,0 @@ -import{d as _,o as a,c,r as l,n as w,a as O,t as T,b as k,w as v,e as f,T as de,_ as b,u as Oe,i as Ge,f as Ue,g as ve,h as g,j as p,k as r,p as C,l as H,m as W,q as ie,s as I,v as G,x as Z,y as K,z as pe,A as he,B as je,C as ze,D as J,F as M,E,G as ye,H as x,I as m,J as F,K as Pe,L as ee,M as q,N as te,O as qe,P as Ve,Q as We,R as Ke,S as Le,U as oe,V as Je,W as Se,X as Te,Y as Re,Z as Ye,$ as Qe,a0 as Xe,a1 as Ze}from"./framework.BJvAGJ4I.js";const xe=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),c("span",{class:w(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[O(T(e.text),1)])],2))}}),et={key:0,class:"VPBackdrop"},tt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),k(de,{name:"fade"},{default:v(()=>[e.show?(a(),c("div",et)):f("",!0)]),_:1}))}}),ot=b(tt,[["__scopeId","data-v-c79a1216"]]),P=Oe;function nt(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function le(o){return/^\//.test(o)?o:`/${o}`}function fe(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(Ge(o)||o.startsWith("#")||!n.startsWith("http")||!Ue(e))return o;const{site:i}=P(),u=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${s}`);return ve(u)}function Y({correspondingLink:o=!1}={}){const{site:e,localeIndex:t,page:s,theme:n,hash:i}=P(),u=g(()=>{var d,$;return{label:(d=e.value.locales[t.value])==null?void 0:d.label,link:(($=e.value.locales[t.value])==null?void 0:$.link)||(t.value==="root"?"/":`/${t.value}/`)}});return{localeLinks:g(()=>Object.entries(e.value.locales).flatMap(([d,$])=>u.value.label===$.label?[]:{text:$.label,link:st($.link||(d==="root"?"/":`/${d}/`),n.value.i18nRouting!==!1&&o,s.value.relativePath.slice(u.value.link.length-1),!e.value.cleanUrls)+i.value})),currentLang:u}}function st(o,e,t,s){return e?o.replace(/\/$/,"")+le(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const at=o=>(C("data-v-d6be1790"),o=o(),H(),o),rt={class:"NotFound"},it={class:"code"},lt={class:"title"},ct=at(()=>p("div",{class:"divider"},null,-1)),ut={class:"quote"},dt={class:"action"},vt=["href","aria-label"],pt=_({__name:"NotFound",setup(o){const{theme:e}=P(),{currentLang:t}=Y();return(s,n)=>{var i,u,h,d,$;return a(),c("div",rt,[p("p",it,T(((i=r(e).notFound)==null?void 0:i.code)??"404"),1),p("h1",lt,T(((u=r(e).notFound)==null?void 0:u.title)??"PAGE NOT FOUND"),1),ct,p("blockquote",ut,T(((h=r(e).notFound)==null?void 0:h.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),p("div",dt,[p("a",{class:"link",href:r(ve)(r(t).link),"aria-label":((d=r(e).notFound)==null?void 0:d.linkLabel)??"go to home"},T((($=r(e).notFound)==null?void 0:$.linkText)??"Take me home"),9,vt)])])}}}),ht=b(pt,[["__scopeId","data-v-d6be1790"]]);function Ie(o,e){if(Array.isArray(o))return Q(o);if(o==null)return[];e=le(e);const t=Object.keys(o).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(le(n))),s=t?o[t]:[];return Array.isArray(s)?Q(s):Q(s.items,s.base)}function ft(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function _t(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function ce(o,e){return Array.isArray(e)?e.some(t=>ce(o,t)):W(o,e.link)?!0:e.items?ce(o,e.items):!1}function Q(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=Q(s.items,n)),s})}function U(){const{frontmatter:o,page:e,theme:t}=P(),s=ie("(min-width: 960px)"),n=I(!1),i=g(()=>{const B=t.value.sidebar,S=e.value.relativePath;return B?Ie(B,S):[]}),u=I(i.value);G(i,(B,S)=>{JSON.stringify(B)!==JSON.stringify(S)&&(u.value=i.value)});const h=g(()=>o.value.sidebar!==!1&&u.value.length>0&&o.value.layout!=="home"),d=g(()=>$?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),$=g(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),V=g(()=>h.value&&s.value),y=g(()=>h.value?ft(u.value):[]);function L(){n.value=!0}function N(){n.value=!1}function A(){n.value?N():L()}return{isOpen:n,sidebar:u,sidebarGroups:y,hasSidebar:h,hasAside:$,leftAside:d,isSidebarEnabled:V,open:L,close:N,toggle:A}}function mt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),K(()=>{window.addEventListener("keyup",s)}),pe(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function kt(o){const{page:e,hash:t}=P(),s=I(!1),n=g(()=>o.value.collapsed!=null),i=g(()=>!!o.value.link),u=I(!1),h=()=>{u.value=W(e.value.relativePath,o.value.link)};G([e,o,t],h),K(h);const d=g(()=>u.value?!0:o.value.items?ce(e.value.relativePath,o.value.items):!1),$=g(()=>!!(o.value.items&&o.value.items.length));Z(()=>{s.value=!!(n.value&&o.value.collapsed)}),he(()=>{(u.value||d.value)&&(s.value=!1)});function V(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:i,isActiveLink:u,hasActiveLink:d,hasChildren:$,toggle:V}}function bt(){const{hasSidebar:o}=U(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:g(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const ue=[];function we(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function _e(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:$t(t),link:"#"+t.id,level:s}});return gt(e,o)}function $t(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function gt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(u=>u.level>=s&&u.level<=n),ue.length=0;for(const{element:u,link:h}of o)ue.push({element:u,link:h});const i=[];e:for(let u=0;u=0;d--){const $=o[d];if($.level{requestAnimationFrame(i),window.addEventListener("scroll",s)}),je(()=>{u(location.hash)}),pe(()=>{window.removeEventListener("scroll",s)});function i(){if(!t.value)return;const h=window.scrollY,d=window.innerHeight,$=document.body.offsetHeight,V=Math.abs(h+d-$)<1,y=ue.map(({element:N,link:A})=>({link:A,top:Pt(N)})).filter(({top:N})=>!Number.isNaN(N)).sort((N,A)=>N.top-A.top);if(!y.length){u(null);return}if(h<1){u(null);return}if(V){u(y[y.length-1].link);return}let L=null;for(const{link:N,top:A}of y){if(A>h+ze()+4)break;L=N}u(L)}function u(h){n&&n.classList.remove("active"),h==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(h)}"]`);const d=n;d?(d.classList.add("active"),e.value.style.top=d.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function Pt(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const Vt=["href","title"],Lt=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const s=t.href.split("#")[1],n=document.getElementById(decodeURIComponent(s));n==null||n.focus({preventScroll:!0})}return(t,s)=>{const n=J("VPDocOutlineItem",!0);return a(),c("ul",{class:w(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),c(M,null,E(t.headers,({children:i,link:u,title:h})=>(a(),c("li",null,[p("a",{class:"outline-link",href:u,onClick:e,title:h},T(h),9,Vt),i!=null&&i.length?(a(),k(n,{key:0,headers:i},null,8,["headers"])):f("",!0)]))),256))],2)}}}),Ne=b(Lt,[["__scopeId","data-v-b933a997"]]),St={class:"content"},Tt={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},It=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=P(),s=ye([]);x(()=>{s.value=_e(e.value.outline??t.value.outline)});const n=I(),i=I();return yt(n,i),(u,h)=>(a(),c("nav",{"aria-labelledby":"doc-outline-aria-label",class:w(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n},[p("div",St,[p("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),p("div",Tt,T(r(we)(r(t))),1),m(Ne,{headers:s.value,root:!0},null,8,["headers"])])],2))}}),wt=b(It,[["__scopeId","data-v-a5bbad30"]]),Nt={class:"VPDocAsideCarbonAds"},Mt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),c("div",Nt,[m(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),At=o=>(C("data-v-3f215769"),o=o(),H(),o),Bt={class:"VPDocAside"},Ct=At(()=>p("div",{class:"spacer"},null,-1)),Ht=_({__name:"VPDocAside",setup(o){const{theme:e}=P();return(t,s)=>(a(),c("div",Bt,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),m(wt),l(t.$slots,"aside-outline-after",{},void 0,!0),Ct,l(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),k(Mt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):f("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),Et=b(Ht,[["__scopeId","data-v-3f215769"]]);function Ft(){const{theme:o,page:e}=P();return g(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function Dt(){const{page:o,theme:e,frontmatter:t}=P();return g(()=>{var $,V,y,L,N,A,B,S;const s=Ie(e.value.sidebar,o.value.relativePath),n=_t(s),i=Ot(n,j=>j.link.replace(/[?#].*$/,"")),u=i.findIndex(j=>W(o.value.relativePath,j.link)),h=(($=e.value.docFooter)==null?void 0:$.prev)===!1&&!t.value.prev||t.value.prev===!1,d=((V=e.value.docFooter)==null?void 0:V.next)===!1&&!t.value.next||t.value.next===!1;return{prev:h?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((y=i[u-1])==null?void 0:y.docFooterText)??((L=i[u-1])==null?void 0:L.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((N=i[u-1])==null?void 0:N.link)},next:d?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[u+1])==null?void 0:A.docFooterText)??((B=i[u+1])==null?void 0:B.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=i[u+1])==null?void 0:S.link)}}})}function Ot(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const D=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=g(()=>e.tag??(e.href?"a":"span")),s=g(()=>e.href&&Pe.test(e.href)||e.target==="_blank");return(n,i)=>(a(),k(F(t.value),{class:w(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?r(fe)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:v(()=>[l(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Gt={class:"VPLastUpdated"},Ut=["datetime"],jt=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,lang:s}=P(),n=g(()=>new Date(t.value.lastUpdated)),i=g(()=>n.value.toISOString()),u=I("");return K(()=>{Z(()=>{var h,d,$;u.value=new Intl.DateTimeFormat((d=(h=e.value.lastUpdated)==null?void 0:h.formatOptions)!=null&&d.forceLocale?s.value:void 0,(($=e.value.lastUpdated)==null?void 0:$.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(n.value)})}),(h,d)=>{var $;return a(),c("p",Gt,[O(T((($=r(e).lastUpdated)==null?void 0:$.text)||r(e).lastUpdatedText||"Last updated")+": ",1),p("time",{datetime:i.value},T(u.value),9,Ut)])}}}),zt=b(jt,[["__scopeId","data-v-e98dd255"]]),Me=o=>(C("data-v-e257564d"),o=o(),H(),o),qt={key:0,class:"VPDocFooter"},Wt={key:0,class:"edit-info"},Kt={key:0,class:"edit-link"},Jt=Me(()=>p("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),Rt={key:1,class:"last-updated"},Yt={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},Qt=Me(()=>p("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),Xt={class:"pager"},Zt=["innerHTML"],xt=["innerHTML"],eo={class:"pager"},to=["innerHTML"],oo=["innerHTML"],no=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=P(),n=Ft(),i=Dt(),u=g(()=>e.value.editLink&&s.value.editLink!==!1),h=g(()=>t.value.lastUpdated),d=g(()=>u.value||h.value||i.value.prev||i.value.next);return($,V)=>{var y,L,N,A;return d.value?(a(),c("footer",qt,[l($.$slots,"doc-footer-before",{},void 0,!0),u.value||h.value?(a(),c("div",Wt,[u.value?(a(),c("div",Kt,[m(D,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:v(()=>[Jt,O(" "+T(r(n).text),1)]),_:1},8,["href"])])):f("",!0),h.value?(a(),c("div",Rt,[m(zt)])):f("",!0)])):f("",!0),(y=r(i).prev)!=null&&y.link||(L=r(i).next)!=null&&L.link?(a(),c("nav",Yt,[Qt,p("div",Xt,[(N=r(i).prev)!=null&&N.link?(a(),k(D,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:v(()=>{var B;return[p("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.prev)||"Previous page"},null,8,Zt),p("span",{class:"title",innerHTML:r(i).prev.text},null,8,xt)]}),_:1},8,["href"])):f("",!0)]),p("div",eo,[(A=r(i).next)!=null&&A.link?(a(),k(D,{key:0,class:"pager-link next",href:r(i).next.link},{default:v(()=>{var B;return[p("span",{class:"desc",innerHTML:((B=r(e).docFooter)==null?void 0:B.next)||"Next page"},null,8,to),p("span",{class:"title",innerHTML:r(i).next.text},null,8,oo)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),so=b(no,[["__scopeId","data-v-e257564d"]]),ao=o=>(C("data-v-39a288b8"),o=o(),H(),o),ro={class:"container"},io=ao(()=>p("div",{class:"aside-curtain"},null,-1)),lo={class:"aside-container"},co={class:"aside-content"},uo={class:"content"},vo={class:"content-container"},po={class:"main"},ho=_({__name:"VPDoc",setup(o){const{theme:e}=P(),t=ee(),{hasSidebar:s,hasAside:n,leftAside:i}=U(),u=g(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(h,d)=>{const $=J("Content");return a(),c("div",{class:w(["VPDoc",{"has-sidebar":r(s),"has-aside":r(n)}])},[l(h.$slots,"doc-top",{},void 0,!0),p("div",ro,[r(n)?(a(),c("div",{key:0,class:w(["aside",{"left-aside":r(i)}])},[io,p("div",lo,[p("div",co,[m(Et,null,{"aside-top":v(()=>[l(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[l(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[l(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),p("div",uo,[p("div",vo,[l(h.$slots,"doc-before",{},void 0,!0),p("main",po,[m($,{class:w(["vp-doc",[u.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),m(so,null,{"doc-footer-before":v(()=>[l(h.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(h.$slots,"doc-after",{},void 0,!0)])])]),l(h.$slots,"doc-bottom",{},void 0,!0)],2)}}}),fo=b(ho,[["__scopeId","data-v-39a288b8"]]),_o=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=g(()=>e.href&&Pe.test(e.href)),s=g(()=>e.tag||e.href?"a":"button");return(n,i)=>(a(),k(F(s.value),{class:w(["VPButton",[n.size,n.theme]]),href:n.href?r(fe)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[O(T(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),mo=b(_o,[["__scopeId","data-v-cad61b99"]]),ko=["src","alt"],bo=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=J("VPImage",!0);return e.image?(a(),c(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),c("img",q({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(ve)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,ko)):(a(),c(M,{key:1},[m(s,q({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),m(s,q({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),X=b(bo,[["__scopeId","data-v-8426fc1a"]]),$o=o=>(C("data-v-303bb580"),o=o(),H(),o),go={class:"container"},yo={class:"main"},Po={key:0,class:"name"},Vo=["innerHTML"],Lo=["innerHTML"],So=["innerHTML"],To={key:0,class:"actions"},Io={key:0,class:"image"},wo={class:"image-container"},No=$o(()=>p("div",{class:"image-bg"},null,-1)),Mo=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=te("hero-image-slot-exists");return(t,s)=>(a(),c("div",{class:w(["VPHero",{"has-image":t.image||r(e)}])},[p("div",go,[p("div",yo,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(a(),c("h1",Po,[p("span",{innerHTML:t.name,class:"clip"},null,8,Vo)])):f("",!0),t.text?(a(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,Lo)):f("",!0),t.tagline?(a(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,So)):f("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),c("div",To,[(a(!0),c(M,null,E(t.actions,n=>(a(),c("div",{key:n.link,class:"action"},[m(mo,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),c("div",Io,[p("div",wo,[No,l(t.$slots,"home-hero-image",{},()=>[t.image?(a(),k(X,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Ao=b(Mo,[["__scopeId","data-v-303bb580"]]),Bo=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=P();return(t,s)=>r(e).hero?(a(),k(Ao,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":v(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Co=o=>(C("data-v-a3976bdc"),o=o(),H(),o),Ho={class:"box"},Eo={key:0,class:"icon"},Fo=["innerHTML"],Do=["innerHTML"],Oo=["innerHTML"],Go={key:4,class:"link-text"},Uo={class:"link-text-value"},jo=Co(()=>p("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),zo=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),k(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[p("article",Ho,[typeof e.icon=="object"&&e.icon.wrap?(a(),c("div",Eo,[m(X,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),k(X,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,Fo)):f("",!0),p("h2",{class:"title",innerHTML:e.title},null,8,Do),e.details?(a(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,Oo)):f("",!0),e.linkText?(a(),c("div",Go,[p("p",Uo,[O(T(e.linkText)+" ",1),jo])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),qo=b(zo,[["__scopeId","data-v-a3976bdc"]]),Wo={key:0,class:"VPFeatures"},Ko={class:"container"},Jo={class:"items"},Ro=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=g(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),c("div",Wo,[p("div",Ko,[p("div",Jo,[(a(!0),c(M,null,E(s.features,i=>(a(),c("div",{key:i.title,class:w(["item",[t.value]])},[m(qo,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),Yo=b(Ro,[["__scopeId","data-v-a6181336"]]),Qo=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=P();return(t,s)=>r(e).features?(a(),k(Yo,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):f("",!0)}}),Xo=_({__name:"VPHomeContent",setup(o){const{width:e}=qe({initialWidth:0,includeScrollbar:!1});return(t,s)=>(a(),c("div",{class:"vp-doc container",style:Ve(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),Zo=b(Xo,[["__scopeId","data-v-8e2d4988"]]),xo={class:"VPHome"},en=_({__name:"VPHome",setup(o){const{frontmatter:e}=P();return(t,s)=>{const n=J("Content");return a(),c("div",xo,[l(t.$slots,"home-hero-before",{},void 0,!0),m(Bo,null,{"home-hero-info-before":v(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),m(Qo),l(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),k(Zo,{key:0},{default:v(()=>[m(n)]),_:1})):(a(),k(n,{key:1}))])}}}),tn=b(en,[["__scopeId","data-v-686f80a6"]]),on={},nn={class:"VPPage"};function sn(o,e){const t=J("Content");return a(),c("div",nn,[l(o.$slots,"page-top"),m(t),l(o.$slots,"page-bottom")])}const an=b(on,[["render",sn]]),rn=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=P(),{hasSidebar:s}=U();return(n,i)=>(a(),c("div",{class:w(["VPContent",{"has-sidebar":r(s),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?l(n.$slots,"not-found",{key:0},()=>[m(ht)],!0):r(t).layout==="page"?(a(),k(an,{key:1},{"page-top":v(()=>[l(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[l(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),k(tn,{key:2},{"home-hero-before":v(()=>[l(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[l(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[l(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[l(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[l(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),k(F(r(t).layout),{key:3})):(a(),k(fo,{key:4},{"doc-top":v(()=>[l(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[l(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[l(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[l(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[l(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[l(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[l(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[l(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ln=b(rn,[["__scopeId","data-v-1428d186"]]),cn={class:"container"},un=["innerHTML"],dn=["innerHTML"],vn=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=P(),{hasSidebar:s}=U();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),c("footer",{key:0,class:w(["VPFooter",{"has-sidebar":r(s)}])},[p("div",cn,[r(e).footer.message?(a(),c("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,un)):f("",!0),r(e).footer.copyright?(a(),c("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,dn)):f("",!0)])],2)):f("",!0)}}),pn=b(vn,[["__scopeId","data-v-e315a0ad"]]);function hn(){const{theme:o,frontmatter:e}=P(),t=ye([]),s=g(()=>t.value.length>0);return x(()=>{t.value=_e(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const fn=o=>(C("data-v-17a5e62e"),o=o(),H(),o),_n={class:"menu-text"},mn=fn(()=>p("span",{class:"vpi-chevron-right icon"},null,-1)),kn={class:"header"},bn={class:"outline"},$n=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=P(),s=I(!1),n=I(0),i=I(),u=I();function h(y){var L;(L=i.value)!=null&&L.contains(y.target)||(s.value=!1)}G(s,y=>{if(y){document.addEventListener("click",h);return}document.removeEventListener("click",h)}),We("Escape",()=>{s.value=!1}),x(()=>{s.value=!1});function d(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function $(y){y.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),Ke(()=>{s.value=!1}))}function V(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(y,L)=>(a(),c("div",{class:"VPLocalNavOutlineDropdown",style:Ve({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[y.headers.length>0?(a(),c("button",{key:0,onClick:d,class:w({open:s.value})},[p("span",_n,T(r(we)(r(t))),1),mn],2)):(a(),c("button",{key:1,onClick:V},T(r(t).returnToTopLabel||"Return to top"),1)),m(de,{name:"flyout"},{default:v(()=>[s.value?(a(),c("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:$},[p("div",kn,[p("a",{class:"top-link",href:"#",onClick:V},T(r(t).returnToTopLabel||"Return to top"),1)]),p("div",bn,[m(Ne,{headers:y.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),gn=b($n,[["__scopeId","data-v-17a5e62e"]]),yn=o=>(C("data-v-a6f0e41e"),o=o(),H(),o),Pn={class:"container"},Vn=["aria-expanded"],Ln=yn(()=>p("span",{class:"vpi-align-left menu-icon"},null,-1)),Sn={class:"menu-text"},Tn=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=P(),{hasSidebar:s}=U(),{headers:n}=hn(),{y:i}=Le(),u=I(0);K(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=_e(t.value.outline??e.value.outline)});const h=g(()=>n.value.length===0),d=g(()=>h.value&&!s.value),$=g(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:h.value,fixed:d.value}));return(V,y)=>r(t).layout!=="home"&&(!d.value||r(i)>=u.value)?(a(),c("div",{key:0,class:w($.value)},[p("div",Pn,[r(s)?(a(),c("button",{key:0,class:"menu","aria-expanded":V.open,"aria-controls":"VPSidebarNav",onClick:y[0]||(y[0]=L=>V.$emit("open-menu"))},[Ln,p("span",Sn,T(r(e).sidebarMenuLabel||"Menu"),1)],8,Vn)):f("",!0),m(gn,{headers:r(n),navHeight:u.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),In=b(Tn,[["__scopeId","data-v-a6f0e41e"]]);function wn(){const o=I(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=ee();return G(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const Nn={},Mn={class:"VPSwitch",type:"button",role:"switch"},An={class:"check"},Bn={key:0,class:"icon"};function Cn(o,e){return a(),c("button",Mn,[p("span",An,[o.$slots.default?(a(),c("span",Bn,[l(o.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Hn=b(Nn,[["render",Cn],["__scopeId","data-v-1d5665e3"]]),Ae=o=>(C("data-v-5337faa4"),o=o(),H(),o),En=Ae(()=>p("span",{class:"vpi-sun sun"},null,-1)),Fn=Ae(()=>p("span",{class:"vpi-moon moon"},null,-1)),Dn=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=P(),s=te("toggle-appearance",()=>{e.value=!e.value}),n=I("");return he(()=>{n.value=e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,u)=>(a(),k(Hn,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(s)},{default:v(()=>[En,Fn]),_:1},8,["title","aria-checked","onClick"]))}}),me=b(Dn,[["__scopeId","data-v-5337faa4"]]),On={key:0,class:"VPNavBarAppearance"},Gn=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=P();return(t,s)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),c("div",On,[m(me)])):f("",!0)}}),Un=b(Gn,[["__scopeId","data-v-6c893767"]]),ke=I();let Be=!1,re=0;function jn(o){const e=I(!1);if(oe){!Be&&zn(),re++;const t=G(ke,s=>{var n,i,u;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(u=o.onBlur)==null||u.call(o))});pe(()=>{t(),re--,re||qn()})}return Je(e)}function zn(){document.addEventListener("focusin",Ce),Be=!0,ke.value=document.activeElement}function qn(){document.removeEventListener("focusin",Ce)}function Ce(){ke.value=document.activeElement}const Wn={class:"VPMenuLink"},Kn=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=P();return(t,s)=>(a(),c("div",Wn,[m(D,{class:w({active:r(W)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[O(T(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),ne=b(Kn,[["__scopeId","data-v-43f1e123"]]),Jn={class:"VPMenuGroup"},Rn={key:0,class:"title"},Yn=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Jn,[e.text?(a(),c("p",Rn,T(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,s=>(a(),c(M,null,["link"in s?(a(),k(ne,{key:0,item:s},null,8,["item"])):f("",!0)],64))),256))]))}}),Qn=b(Yn,[["__scopeId","data-v-69e747b5"]]),Xn={class:"VPMenu"},Zn={key:0,class:"items"},xn=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),c("div",Xn,[e.items?(a(),c("div",Zn,[(a(!0),c(M,null,E(e.items,s=>(a(),c(M,{key:JSON.stringify(s)},["link"in s?(a(),k(ne,{key:0,item:s},null,8,["item"])):"component"in s?(a(),k(F(s.component),q({key:1,ref_for:!0},s.props),null,16)):(a(),k(Qn,{key:2,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):f("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),es=b(xn,[["__scopeId","data-v-b98bc113"]]),ts=o=>(C("data-v-b6c34ac9"),o=o(),H(),o),os=["aria-expanded","aria-label"],ns={key:0,class:"text"},ss=["innerHTML"],as=ts(()=>p("span",{class:"vpi-chevron-down text-icon"},null,-1)),rs={key:1,class:"vpi-more-horizontal icon"},is={class:"menu"},ls=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=I(!1),t=I();jn({el:t,onBlur:s});function s(){e.value=!1}return(n,i)=>(a(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=u=>e.value=!0),onMouseleave:i[2]||(i[2]=u=>e.value=!1)},[p("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=u=>e.value=!e.value)},[n.button||n.icon?(a(),c("span",ns,[n.icon?(a(),c("span",{key:0,class:w([n.icon,"option-icon"])},null,2)):f("",!0),n.button?(a(),c("span",{key:1,innerHTML:n.button},null,8,ss)):f("",!0),as])):(a(),c("span",rs))],8,os),p("div",is,[m(es,{items:n.items},{default:v(()=>[l(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),be=b(ls,[["__scopeId","data-v-b6c34ac9"]]),cs=["href","aria-label","innerHTML"],us=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=g(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,n)=>(a(),c("a",{class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,cs))}}),ds=b(us,[["__scopeId","data-v-eee4e7cb"]]),vs={class:"VPSocialLinks"},ps=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),c("div",vs,[(a(!0),c(M,null,E(e.links,({link:s,icon:n,ariaLabel:i})=>(a(),k(ds,{key:s,icon:n,link:s,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),$e=b(ps,[["__scopeId","data-v-7bc22406"]]),hs={key:0,class:"group translations"},fs={class:"trans-title"},_s={key:1,class:"group"},ms={class:"item appearance"},ks={class:"label"},bs={class:"appearance-action"},$s={key:2,class:"group"},gs={class:"item social-links"},ys=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=P(),{localeLinks:s,currentLang:n}=Y({correspondingLink:!0}),i=g(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(u,h)=>i.value?(a(),k(be,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[r(s).length&&r(n).label?(a(),c("div",hs,[p("p",fs,T(r(n).label),1),(a(!0),c(M,null,E(r(s),d=>(a(),k(ne,{key:d.link,item:d},null,8,["item"]))),128))])):f("",!0),r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),c("div",_s,[p("div",ms,[p("p",ks,T(r(t).darkModeSwitchLabel||"Appearance"),1),p("div",bs,[m(me)])])])):f("",!0),r(t).socialLinks?(a(),c("div",$s,[p("div",gs,[m($e,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),Ps=b(ys,[["__scopeId","data-v-bb2aa2f0"]]),Vs=o=>(C("data-v-e5dd9c1c"),o=o(),H(),o),Ls=["aria-expanded"],Ss=Vs(()=>p("span",{class:"container"},[p("span",{class:"top"}),p("span",{class:"middle"}),p("span",{class:"bottom"})],-1)),Ts=[Ss],Is=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),c("button",{type:"button",class:w(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},Ts,10,Ls))}}),ws=b(Is,[["__scopeId","data-v-e5dd9c1c"]]),Ns=["innerHTML"],Ms=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=P();return(t,s)=>(a(),k(D,{class:w({VPNavBarMenuLink:!0,active:r(W)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[p("span",{innerHTML:t.item.text},null,8,Ns)]),_:1},8,["class","href","noIcon","target","rel"]))}}),As=b(Ms,[["__scopeId","data-v-9c663999"]]),Bs=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=P(),s=i=>"component"in i?!1:"link"in i?W(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(s),n=g(()=>s(e.item));return(i,u)=>(a(),k(be,{class:w({VPNavBarMenuGroup:!0,active:r(W)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Cs=o=>(C("data-v-dc692963"),o=o(),H(),o),Hs={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},Es=Cs(()=>p("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),Fs=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=P();return(t,s)=>r(e).nav?(a(),c("nav",Hs,[Es,(a(!0),c(M,null,E(r(e).nav,n=>(a(),c(M,{key:JSON.stringify(n)},["link"in n?(a(),k(As,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(F(n.component),q({key:1,ref_for:!0},n.props),null,16)):(a(),k(Bs,{key:2,item:n},null,8,["item"]))],64))),128))])):f("",!0)}}),Ds=b(Fs,[["__scopeId","data-v-dc692963"]]);function Os(o){const{localeIndex:e,theme:t}=P();function s(n){var A,B,S;const i=n.split("."),u=(A=t.value.search)==null?void 0:A.options,h=u&&typeof u=="object",d=h&&((S=(B=u.locales)==null?void 0:B[e.value])==null?void 0:S.translations)||null,$=h&&u.translations||null;let V=d,y=$,L=o;const N=i.pop();for(const j of i){let z=null;const R=L==null?void 0:L[j];R&&(z=L=R);const se=y==null?void 0:y[j];se&&(z=y=se);const ae=V==null?void 0:V[j];ae&&(z=V=ae),R||(L=z),se||(y=z),ae||(V=z)}return(V==null?void 0:V[N])??(y==null?void 0:y[N])??(L==null?void 0:L[N])??""}return s}const Gs=["aria-label"],Us={class:"DocSearch-Button-Container"},js=p("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),zs={class:"DocSearch-Button-Placeholder"},qs=p("span",{class:"DocSearch-Button-Keys"},[p("kbd",{class:"DocSearch-Button-Key"}),p("kbd",{class:"DocSearch-Button-Key"},"K")],-1),ge=_({__name:"VPNavBarSearchButton",setup(o){const t=Os({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[p("span",Us,[js,p("span",zs,T(r(t)("button.buttonText")),1)]),qs],8,Gs))}}),Ws={class:"VPNavBarSearch"},Ks={id:"local-search"},Js={key:1,id:"docsearch"},Rs=_({__name:"VPNavBarSearch",setup(o){const e=()=>null,t=()=>null,{theme:s}=P(),n=I(!1),i=I(!1);K(()=>{});function u(){n.value||(n.value=!0,setTimeout(h,16))}function h(){const V=new Event("keydown");V.key="k",V.metaKey=!0,window.dispatchEvent(V),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||h()},16)}const d=I(!1),$="";return(V,y)=>{var L;return a(),c("div",Ws,[r($)==="local"?(a(),c(M,{key:0},[d.value?(a(),k(r(e),{key:0,onClose:y[0]||(y[0]=N=>d.value=!1)})):f("",!0),p("div",Ks,[m(ge,{onClick:y[1]||(y[1]=N=>d.value=!0)})])],64)):r($)==="algolia"?(a(),c(M,{key:1},[n.value?(a(),k(r(t),{key:0,algolia:((L=r(s).search)==null?void 0:L.options)??r(s).algolia,onVnodeBeforeMount:y[2]||(y[2]=N=>i.value=!0)},null,8,["algolia"])):f("",!0),i.value?f("",!0):(a(),c("div",Js,[m(ge,{onClick:u})]))],64)):f("",!0)])}}}),Ys=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=P();return(t,s)=>r(e).socialLinks?(a(),k($e,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Qs=b(Ys,[["__scopeId","data-v-0394ad82"]]),Xs=["href","rel","target"],Zs={key:1},xs={key:2},ea=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=P(),{hasSidebar:s}=U(),{currentLang:n}=Y(),i=g(()=>{var d;return typeof t.value.logoLink=="string"?t.value.logoLink:(d=t.value.logoLink)==null?void 0:d.link}),u=g(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.rel}),h=g(()=>{var d;return typeof t.value.logoLink=="string"||(d=t.value.logoLink)==null?void 0:d.target});return(d,$)=>(a(),c("div",{class:w(["VPNavBarTitle",{"has-sidebar":r(s)}])},[p("a",{class:"title",href:i.value??r(fe)(r(n).link),rel:u.value,target:h.value},[l(d.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),k(X,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):f("",!0),r(t).siteTitle?(a(),c("span",Zs,T(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),c("span",xs,T(r(e).title),1)):f("",!0),l(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,Xs)],2))}}),ta=b(ea,[["__scopeId","data-v-ab179fa1"]]),oa={class:"items"},na={class:"title"},sa=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=P(),{localeLinks:t,currentLang:s}=Y({correspondingLink:!0});return(n,i)=>r(t).length&&r(s).label?(a(),k(be,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:v(()=>[p("div",oa,[p("p",na,T(r(s).label),1),(a(!0),c(M,null,E(r(t),u=>(a(),k(ne,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),aa=b(sa,[["__scopeId","data-v-88af2de4"]]),ra=o=>(C("data-v-6aa21345"),o=o(),H(),o),ia={class:"wrapper"},la={class:"container"},ca={class:"title"},ua={class:"content"},da={class:"content-body"},va=ra(()=>p("div",{class:"divider"},[p("div",{class:"divider-line"})],-1)),pa=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const e=o,{y:t}=Le(),{hasSidebar:s}=U(),{frontmatter:n}=P(),i=I({});return he(()=>{i.value={"has-sidebar":s.value,home:n.value.layout==="home",top:t.value===0,"screen-open":e.isScreenOpen}}),(u,h)=>(a(),c("div",{class:w(["VPNavBar",i.value])},[p("div",ia,[p("div",la,[p("div",ca,[m(ta,null,{"nav-bar-title-before":v(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),p("div",ua,[p("div",da,[l(u.$slots,"nav-bar-content-before",{},void 0,!0),m(Rs,{class:"search"}),m(Ds,{class:"menu"}),m(aa,{class:"translations"}),m(Un,{class:"appearance"}),m(Qs,{class:"social-links"}),m(Ps,{class:"extra"}),l(u.$slots,"nav-bar-content-after",{},void 0,!0),m(ws,{class:"hamburger",active:u.isScreenOpen,onClick:h[0]||(h[0]=d=>u.$emit("toggle-screen"))},null,8,["active"])])])])]),va],2))}}),ha=b(pa,[["__scopeId","data-v-6aa21345"]]),fa={key:0,class:"VPNavScreenAppearance"},_a={class:"text"},ma=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=P();return(s,n)=>r(e).appearance&&r(e).appearance!=="force-dark"&&r(e).appearance!=="force-auto"?(a(),c("div",fa,[p("p",_a,T(r(t).darkModeSwitchLabel||"Appearance"),1),m(me)])):f("",!0)}}),ka=b(ma,[["__scopeId","data-v-b44890b2"]]),ba=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,s)=>(a(),k(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),$a=b(ba,[["__scopeId","data-v-7f31e1f6"]]),ga=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,s)=>(a(),k(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:v(()=>[O(T(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),He=b(ga,[["__scopeId","data-v-19976ae1"]]),ya={class:"VPNavScreenMenuGroupSection"},Pa={key:0,class:"title"},Va=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",ya,[e.text?(a(),c("p",Pa,T(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,s=>(a(),k(He,{key:s.text,item:s},null,8,["item"]))),128))]))}}),La=b(Va,[["__scopeId","data-v-8133b170"]]),Sa=o=>(C("data-v-b9ab8c58"),o=o(),H(),o),Ta=["aria-controls","aria-expanded"],Ia=["innerHTML"],wa=Sa(()=>p("span",{class:"vpi-plus button-icon"},null,-1)),Na=["id"],Ma={key:0,class:"item"},Aa={key:1,class:"item"},Ba={key:2,class:"group"},Ca=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=I(!1),s=g(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,u)=>(a(),c("div",{class:w(["VPNavScreenMenuGroup",{open:t.value}])},[p("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[p("span",{class:"button-text",innerHTML:i.text},null,8,Ia),wa],8,Ta),p("div",{id:s.value,class:"items"},[(a(!0),c(M,null,E(i.items,h=>(a(),c(M,{key:JSON.stringify(h)},["link"in h?(a(),c("div",Ma,[m(He,{item:h},null,8,["item"])])):"component"in h?(a(),c("div",Aa,[(a(),k(F(h.component),q({ref_for:!0},h.props,{"screen-menu":""}),null,16))])):(a(),c("div",Ba,[m(La,{text:h.text,items:h.items},null,8,["text","items"])]))],64))),128))],8,Na)],2))}}),Ha=b(Ca,[["__scopeId","data-v-b9ab8c58"]]),Ea={key:0,class:"VPNavScreenMenu"},Fa=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=P();return(t,s)=>r(e).nav?(a(),c("nav",Ea,[(a(!0),c(M,null,E(r(e).nav,n=>(a(),c(M,{key:JSON.stringify(n)},["link"in n?(a(),k($a,{key:0,item:n},null,8,["item"])):"component"in n?(a(),k(F(n.component),q({key:1,ref_for:!0},n.props,{"screen-menu":""}),null,16)):(a(),k(Ha,{key:2,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),Da=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=P();return(t,s)=>r(e).socialLinks?(a(),k($e,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),Ee=o=>(C("data-v-858fe1a4"),o=o(),H(),o),Oa=Ee(()=>p("span",{class:"vpi-languages icon lang"},null,-1)),Ga=Ee(()=>p("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Ua={class:"list"},ja=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=Y({correspondingLink:!0}),s=I(!1);function n(){s.value=!s.value}return(i,u)=>r(e).length&&r(t).label?(a(),c("div",{key:0,class:w(["VPNavScreenTranslations",{open:s.value}])},[p("button",{class:"title",onClick:n},[Oa,O(" "+T(r(t).label)+" ",1),Ga]),p("ul",Ua,[(a(!0),c(M,null,E(r(e),h=>(a(),c("li",{key:h.link,class:"item"},[m(D,{class:"link",href:h.link},{default:v(()=>[O(T(h.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),za=b(ja,[["__scopeId","data-v-858fe1a4"]]),qa={class:"container"},Wa=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=I(null),t=Se(oe?document.body:null);return(s,n)=>(a(),k(de,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:v(()=>[s.open?(a(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[p("div",qa,[l(s.$slots,"nav-screen-content-before",{},void 0,!0),m(Fa,{class:"menu"}),m(za,{class:"translations"}),m(ka,{class:"appearance"}),m(Da,{class:"social-links"}),l(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),Ka=b(Wa,[["__scopeId","data-v-f2779853"]]),Ja={key:0,class:"VPNav"},Ra=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=wn(),{frontmatter:n}=P(),i=g(()=>n.value.navbar!==!1);return Te("close-screen",t),Z(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,h)=>i.value?(a(),c("header",Ja,[m(ha,{"is-screen-open":r(e),onToggleScreen:r(s)},{"nav-bar-title-before":v(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[l(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[l(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),m(Ka,{open:r(e)},{"nav-screen-content-before":v(()=>[l(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[l(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),Ya=b(Ra,[["__scopeId","data-v-ae24b3ad"]]),Fe=o=>(C("data-v-b7550ba0"),o=o(),H(),o),Qa=["role","tabindex"],Xa=Fe(()=>p("div",{class:"indicator"},null,-1)),Za=Fe(()=>p("span",{class:"vpi-chevron-right caret-icon"},null,-1)),xa=[Za],er={key:1,class:"items"},tr=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:i,hasActiveLink:u,hasChildren:h,toggle:d}=kt(g(()=>e.item)),$=g(()=>h.value?"section":"div"),V=g(()=>n.value?"a":"div"),y=g(()=>h.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),L=g(()=>n.value?void 0:"button"),N=g(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":u.value}]);function A(S){"key"in S&&S.key!=="Enter"||!e.item.link&&d()}function B(){e.item.link&&d()}return(S,j)=>{const z=J("VPSidebarItem",!0);return a(),k(F($.value),{class:w(["VPSidebarItem",N.value])},{default:v(()=>[S.item.text?(a(),c("div",q({key:0,class:"item",role:L.value},Ye(S.item.items?{click:A,keydown:A}:{},!0),{tabindex:S.item.items&&0}),[Xa,S.item.link?(a(),k(D,{key:0,tag:V.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:v(()=>[(a(),k(F(y.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),k(F(y.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null&&S.item.items&&S.item.items.length?(a(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:B,onKeydown:Re(B,["enter"]),tabindex:"0"},xa,32)):f("",!0)],16,Qa)):f("",!0),S.item.items&&S.item.items.length?(a(),c("div",er,[S.depth<5?(a(!0),c(M,{key:0},E(S.item.items,R=>(a(),k(z,{key:R.text,item:R,depth:S.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),or=b(tr,[["__scopeId","data-v-b7550ba0"]]),nr=_({__name:"VPSidebarGroup",props:{items:{}},setup(o){const e=I(!0);let t=null;return K(()=>{t=setTimeout(()=>{t=null,e.value=!1},300)}),Qe(()=>{t!=null&&(clearTimeout(t),t=null)}),(s,n)=>(a(!0),c(M,null,E(s.items,i=>(a(),c("div",{key:i.text,class:w(["group",{"no-transition":e.value}])},[m(or,{item:i,depth:0},null,8,["item"])],2))),128))}}),sr=b(nr,[["__scopeId","data-v-c40bc020"]]),De=o=>(C("data-v-319d5ca6"),o=o(),H(),o),ar=De(()=>p("div",{class:"curtain"},null,-1)),rr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},ir=De(()=>p("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),lr=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=U(),s=o,n=I(null),i=Se(oe?document.body:null);G([s,n],()=>{var h;s.open?(i.value=!0,(h=n.value)==null||h.focus()):i.value=!1},{immediate:!0,flush:"post"});const u=I(0);return G(e,()=>{u.value+=1},{deep:!0}),(h,d)=>r(t)?(a(),c("aside",{key:0,class:w(["VPSidebar",{open:h.open}]),ref_key:"navEl",ref:n,onClick:d[0]||(d[0]=Xe(()=>{},["stop"]))},[ar,p("nav",rr,[ir,l(h.$slots,"sidebar-nav-before",{},void 0,!0),(a(),k(sr,{items:r(e),key:u.value},null,8,["items"])),l(h.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),cr=b(lr,[["__scopeId","data-v-319d5ca6"]]),ur=_({__name:"VPSkipLink",setup(o){const e=ee(),t=I();G(()=>e.path,()=>t.value.focus());function s({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),c(M,null,[p("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),p("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),dr=b(ur,[["__scopeId","data-v-0f60ec36"]]),vr=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=U(),n=ee();G(()=>n.path,s),mt(e,s);const{frontmatter:i}=P(),u=Ze(),h=g(()=>!!u["home-hero-image"]);return Te("hero-image-slot-exists",h),(d,$)=>{const V=J("Content");return r(i).layout!==!1?(a(),c("div",{key:0,class:w(["Layout",r(i).pageClass])},[l(d.$slots,"layout-top",{},void 0,!0),m(dr),m(ot,{class:"backdrop",show:r(e),onClick:r(s)},null,8,["show","onClick"]),m(Ya,null,{"nav-bar-title-before":v(()=>[l(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[l(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[l(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[l(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[l(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),m(In,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),m(cr,{open:r(e)},{"sidebar-nav-before":v(()=>[l(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[l(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),m(ln,null,{"page-top":v(()=>[l(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[l(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[l(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[l(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[l(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[l(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[l(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[l(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[l(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[l(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[l(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[l(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[l(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[l(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[l(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[l(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),m(pn),l(d.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),k(V,{key:1}))}}}),pr=b(vr,[["__scopeId","data-v-5d98c3a5"]]),fr={Layout:pr,enhanceApp:({app:o})=>{o.component("Badge",xe)}};export{fr as t}; diff --git a/docs/.vitepress/dist/assets/chunks/theme.H2-gvx_u.js b/docs/.vitepress/dist/assets/chunks/theme.H2-gvx_u.js new file mode 100644 index 0000000..b3abb75 --- /dev/null +++ b/docs/.vitepress/dist/assets/chunks/theme.H2-gvx_u.js @@ -0,0 +1,567 @@ +import{_ as D,c as Si,d as B,a as N,w as ke,h as mt,r as U,b as Jo,e as Je,o as a,f as s,g as l,F as K,i as ae,j,t as Y,k as ea,l as P,T as Ei,n as Q,m as Be,p as ce,q as ue,s as I,u as L,v as Ar,x as Li,y as Ti,z as Pi,A as Cr,B as x,C as xt,D as nr,E as En,G as ze,H as Ln,I as Ir,J as Oi,K as Bi,L as $r,M as Tn,N as R,O as Oe,P as ta,Q as Pn,R as it,S as On,U as Vi,V as na,W as ji,X as ra,Y as oa,Z as Bn,$ as Hi,a0 as aa,a1 as ia,a2 as Ni,a3 as Di,a4 as Ri,a5 as Fi,a6 as rt,a7 as no,a8 as Zi,a9 as Ui,aa as ro}from"./framework.CE9GIcbU.js";const zi="/case-study/home/sqlconsole.png",Wi="/case-study/home/kinesis.png",Gi="/case-study/home/terminal.png",Yi="/case-study/home/quarantinetable.png",qi="/case-study/home/ai_error.png",Xi={name:"HeliosLanding",data(){return{mouseX:0,mouseY:0,cursorX:0,cursorY:0,isOverActiveArea:!1,hideTimeout:null}},mounted(){document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseenter",this.handleMouseEnter,!0),document.addEventListener("mouseleave",this.handleMouseLeave,!0),this.animateCursor()},beforeUnmount(){document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseenter",this.handleMouseEnter,!0),document.removeEventListener("mouseleave",this.handleMouseLeave,!0),cancelAnimationFrame(this.animationFrame),clearTimeout(this.hideTimeout)},methods:{handleMouseMove(e){this.mouseX=e.clientX,this.mouseY=e.clientY,this.isOverActiveArea&&this.showCursor()},handleMouseEnter(e){e.target&&e.target.matches("header, main")&&(this.isOverActiveArea=!0,this.showCursor())},handleMouseLeave(e){e.target&&e.target.matches("header, main")&&(this.isOverActiveArea=!1,this.hideCursor())},animateCursor(){this.cursorX+=(this.mouseX-this.cursorX)*.15,this.cursorY+=(this.mouseY-this.cursorY)*.15;const t=document.querySelector(".cursor-element");t&&(t.style.transform=`translate(${this.cursorX}px, ${this.cursorY}px)`),this.animationFrame=requestAnimationFrame(this.animateCursor)},showCursor(){const e=document.querySelector(".cursor-glow");e==null||e.classList.add("active"),clearTimeout(this.hideTimeout),this.hideTimeout=setTimeout(()=>{this.isOverActiveArea&&(e==null||e.classList.remove("active"))},2e3)},hideCursor(){const e=document.querySelector(".cursor-glow");e==null||e.classList.remove("active"),clearTimeout(this.hideTimeout)}}},Ki=Si('

Helios

Helios is an open-source platform designed to simplify the visualization and analysis of real-time event streams by exposing data for SQL querying.

Real-time SQL querying

Run SQL queries directly on your ingested data in real-time.

Built-in Amazon Kinesis Integration

Link your existing Kinesis streams to the Helios infrastructure.

Automated Deployment

Helios CLI configures Helios deployment with AWS credentials, deploys the entire Helios stack to AWS using a single command, and destroys the stack when needed.

',2);function Qi(e,t,n,r,o,i){return Ki}const Ji=D(Xi,[["render",Qi],["__scopeId","data-v-2c984628"]]),oo=()=>{};let Sr={},sa={},la=null,ca={mark:oo,measure:oo};try{typeof window<"u"&&(Sr=window),typeof document<"u"&&(sa=document),typeof MutationObserver<"u"&&(la=MutationObserver),typeof performance<"u"&&(ca=performance)}catch{}const{userAgent:ao=""}=Sr.navigator||{},st=Sr,ee=sa,io=la,mn=ca;st.document;const et=!!ee.documentElement&&!!ee.head&&typeof ee.addEventListener=="function"&&typeof ee.createElement=="function",ua=~ao.indexOf("MSIE")||~ao.indexOf("Trident/");var te="classic",da="duotone",be="sharp",ye="sharp-duotone",es=[te,da,be,ye],ts={classic:{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},sharp:{900:"fass",400:"fasr",300:"fasl",100:"fast"},"sharp-duotone":{900:"fasds"}},so={kit:{fak:"kit","fa-kit":"kit"},"kit-duotone":{fakd:"kit-duotone","fa-kit-duotone":"kit-duotone"}},ns=["kit"],rs=/fa(s|r|l|t|d|b|k|kd|ss|sr|sl|st|sds)?[\-\ ]/,os=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i,as={"Font Awesome 5 Free":{900:"fas",400:"far"},"Font Awesome 5 Pro":{900:"fas",400:"far",normal:"far",300:"fal"},"Font Awesome 5 Brands":{400:"fab",normal:"fab"},"Font Awesome 5 Duotone":{900:"fad"}},is={"Font Awesome 6 Free":{900:"fas",400:"far"},"Font Awesome 6 Pro":{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},"Font Awesome 6 Brands":{400:"fab",normal:"fab"},"Font Awesome 6 Duotone":{900:"fad"},"Font Awesome 6 Sharp":{900:"fass",400:"fasr",normal:"fasr",300:"fasl",100:"fast"},"Font Awesome 6 Sharp Duotone":{900:"fasds"}},ss={classic:{"fa-brands":"fab","fa-duotone":"fad","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},sharp:{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"},"sharp-duotone":{"fa-solid":"fasds"}},ls={classic:["fas","far","fal","fat"],sharp:["fass","fasr","fasl","fast"],"sharp-duotone":["fasds"]},cs={classic:{fab:"fa-brands",fad:"fa-duotone",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},sharp:{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"},"sharp-duotone":{fasds:"fa-solid"}},us={classic:{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab"},sharp:{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"},"sharp-duotone":{solid:"fasds"}},fa={classic:{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands"},sharp:{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"},"sharp-duotone":{fa:"solid",fasds:"solid","fa-solid":"solid"}},ds=["solid","regular","light","thin","duotone","brands"],ha=[1,2,3,4,5,6,7,8,9,10],fs=ha.concat([11,12,13,14,15,16,17,18,19,20]),Zt={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},hs=[...Object.keys(ls),...ds,"2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",Zt.GROUP,Zt.SWAP_OPACITY,Zt.PRIMARY,Zt.SECONDARY].concat(ha.map(e=>"".concat(e,"x"))).concat(fs.map(e=>"w-".concat(e))),ps={"Font Awesome Kit":{400:"fak",normal:"fak"},"Font Awesome Kit Duotone":{400:"fakd",normal:"fakd"}},vs={kit:{"fa-kit":"fak"},"kit-duotone":{"fa-kit-duotone":"fakd"}},ms={kit:{fak:"fa-kit"},"kit-duotone":{fakd:"fa-kit-duotone"}},lo={kit:{kit:"fak"},"kit-duotone":{"kit-duotone":"fakd"}};const Ke="___FONT_AWESOME___",rr=16,pa="fa",va="svg-inline--fa",bt="data-fa-i2svg",or="data-fa-pseudo-element",gs="data-fa-pseudo-element-pending",Er="data-prefix",Lr="data-icon",co="fontawesome-i2svg",ws="async",ks=["HTML","HEAD","STYLE","SCRIPT"],ma=(()=>{try{return!0}catch{return!1}})(),ga=[te,be,ye];function en(e){return new Proxy(e,{get(t,n){return n in t?t[n]:t[te]}})}const wa={...fa};wa[te]={...fa[te],...so.kit,...so["kit-duotone"]};const gt=en(wa),ar={...us};ar[te]={...ar[te],...lo.kit,...lo["kit-duotone"]};const qt=en(ar),ir={...cs};ir[te]={...ir[te],...ms.kit};const wt=en(ir),sr={...ss};sr[te]={...sr[te],...vs.kit};const _s=en(sr),xs=rs,ka="fa-layers-text",bs=os,ys={...ts};en(ys);const Ms=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],zn=Zt,St=new Set;Object.keys(qt[te]).map(St.add.bind(St));Object.keys(qt[be]).map(St.add.bind(St));Object.keys(qt[ye]).map(St.add.bind(St));const As=[...ns,...hs],zt=st.FontAwesomeConfig||{};function Cs(e){var t=ee.querySelector("script["+e+"]");if(t)return t.getAttribute(e)}function Is(e){return e===""?!0:e==="false"?!1:e==="true"?!0:e}ee&&typeof ee.querySelector=="function"&&[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach(t=>{let[n,r]=t;const o=Is(Cs(n));o!=null&&(zt[r]=o)});const _a={styleDefault:"solid",familyDefault:"classic",cssPrefix:pa,replacementClass:va,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};zt.familyPrefix&&(zt.cssPrefix=zt.familyPrefix);const Et={..._a,...zt};Et.autoReplaceSvg||(Et.observeMutations=!1);const O={};Object.keys(_a).forEach(e=>{Object.defineProperty(O,e,{enumerable:!0,set:function(t){Et[e]=t,Wt.forEach(n=>n(O))},get:function(){return Et[e]}})});Object.defineProperty(O,"familyPrefix",{enumerable:!0,set:function(e){Et.cssPrefix=e,Wt.forEach(t=>t(O))},get:function(){return Et.cssPrefix}});st.FontAwesomeConfig=O;const Wt=[];function $s(e){return Wt.push(e),()=>{Wt.splice(Wt.indexOf(e),1)}}const ot=rr,He={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function Ss(e){if(!e||!et)return;const t=ee.createElement("style");t.setAttribute("type","text/css"),t.innerHTML=e;const n=ee.head.childNodes;let r=null;for(let o=n.length-1;o>-1;o--){const i=n[o],u=(i.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(u)>-1&&(r=i)}return ee.head.insertBefore(t,r),e}const Es="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function Xt(){let e=12,t="";for(;e-- >0;)t+=Es[Math.random()*62|0];return t}function jt(e){const t=[];for(let n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function Tr(e){return e.classList?jt(e.classList):(e.getAttribute("class")||"").split(" ").filter(t=>t)}function xa(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function Ls(e){return Object.keys(e||{}).reduce((t,n)=>t+"".concat(n,'="').concat(xa(e[n]),'" '),"").trim()}function Vn(e){return Object.keys(e||{}).reduce((t,n)=>t+"".concat(n,": ").concat(e[n].trim(),";"),"")}function Pr(e){return e.size!==He.size||e.x!==He.x||e.y!==He.y||e.rotate!==He.rotate||e.flipX||e.flipY}function Ts(e){let{transform:t,containerWidth:n,iconWidth:r}=e;const o={transform:"translate(".concat(n/2," 256)")},i="translate(".concat(t.x*32,", ").concat(t.y*32,") "),u="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),c="rotate(".concat(t.rotate," 0 0)"),d={transform:"".concat(i," ").concat(u," ").concat(c)},h={transform:"translate(".concat(r/2*-1," -256)")};return{outer:o,inner:d,path:h}}function Ps(e){let{transform:t,width:n=rr,height:r=rr,startCentered:o=!1}=e,i="";return o&&ua?i+="translate(".concat(t.x/ot-n/2,"em, ").concat(t.y/ot-r/2,"em) "):o?i+="translate(calc(-50% + ".concat(t.x/ot,"em), calc(-50% + ").concat(t.y/ot,"em)) "):i+="translate(".concat(t.x/ot,"em, ").concat(t.y/ot,"em) "),i+="scale(".concat(t.size/ot*(t.flipX?-1:1),", ").concat(t.size/ot*(t.flipY?-1:1),") "),i+="rotate(".concat(t.rotate,"deg) "),i}var Os=`:root, :host { + --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"; + --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"; + --fa-font-light: normal 300 1em/1 "Font Awesome 6 Pro"; + --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Pro"; + --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone"; + --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"; + --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-regular: normal 400 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-light: normal 300 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-thin: normal 100 1em/1 "Font Awesome 6 Sharp"; + --fa-font-sharp-duotone-solid: normal 900 1em/1 "Font Awesome 6 Sharp Duotone"; +} + +svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa { + overflow: visible; + box-sizing: content-box; +} + +.svg-inline--fa { + display: var(--fa-display, inline-block); + height: 1em; + overflow: visible; + vertical-align: -0.125em; +} +.svg-inline--fa.fa-2xs { + vertical-align: 0.1em; +} +.svg-inline--fa.fa-xs { + vertical-align: 0em; +} +.svg-inline--fa.fa-sm { + vertical-align: -0.0714285705em; +} +.svg-inline--fa.fa-lg { + vertical-align: -0.2em; +} +.svg-inline--fa.fa-xl { + vertical-align: -0.25em; +} +.svg-inline--fa.fa-2xl { + vertical-align: -0.3125em; +} +.svg-inline--fa.fa-pull-left { + margin-right: var(--fa-pull-margin, 0.3em); + width: auto; +} +.svg-inline--fa.fa-pull-right { + margin-left: var(--fa-pull-margin, 0.3em); + width: auto; +} +.svg-inline--fa.fa-li { + width: var(--fa-li-width, 2em); + top: 0.25em; +} +.svg-inline--fa.fa-fw { + width: var(--fa-fw-width, 1.25em); +} + +.fa-layers svg.svg-inline--fa { + bottom: 0; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; +} + +.fa-layers-counter, .fa-layers-text { + display: inline-block; + position: absolute; + text-align: center; +} + +.fa-layers { + display: inline-block; + height: 1em; + position: relative; + text-align: center; + vertical-align: -0.125em; + width: 1em; +} +.fa-layers svg.svg-inline--fa { + transform-origin: center center; +} + +.fa-layers-text { + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + transform-origin: center center; +} + +.fa-layers-counter { + background-color: var(--fa-counter-background-color, #ff253a); + border-radius: var(--fa-counter-border-radius, 1em); + box-sizing: border-box; + color: var(--fa-inverse, #fff); + line-height: var(--fa-counter-line-height, 1); + max-width: var(--fa-counter-max-width, 5em); + min-width: var(--fa-counter-min-width, 1.5em); + overflow: hidden; + padding: var(--fa-counter-padding, 0.25em 0.5em); + right: var(--fa-right, 0); + text-overflow: ellipsis; + top: var(--fa-top, 0); + transform: scale(var(--fa-counter-scale, 0.25)); + transform-origin: top right; +} + +.fa-layers-bottom-right { + bottom: var(--fa-bottom, 0); + right: var(--fa-right, 0); + top: auto; + transform: scale(var(--fa-layers-scale, 0.25)); + transform-origin: bottom right; +} + +.fa-layers-bottom-left { + bottom: var(--fa-bottom, 0); + left: var(--fa-left, 0); + right: auto; + top: auto; + transform: scale(var(--fa-layers-scale, 0.25)); + transform-origin: bottom left; +} + +.fa-layers-top-right { + top: var(--fa-top, 0); + right: var(--fa-right, 0); + transform: scale(var(--fa-layers-scale, 0.25)); + transform-origin: top right; +} + +.fa-layers-top-left { + left: var(--fa-left, 0); + right: auto; + top: var(--fa-top, 0); + transform: scale(var(--fa-layers-scale, 0.25)); + transform-origin: top left; +} + +.fa-1x { + font-size: 1em; +} + +.fa-2x { + font-size: 2em; +} + +.fa-3x { + font-size: 3em; +} + +.fa-4x { + font-size: 4em; +} + +.fa-5x { + font-size: 5em; +} + +.fa-6x { + font-size: 6em; +} + +.fa-7x { + font-size: 7em; +} + +.fa-8x { + font-size: 8em; +} + +.fa-9x { + font-size: 9em; +} + +.fa-10x { + font-size: 10em; +} + +.fa-2xs { + font-size: 0.625em; + line-height: 0.1em; + vertical-align: 0.225em; +} + +.fa-xs { + font-size: 0.75em; + line-height: 0.0833333337em; + vertical-align: 0.125em; +} + +.fa-sm { + font-size: 0.875em; + line-height: 0.0714285718em; + vertical-align: 0.0535714295em; +} + +.fa-lg { + font-size: 1.25em; + line-height: 0.05em; + vertical-align: -0.075em; +} + +.fa-xl { + font-size: 1.5em; + line-height: 0.0416666682em; + vertical-align: -0.125em; +} + +.fa-2xl { + font-size: 2em; + line-height: 0.03125em; + vertical-align: -0.1875em; +} + +.fa-fw { + text-align: center; + width: 1.25em; +} + +.fa-ul { + list-style-type: none; + margin-left: var(--fa-li-margin, 2.5em); + padding-left: 0; +} +.fa-ul > li { + position: relative; +} + +.fa-li { + left: calc(-1 * var(--fa-li-width, 2em)); + position: absolute; + text-align: center; + width: var(--fa-li-width, 2em); + line-height: inherit; +} + +.fa-border { + border-color: var(--fa-border-color, #eee); + border-radius: var(--fa-border-radius, 0.1em); + border-style: var(--fa-border-style, solid); + border-width: var(--fa-border-width, 0.08em); + padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); +} + +.fa-pull-left { + float: left; + margin-right: var(--fa-pull-margin, 0.3em); +} + +.fa-pull-right { + float: right; + margin-left: var(--fa-pull-margin, 0.3em); +} + +.fa-beat { + animation-name: fa-beat; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); +} + +.fa-bounce { + animation-name: fa-bounce; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); +} + +.fa-fade { + animation-name: fa-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); +} + +.fa-beat-fade { + animation-name: fa-beat-fade; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); +} + +.fa-flip { + animation-name: fa-flip; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, ease-in-out); +} + +.fa-shake { + animation-name: fa-shake; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); +} + +.fa-spin { + animation-name: fa-spin; + animation-delay: var(--fa-animation-delay, 0s); + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 2s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, linear); +} + +.fa-spin-reverse { + --fa-animation-direction: reverse; +} + +.fa-pulse, +.fa-spin-pulse { + animation-name: fa-spin; + animation-direction: var(--fa-animation-direction, normal); + animation-duration: var(--fa-animation-duration, 1s); + animation-iteration-count: var(--fa-animation-iteration-count, infinite); + animation-timing-function: var(--fa-animation-timing, steps(8)); +} + +@media (prefers-reduced-motion: reduce) { + .fa-beat, +.fa-bounce, +.fa-fade, +.fa-beat-fade, +.fa-flip, +.fa-pulse, +.fa-shake, +.fa-spin, +.fa-spin-pulse { + animation-delay: -1ms; + animation-duration: 1ms; + animation-iteration-count: 1; + transition-delay: 0s; + transition-duration: 0s; + } +} +@keyframes fa-beat { + 0%, 90% { + transform: scale(1); + } + 45% { + transform: scale(var(--fa-beat-scale, 1.25)); + } +} +@keyframes fa-bounce { + 0% { + transform: scale(1, 1) translateY(0); + } + 10% { + transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); + } + 30% { + transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); + } + 50% { + transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); + } + 57% { + transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); + } + 64% { + transform: scale(1, 1) translateY(0); + } + 100% { + transform: scale(1, 1) translateY(0); + } +} +@keyframes fa-fade { + 50% { + opacity: var(--fa-fade-opacity, 0.4); + } +} +@keyframes fa-beat-fade { + 0%, 100% { + opacity: var(--fa-beat-fade-opacity, 0.4); + transform: scale(1); + } + 50% { + opacity: 1; + transform: scale(var(--fa-beat-fade-scale, 1.125)); + } +} +@keyframes fa-flip { + 50% { + transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); + } +} +@keyframes fa-shake { + 0% { + transform: rotate(-15deg); + } + 4% { + transform: rotate(15deg); + } + 8%, 24% { + transform: rotate(-18deg); + } + 12%, 28% { + transform: rotate(18deg); + } + 16% { + transform: rotate(-22deg); + } + 20% { + transform: rotate(22deg); + } + 32% { + transform: rotate(-12deg); + } + 36% { + transform: rotate(12deg); + } + 40%, 100% { + transform: rotate(0deg); + } +} +@keyframes fa-spin { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} +.fa-rotate-90 { + transform: rotate(90deg); +} + +.fa-rotate-180 { + transform: rotate(180deg); +} + +.fa-rotate-270 { + transform: rotate(270deg); +} + +.fa-flip-horizontal { + transform: scale(-1, 1); +} + +.fa-flip-vertical { + transform: scale(1, -1); +} + +.fa-flip-both, +.fa-flip-horizontal.fa-flip-vertical { + transform: scale(-1, -1); +} + +.fa-rotate-by { + transform: rotate(var(--fa-rotate-angle, 0)); +} + +.fa-stack { + display: inline-block; + vertical-align: middle; + height: 2em; + position: relative; + width: 2.5em; +} + +.fa-stack-1x, +.fa-stack-2x { + bottom: 0; + left: 0; + margin: auto; + position: absolute; + right: 0; + top: 0; + z-index: var(--fa-stack-z-index, auto); +} + +.svg-inline--fa.fa-stack-1x { + height: 1em; + width: 1.25em; +} +.svg-inline--fa.fa-stack-2x { + height: 2em; + width: 2.5em; +} + +.fa-inverse { + color: var(--fa-inverse, #fff); +} + +.sr-only, +.fa-sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.sr-only-focusable:not(:focus), +.fa-sr-only-focusable:not(:focus) { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border-width: 0; +} + +.svg-inline--fa .fa-primary { + fill: var(--fa-primary-color, currentColor); + opacity: var(--fa-primary-opacity, 1); +} + +.svg-inline--fa .fa-secondary { + fill: var(--fa-secondary-color, currentColor); + opacity: var(--fa-secondary-opacity, 0.4); +} + +.svg-inline--fa.fa-swap-opacity .fa-primary { + opacity: var(--fa-secondary-opacity, 0.4); +} + +.svg-inline--fa.fa-swap-opacity .fa-secondary { + opacity: var(--fa-primary-opacity, 1); +} + +.svg-inline--fa mask .fa-primary, +.svg-inline--fa mask .fa-secondary { + fill: black; +} + +.fad.fa-inverse, +.fa-duotone.fa-inverse { + color: var(--fa-inverse, #fff); +}`;function ba(){const e=pa,t=va,n=O.cssPrefix,r=O.replacementClass;let o=Os;if(n!==e||r!==t){const i=new RegExp("\\.".concat(e,"\\-"),"g"),u=new RegExp("\\--".concat(e,"\\-"),"g"),c=new RegExp("\\.".concat(t),"g");o=o.replace(i,".".concat(n,"-")).replace(u,"--".concat(n,"-")).replace(c,".".concat(r))}return o}let uo=!1;function Wn(){O.autoAddCss&&!uo&&(Ss(ba()),uo=!0)}var Bs={mixout(){return{dom:{css:ba,insertCss:Wn}}},hooks(){return{beforeDOMElementCreation(){Wn()},beforeI2svg(){Wn()}}}};const Qe=st||{};Qe[Ke]||(Qe[Ke]={});Qe[Ke].styles||(Qe[Ke].styles={});Qe[Ke].hooks||(Qe[Ke].hooks={});Qe[Ke].shims||(Qe[Ke].shims=[]);var Ne=Qe[Ke];const ya=[],Ma=function(){ee.removeEventListener("DOMContentLoaded",Ma),Mn=1,ya.map(e=>e())};let Mn=!1;et&&(Mn=(ee.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(ee.readyState),Mn||ee.addEventListener("DOMContentLoaded",Ma));function Vs(e){et&&(Mn?setTimeout(e,0):ya.push(e))}function tn(e){const{tag:t,attributes:n={},children:r=[]}=e;return typeof e=="string"?xa(e):"<".concat(t," ").concat(Ls(n),">").concat(r.map(tn).join(""),"")}function fo(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}var Gn=function(t,n,r,o){var i=Object.keys(t),u=i.length,c=n,d,h,v;for(r===void 0?(d=1,v=t[i[0]]):(d=0,v=r);d=55296&&o<=56319&&n=55296&&r<=56319&&n>t+1&&(o=e.charCodeAt(t+1),o>=56320&&o<=57343)?(r-55296)*1024+o-56320+65536:r}function ho(e){return Object.keys(e).reduce((t,n)=>{const r=e[n];return!!r.icon?t[r.iconName]=r.icon:t[n]=r,t},{})}function cr(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{skipHooks:r=!1}=n,o=ho(t);typeof Ne.hooks.addPack=="function"&&!r?Ne.hooks.addPack(e,ho(t)):Ne.styles[e]={...Ne.styles[e]||{},...o},e==="fas"&&cr("fa",t)}const{styles:pt,shims:Ns}=Ne,Ds={[te]:Object.values(wt[te]),[be]:Object.values(wt[be]),[ye]:Object.values(wt[ye])};let Or=null,Aa={},Ca={},Ia={},$a={},Sa={};const Rs={[te]:Object.keys(gt[te]),[be]:Object.keys(gt[be]),[ye]:Object.keys(gt[ye])};function Fs(e){return~As.indexOf(e)}function Zs(e,t){const n=t.split("-"),r=n[0],o=n.slice(1).join("-");return r===e&&o!==""&&!Fs(o)?o:null}const Ea=()=>{const e=r=>Gn(pt,(o,i,u)=>(o[u]=Gn(i,r,{}),o),{});Aa=e((r,o,i)=>(o[3]&&(r[o[3]]=i),o[2]&&o[2].filter(c=>typeof c=="number").forEach(c=>{r[c.toString(16)]=i}),r)),Ca=e((r,o,i)=>(r[i]=i,o[2]&&o[2].filter(c=>typeof c=="string").forEach(c=>{r[c]=i}),r)),Sa=e((r,o,i)=>{const u=o[2];return r[i]=i,u.forEach(c=>{r[c]=i}),r});const t="far"in pt||O.autoFetchSvg,n=Gn(Ns,(r,o)=>{const i=o[0];let u=o[1];const c=o[2];return u==="far"&&!t&&(u="fas"),typeof i=="string"&&(r.names[i]={prefix:u,iconName:c}),typeof i=="number"&&(r.unicodes[i.toString(16)]={prefix:u,iconName:c}),r},{names:{},unicodes:{}});Ia=n.names,$a=n.unicodes,Or=jn(O.styleDefault,{family:O.familyDefault})};$s(e=>{Or=jn(e.styleDefault,{family:O.familyDefault})});Ea();function Br(e,t){return(Aa[e]||{})[t]}function Us(e,t){return(Ca[e]||{})[t]}function at(e,t){return(Sa[e]||{})[t]}function La(e){return Ia[e]||{prefix:null,iconName:null}}function zs(e){const t=$a[e],n=Br("fas",e);return t||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function lt(){return Or}const Vr=()=>({prefix:null,iconName:null,rest:[]});function jn(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{family:n=te}=t,r=gt[n][e],o=qt[n][e]||qt[n][r],i=e in Ne.styles?e:null;return o||i||null}const Ws={[te]:Object.keys(wt[te]),[be]:Object.keys(wt[be]),[ye]:Object.keys(wt[ye])};function Hn(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{skipLookups:n=!1}=t,r={[te]:"".concat(O.cssPrefix,"-").concat(te),[be]:"".concat(O.cssPrefix,"-").concat(be),[ye]:"".concat(O.cssPrefix,"-").concat(ye)};let o=null,i=te;const u=es.filter(d=>d!==da);u.forEach(d=>{(e.includes(r[d])||e.some(h=>Ws[d].includes(h)))&&(i=d)});const c=e.reduce((d,h)=>{const v=Zs(O.cssPrefix,h);if(pt[h]?(h=Ds[i].includes(h)?_s[i][h]:h,o=h,d.prefix=h):Rs[i].indexOf(h)>-1?(o=h,d.prefix=jn(h,{family:i})):v?d.iconName=v:h!==O.replacementClass&&!u.some(b=>h===r[b])&&d.rest.push(h),!n&&d.prefix&&d.iconName){const b=o==="fa"?La(d.iconName):{},M=at(d.prefix,d.iconName);b.prefix&&(o=null),d.iconName=b.iconName||M||d.iconName,d.prefix=b.prefix||d.prefix,d.prefix==="far"&&!pt.far&&pt.fas&&!O.autoFetchSvg&&(d.prefix="fas")}return d},Vr());return(e.includes("fa-brands")||e.includes("fab"))&&(c.prefix="fab"),(e.includes("fa-duotone")||e.includes("fad"))&&(c.prefix="fad"),!c.prefix&&i===be&&(pt.fass||O.autoFetchSvg)&&(c.prefix="fass",c.iconName=at(c.prefix,c.iconName)||c.iconName),!c.prefix&&i===ye&&(pt.fasds||O.autoFetchSvg)&&(c.prefix="fasds",c.iconName=at(c.prefix,c.iconName)||c.iconName),(c.prefix==="fa"||o==="fa")&&(c.prefix=lt()||"fas"),c}class Gs{constructor(){this.definitions={}}add(){for(var t=arguments.length,n=new Array(t),r=0;r{this.definitions[i]={...this.definitions[i]||{},...o[i]},cr(i,o[i]);const u=wt[te][i];u&&cr(u,o[i]),Ea()})}reset(){this.definitions={}}_pullDefinitions(t,n){const r=n.prefix&&n.iconName&&n.icon?{0:n}:n;return Object.keys(r).map(o=>{const{prefix:i,iconName:u,icon:c}=r[o],d=c[2];t[i]||(t[i]={}),d.length>0&&d.forEach(h=>{typeof h=="string"&&(t[i][h]=c)}),t[i][u]=c}),t}}let po=[],It={};const $t={},Ys=Object.keys($t);function qs(e,t){let{mixoutsTo:n}=t;return po=e,It={},Object.keys($t).forEach(r=>{Ys.indexOf(r)===-1&&delete $t[r]}),po.forEach(r=>{const o=r.mixout?r.mixout():{};if(Object.keys(o).forEach(i=>{typeof o[i]=="function"&&(n[i]=o[i]),typeof o[i]=="object"&&Object.keys(o[i]).forEach(u=>{n[i]||(n[i]={}),n[i][u]=o[i][u]})}),r.hooks){const i=r.hooks();Object.keys(i).forEach(u=>{It[u]||(It[u]=[]),It[u].push(i[u])})}r.provides&&r.provides($t)}),n}function ur(e,t){for(var n=arguments.length,r=new Array(n>2?n-2:0),o=2;o{t=u.apply(null,[t,...r])}),t}function yt(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{i.apply(null,n)})}function ct(){const e=arguments[0],t=Array.prototype.slice.call(arguments,1);return $t[e]?$t[e].apply(null,t):void 0}function dr(e){e.prefix==="fa"&&(e.prefix="fas");let{iconName:t}=e;const n=e.prefix||lt();if(t)return t=at(n,t)||t,fo(Ta.definitions,n,t)||fo(Ne.styles,n,t)}const Ta=new Gs,Xs=()=>{O.autoReplaceSvg=!1,O.observeMutations=!1,yt("noAuto")},Ks={i2svg:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return et?(yt("beforeI2svg",e),ct("pseudoElements2svg",e),ct("i2svg",e)):Promise.reject(new Error("Operation requires a DOM of some kind."))},watch:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{autoReplaceSvgRoot:t}=e;O.autoReplaceSvg===!1&&(O.autoReplaceSvg=!0),O.observeMutations=!0,Vs(()=>{Js({autoReplaceSvgRoot:t}),yt("watch",e)})}},Qs={icon:e=>{if(e===null)return null;if(typeof e=="object"&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:at(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&e.length===2){const t=e[1].indexOf("fa-")===0?e[1].slice(3):e[1],n=jn(e[0]);return{prefix:n,iconName:at(n,t)||t}}if(typeof e=="string"&&(e.indexOf("".concat(O.cssPrefix,"-"))>-1||e.match(xs))){const t=Hn(e.split(" "),{skipLookups:!0});return{prefix:t.prefix||lt(),iconName:at(t.prefix,t.iconName)||t.iconName}}if(typeof e=="string"){const t=lt();return{prefix:t,iconName:at(t,e)||e}}}},Me={noAuto:Xs,config:O,dom:Ks,parse:Qs,library:Ta,findIconDefinition:dr,toHtml:tn},Js=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{autoReplaceSvgRoot:t=ee}=e;(Object.keys(Ne.styles).length>0||O.autoFetchSvg)&&et&&O.autoReplaceSvg&&Me.dom.i2svg({node:t})};function Nn(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map(n=>tn(n))}}),Object.defineProperty(e,"node",{get:function(){if(!et)return;const n=ee.createElement("div");return n.innerHTML=e.html,n.children}}),e}function e1(e){let{children:t,main:n,mask:r,attributes:o,styles:i,transform:u}=e;if(Pr(u)&&n.found&&!r.found){const{width:c,height:d}=n,h={x:c/d/2,y:.5};o.style=Vn({...i,"transform-origin":"".concat(h.x+u.x/16,"em ").concat(h.y+u.y/16,"em")})}return[{tag:"svg",attributes:o,children:t}]}function t1(e){let{prefix:t,iconName:n,children:r,attributes:o,symbol:i}=e;const u=i===!0?"".concat(t,"-").concat(O.cssPrefix,"-").concat(n):i;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:{...o,id:u},children:r}]}]}function jr(e){const{icons:{main:t,mask:n},prefix:r,iconName:o,transform:i,symbol:u,title:c,maskId:d,titleId:h,extra:v,watchable:b=!1}=e,{width:M,height:S}=n.found?n:t,$=r==="fak",C=[O.replacementClass,o?"".concat(O.cssPrefix,"-").concat(o):""].filter(k=>v.classes.indexOf(k)===-1).filter(k=>k!==""||!!k).concat(v.classes).join(" ");let y={children:[],attributes:{...v.attributes,"data-prefix":r,"data-icon":o,class:C,role:v.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(M," ").concat(S)}};const w=$&&!~v.classes.indexOf("fa-fw")?{width:"".concat(M/S*16*.0625,"em")}:{};b&&(y.attributes[bt]=""),c&&(y.children.push({tag:"title",attributes:{id:y.attributes["aria-labelledby"]||"title-".concat(h||Xt())},children:[c]}),delete y.attributes.title);const p={...y,prefix:r,iconName:o,main:t,mask:n,maskId:d,transform:i,symbol:u,styles:{...w,...v.styles}},{children:m,attributes:f}=n.found&&t.found?ct("generateAbstractMask",p)||{children:[],attributes:{}}:ct("generateAbstractIcon",p)||{children:[],attributes:{}};return p.children=m,p.attributes=f,u?t1(p):e1(p)}function vo(e){const{content:t,width:n,height:r,transform:o,title:i,extra:u,watchable:c=!1}=e,d={...u.attributes,...i?{title:i}:{},class:u.classes.join(" ")};c&&(d[bt]="");const h={...u.styles};Pr(o)&&(h.transform=Ps({transform:o,startCentered:!0,width:n,height:r}),h["-webkit-transform"]=h.transform);const v=Vn(h);v.length>0&&(d.style=v);const b=[];return b.push({tag:"span",attributes:d,children:[t]}),i&&b.push({tag:"span",attributes:{class:"sr-only"},children:[i]}),b}function n1(e){const{content:t,title:n,extra:r}=e,o={...r.attributes,...n?{title:n}:{},class:r.classes.join(" ")},i=Vn(r.styles);i.length>0&&(o.style=i);const u=[];return u.push({tag:"span",attributes:o,children:[t]}),n&&u.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),u}const{styles:Yn}=Ne;function fr(e){const t=e[0],n=e[1],[r]=e.slice(4);let o=null;return Array.isArray(r)?o={tag:"g",attributes:{class:"".concat(O.cssPrefix,"-").concat(zn.GROUP)},children:[{tag:"path",attributes:{class:"".concat(O.cssPrefix,"-").concat(zn.SECONDARY),fill:"currentColor",d:r[0]}},{tag:"path",attributes:{class:"".concat(O.cssPrefix,"-").concat(zn.PRIMARY),fill:"currentColor",d:r[1]}}]}:o={tag:"path",attributes:{fill:"currentColor",d:r}},{found:!0,width:t,height:n,icon:o}}const r1={found:!1,width:512,height:512};function o1(e,t){!ma&&!O.showMissingIcons&&e&&console.error('Icon with name "'.concat(e,'" and prefix "').concat(t,'" is missing.'))}function hr(e,t){let n=t;return t==="fa"&&O.styleDefault!==null&&(t=lt()),new Promise((r,o)=>{if(n==="fa"){const i=La(e)||{};e=i.iconName||e,t=i.prefix||t}if(e&&t&&Yn[t]&&Yn[t][e]){const i=Yn[t][e];return r(fr(i))}o1(e,t),r({...r1,icon:O.showMissingIcons&&e?ct("missingIconAbstract")||{}:{}})})}const mo=()=>{},pr=O.measurePerformance&&mn&&mn.mark&&mn.measure?mn:{mark:mo,measure:mo},Ut='FA "6.6.0"',a1=e=>(pr.mark("".concat(Ut," ").concat(e," begins")),()=>Pa(e)),Pa=e=>{pr.mark("".concat(Ut," ").concat(e," ends")),pr.measure("".concat(Ut," ").concat(e),"".concat(Ut," ").concat(e," begins"),"".concat(Ut," ").concat(e," ends"))};var Hr={begin:a1,end:Pa};const _n=()=>{};function go(e){return typeof(e.getAttribute?e.getAttribute(bt):null)=="string"}function i1(e){const t=e.getAttribute?e.getAttribute(Er):null,n=e.getAttribute?e.getAttribute(Lr):null;return t&&n}function s1(e){return e&&e.classList&&e.classList.contains&&e.classList.contains(O.replacementClass)}function l1(){return O.autoReplaceSvg===!0?xn.replace:xn[O.autoReplaceSvg]||xn.replace}function c1(e){return ee.createElementNS("http://www.w3.org/2000/svg",e)}function u1(e){return ee.createElement(e)}function Oa(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{ceFn:n=e.tag==="svg"?c1:u1}=t;if(typeof e=="string")return ee.createTextNode(e);const r=n(e.tag);return Object.keys(e.attributes||[]).forEach(function(i){r.setAttribute(i,e.attributes[i])}),(e.children||[]).forEach(function(i){r.appendChild(Oa(i,{ceFn:n}))}),r}function d1(e){let t=" ".concat(e.outerHTML," ");return t="".concat(t,"Font Awesome fontawesome.com "),t}const xn={replace:function(e){const t=e[0];if(t.parentNode)if(e[1].forEach(n=>{t.parentNode.insertBefore(Oa(n),t)}),t.getAttribute(bt)===null&&O.keepOriginalSource){let n=ee.createComment(d1(t));t.parentNode.replaceChild(n,t)}else t.remove()},nest:function(e){const t=e[0],n=e[1];if(~Tr(t).indexOf(O.replacementClass))return xn.replace(e);const r=new RegExp("".concat(O.cssPrefix,"-.*"));if(delete n[0].attributes.id,n[0].attributes.class){const i=n[0].attributes.class.split(" ").reduce((u,c)=>(c===O.replacementClass||c.match(r)?u.toSvg.push(c):u.toNode.push(c),u),{toNode:[],toSvg:[]});n[0].attributes.class=i.toSvg.join(" "),i.toNode.length===0?t.removeAttribute("class"):t.setAttribute("class",i.toNode.join(" "))}const o=n.map(i=>tn(i)).join(` +`);t.setAttribute(bt,""),t.innerHTML=o}};function wo(e){e()}function Ba(e,t){const n=typeof t=="function"?t:_n;if(e.length===0)n();else{let r=wo;O.mutateApproach===ws&&(r=st.requestAnimationFrame||wo),r(()=>{const o=l1(),i=Hr.begin("mutate");e.map(o),i(),n()})}}let Nr=!1;function Va(){Nr=!0}function vr(){Nr=!1}let An=null;function ko(e){if(!io||!O.observeMutations)return;const{treeCallback:t=_n,nodeCallback:n=_n,pseudoElementsCallback:r=_n,observeMutationsRoot:o=ee}=e;An=new io(i=>{if(Nr)return;const u=lt();jt(i).forEach(c=>{if(c.type==="childList"&&c.addedNodes.length>0&&!go(c.addedNodes[0])&&(O.searchPseudoElements&&r(c.target),t(c.target)),c.type==="attributes"&&c.target.parentNode&&O.searchPseudoElements&&r(c.target.parentNode),c.type==="attributes"&&go(c.target)&&~Ms.indexOf(c.attributeName))if(c.attributeName==="class"&&i1(c.target)){const{prefix:d,iconName:h}=Hn(Tr(c.target));c.target.setAttribute(Er,d||u),h&&c.target.setAttribute(Lr,h)}else s1(c.target)&&n(c.target)})}),et&&An.observe(o,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}function f1(){An&&An.disconnect()}function h1(e){const t=e.getAttribute("style");let n=[];return t&&(n=t.split(";").reduce((r,o)=>{const i=o.split(":"),u=i[0],c=i.slice(1);return u&&c.length>0&&(r[u]=c.join(":").trim()),r},{})),n}function p1(e){const t=e.getAttribute("data-prefix"),n=e.getAttribute("data-icon"),r=e.innerText!==void 0?e.innerText.trim():"";let o=Hn(Tr(e));return o.prefix||(o.prefix=lt()),t&&n&&(o.prefix=t,o.iconName=n),o.iconName&&o.prefix||(o.prefix&&r.length>0&&(o.iconName=Us(o.prefix,e.innerText)||Br(o.prefix,lr(e.innerText))),!o.iconName&&O.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(o.iconName=e.firstChild.data)),o}function v1(e){const t=jt(e.attributes).reduce((o,i)=>(o.name!=="class"&&o.name!=="style"&&(o[i.name]=i.value),o),{}),n=e.getAttribute("title"),r=e.getAttribute("data-fa-title-id");return O.autoA11y&&(n?t["aria-labelledby"]="".concat(O.replacementClass,"-title-").concat(r||Xt()):(t["aria-hidden"]="true",t.focusable="false")),t}function m1(){return{iconName:null,title:null,titleId:null,prefix:null,transform:He,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function _o(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0};const{iconName:n,prefix:r,rest:o}=p1(e),i=v1(e),u=ur("parseNodeAttributes",{},e);let c=t.styleParser?h1(e):[];return{iconName:n,title:e.getAttribute("title"),titleId:e.getAttribute("data-fa-title-id"),prefix:r,transform:He,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:o,styles:c,attributes:i},...u}}const{styles:g1}=Ne;function ja(e){const t=O.autoReplaceSvg==="nest"?_o(e,{styleParser:!1}):_o(e);return~t.extra.classes.indexOf(ka)?ct("generateLayersText",e,t):ct("generateSvgReplacementMutation",e,t)}let Fe=new Set;ga.map(e=>{Fe.add("fa-".concat(e))});Object.keys(gt[te]).map(Fe.add.bind(Fe));Object.keys(gt[be]).map(Fe.add.bind(Fe));Object.keys(gt[ye]).map(Fe.add.bind(Fe));Fe=[...Fe];function xo(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!et)return Promise.resolve();const n=ee.documentElement.classList,r=v=>n.add("".concat(co,"-").concat(v)),o=v=>n.remove("".concat(co,"-").concat(v)),i=O.autoFetchSvg?Fe:ga.map(v=>"fa-".concat(v)).concat(Object.keys(g1));i.includes("fa")||i.push("fa");const u=[".".concat(ka,":not([").concat(bt,"])")].concat(i.map(v=>".".concat(v,":not([").concat(bt,"])"))).join(", ");if(u.length===0)return Promise.resolve();let c=[];try{c=jt(e.querySelectorAll(u))}catch{}if(c.length>0)r("pending"),o("complete");else return Promise.resolve();const d=Hr.begin("onTree"),h=c.reduce((v,b)=>{try{const M=ja(b);M&&v.push(M)}catch(M){ma||M.name==="MissingIcon"&&console.error(M)}return v},[]);return new Promise((v,b)=>{Promise.all(h).then(M=>{Ba(M,()=>{r("active"),r("complete"),o("pending"),typeof t=="function"&&t(),d(),v()})}).catch(M=>{d(),b(M)})})}function w1(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;ja(e).then(n=>{n&&Ba([n],t)})}function k1(e){return function(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const r=(t||{}).icon?t:dr(t||{});let{mask:o}=n;return o&&(o=(o||{}).icon?o:dr(o||{})),e(r,{...n,mask:o})}}const _1=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{transform:n=He,symbol:r=!1,mask:o=null,maskId:i=null,title:u=null,titleId:c=null,classes:d=[],attributes:h={},styles:v={}}=t;if(!e)return;const{prefix:b,iconName:M,icon:S}=e;return Nn({type:"icon",...e},()=>(yt("beforeDOMElementCreation",{iconDefinition:e,params:t}),O.autoA11y&&(u?h["aria-labelledby"]="".concat(O.replacementClass,"-title-").concat(c||Xt()):(h["aria-hidden"]="true",h.focusable="false")),jr({icons:{main:fr(S),mask:o?fr(o.icon):{found:!1,width:null,height:null,icon:{}}},prefix:b,iconName:M,transform:{...He,...n},symbol:r,title:u,maskId:i,titleId:c,extra:{attributes:h,styles:v,classes:d}})))};var x1={mixout(){return{icon:k1(_1)}},hooks(){return{mutationObserverCallbacks(e){return e.treeCallback=xo,e.nodeCallback=w1,e}}},provides(e){e.i2svg=function(t){const{node:n=ee,callback:r=()=>{}}=t;return xo(n,r)},e.generateSvgReplacementMutation=function(t,n){const{iconName:r,title:o,titleId:i,prefix:u,transform:c,symbol:d,mask:h,maskId:v,extra:b}=n;return new Promise((M,S)=>{Promise.all([hr(r,u),h.iconName?hr(h.iconName,h.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then($=>{let[C,y]=$;M([t,jr({icons:{main:C,mask:y},prefix:u,iconName:r,transform:c,symbol:d,maskId:v,title:o,titleId:i,extra:b,watchable:!0})])}).catch(S)})},e.generateAbstractIcon=function(t){let{children:n,attributes:r,main:o,transform:i,styles:u}=t;const c=Vn(u);c.length>0&&(r.style=c);let d;return Pr(i)&&(d=ct("generateAbstractTransformGrouping",{main:o,transform:i,containerWidth:o.width,iconWidth:o.width})),n.push(d||o.icon),{children:n,attributes:r}}}},b1={mixout(){return{layer(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{classes:n=[]}=t;return Nn({type:"layer"},()=>{yt("beforeDOMElementCreation",{assembler:e,params:t});let r=[];return e(o=>{Array.isArray(o)?o.map(i=>{r=r.concat(i.abstract)}):r=r.concat(o.abstract)}),[{tag:"span",attributes:{class:["".concat(O.cssPrefix,"-layers"),...n].join(" ")},children:r}]})}}}},y1={mixout(){return{counter(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{title:n=null,classes:r=[],attributes:o={},styles:i={}}=t;return Nn({type:"counter",content:e},()=>(yt("beforeDOMElementCreation",{content:e,params:t}),n1({content:e.toString(),title:n,extra:{attributes:o,styles:i,classes:["".concat(O.cssPrefix,"-layers-counter"),...r]}})))}}}},M1={mixout(){return{text(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{transform:n=He,title:r=null,classes:o=[],attributes:i={},styles:u={}}=t;return Nn({type:"text",content:e},()=>(yt("beforeDOMElementCreation",{content:e,params:t}),vo({content:e,transform:{...He,...n},title:r,extra:{attributes:i,styles:u,classes:["".concat(O.cssPrefix,"-layers-text"),...o]}})))}}},provides(e){e.generateLayersText=function(t,n){const{title:r,transform:o,extra:i}=n;let u=null,c=null;if(ua){const d=parseInt(getComputedStyle(t).fontSize,10),h=t.getBoundingClientRect();u=h.width/d,c=h.height/d}return O.autoA11y&&!r&&(i.attributes["aria-hidden"]="true"),Promise.resolve([t,vo({content:t.innerHTML,width:u,height:c,transform:o,title:r,extra:i,watchable:!0})])}}};const A1=new RegExp('"',"ug"),bo=[1105920,1112319],yo={FontAwesome:{normal:"fas",400:"fas"},...is,...as,...ps},mr=Object.keys(yo).reduce((e,t)=>(e[t.toLowerCase()]=yo[t],e),{}),C1=Object.keys(mr).reduce((e,t)=>{const n=mr[t];return e[t]=n[900]||[...Object.entries(n)][0][1],e},{});function I1(e){const t=e.replace(A1,""),n=Hs(t,0),r=n>=bo[0]&&n<=bo[1],o=t.length===2?t[0]===t[1]:!1;return{value:lr(o?t[0]:t),isSecondary:r||o}}function $1(e,t){const n=e.replace(/^['"]|['"]$/g,"").toLowerCase(),r=parseInt(t),o=isNaN(r)?"normal":r;return(mr[n]||{})[o]||C1[n]}function Mo(e,t){const n="".concat(gs).concat(t.replace(":","-"));return new Promise((r,o)=>{if(e.getAttribute(n)!==null)return r();const u=jt(e.children).filter(M=>M.getAttribute(or)===t)[0],c=st.getComputedStyle(e,t),d=c.getPropertyValue("font-family"),h=d.match(bs),v=c.getPropertyValue("font-weight"),b=c.getPropertyValue("content");if(u&&!h)return e.removeChild(u),r();if(h&&b!=="none"&&b!==""){const M=c.getPropertyValue("content");let S=$1(d,v);const{value:$,isSecondary:C}=I1(M),y=h[0].startsWith("FontAwesome");let w=Br(S,$),p=w;if(y){const m=zs($);m.iconName&&m.prefix&&(w=m.iconName,S=m.prefix)}if(w&&!C&&(!u||u.getAttribute(Er)!==S||u.getAttribute(Lr)!==p)){e.setAttribute(n,p),u&&e.removeChild(u);const m=m1(),{extra:f}=m;f.attributes[or]=t,hr(w,S).then(k=>{const g=jr({...m,icons:{main:k,mask:Vr()},prefix:S,iconName:p,extra:f,watchable:!0}),_=ee.createElementNS("http://www.w3.org/2000/svg","svg");t==="::before"?e.insertBefore(_,e.firstChild):e.appendChild(_),_.outerHTML=g.map(E=>tn(E)).join(` +`),e.removeAttribute(n),r()}).catch(o)}else r()}else r()})}function S1(e){return Promise.all([Mo(e,"::before"),Mo(e,"::after")])}function E1(e){return e.parentNode!==document.head&&!~ks.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(or)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function Ao(e){if(et)return new Promise((t,n)=>{const r=jt(e.querySelectorAll("*")).filter(E1).map(S1),o=Hr.begin("searchPseudoElements");Va(),Promise.all(r).then(()=>{o(),vr(),t()}).catch(()=>{o(),vr(),n()})})}var L1={hooks(){return{mutationObserverCallbacks(e){return e.pseudoElementsCallback=Ao,e}}},provides(e){e.pseudoElements2svg=function(t){const{node:n=ee}=t;O.searchPseudoElements&&Ao(n)}}};let Co=!1;var T1={mixout(){return{dom:{unwatch(){Va(),Co=!0}}}},hooks(){return{bootstrap(){ko(ur("mutationObserverCallbacks",{}))},noAuto(){f1()},watch(e){const{observeMutationsRoot:t}=e;Co?vr():ko(ur("mutationObserverCallbacks",{observeMutationsRoot:t}))}}}};const Io=e=>{let t={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e.toLowerCase().split(" ").reduce((n,r)=>{const o=r.toLowerCase().split("-"),i=o[0];let u=o.slice(1).join("-");if(i&&u==="h")return n.flipX=!0,n;if(i&&u==="v")return n.flipY=!0,n;if(u=parseFloat(u),isNaN(u))return n;switch(i){case"grow":n.size=n.size+u;break;case"shrink":n.size=n.size-u;break;case"left":n.x=n.x-u;break;case"right":n.x=n.x+u;break;case"up":n.y=n.y-u;break;case"down":n.y=n.y+u;break;case"rotate":n.rotate=n.rotate+u;break}return n},t)};var P1={mixout(){return{parse:{transform:e=>Io(e)}}},hooks(){return{parseNodeAttributes(e,t){const n=t.getAttribute("data-fa-transform");return n&&(e.transform=Io(n)),e}}},provides(e){e.generateAbstractTransformGrouping=function(t){let{main:n,transform:r,containerWidth:o,iconWidth:i}=t;const u={transform:"translate(".concat(o/2," 256)")},c="translate(".concat(r.x*32,", ").concat(r.y*32,") "),d="scale(".concat(r.size/16*(r.flipX?-1:1),", ").concat(r.size/16*(r.flipY?-1:1),") "),h="rotate(".concat(r.rotate," 0 0)"),v={transform:"".concat(c," ").concat(d," ").concat(h)},b={transform:"translate(".concat(i/2*-1," -256)")},M={outer:u,inner:v,path:b};return{tag:"g",attributes:{...M.outer},children:[{tag:"g",attributes:{...M.inner},children:[{tag:n.icon.tag,children:n.icon.children,attributes:{...n.icon.attributes,...M.path}}]}]}}}};const qn={x:0,y:0,width:"100%",height:"100%"};function $o(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function O1(e){return e.tag==="g"?e.children:[e]}var B1={hooks(){return{parseNodeAttributes(e,t){const n=t.getAttribute("data-fa-mask"),r=n?Hn(n.split(" ").map(o=>o.trim())):Vr();return r.prefix||(r.prefix=lt()),e.mask=r,e.maskId=t.getAttribute("data-fa-mask-id"),e}}},provides(e){e.generateAbstractMask=function(t){let{children:n,attributes:r,main:o,mask:i,maskId:u,transform:c}=t;const{width:d,icon:h}=o,{width:v,icon:b}=i,M=Ts({transform:c,containerWidth:v,iconWidth:d}),S={tag:"rect",attributes:{...qn,fill:"white"}},$=h.children?{children:h.children.map($o)}:{},C={tag:"g",attributes:{...M.inner},children:[$o({tag:h.tag,attributes:{...h.attributes,...M.path},...$})]},y={tag:"g",attributes:{...M.outer},children:[C]},w="mask-".concat(u||Xt()),p="clip-".concat(u||Xt()),m={tag:"mask",attributes:{...qn,id:w,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"},children:[S,y]},f={tag:"defs",children:[{tag:"clipPath",attributes:{id:p},children:O1(b)},m]};return n.push(f,{tag:"rect",attributes:{fill:"currentColor","clip-path":"url(#".concat(p,")"),mask:"url(#".concat(w,")"),...qn}}),{children:n,attributes:r}}}},V1={provides(e){let t=!1;st.matchMedia&&(t=st.matchMedia("(prefers-reduced-motion: reduce)").matches),e.missingIconAbstract=function(){const n=[],r={fill:"currentColor"},o={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};n.push({tag:"path",attributes:{...r,d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"}});const i={...o,attributeName:"opacity"},u={tag:"circle",attributes:{...r,cx:"256",cy:"364",r:"28"},children:[]};return t||u.children.push({tag:"animate",attributes:{...o,attributeName:"r",values:"28;14;28;28;14;28;"}},{tag:"animate",attributes:{...i,values:"1;0;1;1;0;1;"}}),n.push(u),n.push({tag:"path",attributes:{...r,opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"},children:t?[]:[{tag:"animate",attributes:{...i,values:"1;0;0;0;0;1;"}}]}),t||n.push({tag:"path",attributes:{...r,opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"},children:[{tag:"animate",attributes:{...i,values:"0;0;1;1;0;0;"}}]}),{tag:"g",attributes:{class:"missing"},children:n}}}},j1={hooks(){return{parseNodeAttributes(e,t){const n=t.getAttribute("data-fa-symbol"),r=n===null?!1:n===""?!0:n;return e.symbol=r,e}}}},H1=[Bs,x1,b1,y1,M1,L1,T1,P1,B1,V1,j1];qs(H1,{mixoutsTo:Me});Me.noAuto;Me.config;const N1=Me.library;Me.dom;const gr=Me.parse;Me.findIconDefinition;Me.toHtml;const D1=Me.icon;Me.layer;Me.text;Me.counter;function So(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(o){return Object.getOwnPropertyDescriptor(e,o).enumerable})),n.push.apply(n,r)}return n}function Xe(e){for(var t=1;t=0)continue;n[r]=e[r]}return n}function U1(e,t){if(e==null)return{};var n=Z1(e,t),r,o;if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0)&&Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var z1=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Ha={exports:{}};(function(e){(function(t){var n=function(w,p,m){if(!h(p)||b(p)||M(p)||S(p)||d(p))return p;var f,k=0,g=0;if(v(p))for(f=[],g=p.length;k1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string")return e;var r=(e.children||[]).map(function(d){return Na(d)}),o=Object.keys(e.attributes||{}).reduce(function(d,h){var v=e.attributes[h];switch(h){case"class":d.class=q1(v);break;case"style":d.style=Y1(v);break;default:d.attrs[h]=v}return d},{attrs:{},class:{},style:{}});n.class;var i=n.style,u=i===void 0?{}:i,c=U1(n,G1);return mt(e.tag,Xe(Xe(Xe({},t),{},{class:o.class,style:Xe(Xe({},o.style),u)},o.attrs),c),r)}var Da=!1;try{Da=!0}catch{}function X1(){if(!Da&&console&&typeof console.error=="function"){var e;(e=console).error.apply(e,arguments)}}function Xn(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?me({},e,t):{}}function K1(e){var t,n=(t={"fa-spin":e.spin,"fa-pulse":e.pulse,"fa-fw":e.fixedWidth,"fa-border":e.border,"fa-li":e.listItem,"fa-inverse":e.inverse,"fa-flip":e.flip===!0,"fa-flip-horizontal":e.flip==="horizontal"||e.flip==="both","fa-flip-vertical":e.flip==="vertical"||e.flip==="both"},me(me(me(me(me(me(me(me(me(me(t,"fa-".concat(e.size),e.size!==null),"fa-rotate-".concat(e.rotation),e.rotation!==null),"fa-pull-".concat(e.pull),e.pull!==null),"fa-swap-opacity",e.swapOpacity),"fa-bounce",e.bounce),"fa-shake",e.shake),"fa-beat",e.beat),"fa-fade",e.fade),"fa-beat-fade",e.beatFade),"fa-flash",e.flash),me(me(t,"fa-spin-pulse",e.spinPulse),"fa-spin-reverse",e.spinReverse));return Object.keys(n).map(function(r){return n[r]?r:null}).filter(function(r){return r})}function Eo(e){if(e&&Cn(e)==="object"&&e.prefix&&e.iconName&&e.icon)return e;if(gr.icon)return gr.icon(e);if(e===null)return null;if(Cn(e)==="object"&&e.prefix&&e.iconName)return e;if(Array.isArray(e)&&e.length===2)return{prefix:e[0],iconName:e[1]};if(typeof e=="string")return{prefix:"fas",iconName:e}}var Q1=B({name:"FontAwesomeIcon",props:{border:{type:Boolean,default:!1},fixedWidth:{type:Boolean,default:!1},flip:{type:[Boolean,String],default:!1,validator:function(t){return[!0,!1,"horizontal","vertical","both"].indexOf(t)>-1}},icon:{type:[Object,Array,String],required:!0},mask:{type:[Object,Array,String],default:null},maskId:{type:String,default:null},listItem:{type:Boolean,default:!1},pull:{type:String,default:null,validator:function(t){return["right","left"].indexOf(t)>-1}},pulse:{type:Boolean,default:!1},rotation:{type:[String,Number],default:null,validator:function(t){return[90,180,270].indexOf(Number.parseInt(t,10))>-1}},swapOpacity:{type:Boolean,default:!1},size:{type:String,default:null,validator:function(t){return["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"].indexOf(t)>-1}},spin:{type:Boolean,default:!1},transform:{type:[String,Object],default:null},symbol:{type:[Boolean,String],default:!1},title:{type:String,default:null},titleId:{type:String,default:null},inverse:{type:Boolean,default:!1},bounce:{type:Boolean,default:!1},shake:{type:Boolean,default:!1},beat:{type:Boolean,default:!1},fade:{type:Boolean,default:!1},beatFade:{type:Boolean,default:!1},flash:{type:Boolean,default:!1},spinPulse:{type:Boolean,default:!1},spinReverse:{type:Boolean,default:!1}},setup:function(t,n){var r=n.attrs,o=N(function(){return Eo(t.icon)}),i=N(function(){return Xn("classes",K1(t))}),u=N(function(){return Xn("transform",typeof t.transform=="string"?gr.transform(t.transform):t.transform)}),c=N(function(){return Xn("mask",Eo(t.mask))}),d=N(function(){return D1(o.value,Xe(Xe(Xe(Xe({},i.value),u.value),c.value),{},{symbol:t.symbol,title:t.title,titleId:t.titleId,maskId:t.maskId}))});ke(d,function(v){if(!v)return X1("Could not find one or more icon(s)",o.value,c.value)},{immediate:!0});var h=N(function(){return d.value?Na(d.value.abstract[0],{},r):null});return function(){return h.value}}});const J1={prefix:"fas",iconName:"skull-crossbones",icon:[448,512,[128369,9760],"f714","M368 128c0 44.4-25.4 83.5-64 106.4l0 21.6c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-21.6c-38.6-23-64-62.1-64-106.4C80 57.3 144.5 0 224 0s144 57.3 144 128zM168 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM3.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L224 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L295.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L224 419.8 46.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L152.4 384 17.7 316.6C1.9 308.7-4.5 289.5 3.4 273.7z"]};var Lo=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function e0(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Ra={exports:{}};(function(e){var t=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/** + * Prism: Lightweight, robust, elegant syntax highlighting + * + * @license MIT + * @author Lea Verou + * @namespace + * @public + */var n=function(r){var o=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,i=0,u={},c={manual:r.Prism&&r.Prism.manual,disableWorkerMessageHandler:r.Prism&&r.Prism.disableWorkerMessageHandler,util:{encode:function p(m){return m instanceof d?new d(m.type,p(m.content),m.alias):Array.isArray(m)?m.map(p):m.replace(/&/g,"&").replace(/"u")return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(k){var p=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(k.stack)||[])[1];if(p){var m=document.getElementsByTagName("script");for(var f in m)if(m[f].src==p)return m[f]}return null}},isActive:function(p,m,f){for(var k="no-"+m;p;){var g=p.classList;if(g.contains(m))return!0;if(g.contains(k))return!1;p=p.parentElement}return!!f}},languages:{plain:u,plaintext:u,text:u,txt:u,extend:function(p,m){var f=c.util.clone(c.languages[p]);for(var k in m)f[k]=m[k];return f},insertBefore:function(p,m,f,k){k=k||c.languages;var g=k[p],_={};for(var E in g)if(g.hasOwnProperty(E)){if(E==m)for(var T in f)f.hasOwnProperty(T)&&(_[T]=f[T]);f.hasOwnProperty(E)||(_[E]=g[E])}var F=k[p];return k[p]=_,c.languages.DFS(c.languages,function(z,G){G===F&&z!=p&&(this[z]=_)}),_},DFS:function p(m,f,k,g){g=g||{};var _=c.util.objId;for(var E in m)if(m.hasOwnProperty(E)){f.call(m,E,m[E],k||E);var T=m[E],F=c.util.type(T);F==="Object"&&!g[_(T)]?(g[_(T)]=!0,p(T,f,null,g)):F==="Array"&&!g[_(T)]&&(g[_(T)]=!0,p(T,f,E,g))}}},plugins:{},highlightAll:function(p,m){c.highlightAllUnder(document,p,m)},highlightAllUnder:function(p,m,f){var k={callback:f,container:p,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};c.hooks.run("before-highlightall",k),k.elements=Array.prototype.slice.apply(k.container.querySelectorAll(k.selector)),c.hooks.run("before-all-elements-highlight",k);for(var g=0,_;_=k.elements[g++];)c.highlightElement(_,m===!0,k.callback)},highlightElement:function(p,m,f){var k=c.util.getLanguage(p),g=c.languages[k];c.util.setLanguage(p,k);var _=p.parentElement;_&&_.nodeName.toLowerCase()==="pre"&&c.util.setLanguage(_,k);var E=p.textContent,T={element:p,language:k,grammar:g,code:E};function F(G){T.highlightedCode=G,c.hooks.run("before-insert",T),T.element.innerHTML=T.highlightedCode,c.hooks.run("after-highlight",T),c.hooks.run("complete",T),f&&f.call(T.element)}if(c.hooks.run("before-sanity-check",T),_=T.element.parentElement,_&&_.nodeName.toLowerCase()==="pre"&&!_.hasAttribute("tabindex")&&_.setAttribute("tabindex","0"),!T.code){c.hooks.run("complete",T),f&&f.call(T.element);return}if(c.hooks.run("before-highlight",T),!T.grammar){F(c.util.encode(T.code));return}if(m&&r.Worker){var z=new Worker(c.filename);z.onmessage=function(G){F(G.data)},z.postMessage(JSON.stringify({language:T.language,code:T.code,immediateClose:!0}))}else F(c.highlight(T.code,T.grammar,T.language))},highlight:function(p,m,f){var k={code:p,grammar:m,language:f};if(c.hooks.run("before-tokenize",k),!k.grammar)throw new Error('The language "'+k.language+'" has no grammar.');return k.tokens=c.tokenize(k.code,k.grammar),c.hooks.run("after-tokenize",k),d.stringify(c.util.encode(k.tokens),k.language)},tokenize:function(p,m){var f=m.rest;if(f){for(var k in f)m[k]=f[k];delete m.rest}var g=new b;return M(g,g.head,p),v(p,g,m,g.head,0),$(g)},hooks:{all:{},add:function(p,m){var f=c.hooks.all;f[p]=f[p]||[],f[p].push(m)},run:function(p,m){var f=c.hooks.all[p];if(!(!f||!f.length))for(var k=0,g;g=f[k++];)g(m)}},Token:d};r.Prism=c;function d(p,m,f,k){this.type=p,this.content=m,this.alias=f,this.length=(k||"").length|0}d.stringify=function p(m,f){if(typeof m=="string")return m;if(Array.isArray(m)){var k="";return m.forEach(function(F){k+=p(F,f)}),k}var g={type:m.type,content:p(m.content,f),tag:"span",classes:["token",m.type],attributes:{},language:f},_=m.alias;_&&(Array.isArray(_)?Array.prototype.push.apply(g.classes,_):g.classes.push(_)),c.hooks.run("wrap",g);var E="";for(var T in g.attributes)E+=" "+T+'="'+(g.attributes[T]||"").replace(/"/g,""")+'"';return"<"+g.tag+' class="'+g.classes.join(" ")+'"'+E+">"+g.content+""};function h(p,m,f,k){p.lastIndex=m;var g=p.exec(f);if(g&&k&&g[1]){var _=g[1].length;g.index+=_,g[0]=g[0].slice(_)}return g}function v(p,m,f,k,g,_){for(var E in f)if(!(!f.hasOwnProperty(E)||!f[E])){var T=f[E];T=Array.isArray(T)?T:[T];for(var F=0;F=_.reach);oe+=q.value.length,q=q.next){var fe=q.value;if(m.length>p.length)return;if(!(fe instanceof d)){var Ae=1,ne;if(de){if(ne=h(ie,oe,p,re),!ne||ne.index>=p.length)break;var ve=ne.index,We=ne.index+ne[0].length,le=oe;for(le+=q.value.length;ve>=le;)q=q.next,le+=q.value.length;if(le-=q.value.length,oe=le,q.value instanceof d)continue;for(var he=q;he!==m.tail&&(le_.reach&&(_.reach=Ce);var Te=q.prev;xe&&(Te=M(m,Te,xe),oe+=xe.length),S(m,Te,Ae);var Mt=new d(E,G?c.tokenize(Le,G):Le,_e,Le);if(q=M(m,Te,Mt),Ge&&M(m,q,Ge),Ae>1){var Ye={cause:E+","+F,reach:Ce};v(p,m,f,q.prev,oe,Ye),_&&Ye.reach>_.reach&&(_.reach=Ye.reach)}}}}}}function b(){var p={value:null,prev:null,next:null},m={value:null,prev:p,next:null};p.next=m,this.head=p,this.tail=m,this.length=0}function M(p,m,f){var k=m.next,g={value:f,prev:m,next:k};return m.next=g,k.prev=g,p.length++,g}function S(p,m,f){for(var k=m.next,g=0;g/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},n.languages.markup.tag.inside["attr-value"].inside.entity=n.languages.markup.entity,n.languages.markup.doctype.inside["internal-subset"].inside=n.languages.markup,n.hooks.add("wrap",function(r){r.type==="entity"&&(r.attributes.title=r.content.replace(/&/,"&"))}),Object.defineProperty(n.languages.markup.tag,"addInlined",{value:function(o,i){var u={};u["language-"+i]={pattern:/(^$)/i,lookbehind:!0,inside:n.languages[i]},u.cdata=/^$/i;var c={"included-cdata":{pattern://i,inside:u}};c["language-"+i]={pattern:/[\s\S]+/,inside:n.languages[i]};var d={};d[o]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return o}),"i"),lookbehind:!0,greedy:!0,inside:c},n.languages.insertBefore("markup","cdata",d)}}),Object.defineProperty(n.languages.markup.tag,"addAttribute",{value:function(r,o){n.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+r+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[o,"language-"+o],inside:n.languages[o]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.xml=n.languages.extend("markup",{}),n.languages.ssml=n.languages.xml,n.languages.atom=n.languages.xml,n.languages.rss=n.languages.xml,function(r){var o=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;r.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+o.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+o.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+o.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+o.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:o,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},r.languages.css.atrule.inside.rest=r.languages.css;var i=r.languages.markup;i&&(i.tag.addInlined("style","css"),i.tag.addAttribute("style","css"))}(n),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{"class-name":[n.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),n.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,n.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:n.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:n.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:n.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:n.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:n.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),n.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:n.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),n.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),n.languages.markup&&(n.languages.markup.tag.addInlined("script","javascript"),n.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),n.languages.js=n.languages.javascript,function(){if(typeof n>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var r="Loading…",o=function(C,y){return"✖ Error "+C+" while fetching file: "+y},i="✖ Error: File does not exist or is empty",u={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},c="data-src-status",d="loading",h="loaded",v="failed",b="pre[data-src]:not(["+c+'="'+h+'"]):not(['+c+'="'+d+'"])';function M(C,y,w){var p=new XMLHttpRequest;p.open("GET",C,!0),p.onreadystatechange=function(){p.readyState==4&&(p.status<400&&p.responseText?y(p.responseText):p.status>=400?w(o(p.status,p.statusText)):w(i))},p.send(null)}function S(C){var y=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(C||"");if(y){var w=Number(y[1]),p=y[2],m=y[3];return p?m?[w,Number(m)]:[w,void 0]:[w,w]}}n.hooks.add("before-highlightall",function(C){C.selector+=", "+b}),n.hooks.add("before-sanity-check",function(C){var y=C.element;if(y.matches(b)){C.code="",y.setAttribute(c,d);var w=y.appendChild(document.createElement("CODE"));w.textContent=r;var p=y.getAttribute("data-src"),m=C.language;if(m==="none"){var f=(/\.(\w+)$/.exec(p)||[,"none"])[1];m=u[f]||f}n.util.setLanguage(w,m),n.util.setLanguage(y,m);var k=n.plugins.autoloader;k&&k.loadLanguages(m),M(p,function(g){y.setAttribute(c,h);var _=S(y.getAttribute("data-range"));if(_){var E=g.split(/\r\n?|\n/g),T=_[0],F=_[1]==null?E.length:_[1];T<0&&(T+=E.length),T=Math.max(0,Math.min(T-1,E.length)),F<0&&(F+=E.length),F=Math.max(0,Math.min(F,E.length)),g=E.slice(T,F).join(` +`),y.hasAttribute("data-start")||y.setAttribute("data-start",String(T+1))}w.textContent=g,n.highlightElement(w)},function(g){y.setAttribute(c,v),w.textContent=g})}}),n.plugins.fileHighlight={highlight:function(y){for(var w=(y||document).querySelectorAll(b),p=0,m;m=w[p++];)n.highlightElement(m)}};var $=!1;n.fileHighlight=function(){$||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),$=!0),n.plugins.fileHighlight.highlight.apply(this,arguments)}}()})(Ra);var t0=Ra.exports;const To=e0(t0);Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/};N1.add(J1);const n0={components:{FontAwesomeIcon:Q1},setup(){const e=U(["ClickHouse","Pinot","Elasticsearch","MongoDB","PostgreSQL"]),t=U([{question:"How many hits were driven by advertising?",text:"SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0;"},{question:"What's the total ad impact, hit count, and average screen width?",text:"SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits;"},{question:"How many unique users visited the site?",text:"SELECT COUNT(DISTINCT UserID) FROM hits;"},{question:"What are the top 10 regions by unique user count?",text:"SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC LIMIT 10;"},{question:"What are the top 10 search phrases from Google?",text:"SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10;"}]),n=Jo({"Load time":{ClickHouse:"494s",Pinot:"2032s",Elasticsearch:"10072s",MongoDB:"44824s",PostgreSQL:"2342s"},"Data size":{ClickHouse:"13.48 GiB",Pinot:"-",Elasticsearch:"71.37 GiB",MongoDB:"80.46 GiB",PostgreSQL:"72.45 GiB"},"Q1.":{ClickHouse:"0.007s",Pinot:"0.185s",Elasticsearch:"1.667s",MongoDB:"0.398s",PostgreSQL:"254.238s"},"Q2.":{ClickHouse:"0.020s",Pinot:"0.258s",Elasticsearch:"13.991s",MongoDB:"115.775s",PostgreSQL:"263.072s"},"Q3.":{ClickHouse:"0.339s",Pinot:"3.633s",Elasticsearch:"4.413s",MongoDB:"25.618s",PostgreSQL:"42.334s"},"Q4.":{ClickHouse:"0.490s",Pinot:"2.902s",Elasticsearch:"16.050s",MongoDB:"377.012s",PostgreSQL:"321.918s"},"Q5.":{ClickHouse:"0.622s",Pinot:"-",Elasticsearch:"16.459s",MongoDB:"20.130s",PostgreSQL:"267.690s"}}),r=U(!1),o=U(null),i=(h,v)=>{var w;const b=(w=n[h])==null?void 0:w[v];if(b==="-"||b===""||b===void 0)return"unavailable";const M=parseFloat(b);if(isNaN(M))return"unavailable";const $=Object.values(n[h]||{}).map(p=>parseFloat(p)).filter(p=>!isNaN(p)),C=Math.min(...$);if(M===C)return"best";const y=M/C;return y<2?"best":y<10?"good":y<50?"average":y<250?"below-average":"poor"},u=h=>{o.value=t.value[h],r.value=!0},c=()=>{r.value=!1},d=N(()=>o.value?To.highlight(o.value.text,To.languages.sql,"sql"):"");return{databases:e,queries:t,benchmarkData:n,showModal:r,selectedQuery:o,getColorClass:i,showQueryModal:u,closeModal:c,highlightedSQL:d}}},Dr=e=>(ce("data-v-cc929558"),e=e(),ue(),e),r0={class:"benchmark-table"},o0=Dr(()=>l("th",{class:"query-col"},null,-1)),a0={class:"metadata-row"},i0=Dr(()=>l("td",null,"Load time",-1)),s0={class:"metadata-row"},l0=Dr(()=>l("td",null,"Data size",-1)),c0={class:"query-cell"},u0=["onClick"],d0=["innerHTML"];function f0(e,t,n,r,o,i){const u=Je("FontAwesomeIcon");return a(),s(K,null,[l("table",r0,[l("thead",null,[l("tr",null,[o0,(a(!0),s(K,null,ae(r.databases,c=>(a(),s("th",{key:c},Y(c),1))),128))])]),l("tbody",null,[l("tr",a0,[i0,(a(!0),s(K,null,ae(r.databases,c=>(a(),s("td",{key:c,class:Q(r.getColorClass("Load time",c))},Y(r.benchmarkData["Load time"][c]),3))),128))]),l("tr",s0,[l0,(a(!0),s(K,null,ae(r.databases,c=>(a(),s("td",{key:c,class:Q(r.getColorClass("Data size",c))},[r.benchmarkData["Data size"][c]==="-"?(a(),j(u,{key:0,icon:["fas","skull-crossbones"],class:"unavailable-icon"})):(a(),s(K,{key:1},[Be(Y(r.benchmarkData["Data size"][c]),1)],64))],2))),128))]),(a(!0),s(K,null,ae(r.queries,(c,d)=>(a(),s("tr",{key:d,class:"query-row"},[l("td",c0,[l("button",{onClick:h=>r.showQueryModal(d),class:"view-query-btn"}," Query "+Y(d+1),9,u0)]),(a(!0),s(K,null,ae(r.databases,h=>(a(),s("td",{key:h,class:Q(r.getColorClass(`Q${d+1}.`,h))},[r.benchmarkData[`Q${d+1}.`][h]==="-"?(a(),j(u,{key:0,icon:["fas","skull-crossbones"],class:"unavailable-icon"})):(a(),s(K,{key:1},[Be(Y(r.benchmarkData[`Q${d+1}.`][h]),1)],64))],2))),128))]))),128))])]),(a(),j(Ei,{to:"body"},[r.showModal?(a(),s("div",{key:0,class:"modal-backdrop",onClick:t[2]||(t[2]=(...c)=>r.closeModal&&r.closeModal(...c))},[l("div",{class:"modal-content",onClick:t[1]||(t[1]=ea(()=>{},["stop"]))},[l("button",{class:"close-btn",onClick:t[0]||(t[0]=(...c)=>r.closeModal&&r.closeModal(...c))},"×"),l("h3",null,Y(r.selectedQuery.question),1),l("pre",null,[l("code",{class:"language-sql",innerHTML:r.highlightedSQL},null,8,d0)])])])):P("",!0)]))],64)}const h0=D(n0,[["render",f0],["__scopeId","data-v-cc929558"]]),p0=B({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(e){return(t,n)=>(a(),s("span",{class:Q(["VPBadge",t.type])},[I(t.$slots,"default",{},()=>[Be(Y(t.text),1)])],2))}}),v0={key:0,class:"VPBackdrop"},m0=B({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(e){return(t,n)=>(a(),j(Ar,{name:"fade"},{default:L(()=>[t.show?(a(),s("div",v0)):P("",!0)]),_:1}))}}),g0=D(m0,[["__scopeId","data-v-c79a1216"]]),W=Li;function w0(e,t){let n,r=!1;return()=>{n&&clearTimeout(n),r?n=setTimeout(e,t):(e(),(r=!0)&&setTimeout(()=>r=!1,t))}}function wr(e){return/^\//.test(e)?e:`/${e}`}function Rr(e){const{pathname:t,search:n,hash:r,protocol:o}=new URL(e,"http://a.com");if(Ti(e)||e.startsWith("#")||!o.startsWith("http")||!Pi(t))return e;const{site:i}=W(),u=t.endsWith("/")||t.endsWith(".html")?e:e.replace(/(?:(^\.+)\/)?.*$/,`$1${t.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${n}${r}`);return Cr(u)}function nn({correspondingLink:e=!1}={}){const{site:t,localeIndex:n,page:r,theme:o,hash:i}=W(),u=N(()=>{var d,h;return{label:(d=t.value.locales[n.value])==null?void 0:d.label,link:((h=t.value.locales[n.value])==null?void 0:h.link)||(n.value==="root"?"/":`/${n.value}/`)}});return{localeLinks:N(()=>Object.entries(t.value.locales).flatMap(([d,h])=>u.value.label===h.label?[]:{text:h.label,link:k0(h.link||(d==="root"?"/":`/${d}/`),o.value.i18nRouting!==!1&&e,r.value.relativePath.slice(u.value.link.length-1),!t.value.cleanUrls)+i.value})),currentLang:u}}function k0(e,t,n,r){return t?e.replace(/\/$/,"")+wr(n.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,r?".html":"")):e}const _0=e=>(ce("data-v-d6be1790"),e=e(),ue(),e),x0={class:"NotFound"},b0={class:"code"},y0={class:"title"},M0=_0(()=>l("div",{class:"divider"},null,-1)),A0={class:"quote"},C0={class:"action"},I0=["href","aria-label"],$0=B({__name:"NotFound",setup(e){const{theme:t}=W(),{currentLang:n}=nn();return(r,o)=>{var i,u,c,d,h;return a(),s("div",x0,[l("p",b0,Y(((i=x(t).notFound)==null?void 0:i.code)??"404"),1),l("h1",y0,Y(((u=x(t).notFound)==null?void 0:u.title)??"PAGE NOT FOUND"),1),M0,l("blockquote",A0,Y(((c=x(t).notFound)==null?void 0:c.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),l("div",C0,[l("a",{class:"link",href:x(Cr)(x(n).link),"aria-label":((d=x(t).notFound)==null?void 0:d.linkLabel)??"go to home"},Y(((h=x(t).notFound)==null?void 0:h.linkText)??"Take me home"),9,I0)])])}}}),S0=D($0,[["__scopeId","data-v-d6be1790"]]);function Fa(e,t){if(Array.isArray(e))return bn(e);if(e==null)return[];t=wr(t);const n=Object.keys(e).sort((o,i)=>i.split("/").length-o.split("/").length).find(o=>t.startsWith(wr(o))),r=n?e[n]:[];return Array.isArray(r)?bn(r):bn(r.items,r.base)}function E0(e){const t=[];let n=0;for(const r in e){const o=e[r];if(o.items){n=t.push(o);continue}t[n]||t.push({items:[]}),t[n].items.push(o)}return t}function L0(e){const t=[];function n(r){for(const o of r)o.text&&o.link&&t.push({text:o.text,link:o.link,docFooterText:o.docFooterText}),o.items&&n(o.items)}return n(e),t}function kr(e,t){return Array.isArray(t)?t.some(n=>kr(e,n)):xt(e,t.link)?!0:t.items?kr(e,t.items):!1}function bn(e,t){return[...e].map(n=>{const r={...n},o=r.base||t;return o&&r.link&&(r.link=o+r.link),r.items&&(r.items=bn(r.items,o)),r})}function tt(){const{frontmatter:e,page:t,theme:n}=W(),r=nr("(min-width: 960px)"),o=U(!1),i=N(()=>{const C=n.value.sidebar,y=t.value.relativePath;return C?Fa(C,y):[]}),u=U(i.value);ke(i,(C,y)=>{JSON.stringify(C)!==JSON.stringify(y)&&(u.value=i.value)});const c=N(()=>e.value.sidebar!==!1&&u.value.length>0&&e.value.layout!=="home"),d=N(()=>h?e.value.aside==null?n.value.aside==="left":e.value.aside==="left":!1),h=N(()=>e.value.layout==="home"?!1:e.value.aside!=null?!!e.value.aside:n.value.aside!==!1),v=N(()=>c.value&&r.value),b=N(()=>c.value?E0(u.value):[]);function M(){o.value=!0}function S(){o.value=!1}function $(){o.value?S():M()}return{isOpen:o,sidebar:u,sidebarGroups:b,hasSidebar:c,hasAside:h,leftAside:d,isSidebarEnabled:v,open:M,close:S,toggle:$}}function T0(e,t){let n;En(()=>{n=e.value?document.activeElement:void 0}),ze(()=>{window.addEventListener("keyup",r)}),Ln(()=>{window.removeEventListener("keyup",r)});function r(o){o.key==="Escape"&&e.value&&(t(),n==null||n.focus())}}function P0(e){const{page:t,hash:n}=W(),r=U(!1),o=N(()=>e.value.collapsed!=null),i=N(()=>!!e.value.link),u=U(!1),c=()=>{u.value=xt(t.value.relativePath,e.value.link)};ke([t,e,n],c),ze(c);const d=N(()=>u.value?!0:e.value.items?kr(t.value.relativePath,e.value.items):!1),h=N(()=>!!(e.value.items&&e.value.items.length));En(()=>{r.value=!!(o.value&&e.value.collapsed)}),Ir(()=>{(u.value||d.value)&&(r.value=!1)});function v(){o.value&&(r.value=!r.value)}return{collapsed:r,collapsible:o,isLink:i,isActiveLink:u,hasActiveLink:d,hasChildren:h,toggle:v}}function O0(){const{hasSidebar:e}=tt(),t=nr("(min-width: 960px)"),n=nr("(min-width: 1280px)");return{isAsideEnabled:N(()=>!n.value&&!t.value?!1:e.value?n.value:t.value)}}const _r=[];function Za(e){return typeof e.outline=="object"&&!Array.isArray(e.outline)&&e.outline.label||e.outlineTitle||"On this page"}function Fr(e){const t=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(n=>n.id&&n.hasChildNodes()).map(n=>{const r=Number(n.tagName[1]);return{element:n,title:B0(n),link:"#"+n.id,level:r}});return V0(t,e)}function B0(e){let t="";for(const n of e.childNodes)if(n.nodeType===1){if(n.classList.contains("VPBadge")||n.classList.contains("header-anchor")||n.classList.contains("ignore-header"))continue;t+=n.textContent}else n.nodeType===3&&(t+=n.textContent);return t.trim()}function V0(e,t){if(t===!1)return[];const n=(typeof t=="object"&&!Array.isArray(t)?t.level:t)||2,[r,o]=typeof n=="number"?[n,n]:n==="deep"?[2,6]:n;e=e.filter(u=>u.level>=r&&u.level<=o),_r.length=0;for(const{element:u,link:c}of e)_r.push({element:u,link:c});const i=[];e:for(let u=0;u=0;d--){const h=e[d];if(h.level{requestAnimationFrame(i),window.addEventListener("scroll",r)}),Oi(()=>{u(location.hash)}),Ln(()=>{window.removeEventListener("scroll",r)});function i(){if(!n.value)return;const c=window.scrollY,d=window.innerHeight,h=document.body.offsetHeight,v=Math.abs(c+d-h)<1,b=_r.map(({element:S,link:$})=>({link:$,top:H0(S)})).filter(({top:S})=>!Number.isNaN(S)).sort((S,$)=>S.top-$.top);if(!b.length){u(null);return}if(c<1){u(null);return}if(v){u(b[b.length-1].link);return}let M=null;for(const{link:S,top:$}of b){if($>c+Bi()+4)break;M=S}u(M)}function u(c){o&&o.classList.remove("active"),c==null?o=null:o=e.value.querySelector(`a[href="${decodeURIComponent(c)}"]`);const d=o;d?(d.classList.add("active"),t.value.style.top=d.offsetTop+39+"px",t.value.style.opacity="1"):(t.value.style.top="33px",t.value.style.opacity="0")}}function H0(e){let t=0;for(;e!==document.body;){if(e===null)return NaN;t+=e.offsetTop,e=e.offsetParent}return t}const N0=["href","title"],D0=B({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(e){function t({target:n}){const r=n.href.split("#")[1],o=document.getElementById(decodeURIComponent(r));o==null||o.focus({preventScroll:!0})}return(n,r)=>{const o=Je("VPDocOutlineItem",!0);return a(),s("ul",{class:Q(["VPDocOutlineItem",n.root?"root":"nested"])},[(a(!0),s(K,null,ae(n.headers,({children:i,link:u,title:c})=>(a(),s("li",null,[l("a",{class:"outline-link",href:u,onClick:t,title:c},Y(c),9,N0),i!=null&&i.length?(a(),j(o,{key:0,headers:i},null,8,["headers"])):P("",!0)]))),256))],2)}}}),Ua=D(D0,[["__scopeId","data-v-b933a997"]]),R0={class:"content"},F0={"aria-level":"2",class:"outline-title",id:"doc-outline-aria-label",role:"heading"},Z0=B({__name:"VPDocAsideOutline",setup(e){const{frontmatter:t,theme:n}=W(),r=$r([]);Tn(()=>{r.value=Fr(t.value.outline??n.value.outline)});const o=U(),i=U();return j0(o,i),(u,c)=>(a(),s("nav",{"aria-labelledby":"doc-outline-aria-label",class:Q(["VPDocAsideOutline",{"has-outline":r.value.length>0}]),ref_key:"container",ref:o},[l("div",R0,[l("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),l("div",F0,Y(x(Za)(x(n))),1),R(Ua,{headers:r.value,root:!0},null,8,["headers"])])],2))}}),U0=D(Z0,[["__scopeId","data-v-a5bbad30"]]),z0={class:"VPDocAsideCarbonAds"},W0=B({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(e){const t=()=>null;return(n,r)=>(a(),s("div",z0,[R(x(t),{"carbon-ads":n.carbonAds},null,8,["carbon-ads"])]))}}),G0=e=>(ce("data-v-3f215769"),e=e(),ue(),e),Y0={class:"VPDocAside"},q0=G0(()=>l("div",{class:"spacer"},null,-1)),X0=B({__name:"VPDocAside",setup(e){const{theme:t}=W();return(n,r)=>(a(),s("div",Y0,[I(n.$slots,"aside-top",{},void 0,!0),I(n.$slots,"aside-outline-before",{},void 0,!0),R(U0),I(n.$slots,"aside-outline-after",{},void 0,!0),q0,I(n.$slots,"aside-ads-before",{},void 0,!0),x(t).carbonAds?(a(),j(W0,{key:0,"carbon-ads":x(t).carbonAds},null,8,["carbon-ads"])):P("",!0),I(n.$slots,"aside-ads-after",{},void 0,!0),I(n.$slots,"aside-bottom",{},void 0,!0)]))}}),K0=D(X0,[["__scopeId","data-v-3f215769"]]);function Q0(){const{theme:e,page:t}=W();return N(()=>{const{text:n="Edit this page",pattern:r=""}=e.value.editLink||{};let o;return typeof r=="function"?o=r(t.value):o=r.replace(/:path/g,t.value.filePath),{url:o,text:n}})}function J0(){const{page:e,theme:t,frontmatter:n}=W();return N(()=>{var h,v,b,M,S,$,C,y;const r=Fa(t.value.sidebar,e.value.relativePath),o=L0(r),i=e2(o,w=>w.link.replace(/[?#].*$/,"")),u=i.findIndex(w=>xt(e.value.relativePath,w.link)),c=((h=t.value.docFooter)==null?void 0:h.prev)===!1&&!n.value.prev||n.value.prev===!1,d=((v=t.value.docFooter)==null?void 0:v.next)===!1&&!n.value.next||n.value.next===!1;return{prev:c?void 0:{text:(typeof n.value.prev=="string"?n.value.prev:typeof n.value.prev=="object"?n.value.prev.text:void 0)??((b=i[u-1])==null?void 0:b.docFooterText)??((M=i[u-1])==null?void 0:M.text),link:(typeof n.value.prev=="object"?n.value.prev.link:void 0)??((S=i[u-1])==null?void 0:S.link)},next:d?void 0:{text:(typeof n.value.next=="string"?n.value.next:typeof n.value.next=="object"?n.value.next.text:void 0)??(($=i[u+1])==null?void 0:$.docFooterText)??((C=i[u+1])==null?void 0:C.text),link:(typeof n.value.next=="object"?n.value.next.link:void 0)??((y=i[u+1])==null?void 0:y.link)}}})}function e2(e,t){const n=new Set;return e.filter(r=>{const o=t(r);return n.has(o)?!1:n.add(o)})}const De=B({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(e){const t=e,n=N(()=>t.tag??(t.href?"a":"span")),r=N(()=>t.href&&ta.test(t.href)||t.target==="_blank");return(o,i)=>(a(),j(Oe(n.value),{class:Q(["VPLink",{link:o.href,"vp-external-link-icon":r.value,"no-icon":o.noIcon}]),href:o.href?x(Rr)(o.href):void 0,target:o.target??(r.value?"_blank":void 0),rel:o.rel??(r.value?"noreferrer":void 0)},{default:L(()=>[I(o.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),t2={class:"VPLastUpdated"},n2=["datetime"],r2=B({__name:"VPDocFooterLastUpdated",setup(e){const{theme:t,page:n,lang:r}=W(),o=N(()=>new Date(n.value.lastUpdated)),i=N(()=>o.value.toISOString()),u=U("");return ze(()=>{En(()=>{var c,d,h;u.value=new Intl.DateTimeFormat((d=(c=t.value.lastUpdated)==null?void 0:c.formatOptions)!=null&&d.forceLocale?r.value:void 0,((h=t.value.lastUpdated)==null?void 0:h.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(o.value)})}),(c,d)=>{var h;return a(),s("p",t2,[Be(Y(((h=x(t).lastUpdated)==null?void 0:h.text)||x(t).lastUpdatedText||"Last updated")+": ",1),l("time",{datetime:i.value},Y(u.value),9,n2)])}}}),o2=D(r2,[["__scopeId","data-v-e98dd255"]]),za=e=>(ce("data-v-e257564d"),e=e(),ue(),e),a2={key:0,class:"VPDocFooter"},i2={key:0,class:"edit-info"},s2={key:0,class:"edit-link"},l2=za(()=>l("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),c2={key:1,class:"last-updated"},u2={key:1,class:"prev-next","aria-labelledby":"doc-footer-aria-label"},d2=za(()=>l("span",{class:"visually-hidden",id:"doc-footer-aria-label"},"Pager",-1)),f2={class:"pager"},h2=["innerHTML"],p2=["innerHTML"],v2={class:"pager"},m2=["innerHTML"],g2=["innerHTML"],w2=B({__name:"VPDocFooter",setup(e){const{theme:t,page:n,frontmatter:r}=W(),o=Q0(),i=J0(),u=N(()=>t.value.editLink&&r.value.editLink!==!1),c=N(()=>n.value.lastUpdated),d=N(()=>u.value||c.value||i.value.prev||i.value.next);return(h,v)=>{var b,M,S,$;return d.value?(a(),s("footer",a2,[I(h.$slots,"doc-footer-before",{},void 0,!0),u.value||c.value?(a(),s("div",i2,[u.value?(a(),s("div",s2,[R(De,{class:"edit-link-button",href:x(o).url,"no-icon":!0},{default:L(()=>[l2,Be(" "+Y(x(o).text),1)]),_:1},8,["href"])])):P("",!0),c.value?(a(),s("div",c2,[R(o2)])):P("",!0)])):P("",!0),(b=x(i).prev)!=null&&b.link||(M=x(i).next)!=null&&M.link?(a(),s("nav",u2,[d2,l("div",f2,[(S=x(i).prev)!=null&&S.link?(a(),j(De,{key:0,class:"pager-link prev",href:x(i).prev.link},{default:L(()=>{var C;return[l("span",{class:"desc",innerHTML:((C=x(t).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,h2),l("span",{class:"title",innerHTML:x(i).prev.text},null,8,p2)]}),_:1},8,["href"])):P("",!0)]),l("div",v2,[($=x(i).next)!=null&&$.link?(a(),j(De,{key:0,class:"pager-link next",href:x(i).next.link},{default:L(()=>{var C;return[l("span",{class:"desc",innerHTML:((C=x(t).docFooter)==null?void 0:C.next)||"Next page"},null,8,m2),l("span",{class:"title",innerHTML:x(i).next.text},null,8,g2)]}),_:1},8,["href"])):P("",!0)])])):P("",!0)])):P("",!0)}}}),k2=D(w2,[["__scopeId","data-v-e257564d"]]),_2=e=>(ce("data-v-39a288b8"),e=e(),ue(),e),x2={class:"container"},b2=_2(()=>l("div",{class:"aside-curtain"},null,-1)),y2={class:"aside-container"},M2={class:"aside-content"},A2={class:"content"},C2={class:"content-container"},I2={class:"main"},$2=B({__name:"VPDoc",setup(e){const{theme:t}=W(),n=Pn(),{hasSidebar:r,hasAside:o,leftAside:i}=tt(),u=N(()=>n.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(c,d)=>{const h=Je("Content");return a(),s("div",{class:Q(["VPDoc",{"has-sidebar":x(r),"has-aside":x(o)}])},[I(c.$slots,"doc-top",{},void 0,!0),l("div",x2,[x(o)?(a(),s("div",{key:0,class:Q(["aside",{"left-aside":x(i)}])},[b2,l("div",y2,[l("div",M2,[R(K0,null,{"aside-top":L(()=>[I(c.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":L(()=>[I(c.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":L(()=>[I(c.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":L(()=>[I(c.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":L(()=>[I(c.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":L(()=>[I(c.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):P("",!0),l("div",A2,[l("div",C2,[I(c.$slots,"doc-before",{},void 0,!0),l("main",I2,[R(h,{class:Q(["vp-doc",[u.value,x(t).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),R(k2,null,{"doc-footer-before":L(()=>[I(c.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),I(c.$slots,"doc-after",{},void 0,!0)])])]),I(c.$slots,"doc-bottom",{},void 0,!0)],2)}}}),S2=D($2,[["__scopeId","data-v-39a288b8"]]),E2=B({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(e){const t=e,n=N(()=>t.href&&ta.test(t.href)),r=N(()=>t.tag||t.href?"a":"button");return(o,i)=>(a(),j(Oe(r.value),{class:Q(["VPButton",[o.size,o.theme]]),href:o.href?x(Rr)(o.href):void 0,target:t.target??(n.value?"_blank":void 0),rel:t.rel??(n.value?"noreferrer":void 0)},{default:L(()=>[Be(Y(o.text),1)]),_:1},8,["class","href","target","rel"]))}}),L2=D(E2,[["__scopeId","data-v-cad61b99"]]),T2=["src","alt"],P2=B({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(e){return(t,n)=>{const r=Je("VPImage",!0);return t.image?(a(),s(K,{key:0},[typeof t.image=="string"||"src"in t.image?(a(),s("img",it({key:0,class:"VPImage"},typeof t.image=="string"?t.$attrs:{...t.image,...t.$attrs},{src:x(Cr)(typeof t.image=="string"?t.image:t.image.src),alt:t.alt??(typeof t.image=="string"?"":t.image.alt||"")}),null,16,T2)):(a(),s(K,{key:1},[R(r,it({class:"dark",image:t.image.dark,alt:t.image.alt},t.$attrs),null,16,["image","alt"]),R(r,it({class:"light",image:t.image.light,alt:t.image.alt},t.$attrs),null,16,["image","alt"])],64))],64)):P("",!0)}}}),In=D(P2,[["__scopeId","data-v-8426fc1a"]]),O2=e=>(ce("data-v-303bb580"),e=e(),ue(),e),B2={class:"container"},V2={class:"main"},j2={key:0,class:"name"},H2=["innerHTML"],N2=["innerHTML"],D2=["innerHTML"],R2={key:0,class:"actions"},F2={key:0,class:"image"},Z2={class:"image-container"},U2=O2(()=>l("div",{class:"image-bg"},null,-1)),z2=B({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(e){const t=On("hero-image-slot-exists");return(n,r)=>(a(),s("div",{class:Q(["VPHero",{"has-image":n.image||x(t)}])},[l("div",B2,[l("div",V2,[I(n.$slots,"home-hero-info-before",{},void 0,!0),I(n.$slots,"home-hero-info",{},()=>[n.name?(a(),s("h1",j2,[l("span",{innerHTML:n.name,class:"clip"},null,8,H2)])):P("",!0),n.text?(a(),s("p",{key:1,innerHTML:n.text,class:"text"},null,8,N2)):P("",!0),n.tagline?(a(),s("p",{key:2,innerHTML:n.tagline,class:"tagline"},null,8,D2)):P("",!0)],!0),I(n.$slots,"home-hero-info-after",{},void 0,!0),n.actions?(a(),s("div",R2,[(a(!0),s(K,null,ae(n.actions,o=>(a(),s("div",{key:o.link,class:"action"},[R(L2,{tag:"a",size:"medium",theme:o.theme,text:o.text,href:o.link,target:o.target,rel:o.rel},null,8,["theme","text","href","target","rel"])]))),128))])):P("",!0),I(n.$slots,"home-hero-actions-after",{},void 0,!0)]),n.image||x(t)?(a(),s("div",F2,[l("div",Z2,[U2,I(n.$slots,"home-hero-image",{},()=>[n.image?(a(),j(In,{key:0,class:"image-src",image:n.image},null,8,["image"])):P("",!0)],!0)])])):P("",!0)])],2))}}),W2=D(z2,[["__scopeId","data-v-303bb580"]]),G2=B({__name:"VPHomeHero",setup(e){const{frontmatter:t}=W();return(n,r)=>x(t).hero?(a(),j(W2,{key:0,class:"VPHomeHero",name:x(t).hero.name,text:x(t).hero.text,tagline:x(t).hero.tagline,image:x(t).hero.image,actions:x(t).hero.actions},{"home-hero-info-before":L(()=>[I(n.$slots,"home-hero-info-before")]),"home-hero-info":L(()=>[I(n.$slots,"home-hero-info")]),"home-hero-info-after":L(()=>[I(n.$slots,"home-hero-info-after")]),"home-hero-actions-after":L(()=>[I(n.$slots,"home-hero-actions-after")]),"home-hero-image":L(()=>[I(n.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):P("",!0)}}),Y2=e=>(ce("data-v-a3976bdc"),e=e(),ue(),e),q2={class:"box"},X2={key:0,class:"icon"},K2=["innerHTML"],Q2=["innerHTML"],J2=["innerHTML"],e5={key:4,class:"link-text"},t5={class:"link-text-value"},n5=Y2(()=>l("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),r5=B({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(e){return(t,n)=>(a(),j(De,{class:"VPFeature",href:t.link,rel:t.rel,target:t.target,"no-icon":!0,tag:t.link?"a":"div"},{default:L(()=>[l("article",q2,[typeof t.icon=="object"&&t.icon.wrap?(a(),s("div",X2,[R(In,{image:t.icon,alt:t.icon.alt,height:t.icon.height||48,width:t.icon.width||48},null,8,["image","alt","height","width"])])):typeof t.icon=="object"?(a(),j(In,{key:1,image:t.icon,alt:t.icon.alt,height:t.icon.height||48,width:t.icon.width||48},null,8,["image","alt","height","width"])):t.icon?(a(),s("div",{key:2,class:"icon",innerHTML:t.icon},null,8,K2)):P("",!0),l("h2",{class:"title",innerHTML:t.title},null,8,Q2),t.details?(a(),s("p",{key:3,class:"details",innerHTML:t.details},null,8,J2)):P("",!0),t.linkText?(a(),s("div",e5,[l("p",t5,[Be(Y(t.linkText)+" ",1),n5])])):P("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),o5=D(r5,[["__scopeId","data-v-a3976bdc"]]),a5={key:0,class:"VPFeatures"},i5={class:"container"},s5={class:"items"},l5=B({__name:"VPFeatures",props:{features:{}},setup(e){const t=e,n=N(()=>{const r=t.features.length;if(r){if(r===2)return"grid-2";if(r===3)return"grid-3";if(r%3===0)return"grid-6";if(r>3)return"grid-4"}else return});return(r,o)=>r.features?(a(),s("div",a5,[l("div",i5,[l("div",s5,[(a(!0),s(K,null,ae(r.features,i=>(a(),s("div",{key:i.title,class:Q(["item",[n.value]])},[R(o5,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):P("",!0)}}),c5=D(l5,[["__scopeId","data-v-a6181336"]]),u5=B({__name:"VPHomeFeatures",setup(e){const{frontmatter:t}=W();return(n,r)=>x(t).features?(a(),j(c5,{key:0,class:"VPHomeFeatures",features:x(t).features},null,8,["features"])):P("",!0)}}),d5=B({__name:"VPHomeContent",setup(e){const{width:t}=Vi({initialWidth:0,includeScrollbar:!1});return(n,r)=>(a(),s("div",{class:"vp-doc container",style:na(x(t)?{"--vp-offset":`calc(50% - ${x(t)/2}px)`}:{})},[I(n.$slots,"default",{},void 0,!0)],4))}}),f5=D(d5,[["__scopeId","data-v-8e2d4988"]]),h5={class:"VPHome"},p5=B({__name:"VPHome",setup(e){const{frontmatter:t}=W();return(n,r)=>{const o=Je("Content");return a(),s("div",h5,[I(n.$slots,"home-hero-before",{},void 0,!0),R(G2,null,{"home-hero-info-before":L(()=>[I(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":L(()=>[I(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":L(()=>[I(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":L(()=>[I(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":L(()=>[I(n.$slots,"home-hero-image",{},void 0,!0)]),_:3}),I(n.$slots,"home-hero-after",{},void 0,!0),I(n.$slots,"home-features-before",{},void 0,!0),R(u5),I(n.$slots,"home-features-after",{},void 0,!0),x(t).markdownStyles!==!1?(a(),j(f5,{key:0},{default:L(()=>[R(o)]),_:1})):(a(),j(o,{key:1}))])}}}),v5=D(p5,[["__scopeId","data-v-686f80a6"]]),m5={},g5={class:"VPPage"};function w5(e,t){const n=Je("Content");return a(),s("div",g5,[I(e.$slots,"page-top"),R(n),I(e.$slots,"page-bottom")])}const k5=D(m5,[["render",w5]]),_5=B({__name:"VPContent",setup(e){const{page:t,frontmatter:n}=W(),{hasSidebar:r}=tt();return(o,i)=>(a(),s("div",{class:Q(["VPContent",{"has-sidebar":x(r),"is-home":x(n).layout==="home"}]),id:"VPContent"},[x(t).isNotFound?I(o.$slots,"not-found",{key:0},()=>[R(S0)],!0):x(n).layout==="page"?(a(),j(k5,{key:1},{"page-top":L(()=>[I(o.$slots,"page-top",{},void 0,!0)]),"page-bottom":L(()=>[I(o.$slots,"page-bottom",{},void 0,!0)]),_:3})):x(n).layout==="home"?(a(),j(v5,{key:2},{"home-hero-before":L(()=>[I(o.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":L(()=>[I(o.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":L(()=>[I(o.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":L(()=>[I(o.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":L(()=>[I(o.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":L(()=>[I(o.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":L(()=>[I(o.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":L(()=>[I(o.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":L(()=>[I(o.$slots,"home-features-after",{},void 0,!0)]),_:3})):x(n).layout&&x(n).layout!=="doc"?(a(),j(Oe(x(n).layout),{key:3})):(a(),j(S2,{key:4},{"doc-top":L(()=>[I(o.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":L(()=>[I(o.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":L(()=>[I(o.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":L(()=>[I(o.$slots,"doc-before",{},void 0,!0)]),"doc-after":L(()=>[I(o.$slots,"doc-after",{},void 0,!0)]),"aside-top":L(()=>[I(o.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":L(()=>[I(o.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":L(()=>[I(o.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":L(()=>[I(o.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":L(()=>[I(o.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":L(()=>[I(o.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),x5=D(_5,[["__scopeId","data-v-1428d186"]]),b5={class:"container"},y5=["innerHTML"],M5=["innerHTML"],A5=B({__name:"VPFooter",setup(e){const{theme:t,frontmatter:n}=W(),{hasSidebar:r}=tt();return(o,i)=>x(t).footer&&x(n).footer!==!1?(a(),s("footer",{key:0,class:Q(["VPFooter",{"has-sidebar":x(r)}])},[l("div",b5,[x(t).footer.message?(a(),s("p",{key:0,class:"message",innerHTML:x(t).footer.message},null,8,y5)):P("",!0),x(t).footer.copyright?(a(),s("p",{key:1,class:"copyright",innerHTML:x(t).footer.copyright},null,8,M5)):P("",!0)])],2)):P("",!0)}}),C5=D(A5,[["__scopeId","data-v-e315a0ad"]]);function I5(){const{theme:e,frontmatter:t}=W(),n=$r([]),r=N(()=>n.value.length>0);return Tn(()=>{n.value=Fr(t.value.outline??e.value.outline)}),{headers:n,hasLocalNav:r}}const $5=e=>(ce("data-v-17a5e62e"),e=e(),ue(),e),S5={class:"menu-text"},E5=$5(()=>l("span",{class:"vpi-chevron-right icon"},null,-1)),L5={class:"header"},T5={class:"outline"},P5=B({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(e){const t=e,{theme:n}=W(),r=U(!1),o=U(0),i=U(),u=U();function c(b){var M;(M=i.value)!=null&&M.contains(b.target)||(r.value=!1)}ke(r,b=>{if(b){document.addEventListener("click",c);return}document.removeEventListener("click",c)}),ji("Escape",()=>{r.value=!1}),Tn(()=>{r.value=!1});function d(){r.value=!r.value,o.value=window.innerHeight+Math.min(window.scrollY-t.navHeight,0)}function h(b){b.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),ra(()=>{r.value=!1}))}function v(){r.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(b,M)=>(a(),s("div",{class:"VPLocalNavOutlineDropdown",style:na({"--vp-vh":o.value+"px"}),ref_key:"main",ref:i},[b.headers.length>0?(a(),s("button",{key:0,onClick:d,class:Q({open:r.value})},[l("span",S5,Y(x(Za)(x(n))),1),E5],2)):(a(),s("button",{key:1,onClick:v},Y(x(n).returnToTopLabel||"Return to top"),1)),R(Ar,{name:"flyout"},{default:L(()=>[r.value?(a(),s("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:h},[l("div",L5,[l("a",{class:"top-link",href:"#",onClick:v},Y(x(n).returnToTopLabel||"Return to top"),1)]),l("div",T5,[R(Ua,{headers:b.headers},null,8,["headers"])])],512)):P("",!0)]),_:1})],4))}}),O5=D(P5,[["__scopeId","data-v-17a5e62e"]]),B5=e=>(ce("data-v-a6f0e41e"),e=e(),ue(),e),V5={class:"container"},j5=["aria-expanded"],H5=B5(()=>l("span",{class:"vpi-align-left menu-icon"},null,-1)),N5={class:"menu-text"},D5=B({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(e){const{theme:t,frontmatter:n}=W(),{hasSidebar:r}=tt(),{headers:o}=I5(),{y:i}=oa(),u=U(0);ze(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),Tn(()=>{o.value=Fr(n.value.outline??t.value.outline)});const c=N(()=>o.value.length===0),d=N(()=>c.value&&!r.value),h=N(()=>({VPLocalNav:!0,"has-sidebar":r.value,empty:c.value,fixed:d.value}));return(v,b)=>x(n).layout!=="home"&&(!d.value||x(i)>=u.value)?(a(),s("div",{key:0,class:Q(h.value)},[l("div",V5,[x(r)?(a(),s("button",{key:0,class:"menu","aria-expanded":v.open,"aria-controls":"VPSidebarNav",onClick:b[0]||(b[0]=M=>v.$emit("open-menu"))},[H5,l("span",N5,Y(x(t).sidebarMenuLabel||"Menu"),1)],8,j5)):P("",!0),R(O5,{headers:x(o),navHeight:u.value},null,8,["headers","navHeight"])])],2)):P("",!0)}}),R5=D(D5,[["__scopeId","data-v-a6f0e41e"]]);function F5(){const e=U(!1);function t(){e.value=!0,window.addEventListener("resize",o)}function n(){e.value=!1,window.removeEventListener("resize",o)}function r(){e.value?n():t()}function o(){window.outerWidth>=768&&n()}const i=Pn();return ke(()=>i.path,n),{isScreenOpen:e,openScreen:t,closeScreen:n,toggleScreen:r}}const Z5={},U5={class:"VPSwitch",type:"button",role:"switch"},z5={class:"check"},W5={key:0,class:"icon"};function G5(e,t){return a(),s("button",U5,[l("span",z5,[e.$slots.default?(a(),s("span",W5,[I(e.$slots,"default",{},void 0,!0)])):P("",!0)])])}const Y5=D(Z5,[["render",G5],["__scopeId","data-v-1d5665e3"]]),Wa=e=>(ce("data-v-5337faa4"),e=e(),ue(),e),q5=Wa(()=>l("span",{class:"vpi-sun sun"},null,-1)),X5=Wa(()=>l("span",{class:"vpi-moon moon"},null,-1)),K5=B({__name:"VPSwitchAppearance",setup(e){const{isDark:t,theme:n}=W(),r=On("toggle-appearance",()=>{t.value=!t.value}),o=U("");return Ir(()=>{o.value=t.value?n.value.lightModeSwitchTitle||"Switch to light theme":n.value.darkModeSwitchTitle||"Switch to dark theme"}),(i,u)=>(a(),j(Y5,{title:o.value,class:"VPSwitchAppearance","aria-checked":x(t),onClick:x(r)},{default:L(()=>[q5,X5]),_:1},8,["title","aria-checked","onClick"]))}}),Zr=D(K5,[["__scopeId","data-v-5337faa4"]]),Q5={key:0,class:"VPNavBarAppearance"},J5=B({__name:"VPNavBarAppearance",setup(e){const{site:t}=W();return(n,r)=>x(t).appearance&&x(t).appearance!=="force-dark"&&x(t).appearance!=="force-auto"?(a(),s("div",Q5,[R(Zr)])):P("",!0)}}),el=D(J5,[["__scopeId","data-v-6c893767"]]),Ur=U();let Ga=!1,Kn=0;function tl(e){const t=U(!1);if(Bn){!Ga&&nl(),Kn++;const n=ke(Ur,r=>{var o,i,u;r===e.el.value||(o=e.el.value)!=null&&o.contains(r)?(t.value=!0,(i=e.onFocus)==null||i.call(e)):(t.value=!1,(u=e.onBlur)==null||u.call(e))});Ln(()=>{n(),Kn--,Kn||rl()})}return Hi(t)}function nl(){document.addEventListener("focusin",Ya),Ga=!0,Ur.value=document.activeElement}function rl(){document.removeEventListener("focusin",Ya)}function Ya(){Ur.value=document.activeElement}const ol={class:"VPMenuLink"},al=B({__name:"VPMenuLink",props:{item:{}},setup(e){const{page:t}=W();return(n,r)=>(a(),s("div",ol,[R(De,{class:Q({active:x(xt)(x(t).relativePath,n.item.activeMatch||n.item.link,!!n.item.activeMatch)}),href:n.item.link,target:n.item.target,rel:n.item.rel},{default:L(()=>[Be(Y(n.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),Dn=D(al,[["__scopeId","data-v-43f1e123"]]),il={class:"VPMenuGroup"},sl={key:0,class:"title"},ll=B({__name:"VPMenuGroup",props:{text:{},items:{}},setup(e){return(t,n)=>(a(),s("div",il,[t.text?(a(),s("p",sl,Y(t.text),1)):P("",!0),(a(!0),s(K,null,ae(t.items,r=>(a(),s(K,null,["link"in r?(a(),j(Dn,{key:0,item:r},null,8,["item"])):P("",!0)],64))),256))]))}}),cl=D(ll,[["__scopeId","data-v-69e747b5"]]),ul={class:"VPMenu"},dl={key:0,class:"items"},fl=B({__name:"VPMenu",props:{items:{}},setup(e){return(t,n)=>(a(),s("div",ul,[t.items?(a(),s("div",dl,[(a(!0),s(K,null,ae(t.items,r=>(a(),s(K,{key:JSON.stringify(r)},["link"in r?(a(),j(Dn,{key:0,item:r},null,8,["item"])):"component"in r?(a(),j(Oe(r.component),it({key:1,ref_for:!0},r.props),null,16)):(a(),j(cl,{key:2,text:r.text,items:r.items},null,8,["text","items"]))],64))),128))])):P("",!0),I(t.$slots,"default",{},void 0,!0)]))}}),hl=D(fl,[["__scopeId","data-v-b98bc113"]]),pl=e=>(ce("data-v-b6c34ac9"),e=e(),ue(),e),vl=["aria-expanded","aria-label"],ml={key:0,class:"text"},gl=["innerHTML"],wl=pl(()=>l("span",{class:"vpi-chevron-down text-icon"},null,-1)),kl={key:1,class:"vpi-more-horizontal icon"},_l={class:"menu"},xl=B({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(e){const t=U(!1),n=U();tl({el:n,onBlur:r});function r(){t.value=!1}return(o,i)=>(a(),s("div",{class:"VPFlyout",ref_key:"el",ref:n,onMouseenter:i[1]||(i[1]=u=>t.value=!0),onMouseleave:i[2]||(i[2]=u=>t.value=!1)},[l("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":t.value,"aria-label":o.label,onClick:i[0]||(i[0]=u=>t.value=!t.value)},[o.button||o.icon?(a(),s("span",ml,[o.icon?(a(),s("span",{key:0,class:Q([o.icon,"option-icon"])},null,2)):P("",!0),o.button?(a(),s("span",{key:1,innerHTML:o.button},null,8,gl)):P("",!0),wl])):(a(),s("span",kl))],8,vl),l("div",_l,[R(hl,{items:o.items},{default:L(()=>[I(o.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),zr=D(xl,[["__scopeId","data-v-b6c34ac9"]]),bl=["href","aria-label","innerHTML"],yl=B({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(e){const t=e,n=N(()=>typeof t.icon=="object"?t.icon.svg:``);return(r,o)=>(a(),s("a",{class:"VPSocialLink no-icon",href:r.link,"aria-label":r.ariaLabel??(typeof r.icon=="string"?r.icon:""),target:"_blank",rel:"noopener",innerHTML:n.value},null,8,bl))}}),Ml=D(yl,[["__scopeId","data-v-eee4e7cb"]]),Al={class:"VPSocialLinks"},Cl=B({__name:"VPSocialLinks",props:{links:{}},setup(e){return(t,n)=>(a(),s("div",Al,[(a(!0),s(K,null,ae(t.links,({link:r,icon:o,ariaLabel:i})=>(a(),j(Ml,{key:r,icon:o,link:r,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),Wr=D(Cl,[["__scopeId","data-v-7bc22406"]]),Il={key:0,class:"group translations"},$l={class:"trans-title"},Sl={key:1,class:"group"},El={class:"item appearance"},Ll={class:"label"},Tl={class:"appearance-action"},Pl={key:2,class:"group"},Ol={class:"item social-links"},Bl=B({__name:"VPNavBarExtra",setup(e){const{site:t,theme:n}=W(),{localeLinks:r,currentLang:o}=nn({correspondingLink:!0}),i=N(()=>r.value.length&&o.value.label||t.value.appearance||n.value.socialLinks);return(u,c)=>i.value?(a(),j(zr,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:L(()=>[x(r).length&&x(o).label?(a(),s("div",Il,[l("p",$l,Y(x(o).label),1),(a(!0),s(K,null,ae(x(r),d=>(a(),j(Dn,{key:d.link,item:d},null,8,["item"]))),128))])):P("",!0),x(t).appearance&&x(t).appearance!=="force-dark"&&x(t).appearance!=="force-auto"?(a(),s("div",Sl,[l("div",El,[l("p",Ll,Y(x(n).darkModeSwitchLabel||"Appearance"),1),l("div",Tl,[R(Zr)])])])):P("",!0),x(n).socialLinks?(a(),s("div",Pl,[l("div",Ol,[R(Wr,{class:"social-links-list",links:x(n).socialLinks},null,8,["links"])])])):P("",!0)]),_:1})):P("",!0)}}),Vl=D(Bl,[["__scopeId","data-v-bb2aa2f0"]]),jl=e=>(ce("data-v-e5dd9c1c"),e=e(),ue(),e),Hl=["aria-expanded"],Nl=jl(()=>l("span",{class:"container"},[l("span",{class:"top"}),l("span",{class:"middle"}),l("span",{class:"bottom"})],-1)),Dl=[Nl],Rl=B({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(e){return(t,n)=>(a(),s("button",{type:"button",class:Q(["VPNavBarHamburger",{active:t.active}]),"aria-label":"mobile navigation","aria-expanded":t.active,"aria-controls":"VPNavScreen",onClick:n[0]||(n[0]=r=>t.$emit("click"))},Dl,10,Hl))}}),Fl=D(Rl,[["__scopeId","data-v-e5dd9c1c"]]),Zl=["innerHTML"],Ul=B({__name:"VPNavBarMenuLink",props:{item:{}},setup(e){const{page:t}=W();return(n,r)=>(a(),j(De,{class:Q({VPNavBarMenuLink:!0,active:x(xt)(x(t).relativePath,n.item.activeMatch||n.item.link,!!n.item.activeMatch)}),href:n.item.link,noIcon:n.item.noIcon,target:n.item.target,rel:n.item.rel,tabindex:"0"},{default:L(()=>[l("span",{innerHTML:n.item.text},null,8,Zl)]),_:1},8,["class","href","noIcon","target","rel"]))}}),zl=D(Ul,[["__scopeId","data-v-9c663999"]]),Wl=B({__name:"VPNavBarMenuGroup",props:{item:{}},setup(e){const t=e,{page:n}=W(),r=i=>"component"in i?!1:"link"in i?xt(n.value.relativePath,i.link,!!t.item.activeMatch):i.items.some(r),o=N(()=>r(t.item));return(i,u)=>(a(),j(zr,{class:Q({VPNavBarMenuGroup:!0,active:x(xt)(x(n).relativePath,i.item.activeMatch,!!i.item.activeMatch)||o.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Gl=e=>(ce("data-v-dc692963"),e=e(),ue(),e),Yl={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},ql=Gl(()=>l("span",{id:"main-nav-aria-label",class:"visually-hidden"}," Main Navigation ",-1)),Xl=B({__name:"VPNavBarMenu",setup(e){const{theme:t}=W();return(n,r)=>x(t).nav?(a(),s("nav",Yl,[ql,(a(!0),s(K,null,ae(x(t).nav,o=>(a(),s(K,{key:JSON.stringify(o)},["link"in o?(a(),j(zl,{key:0,item:o},null,8,["item"])):"component"in o?(a(),j(Oe(o.component),it({key:1,ref_for:!0},o.props),null,16)):(a(),j(Wl,{key:2,item:o},null,8,["item"]))],64))),128))])):P("",!0)}}),Kl=D(Xl,[["__scopeId","data-v-dc692963"]]);function Ql(e){const{localeIndex:t,theme:n}=W();function r(o){var $,C,y;const i=o.split("."),u=($=n.value.search)==null?void 0:$.options,c=u&&typeof u=="object",d=c&&((y=(C=u.locales)==null?void 0:C[t.value])==null?void 0:y.translations)||null,h=c&&u.translations||null;let v=d,b=h,M=e;const S=i.pop();for(const w of i){let p=null;const m=M==null?void 0:M[w];m&&(p=M=m);const f=b==null?void 0:b[w];f&&(p=b=f);const k=v==null?void 0:v[w];k&&(p=v=k),m||(M=p),f||(b=p),k||(v=p)}return(v==null?void 0:v[S])??(b==null?void 0:b[S])??(M==null?void 0:M[S])??""}return r}const Jl=["aria-label"],ec={class:"DocSearch-Button-Container"},tc=l("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),nc={class:"DocSearch-Button-Placeholder"},rc=l("span",{class:"DocSearch-Button-Keys"},[l("kbd",{class:"DocSearch-Button-Key"}),l("kbd",{class:"DocSearch-Button-Key"},"K")],-1),Po=B({__name:"VPNavBarSearchButton",setup(e){const n=Ql({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(r,o)=>(a(),s("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":x(n)("button.buttonAriaLabel")},[l("span",ec,[tc,l("span",nc,Y(x(n)("button.buttonText")),1)]),rc],8,Jl))}}),oc={class:"VPNavBarSearch"},ac={id:"local-search"},ic={key:1,id:"docsearch"},sc=B({__name:"VPNavBarSearch",setup(e){const t=()=>null,n=()=>null,{theme:r}=W(),o=U(!1),i=U(!1);ze(()=>{});function u(){o.value||(o.value=!0,setTimeout(c,16))}function c(){const v=new Event("keydown");v.key="k",v.metaKey=!0,window.dispatchEvent(v),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||c()},16)}const d=U(!1),h="";return(v,b)=>{var M;return a(),s("div",oc,[x(h)==="local"?(a(),s(K,{key:0},[d.value?(a(),j(x(t),{key:0,onClose:b[0]||(b[0]=S=>d.value=!1)})):P("",!0),l("div",ac,[R(Po,{onClick:b[1]||(b[1]=S=>d.value=!0)})])],64)):x(h)==="algolia"?(a(),s(K,{key:1},[o.value?(a(),j(x(n),{key:0,algolia:((M=x(r).search)==null?void 0:M.options)??x(r).algolia,onVnodeBeforeMount:b[2]||(b[2]=S=>i.value=!0)},null,8,["algolia"])):P("",!0),i.value?P("",!0):(a(),s("div",ic,[R(Po,{onClick:u})]))],64)):P("",!0)])}}}),lc=B({__name:"VPNavBarSocialLinks",setup(e){const{theme:t}=W();return(n,r)=>x(t).socialLinks?(a(),j(Wr,{key:0,class:"VPNavBarSocialLinks",links:x(t).socialLinks},null,8,["links"])):P("",!0)}}),cc=D(lc,[["__scopeId","data-v-0394ad82"]]),uc=["href","rel","target"],dc={key:1},fc={key:2},hc=B({__name:"VPNavBarTitle",setup(e){const{site:t,theme:n}=W(),{hasSidebar:r}=tt(),{currentLang:o}=nn(),i=N(()=>{var d;return typeof n.value.logoLink=="string"?n.value.logoLink:(d=n.value.logoLink)==null?void 0:d.link}),u=N(()=>{var d;return typeof n.value.logoLink=="string"||(d=n.value.logoLink)==null?void 0:d.rel}),c=N(()=>{var d;return typeof n.value.logoLink=="string"||(d=n.value.logoLink)==null?void 0:d.target});return(d,h)=>(a(),s("div",{class:Q(["VPNavBarTitle",{"has-sidebar":x(r)}])},[l("a",{class:"title",href:i.value??x(Rr)(x(o).link),rel:u.value,target:c.value},[I(d.$slots,"nav-bar-title-before",{},void 0,!0),x(n).logo?(a(),j(In,{key:0,class:"logo",image:x(n).logo},null,8,["image"])):P("",!0),x(n).siteTitle?(a(),s("span",dc,Y(x(n).siteTitle),1)):x(n).siteTitle===void 0?(a(),s("span",fc,Y(x(t).title),1)):P("",!0),I(d.$slots,"nav-bar-title-after",{},void 0,!0)],8,uc)],2))}}),pc=D(hc,[["__scopeId","data-v-ab179fa1"]]),vc={class:"items"},mc={class:"title"},gc=B({__name:"VPNavBarTranslations",setup(e){const{theme:t}=W(),{localeLinks:n,currentLang:r}=nn({correspondingLink:!0});return(o,i)=>x(n).length&&x(r).label?(a(),j(zr,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:x(t).langMenuLabel||"Change language"},{default:L(()=>[l("div",vc,[l("p",mc,Y(x(r).label),1),(a(!0),s(K,null,ae(x(n),u=>(a(),j(Dn,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):P("",!0)}}),wc=D(gc,[["__scopeId","data-v-88af2de4"]]),kc=e=>(ce("data-v-6aa21345"),e=e(),ue(),e),_c={class:"wrapper"},xc={class:"container"},bc={class:"title"},yc={class:"content"},Mc={class:"content-body"},Ac=kc(()=>l("div",{class:"divider"},[l("div",{class:"divider-line"})],-1)),Cc=B({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(e){const t=e,{y:n}=oa(),{hasSidebar:r}=tt(),{frontmatter:o}=W(),i=U({});return Ir(()=>{i.value={"has-sidebar":r.value,home:o.value.layout==="home",top:n.value===0,"screen-open":t.isScreenOpen}}),(u,c)=>(a(),s("div",{class:Q(["VPNavBar",i.value])},[l("div",_c,[l("div",xc,[l("div",bc,[R(pc,null,{"nav-bar-title-before":L(()=>[I(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":L(()=>[I(u.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),l("div",yc,[l("div",Mc,[I(u.$slots,"nav-bar-content-before",{},void 0,!0),R(sc,{class:"search"}),R(Kl,{class:"menu"}),R(wc,{class:"translations"}),R(el,{class:"appearance"}),R(cc,{class:"social-links"}),R(Vl,{class:"extra"}),I(u.$slots,"nav-bar-content-after",{},void 0,!0),R(Fl,{class:"hamburger",active:u.isScreenOpen,onClick:c[0]||(c[0]=d=>u.$emit("toggle-screen"))},null,8,["active"])])])])]),Ac],2))}}),Ic=D(Cc,[["__scopeId","data-v-6aa21345"]]),$c={key:0,class:"VPNavScreenAppearance"},Sc={class:"text"},Ec=B({__name:"VPNavScreenAppearance",setup(e){const{site:t,theme:n}=W();return(r,o)=>x(t).appearance&&x(t).appearance!=="force-dark"&&x(t).appearance!=="force-auto"?(a(),s("div",$c,[l("p",Sc,Y(x(n).darkModeSwitchLabel||"Appearance"),1),R(Zr)])):P("",!0)}}),Lc=D(Ec,[["__scopeId","data-v-b44890b2"]]),Tc=B({__name:"VPNavScreenMenuLink",props:{item:{}},setup(e){const t=On("close-screen");return(n,r)=>(a(),j(De,{class:"VPNavScreenMenuLink",href:n.item.link,target:n.item.target,rel:n.item.rel,onClick:x(t),innerHTML:n.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),Pc=D(Tc,[["__scopeId","data-v-7f31e1f6"]]),Oc=B({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(e){const t=On("close-screen");return(n,r)=>(a(),j(De,{class:"VPNavScreenMenuGroupLink",href:n.item.link,target:n.item.target,rel:n.item.rel,onClick:x(t)},{default:L(()=>[Be(Y(n.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),qa=D(Oc,[["__scopeId","data-v-19976ae1"]]),Bc={class:"VPNavScreenMenuGroupSection"},Vc={key:0,class:"title"},jc=B({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(e){return(t,n)=>(a(),s("div",Bc,[t.text?(a(),s("p",Vc,Y(t.text),1)):P("",!0),(a(!0),s(K,null,ae(t.items,r=>(a(),j(qa,{key:r.text,item:r},null,8,["item"]))),128))]))}}),Hc=D(jc,[["__scopeId","data-v-8133b170"]]),Nc=e=>(ce("data-v-b9ab8c58"),e=e(),ue(),e),Dc=["aria-controls","aria-expanded"],Rc=["innerHTML"],Fc=Nc(()=>l("span",{class:"vpi-plus button-icon"},null,-1)),Zc=["id"],Uc={key:0,class:"item"},zc={key:1,class:"item"},Wc={key:2,class:"group"},Gc=B({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(e){const t=e,n=U(!1),r=N(()=>`NavScreenGroup-${t.text.replace(" ","-").toLowerCase()}`);function o(){n.value=!n.value}return(i,u)=>(a(),s("div",{class:Q(["VPNavScreenMenuGroup",{open:n.value}])},[l("button",{class:"button","aria-controls":r.value,"aria-expanded":n.value,onClick:o},[l("span",{class:"button-text",innerHTML:i.text},null,8,Rc),Fc],8,Dc),l("div",{id:r.value,class:"items"},[(a(!0),s(K,null,ae(i.items,c=>(a(),s(K,{key:JSON.stringify(c)},["link"in c?(a(),s("div",Uc,[R(qa,{item:c},null,8,["item"])])):"component"in c?(a(),s("div",zc,[(a(),j(Oe(c.component),it({ref_for:!0},c.props,{"screen-menu":""}),null,16))])):(a(),s("div",Wc,[R(Hc,{text:c.text,items:c.items},null,8,["text","items"])]))],64))),128))],8,Zc)],2))}}),Yc=D(Gc,[["__scopeId","data-v-b9ab8c58"]]),qc={key:0,class:"VPNavScreenMenu"},Xc=B({__name:"VPNavScreenMenu",setup(e){const{theme:t}=W();return(n,r)=>x(t).nav?(a(),s("nav",qc,[(a(!0),s(K,null,ae(x(t).nav,o=>(a(),s(K,{key:JSON.stringify(o)},["link"in o?(a(),j(Pc,{key:0,item:o},null,8,["item"])):"component"in o?(a(),j(Oe(o.component),it({key:1,ref_for:!0},o.props,{"screen-menu":""}),null,16)):(a(),j(Yc,{key:2,text:o.text||"",items:o.items},null,8,["text","items"]))],64))),128))])):P("",!0)}}),Kc=B({__name:"VPNavScreenSocialLinks",setup(e){const{theme:t}=W();return(n,r)=>x(t).socialLinks?(a(),j(Wr,{key:0,class:"VPNavScreenSocialLinks",links:x(t).socialLinks},null,8,["links"])):P("",!0)}}),Xa=e=>(ce("data-v-858fe1a4"),e=e(),ue(),e),Qc=Xa(()=>l("span",{class:"vpi-languages icon lang"},null,-1)),Jc=Xa(()=>l("span",{class:"vpi-chevron-down icon chevron"},null,-1)),eu={class:"list"},tu=B({__name:"VPNavScreenTranslations",setup(e){const{localeLinks:t,currentLang:n}=nn({correspondingLink:!0}),r=U(!1);function o(){r.value=!r.value}return(i,u)=>x(t).length&&x(n).label?(a(),s("div",{key:0,class:Q(["VPNavScreenTranslations",{open:r.value}])},[l("button",{class:"title",onClick:o},[Qc,Be(" "+Y(x(n).label)+" ",1),Jc]),l("ul",eu,[(a(!0),s(K,null,ae(x(t),c=>(a(),s("li",{key:c.link,class:"item"},[R(De,{class:"link",href:c.link},{default:L(()=>[Be(Y(c.text),1)]),_:2},1032,["href"])]))),128))])],2)):P("",!0)}}),nu=D(tu,[["__scopeId","data-v-858fe1a4"]]),ru={class:"container"},ou=B({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(e){const t=U(null),n=aa(Bn?document.body:null);return(r,o)=>(a(),j(Ar,{name:"fade",onEnter:o[0]||(o[0]=i=>n.value=!0),onAfterLeave:o[1]||(o[1]=i=>n.value=!1)},{default:L(()=>[r.open?(a(),s("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:t,id:"VPNavScreen"},[l("div",ru,[I(r.$slots,"nav-screen-content-before",{},void 0,!0),R(Xc,{class:"menu"}),R(nu,{class:"translations"}),R(Lc,{class:"appearance"}),R(Kc,{class:"social-links"}),I(r.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):P("",!0)]),_:3}))}}),au=D(ou,[["__scopeId","data-v-f2779853"]]),iu={key:0,class:"VPNav"},su=B({__name:"VPNav",setup(e){const{isScreenOpen:t,closeScreen:n,toggleScreen:r}=F5(),{frontmatter:o}=W(),i=N(()=>o.value.navbar!==!1);return ia("close-screen",n),En(()=>{Bn&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,c)=>i.value?(a(),s("header",iu,[R(Ic,{"is-screen-open":x(t),onToggleScreen:x(r)},{"nav-bar-title-before":L(()=>[I(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":L(()=>[I(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":L(()=>[I(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":L(()=>[I(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),R(au,{open:x(t)},{"nav-screen-content-before":L(()=>[I(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":L(()=>[I(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):P("",!0)}}),lu=D(su,[["__scopeId","data-v-ae24b3ad"]]),Ka=e=>(ce("data-v-b7550ba0"),e=e(),ue(),e),cu=["role","tabindex"],uu=Ka(()=>l("div",{class:"indicator"},null,-1)),du=Ka(()=>l("span",{class:"vpi-chevron-right caret-icon"},null,-1)),fu=[du],hu={key:1,class:"items"},pu=B({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(e){const t=e,{collapsed:n,collapsible:r,isLink:o,isActiveLink:i,hasActiveLink:u,hasChildren:c,toggle:d}=P0(N(()=>t.item)),h=N(()=>c.value?"section":"div"),v=N(()=>o.value?"a":"div"),b=N(()=>c.value?t.depth+2===7?"p":`h${t.depth+2}`:"p"),M=N(()=>o.value?void 0:"button"),S=N(()=>[[`level-${t.depth}`],{collapsible:r.value},{collapsed:n.value},{"is-link":o.value},{"is-active":i.value},{"has-active":u.value}]);function $(y){"key"in y&&y.key!=="Enter"||!t.item.link&&d()}function C(){t.item.link&&d()}return(y,w)=>{const p=Je("VPSidebarItem",!0);return a(),j(Oe(h.value),{class:Q(["VPSidebarItem",S.value])},{default:L(()=>[y.item.text?(a(),s("div",it({key:0,class:"item",role:M.value},Ni(y.item.items?{click:$,keydown:$}:{},!0),{tabindex:y.item.items&&0}),[uu,y.item.link?(a(),j(De,{key:0,tag:v.value,class:"link",href:y.item.link,rel:y.item.rel,target:y.item.target},{default:L(()=>[(a(),j(Oe(b.value),{class:"text",innerHTML:y.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),j(Oe(b.value),{key:1,class:"text",innerHTML:y.item.text},null,8,["innerHTML"])),y.item.collapsed!=null&&y.item.items&&y.item.items.length?(a(),s("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Di(C,["enter"]),tabindex:"0"},fu,32)):P("",!0)],16,cu)):P("",!0),y.item.items&&y.item.items.length?(a(),s("div",hu,[y.depth<5?(a(!0),s(K,{key:0},ae(y.item.items,m=>(a(),j(p,{key:m.text,item:m,depth:y.depth+1},null,8,["item","depth"]))),128)):P("",!0)])):P("",!0)]),_:1},8,["class"])}}}),vu=D(pu,[["__scopeId","data-v-b7550ba0"]]),mu=B({__name:"VPSidebarGroup",props:{items:{}},setup(e){const t=U(!0);let n=null;return ze(()=>{n=setTimeout(()=>{n=null,t.value=!1},300)}),Ri(()=>{n!=null&&(clearTimeout(n),n=null)}),(r,o)=>(a(!0),s(K,null,ae(r.items,i=>(a(),s("div",{key:i.text,class:Q(["group",{"no-transition":t.value}])},[R(vu,{item:i,depth:0},null,8,["item"])],2))),128))}}),gu=D(mu,[["__scopeId","data-v-c40bc020"]]),Qa=e=>(ce("data-v-319d5ca6"),e=e(),ue(),e),wu=Qa(()=>l("div",{class:"curtain"},null,-1)),ku={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},_u=Qa(()=>l("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),xu=B({__name:"VPSidebar",props:{open:{type:Boolean}},setup(e){const{sidebarGroups:t,hasSidebar:n}=tt(),r=e,o=U(null),i=aa(Bn?document.body:null);ke([r,o],()=>{var c;r.open?(i.value=!0,(c=o.value)==null||c.focus()):i.value=!1},{immediate:!0,flush:"post"});const u=U(0);return ke(t,()=>{u.value+=1},{deep:!0}),(c,d)=>x(n)?(a(),s("aside",{key:0,class:Q(["VPSidebar",{open:c.open}]),ref_key:"navEl",ref:o,onClick:d[0]||(d[0]=ea(()=>{},["stop"]))},[wu,l("nav",ku,[_u,I(c.$slots,"sidebar-nav-before",{},void 0,!0),(a(),j(gu,{items:x(t),key:u.value},null,8,["items"])),I(c.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):P("",!0)}}),bu=D(xu,[["__scopeId","data-v-319d5ca6"]]),yu=B({__name:"VPSkipLink",setup(e){const t=Pn(),n=U();ke(()=>t.path,()=>n.value.focus());function r({target:o}){const i=document.getElementById(decodeURIComponent(o.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(o,i)=>(a(),s(K,null,[l("span",{ref_key:"backToTop",ref:n,tabindex:"-1"},null,512),l("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:r}," Skip to content ")],64))}}),Mu=D(yu,[["__scopeId","data-v-0f60ec36"]]),Au=B({__name:"Layout",setup(e){const{isOpen:t,open:n,close:r}=tt(),o=Pn();ke(()=>o.path,r),T0(t,r);const{frontmatter:i}=W(),u=Fi(),c=N(()=>!!u["home-hero-image"]);return ia("hero-image-slot-exists",c),(d,h)=>{const v=Je("Content");return x(i).layout!==!1?(a(),s("div",{key:0,class:Q(["Layout",x(i).pageClass])},[I(d.$slots,"layout-top",{},void 0,!0),R(Mu),R(g0,{class:"backdrop",show:x(t),onClick:x(r)},null,8,["show","onClick"]),R(lu,null,{"nav-bar-title-before":L(()=>[I(d.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":L(()=>[I(d.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":L(()=>[I(d.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":L(()=>[I(d.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":L(()=>[I(d.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":L(()=>[I(d.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),R(R5,{open:x(t),onOpenMenu:x(n)},null,8,["open","onOpenMenu"]),R(bu,{open:x(t)},{"sidebar-nav-before":L(()=>[I(d.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":L(()=>[I(d.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),R(x5,null,{"page-top":L(()=>[I(d.$slots,"page-top",{},void 0,!0)]),"page-bottom":L(()=>[I(d.$slots,"page-bottom",{},void 0,!0)]),"not-found":L(()=>[I(d.$slots,"not-found",{},void 0,!0)]),"home-hero-before":L(()=>[I(d.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":L(()=>[I(d.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":L(()=>[I(d.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":L(()=>[I(d.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":L(()=>[I(d.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":L(()=>[I(d.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":L(()=>[I(d.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":L(()=>[I(d.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":L(()=>[I(d.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":L(()=>[I(d.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":L(()=>[I(d.$slots,"doc-before",{},void 0,!0)]),"doc-after":L(()=>[I(d.$slots,"doc-after",{},void 0,!0)]),"doc-top":L(()=>[I(d.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":L(()=>[I(d.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":L(()=>[I(d.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":L(()=>[I(d.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":L(()=>[I(d.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":L(()=>[I(d.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":L(()=>[I(d.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":L(()=>[I(d.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),R(C5),I(d.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),j(v,{key:1}))}}}),Cu=D(Au,[["__scopeId","data-v-5d98c3a5"]]),Iu={Layout:Cu,enhanceApp:({app:e})=>{e.component("Badge",p0)}};/*! + * vue-tippy v6.4.4 + * (c) 2024 + * @license MIT + */var ge="top",Se="bottom",Ee="right",we="left",Gr="auto",rn=[ge,Se,Ee,we],Lt="start",Kt="end",$u="clippingParents",Ja="viewport",Ft="popper",Su="reference",Oo=rn.reduce(function(e,t){return e.concat([t+"-"+Lt,t+"-"+Kt])},[]),ei=[].concat(rn,[Gr]).reduce(function(e,t){return e.concat([t,t+"-"+Lt,t+"-"+Kt])},[]),Eu="beforeRead",Lu="read",Tu="afterRead",Pu="beforeMain",Ou="main",Bu="afterMain",Vu="beforeWrite",ju="write",Hu="afterWrite",Nu=[Eu,Lu,Tu,Pu,Ou,Bu,Vu,ju,Hu];function Ze(e){return e?(e.nodeName||"").toLowerCase():null}function Ve(e){if(e==null)return window;if(e.toString()!=="[object Window]"){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function Tt(e){var t=Ve(e).Element;return e instanceof t||e instanceof Element}function $e(e){var t=Ve(e).HTMLElement;return e instanceof t||e instanceof HTMLElement}function ti(e){if(typeof ShadowRoot>"u")return!1;var t=Ve(e).ShadowRoot;return e instanceof t||e instanceof ShadowRoot}function Du(e){var t=e.state;Object.keys(t.elements).forEach(function(n){var r=t.styles[n]||{},o=t.attributes[n]||{},i=t.elements[n];!$e(i)||!Ze(i)||(Object.assign(i.style,r),Object.keys(o).forEach(function(u){var c=o[u];c===!1?i.removeAttribute(u):i.setAttribute(u,c===!0?"":c)}))})}function Ru(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(r){var o=t.elements[r],i=t.attributes[r]||{},u=Object.keys(t.styles.hasOwnProperty(r)?t.styles[r]:n[r]),c=u.reduce(function(d,h){return d[h]="",d},{});!$e(o)||!Ze(o)||(Object.assign(o.style,c),Object.keys(i).forEach(function(d){o.removeAttribute(d)}))})}}var ni={name:"applyStyles",enabled:!0,phase:"write",fn:Du,effect:Ru,requires:["computeStyles"]};function Re(e){return e.split("-")[0]}var kt=Math.max,$n=Math.min,Pt=Math.round;function Ot(e,t){t===void 0&&(t=!1);var n=e.getBoundingClientRect(),r=1,o=1;if($e(e)&&t){var i=e.offsetHeight,u=e.offsetWidth;u>0&&(r=Pt(n.width)/u||1),i>0&&(o=Pt(n.height)/i||1)}return{width:n.width/r,height:n.height/o,top:n.top/o,right:n.right/r,bottom:n.bottom/o,left:n.left/r,x:n.left/r,y:n.top/o}}function Yr(e){var t=Ot(e),n=e.offsetWidth,r=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-r)<=1&&(r=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:r}}function ri(e,t){var n=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(n&&ti(n)){var r=t;do{if(r&&e.isSameNode(r))return!0;r=r.parentNode||r.host}while(r)}return!1}function Ue(e){return Ve(e).getComputedStyle(e)}function Fu(e){return["table","td","th"].indexOf(Ze(e))>=0}function ut(e){return((Tt(e)?e.ownerDocument:e.document)||window.document).documentElement}function Rn(e){return Ze(e)==="html"?e:e.assignedSlot||e.parentNode||(ti(e)?e.host:null)||ut(e)}function Bo(e){return!$e(e)||Ue(e).position==="fixed"?null:e.offsetParent}function Zu(e){var t=navigator.userAgent.toLowerCase().indexOf("firefox")!==-1,n=navigator.userAgent.indexOf("Trident")!==-1;if(n&&$e(e)){var r=Ue(e);if(r.position==="fixed")return null}for(var o=Rn(e);$e(o)&&["html","body"].indexOf(Ze(o))<0;){var i=Ue(o);if(i.transform!=="none"||i.perspective!=="none"||i.contain==="paint"||["transform","perspective"].indexOf(i.willChange)!==-1||t&&i.willChange==="filter"||t&&i.filter&&i.filter!=="none")return o;o=o.parentNode}return null}function on(e){for(var t=Ve(e),n=Bo(e);n&&Fu(n)&&Ue(n).position==="static";)n=Bo(n);return n&&(Ze(n)==="html"||Ze(n)==="body"&&Ue(n).position==="static")?t:n||Zu(e)||t}function qr(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function Gt(e,t,n){return kt(e,$n(t,n))}function Uu(e,t,n){var r=Gt(e,t,n);return r>n?n:r}function oi(){return{top:0,right:0,bottom:0,left:0}}function ai(e){return Object.assign({},oi(),e)}function ii(e,t){return t.reduce(function(n,r){return n[r]=e,n},{})}var zu=function(t,n){return t=typeof t=="function"?t(Object.assign({},n.rects,{placement:n.placement})):t,ai(typeof t!="number"?t:ii(t,rn))};function Wu(e){var t,n=e.state,r=e.name,o=e.options,i=n.elements.arrow,u=n.modifiersData.popperOffsets,c=Re(n.placement),d=qr(c),h=[we,Ee].indexOf(c)>=0,v=h?"height":"width";if(!(!i||!u)){var b=zu(o.padding,n),M=Yr(i),S=d==="y"?ge:we,$=d==="y"?Se:Ee,C=n.rects.reference[v]+n.rects.reference[d]-u[d]-n.rects.popper[v],y=u[d]-n.rects.reference[d],w=on(i),p=w?d==="y"?w.clientHeight||0:w.clientWidth||0:0,m=C/2-y/2,f=b[S],k=p-M[v]-b[$],g=p/2-M[v]/2+m,_=Gt(f,g,k),E=d;n.modifiersData[r]=(t={},t[E]=_,t.centerOffset=_-g,t)}}function Gu(e){var t=e.state,n=e.options,r=n.element,o=r===void 0?"[data-popper-arrow]":r;o!=null&&(typeof o=="string"&&(o=t.elements.popper.querySelector(o),!o)||ri(t.elements.popper,o)&&(t.elements.arrow=o))}var Yu={name:"arrow",enabled:!0,phase:"main",fn:Wu,effect:Gu,requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function Bt(e){return e.split("-")[1]}var qu={top:"auto",right:"auto",bottom:"auto",left:"auto"};function Xu(e){var t=e.x,n=e.y,r=window,o=r.devicePixelRatio||1;return{x:Pt(t*o)/o||0,y:Pt(n*o)/o||0}}function Vo(e){var t,n=e.popper,r=e.popperRect,o=e.placement,i=e.variation,u=e.offsets,c=e.position,d=e.gpuAcceleration,h=e.adaptive,v=e.roundOffsets,b=e.isFixed,M=v===!0?Xu(u):typeof v=="function"?v(u):u,S=M.x,$=S===void 0?0:S,C=M.y,y=C===void 0?0:C,w=u.hasOwnProperty("x"),p=u.hasOwnProperty("y"),m=we,f=ge,k=window;if(h){var g=on(n),_="clientHeight",E="clientWidth";if(g===Ve(n)&&(g=ut(n),Ue(g).position!=="static"&&c==="absolute"&&(_="scrollHeight",E="scrollWidth")),g=g,o===ge||(o===we||o===Ee)&&i===Kt){f=Se;var T=b&&k.visualViewport?k.visualViewport.height:g[_];y-=T-r.height,y*=d?1:-1}if(o===we||(o===ge||o===Se)&&i===Kt){m=Ee;var F=b&&k.visualViewport?k.visualViewport.width:g[E];$-=F-r.width,$*=d?1:-1}}var z=Object.assign({position:c},h&&qu);if(d){var G;return Object.assign({},z,(G={},G[f]=p?"0":"",G[m]=w?"0":"",G.transform=(k.devicePixelRatio||1)<=1?"translate("+$+"px, "+y+"px)":"translate3d("+$+"px, "+y+"px, 0)",G))}return Object.assign({},z,(t={},t[f]=p?y+"px":"",t[m]=w?$+"px":"",t.transform="",t))}function Ku(e){var t=e.state,n=e.options,r=n.gpuAcceleration,o=r===void 0?!0:r,i=n.adaptive,u=i===void 0?!0:i,c=n.roundOffsets,d=c===void 0?!0:c,h={placement:Re(t.placement),variation:Bt(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:o,isFixed:t.options.strategy==="fixed"};t.modifiersData.popperOffsets!=null&&(t.styles.popper=Object.assign({},t.styles.popper,Vo(Object.assign({},h,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:u,roundOffsets:d})))),t.modifiersData.arrow!=null&&(t.styles.arrow=Object.assign({},t.styles.arrow,Vo(Object.assign({},h,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:d})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})}var Qu={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:Ku,data:{}},gn={passive:!0};function Ju(e){var t=e.state,n=e.instance,r=e.options,o=r.scroll,i=o===void 0?!0:o,u=r.resize,c=u===void 0?!0:u,d=Ve(t.elements.popper),h=[].concat(t.scrollParents.reference,t.scrollParents.popper);return i&&h.forEach(function(v){v.addEventListener("scroll",n.update,gn)}),c&&d.addEventListener("resize",n.update,gn),function(){i&&h.forEach(function(v){v.removeEventListener("scroll",n.update,gn)}),c&&d.removeEventListener("resize",n.update,gn)}}var ed={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:Ju,data:{}},td={left:"right",right:"left",bottom:"top",top:"bottom"};function yn(e){return e.replace(/left|right|bottom|top/g,function(t){return td[t]})}var nd={start:"end",end:"start"};function jo(e){return e.replace(/start|end/g,function(t){return nd[t]})}function Xr(e){var t=Ve(e),n=t.pageXOffset,r=t.pageYOffset;return{scrollLeft:n,scrollTop:r}}function Kr(e){return Ot(ut(e)).left+Xr(e).scrollLeft}function rd(e){var t=Ve(e),n=ut(e),r=t.visualViewport,o=n.clientWidth,i=n.clientHeight,u=0,c=0;return r&&(o=r.width,i=r.height,/^((?!chrome|android).)*safari/i.test(navigator.userAgent)||(u=r.offsetLeft,c=r.offsetTop)),{width:o,height:i,x:u+Kr(e),y:c}}function od(e){var t,n=ut(e),r=Xr(e),o=(t=e.ownerDocument)==null?void 0:t.body,i=kt(n.scrollWidth,n.clientWidth,o?o.scrollWidth:0,o?o.clientWidth:0),u=kt(n.scrollHeight,n.clientHeight,o?o.scrollHeight:0,o?o.clientHeight:0),c=-r.scrollLeft+Kr(e),d=-r.scrollTop;return Ue(o||n).direction==="rtl"&&(c+=kt(n.clientWidth,o?o.clientWidth:0)-i),{width:i,height:u,x:c,y:d}}function Qr(e){var t=Ue(e),n=t.overflow,r=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+r)}function si(e){return["html","body","#document"].indexOf(Ze(e))>=0?e.ownerDocument.body:$e(e)&&Qr(e)?e:si(Rn(e))}function Yt(e,t){var n;t===void 0&&(t=[]);var r=si(e),o=r===((n=e.ownerDocument)==null?void 0:n.body),i=Ve(r),u=o?[i].concat(i.visualViewport||[],Qr(r)?r:[]):r,c=t.concat(u);return o?c:c.concat(Yt(Rn(u)))}function xr(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function ad(e){var t=Ot(e);return t.top=t.top+e.clientTop,t.left=t.left+e.clientLeft,t.bottom=t.top+e.clientHeight,t.right=t.left+e.clientWidth,t.width=e.clientWidth,t.height=e.clientHeight,t.x=t.left,t.y=t.top,t}function Ho(e,t){return t===Ja?xr(rd(e)):Tt(t)?ad(t):xr(od(ut(e)))}function id(e){var t=Yt(Rn(e)),n=["absolute","fixed"].indexOf(Ue(e).position)>=0,r=n&&$e(e)?on(e):e;return Tt(r)?t.filter(function(o){return Tt(o)&&ri(o,r)&&Ze(o)!=="body"&&(n?Ue(o).position!=="static":!0)}):[]}function sd(e,t,n){var r=t==="clippingParents"?id(e):[].concat(t),o=[].concat(r,[n]),i=o[0],u=o.reduce(function(c,d){var h=Ho(e,d);return c.top=kt(h.top,c.top),c.right=$n(h.right,c.right),c.bottom=$n(h.bottom,c.bottom),c.left=kt(h.left,c.left),c},Ho(e,i));return u.width=u.right-u.left,u.height=u.bottom-u.top,u.x=u.left,u.y=u.top,u}function li(e){var t=e.reference,n=e.element,r=e.placement,o=r?Re(r):null,i=r?Bt(r):null,u=t.x+t.width/2-n.width/2,c=t.y+t.height/2-n.height/2,d;switch(o){case ge:d={x:u,y:t.y-n.height};break;case Se:d={x:u,y:t.y+t.height};break;case Ee:d={x:t.x+t.width,y:c};break;case we:d={x:t.x-n.width,y:c};break;default:d={x:t.x,y:t.y}}var h=o?qr(o):null;if(h!=null){var v=h==="y"?"height":"width";switch(i){case Lt:d[h]=d[h]-(t[v]/2-n[v]/2);break;case Kt:d[h]=d[h]+(t[v]/2-n[v]/2);break}}return d}function Qt(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=r===void 0?e.placement:r,i=n.boundary,u=i===void 0?$u:i,c=n.rootBoundary,d=c===void 0?Ja:c,h=n.elementContext,v=h===void 0?Ft:h,b=n.altBoundary,M=b===void 0?!1:b,S=n.padding,$=S===void 0?0:S,C=ai(typeof $!="number"?$:ii($,rn)),y=v===Ft?Su:Ft,w=e.rects.popper,p=e.elements[M?y:v],m=sd(Tt(p)?p:p.contextElement||ut(e.elements.popper),u,d),f=Ot(e.elements.reference),k=li({reference:f,element:w,strategy:"absolute",placement:o}),g=xr(Object.assign({},w,k)),_=v===Ft?g:f,E={top:m.top-_.top+C.top,bottom:_.bottom-m.bottom+C.bottom,left:m.left-_.left+C.left,right:_.right-m.right+C.right},T=e.modifiersData.offset;if(v===Ft&&T){var F=T[o];Object.keys(E).forEach(function(z){var G=[Ee,Se].indexOf(z)>=0?1:-1,re=[ge,Se].indexOf(z)>=0?"y":"x";E[z]+=F[re]*G})}return E}function ld(e,t){t===void 0&&(t={});var n=t,r=n.placement,o=n.boundary,i=n.rootBoundary,u=n.padding,c=n.flipVariations,d=n.allowedAutoPlacements,h=d===void 0?ei:d,v=Bt(r),b=v?c?Oo:Oo.filter(function($){return Bt($)===v}):rn,M=b.filter(function($){return h.indexOf($)>=0});M.length===0&&(M=b);var S=M.reduce(function($,C){return $[C]=Qt(e,{placement:C,boundary:o,rootBoundary:i,padding:u})[Re(C)],$},{});return Object.keys(S).sort(function($,C){return S[$]-S[C]})}function cd(e){if(Re(e)===Gr)return[];var t=yn(e);return[jo(e),t,jo(t)]}function ud(e){var t=e.state,n=e.options,r=e.name;if(!t.modifiersData[r]._skip){for(var o=n.mainAxis,i=o===void 0?!0:o,u=n.altAxis,c=u===void 0?!0:u,d=n.fallbackPlacements,h=n.padding,v=n.boundary,b=n.rootBoundary,M=n.altBoundary,S=n.flipVariations,$=S===void 0?!0:S,C=n.allowedAutoPlacements,y=t.options.placement,w=Re(y),p=w===y,m=d||(p||!$?[yn(y)]:cd(y)),f=[y].concat(m).reduce(function(le,he){return le.concat(Re(he)===Gr?ld(t,{placement:he,boundary:v,rootBoundary:b,padding:h,flipVariations:$,allowedAutoPlacements:C}):he)},[]),k=t.rects.reference,g=t.rects.popper,_=new Map,E=!0,T=f[0],F=0;F=0,_e=de?"width":"height",se=Qt(t,{placement:z,boundary:v,rootBoundary:b,altBoundary:M,padding:h}),ie=de?re?Ee:we:re?Se:ge;k[_e]>g[_e]&&(ie=yn(ie));var q=yn(ie),oe=[];if(i&&oe.push(se[G]<=0),c&&oe.push(se[ie]<=0,se[q]<=0),oe.every(function(le){return le})){T=z,E=!1;break}_.set(z,oe)}if(E)for(var fe=$?3:1,Ae=function(he){var ve=f.find(function(Le){var xe=_.get(Le);if(xe)return xe.slice(0,he).every(function(Ge){return Ge})});if(ve)return T=ve,"break"},ne=fe;ne>0;ne--){var We=Ae(ne);if(We==="break")break}t.placement!==T&&(t.modifiersData[r]._skip=!0,t.placement=T,t.reset=!0)}}var dd={name:"flip",enabled:!0,phase:"main",fn:ud,requiresIfExists:["offset"],data:{_skip:!1}};function No(e,t,n){return n===void 0&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function Do(e){return[ge,Ee,Se,we].some(function(t){return e[t]>=0})}function fd(e){var t=e.state,n=e.name,r=t.rects.reference,o=t.rects.popper,i=t.modifiersData.preventOverflow,u=Qt(t,{elementContext:"reference"}),c=Qt(t,{altBoundary:!0}),d=No(u,r),h=No(c,o,i),v=Do(d),b=Do(h);t.modifiersData[n]={referenceClippingOffsets:d,popperEscapeOffsets:h,isReferenceHidden:v,hasPopperEscaped:b},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":v,"data-popper-escaped":b})}var hd={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:fd};function pd(e,t,n){var r=Re(e),o=[we,ge].indexOf(r)>=0?-1:1,i=typeof n=="function"?n(Object.assign({},t,{placement:e})):n,u=i[0],c=i[1];return u=u||0,c=(c||0)*o,[we,Ee].indexOf(r)>=0?{x:c,y:u}:{x:u,y:c}}function vd(e){var t=e.state,n=e.options,r=e.name,o=n.offset,i=o===void 0?[0,0]:o,u=ei.reduce(function(v,b){return v[b]=pd(b,t.rects,i),v},{}),c=u[t.placement],d=c.x,h=c.y;t.modifiersData.popperOffsets!=null&&(t.modifiersData.popperOffsets.x+=d,t.modifiersData.popperOffsets.y+=h),t.modifiersData[r]=u}var md={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:vd};function gd(e){var t=e.state,n=e.name;t.modifiersData[n]=li({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})}var wd={name:"popperOffsets",enabled:!0,phase:"read",fn:gd,data:{}};function kd(e){return e==="x"?"y":"x"}function _d(e){var t=e.state,n=e.options,r=e.name,o=n.mainAxis,i=o===void 0?!0:o,u=n.altAxis,c=u===void 0?!1:u,d=n.boundary,h=n.rootBoundary,v=n.altBoundary,b=n.padding,M=n.tether,S=M===void 0?!0:M,$=n.tetherOffset,C=$===void 0?0:$,y=Qt(t,{boundary:d,rootBoundary:h,padding:b,altBoundary:v}),w=Re(t.placement),p=Bt(t.placement),m=!p,f=qr(w),k=kd(f),g=t.modifiersData.popperOffsets,_=t.rects.reference,E=t.rects.popper,T=typeof C=="function"?C(Object.assign({},t.rects,{placement:t.placement})):C,F=typeof T=="number"?{mainAxis:T,altAxis:T}:Object.assign({mainAxis:0,altAxis:0},T),z=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,G={x:0,y:0};if(g){if(i){var re,de=f==="y"?ge:we,_e=f==="y"?Se:Ee,se=f==="y"?"height":"width",ie=g[f],q=ie+y[de],oe=ie-y[_e],fe=S?-E[se]/2:0,Ae=p===Lt?_[se]:E[se],ne=p===Lt?-E[se]:-_[se],We=t.elements.arrow,le=S&&We?Yr(We):{width:0,height:0},he=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:oi(),ve=he[de],Le=he[_e],xe=Gt(0,_[se],le[se]),Ge=m?_[se]/2-fe-xe-ve-F.mainAxis:Ae-xe-ve-F.mainAxis,Ce=m?-_[se]/2+fe+xe+Le+F.mainAxis:ne+xe+Le+F.mainAxis,Te=t.elements.arrow&&on(t.elements.arrow),Mt=Te?f==="y"?Te.clientTop||0:Te.clientLeft||0:0,Ye=(re=z==null?void 0:z[f])!=null?re:0,an=ie+Ge-Ye-Mt,sn=ie+Ce-Ye,Ht=Gt(S?$n(q,an):q,ie,S?kt(oe,sn):oe);g[f]=Ht,G[f]=Ht-ie}if(c){var Nt,ln=f==="x"?ge:we,cn=f==="x"?Se:Ee,qe=g[k],nt=k==="y"?"height":"width",Dt=qe+y[ln],dt=qe-y[cn],Rt=[ge,we].indexOf(w)!==-1,un=(Nt=z==null?void 0:z[k])!=null?Nt:0,dn=Rt?Dt:qe-_[nt]-E[nt]-un+F.altAxis,fn=Rt?qe+_[nt]+E[nt]-un-F.altAxis:dt,hn=S&&Rt?Uu(dn,qe,fn):Gt(S?dn:Dt,qe,S?fn:dt);g[k]=hn,G[k]=hn-qe}t.modifiersData[r]=G}}var xd={name:"preventOverflow",enabled:!0,phase:"main",fn:_d,requiresIfExists:["offset"]};function bd(e){return{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}}function yd(e){return e===Ve(e)||!$e(e)?Xr(e):bd(e)}function Md(e){var t=e.getBoundingClientRect(),n=Pt(t.width)/e.offsetWidth||1,r=Pt(t.height)/e.offsetHeight||1;return n!==1||r!==1}function Ad(e,t,n){n===void 0&&(n=!1);var r=$e(t),o=$e(t)&&Md(t),i=ut(t),u=Ot(e,o),c={scrollLeft:0,scrollTop:0},d={x:0,y:0};return(r||!r&&!n)&&((Ze(t)!=="body"||Qr(i))&&(c=yd(t)),$e(t)?(d=Ot(t,!0),d.x+=t.clientLeft,d.y+=t.clientTop):i&&(d.x=Kr(i))),{x:u.left+c.scrollLeft-d.x,y:u.top+c.scrollTop-d.y,width:u.width,height:u.height}}function Cd(e){var t=new Map,n=new Set,r=[];e.forEach(function(i){t.set(i.name,i)});function o(i){n.add(i.name);var u=[].concat(i.requires||[],i.requiresIfExists||[]);u.forEach(function(c){if(!n.has(c)){var d=t.get(c);d&&o(d)}}),r.push(i)}return e.forEach(function(i){n.has(i.name)||o(i)}),r}function Id(e){var t=Cd(e);return Nu.reduce(function(n,r){return n.concat(t.filter(function(o){return o.phase===r}))},[])}function $d(e){var t;return function(){return t||(t=new Promise(function(n){Promise.resolve().then(function(){t=void 0,n(e())})})),t}}function Sd(e){var t=e.reduce(function(n,r){var o=n[r.name];return n[r.name]=o?Object.assign({},o,r,{options:Object.assign({},o.options,r.options),data:Object.assign({},o.data,r.data)}):r,n},{});return Object.keys(t).map(function(n){return t[n]})}var Ro={placement:"bottom",modifiers:[],strategy:"absolute"};function Fo(){for(var e=arguments.length,t=new Array(e),n=0;n-1}function pi(e,t){return typeof e=="function"?e.apply(void 0,t):e}function Zo(e,t){if(t===0)return e;var n;return function(r){clearTimeout(n),n=setTimeout(function(){e(r)},t)}}function Od(e,t){var n=Object.assign({},e);return t.forEach(function(r){delete n[r]}),n}function Bd(e){return e.split(/\s+/).filter(Boolean)}function vt(e){return[].concat(e)}function Uo(e,t){e.indexOf(t)===-1&&e.push(t)}function Vd(e){return e.filter(function(t,n){return e.indexOf(t)===n})}function vi(e){return e.split("-")[0]}function Vt(e){return[].slice.call(e)}function zo(e){return Object.keys(e).reduce(function(t,n){return e[n]!==void 0&&(t[n]=e[n]),t},{})}function _t(){return document.createElement("div")}function Fn(e){return["Element","Fragment"].some(function(t){return Jr(e,t)})}function jd(e){return Jr(e,"NodeList")}function eo(e){return Jr(e,"MouseEvent")}function Hd(e){return!!(e&&e._tippy&&e._tippy.reference===e)}function Nd(e){return Fn(e)?[e]:jd(e)?Vt(e):Array.isArray(e)?e:Vt(document.querySelectorAll(e))}function Jn(e,t){e.forEach(function(n){n&&(n.style.transitionDuration=t+"ms")})}function Jt(e,t){e.forEach(function(n){n&&n.setAttribute("data-state",t)})}function mi(e){var t,n=vt(e),r=n[0];return r!=null&&(t=r.ownerDocument)!=null&&t.body?r.ownerDocument:document}function Dd(e,t){var n=t.clientX,r=t.clientY;return e.every(function(o){var i=o.popperRect,u=o.popperState,c=o.props,d=c.interactiveBorder,h=vi(u.placement),v=u.modifiersData.offset;if(!v)return!0;var b=h==="bottom"?v.top.y:0,M=h==="top"?v.bottom.y:0,S=h==="right"?v.left.x:0,$=h==="left"?v.right.x:0,C=i.top-r+b>d,y=r-i.bottom-M>d,w=i.left-n+S>d,p=n-i.right-$>d;return C||y||w||p})}function er(e,t,n){var r=t+"EventListener";["transitionend","webkitTransitionEnd"].forEach(function(o){e[r](o,n)})}function Wo(e,t){for(var n=t;n;){var r;if(e.contains(n))return!0;n=n.getRootNode==null||(r=n.getRootNode())==null?void 0:r.host}return!1}var je={isTouch:!1},Go=0;function Rd(){je.isTouch||(je.isTouch=!0,window.performance&&document.addEventListener("mousemove",gi))}function gi(){var e=performance.now();e-Go<20&&(je.isTouch=!1,document.removeEventListener("mousemove",gi)),Go=e}function Fd(){var e=document.activeElement;if(Hd(e)){var t=e._tippy;e.blur&&!t.state.isVisible&&e.blur()}}function Zd(){document.addEventListener("touchstart",Rd,ht),window.addEventListener("blur",Fd)}var Ud=typeof window<"u"&&typeof document<"u",zd=Ud?!!window.msCrypto:!1,Wd={animateFill:!1,followCursor:!1,inlinePositioning:!1,sticky:!1},Gd={allowHTML:!1,animation:"fade",arrow:!0,content:"",inertia:!1,maxWidth:350,role:"tooltip",theme:"",zIndex:9999},Pe=Object.assign({appendTo:hi,aria:{content:"auto",expanded:"auto"},delay:0,duration:[300,250],getReferenceClientRect:null,hideOnClick:!0,ignoreAttributes:!1,interactive:!1,interactiveBorder:2,interactiveDebounce:0,moveTransition:"",offset:[0,10],onAfterUpdate:function(){},onBeforeUpdate:function(){},onCreate:function(){},onDestroy:function(){},onHidden:function(){},onHide:function(){},onMount:function(){},onShow:function(){},onShown:function(){},onTrigger:function(){},onUntrigger:function(){},onClickOutside:function(){},placement:"top",plugins:[],popperOptions:{},render:null,showOnCreate:!1,touch:!0,trigger:"mouseenter focus",triggerTarget:null},Wd,Gd),Yd=Object.keys(Pe),qd=function(t){var n=Object.keys(t);n.forEach(function(r){Pe[r]=t[r]})};function wi(e){var t=e.plugins||[],n=t.reduce(function(r,o){var i=o.name,u=o.defaultValue;if(i){var c;r[i]=e[i]!==void 0?e[i]:(c=Pe[i])!=null?c:u}return r},{});return Object.assign({},e,n)}function Xd(e,t){var n=t?Object.keys(wi(Object.assign({},Pe,{plugins:t}))):Yd,r=n.reduce(function(o,i){var u=(e.getAttribute("data-tippy-"+i)||"").trim();if(!u)return o;if(i==="content")o[i]=u;else try{o[i]=JSON.parse(u)}catch{o[i]=u}return o},{});return r}function Yo(e,t){var n=Object.assign({},t,{content:pi(t.content,[e])},t.ignoreAttributes?{}:Xd(e,t.plugins));return n.aria=Object.assign({},Pe.aria,n.aria),n.aria={expanded:n.aria.expanded==="auto"?t.interactive:n.aria.expanded,content:n.aria.content==="auto"?t.interactive?null:"describedby":n.aria.content},n}var Kd=function(){return"innerHTML"};function br(e,t){e[Kd()]=t}function qo(e){var t=_t();return e===!0?t.className=di:(t.className=fi,Fn(e)?t.appendChild(e):br(t,e)),t}function Xo(e,t){Fn(t.content)?(br(e,""),e.appendChild(t.content)):typeof t.content!="function"&&(t.allowHTML?br(e,t.content):e.textContent=t.content)}function Sn(e){var t=e.firstElementChild,n=Vt(t.children);return{box:t,content:n.find(function(r){return r.classList.contains(ci)}),arrow:n.find(function(r){return r.classList.contains(di)||r.classList.contains(fi)}),backdrop:n.find(function(r){return r.classList.contains(ui)})}}function ki(e){var t=_t(),n=_t();n.className=Pd,n.setAttribute("data-state","hidden"),n.setAttribute("tabindex","-1");var r=_t();r.className=ci,r.setAttribute("data-state","hidden"),Xo(r,e.props),t.appendChild(n),n.appendChild(r),o(e.props,e.props);function o(i,u){var c=Sn(t),d=c.box,h=c.content,v=c.arrow;u.theme?d.setAttribute("data-theme",u.theme):d.removeAttribute("data-theme"),typeof u.animation=="string"?d.setAttribute("data-animation",u.animation):d.removeAttribute("data-animation"),u.inertia?d.setAttribute("data-inertia",""):d.removeAttribute("data-inertia"),d.style.maxWidth=typeof u.maxWidth=="number"?u.maxWidth+"px":u.maxWidth,u.role?d.setAttribute("role",u.role):d.removeAttribute("role"),(i.content!==u.content||i.allowHTML!==u.allowHTML)&&Xo(h,e.props),u.arrow?v?i.arrow!==u.arrow&&(d.removeChild(v),d.appendChild(qo(u.arrow))):d.appendChild(qo(u.arrow)):v&&d.removeChild(v)}return{popper:t,onUpdate:o}}ki.$$tippy=!0;var Qd=1,wn=[],tr=[];function Jd(e,t){var n=Yo(e,Object.assign({},Pe,wi(zo(t)))),r,o,i,u=!1,c=!1,d=!1,h=!1,v,b,M,S=[],$=Zo(an,n.interactiveDebounce),C,y=Qd++,w=null,p=Vd(n.plugins),m={isEnabled:!0,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1},f={id:y,reference:e,popper:_t(),popperInstance:w,props:n,state:m,plugins:p,clearDelayTimeouts:dn,setProps:fn,setContent:hn,show:yi,hide:Mi,hideWithInteractivity:Ai,enable:Rt,disable:un,unmount:Ci,destroy:Ii};if(!n.render)return f;var k=n.render(f),g=k.popper,_=k.onUpdate;g.setAttribute("data-tippy-root",""),g.id="tippy-"+f.id,f.popper=g,e._tippy=f,g._tippy=f;var E=p.map(function(A){return A.fn(f)}),T=e.hasAttribute("aria-expanded");return Te(),fe(),ie(),q("onCreate",[f]),n.showOnCreate&&Dt(),g.addEventListener("mouseenter",function(){f.props.interactive&&f.state.isVisible&&f.clearDelayTimeouts()}),g.addEventListener("mouseleave",function(){f.props.interactive&&f.props.trigger.indexOf("mouseenter")>=0&&de().addEventListener("mousemove",$)}),f;function F(){var A=f.props.touch;return Array.isArray(A)?A:[A,0]}function z(){return F()[0]==="hold"}function G(){var A;return!!((A=f.props.render)!=null&&A.$$tippy)}function re(){return C||e}function de(){var A=re().parentNode;return A?mi(A):document}function _e(){return Sn(g)}function se(A){return f.state.isMounted&&!f.state.isVisible||je.isTouch||v&&v.type==="focus"?0:Qn(f.props.delay,A?0:1,Pe.delay)}function ie(A){A===void 0&&(A=!1),g.style.pointerEvents=f.props.interactive&&!A?"":"none",g.style.zIndex=""+f.props.zIndex}function q(A,V,Z){if(Z===void 0&&(Z=!0),E.forEach(function(X){X[A]&&X[A].apply(X,V)}),Z){var J;(J=f.props)[A].apply(J,V)}}function oe(){var A=f.props.aria;if(A.content){var V="aria-"+A.content,Z=g.id,J=vt(f.props.triggerTarget||e);J.forEach(function(X){var pe=X.getAttribute(V);if(f.state.isVisible)X.setAttribute(V,pe?pe+" "+Z:Z);else{var Ie=pe&&pe.replace(Z,"").trim();Ie?X.setAttribute(V,Ie):X.removeAttribute(V)}})}}function fe(){if(!(T||!f.props.aria.expanded)){var A=vt(f.props.triggerTarget||e);A.forEach(function(V){f.props.interactive?V.setAttribute("aria-expanded",f.state.isVisible&&V===re()?"true":"false"):V.removeAttribute("aria-expanded")})}}function Ae(){de().removeEventListener("mousemove",$),wn=wn.filter(function(A){return A!==$})}function ne(A){if(!(je.isTouch&&(d||A.type==="mousedown"))){var V=A.composedPath&&A.composedPath()[0]||A.target;if(!(f.props.interactive&&Wo(g,V))){if(vt(f.props.triggerTarget||e).some(function(Z){return Wo(Z,V)})){if(je.isTouch||f.state.isVisible&&f.props.trigger.indexOf("click")>=0)return}else q("onClickOutside",[f,A]);f.props.hideOnClick===!0&&(f.clearDelayTimeouts(),f.hide(),c=!0,setTimeout(function(){c=!1}),f.state.isMounted||ve())}}}function We(){d=!0}function le(){d=!1}function he(){var A=de();A.addEventListener("mousedown",ne,!0),A.addEventListener("touchend",ne,ht),A.addEventListener("touchstart",le,ht),A.addEventListener("touchmove",We,ht)}function ve(){var A=de();A.removeEventListener("mousedown",ne,!0),A.removeEventListener("touchend",ne,ht),A.removeEventListener("touchstart",le,ht),A.removeEventListener("touchmove",We,ht)}function Le(A,V){Ge(A,function(){!f.state.isVisible&&g.parentNode&&g.parentNode.contains(g)&&V()})}function xe(A,V){Ge(A,V)}function Ge(A,V){var Z=_e().box;function J(X){X.target===Z&&(er(Z,"remove",J),V())}if(A===0)return V();er(Z,"remove",b),er(Z,"add",J),b=J}function Ce(A,V,Z){Z===void 0&&(Z=!1);var J=vt(f.props.triggerTarget||e);J.forEach(function(X){X.addEventListener(A,V,Z),S.push({node:X,eventType:A,handler:V,options:Z})})}function Te(){z()&&(Ce("touchstart",Ye,{passive:!0}),Ce("touchend",sn,{passive:!0})),Bd(f.props.trigger).forEach(function(A){if(A!=="manual")switch(Ce(A,Ye),A){case"mouseenter":Ce("mouseleave",sn);break;case"focus":Ce(zd?"focusout":"blur",Ht);break;case"focusin":Ce("focusout",Ht);break}})}function Mt(){S.forEach(function(A){var V=A.node,Z=A.eventType,J=A.handler,X=A.options;V.removeEventListener(Z,J,X)}),S=[]}function Ye(A){var V,Z=!1;if(!(!f.state.isEnabled||Nt(A)||c)){var J=((V=v)==null?void 0:V.type)==="focus";v=A,C=A.currentTarget,fe(),!f.state.isVisible&&eo(A)&&wn.forEach(function(X){return X(A)}),A.type==="click"&&(f.props.trigger.indexOf("mouseenter")<0||u)&&f.props.hideOnClick!==!1&&f.state.isVisible?Z=!0:Dt(A),A.type==="click"&&(u=!Z),Z&&!J&&dt(A)}}function an(A){var V=A.target,Z=re().contains(V)||g.contains(V);if(!(A.type==="mousemove"&&Z)){var J=nt().concat(g).map(function(X){var pe,Ie=X._tippy,At=(pe=Ie.popperInstance)==null?void 0:pe.state;return At?{popperRect:X.getBoundingClientRect(),popperState:At,props:n}:null}).filter(Boolean);Dd(J,A)&&(Ae(),dt(A))}}function sn(A){var V=Nt(A)||f.props.trigger.indexOf("click")>=0&&u;if(!V){if(f.props.interactive){f.hideWithInteractivity(A);return}dt(A)}}function Ht(A){f.props.trigger.indexOf("focusin")<0&&A.target!==re()||f.props.interactive&&A.relatedTarget&&g.contains(A.relatedTarget)||dt(A)}function Nt(A){return je.isTouch?z()!==A.type.indexOf("touch")>=0:!1}function ln(){cn();var A=f.props,V=A.popperOptions,Z=A.placement,J=A.offset,X=A.getReferenceClientRect,pe=A.moveTransition,Ie=G()?Sn(g).arrow:null,At=X?{getBoundingClientRect:X,contextElement:X.contextElement||re()}:e,to={name:"$$tippy",enabled:!0,phase:"beforeWrite",requires:["computeStyles"],fn:function(pn){var Ct=pn.state;if(G()){var $i=_e(),Un=$i.box;["placement","reference-hidden","escaped"].forEach(function(vn){vn==="placement"?Un.setAttribute("data-placement",Ct.placement):Ct.attributes.popper["data-popper-"+vn]?Un.setAttribute("data-"+vn,""):Un.removeAttribute("data-"+vn)}),Ct.attributes.popper={}}}},ft=[{name:"offset",options:{offset:J}},{name:"preventOverflow",options:{padding:{top:2,bottom:2,left:5,right:5}}},{name:"flip",options:{padding:5}},{name:"computeStyles",options:{adaptive:!pe}},to];G()&&Ie&&ft.push({name:"arrow",options:{element:Ie,padding:3}}),ft.push.apply(ft,(V==null?void 0:V.modifiers)||[]),f.popperInstance=Td(At,g,Object.assign({},V,{placement:Z,onFirstUpdate:M,modifiers:ft}))}function cn(){f.popperInstance&&(f.popperInstance.destroy(),f.popperInstance=null)}function qe(){var A=f.props.appendTo,V,Z=re();f.props.interactive&&A===hi||A==="parent"?V=Z.parentNode:V=pi(A,[Z]),V.contains(g)||V.appendChild(g),f.state.isMounted=!0,ln()}function nt(){return Vt(g.querySelectorAll("[data-tippy-root]"))}function Dt(A){f.clearDelayTimeouts(),A&&q("onTrigger",[f,A]),he();var V=se(!0),Z=F(),J=Z[0],X=Z[1];je.isTouch&&J==="hold"&&X&&(V=X),V?r=setTimeout(function(){f.show()},V):f.show()}function dt(A){if(f.clearDelayTimeouts(),q("onUntrigger",[f,A]),!f.state.isVisible){ve();return}if(!(f.props.trigger.indexOf("mouseenter")>=0&&f.props.trigger.indexOf("click")>=0&&["mouseleave","mousemove"].indexOf(A.type)>=0&&u)){var V=se(!1);V?o=setTimeout(function(){f.state.isVisible&&f.hide()},V):i=requestAnimationFrame(function(){f.hide()})}}function Rt(){f.state.isEnabled=!0}function un(){f.hide(),f.state.isEnabled=!1}function dn(){clearTimeout(r),clearTimeout(o),cancelAnimationFrame(i)}function fn(A){if(!f.state.isDestroyed){q("onBeforeUpdate",[f,A]),Mt();var V=f.props,Z=Yo(e,Object.assign({},V,zo(A),{ignoreAttributes:!0}));f.props=Z,Te(),V.interactiveDebounce!==Z.interactiveDebounce&&(Ae(),$=Zo(an,Z.interactiveDebounce)),V.triggerTarget&&!Z.triggerTarget?vt(V.triggerTarget).forEach(function(J){J.removeAttribute("aria-expanded")}):Z.triggerTarget&&e.removeAttribute("aria-expanded"),fe(),ie(),_&&_(V,Z),f.popperInstance&&(ln(),nt().forEach(function(J){requestAnimationFrame(J._tippy.popperInstance.forceUpdate)})),q("onAfterUpdate",[f,A])}}function hn(A){f.setProps({content:A})}function yi(){var A=f.state.isVisible,V=f.state.isDestroyed,Z=!f.state.isEnabled,J=je.isTouch&&!f.props.touch,X=Qn(f.props.duration,0,Pe.duration);if(!(A||V||Z||J)&&!re().hasAttribute("disabled")&&(q("onShow",[f],!1),f.props.onShow(f)!==!1)){if(f.state.isVisible=!0,G()&&(g.style.visibility="visible"),ie(),he(),f.state.isMounted||(g.style.transition="none"),G()){var pe=_e(),Ie=pe.box,At=pe.content;Jn([Ie,At],0)}M=function(){var ft;if(!(!f.state.isVisible||h)){if(h=!0,g.offsetHeight,g.style.transition=f.props.moveTransition,G()&&f.props.animation){var Zn=_e(),pn=Zn.box,Ct=Zn.content;Jn([pn,Ct],X),Jt([pn,Ct],"visible")}oe(),fe(),Uo(tr,f),(ft=f.popperInstance)==null||ft.forceUpdate(),q("onMount",[f]),f.props.animation&&G()&&xe(X,function(){f.state.isShown=!0,q("onShown",[f])})}},qe()}}function Mi(){var A=!f.state.isVisible,V=f.state.isDestroyed,Z=!f.state.isEnabled,J=Qn(f.props.duration,1,Pe.duration);if(!(A||V||Z)&&(q("onHide",[f],!1),f.props.onHide(f)!==!1)){if(f.state.isVisible=!1,f.state.isShown=!1,h=!1,u=!1,G()&&(g.style.visibility="hidden"),Ae(),ve(),ie(!0),G()){var X=_e(),pe=X.box,Ie=X.content;f.props.animation&&(Jn([pe,Ie],J),Jt([pe,Ie],"hidden"))}oe(),fe(),f.props.animation?G()&&Le(J,f.unmount):f.unmount()}}function Ai(A){de().addEventListener("mousemove",$),Uo(wn,$),$(A)}function Ci(){f.state.isVisible&&f.hide(),f.state.isMounted&&(cn(),nt().forEach(function(A){A._tippy.unmount()}),g.parentNode&&g.parentNode.removeChild(g),tr=tr.filter(function(A){return A!==f}),f.state.isMounted=!1,q("onHidden",[f]))}function Ii(){f.state.isDestroyed||(f.clearDelayTimeouts(),f.unmount(),Mt(),delete e._tippy,f.state.isDestroyed=!0,q("onDestroy",[f]))}}function H(e,t){t===void 0&&(t={});var n=Pe.plugins.concat(t.plugins||[]);Zd();var r=Object.assign({},t,{plugins:n}),o=Nd(e),i=o.reduce(function(u,c){var d=c&&Jd(c,r);return d&&u.push(d),u},[]);return Fn(e)?i[0]:i}H.defaultProps=Pe;H.setDefaultProps=qd;H.currentInput=je;var e3=Object.assign({},ni,{effect:function(t){var n=t.state,r={popper:{position:n.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};Object.assign(n.elements.popper.style,r.popper),n.styles=r,n.elements.arrow&&Object.assign(n.elements.arrow.style,r.arrow)}}),t3=function(t,n){var r;n===void 0&&(n={});var o=t,i=[],u=[],c,d=n.overrides,h=[],v=!1;function b(){u=o.map(function(f){return vt(f.props.triggerTarget||f.reference)}).reduce(function(f,k){return f.concat(k)},[])}function M(){i=o.map(function(f){return f.reference})}function S(f){o.forEach(function(k){f?k.enable():k.disable()})}function $(f){return o.map(function(k){var g=k.setProps;return k.setProps=function(_){g(_),k.reference===c&&f.setProps(_)},function(){k.setProps=g}})}function C(f,k){var g=u.indexOf(k);if(k!==c){c=k;var _=(d||[]).concat("content").reduce(function(E,T){return E[T]=o[g].props[T],E},{});f.setProps(Object.assign({},_,{getReferenceClientRect:typeof _.getReferenceClientRect=="function"?_.getReferenceClientRect:function(){var E;return(E=i[g])==null?void 0:E.getBoundingClientRect()}}))}}S(!1),M(),b();var y={fn:function(){return{onDestroy:function(){S(!0)},onHidden:function(){c=null},onClickOutside:function(g){g.props.showOnCreate&&!v&&(v=!0,c=null)},onShow:function(g){g.props.showOnCreate&&!v&&(v=!0,C(g,i[0]))},onTrigger:function(g,_){C(g,_.currentTarget)}}}},w=H(_t(),Object.assign({},Od(n,["overrides"]),{plugins:[y].concat(n.plugins||[]),triggerTarget:u,popperOptions:Object.assign({},n.popperOptions,{modifiers:[].concat(((r=n.popperOptions)==null?void 0:r.modifiers)||[],[e3])})})),p=w.show;w.show=function(f){if(p(),!c&&f==null)return C(w,i[0]);if(!(c&&f==null)){if(typeof f=="number")return i[f]&&C(w,i[f]);if(o.indexOf(f)>=0){var k=f.reference;return C(w,k)}if(i.indexOf(f)>=0)return C(w,f)}},w.showNext=function(){var f=i[0];if(!c)return w.show(0);var k=i.indexOf(c);w.show(i[k+1]||f)},w.showPrevious=function(){var f=i[i.length-1];if(!c)return w.show(f);var k=i.indexOf(c),g=i[k-1]||f;w.show(g)};var m=w.setProps;return w.setProps=function(f){d=f.overrides||d,m(f)},w.setInstances=function(f){S(!0),h.forEach(function(k){return k()}),o=f,S(!1),M(),b(),h=$(w),w.setProps({triggerTarget:u})},h=$(w),w},n3={name:"animateFill",defaultValue:!1,fn:function(t){var n;if(!((n=t.props.render)!=null&&n.$$tippy))return{};var r=Sn(t.popper),o=r.box,i=r.content,u=t.props.animateFill?r3():null;return{onCreate:function(){u&&(o.insertBefore(u,o.firstElementChild),o.setAttribute("data-animatefill",""),o.style.overflow="hidden",t.setProps({arrow:!1,animation:"shift-away"}))},onMount:function(){if(u){var d=o.style.transitionDuration,h=Number(d.replace("ms",""));i.style.transitionDelay=Math.round(h/10)+"ms",u.style.transitionDuration=d,Jt([u],"visible")}},onShow:function(){u&&(u.style.transitionDuration="0ms")},onHide:function(){u&&Jt([u],"hidden")}}}};function r3(){var e=_t();return e.className=ui,Jt([e],"hidden"),e}var yr={clientX:0,clientY:0},kn=[];function _i(e){var t=e.clientX,n=e.clientY;yr={clientX:t,clientY:n}}function o3(e){e.addEventListener("mousemove",_i)}function a3(e){e.removeEventListener("mousemove",_i)}var i3={name:"followCursor",defaultValue:!1,fn:function(t){var n=t.reference,r=mi(t.props.triggerTarget||n),o=!1,i=!1,u=!0,c=t.props;function d(){return t.props.followCursor==="initial"&&t.state.isVisible}function h(){r.addEventListener("mousemove",M)}function v(){r.removeEventListener("mousemove",M)}function b(){o=!0,t.setProps({getReferenceClientRect:null}),o=!1}function M(C){var y=C.target?n.contains(C.target):!0,w=t.props.followCursor,p=C.clientX,m=C.clientY,f=n.getBoundingClientRect(),k=p-f.left,g=m-f.top;(y||!t.props.interactive)&&t.setProps({getReferenceClientRect:function(){var E=n.getBoundingClientRect(),T=p,F=m;w==="initial"&&(T=E.left+k,F=E.top+g);var z=w==="horizontal"?E.top:F,G=w==="vertical"?E.right:T,re=w==="horizontal"?E.bottom:F,de=w==="vertical"?E.left:T;return{width:G-de,height:re-z,top:z,right:G,bottom:re,left:de}}})}function S(){t.props.followCursor&&(kn.push({instance:t,doc:r}),o3(r))}function $(){kn=kn.filter(function(C){return C.instance!==t}),kn.filter(function(C){return C.doc===r}).length===0&&a3(r)}return{onCreate:S,onDestroy:$,onBeforeUpdate:function(){c=t.props},onAfterUpdate:function(y,w){var p=w.followCursor;o||p!==void 0&&c.followCursor!==p&&($(),p?(S(),t.state.isMounted&&!i&&!d()&&h()):(v(),b()))},onMount:function(){t.props.followCursor&&!i&&(u&&(M(yr),u=!1),d()||h())},onTrigger:function(y,w){eo(w)&&(yr={clientX:w.clientX,clientY:w.clientY}),i=w.type==="focus"},onHidden:function(){t.props.followCursor&&(b(),v(),u=!0)}}}};function s3(e,t){var n;return{popperOptions:Object.assign({},e.popperOptions,{modifiers:[].concat((((n=e.popperOptions)==null?void 0:n.modifiers)||[]).filter(function(r){var o=r.name;return o!==t.name}),[t])})}}var l3={name:"inlinePositioning",defaultValue:!1,fn:function(t){var n=t.reference;function r(){return!!t.props.inlinePositioning}var o,i=-1,u=!1,c=[],d={name:"tippyInlinePositioning",enabled:!0,phase:"afterWrite",fn:function(S){var $=S.state;r()&&(c.indexOf($.placement)!==-1&&(c=[]),o!==$.placement&&c.indexOf($.placement)===-1&&(c.push($.placement),t.setProps({getReferenceClientRect:function(){return h($.placement)}})),o=$.placement)}};function h(M){return c3(vi(M),n.getBoundingClientRect(),Vt(n.getClientRects()),i)}function v(M){u=!0,t.setProps(M),u=!1}function b(){u||v(s3(t.props,d))}return{onCreate:b,onAfterUpdate:b,onTrigger:function(S,$){if(eo($)){var C=Vt(t.reference.getClientRects()),y=C.find(function(p){return p.left-2<=$.clientX&&p.right+2>=$.clientX&&p.top-2<=$.clientY&&p.bottom+2>=$.clientY}),w=C.indexOf(y);i=w>-1?w:i}},onHidden:function(){i=-1}}}};function c3(e,t,n,r){if(n.length<2||e===null)return t;if(n.length===2&&r>=0&&n[0].left>n[1].right)return n[r]||t;switch(e){case"top":case"bottom":{var o=n[0],i=n[n.length-1],u=e==="top",c=o.top,d=i.bottom,h=u?o.left:i.left,v=u?o.right:i.right,b=v-h,M=d-c;return{top:c,bottom:d,left:h,right:v,width:b,height:M}}case"left":case"right":{var S=Math.min.apply(Math,n.map(function(g){return g.left})),$=Math.max.apply(Math,n.map(function(g){return g.right})),C=n.filter(function(g){return e==="left"?g.left===S:g.right===$}),y=C[0].top,w=C[C.length-1].bottom,p=S,m=$,f=m-p,k=w-y;return{top:y,bottom:w,left:p,right:m,width:f,height:k}}default:return t}}var u3={name:"sticky",defaultValue:!1,fn:function(t){var n=t.reference,r=t.popper;function o(){return t.popperInstance?t.popperInstance.state.elements.reference:n}function i(h){return t.props.sticky===!0||t.props.sticky===h}var u=null,c=null;function d(){var h=i("reference")?o().getBoundingClientRect():null,v=i("popper")?r.getBoundingClientRect():null;(h&&Ko(u,h)||v&&Ko(c,v))&&t.popperInstance&&t.popperInstance.update(),u=h,c=v,t.state.isMounted&&requestAnimationFrame(d)}return{onMount:function(){t.props.sticky&&d()}}}};function Ko(e,t){return e&&t?e.top!==t.top||e.right!==t.right||e.bottom!==t.bottom||e.left!==t.left:!0}H.setDefaultProps({render:ki});H.setDefaultProps({onShow:e=>{if(!e.props.content)return!1}});function xi(e,t={},n={mount:!0,appName:"Tippy"}){n=Object.assign({mount:!0,appName:"Tippy"},n);const r=Zi(),o=U(),i=U({isEnabled:!1,isVisible:!1,isDestroyed:!1,isMounted:!1,isShown:!1}),u=$r();let c=null;const d=()=>c||(c=document.createDocumentFragment(),c),h=_=>{let E,T=rt(_)?_.value:_;return Ui(T)?(u.value||(u.value=ro({name:n.appName,setup:()=>()=>rt(_)?_.value:_}),r&&Object.assign(u.value._context,r.appContext),u.value.mount(d())),E=()=>d()):typeof T=="object"?(u.value||(u.value=ro({name:n.appName,setup:()=>()=>mt(rt(_)?_.value:_)}),r&&Object.assign(u.value._context,r.appContext),u.value.mount(d())),E=()=>d()):E=T,E},v=_=>{let E={};return rt(_)?E=_.value||{}:no(_)?E={..._}:E={..._},E.content&&(E.content=h(E.content)),E.triggerTarget&&(E.triggerTarget=rt(E.triggerTarget)?E.triggerTarget.value:E.triggerTarget),(!E.plugins||!Array.isArray(E.plugins))&&(E.plugins=[]),E.plugins=E.plugins.filter(T=>T.name!=="vueTippyReactiveState"),E.plugins.push({name:"vueTippyReactiveState",fn:()=>({onCreate(){i.value.isEnabled=!0},onMount(){i.value.isMounted=!0},onShow(){i.value.isMounted=!0,i.value.isVisible=!0},onShown(){i.value.isShown=!0},onHide(){i.value.isMounted=!1,i.value.isVisible=!1},onHidden(){i.value.isShown=!1},onUnmounted(){i.value.isMounted=!1},onDestroy(){i.value.isDestroyed=!0}})}),E},b=()=>{o.value&&o.value.setProps(v(t))},M=()=>{!o.value||!t.content||o.value.setContent(h(t.content))},S=_=>{var E;(E=o.value)===null||E===void 0||E.setContent(h(_))},$=_=>{var E;(E=o.value)===null||E===void 0||E.setProps(v(_))},C=()=>{var _;o.value&&(o.value.destroy(),o.value=void 0),c=null,(_=u.value)===null||_===void 0||_.unmount(),u.value=void 0},y=()=>{var _;(_=o.value)===null||_===void 0||_.show()},w=()=>{var _;(_=o.value)===null||_===void 0||_.hide()},p=()=>{var _;(_=o.value)===null||_===void 0||_.disable(),i.value.isEnabled=!1},m=()=>{var _;(_=o.value)===null||_===void 0||_.enable(),i.value.isEnabled=!0},f=()=>{var _;(_=o.value)===null||_===void 0||_.unmount()},k=()=>{if(!e)return;let _=rt(e)?e.value:e;typeof _=="function"&&(_=_()),_&&(o.value=H(_,v(t)),_.$tippy=g)},g={tippy:o,refresh:b,refreshContent:M,setContent:S,setProps:$,destroy:C,hide:w,show:y,disable:p,enable:m,unmount:f,mount:k,state:i};return n.mount&&(r?r.isMounted?k():ze(k):k()),r&&Ln(()=>{C()}),rt(t)||no(t)?ke(t,b,{immediate:!1}):rt(t.content)&&ke(t.content,M,{immediate:!1}),g}function d3(e,t){const n=U();return ze(()=>{const o=(Array.isArray(e)?e.map(i=>i.value):typeof e=="function"?e():e.value).map(i=>i instanceof Element?i._tippy:i).filter(Boolean);n.value=t3(o,t?{allowHTML:!0,...t}:{allowHTML:!0})}),{singleton:n}}function f3(e){return typeof e=="function"?e():x(e)}function h3(e){var t,n;const r=f3(e);return(n=(t=r)===null||t===void 0?void 0:t.$el)!==null&&n!==void 0?n:r}const p3=B({props:{to:{type:[String,Function]},tag:{type:[String,Object],default:"span"},contentTag:{type:[String,Object],default:"span"},contentClass:{type:String,default:null},appendTo:{default:()=>H.defaultProps.appendTo},aria:{default:()=>H.defaultProps.aria},delay:{default:()=>H.defaultProps.delay},duration:{default:()=>H.defaultProps.duration},getReferenceClientRect:{default:()=>H.defaultProps.getReferenceClientRect},hideOnClick:{type:[Boolean,String],default:()=>H.defaultProps.hideOnClick},ignoreAttributes:{type:Boolean,default:()=>H.defaultProps.ignoreAttributes},interactive:{type:Boolean,default:()=>H.defaultProps.interactive},interactiveBorder:{default:()=>H.defaultProps.interactiveBorder},interactiveDebounce:{default:()=>H.defaultProps.interactiveDebounce},moveTransition:{default:()=>H.defaultProps.moveTransition},offset:{default:()=>H.defaultProps.offset},onAfterUpdate:{default:()=>H.defaultProps.onAfterUpdate},onBeforeUpdate:{default:()=>H.defaultProps.onBeforeUpdate},onCreate:{default:()=>H.defaultProps.onCreate},onDestroy:{default:()=>H.defaultProps.onDestroy},onHidden:{default:()=>H.defaultProps.onHidden},onHide:{default:()=>H.defaultProps.onHide},onMount:{default:()=>H.defaultProps.onMount},onShow:{default:()=>H.defaultProps.onShow},onShown:{default:()=>H.defaultProps.onShown},onTrigger:{default:()=>H.defaultProps.onTrigger},onUntrigger:{default:()=>H.defaultProps.onUntrigger},onClickOutside:{default:()=>H.defaultProps.onClickOutside},placement:{default:()=>H.defaultProps.placement},plugins:{default:()=>H.defaultProps.plugins},popperOptions:{default:()=>H.defaultProps.popperOptions},render:{default:()=>H.defaultProps.render},showOnCreate:{type:Boolean,default:()=>H.defaultProps.showOnCreate},touch:{type:[Boolean,String,Array],default:()=>H.defaultProps.touch},trigger:{default:()=>H.defaultProps.trigger},triggerTarget:{default:()=>H.defaultProps.triggerTarget},animateFill:{type:Boolean,default:()=>H.defaultProps.animateFill},followCursor:{type:[Boolean,String],default:()=>H.defaultProps.followCursor},inlinePositioning:{type:Boolean,default:()=>H.defaultProps.inlinePositioning},sticky:{type:[Boolean,String],default:()=>H.defaultProps.sticky},allowHTML:{type:Boolean,default:()=>H.defaultProps.allowHTML},animation:{default:()=>H.defaultProps.animation},arrow:{default:()=>H.defaultProps.arrow},content:{default:()=>H.defaultProps.content},inertia:{default:()=>H.defaultProps.inertia},maxWidth:{default:()=>H.defaultProps.maxWidth},role:{default:()=>H.defaultProps.role},theme:{default:()=>H.defaultProps.theme},zIndex:{default:()=>H.defaultProps.zIndex}},emits:["state"],setup(e,{slots:t,emit:n,expose:r}){const o=U(),i=U(),u=U(),c=U(!1),d=()=>{let S={...e};for(const $ of["to","tag","contentTag","contentClass"])S.hasOwnProperty($)&&delete S[$];return S};let h=()=>h3(o);e.to&&(typeof Element<"u"&&e.to instanceof Element?h=()=>e.to:e.to==="parent"?h=()=>{let S=o.value;return S||(S=o.value=i.value.parentElement),S}:(typeof e.to=="string"||e.to instanceof String)&&(h=()=>document.querySelector(e.to)));const v=xi(h,d());let b=t.content;!b&&e.to==="parent"&&(b=t.default),ze(()=>{c.value=!0,ra(()=>{b&&v.setContent(()=>u.value)})}),ke(v.state,()=>{n("state",x(v.state))},{immediate:!0,deep:!0}),ke(()=>e,()=>{v.setProps(d()),b&&v.setContent(()=>u.value)},{deep:!0});let M=Jo({elem:o,contentElem:u,mounted:c,...v});return r(M),()=>{const S=(typeof e.contentTag=="string",e.contentTag),$=b?mt(S,{ref:u,style:{display:c.value?"inherit":"none"},class:e.contentClass},b(M)):null;if(e.to==="parent"){const w=[];if(!o.value){const p=mt("span",{ref:i,"data-v-tippy":"",style:{display:"none"}});w.push(p)}return $&&w.push($),w}const C=t.default?t.default(M):[];if(!e.tag){const w=mt(C[0],{ref:o,"data-v-tippy":""});return $?[w,$]:w}const y=(typeof e.tag=="string",e.tag);return mt(y,{ref:o,"data-v-tippy":""},$?[C,$]:C)}}}),v3=["a11y","allowHTML","arrow","flip","flipOnUpdate","hideOnClick","ignoreAttributes","inertia","interactive","lazy","multiple","showOnInit","touch","touchHold"];let Mr={};Object.keys(H.defaultProps).forEach(e=>{v3.includes(e)?Mr[e]={type:Boolean,default:function(){return H.defaultProps[e]}}:Mr[e]={default:function(){return H.defaultProps[e]}}});const m3=B({props:Mr,setup(e){const t=U([]),{singleton:n}=d3(t,e);return{instances:t,singleton:n}},mounted(){var e;const n=this.$el.parentElement.querySelectorAll("[data-v-tippy]");this.instances=Array.from(n).map(r=>r._tippy).filter(Boolean),(e=this.singleton)===null||e===void 0||e.setInstances(this.instances)},render(){let e=this.$slots.default?this.$slots.default():[];return mt(()=>e)}}),g3={mounted(e,t,n){const r=typeof t.value=="string"?{content:t.value}:t.value||{},o=Object.keys(t.modifiers||{}),i=o.find(c=>c!=="arrow"),u=o.findIndex(c=>c==="arrow")!==-1;i&&(r.placement=r.placement||i),u&&(r.arrow=r.arrow!==void 0?r.arrow:!0),n.props&&n.props.onTippyShow&&(r.onShow=function(...c){var d;return(d=n.props)===null||d===void 0?void 0:d.onTippyShow(...c)}),n.props&&n.props.onTippyShown&&(r.onShown=function(...c){var d;return(d=n.props)===null||d===void 0?void 0:d.onTippyShown(...c)}),n.props&&n.props.onTippyHidden&&(r.onHidden=function(...c){var d;return(d=n.props)===null||d===void 0?void 0:d.onTippyHidden(...c)}),n.props&&n.props.onTippyHide&&(r.onHide=function(...c){var d;return(d=n.props)===null||d===void 0?void 0:d.onTippyHide(...c)}),n.props&&n.props.onTippyMount&&(r.onMount=function(...c){var d;return(d=n.props)===null||d===void 0?void 0:d.onTippyMount(...c)}),e.getAttribute("title")&&!r.content&&(r.content=e.getAttribute("title"),e.removeAttribute("title")),e.getAttribute("content")&&!r.content&&(r.content=e.getAttribute("content")),xi(e,r)},unmounted(e){e.$tippy?e.$tippy.destroy():e._tippy&&e._tippy.destroy()},updated(e,t){const n=typeof t.value=="string"?{content:t.value}:t.value||{};e.getAttribute("title")&&!n.content&&(n.content=e.getAttribute("title"),e.removeAttribute("title")),e.getAttribute("content")&&!n.content&&(n.content=e.getAttribute("content")),e.$tippy?e.$tippy.setProps(n||{}):e._tippy&&e._tippy.setProps(n||{})}},w3={install(e,t={}){H.setDefaultProps(t.defaultProps||{}),e.directive(t.directive||"tippy",g3),e.component(t.component||"tippy",p3),e.component(t.componentSingleton||"tippy-singleton",m3)}},k3=H.setDefaultProps;k3({ignoreAttributes:!0,plugins:[u3,l3,i3,n3]});const _3={props:["content"]},x3={class:"tippy-trigger"};function b3(e,t,n,r,o,i){const u=Je("tippy");return a(),j(u,{content:n.content},{default:L(()=>[l("span",x3,[I(e.$slots,"default")])]),_:3},8,["content"])}const y3=D(_3,[["render",b3]]);function M3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.26 10.147a60.438 60.438 0 0 0-.491 6.347A48.62 48.62 0 0 1 12 20.904a48.62 48.62 0 0 1 8.232-4.41 60.46 60.46 0 0 0-.491-6.347m-15.482 0a50.636 50.636 0 0 0-2.658-.813A59.906 59.906 0 0 1 12 3.493a59.903 59.903 0 0 1 10.399 5.84c-.896.248-1.783.52-2.658.814m-15.482 0A50.717 50.717 0 0 1 12 13.489a50.702 50.702 0 0 1 7.74-3.342M6.75 15a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm0 0v-3.675A55.378 55.378 0 0 1 12 8.443m-7.007 11.55A5.981 5.981 0 0 0 6.75 15.75v-1.5"})])}function A3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.5 6h9.75M10.5 6a1.5 1.5 0 1 1-3 0m3 0a1.5 1.5 0 1 0-3 0M3.75 6H7.5m3 12h9.75m-9.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-3.75 0H7.5m9-6h3.75m-3.75 0a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m-9.75 0h9.75"})])}function C3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 13.5V3.75m0 9.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 3.75V16.5m12-3V3.75m0 9.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 3.75V16.5m-6-9V3.75m0 3.75a1.5 1.5 0 0 1 0 3m0-3a1.5 1.5 0 0 0 0 3m0 9.75V10.5"})])}function I3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m20.25 7.5-.625 10.632a2.25 2.25 0 0 1-2.247 2.118H6.622a2.25 2.25 0 0 1-2.247-2.118L3.75 7.5m8.25 3v6.75m0 0-3-3m3 3 3-3M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z"})])}function $3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m20.25 7.5-.625 10.632a2.25 2.25 0 0 1-2.247 2.118H6.622a2.25 2.25 0 0 1-2.247-2.118L3.75 7.5m6 4.125 2.25 2.25m0 0 2.25 2.25M12 13.875l2.25-2.25M12 13.875l-2.25 2.25M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z"})])}function S3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m20.25 7.5-.625 10.632a2.25 2.25 0 0 1-2.247 2.118H6.622a2.25 2.25 0 0 1-2.247-2.118L3.75 7.5M10 11.25h4M3.375 7.5h17.25c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z"})])}function E3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m9 12.75 3 3m0 0 3-3m-3 3v-7.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function L3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m19.5 4.5-15 15m0 0h11.25m-11.25 0V8.25"})])}function T3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.5 7.5h-.75A2.25 2.25 0 0 0 4.5 9.75v7.5a2.25 2.25 0 0 0 2.25 2.25h7.5a2.25 2.25 0 0 0 2.25-2.25v-7.5a2.25 2.25 0 0 0-2.25-2.25h-.75m-6 3.75 3 3m0 0 3-3m-3 3V1.5m6 9h.75a2.25 2.25 0 0 1 2.25 2.25v7.5a2.25 2.25 0 0 1-2.25 2.25h-7.5a2.25 2.25 0 0 1-2.25-2.25v-.75"})])}function P3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 8.25H7.5a2.25 2.25 0 0 0-2.25 2.25v9a2.25 2.25 0 0 0 2.25 2.25h9a2.25 2.25 0 0 0 2.25-2.25v-9a2.25 2.25 0 0 0-2.25-2.25H15M9 12l3 3m0 0 3-3m-3 3V2.25"})])}function O3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 4.5 15 15m0 0V8.25m0 11.25H8.25"})])}function B3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5M16.5 12 12 16.5m0 0L7.5 12m4.5 4.5V3"})])}function V3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 13.5 12 21m0 0-7.5-7.5M12 21V3"})])}function j3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m11.25 9-3 3m0 0 3 3m-3-3h7.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function H3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15M12 9l-3 3m0 0 3 3m-3-3h12.75"})])}function N3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15M12 9l-3 3m0 0 3 3m-3-3h12.75"})])}function D3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 9V5.25A2.25 2.25 0 0 1 10.5 3h6a2.25 2.25 0 0 1 2.25 2.25v13.5A2.25 2.25 0 0 1 16.5 21h-6a2.25 2.25 0 0 1-2.25-2.25V15m-3 0-3-3m0 0 3-3m-3 3H15"})])}function R3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.5 19.5 3 12m0 0 7.5-7.5M3 12h18"})])}function F3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 17.25 12 21m0 0-3.75-3.75M12 21V3"})])}function Z3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6.75 15.75 3 12m0 0 3.75-3.75M3 12h18"})])}function U3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M17.25 8.25 21 12m0 0-3.75 3.75M21 12H3"})])}function z3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 6.75 12 3m0 0 3.75 3.75M12 3v18"})])}function W3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 12c0-1.232-.046-2.453-.138-3.662a4.006 4.006 0 0 0-3.7-3.7 48.678 48.678 0 0 0-7.324 0 4.006 4.006 0 0 0-3.7 3.7c-.017.22-.032.441-.046.662M19.5 12l3-3m-3 3-3-3m-12 3c0 1.232.046 2.453.138 3.662a4.006 4.006 0 0 0 3.7 3.7 48.656 48.656 0 0 0 7.324 0 4.006 4.006 0 0 0 3.7-3.7c.017-.22.032-.441.046-.662M4.5 12l3 3m-3-3-3 3"})])}function G3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0 3.181 3.183a8.25 8.25 0 0 0 13.803-3.7M4.031 9.865a8.25 8.25 0 0 1 13.803-3.7l3.181 3.182m0-4.991v4.99"})])}function Y3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m12.75 15 3-3m0 0-3-3m3 3h-7.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function q3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 9V5.25A2.25 2.25 0 0 1 10.5 3h6a2.25 2.25 0 0 1 2.25 2.25v13.5A2.25 2.25 0 0 1 16.5 21h-6a2.25 2.25 0 0 1-2.25-2.25V15M12 9l3 3m0 0-3 3m3-3H2.25"})])}function X3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15m3 0 3-3m0 0-3-3m3 3H9"})])}function K3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 9V5.25A2.25 2.25 0 0 0 13.5 3h-6a2.25 2.25 0 0 0-2.25 2.25v13.5A2.25 2.25 0 0 0 7.5 21h6a2.25 2.25 0 0 0 2.25-2.25V15m3 0 3-3m0 0-3-3m3 3H9"})])}function Q3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.5 4.5 21 12m0 0-7.5 7.5M21 12H3"})])}function J3(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4.5v15m0 0 6.75-6.75M12 19.5l-6.75-6.75"})])}function ef(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 12h-15m0 0 6.75 6.75M4.5 12l6.75-6.75"})])}function tf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.5 12h15m0 0-6.75-6.75M19.5 12l-6.75 6.75"})])}function nf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 19.5v-15m0 0-6.75 6.75M12 4.5l6.75 6.75"})])}function rf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.5 6H5.25A2.25 2.25 0 0 0 3 8.25v10.5A2.25 2.25 0 0 0 5.25 21h10.5A2.25 2.25 0 0 0 18 18.75V10.5m-10.5 6L21 3m0 0h-5.25M21 3v5.25"})])}function of(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 6 9 12.75l4.286-4.286a11.948 11.948 0 0 1 4.306 6.43l.776 2.898m0 0 3.182-5.511m-3.182 5.51-5.511-3.181"})])}function af(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 18 9 11.25l4.306 4.306a11.95 11.95 0 0 1 5.814-5.518l2.74-1.22m0 0-5.94-2.281m5.94 2.28-2.28 5.941"})])}function sf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m7.49 12-3.75 3.75m0 0 3.75 3.75m-3.75-3.75h16.5V4.499"})])}function lf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m16.49 12 3.75 3.75m0 0-3.75 3.75m3.75-3.75H3.74V4.499"})])}function cf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m11.99 16.5-3.75 3.75m0 0L4.49 16.5m3.75 3.75V3.75h11.25"})])}function uf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M11.99 7.5 8.24 3.75m0 0L4.49 7.5m3.75-3.75v16.499h11.25"})])}function df(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m11.99 16.5 3.75 3.75m0 0 3.75-3.75m-3.75 3.75V3.75H4.49"})])}function ff(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m11.99 7.5 3.75-3.75m0 0 3.75 3.75m-3.75-3.75v16.499H4.49"})])}function hf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.49 12 3.74 8.248m0 0 3.75-3.75m-3.75 3.75h16.5V19.5"})])}function pf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m16.49 12 3.75-3.751m0 0-3.75-3.75m3.75 3.75H3.74V19.5"})])}function vf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m15 11.25-3-3m0 0-3 3m3-3v7.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function mf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m19.5 19.5-15-15m0 0v11.25m0-11.25h11.25"})])}function gf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.5 7.5h-.75A2.25 2.25 0 0 0 4.5 9.75v7.5a2.25 2.25 0 0 0 2.25 2.25h7.5a2.25 2.25 0 0 0 2.25-2.25v-7.5a2.25 2.25 0 0 0-2.25-2.25h-.75m0-3-3-3m0 0-3 3m3-3v11.25m6-2.25h.75a2.25 2.25 0 0 1 2.25 2.25v7.5a2.25 2.25 0 0 1-2.25 2.25h-7.5a2.25 2.25 0 0 1-2.25-2.25v-.75"})])}function wf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 8.25H7.5a2.25 2.25 0 0 0-2.25 2.25v9a2.25 2.25 0 0 0 2.25 2.25h9a2.25 2.25 0 0 0 2.25-2.25v-9a2.25 2.25 0 0 0-2.25-2.25H15m0-3-3-3m0 0-3 3m3-3V15"})])}function kf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 19.5 15-15m0 0H8.25m11.25 0v11.25"})])}function _f(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3 16.5v2.25A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75V16.5m-13.5-9L12 3m0 0 4.5 4.5M12 3v13.5"})])}function xf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.5 10.5 12 3m0 0 7.5 7.5M12 3v18"})])}function bf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m15 15-6 6m0 0-6-6m6 6V9a6 6 0 0 1 12 0v3"})])}function yf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 15 3 9m0 0 6-6M3 9h12a6 6 0 0 1 0 12h-3"})])}function Mf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m15 15 6-6m0 0-6-6m6 6H9a6 6 0 0 0 0 12h3"})])}function Af(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m9 9 6-6m0 0 6 6m-6-6v12a6 6 0 0 1-12 0v-3"})])}function Cf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 9V4.5M9 9H4.5M9 9 3.75 3.75M9 15v4.5M9 15H4.5M9 15l-5.25 5.25M15 9h4.5M15 9V4.5M15 9l5.25-5.25M15 15h4.5M15 15v4.5m0-4.5 5.25 5.25"})])}function If(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 3.75v4.5m0-4.5h4.5m-4.5 0L9 9M3.75 20.25v-4.5m0 4.5h4.5m-4.5 0L9 15M20.25 3.75h-4.5m4.5 0v4.5m0-4.5L15 9m5.25 11.25h-4.5m4.5 0v-4.5m0 4.5L15 15"})])}function $f(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.5 21 3 16.5m0 0L7.5 12M3 16.5h13.5m0-13.5L21 7.5m0 0L16.5 12M21 7.5H7.5"})])}function Sf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3 7.5 7.5 3m0 0L12 7.5M7.5 3v13.5m13.5 0L16.5 21m0 0L12 16.5m4.5 4.5V7.5"})])}function Ef(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.5 12a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0Zm0 0c0 1.657 1.007 3 2.25 3S21 13.657 21 12a9 9 0 1 0-2.636 6.364M16.5 12V8.25"})])}function Lf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9.75 14.25 12m0 0 2.25 2.25M14.25 12l2.25-2.25M14.25 12 12 14.25m-2.58 4.92-6.374-6.375a1.125 1.125 0 0 1 0-1.59L9.42 4.83c.21-.211.497-.33.795-.33H19.5a2.25 2.25 0 0 1 2.25 2.25v10.5a2.25 2.25 0 0 1-2.25 2.25h-9.284c-.298 0-.585-.119-.795-.33Z"})])}function Tf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 16.811c0 .864-.933 1.406-1.683.977l-7.108-4.061a1.125 1.125 0 0 1 0-1.954l7.108-4.061A1.125 1.125 0 0 1 21 8.689v8.122ZM11.25 16.811c0 .864-.933 1.406-1.683.977l-7.108-4.061a1.125 1.125 0 0 1 0-1.954l7.108-4.061a1.125 1.125 0 0 1 1.683.977v8.122Z"})])}function Pf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 18.75a60.07 60.07 0 0 1 15.797 2.101c.727.198 1.453-.342 1.453-1.096V18.75M3.75 4.5v.75A.75.75 0 0 1 3 6h-.75m0 0v-.375c0-.621.504-1.125 1.125-1.125H20.25M2.25 6v9m18-10.5v.75c0 .414.336.75.75.75h.75m-1.5-1.5h.375c.621 0 1.125.504 1.125 1.125v9.75c0 .621-.504 1.125-1.125 1.125h-.375m1.5-1.5H21a.75.75 0 0 0-.75.75v.75m0 0H3.75m0 0h-.375a1.125 1.125 0 0 1-1.125-1.125V15m1.5 1.5v-.75A.75.75 0 0 0 3 15h-.75M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm3 0h.008v.008H18V10.5Zm-12 0h.008v.008H6V10.5Z"})])}function Of(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 9h16.5m-16.5 6.75h16.5"})])}function Bf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25H12"})])}function Vf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 6.75h16.5M3.75 12h16.5M12 17.25h8.25"})])}function jf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 6.75h16.5M3.75 12H12m-8.25 5.25h16.5"})])}function Hf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"})])}function Nf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 5.25h16.5m-16.5 4.5h16.5m-16.5 4.5h16.5m-16.5 4.5h16.5"})])}function Df(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3 4.5h14.25M3 9h9.75M3 13.5h9.75m4.5-4.5v12m0 0-3.75-3.75M17.25 21 21 17.25"})])}function Rf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3 4.5h14.25M3 9h9.75M3 13.5h5.25m5.25-.75L17.25 9m0 0L21 12.75M17.25 9v12"})])}function Ff(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 10.5h.375c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125H21M3.75 18h15A2.25 2.25 0 0 0 21 15.75v-6a2.25 2.25 0 0 0-2.25-2.25h-15A2.25 2.25 0 0 0 1.5 9.75v6A2.25 2.25 0 0 0 3.75 18Z"})])}function Zf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 10.5h.375c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125H21M4.5 10.5H18V15H4.5v-4.5ZM3.75 18h15A2.25 2.25 0 0 0 21 15.75v-6a2.25 2.25 0 0 0-2.25-2.25h-15A2.25 2.25 0 0 0 1.5 9.75v6A2.25 2.25 0 0 0 3.75 18Z"})])}function Uf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 10.5h.375c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125H21M4.5 10.5h6.75V15H4.5v-4.5ZM3.75 18h15A2.25 2.25 0 0 0 21 15.75v-6a2.25 2.25 0 0 0-2.25-2.25h-15A2.25 2.25 0 0 0 1.5 9.75v6A2.25 2.25 0 0 0 3.75 18Z"})])}function zf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.75 3.104v5.714a2.25 2.25 0 0 1-.659 1.591L5 14.5M9.75 3.104c-.251.023-.501.05-.75.082m.75-.082a24.301 24.301 0 0 1 4.5 0m0 0v5.714c0 .597.237 1.17.659 1.591L19.8 15.3M14.25 3.104c.251.023.501.05.75.082M19.8 15.3l-1.57.393A9.065 9.065 0 0 1 12 15a9.065 9.065 0 0 0-6.23-.693L5 14.5m14.8.8 1.402 1.402c1.232 1.232.65 3.318-1.067 3.611A48.309 48.309 0 0 1 12 21c-2.773 0-5.491-.235-8.135-.687-1.718-.293-2.3-2.379-1.067-3.61L5 14.5"})])}function Wf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0M3.124 7.5A8.969 8.969 0 0 1 5.292 3m13.416 0a8.969 8.969 0 0 1 2.168 4.5"})])}function Gf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.143 17.082a24.248 24.248 0 0 0 3.844.148m-3.844-.148a23.856 23.856 0 0 1-5.455-1.31 8.964 8.964 0 0 0 2.3-5.542m3.155 6.852a3 3 0 0 0 5.667 1.97m1.965-2.277L21 21m-4.225-4.225a23.81 23.81 0 0 0 3.536-1.003A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6.53 6.53m10.245 10.245L6.53 6.53M3 3l3.53 3.53"})])}function Yf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0M10.5 8.25h3l-3 4.5h3"})])}function qf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.857 17.082a23.848 23.848 0 0 0 5.454-1.31A8.967 8.967 0 0 1 18 9.75V9A6 6 0 0 0 6 9v.75a8.967 8.967 0 0 1-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 0 1-5.714 0m5.714 0a3 3 0 1 1-5.714 0"})])}function Xf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linejoin":"round",d:"M6.75 3.744h-.753v8.25h7.125a4.125 4.125 0 0 0 0-8.25H6.75Zm0 0v.38m0 16.122h6.747a4.5 4.5 0 0 0 0-9.001h-7.5v9h.753Zm0 0v-.37m0-15.751h6a3.75 3.75 0 1 1 0 7.5h-6m0-7.5v7.5m0 0v8.25m0-8.25h6.375a4.125 4.125 0 0 1 0 8.25H6.75m.747-15.38h4.875a3.375 3.375 0 0 1 0 6.75H7.497v-6.75Zm0 7.5h5.25a3.75 3.75 0 0 1 0 7.5h-5.25v-7.5Z"})])}function Kf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M11.412 15.655 9.75 21.75l3.745-4.012M9.257 13.5H3.75l2.659-2.849m2.048-2.194L14.25 2.25 12 10.5h8.25l-4.707 5.043M8.457 8.457 3 3m5.457 5.457 7.086 7.086m0 0L21 21"})])}function Qf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m3.75 13.5 10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75Z"})])}function Jf(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 6.042A8.967 8.967 0 0 0 6 3.75c-1.052 0-2.062.18-3 .512v14.25A8.987 8.987 0 0 1 6 18c2.305 0 4.408.867 6 2.292m0-14.25a8.966 8.966 0 0 1 6-2.292c1.052 0 2.062.18 3 .512v14.25A8.987 8.987 0 0 0 18 18a8.967 8.967 0 0 0-6 2.292m0-14.25v14.25"})])}function eh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m3 3 1.664 1.664M21 21l-1.5-1.5m-5.485-1.242L12 17.25 4.5 21V8.742m.164-4.078a2.15 2.15 0 0 1 1.743-1.342 48.507 48.507 0 0 1 11.186 0c1.1.128 1.907 1.077 1.907 2.185V19.5M4.664 4.664 19.5 19.5"})])}function th(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.5 3.75V16.5L12 14.25 7.5 16.5V3.75m9 0H18A2.25 2.25 0 0 1 20.25 6v12A2.25 2.25 0 0 1 18 20.25H6A2.25 2.25 0 0 1 3.75 18V6A2.25 2.25 0 0 1 6 3.75h1.5m9 0h-9"})])}function nh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M17.593 3.322c1.1.128 1.907 1.077 1.907 2.185V21L12 17.25 4.5 21V5.507c0-1.108.806-2.057 1.907-2.185a48.507 48.507 0 0 1 11.186 0Z"})])}function rh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M20.25 14.15v4.25c0 1.094-.787 2.036-1.872 2.18-2.087.277-4.216.42-6.378.42s-4.291-.143-6.378-.42c-1.085-.144-1.872-1.086-1.872-2.18v-4.25m16.5 0a2.18 2.18 0 0 0 .75-1.661V8.706c0-1.081-.768-2.015-1.837-2.175a48.114 48.114 0 0 0-3.413-.387m4.5 8.006c-.194.165-.42.295-.673.38A23.978 23.978 0 0 1 12 15.75c-2.648 0-5.195-.429-7.577-1.22a2.016 2.016 0 0 1-.673-.38m0 0A2.18 2.18 0 0 1 3 12.489V8.706c0-1.081.768-2.015 1.837-2.175a48.111 48.111 0 0 1 3.413-.387m7.5 0V5.25A2.25 2.25 0 0 0 13.5 3h-3a2.25 2.25 0 0 0-2.25 2.25v.894m7.5 0a48.667 48.667 0 0 0-7.5 0M12 12.75h.008v.008H12v-.008Z"})])}function oh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 12.75c1.148 0 2.278.08 3.383.237 1.037.146 1.866.966 1.866 2.013 0 3.728-2.35 6.75-5.25 6.75S6.75 18.728 6.75 15c0-1.046.83-1.867 1.866-2.013A24.204 24.204 0 0 1 12 12.75Zm0 0c2.883 0 5.647.508 8.207 1.44a23.91 23.91 0 0 1-1.152 6.06M12 12.75c-2.883 0-5.647.508-8.208 1.44.125 2.104.52 4.136 1.153 6.06M12 12.75a2.25 2.25 0 0 0 2.248-2.354M12 12.75a2.25 2.25 0 0 1-2.248-2.354M12 8.25c.995 0 1.971-.08 2.922-.236.403-.066.74-.358.795-.762a3.778 3.778 0 0 0-.399-2.25M12 8.25c-.995 0-1.97-.08-2.922-.236-.402-.066-.74-.358-.795-.762a3.734 3.734 0 0 1 .4-2.253M12 8.25a2.25 2.25 0 0 0-2.248 2.146M12 8.25a2.25 2.25 0 0 1 2.248 2.146M8.683 5a6.032 6.032 0 0 1-1.155-1.002c.07-.63.27-1.222.574-1.747m.581 2.749A3.75 3.75 0 0 1 15.318 5m0 0c.427-.283.815-.62 1.155-.999a4.471 4.471 0 0 0-.575-1.752M4.921 6a24.048 24.048 0 0 0-.392 3.314c1.668.546 3.416.914 5.223 1.082M19.08 6c.205 1.08.337 2.187.392 3.314a23.882 23.882 0 0 1-5.223 1.082"})])}function ah(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 21v-8.25M15.75 21v-8.25M8.25 21v-8.25M3 9l9-6 9 6m-1.5 12V10.332A48.36 48.36 0 0 0 12 9.75c-2.551 0-5.056.2-7.5.582V21M3 21h18M12 6.75h.008v.008H12V6.75Z"})])}function ih(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 21h19.5m-18-18v18m10.5-18v18m6-13.5V21M6.75 6.75h.75m-.75 3h.75m-.75 3h.75m3-6h.75m-.75 3h.75m-.75 3h.75M6.75 21v-3.375c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21M3 3h12m-.75 4.5H21m-3.75 3.75h.008v.008h-.008v-.008Zm0 3h.008v.008h-.008v-.008Zm0 3h.008v.008h-.008v-.008Z"})])}function sh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 21h16.5M4.5 3h15M5.25 3v18m13.5-18v18M9 6.75h1.5m-1.5 3h1.5m-1.5 3h1.5m3-6H15m-1.5 3H15m-1.5 3H15M9 21v-3.375c0-.621.504-1.125 1.125-1.125h3.75c.621 0 1.125.504 1.125 1.125V21"})])}function lh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.5 21v-7.5a.75.75 0 0 1 .75-.75h3a.75.75 0 0 1 .75.75V21m-4.5 0H2.36m11.14 0H18m0 0h3.64m-1.39 0V9.349M3.75 21V9.349m0 0a3.001 3.001 0 0 0 3.75-.615A2.993 2.993 0 0 0 9.75 9.75c.896 0 1.7-.393 2.25-1.016a2.993 2.993 0 0 0 2.25 1.016c.896 0 1.7-.393 2.25-1.015a3.001 3.001 0 0 0 3.75.614m-16.5 0a3.004 3.004 0 0 1-.621-4.72l1.189-1.19A1.5 1.5 0 0 1 5.378 3h13.243a1.5 1.5 0 0 1 1.06.44l1.19 1.189a3 3 0 0 1-.621 4.72M6.75 18h3.75a.75.75 0 0 0 .75-.75V13.5a.75.75 0 0 0-.75-.75H6.75a.75.75 0 0 0-.75.75v3.75c0 .414.336.75.75.75Z"})])}function ch(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 8.25v-1.5m0 1.5c-1.355 0-2.697.056-4.024.166C6.845 8.51 6 9.473 6 10.608v2.513m6-4.871c1.355 0 2.697.056 4.024.166C17.155 8.51 18 9.473 18 10.608v2.513M15 8.25v-1.5m-6 1.5v-1.5m12 9.75-1.5.75a3.354 3.354 0 0 1-3 0 3.354 3.354 0 0 0-3 0 3.354 3.354 0 0 1-3 0 3.354 3.354 0 0 0-3 0 3.354 3.354 0 0 1-3 0L3 16.5m15-3.379a48.474 48.474 0 0 0-6-.371c-2.032 0-4.034.126-6 .371m12 0c.39.049.777.102 1.163.16 1.07.16 1.837 1.094 1.837 2.175v5.169c0 .621-.504 1.125-1.125 1.125H4.125A1.125 1.125 0 0 1 3 20.625v-5.17c0-1.08.768-2.014 1.837-2.174A47.78 47.78 0 0 1 6 13.12M12.265 3.11a.375.375 0 1 1-.53 0L12 2.845l.265.265Zm-3 0a.375.375 0 1 1-.53 0L9 2.845l.265.265Zm6 0a.375.375 0 1 1-.53 0L15 2.845l.265.265Z"})])}function uh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 15.75V18m-7.5-6.75h.008v.008H8.25v-.008Zm0 2.25h.008v.008H8.25V13.5Zm0 2.25h.008v.008H8.25v-.008Zm0 2.25h.008v.008H8.25V18Zm2.498-6.75h.007v.008h-.007v-.008Zm0 2.25h.007v.008h-.007V13.5Zm0 2.25h.007v.008h-.007v-.008Zm0 2.25h.007v.008h-.007V18Zm2.504-6.75h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V13.5Zm0 2.25h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V18Zm2.498-6.75h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V13.5ZM8.25 6h7.5v2.25h-7.5V6ZM12 2.25c-1.892 0-3.758.11-5.593.322C5.307 2.7 4.5 3.65 4.5 4.757V19.5a2.25 2.25 0 0 0 2.25 2.25h10.5a2.25 2.25 0 0 0 2.25-2.25V4.757c0-1.108-.806-2.057-1.907-2.185A48.507 48.507 0 0 0 12 2.25Z"})])}function dh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6.75 2.994v2.25m10.5-2.25v2.25m-14.252 13.5V7.491a2.25 2.25 0 0 1 2.25-2.25h13.5a2.25 2.25 0 0 1 2.25 2.25v11.251m-18 0a2.25 2.25 0 0 0 2.25 2.25h13.5a2.25 2.25 0 0 0 2.25-2.25m-18 0v-7.5a2.25 2.25 0 0 1 2.25-2.25h13.5a2.25 2.25 0 0 1 2.25 2.25v7.5m-6.75-6h2.25m-9 2.25h4.5m.002-2.25h.005v.006H12v-.006Zm-.001 4.5h.006v.006h-.006v-.005Zm-2.25.001h.005v.006H9.75v-.006Zm-2.25 0h.005v.005h-.006v-.005Zm6.75-2.247h.005v.005h-.005v-.005Zm0 2.247h.006v.006h-.006v-.006Zm2.25-2.248h.006V15H16.5v-.005Z"})])}function fh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5m-9-6h.008v.008H12v-.008ZM12 15h.008v.008H12V15Zm0 2.25h.008v.008H12v-.008ZM9.75 15h.008v.008H9.75V15Zm0 2.25h.008v.008H9.75v-.008ZM7.5 15h.008v.008H7.5V15Zm0 2.25h.008v.008H7.5v-.008Zm6.75-4.5h.008v.008h-.008v-.008Zm0 2.25h.008v.008h-.008V15Zm0 2.25h.008v.008h-.008v-.008Zm2.25-4.5h.008v.008H16.5v-.008Zm0 2.25h.008v.008H16.5V15Z"})])}function hh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 7.5v11.25m-18 0A2.25 2.25 0 0 0 5.25 21h13.5A2.25 2.25 0 0 0 21 18.75m-18 0v-7.5A2.25 2.25 0 0 1 5.25 9h13.5A2.25 2.25 0 0 1 21 11.25v7.5"})])}function ph(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6.827 6.175A2.31 2.31 0 0 1 5.186 7.23c-.38.054-.757.112-1.134.175C2.999 7.58 2.25 8.507 2.25 9.574V18a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9.574c0-1.067-.75-1.994-1.802-2.169a47.865 47.865 0 0 0-1.134-.175 2.31 2.31 0 0 1-1.64-1.055l-.822-1.316a2.192 2.192 0 0 0-1.736-1.039 48.774 48.774 0 0 0-5.232 0 2.192 2.192 0 0 0-1.736 1.039l-.821 1.316Z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.5 12.75a4.5 4.5 0 1 1-9 0 4.5 4.5 0 0 1 9 0ZM18.75 10.5h.008v.008h-.008V10.5Z"})])}function vh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.5 14.25v2.25m3-4.5v4.5m3-6.75v6.75m3-9v9M6 20.25h12A2.25 2.25 0 0 0 20.25 18V6A2.25 2.25 0 0 0 18 3.75H6A2.25 2.25 0 0 0 3.75 6v12A2.25 2.25 0 0 0 6 20.25Z"})])}function mh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z"})])}function gh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.5 6a7.5 7.5 0 1 0 7.5 7.5h-7.5V6Z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.5 10.5H21A7.5 7.5 0 0 0 13.5 3v7.5Z"})])}function wh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.5 8.25h9m-9 3H12m-9.75 1.51c0 1.6 1.123 2.994 2.707 3.227 1.129.166 2.27.293 3.423.379.35.026.67.21.865.501L12 21l2.755-4.133a1.14 1.14 0 0 1 .865-.501 48.172 48.172 0 0 0 3.423-.379c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0 0 12 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018Z"})])}function kh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 12.76c0 1.6 1.123 2.994 2.707 3.227 1.068.157 2.148.279 3.238.364.466.037.893.281 1.153.671L12 21l2.652-3.978c.26-.39.687-.634 1.153-.67 1.09-.086 2.17-.208 3.238-.365 1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0 0 12 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018Z"})])}function _h(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.625 9.75a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H8.25m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H12m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0h-.375m-13.5 3.01c0 1.6 1.123 2.994 2.707 3.227 1.087.16 2.185.283 3.293.369V21l4.184-4.183a1.14 1.14 0 0 1 .778-.332 48.294 48.294 0 0 0 5.83-.498c1.585-.233 2.708-1.626 2.708-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0 0 12 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018Z"})])}function xh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M20.25 8.511c.884.284 1.5 1.128 1.5 2.097v4.286c0 1.136-.847 2.1-1.98 2.193-.34.027-.68.052-1.02.072v3.091l-3-3c-1.354 0-2.694-.055-4.02-.163a2.115 2.115 0 0 1-.825-.242m9.345-8.334a2.126 2.126 0 0 0-.476-.095 48.64 48.64 0 0 0-8.048 0c-1.131.094-1.976 1.057-1.976 2.192v4.286c0 .837.46 1.58 1.155 1.951m9.345-8.334V6.637c0-1.621-1.152-3.026-2.76-3.235A48.455 48.455 0 0 0 11.25 3c-2.115 0-4.198.137-6.24.402-1.608.209-2.76 1.614-2.76 3.235v6.226c0 1.621 1.152 3.026 2.76 3.235.577.075 1.157.14 1.74.194V21l4.155-4.155"})])}function bh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 12.76c0 1.6 1.123 2.994 2.707 3.227 1.087.16 2.185.283 3.293.369V21l4.076-4.076a1.526 1.526 0 0 1 1.037-.443 48.282 48.282 0 0 0 5.68-.494c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0 0 12 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018Z"})])}function yh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.625 12a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H8.25m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H12m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0h-.375M21 12c0 4.556-4.03 8.25-9 8.25a9.764 9.764 0 0 1-2.555-.337A5.972 5.972 0 0 1 5.41 20.97a5.969 5.969 0 0 1-.474-.065 4.48 4.48 0 0 0 .978-2.025c.09-.457-.133-.901-.467-1.226C3.93 16.178 3 14.189 3 12c0-4.556 4.03-8.25 9-8.25s9 3.694 9 8.25Z"})])}function Mh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 20.25c4.97 0 9-3.694 9-8.25s-4.03-8.25-9-8.25S3 7.444 3 12c0 2.104.859 4.023 2.273 5.48.432.447.74 1.04.586 1.641a4.483 4.483 0 0 1-.923 1.785A5.969 5.969 0 0 0 6 21c1.282 0 2.47-.402 3.445-1.087.81.22 1.668.337 2.555.337Z"})])}function Ah(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 12.75 11.25 15 15 9.75M21 12c0 1.268-.63 2.39-1.593 3.068a3.745 3.745 0 0 1-1.043 3.296 3.745 3.745 0 0 1-3.296 1.043A3.745 3.745 0 0 1 12 21c-1.268 0-2.39-.63-3.068-1.593a3.746 3.746 0 0 1-3.296-1.043 3.745 3.745 0 0 1-1.043-3.296A3.745 3.745 0 0 1 3 12c0-1.268.63-2.39 1.593-3.068a3.745 3.745 0 0 1 1.043-3.296 3.746 3.746 0 0 1 3.296-1.043A3.746 3.746 0 0 1 12 3c1.268 0 2.39.63 3.068 1.593a3.746 3.746 0 0 1 3.296 1.043 3.746 3.746 0 0 1 1.043 3.296A3.745 3.745 0 0 1 21 12Z"})])}function Ch(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 12.75 11.25 15 15 9.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function Ih(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 12.75 6 6 9-13.5"})])}function $h(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 5.25 7.5 7.5 7.5-7.5m-15 6 7.5 7.5 7.5-7.5"})])}function Sh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m18.75 4.5-7.5 7.5 7.5 7.5m-6-15L5.25 12l7.5 7.5"})])}function Eh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m5.25 4.5 7.5 7.5-7.5 7.5m6-15 7.5 7.5-7.5 7.5"})])}function Lh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 18.75 7.5-7.5 7.5 7.5"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 12.75 7.5-7.5 7.5 7.5"})])}function Th(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m19.5 8.25-7.5 7.5-7.5-7.5"})])}function Ph(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 19.5 8.25 12l7.5-7.5"})])}function Oh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m8.25 4.5 7.5 7.5-7.5 7.5"})])}function Bh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 15 12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9"})])}function Vh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m4.5 15.75 7.5-7.5 7.5 7.5"})])}function jh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M20.25 6.375c0 2.278-3.694 4.125-8.25 4.125S3.75 8.653 3.75 6.375m16.5 0c0-2.278-3.694-4.125-8.25-4.125S3.75 4.097 3.75 6.375m16.5 0v11.25c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125V6.375m16.5 0v3.75m-16.5-3.75v3.75m16.5 0v3.75C20.25 16.153 16.556 18 12 18s-8.25-1.847-8.25-4.125v-3.75m16.5 0c0 2.278-3.694 4.125-8.25 4.125s-8.25-1.847-8.25-4.125"})])}function Hh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M11.35 3.836c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m8.9-4.414c.376.023.75.05 1.124.08 1.131.094 1.976 1.057 1.976 2.192V16.5A2.25 2.25 0 0 1 18 18.75h-2.25m-7.5-10.5H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V18.75m-7.5-10.5h6.375c.621 0 1.125.504 1.125 1.125v9.375m-8.25-3 1.5 1.5 3-3.75"})])}function Nh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 12h3.75M9 15h3.75M9 18h3.75m3 .75H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08m-5.801 0c-.065.21-.1.433-.1.664 0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75 2.25 2.25 0 0 0-.1-.664m-5.8 0A2.251 2.251 0 0 1 13.5 2.25H15c1.012 0 1.867.668 2.15 1.586m-5.8 0c-.376.023-.75.05-1.124.08C9.095 4.01 8.25 4.973 8.25 6.108V8.25m0 0H4.875c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V9.375c0-.621-.504-1.125-1.125-1.125H8.25ZM6.75 12h.008v.008H6.75V12Zm0 3h.008v.008H6.75V15Zm0 3h.008v.008H6.75V18Z"})])}function Dh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 7.5V6.108c0-1.135.845-2.098 1.976-2.192.373-.03.748-.057 1.123-.08M15.75 18H18a2.25 2.25 0 0 0 2.25-2.25V6.108c0-1.135-.845-2.098-1.976-2.192a48.424 48.424 0 0 0-1.123-.08M15.75 18.75v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5A3.375 3.375 0 0 0 6.375 7.5H5.25m11.9-3.664A2.251 2.251 0 0 0 15 2.25h-1.5a2.251 2.251 0 0 0-2.15 1.586m5.8 0c.065.21.1.433.1.664v.75h-6V4.5c0-.231.035-.454.1-.664M6.75 7.5H4.875c-.621 0-1.125.504-1.125 1.125v12c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125V16.5a9 9 0 0 0-9-9Z"})])}function Rh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.666 3.888A2.25 2.25 0 0 0 13.5 2.25h-3c-1.03 0-1.9.693-2.166 1.638m7.332 0c.055.194.084.4.084.612v0a.75.75 0 0 1-.75.75H9a.75.75 0 0 1-.75-.75v0c0-.212.03-.418.084-.612m7.332 0c.646.049 1.288.11 1.927.184 1.1.128 1.907 1.077 1.907 2.185V19.5a2.25 2.25 0 0 1-2.25 2.25H6.75A2.25 2.25 0 0 1 4.5 19.5V6.257c0-1.108.806-2.057 1.907-2.185a48.208 48.208 0 0 1 1.927-.184"})])}function Fh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 6v6h4.5m4.5 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function Zh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9.75v6.75m0 0-3-3m3 3 3-3m-8.25 6a4.5 4.5 0 0 1-1.41-8.775 5.25 5.25 0 0 1 10.233-2.33 3 3 0 0 1 3.758 3.848A3.752 3.752 0 0 1 18 19.5H6.75Z"})])}function Uh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 16.5V9.75m0 0 3 3m-3-3-3 3M6.75 19.5a4.5 4.5 0 0 1-1.41-8.775 5.25 5.25 0 0 1 10.233-2.33 3 3 0 0 1 3.758 3.848A3.752 3.752 0 0 1 18 19.5H6.75Z"})])}function zh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 15a4.5 4.5 0 0 0 4.5 4.5H18a3.75 3.75 0 0 0 1.332-7.257 3 3 0 0 0-3.758-3.848 5.25 5.25 0 0 0-10.233 2.33A4.502 4.502 0 0 0 2.25 15Z"})])}function Wh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.25 9.75 16.5 12l-2.25 2.25m-4.5 0L7.5 12l2.25-2.25M6 20.25h12A2.25 2.25 0 0 0 20.25 18V6A2.25 2.25 0 0 0 18 3.75H6A2.25 2.25 0 0 0 3.75 6v12A2.25 2.25 0 0 0 6 20.25Z"})])}function Gh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M17.25 6.75 22.5 12l-5.25 5.25m-10.5 0L1.5 12l5.25-5.25m7.5-3-4.5 16.5"})])}function Yh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.594 3.94c.09-.542.56-.94 1.11-.94h2.593c.55 0 1.02.398 1.11.94l.213 1.281c.063.374.313.686.645.87.074.04.147.083.22.127.325.196.72.257 1.075.124l1.217-.456a1.125 1.125 0 0 1 1.37.49l1.296 2.247a1.125 1.125 0 0 1-.26 1.431l-1.003.827c-.293.241-.438.613-.43.992a7.723 7.723 0 0 1 0 .255c-.008.378.137.75.43.991l1.004.827c.424.35.534.955.26 1.43l-1.298 2.247a1.125 1.125 0 0 1-1.369.491l-1.217-.456c-.355-.133-.75-.072-1.076.124a6.47 6.47 0 0 1-.22.128c-.331.183-.581.495-.644.869l-.213 1.281c-.09.543-.56.94-1.11.94h-2.594c-.55 0-1.019-.398-1.11-.94l-.213-1.281c-.062-.374-.312-.686-.644-.87a6.52 6.52 0 0 1-.22-.127c-.325-.196-.72-.257-1.076-.124l-1.217.456a1.125 1.125 0 0 1-1.369-.49l-1.297-2.247a1.125 1.125 0 0 1 .26-1.431l1.004-.827c.292-.24.437-.613.43-.991a6.932 6.932 0 0 1 0-.255c.007-.38-.138-.751-.43-.992l-1.004-.827a1.125 1.125 0 0 1-.26-1.43l1.297-2.247a1.125 1.125 0 0 1 1.37-.491l1.216.456c.356.133.751.072 1.076-.124.072-.044.146-.086.22-.128.332-.183.582-.495.644-.869l.214-1.28Z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})])}function qh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 0 1 1.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.559.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.894.149c-.424.07-.764.383-.929.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 0 1-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.398.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 0 1-.12-1.45l.527-.737c.25-.35.272-.806.108-1.204-.165-.397-.506-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.108-1.204l-.526-.738a1.125 1.125 0 0 1 .12-1.45l.773-.773a1.125 1.125 0 0 1 1.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894Z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})])}function Xh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.5 12a7.5 7.5 0 0 0 15 0m-15 0a7.5 7.5 0 1 1 15 0m-15 0H3m16.5 0H21m-1.5 0H12m-8.457 3.077 1.41-.513m14.095-5.13 1.41-.513M5.106 17.785l1.15-.964m11.49-9.642 1.149-.964M7.501 19.795l.75-1.3m7.5-12.99.75-1.3m-6.063 16.658.26-1.477m2.605-14.772.26-1.477m0 17.726-.26-1.477M10.698 4.614l-.26-1.477M16.5 19.794l-.75-1.299M7.5 4.205 12 12m6.894 5.785-1.149-.964M6.256 7.178l-1.15-.964m15.352 8.864-1.41-.513M4.954 9.435l-1.41-.514M12.002 12l-3.75 6.495"})])}function Kh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m6.75 7.5 3 2.25-3 2.25m4.5 0h3m-9 8.25h13.5A2.25 2.25 0 0 0 21 18V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v12a2.25 2.25 0 0 0 2.25 2.25Z"})])}function Qh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 17.25v1.007a3 3 0 0 1-.879 2.122L7.5 21h9l-.621-.621A3 3 0 0 1 15 18.257V17.25m6-12V15a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 15V5.25m18 0A2.25 2.25 0 0 0 18.75 3H5.25A2.25 2.25 0 0 0 3 5.25m18 0V12a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 12V5.25"})])}function Jh(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 3v1.5M4.5 8.25H3m18 0h-1.5M4.5 12H3m18 0h-1.5m-15 3.75H3m18 0h-1.5M8.25 19.5V21M12 3v1.5m0 15V21m3.75-18v1.5m0 15V21m-9-1.5h10.5a2.25 2.25 0 0 0 2.25-2.25V6.75a2.25 2.25 0 0 0-2.25-2.25H6.75A2.25 2.25 0 0 0 4.5 6.75v10.5a2.25 2.25 0 0 0 2.25 2.25Zm.75-12h9v9h-9v-9Z"})])}function ep(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 8.25h19.5M2.25 9h19.5m-16.5 5.25h6m-6 2.25h3m-3.75 3h15a2.25 2.25 0 0 0 2.25-2.25V6.75A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25v10.5A2.25 2.25 0 0 0 4.5 19.5Z"})])}function tp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m21 7.5-2.25-1.313M21 7.5v2.25m0-2.25-2.25 1.313M3 7.5l2.25-1.313M3 7.5l2.25 1.313M3 7.5v2.25m9 3 2.25-1.313M12 12.75l-2.25-1.313M12 12.75V15m0 6.75 2.25-1.313M12 21.75V19.5m0 2.25-2.25-1.313m0-16.875L12 2.25l2.25 1.313M21 14.25v2.25l-2.25 1.313m-13.5 0L3 16.5v-2.25"})])}function np(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m21 7.5-9-5.25L3 7.5m18 0-9 5.25m9-5.25v9l-9 5.25M3 7.5l9 5.25M3 7.5v9l9 5.25m0-9v9"})])}function rp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m8.25 7.5.415-.207a.75.75 0 0 1 1.085.67V10.5m0 0h6m-6 0h-1.5m1.5 0v5.438c0 .354.161.697.473.865a3.751 3.751 0 0 0 5.452-2.553c.083-.409-.263-.75-.68-.75h-.745M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function op(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 6v12m-3-2.818.879.659c1.171.879 3.07.879 4.242 0 1.172-.879 1.172-2.303 0-3.182C13.536 12.219 12.768 12 12 12c-.725 0-1.45-.22-2.003-.659-1.106-.879-1.106-2.303 0-3.182s2.9-.879 4.006 0l.415.33M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function ap(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.25 7.756a4.5 4.5 0 1 0 0 8.488M7.5 10.5h5.25m-5.25 3h5.25M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function ip(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.121 7.629A3 3 0 0 0 9.017 9.43c-.023.212-.002.425.028.636l.506 3.541a4.5 4.5 0 0 1-.43 2.65L9 16.5l1.539-.513a2.25 2.25 0 0 1 1.422 0l.655.218a2.25 2.25 0 0 0 1.718-.122L15 15.75M8.25 12H12m9 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function sp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 8.25H9m6 3H9m3 6-3-3h1.5a3 3 0 1 0 0-6M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function lp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m9 7.5 3 4.5m0 0 3-4.5M12 12v5.25M15 12H9m6 3H9m12-3a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function cp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.042 21.672 13.684 16.6m0 0-2.51 2.225.569-9.47 5.227 7.917-3.286-.672ZM12 2.25V4.5m5.834.166-1.591 1.591M20.25 10.5H18M7.757 14.743l-1.59 1.59M6 10.5H3.75m4.007-4.243-1.59-1.59"})])}function up(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.042 21.672 13.684 16.6m0 0-2.51 2.225.569-9.47 5.227 7.917-3.286-.672Zm-7.518-.267A8.25 8.25 0 1 1 20.25 10.5M8.288 14.212A5.25 5.25 0 1 1 17.25 10.5"})])}function dp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.5 1.5H8.25A2.25 2.25 0 0 0 6 3.75v16.5a2.25 2.25 0 0 0 2.25 2.25h7.5A2.25 2.25 0 0 0 18 20.25V3.75a2.25 2.25 0 0 0-2.25-2.25H13.5m-3 0V3h3V1.5m-3 0h3m-3 18.75h3"})])}function fp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.5 19.5h3m-6.75 2.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-15a2.25 2.25 0 0 0-2.25-2.25H6.75A2.25 2.25 0 0 0 4.5 4.5v15a2.25 2.25 0 0 0 2.25 2.25Z"})])}function hp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.499 11.998h15m-7.5-6.75h.008v.008h-.008v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM12 18.751h.007v.007H12v-.007Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"})])}function pp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m.75 12 3 3m0 0 3-3m-3 3v-6m-1.5-9H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function vp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12-3-3m0 0-3 3m3-3v6m-1.5-15H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function mp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25M9 16.5v.75m3-3v3M15 12v5.25m-4.5-15H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function gp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.125 2.25h-4.5c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125v-9M10.125 2.25h.375a9 9 0 0 1 9 9v.375M10.125 2.25A3.375 3.375 0 0 1 13.5 5.625v1.5c0 .621.504 1.125 1.125 1.125h1.5a3.375 3.375 0 0 1 3.375 3.375M9 15l2.25 2.25L15 12"})])}function wp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 8.25.22-.22a.75.75 0 0 1 1.28.53v6.441c0 .472.214.934.64 1.137a3.75 3.75 0 0 0 4.994-1.77c.205-.428-.152-.868-.627-.868h-.507m-6-2.25h7.5M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function kp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m3.75 9v7.5m2.25-6.466a9.016 9.016 0 0 0-3.461-.203c-.536.072-.974.478-1.021 1.017a4.559 4.559 0 0 0-.018.402c0 .464.336.844.775.994l2.95 1.012c.44.15.775.53.775.994 0 .136-.006.27-.018.402-.047.539-.485.945-1.021 1.017a9.077 9.077 0 0 1-3.461-.203M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function _p(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 11.625h4.5m-4.5 2.25h4.5m2.121 1.527c-1.171 1.464-3.07 1.464-4.242 0-1.172-1.465-1.172-3.84 0-5.304 1.171-1.464 3.07-1.464 4.242 0M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function xp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.621 9.879a3 3 0 0 0-5.02 2.897l.164.609a4.5 4.5 0 0 1-.108 2.676l-.157.439.44-.22a2.863 2.863 0 0 1 2.185-.155c.72.24 1.507.184 2.186-.155L15 18M8.25 15.75H12m-1.5-13.5H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function bp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 9h3.75m-4.5 2.625h4.5M12 18.75 9.75 16.5h.375a2.625 2.625 0 0 0 0-5.25H9.75m.75-9H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function yp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m1.5 9 2.25 3m0 0 2.25-3m-2.25 3v4.5M9.75 15h4.5m-4.5 2.25h4.5m-3.75-15H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function Mp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 0 1-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 0 1 1.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 0 0-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 0 1-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 0 0-3.375-3.375h-1.5a1.125 1.125 0 0 1-1.125-1.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H9.75"})])}function Ap(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m5.231 13.481L15 17.25m-4.5-15H5.625c-.621 0-1.125.504-1.125 1.125v16.5c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Zm3.75 11.625a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z"})])}function Cp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m6.75 12H9m1.5-12H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function Ip(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m3.75 9v6m3-3H9m1.5-12H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function $p(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function Sp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 14.25v-2.625a3.375 3.375 0 0 0-3.375-3.375h-1.5A1.125 1.125 0 0 1 13.5 7.125v-1.5a3.375 3.375 0 0 0-3.375-3.375H8.25m2.25 0H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 0 0-9-9Z"})])}function Ep(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.625 12a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H8.25m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0H12m4.125 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm0 0h-.375M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function Lp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM12.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0ZM18.75 12a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z"})])}function Tp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 6.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 12.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 18.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5Z"})])}function Pp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21.75 9v.906a2.25 2.25 0 0 1-1.183 1.981l-6.478 3.488M2.25 9v.906a2.25 2.25 0 0 0 1.183 1.981l6.478 3.488m8.839 2.51-4.66-2.51m0 0-1.023-.55a2.25 2.25 0 0 0-2.134 0l-1.022.55m0 0-4.661 2.51m16.5 1.615a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V8.844a2.25 2.25 0 0 1 1.183-1.981l7.5-4.039a2.25 2.25 0 0 1 2.134 0l7.5 4.039a2.25 2.25 0 0 1 1.183 1.98V19.5Z"})])}function Op(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21.75 6.75v10.5a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25m19.5 0v.243a2.25 2.25 0 0 1-1.07 1.916l-7.5 4.615a2.25 2.25 0 0 1-2.36 0L3.32 8.91a2.25 2.25 0 0 1-1.07-1.916V6.75"})])}function Bp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.499 8.248h15m-15 7.501h15"})])}function Vp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9v3.75m9-.75a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 3.75h.008v.008H12v-.008Z"})])}function jp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126ZM12 15.75h.007v.008H12v-.008Z"})])}function Hp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m15 11.25 1.5 1.5.75-.75V8.758l2.276-.61a3 3 0 1 0-3.675-3.675l-.61 2.277H12l-.75.75 1.5 1.5M15 11.25l-8.47 8.47c-.34.34-.8.53-1.28.53s-.94.19-1.28.53l-.97.97-.75-.75.97-.97c.34-.34.53-.8.53-1.28s.19-.94.53-1.28L12.75 9M15 11.25 12.75 9"})])}function Np(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.98 8.223A10.477 10.477 0 0 0 1.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.451 10.451 0 0 1 12 4.5c4.756 0 8.773 3.162 10.065 7.498a10.522 10.522 0 0 1-4.293 5.774M6.228 6.228 3 3m3.228 3.228 3.65 3.65m7.894 7.894L21 21m-3.228-3.228-3.65-3.65m0 0a3 3 0 1 0-4.243-4.243m4.242 4.242L9.88 9.88"})])}function Dp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.036 12.322a1.012 1.012 0 0 1 0-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178Z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})])}function Rp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.182 16.318A4.486 4.486 0 0 0 12.016 15a4.486 4.486 0 0 0-3.198 1.318M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0ZM9.75 9.75c0 .414-.168.75-.375.75S9 10.164 9 9.75 9.168 9 9.375 9s.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Zm5.625 0c0 .414-.168.75-.375.75s-.375-.336-.375-.75.168-.75.375-.75.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Z"})])}function Fp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.182 15.182a4.5 4.5 0 0 1-6.364 0M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0ZM9.75 9.75c0 .414-.168.75-.375.75S9 10.164 9 9.75 9.168 9 9.375 9s.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Zm5.625 0c0 .414-.168.75-.375.75s-.375-.336-.375-.75.168-.75.375-.75.375.336.375.75Zm-.375 0h.008v.015h-.008V9.75Z"})])}function Zp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.375 19.5h17.25m-17.25 0a1.125 1.125 0 0 1-1.125-1.125M3.375 19.5h1.5C5.496 19.5 6 18.996 6 18.375m-3.75 0V5.625m0 12.75v-1.5c0-.621.504-1.125 1.125-1.125m18.375 2.625V5.625m0 12.75c0 .621-.504 1.125-1.125 1.125m1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125m0 3.75h-1.5A1.125 1.125 0 0 1 18 18.375M20.625 4.5H3.375m17.25 0c.621 0 1.125.504 1.125 1.125M20.625 4.5h-1.5C18.504 4.5 18 5.004 18 5.625m3.75 0v1.5c0 .621-.504 1.125-1.125 1.125M3.375 4.5c-.621 0-1.125.504-1.125 1.125M3.375 4.5h1.5C5.496 4.5 6 5.004 6 5.625m-3.75 0v1.5c0 .621.504 1.125 1.125 1.125m0 0h1.5m-1.5 0c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125m1.5-3.75C5.496 8.25 6 7.746 6 7.125v-1.5M4.875 8.25C5.496 8.25 6 8.754 6 9.375v1.5m0-5.25v5.25m0-5.25C6 5.004 6.504 4.5 7.125 4.5h9.75c.621 0 1.125.504 1.125 1.125m1.125 2.625h1.5m-1.5 0A1.125 1.125 0 0 1 18 7.125v-1.5m1.125 2.625c-.621 0-1.125.504-1.125 1.125v1.5m2.625-2.625c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125M18 5.625v5.25M7.125 12h9.75m-9.75 0A1.125 1.125 0 0 1 6 10.875M7.125 12C6.504 12 6 12.504 6 13.125m0-2.25C6 11.496 5.496 12 4.875 12M18 10.875c0 .621-.504 1.125-1.125 1.125M18 10.875c0 .621.504 1.125 1.125 1.125m-2.25 0c.621 0 1.125.504 1.125 1.125m-12 5.25v-5.25m0 5.25c0 .621.504 1.125 1.125 1.125h9.75c.621 0 1.125-.504 1.125-1.125m-12 0v-1.5c0-.621-.504-1.125-1.125-1.125M18 18.375v-5.25m0 5.25v-1.5c0-.621.504-1.125 1.125-1.125M18 13.125v1.5c0 .621.504 1.125 1.125 1.125M18 13.125c0-.621.504-1.125 1.125-1.125M6 13.125v1.5c0 .621-.504 1.125-1.125 1.125M6 13.125C6 12.504 5.496 12 4.875 12m-1.5 0h1.5m-1.5 0c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125M19.125 12h1.5m0 0c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125m-17.25 0h1.5m14.25 0h1.5"})])}function Up(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.864 4.243A7.5 7.5 0 0 1 19.5 10.5c0 2.92-.556 5.709-1.568 8.268M5.742 6.364A7.465 7.465 0 0 0 4.5 10.5a7.464 7.464 0 0 1-1.15 3.993m1.989 3.559A11.209 11.209 0 0 0 8.25 10.5a3.75 3.75 0 1 1 7.5 0c0 .527-.021 1.049-.064 1.565M12 10.5a14.94 14.94 0 0 1-3.6 9.75m6.633-4.596a18.666 18.666 0 0 1-2.485 5.33"})])}function zp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.362 5.214A8.252 8.252 0 0 1 12 21 8.25 8.25 0 0 1 6.038 7.047 8.287 8.287 0 0 0 9 9.601a8.983 8.983 0 0 1 3.361-6.867 8.21 8.21 0 0 0 3 2.48Z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 18a3.75 3.75 0 0 0 .495-7.468 5.99 5.99 0 0 0-1.925 3.547 5.975 5.975 0 0 1-2.133-1.001A3.75 3.75 0 0 0 12 18Z"})])}function Wp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3 3v1.5M3 21v-6m0 0 2.77-.693a9 9 0 0 1 6.208.682l.108.054a9 9 0 0 0 6.086.71l3.114-.732a48.524 48.524 0 0 1-.005-10.499l-3.11.732a9 9 0 0 1-6.085-.711l-.108-.054a9 9 0 0 0-6.208-.682L3 4.5M3 15V4.5"})])}function Gp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m9 13.5 3 3m0 0 3-3m-3 3v-6m1.06-4.19-2.12-2.12a1.5 1.5 0 0 0-1.061-.44H4.5A2.25 2.25 0 0 0 2.25 6v12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9a2.25 2.25 0 0 0-2.25-2.25h-5.379a1.5 1.5 0 0 1-1.06-.44Z"})])}function Yp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 13.5H9m4.06-7.19-2.12-2.12a1.5 1.5 0 0 0-1.061-.44H4.5A2.25 2.25 0 0 0 2.25 6v12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9a2.25 2.25 0 0 0-2.25-2.25h-5.379a1.5 1.5 0 0 1-1.06-.44Z"})])}function qp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 9.776c.112-.017.227-.026.344-.026h15.812c.117 0 .232.009.344.026m-16.5 0a2.25 2.25 0 0 0-1.883 2.542l.857 6a2.25 2.25 0 0 0 2.227 1.932H19.05a2.25 2.25 0 0 0 2.227-1.932l.857-6a2.25 2.25 0 0 0-1.883-2.542m-16.5 0V6A2.25 2.25 0 0 1 6 3.75h3.879a1.5 1.5 0 0 1 1.06.44l2.122 2.12a1.5 1.5 0 0 0 1.06.44H18A2.25 2.25 0 0 1 20.25 9v.776"})])}function Xp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 10.5v6m3-3H9m4.06-7.19-2.12-2.12a1.5 1.5 0 0 0-1.061-.44H4.5A2.25 2.25 0 0 0 2.25 6v12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9a2.25 2.25 0 0 0-2.25-2.25h-5.379a1.5 1.5 0 0 1-1.06-.44Z"})])}function Kp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 12.75V12A2.25 2.25 0 0 1 4.5 9.75h15A2.25 2.25 0 0 1 21.75 12v.75m-8.69-6.44-2.12-2.12a1.5 1.5 0 0 0-1.061-.44H4.5A2.25 2.25 0 0 0 2.25 6v12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18V9a2.25 2.25 0 0 0-2.25-2.25h-5.379a1.5 1.5 0 0 1-1.06-.44Z"})])}function Qp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3 8.689c0-.864.933-1.406 1.683-.977l7.108 4.061a1.125 1.125 0 0 1 0 1.954l-7.108 4.061A1.125 1.125 0 0 1 3 16.811V8.69ZM12.75 8.689c0-.864.933-1.406 1.683-.977l7.108 4.061a1.125 1.125 0 0 1 0 1.954l-7.108 4.061a1.125 1.125 0 0 1-1.683-.977V8.69Z"})])}function Jp(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 0 1-.659 1.591l-5.432 5.432a2.25 2.25 0 0 0-.659 1.591v2.927a2.25 2.25 0 0 1-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 0 0-.659-1.591L3.659 7.409A2.25 2.25 0 0 1 3 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0 1 12 3Z"})])}function e4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12.75 8.25v7.5m6-7.5h-3V12m0 0v3.75m0-3.75H18M9.75 9.348c-1.03-1.464-2.698-1.464-3.728 0-1.03 1.465-1.03 3.84 0 5.304 1.03 1.464 2.699 1.464 3.728 0V12h-1.5M4.5 19.5h15a2.25 2.25 0 0 0 2.25-2.25V6.75A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25v10.5A2.25 2.25 0 0 0 4.5 19.5Z"})])}function t4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 3.75v16.5M2.25 12h19.5M6.375 17.25a4.875 4.875 0 0 0 4.875-4.875V12m6.375 5.25a4.875 4.875 0 0 1-4.875-4.875V12m-9 8.25h16.5a1.5 1.5 0 0 0 1.5-1.5V5.25a1.5 1.5 0 0 0-1.5-1.5H3.75a1.5 1.5 0 0 0-1.5 1.5v13.5a1.5 1.5 0 0 0 1.5 1.5Zm12.621-9.44c-1.409 1.41-4.242 1.061-4.242 1.061s-.349-2.833 1.06-4.242a2.25 2.25 0 0 1 3.182 3.182ZM10.773 7.63c1.409 1.409 1.06 4.242 1.06 4.242S9 12.22 7.592 10.811a2.25 2.25 0 1 1 3.182-3.182Z"})])}function n4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 11.25v8.25a1.5 1.5 0 0 1-1.5 1.5H5.25a1.5 1.5 0 0 1-1.5-1.5v-8.25M12 4.875A2.625 2.625 0 1 0 9.375 7.5H12m0-2.625V7.5m0-2.625A2.625 2.625 0 1 1 14.625 7.5H12m0 0V21m-8.625-9.75h18c.621 0 1.125-.504 1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125h-18c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125Z"})])}function r4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 21a9.004 9.004 0 0 0 8.716-6.747M12 21a9.004 9.004 0 0 1-8.716-6.747M12 21c2.485 0 4.5-4.03 4.5-9S14.485 3 12 3m0 18c-2.485 0-4.5-4.03-4.5-9S9.515 3 12 3m0 0a8.997 8.997 0 0 1 7.843 4.582M12 3a8.997 8.997 0 0 0-7.843 4.582m15.686 0A11.953 11.953 0 0 1 12 10.5c-2.998 0-5.74-1.1-7.843-2.918m15.686 0A8.959 8.959 0 0 1 21 12c0 .778-.099 1.533-.284 2.253m0 0A17.919 17.919 0 0 1 12 16.5c-3.162 0-6.133-.815-8.716-2.247m0 0A9.015 9.015 0 0 1 3 12c0-1.605.42-3.113 1.157-4.418"})])}function o4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m6.115 5.19.319 1.913A6 6 0 0 0 8.11 10.36L9.75 12l-.387.775c-.217.433-.132.956.21 1.298l1.348 1.348c.21.21.329.497.329.795v1.089c0 .426.24.815.622 1.006l.153.076c.433.217.956.132 1.298-.21l.723-.723a8.7 8.7 0 0 0 2.288-4.042 1.087 1.087 0 0 0-.358-1.099l-1.33-1.108c-.251-.21-.582-.299-.905-.245l-1.17.195a1.125 1.125 0 0 1-.98-.314l-.295-.295a1.125 1.125 0 0 1 0-1.591l.13-.132a1.125 1.125 0 0 1 1.3-.21l.603.302a.809.809 0 0 0 1.086-1.086L14.25 7.5l1.256-.837a4.5 4.5 0 0 0 1.528-1.732l.146-.292M6.115 5.19A9 9 0 1 0 17.18 4.64M6.115 5.19A8.965 8.965 0 0 1 12 3c1.929 0 3.716.607 5.18 1.64"})])}function a4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12.75 3.03v.568c0 .334.148.65.405.864l1.068.89c.442.369.535 1.01.216 1.49l-.51.766a2.25 2.25 0 0 1-1.161.886l-.143.048a1.107 1.107 0 0 0-.57 1.664c.369.555.169 1.307-.427 1.605L9 13.125l.423 1.059a.956.956 0 0 1-1.652.928l-.679-.906a1.125 1.125 0 0 0-1.906.172L4.5 15.75l-.612.153M12.75 3.031a9 9 0 0 0-8.862 12.872M12.75 3.031a9 9 0 0 1 6.69 14.036m0 0-.177-.529A2.25 2.25 0 0 0 17.128 15H16.5l-.324-.324a1.453 1.453 0 0 0-2.328.377l-.036.073a1.586 1.586 0 0 1-.982.816l-.99.282c-.55.157-.894.702-.8 1.267l.073.438c.08.474.49.821.97.821.846 0 1.598.542 1.865 1.345l.215.643m5.276-3.67a9.012 9.012 0 0 1-5.276 3.67m0 0a9 9 0 0 1-10.275-4.835M15.75 9c0 .896-.393 1.7-1.016 2.25"})])}function i4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m20.893 13.393-1.135-1.135a2.252 2.252 0 0 1-.421-.585l-1.08-2.16a.414.414 0 0 0-.663-.107.827.827 0 0 1-.812.21l-1.273-.363a.89.89 0 0 0-.738 1.595l.587.39c.59.395.674 1.23.172 1.732l-.2.2c-.212.212-.33.498-.33.796v.41c0 .409-.11.809-.32 1.158l-1.315 2.191a2.11 2.11 0 0 1-1.81 1.025 1.055 1.055 0 0 1-1.055-1.055v-1.172c0-.92-.56-1.747-1.414-2.089l-.655-.261a2.25 2.25 0 0 1-1.383-2.46l.007-.042a2.25 2.25 0 0 1 .29-.787l.09-.15a2.25 2.25 0 0 1 2.37-1.048l1.178.236a1.125 1.125 0 0 0 1.302-.795l.208-.73a1.125 1.125 0 0 0-.578-1.315l-.665-.332-.091.091a2.25 2.25 0 0 1-1.591.659h-.18c-.249 0-.487.1-.662.274a.931.931 0 0 1-1.458-1.137l1.411-2.353a2.25 2.25 0 0 0 .286-.76m11.928 9.869A9 9 0 0 0 8.965 3.525m11.928 9.868A9 9 0 1 1 8.965 3.525"})])}function s4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.243 4.493v7.5m0 0v7.502m0-7.501h10.5m0-7.5v7.5m0 0v7.501m4.501-8.627 2.25-1.5v10.126m0 0h-2.25m2.25 0h2.25"})])}function l4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21.75 19.5H16.5v-1.609a2.25 2.25 0 0 1 1.244-2.012l2.89-1.445c.651-.326 1.116-.955 1.116-1.683 0-.498-.04-.987-.118-1.463-.135-.825-.835-1.422-1.668-1.489a15.202 15.202 0 0 0-3.464.12M2.243 4.492v7.5m0 0v7.502m0-7.501h10.5m0-7.5v7.5m0 0v7.501"})])}function c4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M20.905 14.626a4.52 4.52 0 0 1 .738 3.603c-.154.695-.794 1.143-1.504 1.208a15.194 15.194 0 0 1-3.639-.104m4.405-4.707a4.52 4.52 0 0 0 .738-3.603c-.154-.696-.794-1.144-1.504-1.209a15.19 15.19 0 0 0-3.639.104m4.405 4.708H18M2.243 4.493v7.5m0 0v7.502m0-7.501h10.5m0-7.5v7.5m0 0v7.501"})])}function u4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.05 4.575a1.575 1.575 0 1 0-3.15 0v3m3.15-3v-1.5a1.575 1.575 0 0 1 3.15 0v1.5m-3.15 0 .075 5.925m3.075.75V4.575m0 0a1.575 1.575 0 0 1 3.15 0V15M6.9 7.575a1.575 1.575 0 1 0-3.15 0v8.175a6.75 6.75 0 0 0 6.75 6.75h2.018a5.25 5.25 0 0 0 3.712-1.538l1.732-1.732a5.25 5.25 0 0 0 1.538-3.712l.003-2.024a.668.668 0 0 1 .198-.471 1.575 1.575 0 1 0-2.228-2.228 3.818 3.818 0 0 0-1.12 2.687M6.9 7.575V12m6.27 4.318A4.49 4.49 0 0 1 16.35 15m.002 0h-.002"})])}function d4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.498 15.25H4.372c-1.026 0-1.945-.694-2.054-1.715a12.137 12.137 0 0 1-.068-1.285c0-2.848.992-5.464 2.649-7.521C5.287 4.247 5.886 4 6.504 4h4.016a4.5 4.5 0 0 1 1.423.23l3.114 1.04a4.5 4.5 0 0 0 1.423.23h1.294M7.498 15.25c.618 0 .991.724.725 1.282A7.471 7.471 0 0 0 7.5 19.75 2.25 2.25 0 0 0 9.75 22a.75.75 0 0 0 .75-.75v-.633c0-.573.11-1.14.322-1.672.304-.76.93-1.33 1.653-1.715a9.04 9.04 0 0 0 2.86-2.4c.498-.634 1.226-1.08 2.032-1.08h.384m-10.253 1.5H9.7m8.075-9.75c.01.05.027.1.05.148.593 1.2.925 2.55.925 3.977 0 1.487-.36 2.89-.999 4.125m.023-8.25c-.076-.365.183-.75.575-.75h.908c.889 0 1.713.518 1.972 1.368.339 1.11.521 2.287.521 3.507 0 1.553-.295 3.036-.831 4.398-.306.774-1.086 1.227-1.918 1.227h-1.053c-.472 0-.745-.556-.5-.96a8.95 8.95 0 0 0 .303-.54"})])}function f4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6.633 10.25c.806 0 1.533-.446 2.031-1.08a9.041 9.041 0 0 1 2.861-2.4c.723-.384 1.35-.956 1.653-1.715a4.498 4.498 0 0 0 .322-1.672V2.75a.75.75 0 0 1 .75-.75 2.25 2.25 0 0 1 2.25 2.25c0 1.152-.26 2.243-.723 3.218-.266.558.107 1.282.725 1.282m0 0h3.126c1.026 0 1.945.694 2.054 1.715.045.422.068.85.068 1.285a11.95 11.95 0 0 1-2.649 7.521c-.388.482-.987.729-1.605.729H13.48c-.483 0-.964-.078-1.423-.23l-3.114-1.04a4.501 4.501 0 0 0-1.423-.23H5.904m10.598-9.75H14.25M5.904 18.5c.083.205.173.405.27.602.197.4-.078.898-.523.898h-.908c-.889 0-1.713-.518-1.972-1.368a12 12 0 0 1-.521-3.507c0-1.553.295-3.036.831-4.398C3.387 9.953 4.167 9.5 5 9.5h1.053c.472 0 .745.556.5.96a8.958 8.958 0 0 0-1.302 4.665c0 1.194.232 2.333.654 3.375Z"})])}function h4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5.25 8.25h15m-16.5 7.5h15m-1.8-13.5-3.9 19.5m-2.1-19.5-3.9 19.5"})])}function p4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 8.25c0-2.485-2.099-4.5-4.688-4.5-1.935 0-3.597 1.126-4.312 2.733-.715-1.607-2.377-2.733-4.313-2.733C5.1 3.75 3 5.765 3 8.25c0 7.22 9 12 9 12s9-4.78 9-12Z"})])}function v4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 21v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21m0 0h4.5V3.545M12.75 21h7.5V10.75M2.25 21h1.5m18 0h-18M2.25 9l4.5-1.636M18.75 3l-1.5.545m0 6.205 3 1m1.5.5-1.5-.5M6.75 7.364V3h-3v18m3-13.636 10.5-3.819"})])}function m4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m2.25 12 8.954-8.955c.44-.439 1.152-.439 1.591 0L21.75 12M4.5 9.75v10.125c0 .621.504 1.125 1.125 1.125H9.75v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21h4.125c.621 0 1.125-.504 1.125-1.125V9.75M8.25 21h8.25"})])}function g4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 9h3.75M15 12h3.75M15 15h3.75M4.5 19.5h15a2.25 2.25 0 0 0 2.25-2.25V6.75A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25v10.5A2.25 2.25 0 0 0 4.5 19.5Zm6-10.125a1.875 1.875 0 1 1-3.75 0 1.875 1.875 0 0 1 3.75 0Zm1.294 6.336a6.721 6.721 0 0 1-3.17.789 6.721 6.721 0 0 1-3.168-.789 3.376 3.376 0 0 1 6.338 0Z"})])}function w4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 3.75H6.912a2.25 2.25 0 0 0-2.15 1.588L2.35 13.177a2.25 2.25 0 0 0-.1.661V18a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18v-4.162c0-.224-.034-.447-.1-.661L19.24 5.338a2.25 2.25 0 0 0-2.15-1.588H15M2.25 13.5h3.86a2.25 2.25 0 0 1 2.012 1.244l.256.512a2.25 2.25 0 0 0 2.013 1.244h3.218a2.25 2.25 0 0 0 2.013-1.244l.256-.512a2.25 2.25 0 0 1 2.013-1.244h3.859M12 3v8.25m0 0-3-3m3 3 3-3"})])}function k4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m7.875 14.25 1.214 1.942a2.25 2.25 0 0 0 1.908 1.058h2.006c.776 0 1.497-.4 1.908-1.058l1.214-1.942M2.41 9h4.636a2.25 2.25 0 0 1 1.872 1.002l.164.246a2.25 2.25 0 0 0 1.872 1.002h2.092a2.25 2.25 0 0 0 1.872-1.002l.164-.246A2.25 2.25 0 0 1 16.954 9h4.636M2.41 9a2.25 2.25 0 0 0-.16.832V12a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 12V9.832c0-.287-.055-.57-.16-.832M2.41 9a2.25 2.25 0 0 1 .382-.632l3.285-3.832a2.25 2.25 0 0 1 1.708-.786h8.43c.657 0 1.281.287 1.709.786l3.284 3.832c.163.19.291.404.382.632M4.5 20.25h15A2.25 2.25 0 0 0 21.75 18v-2.625c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125V18a2.25 2.25 0 0 0 2.25 2.25Z"})])}function _4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 13.5h3.86a2.25 2.25 0 0 1 2.012 1.244l.256.512a2.25 2.25 0 0 0 2.013 1.244h3.218a2.25 2.25 0 0 0 2.013-1.244l.256-.512a2.25 2.25 0 0 1 2.013-1.244h3.859m-19.5.338V18a2.25 2.25 0 0 0 2.25 2.25h15A2.25 2.25 0 0 0 21.75 18v-4.162c0-.224-.034-.447-.1-.661L19.24 5.338a2.25 2.25 0 0 0-2.15-1.588H6.911a2.25 2.25 0 0 0-2.15 1.588L2.35 13.177a2.25 2.25 0 0 0-.1.661Z"})])}function x4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m11.25 11.25.041-.02a.75.75 0 0 1 1.063.852l-.708 2.836a.75.75 0 0 0 1.063.853l.041-.021M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9-3.75h.008v.008H12V8.25Z"})])}function b4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5.248 20.246H9.05m0 0h3.696m-3.696 0 5.893-16.502m0 0h-3.697m3.697 0h3.803"})])}function y4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 5.25a3 3 0 0 1 3 3m3 0a6 6 0 0 1-7.029 5.912c-.563-.097-1.159.026-1.563.43L10.5 17.25H8.25v2.25H6v2.25H2.25v-2.818c0-.597.237-1.17.659-1.591l6.499-6.499c.404-.404.527-1 .43-1.563A6 6 0 1 1 21.75 8.25Z"})])}function M4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m10.5 21 5.25-11.25L21 21m-9-3h7.5M3 5.621a48.474 48.474 0 0 1 6-.371m0 0c1.12 0 2.233.038 3.334.114M9 5.25V3m3.334 2.364C11.176 10.658 7.69 15.08 3 17.502m9.334-12.138c.896.061 1.785.147 2.666.257m-4.589 8.495a18.023 18.023 0 0 1-3.827-5.802"})])}function A4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.712 4.33a9.027 9.027 0 0 1 1.652 1.306c.51.51.944 1.064 1.306 1.652M16.712 4.33l-3.448 4.138m3.448-4.138a9.014 9.014 0 0 0-9.424 0M19.67 7.288l-4.138 3.448m4.138-3.448a9.014 9.014 0 0 1 0 9.424m-4.138-5.976a3.736 3.736 0 0 0-.88-1.388 3.737 3.737 0 0 0-1.388-.88m2.268 2.268a3.765 3.765 0 0 1 0 2.528m-2.268-4.796a3.765 3.765 0 0 0-2.528 0m4.796 4.796c-.181.506-.475.982-.88 1.388a3.736 3.736 0 0 1-1.388.88m2.268-2.268 4.138 3.448m0 0a9.027 9.027 0 0 1-1.306 1.652c-.51.51-1.064.944-1.652 1.306m0 0-3.448-4.138m3.448 4.138a9.014 9.014 0 0 1-9.424 0m5.976-4.138a3.765 3.765 0 0 1-2.528 0m0 0a3.736 3.736 0 0 1-1.388-.88 3.737 3.737 0 0 1-.88-1.388m2.268 2.268L7.288 19.67m0 0a9.024 9.024 0 0 1-1.652-1.306 9.027 9.027 0 0 1-1.306-1.652m0 0 4.138-3.448M4.33 16.712a9.014 9.014 0 0 1 0-9.424m4.138 5.976a3.765 3.765 0 0 1 0-2.528m0 0c.181-.506.475-.982.88-1.388a3.736 3.736 0 0 1 1.388-.88m-2.268 2.268L4.33 7.288m6.406 1.18L7.288 4.33m0 0a9.024 9.024 0 0 0-1.652 1.306A9.025 9.025 0 0 0 4.33 7.288"})])}function C4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 18v-5.25m0 0a6.01 6.01 0 0 0 1.5-.189m-1.5.189a6.01 6.01 0 0 1-1.5-.189m3.75 7.478a12.06 12.06 0 0 1-4.5 0m3.75 2.383a14.406 14.406 0 0 1-3 0M14.25 18v-.192c0-.983.658-1.823 1.508-2.316a7.5 7.5 0 1 0-7.517 0c.85.493 1.509 1.333 1.509 2.316V18"})])}function I4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.181 8.68a4.503 4.503 0 0 1 1.903 6.405m-9.768-2.782L3.56 14.06a4.5 4.5 0 0 0 6.364 6.365l3.129-3.129m5.614-5.615 1.757-1.757a4.5 4.5 0 0 0-6.364-6.365l-4.5 4.5c-.258.26-.479.541-.661.84m1.903 6.405a4.495 4.495 0 0 1-1.242-.88 4.483 4.483 0 0 1-1.062-1.683m6.587 2.345 5.907 5.907m-5.907-5.907L8.898 8.898M2.991 2.99 8.898 8.9"})])}function $4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.19 8.688a4.5 4.5 0 0 1 1.242 7.244l-4.5 4.5a4.5 4.5 0 0 1-6.364-6.364l1.757-1.757m13.35-.622 1.757-1.757a4.5 4.5 0 0 0-6.364-6.364l-4.5 4.5a4.5 4.5 0 0 0 1.242 7.244"})])}function S4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0ZM3.75 12h.007v.008H3.75V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm-.375 5.25h.007v.008H3.75v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"})])}function E4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.5 10.5V6.75a4.5 4.5 0 1 0-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H6.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z"})])}function L4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.5 10.5V6.75a4.5 4.5 0 1 1 9 0v3.75M3.75 21.75h10.5a2.25 2.25 0 0 0 2.25-2.25v-6.75a2.25 2.25 0 0 0-2.25-2.25H3.75a2.25 2.25 0 0 0-2.25 2.25v6.75a2.25 2.25 0 0 0 2.25 2.25Z"})])}function T4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m15.75 15.75-2.489-2.489m0 0a3.375 3.375 0 1 0-4.773-4.773 3.375 3.375 0 0 0 4.774 4.774ZM21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function P4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607ZM13.5 10.5h-6"})])}function O4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607ZM10.5 7.5v6m3-3h-6"})])}function B4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"})])}function V4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 10.5a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.5 10.5c0 7.142-7.5 11.25-7.5 11.25S4.5 17.642 4.5 10.5a7.5 7.5 0 1 1 15 0Z"})])}function j4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 6.75V15m6-6v8.25m.503 3.498 4.875-2.437c.381-.19.622-.58.622-1.006V4.82c0-.836-.88-1.38-1.628-1.006l-3.869 1.934c-.317.159-.69.159-1.006 0L9.503 3.252a1.125 1.125 0 0 0-1.006 0L3.622 5.689C3.24 5.88 3 6.27 3 6.695V19.18c0 .836.88 1.38 1.628 1.006l3.869-1.934c.317-.159.69-.159 1.006 0l4.994 2.497c.317.158.69.158 1.006 0Z"})])}function H4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M10.34 15.84c-.688-.06-1.386-.09-2.09-.09H7.5a4.5 4.5 0 1 1 0-9h.75c.704 0 1.402-.03 2.09-.09m0 9.18c.253.962.584 1.892.985 2.783.247.55.06 1.21-.463 1.511l-.657.38c-.551.318-1.26.117-1.527-.461a20.845 20.845 0 0 1-1.44-4.282m3.102.069a18.03 18.03 0 0 1-.59-4.59c0-1.586.205-3.124.59-4.59m0 9.18a23.848 23.848 0 0 1 8.835 2.535M10.34 6.66a23.847 23.847 0 0 0 8.835-2.535m0 0A23.74 23.74 0 0 0 18.795 3m.38 1.125a23.91 23.91 0 0 1 1.014 5.395m-1.014 8.855c-.118.38-.245.754-.38 1.125m.38-1.125a23.91 23.91 0 0 0 1.014-5.395m0-3.46c.495.413.811 1.035.811 1.73 0 .695-.316 1.317-.811 1.73m0-3.46a24.347 24.347 0 0 1 0 3.46"})])}function N4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 18.75a6 6 0 0 0 6-6v-1.5m-6 7.5a6 6 0 0 1-6-6v-1.5m6 7.5v3.75m-3.75 0h7.5M12 15.75a3 3 0 0 1-3-3V4.5a3 3 0 1 1 6 0v8.25a3 3 0 0 1-3 3Z"})])}function D4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 12H9m12 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function R4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M18 12H6"})])}function F4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5 12h14"})])}function Z4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21.752 15.002A9.72 9.72 0 0 1 18 15.75c-5.385 0-9.75-4.365-9.75-9.75 0-1.33.266-2.597.748-3.752A9.753 9.753 0 0 0 3 11.25C3 16.635 7.365 21 12.75 21a9.753 9.753 0 0 0 9.002-5.998Z"})])}function U4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m9 9 10.5-3m0 6.553v3.75a2.25 2.25 0 0 1-1.632 2.163l-1.32.377a1.803 1.803 0 1 1-.99-3.467l2.31-.66a2.25 2.25 0 0 0 1.632-2.163Zm0 0V2.25L9 5.25v10.303m0 0v3.75a2.25 2.25 0 0 1-1.632 2.163l-1.32.377a1.803 1.803 0 0 1-.99-3.467l2.31-.66A2.25 2.25 0 0 0 9 15.553Z"})])}function z4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 7.5h1.5m-1.5 3h1.5m-7.5 3h7.5m-7.5 3h7.5m3-9h3.375c.621 0 1.125.504 1.125 1.125V18a2.25 2.25 0 0 1-2.25 2.25M16.5 7.5V18a2.25 2.25 0 0 0 2.25 2.25M16.5 7.5V4.875c0-.621-.504-1.125-1.125-1.125H4.125C3.504 3.75 3 4.254 3 4.875V18a2.25 2.25 0 0 0 2.25 2.25h13.5M6 7.5h3v3H6v-3Z"})])}function W4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M18.364 18.364A9 9 0 0 0 5.636 5.636m12.728 12.728A9 9 0 0 1 5.636 5.636m12.728 12.728L5.636 5.636"})])}function G4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.242 5.992h12m-12 6.003H20.24m-12 5.999h12M4.117 7.495v-3.75H2.99m1.125 3.75H2.99m1.125 0H5.24m-1.92 2.577a1.125 1.125 0 1 1 1.591 1.59l-1.83 1.83h2.16M2.99 15.745h1.125a1.125 1.125 0 0 1 0 2.25H3.74m0-.002h.375a1.125 1.125 0 0 1 0 2.25H2.99"})])}function Y4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.53 16.122a3 3 0 0 0-5.78 1.128 2.25 2.25 0 0 1-2.4 2.245 4.5 4.5 0 0 0 8.4-2.245c0-.399-.078-.78-.22-1.128Zm0 0a15.998 15.998 0 0 0 3.388-1.62m-5.043-.025a15.994 15.994 0 0 1 1.622-3.395m3.42 3.42a15.995 15.995 0 0 0 4.764-4.648l3.876-5.814a1.151 1.151 0 0 0-1.597-1.597L14.146 6.32a15.996 15.996 0 0 0-4.649 4.763m3.42 3.42a6.776 6.776 0 0 0-3.42-3.42"})])}function q4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 12 3.269 3.125A59.769 59.769 0 0 1 21.485 12 59.768 59.768 0 0 1 3.27 20.875L5.999 12Zm0 0h7.5"})])}function X4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m18.375 12.739-7.693 7.693a4.5 4.5 0 0 1-6.364-6.364l10.94-10.94A3 3 0 1 1 19.5 7.372L8.552 18.32m.009-.01-.01.01m5.699-9.941-7.81 7.81a1.5 1.5 0 0 0 2.112 2.13"})])}function K4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.25 9v6m-4.5 0V9M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function Q4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 5.25v13.5m-7.5-13.5v13.5"})])}function J4(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L10.582 16.07a4.5 4.5 0 0 1-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 0 1 1.13-1.897l8.932-8.931Zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0 1 15.75 21H5.25A2.25 2.25 0 0 1 3 18.75V8.25A2.25 2.25 0 0 1 5.25 6H10"})])}function ev(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m16.862 4.487 1.687-1.688a1.875 1.875 0 1 1 2.652 2.652L6.832 19.82a4.5 4.5 0 0 1-1.897 1.13l-2.685.8.8-2.685a4.5 4.5 0 0 1 1.13-1.897L16.863 4.487Zm0 0L19.5 7.125"})])}function tv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m8.99 14.993 6-6m6 3.001c0 1.268-.63 2.39-1.593 3.069a3.746 3.746 0 0 1-1.043 3.296 3.745 3.745 0 0 1-3.296 1.043 3.745 3.745 0 0 1-3.068 1.593c-1.268 0-2.39-.63-3.068-1.593a3.745 3.745 0 0 1-3.296-1.043 3.746 3.746 0 0 1-1.043-3.297 3.746 3.746 0 0 1-1.593-3.068c0-1.268.63-2.39 1.593-3.068a3.746 3.746 0 0 1 1.043-3.297 3.745 3.745 0 0 1 3.296-1.042 3.745 3.745 0 0 1 3.068-1.594c1.268 0 2.39.63 3.068 1.593a3.745 3.745 0 0 1 3.296 1.043 3.746 3.746 0 0 1 1.043 3.297 3.746 3.746 0 0 1 1.593 3.068ZM9.74 9.743h.008v.007H9.74v-.007Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm4.125 4.5h.008v.008h-.008v-.008Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"})])}function nv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.25 9.75v-4.5m0 4.5h4.5m-4.5 0 6-6m-3 18c-8.284 0-15-6.716-15-15V4.5A2.25 2.25 0 0 1 4.5 2.25h1.372c.516 0 .966.351 1.091.852l1.106 4.423c.11.44-.054.902-.417 1.173l-1.293.97a1.062 1.062 0 0 0-.38 1.21 12.035 12.035 0 0 0 7.143 7.143c.441.162.928-.004 1.21-.38l.97-1.293a1.125 1.125 0 0 1 1.173-.417l4.423 1.106c.5.125.852.575.852 1.091V19.5a2.25 2.25 0 0 1-2.25 2.25h-2.25Z"})])}function rv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M20.25 3.75v4.5m0-4.5h-4.5m4.5 0-6 6m3 12c-8.284 0-15-6.716-15-15V4.5A2.25 2.25 0 0 1 4.5 2.25h1.372c.516 0 .966.351 1.091.852l1.106 4.423c.11.44-.054.902-.417 1.173l-1.293.97a1.062 1.062 0 0 0-.38 1.21 12.035 12.035 0 0 0 7.143 7.143c.441.162.928-.004 1.21-.38l.97-1.293a1.125 1.125 0 0 1 1.173-.417l4.423 1.106c.5.125.852.575.852 1.091V19.5a2.25 2.25 0 0 1-2.25 2.25h-2.25Z"})])}function ov(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 3.75 18 6m0 0 2.25 2.25M18 6l2.25-2.25M18 6l-2.25 2.25m1.5 13.5c-8.284 0-15-6.716-15-15V4.5A2.25 2.25 0 0 1 4.5 2.25h1.372c.516 0 .966.351 1.091.852l1.106 4.423c.11.44-.054.902-.417 1.173l-1.293.97a1.062 1.062 0 0 0-.38 1.21 12.035 12.035 0 0 0 7.143 7.143c.441.162.928-.004 1.21-.38l.97-1.293a1.125 1.125 0 0 1 1.173-.417l4.423 1.106c.5.125.852.575.852 1.091V19.5a2.25 2.25 0 0 1-2.25 2.25h-2.25Z"})])}function av(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 0 0 2.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.035 12.035 0 0 1-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 0 0-1.091-.852H4.5A2.25 2.25 0 0 0 2.25 4.5v2.25Z"})])}function iv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m2.25 15.75 5.159-5.159a2.25 2.25 0 0 1 3.182 0l5.159 5.159m-1.5-1.5 1.409-1.409a2.25 2.25 0 0 1 3.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 0 0 1.5-1.5V6a1.5 1.5 0 0 0-1.5-1.5H3.75A1.5 1.5 0 0 0 2.25 6v12a1.5 1.5 0 0 0 1.5 1.5Zm10.5-11.25h.008v.008h-.008V8.25Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"})])}function sv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.91 11.672a.375.375 0 0 1 0 .656l-5.603 3.113a.375.375 0 0 1-.557-.328V8.887c0-.286.307-.466.557-.327l5.603 3.112Z"})])}function lv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 7.5V18M15 7.5V18M3 16.811V8.69c0-.864.933-1.406 1.683-.977l7.108 4.061a1.125 1.125 0 0 1 0 1.954l-7.108 4.061A1.125 1.125 0 0 1 3 16.811Z"})])}function cv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5.25 5.653c0-.856.917-1.398 1.667-.986l11.54 6.347a1.125 1.125 0 0 1 0 1.972l-11.54 6.347a1.125 1.125 0 0 1-1.667-.986V5.653Z"})])}function uv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9v6m3-3H9m12 0a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function dv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 6v12m6-6H6"})])}function fv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 4.5v15m7.5-7.5h-15"})])}function hv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5.636 5.636a9 9 0 1 0 12.728 0M12 3v9"})])}function pv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5M9 11.25v1.5M12 9v3.75m3-6v6"})])}function vv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 3v11.25A2.25 2.25 0 0 0 6 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0 1 18 16.5h-2.25m-7.5 0h7.5m-7.5 0-1 3m8.5-3 1 3m0 0 .5 1.5m-.5-1.5h-9.5m0 0-.5 1.5m.75-9 3-3 2.148 2.148A12.061 12.061 0 0 1 16.5 7.605"})])}function mv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6.72 13.829c-.24.03-.48.062-.72.096m.72-.096a42.415 42.415 0 0 1 10.56 0m-10.56 0L6.34 18m10.94-4.171c.24.03.48.062.72.096m-.72-.096L17.66 18m0 0 .229 2.523a1.125 1.125 0 0 1-1.12 1.227H7.231c-.662 0-1.18-.568-1.12-1.227L6.34 18m11.318 0h1.091A2.25 2.25 0 0 0 21 15.75V9.456c0-1.081-.768-2.015-1.837-2.175a48.055 48.055 0 0 0-1.913-.247M6.34 18H5.25A2.25 2.25 0 0 1 3 15.75V9.456c0-1.081.768-2.015 1.837-2.175a48.041 48.041 0 0 1 1.913-.247m10.5 0a48.536 48.536 0 0 0-10.5 0m10.5 0V3.375c0-.621-.504-1.125-1.125-1.125h-8.25c-.621 0-1.125.504-1.125 1.125v3.659M18 10.5h.008v.008H18V10.5Zm-3 0h.008v.008H15V10.5Z"})])}function gv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M14.25 6.087c0-.355.186-.676.401-.959.221-.29.349-.634.349-1.003 0-1.036-1.007-1.875-2.25-1.875s-2.25.84-2.25 1.875c0 .369.128.713.349 1.003.215.283.401.604.401.959v0a.64.64 0 0 1-.657.643 48.39 48.39 0 0 1-4.163-.3c.186 1.613.293 3.25.315 4.907a.656.656 0 0 1-.658.663v0c-.355 0-.676-.186-.959-.401a1.647 1.647 0 0 0-1.003-.349c-1.036 0-1.875 1.007-1.875 2.25s.84 2.25 1.875 2.25c.369 0 .713-.128 1.003-.349.283-.215.604-.401.959-.401v0c.31 0 .555.26.532.57a48.039 48.039 0 0 1-.642 5.056c1.518.19 3.058.309 4.616.354a.64.64 0 0 0 .657-.643v0c0-.355-.186-.676-.401-.959a1.647 1.647 0 0 1-.349-1.003c0-1.035 1.008-1.875 2.25-1.875 1.243 0 2.25.84 2.25 1.875 0 .369-.128.713-.349 1.003-.215.283-.4.604-.4.959v0c0 .333.277.599.61.58a48.1 48.1 0 0 0 5.427-.63 48.05 48.05 0 0 0 .582-4.717.532.532 0 0 0-.533-.57v0c-.355 0-.676.186-.959.401-.29.221-.634.349-1.003.349-1.035 0-1.875-1.007-1.875-2.25s.84-2.25 1.875-2.25c.37 0 .713.128 1.003.349.283.215.604.401.96.401v0a.656.656 0 0 0 .658-.663 48.422 48.422 0 0 0-.37-5.36c-1.886.342-3.81.574-5.766.689a.578.578 0 0 1-.61-.58v0Z"})])}function wv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 4.875c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5A1.125 1.125 0 0 1 3.75 9.375v-4.5ZM3.75 14.625c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5a1.125 1.125 0 0 1-1.125-1.125v-4.5ZM13.5 4.875c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5A1.125 1.125 0 0 1 13.5 9.375v-4.5Z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6.75 6.75h.75v.75h-.75v-.75ZM6.75 16.5h.75v.75h-.75v-.75ZM16.5 6.75h.75v.75h-.75v-.75ZM13.5 13.5h.75v.75h-.75v-.75ZM13.5 19.5h.75v.75h-.75v-.75ZM19.5 13.5h.75v.75h-.75v-.75ZM19.5 19.5h.75v.75h-.75v-.75ZM16.5 16.5h.75v.75h-.75v-.75Z"})])}function kv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.879 7.519c1.171-1.025 3.071-1.025 4.242 0 1.172 1.025 1.172 2.687 0 3.712-.203.179-.43.326-.67.442-.745.361-1.45.999-1.45 1.827v.75M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Zm-9 5.25h.008v.008H12v-.008Z"})])}function _v(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 12h16.5m-16.5 3.75h16.5M3.75 19.5h16.5M5.625 4.5h12.75a1.875 1.875 0 0 1 0 3.75H5.625a1.875 1.875 0 0 1 0-3.75Z"})])}function xv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m3.75 7.5 16.5-4.125M12 6.75c-2.708 0-5.363.224-7.948.655C2.999 7.58 2.25 8.507 2.25 9.574v9.176A2.25 2.25 0 0 0 4.5 21h15a2.25 2.25 0 0 0 2.25-2.25V9.574c0-1.067-.75-1.994-1.802-2.169A48.329 48.329 0 0 0 12 6.75Zm-1.683 6.443-.005.005-.006-.005.006-.005.005.005Zm-.005 2.127-.005-.006.005-.005.005.005-.005.005Zm-2.116-.006-.005.006-.006-.006.005-.005.006.005Zm-.005-2.116-.006-.005.006-.005.005.005-.005.005ZM9.255 10.5v.008h-.008V10.5h.008Zm3.249 1.88-.007.004-.003-.007.006-.003.004.006Zm-1.38 5.126-.003-.006.006-.004.004.007-.006.003Zm.007-6.501-.003.006-.007-.003.004-.007.006.004Zm1.37 5.129-.007-.004.004-.006.006.003-.004.007Zm.504-1.877h-.008v-.007h.008v.007ZM9.255 18v.008h-.008V18h.008Zm-3.246-1.87-.007.004L6 16.127l.006-.003.004.006Zm1.366-5.119-.004-.006.006-.004.004.007-.006.003ZM7.38 17.5l-.003.006-.007-.003.004-.007.006.004Zm-1.376-5.116L6 12.38l.003-.007.007.004-.004.007Zm-.5 1.873h-.008v-.007h.008v.007ZM17.25 12.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5Zm0 4.5a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5Z"})])}function bv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m9 14.25 6-6m4.5-3.493V21.75l-3.75-1.5-3.75 1.5-3.75-1.5-3.75 1.5V4.757c0-1.108.806-2.057 1.907-2.185a48.507 48.507 0 0 1 11.186 0c1.1.128 1.907 1.077 1.907 2.185ZM9.75 9h.008v.008H9.75V9Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm4.125 4.5h.008v.008h-.008V13.5Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"})])}function yv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 9.75h4.875a2.625 2.625 0 0 1 0 5.25H12M8.25 9.75 10.5 7.5M8.25 9.75 10.5 12m9-7.243V21.75l-3.75-1.5-3.75 1.5-3.75-1.5-3.75 1.5V4.757c0-1.108.806-2.057 1.907-2.185a48.507 48.507 0 0 1 11.186 0c1.1.128 1.907 1.077 1.907 2.185Z"})])}function Mv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 7.125C2.25 6.504 2.754 6 3.375 6h6c.621 0 1.125.504 1.125 1.125v3.75c0 .621-.504 1.125-1.125 1.125h-6a1.125 1.125 0 0 1-1.125-1.125v-3.75ZM14.25 8.625c0-.621.504-1.125 1.125-1.125h5.25c.621 0 1.125.504 1.125 1.125v8.25c0 .621-.504 1.125-1.125 1.125h-5.25a1.125 1.125 0 0 1-1.125-1.125v-8.25ZM3.75 16.125c0-.621.504-1.125 1.125-1.125h5.25c.621 0 1.125.504 1.125 1.125v2.25c0 .621-.504 1.125-1.125 1.125h-5.25a1.125 1.125 0 0 1-1.125-1.125v-2.25Z"})])}function Av(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 6.878V6a2.25 2.25 0 0 1 2.25-2.25h7.5A2.25 2.25 0 0 1 18 6v.878m-12 0c.235-.083.487-.128.75-.128h10.5c.263 0 .515.045.75.128m-12 0A2.25 2.25 0 0 0 4.5 9v.878m13.5-3A2.25 2.25 0 0 1 19.5 9v.878m0 0a2.246 2.246 0 0 0-.75-.128H5.25c-.263 0-.515.045-.75.128m15 0A2.25 2.25 0 0 1 21 12v6a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 18v-6c0-.98.626-1.813 1.5-2.122"})])}function Cv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.59 14.37a6 6 0 0 1-5.84 7.38v-4.8m5.84-2.58a14.98 14.98 0 0 0 6.16-12.12A14.98 14.98 0 0 0 9.631 8.41m5.96 5.96a14.926 14.926 0 0 1-5.841 2.58m-.119-8.54a6 6 0 0 0-7.381 5.84h4.8m2.581-5.84a14.927 14.927 0 0 0-2.58 5.84m2.699 2.7c-.103.021-.207.041-.311.06a15.09 15.09 0 0 1-2.448-2.448 14.9 14.9 0 0 1 .06-.312m-2.24 2.39a4.493 4.493 0 0 0-1.757 4.306 4.493 4.493 0 0 0 4.306-1.758M16.5 9a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0Z"})])}function Iv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12.75 19.5v-.75a7.5 7.5 0 0 0-7.5-7.5H4.5m0-6.75h.75c7.87 0 14.25 6.38 14.25 14.25v.75M6 18.75a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z"})])}function $v(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 3v17.25m0 0c-1.472 0-2.882.265-4.185.75M12 20.25c1.472 0 2.882.265 4.185.75M18.75 4.97A48.416 48.416 0 0 0 12 4.5c-2.291 0-4.545.16-6.75.47m13.5 0c1.01.143 2.01.317 3 .52m-3-.52 2.62 10.726c.122.499-.106 1.028-.589 1.202a5.988 5.988 0 0 1-2.031.352 5.988 5.988 0 0 1-2.031-.352c-.483-.174-.711-.703-.59-1.202L18.75 4.971Zm-16.5.52c.99-.203 1.99-.377 3-.52m0 0 2.62 10.726c.122.499-.106 1.028-.589 1.202a5.989 5.989 0 0 1-2.031.352 5.989 5.989 0 0 1-2.031-.352c-.483-.174-.711-.703-.59-1.202L5.25 4.971Z"})])}function Sv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m7.848 8.25 1.536.887M7.848 8.25a3 3 0 1 1-5.196-3 3 3 0 0 1 5.196 3Zm1.536.887a2.165 2.165 0 0 1 1.083 1.839c.005.351.054.695.14 1.024M9.384 9.137l2.077 1.199M7.848 15.75l1.536-.887m-1.536.887a3 3 0 1 1-5.196 3 3 3 0 0 1 5.196-3Zm1.536-.887a2.165 2.165 0 0 0 1.083-1.838c.005-.352.054-.695.14-1.025m-1.223 2.863 2.077-1.199m0-3.328a4.323 4.323 0 0 1 2.068-1.379l5.325-1.628a4.5 4.5 0 0 1 2.48-.044l.803.215-7.794 4.5m-2.882-1.664A4.33 4.33 0 0 0 10.607 12m3.736 0 7.794 4.5-.802.215a4.5 4.5 0 0 1-2.48-.043l-5.326-1.629a4.324 4.324 0 0 1-2.068-1.379M14.343 12l-2.882 1.664"})])}function Ev(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5.25 14.25h13.5m-13.5 0a3 3 0 0 1-3-3m3 3a3 3 0 1 0 0 6h13.5a3 3 0 1 0 0-6m-16.5-3a3 3 0 0 1 3-3h13.5a3 3 0 0 1 3 3m-19.5 0a4.5 4.5 0 0 1 .9-2.7L5.737 5.1a3.375 3.375 0 0 1 2.7-1.35h7.126c1.062 0 2.062.5 2.7 1.35l2.587 3.45a4.5 4.5 0 0 1 .9 2.7m0 0a3 3 0 0 1-3 3m0 3h.008v.008h-.008v-.008Zm0-6h.008v.008h-.008v-.008Zm-3 6h.008v.008h-.008v-.008Zm0-6h.008v.008h-.008v-.008Z"})])}function Lv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21.75 17.25v-.228a4.5 4.5 0 0 0-.12-1.03l-2.268-9.64a3.375 3.375 0 0 0-3.285-2.602H7.923a3.375 3.375 0 0 0-3.285 2.602l-2.268 9.64a4.5 4.5 0 0 0-.12 1.03v.228m19.5 0a3 3 0 0 1-3 3H5.25a3 3 0 0 1-3-3m19.5 0a3 3 0 0 0-3-3H5.25a3 3 0 0 0-3 3m16.5 0h.008v.008h-.008v-.008Zm-3 0h.008v.008h-.008v-.008Z"})])}function Tv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.217 10.907a2.25 2.25 0 1 0 0 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186 9.566-5.314m-9.566 7.5 9.566 5.314m0 0a2.25 2.25 0 1 0 3.935 2.186 2.25 2.25 0 0 0-3.935-2.186Zm0-12.814a2.25 2.25 0 1 0 3.933-2.185 2.25 2.25 0 0 0-3.933 2.185Z"})])}function Pv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 12.75 11.25 15 15 9.75m-3-7.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.749c0 5.592 3.824 10.29 9 11.623 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.571-.598-3.751h-.152c-3.196 0-6.1-1.248-8.25-3.285Z"})])}function Ov(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 9v3.75m0-10.036A11.959 11.959 0 0 1 3.598 6 11.99 11.99 0 0 0 3 9.75c0 5.592 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.31-.21-2.57-.598-3.75h-.152c-3.196 0-6.1-1.25-8.25-3.286Zm0 13.036h.008v.008H12v-.008Z"})])}function Bv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 10.5V6a3.75 3.75 0 1 0-7.5 0v4.5m11.356-1.993 1.263 12c.07.665-.45 1.243-1.119 1.243H4.25a1.125 1.125 0 0 1-1.12-1.243l1.264-12A1.125 1.125 0 0 1 5.513 7.5h12.974c.576 0 1.059.435 1.119 1.007ZM8.625 10.5a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Zm7.5 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"})])}function Vv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M2.25 3h1.386c.51 0 .955.343 1.087.835l.383 1.437M7.5 14.25a3 3 0 0 0-3 3h15.75m-12.75-3h11.218c1.121-2.3 2.1-4.684 2.924-7.138a60.114 60.114 0 0 0-16.536-1.84M7.5 14.25 5.106 5.272M6 20.25a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Zm12.75 0a.75.75 0 1 1-1.5 0 .75.75 0 0 1 1.5 0Z"})])}function jv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m3 3 8.735 8.735m0 0a.374.374 0 1 1 .53.53m-.53-.53.53.53m0 0L21 21M14.652 9.348a3.75 3.75 0 0 1 0 5.304m2.121-7.425a6.75 6.75 0 0 1 0 9.546m2.121-11.667c3.808 3.807 3.808 9.98 0 13.788m-9.546-4.242a3.733 3.733 0 0 1-1.06-2.122m-1.061 4.243a6.75 6.75 0 0 1-1.625-6.929m-.496 9.05c-3.068-3.067-3.664-7.67-1.79-11.334M12 12h.008v.008H12V12Z"})])}function Hv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.348 14.652a3.75 3.75 0 0 1 0-5.304m5.304 0a3.75 3.75 0 0 1 0 5.304m-7.425 2.121a6.75 6.75 0 0 1 0-9.546m9.546 0a6.75 6.75 0 0 1 0 9.546M5.106 18.894c-3.808-3.807-3.808-9.98 0-13.788m13.788 0c3.808 3.807 3.808 9.98 0 13.788M12 12h.008v.008H12V12Zm.375 0a.375.375 0 1 1-.75 0 .375.375 0 0 1 .75 0Z"})])}function Nv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m9 20.247 6-16.5"})])}function Dv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z"})])}function Rv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M19.114 5.636a9 9 0 0 1 0 12.728M16.463 8.288a5.25 5.25 0 0 1 0 7.424M6.75 8.25l4.72-4.72a.75.75 0 0 1 1.28.53v15.88a.75.75 0 0 1-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.009 9.009 0 0 1 2.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75Z"})])}function Fv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M17.25 9.75 19.5 12m0 0 2.25 2.25M19.5 12l2.25-2.25M19.5 12l-2.25 2.25m-10.5-6 4.72-4.72a.75.75 0 0 1 1.28.53v15.88a.75.75 0 0 1-1.28.53l-4.72-4.72H4.51c-.88 0-1.704-.507-1.938-1.354A9.009 9.009 0 0 1 2.25 12c0-.83.112-1.633.322-2.396C2.806 8.756 3.63 8.25 4.51 8.25H6.75Z"})])}function Zv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.5 8.25V6a2.25 2.25 0 0 0-2.25-2.25H6A2.25 2.25 0 0 0 3.75 6v8.25A2.25 2.25 0 0 0 6 16.5h2.25m8.25-8.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-7.5A2.25 2.25 0 0 1 8.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 0 0-2.25 2.25v6"})])}function Uv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6.429 9.75 2.25 12l4.179 2.25m0-4.5 5.571 3 5.571-3m-11.142 0L2.25 7.5 12 2.25l9.75 5.25-4.179 2.25m0 0L21.75 12l-4.179 2.25m0 0 4.179 2.25L12 21.75 2.25 16.5l4.179-2.25m11.142 0-5.571 3-5.571-3"})])}function zv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.75 6A2.25 2.25 0 0 1 6 3.75h2.25A2.25 2.25 0 0 1 10.5 6v2.25a2.25 2.25 0 0 1-2.25 2.25H6a2.25 2.25 0 0 1-2.25-2.25V6ZM3.75 15.75A2.25 2.25 0 0 1 6 13.5h2.25a2.25 2.25 0 0 1 2.25 2.25V18a2.25 2.25 0 0 1-2.25 2.25H6A2.25 2.25 0 0 1 3.75 18v-2.25ZM13.5 6a2.25 2.25 0 0 1 2.25-2.25H18A2.25 2.25 0 0 1 20.25 6v2.25A2.25 2.25 0 0 1 18 10.5h-2.25a2.25 2.25 0 0 1-2.25-2.25V6ZM13.5 15.75a2.25 2.25 0 0 1 2.25-2.25H18a2.25 2.25 0 0 1 2.25 2.25V18A2.25 2.25 0 0 1 18 20.25h-2.25A2.25 2.25 0 0 1 13.5 18v-2.25Z"})])}function Wv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M13.5 16.875h3.375m0 0h3.375m-3.375 0V13.5m0 3.375v3.375M6 10.5h2.25a2.25 2.25 0 0 0 2.25-2.25V6a2.25 2.25 0 0 0-2.25-2.25H6A2.25 2.25 0 0 0 3.75 6v2.25A2.25 2.25 0 0 0 6 10.5Zm0 9.75h2.25A2.25 2.25 0 0 0 10.5 18v-2.25a2.25 2.25 0 0 0-2.25-2.25H6a2.25 2.25 0 0 0-2.25 2.25V18A2.25 2.25 0 0 0 6 20.25Zm9.75-9.75H18a2.25 2.25 0 0 0 2.25-2.25V6A2.25 2.25 0 0 0 18 3.75h-2.25A2.25 2.25 0 0 0 13.5 6v2.25a2.25 2.25 0 0 0 2.25 2.25Z"})])}function Gv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M11.48 3.499a.562.562 0 0 1 1.04 0l2.125 5.111a.563.563 0 0 0 .475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 0 0-.182.557l1.285 5.385a.562.562 0 0 1-.84.61l-4.725-2.885a.562.562 0 0 0-.586 0L6.982 20.54a.562.562 0 0 1-.84-.61l1.285-5.386a.562.562 0 0 0-.182-.557l-4.204-3.602a.562.562 0 0 1 .321-.988l5.518-.442a.563.563 0 0 0 .475-.345L11.48 3.5Z"})])}function Yv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 9.563C9 9.252 9.252 9 9.563 9h4.874c.311 0 .563.252.563.563v4.874c0 .311-.252.563-.563.563H9.564A.562.562 0 0 1 9 14.437V9.564Z"})])}function qv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M5.25 7.5A2.25 2.25 0 0 1 7.5 5.25h9a2.25 2.25 0 0 1 2.25 2.25v9a2.25 2.25 0 0 1-2.25 2.25h-9a2.25 2.25 0 0 1-2.25-2.25v-9Z"})])}function Xv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 12a8.912 8.912 0 0 1-.318-.079c-1.585-.424-2.904-1.247-3.76-2.236-.873-1.009-1.265-2.19-.968-3.301.59-2.2 3.663-3.29 6.863-2.432A8.186 8.186 0 0 1 16.5 5.21M6.42 17.81c.857.99 2.176 1.812 3.761 2.237 3.2.858 6.274-.23 6.863-2.431.233-.868.044-1.779-.465-2.617M3.75 12h16.5"})])}function Kv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M12 3v2.25m6.364.386-1.591 1.591M21 12h-2.25m-.386 6.364-1.591-1.591M12 18.75V21m-4.773-4.227-1.591 1.591M5.25 12H3m4.227-4.773L5.636 5.636M15.75 12a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0Z"})])}function Qv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.098 19.902a3.75 3.75 0 0 0 5.304 0l6.401-6.402M6.75 21A3.75 3.75 0 0 1 3 17.25V4.125C3 3.504 3.504 3 4.125 3h5.25c.621 0 1.125.504 1.125 1.125v4.072M6.75 21a3.75 3.75 0 0 0 3.75-3.75V8.197M6.75 21h13.125c.621 0 1.125-.504 1.125-1.125v-5.25c0-.621-.504-1.125-1.125-1.125h-4.072M10.5 8.197l2.88-2.88c.438-.439 1.15-.439 1.59 0l3.712 3.713c.44.44.44 1.152 0 1.59l-2.879 2.88M6.75 17.25h.008v.008H6.75v-.008Z"})])}function Jv(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3.375 19.5h17.25m-17.25 0a1.125 1.125 0 0 1-1.125-1.125M3.375 19.5h7.5c.621 0 1.125-.504 1.125-1.125m-9.75 0V5.625m0 12.75v-1.5c0-.621.504-1.125 1.125-1.125m18.375 2.625V5.625m0 12.75c0 .621-.504 1.125-1.125 1.125m1.125-1.125v-1.5c0-.621-.504-1.125-1.125-1.125m0 3.75h-7.5A1.125 1.125 0 0 1 12 18.375m9.75-12.75c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125m19.5 0v1.5c0 .621-.504 1.125-1.125 1.125M2.25 5.625v1.5c0 .621.504 1.125 1.125 1.125m0 0h17.25m-17.25 0h7.5c.621 0 1.125.504 1.125 1.125M3.375 8.25c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125m17.25-3.75h-7.5c-.621 0-1.125.504-1.125 1.125m8.625-1.125c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125m-17.25 0h7.5m-7.5 0c-.621 0-1.125.504-1.125 1.125v1.5c0 .621.504 1.125 1.125 1.125M12 10.875v-1.5m0 1.5c0 .621-.504 1.125-1.125 1.125M12 10.875c0 .621.504 1.125 1.125 1.125m-2.25 0c.621 0 1.125.504 1.125 1.125M13.125 12h7.5m-7.5 0c-.621 0-1.125.504-1.125 1.125M20.625 12c.621 0 1.125.504 1.125 1.125v1.5c0 .621-.504 1.125-1.125 1.125m-17.25 0h7.5M12 14.625v-1.5m0 1.5c0 .621-.504 1.125-1.125 1.125M12 14.625c0 .621.504 1.125 1.125 1.125m-2.25 0c.621 0 1.125.504 1.125 1.125m0 1.5v-1.5m0 0c0-.621.504-1.125 1.125-1.125m0 0h7.5"})])}function e7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9.568 3H5.25A2.25 2.25 0 0 0 3 5.25v4.318c0 .597.237 1.17.659 1.591l9.581 9.581c.699.699 1.78.872 2.607.33a18.095 18.095 0 0 0 5.223-5.223c.542-.827.369-1.908-.33-2.607L11.16 3.66A2.25 2.25 0 0 0 9.568 3Z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 6h.008v.008H6V6Z"})])}function t7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.5 6v.75m0 3v.75m0 3v.75m0 3V18m-9-5.25h5.25M7.5 15h3M3.375 5.25c-.621 0-1.125.504-1.125 1.125v3.026a2.999 2.999 0 0 1 0 5.198v3.026c0 .621.504 1.125 1.125 1.125h17.25c.621 0 1.125-.504 1.125-1.125v-3.026a2.999 2.999 0 0 1 0-5.198V6.375c0-.621-.504-1.125-1.125-1.125H3.375Z"})])}function n7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m14.74 9-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 0 1-2.244 2.077H8.084a2.25 2.25 0 0 1-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 0 0-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 0 1 3.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 0 0-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 0 0-7.5 0"})])}function r7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M16.5 18.75h-9m9 0a3 3 0 0 1 3 3h-15a3 3 0 0 1 3-3m9 0v-3.375c0-.621-.503-1.125-1.125-1.125h-.871M7.5 18.75v-3.375c0-.621.504-1.125 1.125-1.125h.872m5.007 0H9.497m5.007 0a7.454 7.454 0 0 1-.982-3.172M9.497 14.25a7.454 7.454 0 0 0 .981-3.172M5.25 4.236c-.982.143-1.954.317-2.916.52A6.003 6.003 0 0 0 7.73 9.728M5.25 4.236V4.5c0 2.108.966 3.99 2.48 5.228M5.25 4.236V2.721C7.456 2.41 9.71 2.25 12 2.25c2.291 0 4.545.16 6.75.47v1.516M7.73 9.728a6.726 6.726 0 0 0 2.748 1.35m8.272-6.842V4.5c0 2.108-.966 3.99-2.48 5.228m2.48-5.492a46.32 46.32 0 0 1 2.916.52 6.003 6.003 0 0 1-5.395 4.972m0 0a6.726 6.726 0 0 1-2.749 1.35m0 0a6.772 6.772 0 0 1-3.044 0"})])}function o7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.25 18.75a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m3 0h6m-9 0H3.375a1.125 1.125 0 0 1-1.125-1.125V14.25m17.25 4.5a1.5 1.5 0 0 1-3 0m3 0a1.5 1.5 0 0 0-3 0m3 0h1.125c.621 0 1.129-.504 1.09-1.124a17.902 17.902 0 0 0-3.213-9.193 2.056 2.056 0 0 0-1.58-.86H14.25M16.5 18.75h-2.25m0-11.177v-.958c0-.568-.422-1.048-.987-1.106a48.554 48.554 0 0 0-10.026 0 1.106 1.106 0 0 0-.987 1.106v7.635m12-6.677v6.677m0 4.5v-4.5m0 0h-12"})])}function a7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 20.25h12m-7.5-3v3m3-3v3m-10.125-3h17.25c.621 0 1.125-.504 1.125-1.125V4.875c0-.621-.504-1.125-1.125-1.125H3.375c-.621 0-1.125.504-1.125 1.125v11.25c0 .621.504 1.125 1.125 1.125Z"})])}function i7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M17.995 3.744v7.5a6 6 0 1 1-12 0v-7.5m-2.25 16.502h16.5"})])}function s7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M17.982 18.725A7.488 7.488 0 0 0 12 15.75a7.488 7.488 0 0 0-5.982 2.975m11.963 0a9 9 0 1 0-11.963 0m11.963 0A8.966 8.966 0 0 1 12 21a8.966 8.966 0 0 1-5.982-2.275M15 9.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})])}function l7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M18 18.72a9.094 9.094 0 0 0 3.741-.479 3 3 0 0 0-4.682-2.72m.94 3.198.001.031c0 .225-.012.447-.037.666A11.944 11.944 0 0 1 12 21c-2.17 0-4.207-.576-5.963-1.584A6.062 6.062 0 0 1 6 18.719m12 0a5.971 5.971 0 0 0-.941-3.197m0 0A5.995 5.995 0 0 0 12 12.75a5.995 5.995 0 0 0-5.058 2.772m0 0a3 3 0 0 0-4.681 2.72 8.986 8.986 0 0 0 3.74.477m.94-3.197a5.971 5.971 0 0 0-.94 3.197M15 6.75a3 3 0 1 1-6 0 3 3 0 0 1 6 0Zm6 3a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Zm-13.5 0a2.25 2.25 0 1 1-4.5 0 2.25 2.25 0 0 1 4.5 0Z"})])}function c7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M22 10.5h-6m-2.25-4.125a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0ZM4 19.235v-.11a6.375 6.375 0 0 1 12.75 0v.109A12.318 12.318 0 0 1 10.374 21c-2.331 0-4.512-.645-6.374-1.766Z"})])}function u7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M18 7.5v3m0 0v3m0-3h3m-3 0h-3m-2.25-4.125a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0ZM3 19.235v-.11a6.375 6.375 0 0 1 12.75 0v.109A12.318 12.318 0 0 1 9.374 21c-2.331 0-4.512-.645-6.374-1.766Z"})])}function d7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15.75 6a3.75 3.75 0 1 1-7.5 0 3.75 3.75 0 0 1 7.5 0ZM4.501 20.118a7.5 7.5 0 0 1 14.998 0A17.933 17.933 0 0 1 12 21.75c-2.676 0-5.216-.584-7.499-1.632Z"})])}function f7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M15 19.128a9.38 9.38 0 0 0 2.625.372 9.337 9.337 0 0 0 4.121-.952 4.125 4.125 0 0 0-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0Zm8.25 2.25a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z"})])}function h7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.745 3A23.933 23.933 0 0 0 3 12c0 3.183.62 6.22 1.745 9M19.5 3c.967 2.78 1.5 5.817 1.5 9s-.533 6.22-1.5 9M8.25 8.885l1.444-.89a.75.75 0 0 1 1.105.402l2.402 7.206a.75.75 0 0 0 1.104.401l1.445-.889m-8.25.75.213.09a1.687 1.687 0 0 0 2.062-.617l4.45-6.676a1.688 1.688 0 0 1 2.062-.618l.213.09"})])}function p7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m15.75 10.5 4.72-4.72a.75.75 0 0 1 1.28.53v11.38a.75.75 0 0 1-1.28.53l-4.72-4.72M12 18.75H4.5a2.25 2.25 0 0 1-2.25-2.25V9m12.841 9.091L16.5 19.5m-1.409-1.409c.407-.407.659-.97.659-1.591v-9a2.25 2.25 0 0 0-2.25-2.25h-9c-.621 0-1.184.252-1.591.659m12.182 12.182L2.909 5.909M1.5 4.5l1.409 1.409"})])}function v7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m15.75 10.5 4.72-4.72a.75.75 0 0 1 1.28.53v11.38a.75.75 0 0 1-1.28.53l-4.72-4.72M4.5 18.75h9a2.25 2.25 0 0 0 2.25-2.25v-9a2.25 2.25 0 0 0-2.25-2.25h-9A2.25 2.25 0 0 0 2.25 7.5v9a2.25 2.25 0 0 0 2.25 2.25Z"})])}function m7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M9 4.5v15m6-15v15m-10.875 0h15.75c.621 0 1.125-.504 1.125-1.125V5.625c0-.621-.504-1.125-1.125-1.125H4.125C3.504 4.5 3 5.004 3 5.625v12.75c0 .621.504 1.125 1.125 1.125Z"})])}function g7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M7.5 3.75H6A2.25 2.25 0 0 0 3.75 6v1.5M16.5 3.75H18A2.25 2.25 0 0 1 20.25 6v1.5m0 9V18A2.25 2.25 0 0 1 18 20.25h-1.5m-9 0H6A2.25 2.25 0 0 1 3.75 18v-1.5M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0Z"})])}function w7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21 12a2.25 2.25 0 0 0-2.25-2.25H15a3 3 0 1 1-6 0H5.25A2.25 2.25 0 0 0 3 12m18 0v6a2.25 2.25 0 0 1-2.25 2.25H5.25A2.25 2.25 0 0 1 3 18v-6m18 0V9M3 12V9m18 0a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 9m18 0V6a2.25 2.25 0 0 0-2.25-2.25H5.25A2.25 2.25 0 0 0 3 6v3"})])}function k7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M8.288 15.038a5.25 5.25 0 0 1 7.424 0M5.106 11.856c3.807-3.808 9.98-3.808 13.788 0M1.924 8.674c5.565-5.565 14.587-5.565 20.152 0M12.53 18.22l-.53.53-.53-.53a.75.75 0 0 1 1.06 0Z"})])}function _7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M3 8.25V18a2.25 2.25 0 0 0 2.25 2.25h13.5A2.25 2.25 0 0 0 21 18V8.25m-18 0V6a2.25 2.25 0 0 1 2.25-2.25h13.5A2.25 2.25 0 0 1 21 6v2.25m-18 0h18M5.25 6h.008v.008H5.25V6ZM7.5 6h.008v.008H7.5V6Zm2.25 0h.008v.008H9.75V6Z"})])}function x7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M11.42 15.17 17.25 21A2.652 2.652 0 0 0 21 17.25l-5.877-5.877M11.42 15.17l2.496-3.03c.317-.384.74-.626 1.208-.766M11.42 15.17l-4.655 5.653a2.548 2.548 0 1 1-3.586-3.586l6.837-5.63m5.108-.233c.55-.164 1.163-.188 1.743-.14a4.5 4.5 0 0 0 4.486-6.336l-3.276 3.277a3.004 3.004 0 0 1-2.25-2.25l3.276-3.276a4.5 4.5 0 0 0-6.336 4.486c.091 1.076-.071 2.264-.904 2.95l-.102.085m-1.745 1.437L5.909 7.5H4.5L2.25 3.75l1.5-1.5L7.5 4.5v1.409l4.26 4.26m-1.745 1.437 1.745-1.437m6.615 8.206L15.75 15.75M4.867 19.125h.008v.008h-.008v-.008Z"})])}function b7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M21.75 6.75a4.5 4.5 0 0 1-4.884 4.484c-1.076-.091-2.264.071-2.95.904l-7.152 8.684a2.548 2.548 0 1 1-3.586-3.586l8.684-7.152c.833-.686.995-1.874.904-2.95a4.5 4.5 0 0 1 6.336-4.486l-3.276 3.276a3.004 3.004 0 0 0 2.25 2.25l3.276-3.276c.256.565.398 1.192.398 1.852Z"}),l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M4.867 19.125h.008v.008h-.008v-.008Z"})])}function y7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"m9.75 9.75 4.5 4.5m0-4.5-4.5 4.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"})])}function M7(e,t){return a(),s("svg",{xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24","stroke-width":"1.5",stroke:"currentColor","aria-hidden":"true","data-slot":"icon"},[l("path",{"stroke-linecap":"round","stroke-linejoin":"round",d:"M6 18 18 6M6 6l12 12"})])}const Qo=Object.freeze(Object.defineProperty({__proto__:null,AcademicCapIcon:M3,AdjustmentsHorizontalIcon:A3,AdjustmentsVerticalIcon:C3,ArchiveBoxArrowDownIcon:I3,ArchiveBoxIcon:S3,ArchiveBoxXMarkIcon:$3,ArrowDownCircleIcon:E3,ArrowDownIcon:V3,ArrowDownLeftIcon:L3,ArrowDownOnSquareIcon:P3,ArrowDownOnSquareStackIcon:T3,ArrowDownRightIcon:O3,ArrowDownTrayIcon:B3,ArrowLeftCircleIcon:j3,ArrowLeftEndOnRectangleIcon:H3,ArrowLeftIcon:R3,ArrowLeftOnRectangleIcon:N3,ArrowLeftStartOnRectangleIcon:D3,ArrowLongDownIcon:F3,ArrowLongLeftIcon:Z3,ArrowLongRightIcon:U3,ArrowLongUpIcon:z3,ArrowPathIcon:G3,ArrowPathRoundedSquareIcon:W3,ArrowRightCircleIcon:Y3,ArrowRightEndOnRectangleIcon:q3,ArrowRightIcon:Q3,ArrowRightOnRectangleIcon:X3,ArrowRightStartOnRectangleIcon:K3,ArrowSmallDownIcon:J3,ArrowSmallLeftIcon:ef,ArrowSmallRightIcon:tf,ArrowSmallUpIcon:nf,ArrowTopRightOnSquareIcon:rf,ArrowTrendingDownIcon:of,ArrowTrendingUpIcon:af,ArrowTurnDownLeftIcon:sf,ArrowTurnDownRightIcon:lf,ArrowTurnLeftDownIcon:cf,ArrowTurnLeftUpIcon:uf,ArrowTurnRightDownIcon:df,ArrowTurnRightUpIcon:ff,ArrowTurnUpLeftIcon:hf,ArrowTurnUpRightIcon:pf,ArrowUpCircleIcon:vf,ArrowUpIcon:xf,ArrowUpLeftIcon:mf,ArrowUpOnSquareIcon:wf,ArrowUpOnSquareStackIcon:gf,ArrowUpRightIcon:kf,ArrowUpTrayIcon:_f,ArrowUturnDownIcon:bf,ArrowUturnLeftIcon:yf,ArrowUturnRightIcon:Mf,ArrowUturnUpIcon:Af,ArrowsPointingInIcon:Cf,ArrowsPointingOutIcon:If,ArrowsRightLeftIcon:$f,ArrowsUpDownIcon:Sf,AtSymbolIcon:Ef,BackspaceIcon:Lf,BackwardIcon:Tf,BanknotesIcon:Pf,Bars2Icon:Of,Bars3BottomLeftIcon:Bf,Bars3BottomRightIcon:Vf,Bars3CenterLeftIcon:jf,Bars3Icon:Hf,Bars4Icon:Nf,BarsArrowDownIcon:Df,BarsArrowUpIcon:Rf,Battery0Icon:Ff,Battery100Icon:Zf,Battery50Icon:Uf,BeakerIcon:zf,BellAlertIcon:Wf,BellIcon:qf,BellSlashIcon:Gf,BellSnoozeIcon:Yf,BoldIcon:Xf,BoltIcon:Qf,BoltSlashIcon:Kf,BookOpenIcon:Jf,BookmarkIcon:nh,BookmarkSlashIcon:eh,BookmarkSquareIcon:th,BriefcaseIcon:rh,BugAntIcon:oh,BuildingLibraryIcon:ah,BuildingOffice2Icon:ih,BuildingOfficeIcon:sh,BuildingStorefrontIcon:lh,CakeIcon:ch,CalculatorIcon:uh,CalendarDateRangeIcon:dh,CalendarDaysIcon:fh,CalendarIcon:hh,CameraIcon:ph,ChartBarIcon:mh,ChartBarSquareIcon:vh,ChartPieIcon:gh,ChatBubbleBottomCenterIcon:kh,ChatBubbleBottomCenterTextIcon:wh,ChatBubbleLeftEllipsisIcon:_h,ChatBubbleLeftIcon:bh,ChatBubbleLeftRightIcon:xh,ChatBubbleOvalLeftEllipsisIcon:yh,ChatBubbleOvalLeftIcon:Mh,CheckBadgeIcon:Ah,CheckCircleIcon:Ch,CheckIcon:Ih,ChevronDoubleDownIcon:$h,ChevronDoubleLeftIcon:Sh,ChevronDoubleRightIcon:Eh,ChevronDoubleUpIcon:Lh,ChevronDownIcon:Th,ChevronLeftIcon:Ph,ChevronRightIcon:Oh,ChevronUpDownIcon:Bh,ChevronUpIcon:Vh,CircleStackIcon:jh,ClipboardDocumentCheckIcon:Hh,ClipboardDocumentIcon:Dh,ClipboardDocumentListIcon:Nh,ClipboardIcon:Rh,ClockIcon:Fh,CloudArrowDownIcon:Zh,CloudArrowUpIcon:Uh,CloudIcon:zh,CodeBracketIcon:Gh,CodeBracketSquareIcon:Wh,Cog6ToothIcon:Yh,Cog8ToothIcon:qh,CogIcon:Xh,CommandLineIcon:Kh,ComputerDesktopIcon:Qh,CpuChipIcon:Jh,CreditCardIcon:ep,CubeIcon:np,CubeTransparentIcon:tp,CurrencyBangladeshiIcon:rp,CurrencyDollarIcon:op,CurrencyEuroIcon:ap,CurrencyPoundIcon:ip,CurrencyRupeeIcon:sp,CurrencyYenIcon:lp,CursorArrowRaysIcon:cp,CursorArrowRippleIcon:up,DevicePhoneMobileIcon:dp,DeviceTabletIcon:fp,DivideIcon:hp,DocumentArrowDownIcon:pp,DocumentArrowUpIcon:vp,DocumentChartBarIcon:mp,DocumentCheckIcon:gp,DocumentCurrencyBangladeshiIcon:wp,DocumentCurrencyDollarIcon:kp,DocumentCurrencyEuroIcon:_p,DocumentCurrencyPoundIcon:xp,DocumentCurrencyRupeeIcon:bp,DocumentCurrencyYenIcon:yp,DocumentDuplicateIcon:Mp,DocumentIcon:Sp,DocumentMagnifyingGlassIcon:Ap,DocumentMinusIcon:Cp,DocumentPlusIcon:Ip,DocumentTextIcon:$p,EllipsisHorizontalCircleIcon:Ep,EllipsisHorizontalIcon:Lp,EllipsisVerticalIcon:Tp,EnvelopeIcon:Op,EnvelopeOpenIcon:Pp,EqualsIcon:Bp,ExclamationCircleIcon:Vp,ExclamationTriangleIcon:jp,EyeDropperIcon:Hp,EyeIcon:Dp,EyeSlashIcon:Np,FaceFrownIcon:Rp,FaceSmileIcon:Fp,FilmIcon:Zp,FingerPrintIcon:Up,FireIcon:zp,FlagIcon:Wp,FolderArrowDownIcon:Gp,FolderIcon:Kp,FolderMinusIcon:Yp,FolderOpenIcon:qp,FolderPlusIcon:Xp,ForwardIcon:Qp,FunnelIcon:Jp,GifIcon:e4,GiftIcon:n4,GiftTopIcon:t4,GlobeAltIcon:r4,GlobeAmericasIcon:o4,GlobeAsiaAustraliaIcon:a4,GlobeEuropeAfricaIcon:i4,H1Icon:s4,H2Icon:l4,H3Icon:c4,HandRaisedIcon:u4,HandThumbDownIcon:d4,HandThumbUpIcon:f4,HashtagIcon:h4,HeartIcon:p4,HomeIcon:m4,HomeModernIcon:v4,IdentificationIcon:g4,InboxArrowDownIcon:w4,InboxIcon:_4,InboxStackIcon:k4,InformationCircleIcon:x4,ItalicIcon:b4,KeyIcon:y4,LanguageIcon:M4,LifebuoyIcon:A4,LightBulbIcon:C4,LinkIcon:$4,LinkSlashIcon:I4,ListBulletIcon:S4,LockClosedIcon:E4,LockOpenIcon:L4,MagnifyingGlassCircleIcon:T4,MagnifyingGlassIcon:B4,MagnifyingGlassMinusIcon:P4,MagnifyingGlassPlusIcon:O4,MapIcon:j4,MapPinIcon:V4,MegaphoneIcon:H4,MicrophoneIcon:N4,MinusCircleIcon:D4,MinusIcon:F4,MinusSmallIcon:R4,MoonIcon:Z4,MusicalNoteIcon:U4,NewspaperIcon:z4,NoSymbolIcon:W4,NumberedListIcon:G4,PaintBrushIcon:Y4,PaperAirplaneIcon:q4,PaperClipIcon:X4,PauseCircleIcon:K4,PauseIcon:Q4,PencilIcon:ev,PencilSquareIcon:J4,PercentBadgeIcon:tv,PhoneArrowDownLeftIcon:nv,PhoneArrowUpRightIcon:rv,PhoneIcon:av,PhoneXMarkIcon:ov,PhotoIcon:iv,PlayCircleIcon:sv,PlayIcon:cv,PlayPauseIcon:lv,PlusCircleIcon:uv,PlusIcon:fv,PlusSmallIcon:dv,PowerIcon:hv,PresentationChartBarIcon:pv,PresentationChartLineIcon:vv,PrinterIcon:mv,PuzzlePieceIcon:gv,QrCodeIcon:wv,QuestionMarkCircleIcon:kv,QueueListIcon:_v,RadioIcon:xv,ReceiptPercentIcon:bv,ReceiptRefundIcon:yv,RectangleGroupIcon:Mv,RectangleStackIcon:Av,RocketLaunchIcon:Cv,RssIcon:Iv,ScaleIcon:$v,ScissorsIcon:Sv,ServerIcon:Lv,ServerStackIcon:Ev,ShareIcon:Tv,ShieldCheckIcon:Pv,ShieldExclamationIcon:Ov,ShoppingBagIcon:Bv,ShoppingCartIcon:Vv,SignalIcon:Hv,SignalSlashIcon:jv,SlashIcon:Nv,SparklesIcon:Dv,SpeakerWaveIcon:Rv,SpeakerXMarkIcon:Fv,Square2StackIcon:Zv,Square3Stack3DIcon:Uv,Squares2X2Icon:zv,SquaresPlusIcon:Wv,StarIcon:Gv,StopCircleIcon:Yv,StopIcon:qv,StrikethroughIcon:Xv,SunIcon:Kv,SwatchIcon:Qv,TableCellsIcon:Jv,TagIcon:e7,TicketIcon:t7,TrashIcon:n7,TrophyIcon:r7,TruckIcon:o7,TvIcon:a7,UnderlineIcon:i7,UserCircleIcon:s7,UserGroupIcon:l7,UserIcon:d7,UserMinusIcon:c7,UserPlusIcon:u7,UsersIcon:f7,VariableIcon:h7,VideoCameraIcon:v7,VideoCameraSlashIcon:p7,ViewColumnsIcon:m7,ViewfinderCircleIcon:g7,WalletIcon:w7,WifiIcon:k7,WindowIcon:_7,WrenchIcon:b7,WrenchScrewdriverIcon:x7,XCircleIcon:y7,XMarkIcon:M7},Symbol.toStringTag,{value:"Module"})),bi={"terraform-icon":"./custom_icons/terraform.png","aws-icon":"./custom_icons/aws.png","kafka-icon":"./custom_icons/kafka.png","gcp-icon":"./custom_icons/gcp.png"},A7=["src","alt"],C7={key:1,class:"icon-placeholder"},I7={__name:"CustomIcon",props:["name"],setup(e){const t=e,n=N(()=>bi[t.name]||null);return(r,o)=>n.value?(a(),s("img",{key:0,src:n.value,alt:e.name,class:"custom-icon"},null,8,A7)):(a(),s("span",C7,"?"))}},$7=D(I7,[["__scopeId","data-v-5bc0d446"]]),S7={__name:"Icon",props:["name"],setup(e){const t=e,n=N(()=>t.name in Qo);N(()=>t.name in bi);const r=N(()=>n.value?Qo[t.name]:null);return(o,i)=>n.value?(a(),j(Oe(r.value),{key:0,class:"icon"})):(a(),j($7,{key:1,name:e.name,class:"icon"},null,8,["name"]))}},E7=D(S7,[["__scopeId","data-v-f6562595"]]),L7=Object.freeze(Object.defineProperty({__proto__:null,BenchmarkTable:h0,HomePage:Ji,Icon:E7,TippyWrapper:y3},Symbol.toStringTag,{value:"Module"})),P7={...Iu,enhanceApp({app:e}){e.use(w3,{directive:"tippy",component:"tippy",componentSingleton:"tippy-singleton",defaultProps:{placement:"top",allowHTML:!0,arrow:!0,theme:"custom",animation:"scale"}}),Object.entries(L7).forEach(([t,n])=>{e.component(t,n)})}};export{h0 as B,Ji as H,P7 as R}; diff --git a/docs/.vitepress/dist/assets/cli_dropshadow.ByRs60AM.png b/docs/.vitepress/dist/assets/cli_dropshadow.ByRs60AM.png new file mode 100644 index 0000000..33df4ca Binary files /dev/null and b/docs/.vitepress/dist/assets/cli_dropshadow.ByRs60AM.png differ diff --git a/docs/.vitepress/dist/assets/columnbased.BF7ZPucB.png b/docs/.vitepress/dist/assets/columnbased.BF7ZPucB.png new file mode 100644 index 0000000..54b1715 Binary files /dev/null and b/docs/.vitepress/dist/assets/columnbased.BF7ZPucB.png differ diff --git a/docs/.vitepress/dist/assets/comparetableshadow.tJZU6OEw.png b/docs/.vitepress/dist/assets/comparetableshadow.tJZU6OEw.png new file mode 100644 index 0000000..6765c8f Binary files /dev/null and b/docs/.vitepress/dist/assets/comparetableshadow.tJZU6OEw.png differ diff --git a/docs/.vitepress/dist/assets/core_clickhouse_highlight.ChTpqpAh.png b/docs/.vitepress/dist/assets/core_clickhouse_highlight.ChTpqpAh.png new file mode 100644 index 0000000..04607a2 Binary files /dev/null and b/docs/.vitepress/dist/assets/core_clickhouse_highlight.ChTpqpAh.png differ diff --git a/docs/.vitepress/dist/assets/core_client_server_highlight.D5vFvcJP.png b/docs/.vitepress/dist/assets/core_client_server_highlight.D5vFvcJP.png new file mode 100644 index 0000000..f55881b Binary files /dev/null and b/docs/.vitepress/dist/assets/core_client_server_highlight.D5vFvcJP.png differ diff --git a/docs/.vitepress/dist/assets/core_connector_highlight.DIwLuj7u.png b/docs/.vitepress/dist/assets/core_connector_highlight.DIwLuj7u.png new file mode 100644 index 0000000..35ee657 Binary files /dev/null and b/docs/.vitepress/dist/assets/core_connector_highlight.DIwLuj7u.png differ diff --git a/docs/.vitepress/dist/assets/core_full_color.BKwek0XW.png b/docs/.vitepress/dist/assets/core_full_color.BKwek0XW.png new file mode 100644 index 0000000..a84c476 Binary files /dev/null and b/docs/.vitepress/dist/assets/core_full_color.BKwek0XW.png differ diff --git a/docs/.vitepress/dist/assets/dailycjob.DWwsvGXc.png b/docs/.vitepress/dist/assets/dailycjob.DWwsvGXc.png new file mode 100644 index 0000000..5ff320a Binary files /dev/null and b/docs/.vitepress/dist/assets/dailycjob.DWwsvGXc.png differ diff --git a/docs/.vitepress/dist/assets/eventbroker.CGzUiw4n.png b/docs/.vitepress/dist/assets/eventbroker.CGzUiw4n.png new file mode 100644 index 0000000..89fdd11 Binary files /dev/null and b/docs/.vitepress/dist/assets/eventbroker.CGzUiw4n.png differ diff --git a/docs/.vitepress/dist/assets/eventtable.2ng75EEu.png b/docs/.vitepress/dist/assets/eventtable.2ng75EEu.png new file mode 100644 index 0000000..593f5b6 Binary files /dev/null and b/docs/.vitepress/dist/assets/eventtable.2ng75EEu.png differ diff --git a/docs/.vitepress/dist/assets/full_backup_highlight.nwGsteKG.png b/docs/.vitepress/dist/assets/full_backup_highlight.nwGsteKG.png new file mode 100644 index 0000000..6a0d63a Binary files /dev/null and b/docs/.vitepress/dist/assets/full_backup_highlight.nwGsteKG.png differ diff --git a/docs/.vitepress/dist/assets/full_full_color.CAnyvm6j.png b/docs/.vitepress/dist/assets/full_full_color.CAnyvm6j.png new file mode 100644 index 0000000..e1eb14d Binary files /dev/null and b/docs/.vitepress/dist/assets/full_full_color.CAnyvm6j.png differ diff --git a/docs/.vitepress/dist/assets/full_storage_highlight.D5Oa0lfn.png b/docs/.vitepress/dist/assets/full_storage_highlight.D5Oa0lfn.png new file mode 100644 index 0000000..3057bee Binary files /dev/null and b/docs/.vitepress/dist/assets/full_storage_highlight.D5Oa0lfn.png differ diff --git a/docs/.vitepress/dist/assets/future-work.md.92XAy3ZW.js b/docs/.vitepress/dist/assets/future-work.md.92XAy3ZW.js deleted file mode 100644 index 13fd981..0000000 --- a/docs/.vitepress/dist/assets/future-work.md.92XAy3ZW.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as a,o as t,a2 as i}from"./chunks/framework.BJvAGJ4I.js";const m=JSON.parse('{"title":"Future Work","description":"","frontmatter":{},"headers":[],"relativePath":"future-work.md","filePath":"future-work.md"}'),r={name:"future-work.md"},o=i('

Future Work

API Endpoints

The introduction of API endpoints in Helios would significantly enhance user capabilities by allowing them to expose query results as accessible HTTP endpoints. Users can define those endpoints to accept parameters, execute preset queries, and return results in a standardized format. This would enable seamless integration of Helios data into other applications and services.

Use Cases

  1. Real-time Dashboards: Endpoints can be integrated with visualization tools like Grafana.
  2. Data Integration: Other applications can easily incorporate Helios data into their workflows without having to use our console.

Supporting Materialized Views

Materialized views allow users to shift the cost of computation from query time to insert time, resulting in faster SELECT queries. Supporting materialized views will help utilize the efficiency and real-time abilities of our ClickHouse database. Explaining ClickHouse’s version of materialized views is best done by ClickHouse themselves:

“A ClickHouse materialized view is a trigger that runs a query on blocks of data as they are inserted into a table. The result of this query is inserted into a second "target" table …

The principal motivation for materialized views is that the results inserted into the target table represent the results of an aggregation, filtering, or transformation on rows. These results will often be a smaller representation of the original data ….

[This] ensures query times are faster than if the same computation was performed on the original data, shifting computation (and thus query latency) from query time to insert time.

Materialized views in ClickHouse are updated in real-time as data flows into the table they are based on, functioning more like continually updating indexes. This is in contrast to other databases where materialized views are typically static snapshots of a query that must be refreshed”

Additional data sources

Our initial release supports data ingestion solely through Amazon Kinesis. While this decision was strategic, given our limited resources and the synergy with our AWS-hosted infrastructure, we recognize that many companies use other streaming providers.

Future versions of Helios could expand support for additional streaming platforms. To address this, we've outlined an approach to expand our data ingestion capabilities:

  • Apache Kafka Integration: As the industry leader, Kafka integration is our top priority. We'll approach this in two stages:
    • Amazon MSK Integration: We'll first support Amazon Managed Service for Apache Kafka, leveraging our existing Lambda function logic.
    • Direct Kafka Support: Following this, we'll re-architect our Lambda Connector function for direct Kafka integration.
  • Additional Platforms: After Kafka, we would extend support to other popular streaming platforms, including:
    • Google Pub/Sub
    • Redpanda
    • Confluent (a popular Kafka managed service)

This expansion will require a number of changes to our current implementation. Our existing serverless function, which ingests data from Kinesis and inserts it into ClickHouse DB, relies on AWS Lambda Triggers.

By broadening our data source support, Helios will be accessible to a wider range of companies, regardless of their preferred streaming platform.

',17),s=[o];function n(l,u,d,p,c,h){return t(),a("div",null,s)}const g=e(r,[["render",n]]);export{m as __pageData,g as default}; diff --git a/docs/.vitepress/dist/assets/future-work.md.92XAy3ZW.lean.js b/docs/.vitepress/dist/assets/future-work.md.92XAy3ZW.lean.js deleted file mode 100644 index 6ccfb1d..0000000 --- a/docs/.vitepress/dist/assets/future-work.md.92XAy3ZW.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as a,o as t,a2 as i}from"./chunks/framework.BJvAGJ4I.js";const m=JSON.parse('{"title":"Future Work","description":"","frontmatter":{},"headers":[],"relativePath":"future-work.md","filePath":"future-work.md"}'),r={name:"future-work.md"},o=i("",17),s=[o];function n(l,u,d,p,c,h){return t(),a("div",null,s)}const g=e(r,[["render",n]]);export{m as __pageData,g as default}; diff --git a/docs/.vitepress/dist/assets/future-work.md.CFwf7ZIW.js b/docs/.vitepress/dist/assets/future-work.md.CFwf7ZIW.js new file mode 100644 index 0000000..4ea28b1 --- /dev/null +++ b/docs/.vitepress/dist/assets/future-work.md.CFwf7ZIW.js @@ -0,0 +1 @@ +import{_ as s,e as r,f as n,g as e,N as a,c as i,m as o,o as l}from"./chunks/framework.CE9GIcbU.js";const T=JSON.parse('{"title":"Future Work","description":"","frontmatter":{},"headers":[],"relativePath":"future-work.md","filePath":"future-work.md"}'),u={name:"future-work.md"},d=i('

Future Work

API Endpoints

The introduction of API endpoints in Helios would significantly enhance user capabilities by allowing them to expose query results as accessible HTTP endpoints. Users can define those endpoints to accept parameters, execute preset queries, and return results in a standardized format. This would enable seamless integration of Helios data into other applications and services.

Use Cases

',4),p={class:"icon-list"},c=e("span",null,[e("strong",null,"Real-time Dashboards"),o(": Endpoints can be integrated with visualization tools like Grafana.")],-1),h=e("span",null,[e("strong",null,"Data Integration"),o(": Other applications can easily incorporate Helios data into their workflows without having to use our console.")],-1),f=i('

Supporting Materialized Views

Materialized views allow users to shift the cost of computation from query time to insert time, resulting in faster SELECT queries. Supporting materialized views will help utilize the efficiency and real-time abilities of our ClickHouse database. Explaining ClickHouse’s version of materialized views is best done by ClickHouse themselves:

“A ClickHouse materialized view is a trigger that runs a query on blocks of data as they are inserted into a table. The result of this query is inserted into a second "target" table …

The principal motivation for materialized views is that the results inserted into the target table represent the results of an aggregation, filtering, or transformation on rows. These results will often be a smaller representation of the original data ….

[This] ensures query times are faster than if the same computation was performed on the original data, shifting computation (and thus query latency) from query time to insert time.

Materialized views in ClickHouse are updated in real-time as data flows into the table they are based on, functioning more like continually updating indexes. This is in contrast to other databases where materialized views are typically static snapshots of a query that must be refreshed”

Additional data sources

Our initial release supports data ingestion solely through Amazon Kinesis. While this decision was strategic, given our limited resources and the synergy with our AWS-hosted infrastructure, we recognize that many companies use other streaming providers.

Future versions of Helios could expand support for additional streaming platforms. To address this, we've outlined an approach to expand our data ingestion capabilities:

  1. Apache Kafka Integration: As the industry leader, Kafka integration is our top priority. We'll approach this in two stages:

    • Amazon MSK Integration: We'll first support Amazon Managed Service for Apache Kafka, leveraging our existing Lambda function logic
    • Direct Kafka Support: Following this, we'll re-architect our Lambda Connector function for direct Kafka integration.
  2. Additional Platforms: After Kafka, we would extend support to other popular streaming platforms, including:

    • Google Pub/Sub
    • Redpanda
    • Confluent (a popular Kafka managed service)

This expansion will require a number of changes to our current implementation. Our existing serverless function, which ingests data from Kinesis and inserts it into ClickHouse DB, relies on AWS Lambda Triggers.

By broadening our data source support, Helios will be accessible to a wider range of companies, regardless of their preferred streaming platform.

',9);function m(g,_,w,b,k,v){const t=r("Icon");return l(),n("div",null,[d,e("div",p,[e("p",null,[a(t,{name:"PresentationChartLineIcon"}),c]),e("p",null,[a(t,{name:"PuzzlePieceIcon"}),h])]),f])}const q=s(u,[["render",m]]);export{T as __pageData,q as default}; diff --git a/docs/.vitepress/dist/assets/future-work.md.CFwf7ZIW.lean.js b/docs/.vitepress/dist/assets/future-work.md.CFwf7ZIW.lean.js new file mode 100644 index 0000000..b979c5d --- /dev/null +++ b/docs/.vitepress/dist/assets/future-work.md.CFwf7ZIW.lean.js @@ -0,0 +1 @@ +import{_ as s,e as r,f as n,g as e,N as a,c as i,m as o,o as l}from"./chunks/framework.CE9GIcbU.js";const T=JSON.parse('{"title":"Future Work","description":"","frontmatter":{},"headers":[],"relativePath":"future-work.md","filePath":"future-work.md"}'),u={name:"future-work.md"},d=i("",4),p={class:"icon-list"},c=e("span",null,[e("strong",null,"Real-time Dashboards"),o(": Endpoints can be integrated with visualization tools like Grafana.")],-1),h=e("span",null,[e("strong",null,"Data Integration"),o(": Other applications can easily incorporate Helios data into their workflows without having to use our console.")],-1),f=i("",9);function m(g,_,w,b,k,v){const t=r("Icon");return l(),n("div",null,[d,e("div",p,[e("p",null,[a(t,{name:"PresentationChartLineIcon"}),c]),e("p",null,[a(t,{name:"PuzzlePieceIcon"}),h])]),f])}const q=s(u,[["render",m]]);export{T as __pageData,q as default}; diff --git a/docs/.vitepress/dist/assets/helios-architecture.md.BJH9O2FM.js b/docs/.vitepress/dist/assets/helios-architecture.md.BJH9O2FM.js deleted file mode 100644 index 08cea6c..0000000 --- a/docs/.vitepress/dist/assets/helios-architecture.md.BJH9O2FM.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as A,c as g,o as B,a2 as C}from"./chunks/framework.BJvAGJ4I.js";const D=JSON.parse('{"title":"Helios Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"helios-architecture.md","filePath":"helios-architecture.md"}'),I={name:"helios-architecture.md"},Q=C('

Helios Architecture

To meet the requirements of Amazon Kinesis users looking to explore and analyze their event streams, Helios is built around three key components:

  1. Storage - A database optimized for querying streaming data, specifically an Online Analytical Processing (OLAP) database capable of handling high-volume, real-time data ingestion, and delivering fast query performance for analytical workloads.
  2. Connection - An ingestion mechanism to efficiently transfer events from Kinesis streams into our chosen database.
  3. Interface - A user-friendly graphical interface allowing users to conduct analyses and visualize results.

Given that potential Helios users are already leveraging Amazon Kinesis, it made sense to host all of Helios' infrastructure within the AWS ecosystem.

In the following section, we will dive into the specific services we chose, explaining how each component contributes to Helios' functionality and performance.

Our design decisions and their associated tradeoffs will be explored in the “Building Helios: Design Choices” section of the case study, while this section is focused on how we architected Helios.

Storage

Tying back to our example use case of e-commerce user analytics, we required a database optimized for analytical queries. A typical analytical query might ask, "What is the average order value for customers who used a discount code in the past hour?" Such queries demand specific capabilities from our database.

As defined in "Designing Data-Intensive Applications" (DDIA), analytical queries typically scan millions of records, reading only a few columns per record, and calculate aggregate statistics rather than returning raw data. This definition guided our approach to storage architecture.

Databases typically fall into two categories: Online Analytical Processing (OLAP) and Online Transaction Processing (OLTP), each optimized for distinct use cases. OLAP systems, primarily used for analytics, are designed to process millions of records per query. In contrast, OLTP systems typically process small numbers of records per query using keys and indexes for quick data retrieval. The fundamental difference lies in their access patterns: OLTP prioritizes small-scale transactions, while OLAP focuses on large-scale data analysis.

Ultimately, we chose ClickHouse as our OLAP database to power Helios' analytical capabilities. Later(link!) in this case study, we will provide a detailed exploration of our database selection process, including the factors that influenced our decision.

The following diagram illustrates our storage architecture:

ClickHouse Database Server

The main functions of the ClickHouse database are to store event data consumed from Kinesis streams and to make this data available for querying. The database is deployed on an Amazon EC2 instance (i.e. virtual server).

With storage in place, the next phase of our architecture design was to implement an integration between a user’s Amazon Kinesis streams and the ClickHouse instance.

Connection

Efficiently transferring events from Kinesis streams to our ClickHouse database presented a challenge. We needed a solution that could handle high-volume data ingestion, perform necessary decoding, and ensure reliable delivery.

To address this, we developed a custom AWS Lambda function as our stream processor. This approach allows us to:

  • Decode and parse Kinesis event data
  • Implement custom error handling
  • Dynamically map data to appropriate ClickHouse tables
  • Perform efficient inserts

By leveraging Lambda, we created a flexible and scalable solution tailored to our specific data processing needs. Let's explore how this custom processor works in detail.

Kinesis to ClickHouse Integration

Helios’ Lambda Processor is an AWS serverless function that serves as a connector between Amazon Kinesis event streams and ClickHouse tables. The Lambda’s main roles are to decode the events from the Kinesis stream and insert them into the ClickHouse database. The full process involves retrieving table information, preparing data for batch insertion, and attempting to insert the data into ClickHouse.

Using an event based trigger, the function ingests event data(tooltip) from AWS Kinesis streams, and decodes the Kinesis event payload into a JSON object.

Once the Lambda decodes the payload from a stream, the data needs to be sent to the associated destination table within Clickhouse. To retrieve the table ID, the Lambda interacts with a key-value database, DynamoDB, which contains a mapping of stream IDs to table IDs.

In the DynamoDB table we associate one AWS Kinesis stream to one Clickhouse table. This not only eliminates potential schema errors when ingesting data from multiple streams, but also prevents human error if users try to connect multiple streams to one table.

While the storage and connection components form the backbone of Helios, the analysis layer serves as the user-facing interface, bridging the gap between raw data and actionable insights.

Interface

Application Server

The Helios web application, hosted on an Amazon EC2 instance, serves as the primary interface for users. Implemented with a Flask backend and a React frontend, its core features include:

  1. An interactive SQL console for querying data from event streams, enabling real-time data analysis
  2. An interface for connecting a data source, such as a Kinesis stream, to the Helios architecture

Now that you have a good understanding of how Helios works, in the next section we will cover why we designed it in this way as well as the trade-offs made throughout the building of Helios. Here is our architecture so far:

',38),E=[Q];function i(e,o,c,R,r,u){return B(),g("div",null,E)}const w=A(I,[["render",i]]);export{D as __pageData,w as default}; diff --git a/docs/.vitepress/dist/assets/helios-architecture.md.BJH9O2FM.lean.js b/docs/.vitepress/dist/assets/helios-architecture.md.BJH9O2FM.lean.js deleted file mode 100644 index 2943db4..0000000 --- a/docs/.vitepress/dist/assets/helios-architecture.md.BJH9O2FM.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as A,c as g,o as B,a2 as C}from"./chunks/framework.BJvAGJ4I.js";const D=JSON.parse('{"title":"Helios Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"helios-architecture.md","filePath":"helios-architecture.md"}'),I={name:"helios-architecture.md"},Q=C("",38),E=[Q];function i(e,o,c,R,r,u){return B(),g("div",null,E)}const w=A(I,[["render",i]]);export{D as __pageData,w as default}; diff --git a/docs/.vitepress/dist/assets/helios-architecture.md.CY1ms68H.js b/docs/.vitepress/dist/assets/helios-architecture.md.CY1ms68H.js new file mode 100644 index 0000000..9ff88c6 --- /dev/null +++ b/docs/.vitepress/dist/assets/helios-architecture.md.CY1ms68H.js @@ -0,0 +1 @@ +import{_ as c,e as n,f as l,g as e,N as a,m as s,u as d,c as i,o as h}from"./chunks/framework.CE9GIcbU.js";const o="/case-study/assets/core_full_color.BKwek0XW.png",u="/case-study/assets/core_clickhouse_highlight.ChTpqpAh.png",p="/case-study/assets/core_connector_highlight.DIwLuj7u.png",m="/case-study/assets/kinesis_integration1.CxipKTy_.png",g="/case-study/assets/kinesis_integration2.vj_pjSy2.png",f="/case-study/assets/core_client_server_highlight.D5vFvcJP.png",G=JSON.parse('{"title":"Helios Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"helios-architecture.md","filePath":"helios-architecture.md"}'),_={name:"helios-architecture.md"},b=e("h1",{id:"helios-architecture",tabindex:"-1"},[s("Helios Architecture "),e("a",{class:"header-anchor",href:"#helios-architecture","aria-label":'Permalink to "Helios Architecture"'},"​")],-1),y=e("p",null,"To meet the requirements of Amazon Kinesis users looking to explore and analyze their event streams, Helios is built around three key components:",-1),v={class:"icon-list"},w=e("span",null,[e("strong",null,"Storage"),s(" - A database optimized for querying streaming data, specifically an Online Analytical Processing (OLAP) database capable of handling high-volume, real-time data ingestion, and delivering fast query performance for analytical workloads.")],-1),k=e("span",null,[e("strong",null,"Connection"),s(" - An ingestion mechanism to efficiently transfer events from Kinesis streams into our chosen database.")],-1),A=e("span",null,[e("strong",null,"Interface"),s(" - A user-friendly graphical interface allowing users to conduct analyses and visualize results.")],-1),T=i('

Core Arch

Given that potential Helios users are already leveraging Amazon Kinesis, it made sense to host all of Helios' infrastructure within the AWS ecosystem.

In the following section, we will dive into the specific services we chose, explaining how each component contributes to Helios' functionality and performance.

Our design decisions and their associated tradeoffs will be explored in the “Building Helios: Design Choices” section of the case study, while this section is focused on how we architected Helios.

Storage

Tying back to our example use case of e-commerce user analytics, we required a database optimized for analytical queries. A typical analytical query might ask, "What is the average order value for customers who used a discount code in the past hour?" Such queries demand specific capabilities from our database.

As defined in "Designing Data-Intensive Applications" (DDIA), analytical queries typically scan millions of records, reading only a few columns per record, and calculate aggregate statistics rather than returning raw data. This definition guided our approach to storage architecture.

Databases typically fall into two categories: Online Analytical Processing (OLAP) and Online Transaction Processing (OLTP), each optimized for distinct use cases. OLAP systems, primarily used for analytics, are designed to process millions of records per query. In contrast, OLTP systems typically process small numbers of records per query using keys and indexes for quick data retrieval. The fundamental difference lies in their access patterns: OLTP prioritizes small-scale transactions, while OLAP focuses on large-scale data analysis.

Ultimately, we chose ClickHouse as our OLAP database to power Helios' analytical capabilities. Later in this case study, we will provide a detailed exploration of our database selection process, including the factors that influenced our decision.

The following diagram illustrates our storage architecture:

ClickHouse Database Server

Clickhouse Arch

The main functions of the ClickHouse database are to store event data consumed from Kinesis streams and to make this data available for querying. The database is deployed on an Amazon EC2 instance (i.e. virtual server).

With storage in place, the next phase of our architecture design was to implement an integration between a user’s Amazon Kinesis streams and the ClickHouse instance.

Connection

Connection Arch

Efficiently transferring events from Kinesis streams to our ClickHouse database presented a challenge. We needed a solution that could handle high-volume data ingestion, perform necessary decoding, and ensure reliable delivery.

To address this, we developed a custom AWS Lambda function as our stream processor. This approach allows us to:

',18),C={class:"icon-list"},I=e("span",null,"Decode and parse Kinesis event data",-1),H=e("span",null," Implement custom error handling",-1),q=e("span",null," Dynamically map data to appropriate ClickHouse tables",-1),P=e("span",null," Perform efficient inserts",-1),S=e("p",null,"By leveraging Lambda, we created a flexible and scalable solution tailored to our specific data processing needs. Let's explore how this custom processor works in detail.",-1),x=e("h3",{id:"",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#","aria-label":'Permalink to ""'},"​")],-1),D=e("h3",{id:"kinesis-to-clickhouse-integration",tabindex:"-1"},[s("Kinesis to ClickHouse Integration "),e("a",{class:"header-anchor",href:"#kinesis-to-clickhouse-integration","aria-label":'Permalink to "Kinesis to ClickHouse Integration"'},"​")],-1),L=e("p",null,"Helios’ Lambda Processor is an AWS serverless function that serves as a connector between Amazon Kinesis event streams and ClickHouse tables. The Lambda’s main roles are to decode the events from the Kinesis stream and insert them into the ClickHouse database. The full process involves retrieving table information, preparing data for batch insertion, and attempting to insert the data into ClickHouse.",-1),K=i('

Kinesis Integration 1

Kinesis Integration 2

Once the Lambda decodes the payload from a stream, the data needs to be sent to the associated destination table within Clickhouse. To retrieve the table ID, the Lambda interacts with a key-value database, DynamoDB, which contains a mapping of stream IDs to table IDs.

In the DynamoDB table we associate one AWS Kinesis stream to one Clickhouse table. This not only eliminates potential schema errors when ingesting data from multiple streams, but also prevents human error if users try to connect multiple streams to one table.

While the storage and connection components form the backbone of Helios, the analysis layer serves as the user-facing interface, bridging the gap between raw data and actionable insights.

Interface

Application Server

App Server

The Helios web application, hosted on an Amazon EC2 instance, serves as the primary interface for users. Implemented with a Flask backend and a React frontend, its core features include:

',9),O={class:"icon-list"},z=e("span",null,"An interactive SQL console for querying data from event streams, enabling real-time data analysis",-1),W=e("span",null,"An interface for connecting a data source, such as a Kinesis stream, to the Helios architecture",-1),N=e("p",null,[s("Now that you have a good understanding of how Helios works, in the next section we will cover why we designed it in this way as well as the trade-offs made throughout the building of Helios. Here is our architecture so far: "),e("img",{src:o,alt:"Core Arch"})],-1);function B(V,E,j,$,J,R){const t=n("Icon"),r=n("TippyWrapper");return h(),l("div",null,[b,y,e("div",v,[e("p",null,[a(t,{name:"CircleStackIcon"}),w]),e("p",null,[a(t,{name:"LinkIcon"}),k]),e("p",null,[a(t,{name:"WindowIcon"}),A])]),T,e("div",C,[e("p",null,[a(t,{name:"DocumentMagnifyingGlassIcon"}),I]),e("p",null,[a(t,{name:"ExclamationTriangleIcon"}),H]),e("p",null,[a(t,{name:"TableCellsIcon"}),q]),e("p",null,[a(t,{name:"ArrowDownOnSquareIcon"}),P])]),S,x,D,L,e("p",null,[s("Using an event-based trigger, the function ingests "),a(r,{content:"In Amazon Kinesis, this is formally called a 'record'. However, for consistency and clarity in our discussion, we will continue to refer to it as an 'event' throughout this case study."},{default:d(()=>[s("event data")]),_:1}),s(" from AWS Kinesis streams, and decodes the Kinesis event payload into a JSON object.")]),K,e("div",O,[e("p",null,[a(t,{name:"CommandLineIcon"}),z]),e("p",null,[a(t,{name:"LinkIcon"}),W])]),N])}const U=c(_,[["render",B]]);export{G as __pageData,U as default}; diff --git a/docs/.vitepress/dist/assets/helios-architecture.md.CY1ms68H.lean.js b/docs/.vitepress/dist/assets/helios-architecture.md.CY1ms68H.lean.js new file mode 100644 index 0000000..feef23d --- /dev/null +++ b/docs/.vitepress/dist/assets/helios-architecture.md.CY1ms68H.lean.js @@ -0,0 +1 @@ +import{_ as c,e as n,f as l,g as e,N as a,m as s,u as d,c as i,o as h}from"./chunks/framework.CE9GIcbU.js";const o="/case-study/assets/core_full_color.BKwek0XW.png",u="/case-study/assets/core_clickhouse_highlight.ChTpqpAh.png",p="/case-study/assets/core_connector_highlight.DIwLuj7u.png",m="/case-study/assets/kinesis_integration1.CxipKTy_.png",g="/case-study/assets/kinesis_integration2.vj_pjSy2.png",f="/case-study/assets/core_client_server_highlight.D5vFvcJP.png",G=JSON.parse('{"title":"Helios Architecture","description":"","frontmatter":{},"headers":[],"relativePath":"helios-architecture.md","filePath":"helios-architecture.md"}'),_={name:"helios-architecture.md"},b=e("h1",{id:"helios-architecture",tabindex:"-1"},[s("Helios Architecture "),e("a",{class:"header-anchor",href:"#helios-architecture","aria-label":'Permalink to "Helios Architecture"'},"​")],-1),y=e("p",null,"To meet the requirements of Amazon Kinesis users looking to explore and analyze their event streams, Helios is built around three key components:",-1),v={class:"icon-list"},w=e("span",null,[e("strong",null,"Storage"),s(" - A database optimized for querying streaming data, specifically an Online Analytical Processing (OLAP) database capable of handling high-volume, real-time data ingestion, and delivering fast query performance for analytical workloads.")],-1),k=e("span",null,[e("strong",null,"Connection"),s(" - An ingestion mechanism to efficiently transfer events from Kinesis streams into our chosen database.")],-1),A=e("span",null,[e("strong",null,"Interface"),s(" - A user-friendly graphical interface allowing users to conduct analyses and visualize results.")],-1),T=i("",18),C={class:"icon-list"},I=e("span",null,"Decode and parse Kinesis event data",-1),H=e("span",null," Implement custom error handling",-1),q=e("span",null," Dynamically map data to appropriate ClickHouse tables",-1),P=e("span",null," Perform efficient inserts",-1),S=e("p",null,"By leveraging Lambda, we created a flexible and scalable solution tailored to our specific data processing needs. Let's explore how this custom processor works in detail.",-1),x=e("h3",{id:"",tabindex:"-1"},[e("a",{class:"header-anchor",href:"#","aria-label":'Permalink to ""'},"​")],-1),D=e("h3",{id:"kinesis-to-clickhouse-integration",tabindex:"-1"},[s("Kinesis to ClickHouse Integration "),e("a",{class:"header-anchor",href:"#kinesis-to-clickhouse-integration","aria-label":'Permalink to "Kinesis to ClickHouse Integration"'},"​")],-1),L=e("p",null,"Helios’ Lambda Processor is an AWS serverless function that serves as a connector between Amazon Kinesis event streams and ClickHouse tables. The Lambda’s main roles are to decode the events from the Kinesis stream and insert them into the ClickHouse database. The full process involves retrieving table information, preparing data for batch insertion, and attempting to insert the data into ClickHouse.",-1),K=i("",9),O={class:"icon-list"},z=e("span",null,"An interactive SQL console for querying data from event streams, enabling real-time data analysis",-1),W=e("span",null,"An interface for connecting a data source, such as a Kinesis stream, to the Helios architecture",-1),N=e("p",null,[s("Now that you have a good understanding of how Helios works, in the next section we will cover why we designed it in this way as well as the trade-offs made throughout the building of Helios. Here is our architecture so far: "),e("img",{src:o,alt:"Core Arch"})],-1);function B(V,E,j,$,J,R){const t=n("Icon"),r=n("TippyWrapper");return h(),l("div",null,[b,y,e("div",v,[e("p",null,[a(t,{name:"CircleStackIcon"}),w]),e("p",null,[a(t,{name:"LinkIcon"}),k]),e("p",null,[a(t,{name:"WindowIcon"}),A])]),T,e("div",C,[e("p",null,[a(t,{name:"DocumentMagnifyingGlassIcon"}),I]),e("p",null,[a(t,{name:"ExclamationTriangleIcon"}),H]),e("p",null,[a(t,{name:"TableCellsIcon"}),q]),e("p",null,[a(t,{name:"ArrowDownOnSquareIcon"}),P])]),S,x,D,L,e("p",null,[s("Using an event-based trigger, the function ingests "),a(r,{content:"In Amazon Kinesis, this is formally called a 'record'. However, for consistency and clarity in our discussion, we will continue to refer to it as an 'event' throughout this case study."},{default:d(()=>[s("event data")]),_:1}),s(" from AWS Kinesis streams, and decodes the Kinesis event payload into a JSON object.")]),K,e("div",O,[e("p",null,[a(t,{name:"CommandLineIcon"}),z]),e("p",null,[a(t,{name:"LinkIcon"}),W])]),N])}const U=c(_,[["render",B]]);export{G as __pageData,U as default}; diff --git a/docs/.vitepress/dist/assets/improving-core-platform.md.B9IaNb9w.js b/docs/.vitepress/dist/assets/improving-core-platform.md.B9IaNb9w.js deleted file mode 100644 index 0ca3f8f..0000000 --- a/docs/.vitepress/dist/assets/improving-core-platform.md.B9IaNb9w.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as A,c as g,o as B,a2 as I}from"./chunks/framework.BJvAGJ4I.js";const t=JSON.parse('{"title":"Improving Core Platform","description":"","frontmatter":{},"headers":[],"relativePath":"improving-core-platform.md","filePath":"improving-core-platform.md"}'),E={name:"improving-core-platform.md"},C=I('

Improving Core Platform

Below we detail the problems we encountered and the solutions we implemented to improve upon our core platform.

Quarantine Tables

The initial version of Helios lacked error handling for failed database insertion of event records within the Lambda connector, potentially leading to data loss and difficult to parse error messages. To address this, we implemented a comprehensive error handling and data quarantine system. Here is a list of the key functionality we implemented:

  1. Error Identification: The Lambda now includes logic to identify various types of errors, including schema mismatches and insertion failures.
  2. Error Categorization: Each error is then categorized by type and summarized with a concise abstract, providing clear insight into the nature of data quality issues.
  3. Data Preservation: The data that fails to insert into the main table is then stored in a separate quarantine table along with the error summary details. This ensures no data loss and allows users to quickly examine the exact records that failed to insert.
  4. AI Summary: For users who provide a ChatGPT AI key during deployment, we've integrated an AI-powered feature to enhance the error analysis process. This feature leverages a custom ChatGPT system prompt to summarize and interpret the errors stored in the quarantine table, significantly aiding users in their debugging efforts.

[Image of quarantine table - needs css done first]

These enhancements collectively improve Helios’ error handling, while providing tools for error analysis and resolution.

Lambda Optimization

To improve Helios' performance and efficiency, we implemented several optimizations to the Lambda connector. These enhancements focus on data processing, concurrency, and resource utilization, aiming to increase throughput and reduce costs while maintaining real-time capabilities.

Batching and Batch Window

Our initial Connector function processed Kinesis records in small batches of 10. We optimized this by increasing the maximum batch size to 100 records and setting a batch window of one second.

This change significantly reduces Lambda invocations, leading to less overhead and improved cost efficiency. Larger batches also enhance overall throughput and make better use of allocated resources. The one-second window ensures a balance between efficiency and near real-time processing, as records are sent when either the batch size is reached or the time window expires.

These optimizations improve system performance while reducing costs for users, all while maintaining Clickhouse's real-time update capabilities.

Parallelization

Parallelization in the context of Lambdas means that multiple Lambda instances can be run at the same time. By default, the Lambda parallelization factor is set to 1. This means that only 1 Lambda instance can be a trigger for 1 Kinesis shard. We adjusted this setting to 10, allowing up to 10 Lambda instances to process data from a single Kinesis shard simultaneously. This significantly improves our ingestion capacity and scalability, increasing our system's ability to handle high-volume data streams quickly and efficiently.

Caching DynamoDB requests

Recall from earlier that Lambdas have to send a request to the DynamoDB to get the table UUID for the Clickhouse table destination. To reduce unnecessary DynamoDB calls for the Clickhouse table UUID, we moved the DynamoDB client initialization to the global scope of our Lambda function.

Our caching strategy ensures that subsequent invocations of the same Lambda instance will reuse the existing client and table UUID information. This approach reduces DynamoDB calls from executing for each record in the batch. For example, if the batch size is 100 records, 1 Dynamo request will be sent rather than 100 - since we already have our table UUID information cached. Additionally, further calls are not made if the same Lambda instance is invoked.

Database Backups

In the first iteration of Helios, the ClickHouse database lacked backup capabilities. For instance, if the EC2 went down, our data would not be recoverable. Addressing this vulnerability was a critical improvement for version two.

As part of our backup strategy, we integrated an Amazon S3 (Simple Storage Service) bucket into our AWS-based architecture. This addition plays a crucial role in enhancing our data resilience and disaster recovery capabilities for our ClickHouse database running on an EC2 instance. The S3 bucket serves as a highly durable and scalable object storage solution, allowing us to implement daily backups of the ClickHouse database efficiently. By leveraging S3's virtually unlimited storage capacity and 99.999999999% (11 9's) of durability, we ensure that our critical data is preserved securely over the long term.

The backup cron job process is automated to run daily, capturing a full snapshot of the ClickHouse database and transferring it to the designated S3 bucket.

Export to CSV

The underlying goal for developing Helios is to provide Amazon Kinesis customers with a simple, cost-effective way to analyze their streaming events. While our interactive SQL console serves as the core feature for this analysis, we recognize the need for users to easily extract, run further analysis and share their query results.

To address this, we implemented a feature allowing users to download the results of any SQL query as a CSV file. This functionality enables information sharing and integration with other tools in users' data analysis workflows.

Future enhancements are planned to further expand the utility of query results for Helios users. These improvements will aim to provide even more flexibility in how users can leverage their SQL query results. Please refer to the Future Work section below for more details on upcoming features.

To summarize our core platform improvements, we bolstered the platform with features including quarantine tables, Lambda optimizations, S3 backups, and CSV exports. These enhancements to Helios have improved our system resilience, error handling, and overall performance.

After the above improvements, our final architecture looks like this:

',34),Q=[C];function i(e,w,o,a,c,s){return B(),g("div",null,Q)}const n=A(E,[["render",i]]);export{t as __pageData,n as default}; diff --git a/docs/.vitepress/dist/assets/improving-core-platform.md.B9IaNb9w.lean.js b/docs/.vitepress/dist/assets/improving-core-platform.md.B9IaNb9w.lean.js deleted file mode 100644 index 9d164b7..0000000 --- a/docs/.vitepress/dist/assets/improving-core-platform.md.B9IaNb9w.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as A,c as g,o as B,a2 as I}from"./chunks/framework.BJvAGJ4I.js";const t=JSON.parse('{"title":"Improving Core Platform","description":"","frontmatter":{},"headers":[],"relativePath":"improving-core-platform.md","filePath":"improving-core-platform.md"}'),E={name:"improving-core-platform.md"},C=I("",34),Q=[C];function i(e,w,o,a,c,s){return B(),g("div",null,Q)}const n=A(E,[["render",i]]);export{t as __pageData,n as default}; diff --git a/docs/.vitepress/dist/assets/improving-core-platform.md.BqJIFFk1.js b/docs/.vitepress/dist/assets/improving-core-platform.md.BqJIFFk1.js new file mode 100644 index 0000000..2a82f83 --- /dev/null +++ b/docs/.vitepress/dist/assets/improving-core-platform.md.BqJIFFk1.js @@ -0,0 +1 @@ +import{_ as r,e as o,f as l,g as e,N as t,m as a,u as c,c as n,o as d}from"./chunks/framework.CE9GIcbU.js";const h="/case-study/assets/full_storage_highlight.D5Oa0lfn.png",u="/case-study/assets/stream_efficiency.CiESwD7H.png",p="/case-study/assets/lambdakinesislimit.UF9Kqh4d.png",m="/case-study/assets/full_backup_highlight.nwGsteKG.png",f="/case-study/assets/dailycjob.DWwsvGXc.png",g="/case-study/assets/full_full_color.CAnyvm6j.png",L=JSON.parse('{"title":"Improving Core Platform","description":"","frontmatter":{},"headers":[],"relativePath":"improving-core-platform.md","filePath":"improving-core-platform.md"}'),b={name:"improving-core-platform.md"},y=n('

Improving Core Platform

Below we detail the problems we encountered and the solutions we implemented to improve upon our core platform.

Quarantine Tables

Quarantine Arch

The initial version of Helios lacked error handling for failed database insertion of event records within the Lambda connector, potentially leading to data loss and difficult to parse error messages. To mitigate these issues and enhance system reliability, we implemented a comprehensive error handling and data quarantine system. Below, we outline the key features of this new system:

',5),_={class:"icon-list"},v=e("span",null,[e("strong",null,"Error Identification"),a(": The Lambda now includes logic to identify various types of errors, including schema mismatches and insertion failures.")],-1),w=e("span",null,[e("strong",null,"Error Categorization"),a(": Each error is then categorized by type and summarized with a concise abstract, providing clear insight into the nature of data quality issues.")],-1),T=e("span",null,[e("strong",null,"Data Preservation"),a(": The data that fails to insert into the main table is then stored in a separate quarantine table along with the error summary details. This ensures no data loss and allows users to quickly examine the exact records that failed to insert.")],-1),k=e("span",null,[e("strong",null,"AI Summary"),a(": For users who provide a ChatGPT AI key during deployment, we've integrated an AI-powered feature to enhance the error analysis process. This feature leverages a custom ChatGPT system prompt to summarize and interpret the errors stored in the quarantine table, significantly aiding users in their debugging efforts.")],-1),q=n('

[Image of quarantine table - needs css done first]

These enhancements collectively improve Helios’ error handling, while providing tools for error analysis and resolution.

Lambda Optimization

To improve Helios' performance and efficiency, we implemented several optimizations to the Lambda connector. These enhancements focus on data processing, concurrency, and resource utilization, aiming to increase throughput and reduce costs while maintaining real-time capabilities.

Batching and Batch Window

Our initial Connector function processed Kinesis records in small batches of 10. We optimized this by increasing the maximum batch size to 100 records and setting a batch window of one second.

Batch Size

This change significantly reduces Lambda invocations, leading to less overhead and improved cost efficiency. Larger batches also enhance overall throughput and make better use of allocated resources. The one-second window ensures a balance between efficiency and near real-time processing, as records are sent when either the batch size is reached or the time window expires.

These optimizations improve system performance while reducing costs for users, all while maintaining Clickhouse's real-time update capabilities.

Parallelization

',10),C=n('

Parallelization

Caching DynamoDB requests

Recall from earlier that Lambdas have to send a request to the DynamoDB to get the table UUID for the Clickhouse table destination. To reduce unnecessary DynamoDB calls for the Clickhouse table UUID, we moved the DynamoDB client initialization to the global scope of our Lambda function.

Our caching strategy ensures that subsequent invocations of the same Lambda instance will reuse the existing client and table UUID information. This approach reduces DynamoDB calls from executing for each record in the batch. For example, if the batch size is 100 records, 1 Dynamo request will be sent rather than 100 - since we already have our table UUID information cached. Additionally, further calls are not made if the same Lambda instance is invoked.

Database Backups

Database Arch

In the first iteration of Helios, the ClickHouse database lacked backup capabilities. For instance, if the EC2 went down, our data would not be recoverable. Addressing this vulnerability was a critical improvement for version two.

As part of our backup strategy, we integrated an Amazon S3 (Simple Storage Service) bucket into our AWS-based architecture. This addition plays a crucial role in enhancing our data resilience and disaster recovery capabilities for our ClickHouse database running on an EC2 instance. The S3 bucket serves as a highly durable and scalable object storage solution, allowing us to implement daily backups of the ClickHouse database efficiently. By leveraging S3's virtually unlimited storage capacity and 99.999999999% (11 9's) of durability, we ensure that our critical data is preserved securely over the long term.

The backup cron job process is automated to run daily, capturing a full snapshot of the ClickHouse database and transferring it to the designated S3 bucket.

Daily Cron Job

Export to CSV

The underlying goal for developing Helios is to provide Amazon Kinesis customers with a simple, cost-effective way to analyze their streaming events. While our interactive SQL console serves as the core feature for this analysis, we recognize the need for users to easily extract, run further analysis and share their query results.

To address this, we implemented a feature allowing users to download the results of any SQL query as a CSV file. This functionality enables information sharing and integration with other tools in users' data analysis workflows.

Future enhancements are planned to further expand the utility of query results for Helios users. These improvements will aim to provide even more flexibility in how users can leverage their SQL query results. Please refer to the Future Work section below for more details on upcoming features.


To summarize our core platform improvements, we bolstered the platform with features including quarantine tables, Lambda optimizations, S3 backups, and CSV exports. These enhancements to Helios have improved our system resilience, error handling, and overall performance.

After the above improvements, our final architecture looks like this:

Full Arch

',18);function x(z,S,D,P,A,I){const i=o("Icon"),s=o("TippyWrapper");return d(),l("div",null,[y,e("div",_,[e("p",null,[t(i,{name:"ExclamationCircleIcon"}),v]),e("p",null,[t(i,{name:"TagIcon"}),w]),e("p",null,[t(i,{name:"ArchiveBoxIcon"}),T]),e("p",null,[t(i,{name:"SparklesIcon"}),k])]),q,e("p",null,[a("Parallelization in the context of Lambdas means that multiple Lambda instances can be run at the same time. By default, the Lambda parallelization factor is set to 1. This means that only one Lambda instance can be a trigger for one Kinesis "),t(s,{content:"A shard is a unit of capacity within a Kinesis stream that provides a fixed amount of data throughput and serves as a partition for organizing events."},{default:c(()=>[a("shard")]),_:1}),a(". We adjusted this setting to 10, allowing up to ten Lambda instances to process data from a single Kinesis shard simultaneously. This significantly improves our ingestion capacity and scalability, increasing our system's ability to handle high-volume data streams quickly and efficiently.")]),C])}const V=r(b,[["render",x]]);export{L as __pageData,V as default}; diff --git a/docs/.vitepress/dist/assets/improving-core-platform.md.BqJIFFk1.lean.js b/docs/.vitepress/dist/assets/improving-core-platform.md.BqJIFFk1.lean.js new file mode 100644 index 0000000..6e2e815 --- /dev/null +++ b/docs/.vitepress/dist/assets/improving-core-platform.md.BqJIFFk1.lean.js @@ -0,0 +1 @@ +import{_ as r,e as o,f as l,g as e,N as t,m as a,u as c,c as n,o as d}from"./chunks/framework.CE9GIcbU.js";const h="/case-study/assets/full_storage_highlight.D5Oa0lfn.png",u="/case-study/assets/stream_efficiency.CiESwD7H.png",p="/case-study/assets/lambdakinesislimit.UF9Kqh4d.png",m="/case-study/assets/full_backup_highlight.nwGsteKG.png",f="/case-study/assets/dailycjob.DWwsvGXc.png",g="/case-study/assets/full_full_color.CAnyvm6j.png",L=JSON.parse('{"title":"Improving Core Platform","description":"","frontmatter":{},"headers":[],"relativePath":"improving-core-platform.md","filePath":"improving-core-platform.md"}'),b={name:"improving-core-platform.md"},y=n("",5),_={class:"icon-list"},v=e("span",null,[e("strong",null,"Error Identification"),a(": The Lambda now includes logic to identify various types of errors, including schema mismatches and insertion failures.")],-1),w=e("span",null,[e("strong",null,"Error Categorization"),a(": Each error is then categorized by type and summarized with a concise abstract, providing clear insight into the nature of data quality issues.")],-1),T=e("span",null,[e("strong",null,"Data Preservation"),a(": The data that fails to insert into the main table is then stored in a separate quarantine table along with the error summary details. This ensures no data loss and allows users to quickly examine the exact records that failed to insert.")],-1),k=e("span",null,[e("strong",null,"AI Summary"),a(": For users who provide a ChatGPT AI key during deployment, we've integrated an AI-powered feature to enhance the error analysis process. This feature leverages a custom ChatGPT system prompt to summarize and interpret the errors stored in the quarantine table, significantly aiding users in their debugging efforts.")],-1),q=n("",10),C=n("",18);function x(z,S,D,P,A,I){const i=o("Icon"),s=o("TippyWrapper");return d(),l("div",null,[y,e("div",_,[e("p",null,[t(i,{name:"ExclamationCircleIcon"}),v]),e("p",null,[t(i,{name:"TagIcon"}),w]),e("p",null,[t(i,{name:"ArchiveBoxIcon"}),T]),e("p",null,[t(i,{name:"SparklesIcon"}),k])]),q,e("p",null,[a("Parallelization in the context of Lambdas means that multiple Lambda instances can be run at the same time. By default, the Lambda parallelization factor is set to 1. This means that only one Lambda instance can be a trigger for one Kinesis "),t(s,{content:"A shard is a unit of capacity within a Kinesis stream that provides a fixed amount of data throughput and serves as a partition for organizing events."},{default:c(()=>[a("shard")]),_:1}),a(". We adjusted this setting to 10, allowing up to ten Lambda instances to process data from a single Kinesis shard simultaneously. This significantly improves our ingestion capacity and scalability, increasing our system's ability to handle high-volume data streams quickly and efficiently.")]),C])}const V=r(b,[["render",x]]);export{L as __pageData,V as default}; diff --git a/docs/.vitepress/dist/assets/index.md.P4UWnwpO.js b/docs/.vitepress/dist/assets/index.md.P4UWnwpO.js new file mode 100644 index 0000000..37ff649 --- /dev/null +++ b/docs/.vitepress/dist/assets/index.md.P4UWnwpO.js @@ -0,0 +1 @@ +import{H as e}from"./chunks/theme.H2-gvx_u.js";import{f as t,N as a,o}from"./chunks/framework.CE9GIcbU.js";const l=JSON.parse('{"title":"","description":"","frontmatter":{"layout":false},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),r={name:"index.md"},m=Object.assign(r,{setup(s){return(n,c)=>(o(),t("div",null,[a(e)]))}});export{l as __pageData,m as default}; diff --git a/docs/.vitepress/dist/assets/index.md.P4UWnwpO.lean.js b/docs/.vitepress/dist/assets/index.md.P4UWnwpO.lean.js new file mode 100644 index 0000000..37ff649 --- /dev/null +++ b/docs/.vitepress/dist/assets/index.md.P4UWnwpO.lean.js @@ -0,0 +1 @@ +import{H as e}from"./chunks/theme.H2-gvx_u.js";import{f as t,N as a,o}from"./chunks/framework.CE9GIcbU.js";const l=JSON.parse('{"title":"","description":"","frontmatter":{"layout":false},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),r={name:"index.md"},m=Object.assign(r,{setup(s){return(n,c)=>(o(),t("div",null,[a(e)]))}});export{l as __pageData,m as default}; diff --git a/docs/.vitepress/dist/assets/index.md._d5ivb6b.js b/docs/.vitepress/dist/assets/index.md._d5ivb6b.js deleted file mode 100644 index be0cae6..0000000 --- a/docs/.vitepress/dist/assets/index.md._d5ivb6b.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,a2 as i,c as o,I as n,o as c}from"./chunks/framework.BJvAGJ4I.js";const r="/assets/sqlconsole.8DKWqgUH.png",d="/assets/kinesis.BLuFRNRT.png",v="/assets/terminal.ngYbvxa-.png",m="/assets/quarantinetable.6neOjckm.png",u="/assets/ai_error.CoajBoll.png",l={name:"HeliosLanding",data(){return{mouseX:0,mouseY:0,cursorX:0,cursorY:0,isOverActiveArea:!1,hideTimeout:null}},mounted(){document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseenter",this.handleMouseEnter,!0),document.addEventListener("mouseleave",this.handleMouseLeave,!0),this.animateCursor()},beforeUnmount(){document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseenter",this.handleMouseEnter,!0),document.removeEventListener("mouseleave",this.handleMouseLeave,!0),cancelAnimationFrame(this.animationFrame),clearTimeout(this.hideTimeout)},methods:{handleMouseMove(e){this.mouseX=e.clientX,this.mouseY=e.clientY,this.isOverActiveArea&&this.showCursor()},handleMouseEnter(e){e.target&&e.target.matches("header, main")&&(this.isOverActiveArea=!0,this.showCursor())},handleMouseLeave(e){e.target&&e.target.matches("header, main")&&(this.isOverActiveArea=!1,this.hideCursor())},animateCursor(){this.cursorX+=(this.mouseX-this.cursorX)*.15,this.cursorY+=(this.mouseY-this.cursorY)*.15;const t=document.querySelector(".cursor-element");t&&(t.style.transform=`translate(${this.cursorX}px, ${this.cursorY}px)`),this.animationFrame=requestAnimationFrame(this.animateCursor)},showCursor(){const e=document.querySelector(".cursor-glow");e==null||e.classList.add("active"),clearTimeout(this.hideTimeout),this.hideTimeout=setTimeout(()=>{this.isOverActiveArea&&(e==null||e.classList.remove("active"))},2e3)},hideCursor(){const e=document.querySelector(".cursor-glow");e==null||e.classList.remove("active"),clearTimeout(this.hideTimeout)}}},b=i('

Helios

Helios is an open-source platform designed to simplify the visualization and analysis of real-time event streams by exposing data for SQL querying.

Real-time SQL querying

Run SQL queries directly on your ingested data in real-time.

Built-in Amazon Kinesis Integration

Link your existing Kinesis streams to the Helios infrastructure.

Automated Deployment

Helios CLI configures Helios deployment with AWS credentials, deploys the entire Helios stack to AWS using a single command, and destroys the stack when needed.

',2);function h(e,t,a,g,f,y){return b}const p=s(l,[["render",h],["__scopeId","data-v-7cb9b0e2"]]),L=JSON.parse('{"title":"","description":"","frontmatter":{"layout":false},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),_={name:"index.md"},x=Object.assign(_,{setup(e){return(t,a)=>(c(),o("div",null,[n(p)]))}});export{L as __pageData,x as default}; diff --git a/docs/.vitepress/dist/assets/index.md._d5ivb6b.lean.js b/docs/.vitepress/dist/assets/index.md._d5ivb6b.lean.js deleted file mode 100644 index 3f92a5a..0000000 --- a/docs/.vitepress/dist/assets/index.md._d5ivb6b.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,a2 as i,c as o,I as n,o as c}from"./chunks/framework.BJvAGJ4I.js";const r="/assets/sqlconsole.8DKWqgUH.png",d="/assets/kinesis.BLuFRNRT.png",v="/assets/terminal.ngYbvxa-.png",m="/assets/quarantinetable.6neOjckm.png",u="/assets/ai_error.CoajBoll.png",l={name:"HeliosLanding",data(){return{mouseX:0,mouseY:0,cursorX:0,cursorY:0,isOverActiveArea:!1,hideTimeout:null}},mounted(){document.addEventListener("mousemove",this.handleMouseMove),document.addEventListener("mouseenter",this.handleMouseEnter,!0),document.addEventListener("mouseleave",this.handleMouseLeave,!0),this.animateCursor()},beforeUnmount(){document.removeEventListener("mousemove",this.handleMouseMove),document.removeEventListener("mouseenter",this.handleMouseEnter,!0),document.removeEventListener("mouseleave",this.handleMouseLeave,!0),cancelAnimationFrame(this.animationFrame),clearTimeout(this.hideTimeout)},methods:{handleMouseMove(e){this.mouseX=e.clientX,this.mouseY=e.clientY,this.isOverActiveArea&&this.showCursor()},handleMouseEnter(e){e.target&&e.target.matches("header, main")&&(this.isOverActiveArea=!0,this.showCursor())},handleMouseLeave(e){e.target&&e.target.matches("header, main")&&(this.isOverActiveArea=!1,this.hideCursor())},animateCursor(){this.cursorX+=(this.mouseX-this.cursorX)*.15,this.cursorY+=(this.mouseY-this.cursorY)*.15;const t=document.querySelector(".cursor-element");t&&(t.style.transform=`translate(${this.cursorX}px, ${this.cursorY}px)`),this.animationFrame=requestAnimationFrame(this.animateCursor)},showCursor(){const e=document.querySelector(".cursor-glow");e==null||e.classList.add("active"),clearTimeout(this.hideTimeout),this.hideTimeout=setTimeout(()=>{this.isOverActiveArea&&(e==null||e.classList.remove("active"))},2e3)},hideCursor(){const e=document.querySelector(".cursor-glow");e==null||e.classList.remove("active"),clearTimeout(this.hideTimeout)}}},b=i("",2);function h(e,t,a,g,f,y){return b}const p=s(l,[["render",h],["__scopeId","data-v-7cb9b0e2"]]),L=JSON.parse('{"title":"","description":"","frontmatter":{"layout":false},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),_={name:"index.md"},x=Object.assign(_,{setup(e){return(t,a)=>(c(),o("div",null,[n(p)]))}});export{L as __pageData,x as default}; diff --git a/docs/.vitepress/dist/assets/introduction.md.B3UNu6bI.js b/docs/.vitepress/dist/assets/introduction.md.B3UNu6bI.js deleted file mode 100644 index 97b8dd7..0000000 --- a/docs/.vitepress/dist/assets/introduction.md.B3UNu6bI.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as A,c as i,o as g,a2 as e}from"./chunks/framework.BJvAGJ4I.js";const h=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"introduction.md","filePath":"introduction.md"}'),E={name:"introduction.md"},C=e('

Introduction

Helios is an open-source platform designed to simplify the visualization and analysis of real-time event streams by exposing data for SQL querying. Our automated deployment process and intuitive interface allow teams to query and gain insights from their existing event streams.

In this case study, we will describe why we built Helios, the architecture and specific trade-offs made, technical challenges we encountered and improvements we made along the way.

Problem Domain

In today's data-driven landscape, teams increasingly rely on real-time event streams to gain insights and drive decision-making. However, the sheer volume and velocity of these streams often present significant challenges for extracting meaningful information, including viewing raw event data, performing ad-hoc analysis, and debugging events in real-time. These difficulties are particularly pronounced when using popular event streaming platforms like Amazon Kinesis, which offer limited native tools for data exploration and analysis. To fully appreciate the context in which Helios operates and the problems it aims to solve, it's essential to first understand some fundamental concepts related to events and event streaming.

Fundamental Background

Events

An event is a state change in a system or application. This could be as simple as a user clicking a button or as complex as a critical system update.

“[An event is] a small, self-contained, immutable object containing the details of something that happened at some point in time … [it] might be an action that a user took, such as viewing a page or making a purchase. It might also originate from a machine, such as a periodic measurement from a temperature sensor, or a CPU utilization metric.” - DDIA

Event streaming

Event streaming is the continuous transmission and processing of events from various sources in real-time or near real-time. Real-time has different meanings depending on the context. For instance, in high-frequency trading, real-time might mean microseconds, whereas in social media analytics, it could mean within a few minutes. In this case study, we define real-time as end-to-end latency within 5 seconds from event consumption by Helios from a streaming platform to event data being available for querying. This definition is based on our load testing, which will be detailed later in this case study.

In event streaming architecture, events are generated by producers, for example a web application which produces user click events, and can be processed by multiple consumers. A consumer is an entity that receives and processes messages or events from one or more streams. Brokers are the intermediary that receives, stores and distributes events (e.g. queues).

Event Streaming Platforms

Event streaming platforms act like a broker in that they receive events from producers and can have multiple consumers. Popular event streaming platforms include Apache Kafka, Google Pub/Sub, and Amazon Kinesis.

The defining characteristics of event streaming are its real-time nature - where data is processed as it arrives rather than being stored for later analysis, its continuity - with data being constantly added to the stream, and its unboundedness - meaning the total size of the data is unknown and potentially infinite.

Event streaming use cases

Event streaming serves a variety of functions, including:

  • User analytics - allowing organizations to gain immediate insights from data as it's generated
  • Log aggregation and monitoring - facilitating rapid identification of system issues and performance bottlenecks
  • Security - powers fraud detection systems, enabling swift responses to suspicious activities
  • Transaction processing - financial institutions leverage event streaming for processing transactions in real-time, ensuring up-to-the-second accuracy in account balances and trade executions

Event Streaming Platform Limitations

While event streaming platforms excel at ingesting and processing high-volume, real-time data, they present a significant challenge for data analysis and exploration: data accessibility. Event streaming platforms are optimized for throughput and real-time processing, not for ad-hoc querying or historical analysis. This makes it difficult for analysts to explore past data or perform complex analyses on the fly.

This limitation can significantly impact a team's ability to derive timely insights from their streaming data. To illustrate this challenge more concretely, let's consider a common use case in the e-commerce industry.

Example: User Analytics in E-commerce

Imagine an e-commerce platform using Amazon Kinesis to stream user behavior data. The platform captures events such as page views, product interactions, and purchases in real-time. The analytics team might want to leverage this data to:

  1. Analyze user journeys across sessions
  2. Compute real-time conversion rates
  3. Detect anomalies in user behavior

However, they face a significant hurdle: data accessibility. While Kinesis efficiently handles the ingestion of these events, it does not provide an easy way for analysts to query this data using familiar tools like SQL. This means that even seemingly simple questions like "What are the top 5 products viewed in the last hour?" become challenging to answer quickly.

The team finds themselves constrained by the limitations of the platform, unable to easily explore the wealth of data at their fingertips. This scenario underscores the need for additional tools that can bridge the gap between the data ingestion capabilities of streaming platforms and the analytical needs of data teams.

Given these challenges with event streams, various platforms exist to improve event visibility and accessibility. Helios is one such tool, focused on enabling real-time exploration and analysis of Amazon Kinesis event streams.

Third-Party Managed Services

There are a number of data analytics managed services(tooltip!) that help teams access their streaming data for analysis.

For example, Tinybird is a data platform that allows users to explore real-time event streams using SQL and publish API endpoints of the query results to be consumed by user-facing analytics systems. Some of their most well-known customers include Canva and Vercel.

There are similar services including StarTree, which operates in the same space as Tinybird and serves customers including Stripe.

Managed services offer quick setup and powerful features, but come with specific trade-offs.

The main trade-offs of using managed services like Tinybird are vendor lock-in, cost and data ownership. Vendor lock-in can make it difficult and expensive to switch to another provider or bring operations in-house. In terms of cost, while managed services often have higher upfront pricing, they can potentially reduce operational expenses by eliminating the need for in-house infrastructure management and specialized personnel. The total cost of ownership depends on factors such as scaling needs and existing resources. Regarding data ownership, using a managed service means entrusting data storage and management to a third party. This can raise concerns about data control, access, portability, and compliance, although many services offer security measures and options for increased data control.

For teams willing to navigate these trade-offs, managed services can often be a great option, providing scalability and specialized capabilities without the complexity of maintaining a custom infrastructure. If going the managed route, each service comes with its own set of considerations in terms of deployment complexity, underlying database, and integration capabilities.

DIY Infrastructure

Alternatively, teams opting for a do-it-yourself (DIY) solution would need to develop and maintain their own infrastructure and tooling, mirroring the capabilities offered by managed services such as Tinybird.

The DIY route offers maximum flexibility and control over your data and infrastructure. It allows for deep customization to meet specific needs and can potentially be more cost-effective at large scales. However, it requires in-house expertise in areas such as data engineering and infrastructure management. The initial setup time and ongoing maintenance efforts are also considerably higher compared to managed services.

How does Helios compare?

Helios provides an alternative option in the landscape of event stream analytics solutions, particularly for users of Amazon Kinesis. Our platform aims to address some of the challenges associated with both third-party managed services and DIY approaches.

Helios strives to offer a practical solution for teams looking to analyze their Kinesis data without the full complexity of a DIY setup or the potential costs of third-party managed services.

Helios simplifies the process of exploring and analyzing Amazon Kinesis event data by offering a Kinesis integration, an intuitive SQL-based analysis interface, and automated AWS infrastructure deployment for the Helios application.

At its core, Helios is comprised of:

  1. Helios Amazon Kinesis Integration: Links existing Kinesis streams to the Helios infrastructure.

  2. Helios web application: offers an interface for connecting existing streams to the Helios backend infrastructure and an integrated SQL console querying and analyzing Kinesis event streams.

  3. Helios CLI: configures Helios deployment with AWS credentials; deploys the entire Helios stack to AWS using a single command; and destroys the stack when needed. We will go into more detail within the Automating Deployment section.

As with any tool, the suitability of Helios depends on each team's specific requirements, existing infrastructure, and resources. We encourage potential users to evaluate how our offering aligns with their particular needs and constraints.

Comparison Table

To summarize, teams have numerous options for viewing and analyzing events within Kinesis streams. There is no one-size-fits-all solution. The choices can be broadly categorized into three main options: DIY, paid 3rd-party services, and open-source solutions (including Helios).

Each option offers distinct advantages and limitations, making it crucial for teams to carefully evaluate their specific requirements before selecting the most suitable approach.

Having explored the problem space and current solutions, we will now dive into Helios' internal workings. The upcoming section will break down our architecture, examining how each component functions in detail.

',53),o=[C];function B(s,I,a,n,t,c){return g(),i("div",null,o)}const w=A(E,[["render",B]]);export{h as __pageData,w as default}; diff --git a/docs/.vitepress/dist/assets/introduction.md.B3UNu6bI.lean.js b/docs/.vitepress/dist/assets/introduction.md.B3UNu6bI.lean.js deleted file mode 100644 index c8123d7..0000000 --- a/docs/.vitepress/dist/assets/introduction.md.B3UNu6bI.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as A,c as i,o as g,a2 as e}from"./chunks/framework.BJvAGJ4I.js";const h=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"introduction.md","filePath":"introduction.md"}'),E={name:"introduction.md"},C=e("",53),o=[C];function B(s,I,a,n,t,c){return g(),i("div",null,o)}const w=A(E,[["render",B]]);export{h as __pageData,w as default}; diff --git a/docs/.vitepress/dist/assets/introduction.md.GgrqDEP4.js b/docs/.vitepress/dist/assets/introduction.md.GgrqDEP4.js new file mode 100644 index 0000000..0266be1 --- /dev/null +++ b/docs/.vitepress/dist/assets/introduction.md.GgrqDEP4.js @@ -0,0 +1 @@ +import{_ as r}from"./chunks/cli_dropshadow.CnHJm-0V.js";import{_ as l,e as s,f as c,g as e,N as a,m as n,u as d,c as i,o as m}from"./chunks/framework.CE9GIcbU.js";const p="/case-study/assets/eventbroker.CGzUiw4n.png",h="/case-study/assets/blackbox.DaaLKg1o.png",u="/case-study/assets/tinybird_arch.C3J8I2tT.png",g="/case-study/assets/kinesis_to_helios.DXI1DJxu.png",f="/case-study/assets/webapp.D7dG4eWK.png",v="/case-study/assets/comparetableshadow.tJZU6OEw.png",ae=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"introduction.md","filePath":"introduction.md"}'),y={name:"introduction.md"},b=i('

Introduction

Helios is an open-source platform designed to simplify the visualization and analysis of real-time event streams by exposing data for SQL querying. Our automated deployment process and intuitive interface allow teams to query and gain insights from their existing event streams.

In this case study, we will describe why we built Helios, the architecture and specific trade-offs made, technical challenges we encountered and improvements we made along the way.

Problem Domain

In today's data-driven landscape, teams increasingly rely on real-time event streams to gain insights and drive decision-making. However, the sheer volume and velocity of these streams often present significant challenges for extracting meaningful information, including viewing raw event data, performing ad-hoc analysis, and debugging events in real-time. These difficulties are particularly pronounced when using popular event streaming platforms like Amazon Kinesis, which offer limited native tools for data exploration and analysis. To fully appreciate the context in which Helios operates and the problems it aims to solve, it's essential to first understand some fundamental concepts related to events and event streaming.

Fundamental Background

Events

An event is a state change in a system or application. This could be as simple as a user clicking a button or as complex as a critical system update.

“[An event is] a small, self-contained, immutable object containing the details of something that happened at some point in time … [it] might be an action that a user took, such as viewing a page or making a purchase. It might also originate from a machine, such as a periodic measurement from a temperature sensor, or a CPU utilization metric.” - DDIA

Event streaming

Event Streaming

Event streaming is the continuous transmission and processing of events from various sources in real-time or near real-time. Real-time has different meanings depending on the context. For instance, in high-frequency trading, real-time might mean microseconds, whereas in social media analytics, it could mean within a few minutes. In this case study, we define real-time as end-to-end latency within 5 seconds from event consumption by Helios from a streaming platform to event data being available for querying. This definition is based on our load testing, which will be detailed later in this case study.

In event streaming architecture, events are generated by producers, for example a web application which produces user click events, and can be processed by multiple consumers. A consumer is an entity that receives and processes messages or events from one or more streams. Brokers are the intermediary that receives, stores and distributes events (e.g. queues).

Event Streaming Platforms

Event streaming platforms act like a broker in that they receive events from producers and can have multiple consumers. Popular event streaming platforms include Apache Kafka, Google Pub/Sub, and Amazon Kinesis.

The defining characteristics of event streaming are its real-time nature - where data is processed as it arrives rather than being stored for later analysis, its continuity - with data being constantly added to the stream, and its unboundedness - meaning the total size of the data is unknown and potentially infinite.

Event streaming use cases

Event streaming serves a variety of functions, including:

',18),_={class:"icon-list"},w=i('

Event Streaming Platform Limitations

While event streaming platforms excel at ingesting and processing high-volume, real-time data, they present a significant challenge for data analysis and exploration: data accessibility. Event streaming platforms are optimized for throughput and real-time processing, not for ad-hoc querying or historical analysis. This makes it difficult for analysts to explore past data or perform complex analyses on the fly.

Black Box

This limitation can significantly impact a team's ability to derive timely insights from their streaming data. To illustrate this challenge more concretely, let's consider a common use case in the e-commerce industry.

Example: User Analytics in E-commerce

Imagine an e-commerce platform using Amazon Kinesis to stream user behavior data. The platform captures events such as page views, product interactions, and purchases in real-time. The analytics team might want to leverage this data to:

',6),T={class:"icon-list"},x=e("span",null,"Analyze user journeys across sessions",-1),k=e("span",null,"Compute real-time conversion rates",-1),I=e("span",null,"Detect anomalies in user behavior",-1),q=e("p",null,'However, they face a significant hurdle: data accessibility. While Kinesis efficiently handles the ingestion of these events, it does not provide an easy way for analysts to query this data using familiar tools like SQL. This means that even seemingly simple questions like "What are the top 5 products viewed in the last hour?" become challenging to answer quickly.',-1),A=e("p",null,"The team finds themselves constrained by the limitations of the platform, unable to easily explore the wealth of data at their fingertips. This scenario underscores the need for additional tools that can bridge the gap between the data ingestion capabilities of streaming platforms and the analytical needs of data teams.",-1),P=e("p",null,"Given these challenges with event streams, various platforms exist to improve event visibility and accessibility. Helios is one such tool, focused on enabling real-time exploration and analysis of Amazon Kinesis event streams.",-1),S=e("h3",{id:"third-party-managed-services",tabindex:"-1"},[n("Third-Party Managed Services "),e("a",{class:"header-anchor",href:"#third-party-managed-services","aria-label":'Permalink to "Third-Party Managed Services"'},"​")],-1),C=i('

For example, Tinybird is a data platform that allows users to explore real-time event streams using SQL and publish API endpoints of the query results to be consumed by user-facing analytics systems. Some of their most well-known customers include Canva and Vercel.

There are similar services including StarTree, which operates in the same space as Tinybird and serves customers including Stripe.

Tinybird

Managed services offer quick setup and powerful features, but come with specific trade-offs.

The main trade-offs of using managed services like Tinybird are vendor lock-in, cost and data ownership. Vendor lock-in can make it difficult and expensive to switch to another provider or bring operations in-house. In terms of cost, while managed services often have higher upfront pricing, they can potentially reduce operational expenses by eliminating the need for in-house infrastructure management and specialized personnel. The total cost of ownership depends on factors such as scaling needs and existing resources. Regarding data ownership, using a managed service means entrusting data storage and management to a third party. This can raise concerns about data control, access, portability, and compliance, although many services offer security measures and options for increased data control.

For teams willing to navigate these trade-offs, managed services can often be a great option, providing scalability and specialized capabilities without the complexity of maintaining a custom infrastructure. If going the managed route, each service comes with its own set of considerations in terms of deployment complexity, underlying database, and integration capabilities.

DIY Infrastructure

Alternatively, teams opting for a do-it-yourself (DIY) solution would need to develop and maintain their own infrastructure and tooling, mirroring the capabilities offered by managed services such as Tinybird.

The DIY route offers maximum flexibility and control over your data and infrastructure. It allows for deep customization to meet specific needs and can potentially be more cost-effective at large scales. However, it requires in-house expertise in areas such as data engineering and infrastructure management. The initial setup time and ongoing maintenance efforts are also considerably higher compared to managed services.

How does Helios compare?

Helios provides an alternative option in the landscape of event stream analytics solutions, particularly for users of Amazon Kinesis. Our platform aims to address some of the challenges associated with both third-party managed services and DIY approaches.

Helios strives to offer a practical solution for teams looking to analyze their Kinesis data without the full complexity of a DIY setup or the potential costs of third-party managed services.

Helios simplifies the process of exploring and analyzing Amazon Kinesis event data by offering a Kinesis integration, an intuitive SQL-based analysis interface, and automated AWS infrastructure deployment for the Helios application.

At its core, Helios is comprised of:

',14),H={class:"icon-list"},E=e("span",null,"Helios Amazon Kinesis Integration: Links existing Kinesis streams to the Helios infrastructure.",-1),z=e("p",null,[e("img",{src:g,alt:"Kinesis Connection"})],-1),D={class:"icon-list"},K=e("span",null,"Helios web application: offers an interface for connecting existing streams to the Helios backend infrastructure and an integrated SQL console querying and analyzing Kinesis event streams.",-1),L=e("p",null,[e("img",{src:f,alt:"Web app"})],-1),W={class:"icon-list"},V=e("span",null,"Helios CLI: configures Helios deployment with AWS credentials; deploys the entire Helios stack to AWS using a single command; and destroys the stack when needed. We will go into more detail within the Automating Deployment section.",-1),B=e("p",null,[e("img",{src:r,alt:"CLI"})],-1),N=e("p",null,"As with any tool, the suitability of Helios depends on each team's specific requirements, existing infrastructure, and resources. We encourage potential users to evaluate how our offering aligns with their particular needs and constraints.",-1),Y=e("h3",{id:"comparison-table",tabindex:"-1"},[n("Comparison Table "),e("a",{class:"header-anchor",href:"#comparison-table","aria-label":'Permalink to "Comparison Table"'},"​")],-1),U=e("p",null,"To summarize, teams have numerous options for viewing and analyzing events within Kinesis streams. There is no one-size-fits-all solution. The choices can be broadly categorized into three main options: DIY, paid 3rd-party services, and open-source solutions (including Helios).",-1),F=e("p",null,"Each option offers distinct advantages and limitations, making it crucial for teams to carefully evaluate their specific requirements before selecting the most suitable approach.",-1),Q=e("p",null,[e("img",{src:v,alt:"Comparison Table"})],-1),R=e("p",null,"Having explored the problem space and current solutions, we will now dive into Helios' internal workings. The upcoming section will break down our architecture, examining how each component functions in detail.",-1);function G(J,M,O,$,j,X){const t=s("Icon"),o=s("TippyWrapper");return m(),c("div",null,[b,e("div",_,[e("p",null,[a(t,{name:"ChartBarIcon"}),n(" User analytics - allowing organizations to gain immediate insights from data as it's generated")]),e("p",null,[a(t,{name:"DocumentTextIcon"}),n(" Log aggregation and monitoring - facilitating rapid identification of system issues and performance bottlenecks")]),e("p",null,[a(t,{name:"ShieldCheckIcon"}),n(" Security - powers fraud detection systems, enabling swift responses to suspicious activities")]),e("p",null,[a(t,{name:"CreditCardIcon"}),n(" Transaction processing - financial institutions leverage event streaming for processing transactions in real-time, ensuring up-to-the-second accuracy in account balances and trade executions")])]),w,e("div",T,[e("p",null,[a(t,{name:"ChartBarIcon"}),x]),e("p",null,[a(t,{name:"CalculatorIcon"}),k]),e("p",null,[a(t,{name:"ExclamationTriangleIcon"}),I])]),q,A,P,S,e("p",null,[n("There are a number of "),a(o,{content:"Managed service providers include: Tinybird, ClickHouse Cloud, StarTree, DoubleCloud, Altinity, & Imply"},{default:d(()=>[n("data analytics managed services")]),_:1}),n(" that help teams access their streaming data for analysis.")]),C,e("div",H,[e("p",null,[a(t,{name:"LinkIcon"}),E])]),z,e("div",D,[e("p",null,[a(t,{name:"WindowIcon"}),K])]),L,e("div",W,[e("p",null,[a(t,{name:"CommandLineIcon"}),V])]),B,N,Y,U,F,Q,R])}const te=l(y,[["render",G]]);export{ae as __pageData,te as default}; diff --git a/docs/.vitepress/dist/assets/introduction.md.GgrqDEP4.lean.js b/docs/.vitepress/dist/assets/introduction.md.GgrqDEP4.lean.js new file mode 100644 index 0000000..564557e --- /dev/null +++ b/docs/.vitepress/dist/assets/introduction.md.GgrqDEP4.lean.js @@ -0,0 +1 @@ +import{_ as r}from"./chunks/cli_dropshadow.CnHJm-0V.js";import{_ as l,e as s,f as c,g as e,N as a,m as n,u as d,c as i,o as m}from"./chunks/framework.CE9GIcbU.js";const p="/case-study/assets/eventbroker.CGzUiw4n.png",h="/case-study/assets/blackbox.DaaLKg1o.png",u="/case-study/assets/tinybird_arch.C3J8I2tT.png",g="/case-study/assets/kinesis_to_helios.DXI1DJxu.png",f="/case-study/assets/webapp.D7dG4eWK.png",v="/case-study/assets/comparetableshadow.tJZU6OEw.png",ae=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"introduction.md","filePath":"introduction.md"}'),y={name:"introduction.md"},b=i("",18),_={class:"icon-list"},w=i("",6),T={class:"icon-list"},x=e("span",null,"Analyze user journeys across sessions",-1),k=e("span",null,"Compute real-time conversion rates",-1),I=e("span",null,"Detect anomalies in user behavior",-1),q=e("p",null,'However, they face a significant hurdle: data accessibility. While Kinesis efficiently handles the ingestion of these events, it does not provide an easy way for analysts to query this data using familiar tools like SQL. This means that even seemingly simple questions like "What are the top 5 products viewed in the last hour?" become challenging to answer quickly.',-1),A=e("p",null,"The team finds themselves constrained by the limitations of the platform, unable to easily explore the wealth of data at their fingertips. This scenario underscores the need for additional tools that can bridge the gap between the data ingestion capabilities of streaming platforms and the analytical needs of data teams.",-1),P=e("p",null,"Given these challenges with event streams, various platforms exist to improve event visibility and accessibility. Helios is one such tool, focused on enabling real-time exploration and analysis of Amazon Kinesis event streams.",-1),S=e("h3",{id:"third-party-managed-services",tabindex:"-1"},[n("Third-Party Managed Services "),e("a",{class:"header-anchor",href:"#third-party-managed-services","aria-label":'Permalink to "Third-Party Managed Services"'},"​")],-1),C=i("",14),H={class:"icon-list"},E=e("span",null,"Helios Amazon Kinesis Integration: Links existing Kinesis streams to the Helios infrastructure.",-1),z=e("p",null,[e("img",{src:g,alt:"Kinesis Connection"})],-1),D={class:"icon-list"},K=e("span",null,"Helios web application: offers an interface for connecting existing streams to the Helios backend infrastructure and an integrated SQL console querying and analyzing Kinesis event streams.",-1),L=e("p",null,[e("img",{src:f,alt:"Web app"})],-1),W={class:"icon-list"},V=e("span",null,"Helios CLI: configures Helios deployment with AWS credentials; deploys the entire Helios stack to AWS using a single command; and destroys the stack when needed. We will go into more detail within the Automating Deployment section.",-1),B=e("p",null,[e("img",{src:r,alt:"CLI"})],-1),N=e("p",null,"As with any tool, the suitability of Helios depends on each team's specific requirements, existing infrastructure, and resources. We encourage potential users to evaluate how our offering aligns with their particular needs and constraints.",-1),Y=e("h3",{id:"comparison-table",tabindex:"-1"},[n("Comparison Table "),e("a",{class:"header-anchor",href:"#comparison-table","aria-label":'Permalink to "Comparison Table"'},"​")],-1),U=e("p",null,"To summarize, teams have numerous options for viewing and analyzing events within Kinesis streams. There is no one-size-fits-all solution. The choices can be broadly categorized into three main options: DIY, paid 3rd-party services, and open-source solutions (including Helios).",-1),F=e("p",null,"Each option offers distinct advantages and limitations, making it crucial for teams to carefully evaluate their specific requirements before selecting the most suitable approach.",-1),Q=e("p",null,[e("img",{src:v,alt:"Comparison Table"})],-1),R=e("p",null,"Having explored the problem space and current solutions, we will now dive into Helios' internal workings. The upcoming section will break down our architecture, examining how each component functions in detail.",-1);function G(J,M,O,$,j,X){const t=s("Icon"),o=s("TippyWrapper");return m(),c("div",null,[b,e("div",_,[e("p",null,[a(t,{name:"ChartBarIcon"}),n(" User analytics - allowing organizations to gain immediate insights from data as it's generated")]),e("p",null,[a(t,{name:"DocumentTextIcon"}),n(" Log aggregation and monitoring - facilitating rapid identification of system issues and performance bottlenecks")]),e("p",null,[a(t,{name:"ShieldCheckIcon"}),n(" Security - powers fraud detection systems, enabling swift responses to suspicious activities")]),e("p",null,[a(t,{name:"CreditCardIcon"}),n(" Transaction processing - financial institutions leverage event streaming for processing transactions in real-time, ensuring up-to-the-second accuracy in account balances and trade executions")])]),w,e("div",T,[e("p",null,[a(t,{name:"ChartBarIcon"}),x]),e("p",null,[a(t,{name:"CalculatorIcon"}),k]),e("p",null,[a(t,{name:"ExclamationTriangleIcon"}),I])]),q,A,P,S,e("p",null,[n("There are a number of "),a(o,{content:"Managed service providers include: Tinybird, ClickHouse Cloud, StarTree, DoubleCloud, Altinity, & Imply"},{default:d(()=>[n("data analytics managed services")]),_:1}),n(" that help teams access their streaming data for analysis.")]),C,e("div",H,[e("p",null,[a(t,{name:"LinkIcon"}),E])]),z,e("div",D,[e("p",null,[a(t,{name:"WindowIcon"}),K])]),L,e("div",W,[e("p",null,[a(t,{name:"CommandLineIcon"}),V])]),B,N,Y,U,F,Q,R])}const te=l(y,[["render",G]]);export{ae as __pageData,te as default}; diff --git a/docs/.vitepress/dist/assets/kinesis_integration1.CxipKTy_.png b/docs/.vitepress/dist/assets/kinesis_integration1.CxipKTy_.png new file mode 100644 index 0000000..5703a15 Binary files /dev/null and b/docs/.vitepress/dist/assets/kinesis_integration1.CxipKTy_.png differ diff --git a/docs/.vitepress/dist/assets/kinesis_integration2.vj_pjSy2.png b/docs/.vitepress/dist/assets/kinesis_integration2.vj_pjSy2.png new file mode 100644 index 0000000..601cf3f Binary files /dev/null and b/docs/.vitepress/dist/assets/kinesis_integration2.vj_pjSy2.png differ diff --git a/docs/.vitepress/dist/assets/kinesis_to_helios.DXI1DJxu.png b/docs/.vitepress/dist/assets/kinesis_to_helios.DXI1DJxu.png new file mode 100644 index 0000000..31d6dff Binary files /dev/null and b/docs/.vitepress/dist/assets/kinesis_to_helios.DXI1DJxu.png differ diff --git a/docs/.vitepress/dist/assets/lambdacoldstarts.xrsyvsw9.png b/docs/.vitepress/dist/assets/lambdacoldstarts.xrsyvsw9.png new file mode 100644 index 0000000..301659d Binary files /dev/null and b/docs/.vitepress/dist/assets/lambdacoldstarts.xrsyvsw9.png differ diff --git a/docs/.vitepress/dist/assets/lambdakinesislimit.UF9Kqh4d.png b/docs/.vitepress/dist/assets/lambdakinesislimit.UF9Kqh4d.png new file mode 100644 index 0000000..2c10079 Binary files /dev/null and b/docs/.vitepress/dist/assets/lambdakinesislimit.UF9Kqh4d.png differ diff --git a/docs/.vitepress/dist/assets/load-testing.md.DvtUAtXt.js b/docs/.vitepress/dist/assets/load-testing.md.DvtUAtXt.js deleted file mode 100644 index be1396a..0000000 --- a/docs/.vitepress/dist/assets/load-testing.md.DvtUAtXt.js +++ /dev/null @@ -1,563 +0,0 @@ -import{d as Gn,h as ne,v as qn,a3 as Wn,_ as Yn,s as Ce,a4 as $n,D as Vn,o as C,c as F,j as P,F as K,E as pe,b as Ge,t as ce,a0 as Xn,e as Kn,a5 as Qn,n as qe,a as kt,p as Zn,l as Jn,I as ea,a2 as ta}from"./chunks/framework.BJvAGJ4I.js";const Ct=()=>{};let dt={},an={},rn=null,sn={mark:Ct,measure:Ct};try{typeof window<"u"&&(dt=window),typeof document<"u"&&(an=document),typeof MutationObserver<"u"&&(rn=MutationObserver),typeof performance<"u"&&(sn=performance)}catch{}const{userAgent:Nt=""}=dt.navigator||{},J=dt,I=an,Lt=rn,Ne=sn;J.document;const $=!!I.documentElement&&!!I.head&&typeof I.addEventListener=="function"&&typeof I.createElement=="function",on=~Nt.indexOf("MSIE")||~Nt.indexOf("Trident/");var O="classic",ln="duotone",D="sharp",_="sharp-duotone",na=[O,ln,D,_],aa={classic:{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},sharp:{900:"fass",400:"fasr",300:"fasl",100:"fast"},"sharp-duotone":{900:"fasds"}},Rt={kit:{fak:"kit","fa-kit":"kit"},"kit-duotone":{fakd:"kit-duotone","fa-kit-duotone":"kit-duotone"}},ra=["kit"],ia=/fa(s|r|l|t|d|b|k|kd|ss|sr|sl|st|sds)?[\-\ ]/,sa=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i,oa={"Font Awesome 5 Free":{900:"fas",400:"far"},"Font Awesome 5 Pro":{900:"fas",400:"far",normal:"far",300:"fal"},"Font Awesome 5 Brands":{400:"fab",normal:"fab"},"Font Awesome 5 Duotone":{900:"fad"}},la={"Font Awesome 6 Free":{900:"fas",400:"far"},"Font Awesome 6 Pro":{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},"Font Awesome 6 Brands":{400:"fab",normal:"fab"},"Font Awesome 6 Duotone":{900:"fad"},"Font Awesome 6 Sharp":{900:"fass",400:"fasr",normal:"fasr",300:"fasl",100:"fast"},"Font Awesome 6 Sharp Duotone":{900:"fasds"}},ca={classic:{"fa-brands":"fab","fa-duotone":"fad","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},sharp:{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"},"sharp-duotone":{"fa-solid":"fasds"}},ua={classic:["fas","far","fal","fat"],sharp:["fass","fasr","fasl","fast"],"sharp-duotone":["fasds"]},fa={classic:{fab:"fa-brands",fad:"fa-duotone",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},sharp:{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"},"sharp-duotone":{fasds:"fa-solid"}},da={classic:{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab"},sharp:{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"},"sharp-duotone":{solid:"fasds"}},cn={classic:{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands"},sharp:{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"},"sharp-duotone":{fa:"solid",fasds:"solid","fa-solid":"solid"}},ma=["solid","regular","light","thin","duotone","brands"],un=[1,2,3,4,5,6,7,8,9,10],ga=un.concat([11,12,13,14,15,16,17,18,19,20]),be={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},ha=[...Object.keys(ua),...ma,"2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",be.GROUP,be.SWAP_OPACITY,be.PRIMARY,be.SECONDARY].concat(un.map(e=>"".concat(e,"x"))).concat(ga.map(e=>"w-".concat(e))),pa={"Font Awesome Kit":{400:"fak",normal:"fak"},"Font Awesome Kit Duotone":{400:"fakd",normal:"fakd"}},ba={kit:{"fa-kit":"fak"},"kit-duotone":{"fa-kit-duotone":"fakd"}},ya={kit:{fak:"fa-kit"},"kit-duotone":{fakd:"fa-kit-duotone"}},Pt={kit:{kit:"fak"},"kit-duotone":{"kit-duotone":"fakd"}};const W="___FONT_AWESOME___",Qe=16,fn="fa",dn="svg-inline--fa",se="data-fa-i2svg",Ze="data-fa-pseudo-element",va="data-fa-pseudo-element-pending",mt="data-prefix",gt="data-icon",Ft="fontawesome-i2svg",Ea="async",Aa=["HTML","HEAD","STYLE","SCRIPT"],mn=(()=>{try{return!0}catch{return!1}})(),gn=[O,D,_];function Se(e){return new Proxy(e,{get(t,n){return n in t?t[n]:t[O]}})}const hn={...cn};hn[O]={...cn[O],...Rt.kit,...Rt["kit-duotone"]};const re=Se(hn),Je={...da};Je[O]={...Je[O],...Pt.kit,...Pt["kit-duotone"]};const Ae=Se(Je),et={...fa};et[O]={...et[O],...ya.kit};const ie=Se(et),tt={...ca};tt[O]={...tt[O],...ba.kit};const xa=Se(tt),Sa=ia,pn="fa-layers-text",Ta=sa,Ia={...aa};Se(Ia);const Oa=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],We=be,de=new Set;Object.keys(Ae[O]).map(de.add.bind(de));Object.keys(Ae[D]).map(de.add.bind(de));Object.keys(Ae[_]).map(de.add.bind(de));const wa=[...ra,...ha],ve=J.FontAwesomeConfig||{};function ka(e){var t=I.querySelector("script["+e+"]");if(t)return t.getAttribute(e)}function Ca(e){return e===""?!0:e==="false"?!1:e==="true"?!0:e}I&&typeof I.querySelector=="function"&&[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach(t=>{let[n,a]=t;const r=Ca(ka(n));r!=null&&(ve[a]=r)});const bn={styleDefault:"solid",familyDefault:"classic",cssPrefix:fn,replacementClass:dn,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};ve.familyPrefix&&(ve.cssPrefix=ve.familyPrefix);const me={...bn,...ve};me.autoReplaceSvg||(me.observeMutations=!1);const p={};Object.keys(bn).forEach(e=>{Object.defineProperty(p,e,{enumerable:!0,set:function(t){me[e]=t,Ee.forEach(n=>n(p))},get:function(){return me[e]}})});Object.defineProperty(p,"familyPrefix",{enumerable:!0,set:function(e){me.cssPrefix=e,Ee.forEach(t=>t(p))},get:function(){return me.cssPrefix}});J.FontAwesomeConfig=p;const Ee=[];function Na(e){return Ee.push(e),()=>{Ee.splice(Ee.indexOf(e),1)}}const Q=Qe,j={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function La(e){if(!e||!$)return;const t=I.createElement("style");t.setAttribute("type","text/css"),t.innerHTML=e;const n=I.head.childNodes;let a=null;for(let r=n.length-1;r>-1;r--){const s=n[r],l=(s.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(l)>-1&&(a=s)}return I.head.insertBefore(t,a),e}const Ra="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function xe(){let e=12,t="";for(;e-- >0;)t+=Ra[Math.random()*62|0];return t}function ge(e){const t=[];for(let n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function ht(e){return e.classList?ge(e.classList):(e.getAttribute("class")||"").split(" ").filter(t=>t)}function yn(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function Pa(e){return Object.keys(e||{}).reduce((t,n)=>t+"".concat(n,'="').concat(yn(e[n]),'" '),"").trim()}function De(e){return Object.keys(e||{}).reduce((t,n)=>t+"".concat(n,": ").concat(e[n].trim(),";"),"")}function pt(e){return e.size!==j.size||e.x!==j.x||e.y!==j.y||e.rotate!==j.rotate||e.flipX||e.flipY}function Fa(e){let{transform:t,containerWidth:n,iconWidth:a}=e;const r={transform:"translate(".concat(n/2," 256)")},s="translate(".concat(t.x*32,", ").concat(t.y*32,") "),l="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),i="rotate(".concat(t.rotate," 0 0)"),u={transform:"".concat(s," ").concat(l," ").concat(i)},d={transform:"translate(".concat(a/2*-1," -256)")};return{outer:r,inner:u,path:d}}function Ma(e){let{transform:t,width:n=Qe,height:a=Qe,startCentered:r=!1}=e,s="";return r&&on?s+="translate(".concat(t.x/Q-n/2,"em, ").concat(t.y/Q-a/2,"em) "):r?s+="translate(calc(-50% + ".concat(t.x/Q,"em), calc(-50% + ").concat(t.y/Q,"em)) "):s+="translate(".concat(t.x/Q,"em, ").concat(t.y/Q,"em) "),s+="scale(".concat(t.size/Q*(t.flipX?-1:1),", ").concat(t.size/Q*(t.flipY?-1:1),") "),s+="rotate(".concat(t.rotate,"deg) "),s}var Da=`:root, :host { - --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"; - --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"; - --fa-font-light: normal 300 1em/1 "Font Awesome 6 Pro"; - --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Pro"; - --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone"; - --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"; - --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp"; - --fa-font-sharp-regular: normal 400 1em/1 "Font Awesome 6 Sharp"; - --fa-font-sharp-light: normal 300 1em/1 "Font Awesome 6 Sharp"; - --fa-font-sharp-thin: normal 100 1em/1 "Font Awesome 6 Sharp"; - --fa-font-sharp-duotone-solid: normal 900 1em/1 "Font Awesome 6 Sharp Duotone"; -} - -svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa { - overflow: visible; - box-sizing: content-box; -} - -.svg-inline--fa { - display: var(--fa-display, inline-block); - height: 1em; - overflow: visible; - vertical-align: -0.125em; -} -.svg-inline--fa.fa-2xs { - vertical-align: 0.1em; -} -.svg-inline--fa.fa-xs { - vertical-align: 0em; -} -.svg-inline--fa.fa-sm { - vertical-align: -0.0714285705em; -} -.svg-inline--fa.fa-lg { - vertical-align: -0.2em; -} -.svg-inline--fa.fa-xl { - vertical-align: -0.25em; -} -.svg-inline--fa.fa-2xl { - vertical-align: -0.3125em; -} -.svg-inline--fa.fa-pull-left { - margin-right: var(--fa-pull-margin, 0.3em); - width: auto; -} -.svg-inline--fa.fa-pull-right { - margin-left: var(--fa-pull-margin, 0.3em); - width: auto; -} -.svg-inline--fa.fa-li { - width: var(--fa-li-width, 2em); - top: 0.25em; -} -.svg-inline--fa.fa-fw { - width: var(--fa-fw-width, 1.25em); -} - -.fa-layers svg.svg-inline--fa { - bottom: 0; - left: 0; - margin: auto; - position: absolute; - right: 0; - top: 0; -} - -.fa-layers-counter, .fa-layers-text { - display: inline-block; - position: absolute; - text-align: center; -} - -.fa-layers { - display: inline-block; - height: 1em; - position: relative; - text-align: center; - vertical-align: -0.125em; - width: 1em; -} -.fa-layers svg.svg-inline--fa { - transform-origin: center center; -} - -.fa-layers-text { - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - transform-origin: center center; -} - -.fa-layers-counter { - background-color: var(--fa-counter-background-color, #ff253a); - border-radius: var(--fa-counter-border-radius, 1em); - box-sizing: border-box; - color: var(--fa-inverse, #fff); - line-height: var(--fa-counter-line-height, 1); - max-width: var(--fa-counter-max-width, 5em); - min-width: var(--fa-counter-min-width, 1.5em); - overflow: hidden; - padding: var(--fa-counter-padding, 0.25em 0.5em); - right: var(--fa-right, 0); - text-overflow: ellipsis; - top: var(--fa-top, 0); - transform: scale(var(--fa-counter-scale, 0.25)); - transform-origin: top right; -} - -.fa-layers-bottom-right { - bottom: var(--fa-bottom, 0); - right: var(--fa-right, 0); - top: auto; - transform: scale(var(--fa-layers-scale, 0.25)); - transform-origin: bottom right; -} - -.fa-layers-bottom-left { - bottom: var(--fa-bottom, 0); - left: var(--fa-left, 0); - right: auto; - top: auto; - transform: scale(var(--fa-layers-scale, 0.25)); - transform-origin: bottom left; -} - -.fa-layers-top-right { - top: var(--fa-top, 0); - right: var(--fa-right, 0); - transform: scale(var(--fa-layers-scale, 0.25)); - transform-origin: top right; -} - -.fa-layers-top-left { - left: var(--fa-left, 0); - right: auto; - top: var(--fa-top, 0); - transform: scale(var(--fa-layers-scale, 0.25)); - transform-origin: top left; -} - -.fa-1x { - font-size: 1em; -} - -.fa-2x { - font-size: 2em; -} - -.fa-3x { - font-size: 3em; -} - -.fa-4x { - font-size: 4em; -} - -.fa-5x { - font-size: 5em; -} - -.fa-6x { - font-size: 6em; -} - -.fa-7x { - font-size: 7em; -} - -.fa-8x { - font-size: 8em; -} - -.fa-9x { - font-size: 9em; -} - -.fa-10x { - font-size: 10em; -} - -.fa-2xs { - font-size: 0.625em; - line-height: 0.1em; - vertical-align: 0.225em; -} - -.fa-xs { - font-size: 0.75em; - line-height: 0.0833333337em; - vertical-align: 0.125em; -} - -.fa-sm { - font-size: 0.875em; - line-height: 0.0714285718em; - vertical-align: 0.0535714295em; -} - -.fa-lg { - font-size: 1.25em; - line-height: 0.05em; - vertical-align: -0.075em; -} - -.fa-xl { - font-size: 1.5em; - line-height: 0.0416666682em; - vertical-align: -0.125em; -} - -.fa-2xl { - font-size: 2em; - line-height: 0.03125em; - vertical-align: -0.1875em; -} - -.fa-fw { - text-align: center; - width: 1.25em; -} - -.fa-ul { - list-style-type: none; - margin-left: var(--fa-li-margin, 2.5em); - padding-left: 0; -} -.fa-ul > li { - position: relative; -} - -.fa-li { - left: calc(-1 * var(--fa-li-width, 2em)); - position: absolute; - text-align: center; - width: var(--fa-li-width, 2em); - line-height: inherit; -} - -.fa-border { - border-color: var(--fa-border-color, #eee); - border-radius: var(--fa-border-radius, 0.1em); - border-style: var(--fa-border-style, solid); - border-width: var(--fa-border-width, 0.08em); - padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); -} - -.fa-pull-left { - float: left; - margin-right: var(--fa-pull-margin, 0.3em); -} - -.fa-pull-right { - float: right; - margin-left: var(--fa-pull-margin, 0.3em); -} - -.fa-beat { - animation-name: fa-beat; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, ease-in-out); -} - -.fa-bounce { - animation-name: fa-bounce; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); -} - -.fa-fade { - animation-name: fa-fade; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); -} - -.fa-beat-fade { - animation-name: fa-beat-fade; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); -} - -.fa-flip { - animation-name: fa-flip; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, ease-in-out); -} - -.fa-shake { - animation-name: fa-shake; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, linear); -} - -.fa-spin { - animation-name: fa-spin; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 2s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, linear); -} - -.fa-spin-reverse { - --fa-animation-direction: reverse; -} - -.fa-pulse, -.fa-spin-pulse { - animation-name: fa-spin; - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, steps(8)); -} - -@media (prefers-reduced-motion: reduce) { - .fa-beat, -.fa-bounce, -.fa-fade, -.fa-beat-fade, -.fa-flip, -.fa-pulse, -.fa-shake, -.fa-spin, -.fa-spin-pulse { - animation-delay: -1ms; - animation-duration: 1ms; - animation-iteration-count: 1; - transition-delay: 0s; - transition-duration: 0s; - } -} -@keyframes fa-beat { - 0%, 90% { - transform: scale(1); - } - 45% { - transform: scale(var(--fa-beat-scale, 1.25)); - } -} -@keyframes fa-bounce { - 0% { - transform: scale(1, 1) translateY(0); - } - 10% { - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); - } - 30% { - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); - } - 50% { - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); - } - 57% { - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - } - 64% { - transform: scale(1, 1) translateY(0); - } - 100% { - transform: scale(1, 1) translateY(0); - } -} -@keyframes fa-fade { - 50% { - opacity: var(--fa-fade-opacity, 0.4); - } -} -@keyframes fa-beat-fade { - 0%, 100% { - opacity: var(--fa-beat-fade-opacity, 0.4); - transform: scale(1); - } - 50% { - opacity: 1; - transform: scale(var(--fa-beat-fade-scale, 1.125)); - } -} -@keyframes fa-flip { - 50% { - transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); - } -} -@keyframes fa-shake { - 0% { - transform: rotate(-15deg); - } - 4% { - transform: rotate(15deg); - } - 8%, 24% { - transform: rotate(-18deg); - } - 12%, 28% { - transform: rotate(18deg); - } - 16% { - transform: rotate(-22deg); - } - 20% { - transform: rotate(22deg); - } - 32% { - transform: rotate(-12deg); - } - 36% { - transform: rotate(12deg); - } - 40%, 100% { - transform: rotate(0deg); - } -} -@keyframes fa-spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -} -.fa-rotate-90 { - transform: rotate(90deg); -} - -.fa-rotate-180 { - transform: rotate(180deg); -} - -.fa-rotate-270 { - transform: rotate(270deg); -} - -.fa-flip-horizontal { - transform: scale(-1, 1); -} - -.fa-flip-vertical { - transform: scale(1, -1); -} - -.fa-flip-both, -.fa-flip-horizontal.fa-flip-vertical { - transform: scale(-1, -1); -} - -.fa-rotate-by { - transform: rotate(var(--fa-rotate-angle, 0)); -} - -.fa-stack { - display: inline-block; - vertical-align: middle; - height: 2em; - position: relative; - width: 2.5em; -} - -.fa-stack-1x, -.fa-stack-2x { - bottom: 0; - left: 0; - margin: auto; - position: absolute; - right: 0; - top: 0; - z-index: var(--fa-stack-z-index, auto); -} - -.svg-inline--fa.fa-stack-1x { - height: 1em; - width: 1.25em; -} -.svg-inline--fa.fa-stack-2x { - height: 2em; - width: 2.5em; -} - -.fa-inverse { - color: var(--fa-inverse, #fff); -} - -.sr-only, -.fa-sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.sr-only-focusable:not(:focus), -.fa-sr-only-focusable:not(:focus) { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.svg-inline--fa .fa-primary { - fill: var(--fa-primary-color, currentColor); - opacity: var(--fa-primary-opacity, 1); -} - -.svg-inline--fa .fa-secondary { - fill: var(--fa-secondary-color, currentColor); - opacity: var(--fa-secondary-opacity, 0.4); -} - -.svg-inline--fa.fa-swap-opacity .fa-primary { - opacity: var(--fa-secondary-opacity, 0.4); -} - -.svg-inline--fa.fa-swap-opacity .fa-secondary { - opacity: var(--fa-primary-opacity, 1); -} - -.svg-inline--fa mask .fa-primary, -.svg-inline--fa mask .fa-secondary { - fill: black; -} - -.fad.fa-inverse, -.fa-duotone.fa-inverse { - color: var(--fa-inverse, #fff); -}`;function vn(){const e=fn,t=dn,n=p.cssPrefix,a=p.replacementClass;let r=Da;if(n!==e||a!==t){const s=new RegExp("\\.".concat(e,"\\-"),"g"),l=new RegExp("\\--".concat(e,"\\-"),"g"),i=new RegExp("\\.".concat(t),"g");r=r.replace(s,".".concat(n,"-")).replace(l,"--".concat(n,"-")).replace(i,".".concat(a))}return r}let Mt=!1;function Ye(){p.autoAddCss&&!Mt&&(La(vn()),Mt=!0)}var _a={mixout(){return{dom:{css:vn,insertCss:Ye}}},hooks(){return{beforeDOMElementCreation(){Ye()},beforeI2svg(){Ye()}}}};const Y=J||{};Y[W]||(Y[W]={});Y[W].styles||(Y[W].styles={});Y[W].hooks||(Y[W].hooks={});Y[W].shims||(Y[W].shims=[]);var H=Y[W];const En=[],An=function(){I.removeEventListener("DOMContentLoaded",An),Pe=1,En.map(e=>e())};let Pe=!1;$&&(Pe=(I.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(I.readyState),Pe||I.addEventListener("DOMContentLoaded",An));function Ua(e){$&&(Pe?setTimeout(e,0):En.push(e))}function Te(e){const{tag:t,attributes:n={},children:a=[]}=e;return typeof e=="string"?yn(e):"<".concat(t," ").concat(Pa(n),">").concat(a.map(Te).join(""),"")}function Dt(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}var $e=function(t,n,a,r){var s=Object.keys(t),l=s.length,i=n,u,d,y;for(a===void 0?(u=1,y=t[s[0]]):(u=0,y=a);u=55296&&r<=56319&&n=55296&&a<=56319&&n>t+1&&(r=e.charCodeAt(t+1),r>=56320&&r<=57343)?(a-55296)*1024+r-56320+65536:a}function _t(e){return Object.keys(e).reduce((t,n)=>{const a=e[n];return!!a.icon?t[a.iconName]=a.icon:t[n]=a,t},{})}function at(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{skipHooks:a=!1}=n,r=_t(t);typeof H.hooks.addPack=="function"&&!a?H.hooks.addPack(e,_t(t)):H.styles[e]={...H.styles[e]||{},...r},e==="fas"&&at("fa",t)}const{styles:ae,shims:ja}=H,Ha={[O]:Object.values(ie[O]),[D]:Object.values(ie[D]),[_]:Object.values(ie[_])};let bt=null,xn={},Sn={},Tn={},In={},On={};const Ga={[O]:Object.keys(re[O]),[D]:Object.keys(re[D]),[_]:Object.keys(re[_])};function qa(e){return~wa.indexOf(e)}function Wa(e,t){const n=t.split("-"),a=n[0],r=n.slice(1).join("-");return a===e&&r!==""&&!qa(r)?r:null}const wn=()=>{const e=a=>$e(ae,(r,s,l)=>(r[l]=$e(s,a,{}),r),{});xn=e((a,r,s)=>(r[3]&&(a[r[3]]=s),r[2]&&r[2].filter(i=>typeof i=="number").forEach(i=>{a[i.toString(16)]=s}),a)),Sn=e((a,r,s)=>(a[s]=s,r[2]&&r[2].filter(i=>typeof i=="string").forEach(i=>{a[i]=s}),a)),On=e((a,r,s)=>{const l=r[2];return a[s]=s,l.forEach(i=>{a[i]=s}),a});const t="far"in ae||p.autoFetchSvg,n=$e(ja,(a,r)=>{const s=r[0];let l=r[1];const i=r[2];return l==="far"&&!t&&(l="fas"),typeof s=="string"&&(a.names[s]={prefix:l,iconName:i}),typeof s=="number"&&(a.unicodes[s.toString(16)]={prefix:l,iconName:i}),a},{names:{},unicodes:{}});Tn=n.names,In=n.unicodes,bt=_e(p.styleDefault,{family:p.familyDefault})};Na(e=>{bt=_e(e.styleDefault,{family:p.familyDefault})});wn();function yt(e,t){return(xn[e]||{})[t]}function Ya(e,t){return(Sn[e]||{})[t]}function Z(e,t){return(On[e]||{})[t]}function kn(e){return Tn[e]||{prefix:null,iconName:null}}function $a(e){const t=In[e],n=yt("fas",e);return t||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function ee(){return bt}const vt=()=>({prefix:null,iconName:null,rest:[]});function _e(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{family:n=O}=t,a=re[n][e],r=Ae[n][e]||Ae[n][a],s=e in H.styles?e:null;return r||s||null}const Va={[O]:Object.keys(ie[O]),[D]:Object.keys(ie[D]),[_]:Object.keys(ie[_])};function Ue(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{skipLookups:n=!1}=t,a={[O]:"".concat(p.cssPrefix,"-").concat(O),[D]:"".concat(p.cssPrefix,"-").concat(D),[_]:"".concat(p.cssPrefix,"-").concat(_)};let r=null,s=O;const l=na.filter(u=>u!==ln);l.forEach(u=>{(e.includes(a[u])||e.some(d=>Va[u].includes(d)))&&(s=u)});const i=e.reduce((u,d)=>{const y=Wa(p.cssPrefix,d);if(ae[d]?(d=Ha[s].includes(d)?xa[s][d]:d,r=d,u.prefix=d):Ga[s].indexOf(d)>-1?(r=d,u.prefix=_e(d,{family:s})):y?u.iconName=y:d!==p.replacementClass&&!l.some(x=>d===a[x])&&u.rest.push(d),!n&&u.prefix&&u.iconName){const x=r==="fa"?kn(u.iconName):{},A=Z(u.prefix,u.iconName);x.prefix&&(r=null),u.iconName=x.iconName||A||u.iconName,u.prefix=x.prefix||u.prefix,u.prefix==="far"&&!ae.far&&ae.fas&&!p.autoFetchSvg&&(u.prefix="fas")}return u},vt());return(e.includes("fa-brands")||e.includes("fab"))&&(i.prefix="fab"),(e.includes("fa-duotone")||e.includes("fad"))&&(i.prefix="fad"),!i.prefix&&s===D&&(ae.fass||p.autoFetchSvg)&&(i.prefix="fass",i.iconName=Z(i.prefix,i.iconName)||i.iconName),!i.prefix&&s===_&&(ae.fasds||p.autoFetchSvg)&&(i.prefix="fasds",i.iconName=Z(i.prefix,i.iconName)||i.iconName),(i.prefix==="fa"||r==="fa")&&(i.prefix=ee()||"fas"),i}class Xa{constructor(){this.definitions={}}add(){for(var t=arguments.length,n=new Array(t),a=0;a{this.definitions[s]={...this.definitions[s]||{},...r[s]},at(s,r[s]);const l=ie[O][s];l&&at(l,r[s]),wn()})}reset(){this.definitions={}}_pullDefinitions(t,n){const a=n.prefix&&n.iconName&&n.icon?{0:n}:n;return Object.keys(a).map(r=>{const{prefix:s,iconName:l,icon:i}=a[r],u=i[2];t[s]||(t[s]={}),u.length>0&&u.forEach(d=>{typeof d=="string"&&(t[s][d]=i)}),t[s][l]=i}),t}}let Ut=[],ue={};const fe={},Ka=Object.keys(fe);function Qa(e,t){let{mixoutsTo:n}=t;return Ut=e,ue={},Object.keys(fe).forEach(a=>{Ka.indexOf(a)===-1&&delete fe[a]}),Ut.forEach(a=>{const r=a.mixout?a.mixout():{};if(Object.keys(r).forEach(s=>{typeof r[s]=="function"&&(n[s]=r[s]),typeof r[s]=="object"&&Object.keys(r[s]).forEach(l=>{n[s]||(n[s]={}),n[s][l]=r[s][l]})}),a.hooks){const s=a.hooks();Object.keys(s).forEach(l=>{ue[l]||(ue[l]=[]),ue[l].push(s[l])})}a.provides&&a.provides(fe)}),n}function rt(e,t){for(var n=arguments.length,a=new Array(n>2?n-2:0),r=2;r{t=l.apply(null,[t,...a])}),t}function oe(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a{s.apply(null,n)})}function te(){const e=arguments[0],t=Array.prototype.slice.call(arguments,1);return fe[e]?fe[e].apply(null,t):void 0}function it(e){e.prefix==="fa"&&(e.prefix="fas");let{iconName:t}=e;const n=e.prefix||ee();if(t)return t=Z(n,t)||t,Dt(Cn.definitions,n,t)||Dt(H.styles,n,t)}const Cn=new Xa,Za=()=>{p.autoReplaceSvg=!1,p.observeMutations=!1,oe("noAuto")},Ja={i2svg:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return $?(oe("beforeI2svg",e),te("pseudoElements2svg",e),te("i2svg",e)):Promise.reject(new Error("Operation requires a DOM of some kind."))},watch:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{autoReplaceSvgRoot:t}=e;p.autoReplaceSvg===!1&&(p.autoReplaceSvg=!0),p.observeMutations=!0,Ua(()=>{tr({autoReplaceSvgRoot:t}),oe("watch",e)})}},er={icon:e=>{if(e===null)return null;if(typeof e=="object"&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:Z(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&e.length===2){const t=e[1].indexOf("fa-")===0?e[1].slice(3):e[1],n=_e(e[0]);return{prefix:n,iconName:Z(n,t)||t}}if(typeof e=="string"&&(e.indexOf("".concat(p.cssPrefix,"-"))>-1||e.match(Sa))){const t=Ue(e.split(" "),{skipLookups:!0});return{prefix:t.prefix||ee(),iconName:Z(t.prefix,t.iconName)||t.iconName}}if(typeof e=="string"){const t=ee();return{prefix:t,iconName:Z(t,e)||e}}}},U={noAuto:Za,config:p,dom:Ja,parse:er,library:Cn,findIconDefinition:it,toHtml:Te},tr=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{autoReplaceSvgRoot:t=I}=e;(Object.keys(H.styles).length>0||p.autoFetchSvg)&&$&&p.autoReplaceSvg&&U.dom.i2svg({node:t})};function Be(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map(n=>Te(n))}}),Object.defineProperty(e,"node",{get:function(){if(!$)return;const n=I.createElement("div");return n.innerHTML=e.html,n.children}}),e}function nr(e){let{children:t,main:n,mask:a,attributes:r,styles:s,transform:l}=e;if(pt(l)&&n.found&&!a.found){const{width:i,height:u}=n,d={x:i/u/2,y:.5};r.style=De({...s,"transform-origin":"".concat(d.x+l.x/16,"em ").concat(d.y+l.y/16,"em")})}return[{tag:"svg",attributes:r,children:t}]}function ar(e){let{prefix:t,iconName:n,children:a,attributes:r,symbol:s}=e;const l=s===!0?"".concat(t,"-").concat(p.cssPrefix,"-").concat(n):s;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:{...r,id:l},children:a}]}]}function Et(e){const{icons:{main:t,mask:n},prefix:a,iconName:r,transform:s,symbol:l,title:i,maskId:u,titleId:d,extra:y,watchable:x=!1}=e,{width:A,height:k}=n.found?n:t,N=a==="fak",T=[p.replacementClass,r?"".concat(p.cssPrefix,"-").concat(r):""].filter(m=>y.classes.indexOf(m)===-1).filter(m=>m!==""||!!m).concat(y.classes).join(" ");let E={children:[],attributes:{...y.attributes,"data-prefix":a,"data-icon":r,class:T,role:y.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(A," ").concat(k)}};const h=N&&!~y.classes.indexOf("fa-fw")?{width:"".concat(A/k*16*.0625,"em")}:{};x&&(E.attributes[se]=""),i&&(E.children.push({tag:"title",attributes:{id:E.attributes["aria-labelledby"]||"title-".concat(d||xe())},children:[i]}),delete E.attributes.title);const o={...E,prefix:a,iconName:r,main:t,mask:n,maskId:u,transform:s,symbol:l,styles:{...h,...y.styles}},{children:c,attributes:f}=n.found&&t.found?te("generateAbstractMask",o)||{children:[],attributes:{}}:te("generateAbstractIcon",o)||{children:[],attributes:{}};return o.children=c,o.attributes=f,l?ar(o):nr(o)}function Bt(e){const{content:t,width:n,height:a,transform:r,title:s,extra:l,watchable:i=!1}=e,u={...l.attributes,...s?{title:s}:{},class:l.classes.join(" ")};i&&(u[se]="");const d={...l.styles};pt(r)&&(d.transform=Ma({transform:r,startCentered:!0,width:n,height:a}),d["-webkit-transform"]=d.transform);const y=De(d);y.length>0&&(u.style=y);const x=[];return x.push({tag:"span",attributes:u,children:[t]}),s&&x.push({tag:"span",attributes:{class:"sr-only"},children:[s]}),x}function rr(e){const{content:t,title:n,extra:a}=e,r={...a.attributes,...n?{title:n}:{},class:a.classes.join(" ")},s=De(a.styles);s.length>0&&(r.style=s);const l=[];return l.push({tag:"span",attributes:r,children:[t]}),n&&l.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),l}const{styles:Ve}=H;function st(e){const t=e[0],n=e[1],[a]=e.slice(4);let r=null;return Array.isArray(a)?r={tag:"g",attributes:{class:"".concat(p.cssPrefix,"-").concat(We.GROUP)},children:[{tag:"path",attributes:{class:"".concat(p.cssPrefix,"-").concat(We.SECONDARY),fill:"currentColor",d:a[0]}},{tag:"path",attributes:{class:"".concat(p.cssPrefix,"-").concat(We.PRIMARY),fill:"currentColor",d:a[1]}}]}:r={tag:"path",attributes:{fill:"currentColor",d:a}},{found:!0,width:t,height:n,icon:r}}const ir={found:!1,width:512,height:512};function sr(e,t){!mn&&!p.showMissingIcons&&e&&console.error('Icon with name "'.concat(e,'" and prefix "').concat(t,'" is missing.'))}function ot(e,t){let n=t;return t==="fa"&&p.styleDefault!==null&&(t=ee()),new Promise((a,r)=>{if(n==="fa"){const s=kn(e)||{};e=s.iconName||e,t=s.prefix||t}if(e&&t&&Ve[t]&&Ve[t][e]){const s=Ve[t][e];return a(st(s))}sr(e,t),a({...ir,icon:p.showMissingIcons&&e?te("missingIconAbstract")||{}:{}})})}const zt=()=>{},lt=p.measurePerformance&&Ne&&Ne.mark&&Ne.measure?Ne:{mark:zt,measure:zt},ye='FA "6.6.0"',or=e=>(lt.mark("".concat(ye," ").concat(e," begins")),()=>Nn(e)),Nn=e=>{lt.mark("".concat(ye," ").concat(e," ends")),lt.measure("".concat(ye," ").concat(e),"".concat(ye," ").concat(e," begins"),"".concat(ye," ").concat(e," ends"))};var At={begin:or,end:Nn};const Le=()=>{};function jt(e){return typeof(e.getAttribute?e.getAttribute(se):null)=="string"}function lr(e){const t=e.getAttribute?e.getAttribute(mt):null,n=e.getAttribute?e.getAttribute(gt):null;return t&&n}function cr(e){return e&&e.classList&&e.classList.contains&&e.classList.contains(p.replacementClass)}function ur(){return p.autoReplaceSvg===!0?Re.replace:Re[p.autoReplaceSvg]||Re.replace}function fr(e){return I.createElementNS("http://www.w3.org/2000/svg",e)}function dr(e){return I.createElement(e)}function Ln(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{ceFn:n=e.tag==="svg"?fr:dr}=t;if(typeof e=="string")return I.createTextNode(e);const a=n(e.tag);return Object.keys(e.attributes||[]).forEach(function(s){a.setAttribute(s,e.attributes[s])}),(e.children||[]).forEach(function(s){a.appendChild(Ln(s,{ceFn:n}))}),a}function mr(e){let t=" ".concat(e.outerHTML," ");return t="".concat(t,"Font Awesome fontawesome.com "),t}const Re={replace:function(e){const t=e[0];if(t.parentNode)if(e[1].forEach(n=>{t.parentNode.insertBefore(Ln(n),t)}),t.getAttribute(se)===null&&p.keepOriginalSource){let n=I.createComment(mr(t));t.parentNode.replaceChild(n,t)}else t.remove()},nest:function(e){const t=e[0],n=e[1];if(~ht(t).indexOf(p.replacementClass))return Re.replace(e);const a=new RegExp("".concat(p.cssPrefix,"-.*"));if(delete n[0].attributes.id,n[0].attributes.class){const s=n[0].attributes.class.split(" ").reduce((l,i)=>(i===p.replacementClass||i.match(a)?l.toSvg.push(i):l.toNode.push(i),l),{toNode:[],toSvg:[]});n[0].attributes.class=s.toSvg.join(" "),s.toNode.length===0?t.removeAttribute("class"):t.setAttribute("class",s.toNode.join(" "))}const r=n.map(s=>Te(s)).join(` -`);t.setAttribute(se,""),t.innerHTML=r}};function Ht(e){e()}function Rn(e,t){const n=typeof t=="function"?t:Le;if(e.length===0)n();else{let a=Ht;p.mutateApproach===Ea&&(a=J.requestAnimationFrame||Ht),a(()=>{const r=ur(),s=At.begin("mutate");e.map(r),s(),n()})}}let xt=!1;function Pn(){xt=!0}function ct(){xt=!1}let Fe=null;function Gt(e){if(!Lt||!p.observeMutations)return;const{treeCallback:t=Le,nodeCallback:n=Le,pseudoElementsCallback:a=Le,observeMutationsRoot:r=I}=e;Fe=new Lt(s=>{if(xt)return;const l=ee();ge(s).forEach(i=>{if(i.type==="childList"&&i.addedNodes.length>0&&!jt(i.addedNodes[0])&&(p.searchPseudoElements&&a(i.target),t(i.target)),i.type==="attributes"&&i.target.parentNode&&p.searchPseudoElements&&a(i.target.parentNode),i.type==="attributes"&&jt(i.target)&&~Oa.indexOf(i.attributeName))if(i.attributeName==="class"&&lr(i.target)){const{prefix:u,iconName:d}=Ue(ht(i.target));i.target.setAttribute(mt,u||l),d&&i.target.setAttribute(gt,d)}else cr(i.target)&&n(i.target)})}),$&&Fe.observe(r,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}function gr(){Fe&&Fe.disconnect()}function hr(e){const t=e.getAttribute("style");let n=[];return t&&(n=t.split(";").reduce((a,r)=>{const s=r.split(":"),l=s[0],i=s.slice(1);return l&&i.length>0&&(a[l]=i.join(":").trim()),a},{})),n}function pr(e){const t=e.getAttribute("data-prefix"),n=e.getAttribute("data-icon"),a=e.innerText!==void 0?e.innerText.trim():"";let r=Ue(ht(e));return r.prefix||(r.prefix=ee()),t&&n&&(r.prefix=t,r.iconName=n),r.iconName&&r.prefix||(r.prefix&&a.length>0&&(r.iconName=Ya(r.prefix,e.innerText)||yt(r.prefix,nt(e.innerText))),!r.iconName&&p.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(r.iconName=e.firstChild.data)),r}function br(e){const t=ge(e.attributes).reduce((r,s)=>(r.name!=="class"&&r.name!=="style"&&(r[s.name]=s.value),r),{}),n=e.getAttribute("title"),a=e.getAttribute("data-fa-title-id");return p.autoA11y&&(n?t["aria-labelledby"]="".concat(p.replacementClass,"-title-").concat(a||xe()):(t["aria-hidden"]="true",t.focusable="false")),t}function yr(){return{iconName:null,title:null,titleId:null,prefix:null,transform:j,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function qt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0};const{iconName:n,prefix:a,rest:r}=pr(e),s=br(e),l=rt("parseNodeAttributes",{},e);let i=t.styleParser?hr(e):[];return{iconName:n,title:e.getAttribute("title"),titleId:e.getAttribute("data-fa-title-id"),prefix:a,transform:j,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:r,styles:i,attributes:s},...l}}const{styles:vr}=H;function Fn(e){const t=p.autoReplaceSvg==="nest"?qt(e,{styleParser:!1}):qt(e);return~t.extra.classes.indexOf(pn)?te("generateLayersText",e,t):te("generateSvgReplacementMutation",e,t)}let G=new Set;gn.map(e=>{G.add("fa-".concat(e))});Object.keys(re[O]).map(G.add.bind(G));Object.keys(re[D]).map(G.add.bind(G));Object.keys(re[_]).map(G.add.bind(G));G=[...G];function Wt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!$)return Promise.resolve();const n=I.documentElement.classList,a=y=>n.add("".concat(Ft,"-").concat(y)),r=y=>n.remove("".concat(Ft,"-").concat(y)),s=p.autoFetchSvg?G:gn.map(y=>"fa-".concat(y)).concat(Object.keys(vr));s.includes("fa")||s.push("fa");const l=[".".concat(pn,":not([").concat(se,"])")].concat(s.map(y=>".".concat(y,":not([").concat(se,"])"))).join(", ");if(l.length===0)return Promise.resolve();let i=[];try{i=ge(e.querySelectorAll(l))}catch{}if(i.length>0)a("pending"),r("complete");else return Promise.resolve();const u=At.begin("onTree"),d=i.reduce((y,x)=>{try{const A=Fn(x);A&&y.push(A)}catch(A){mn||A.name==="MissingIcon"&&console.error(A)}return y},[]);return new Promise((y,x)=>{Promise.all(d).then(A=>{Rn(A,()=>{a("active"),a("complete"),r("pending"),typeof t=="function"&&t(),u(),y()})}).catch(A=>{u(),x(A)})})}function Er(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;Fn(e).then(n=>{n&&Rn([n],t)})}function Ar(e){return function(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const a=(t||{}).icon?t:it(t||{});let{mask:r}=n;return r&&(r=(r||{}).icon?r:it(r||{})),e(a,{...n,mask:r})}}const xr=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{transform:n=j,symbol:a=!1,mask:r=null,maskId:s=null,title:l=null,titleId:i=null,classes:u=[],attributes:d={},styles:y={}}=t;if(!e)return;const{prefix:x,iconName:A,icon:k}=e;return Be({type:"icon",...e},()=>(oe("beforeDOMElementCreation",{iconDefinition:e,params:t}),p.autoA11y&&(l?d["aria-labelledby"]="".concat(p.replacementClass,"-title-").concat(i||xe()):(d["aria-hidden"]="true",d.focusable="false")),Et({icons:{main:st(k),mask:r?st(r.icon):{found:!1,width:null,height:null,icon:{}}},prefix:x,iconName:A,transform:{...j,...n},symbol:a,title:l,maskId:s,titleId:i,extra:{attributes:d,styles:y,classes:u}})))};var Sr={mixout(){return{icon:Ar(xr)}},hooks(){return{mutationObserverCallbacks(e){return e.treeCallback=Wt,e.nodeCallback=Er,e}}},provides(e){e.i2svg=function(t){const{node:n=I,callback:a=()=>{}}=t;return Wt(n,a)},e.generateSvgReplacementMutation=function(t,n){const{iconName:a,title:r,titleId:s,prefix:l,transform:i,symbol:u,mask:d,maskId:y,extra:x}=n;return new Promise((A,k)=>{Promise.all([ot(a,l),d.iconName?ot(d.iconName,d.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(N=>{let[T,E]=N;A([t,Et({icons:{main:T,mask:E},prefix:l,iconName:a,transform:i,symbol:u,maskId:y,title:r,titleId:s,extra:x,watchable:!0})])}).catch(k)})},e.generateAbstractIcon=function(t){let{children:n,attributes:a,main:r,transform:s,styles:l}=t;const i=De(l);i.length>0&&(a.style=i);let u;return pt(s)&&(u=te("generateAbstractTransformGrouping",{main:r,transform:s,containerWidth:r.width,iconWidth:r.width})),n.push(u||r.icon),{children:n,attributes:a}}}},Tr={mixout(){return{layer(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{classes:n=[]}=t;return Be({type:"layer"},()=>{oe("beforeDOMElementCreation",{assembler:e,params:t});let a=[];return e(r=>{Array.isArray(r)?r.map(s=>{a=a.concat(s.abstract)}):a=a.concat(r.abstract)}),[{tag:"span",attributes:{class:["".concat(p.cssPrefix,"-layers"),...n].join(" ")},children:a}]})}}}},Ir={mixout(){return{counter(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{title:n=null,classes:a=[],attributes:r={},styles:s={}}=t;return Be({type:"counter",content:e},()=>(oe("beforeDOMElementCreation",{content:e,params:t}),rr({content:e.toString(),title:n,extra:{attributes:r,styles:s,classes:["".concat(p.cssPrefix,"-layers-counter"),...a]}})))}}}},Or={mixout(){return{text(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{transform:n=j,title:a=null,classes:r=[],attributes:s={},styles:l={}}=t;return Be({type:"text",content:e},()=>(oe("beforeDOMElementCreation",{content:e,params:t}),Bt({content:e,transform:{...j,...n},title:a,extra:{attributes:s,styles:l,classes:["".concat(p.cssPrefix,"-layers-text"),...r]}})))}}},provides(e){e.generateLayersText=function(t,n){const{title:a,transform:r,extra:s}=n;let l=null,i=null;if(on){const u=parseInt(getComputedStyle(t).fontSize,10),d=t.getBoundingClientRect();l=d.width/u,i=d.height/u}return p.autoA11y&&!a&&(s.attributes["aria-hidden"]="true"),Promise.resolve([t,Bt({content:t.innerHTML,width:l,height:i,transform:r,title:a,extra:s,watchable:!0})])}}};const wr=new RegExp('"',"ug"),Yt=[1105920,1112319],$t={FontAwesome:{normal:"fas",400:"fas"},...la,...oa,...pa},ut=Object.keys($t).reduce((e,t)=>(e[t.toLowerCase()]=$t[t],e),{}),kr=Object.keys(ut).reduce((e,t)=>{const n=ut[t];return e[t]=n[900]||[...Object.entries(n)][0][1],e},{});function Cr(e){const t=e.replace(wr,""),n=za(t,0),a=n>=Yt[0]&&n<=Yt[1],r=t.length===2?t[0]===t[1]:!1;return{value:nt(r?t[0]:t),isSecondary:a||r}}function Nr(e,t){const n=e.replace(/^['"]|['"]$/g,"").toLowerCase(),a=parseInt(t),r=isNaN(a)?"normal":a;return(ut[n]||{})[r]||kr[n]}function Vt(e,t){const n="".concat(va).concat(t.replace(":","-"));return new Promise((a,r)=>{if(e.getAttribute(n)!==null)return a();const l=ge(e.children).filter(A=>A.getAttribute(Ze)===t)[0],i=J.getComputedStyle(e,t),u=i.getPropertyValue("font-family"),d=u.match(Ta),y=i.getPropertyValue("font-weight"),x=i.getPropertyValue("content");if(l&&!d)return e.removeChild(l),a();if(d&&x!=="none"&&x!==""){const A=i.getPropertyValue("content");let k=Nr(u,y);const{value:N,isSecondary:T}=Cr(A),E=d[0].startsWith("FontAwesome");let h=yt(k,N),o=h;if(E){const c=$a(N);c.iconName&&c.prefix&&(h=c.iconName,k=c.prefix)}if(h&&!T&&(!l||l.getAttribute(mt)!==k||l.getAttribute(gt)!==o)){e.setAttribute(n,o),l&&e.removeChild(l);const c=yr(),{extra:f}=c;f.attributes[Ze]=t,ot(h,k).then(m=>{const g=Et({...c,icons:{main:m,mask:vt()},prefix:k,iconName:o,extra:f,watchable:!0}),b=I.createElementNS("http://www.w3.org/2000/svg","svg");t==="::before"?e.insertBefore(b,e.firstChild):e.appendChild(b),b.outerHTML=g.map(S=>Te(S)).join(` -`),e.removeAttribute(n),a()}).catch(r)}else a()}else a()})}function Lr(e){return Promise.all([Vt(e,"::before"),Vt(e,"::after")])}function Rr(e){return e.parentNode!==document.head&&!~Aa.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(Ze)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function Xt(e){if($)return new Promise((t,n)=>{const a=ge(e.querySelectorAll("*")).filter(Rr).map(Lr),r=At.begin("searchPseudoElements");Pn(),Promise.all(a).then(()=>{r(),ct(),t()}).catch(()=>{r(),ct(),n()})})}var Pr={hooks(){return{mutationObserverCallbacks(e){return e.pseudoElementsCallback=Xt,e}}},provides(e){e.pseudoElements2svg=function(t){const{node:n=I}=t;p.searchPseudoElements&&Xt(n)}}};let Kt=!1;var Fr={mixout(){return{dom:{unwatch(){Pn(),Kt=!0}}}},hooks(){return{bootstrap(){Gt(rt("mutationObserverCallbacks",{}))},noAuto(){gr()},watch(e){const{observeMutationsRoot:t}=e;Kt?ct():Gt(rt("mutationObserverCallbacks",{observeMutationsRoot:t}))}}}};const Qt=e=>{let t={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e.toLowerCase().split(" ").reduce((n,a)=>{const r=a.toLowerCase().split("-"),s=r[0];let l=r.slice(1).join("-");if(s&&l==="h")return n.flipX=!0,n;if(s&&l==="v")return n.flipY=!0,n;if(l=parseFloat(l),isNaN(l))return n;switch(s){case"grow":n.size=n.size+l;break;case"shrink":n.size=n.size-l;break;case"left":n.x=n.x-l;break;case"right":n.x=n.x+l;break;case"up":n.y=n.y-l;break;case"down":n.y=n.y+l;break;case"rotate":n.rotate=n.rotate+l;break}return n},t)};var Mr={mixout(){return{parse:{transform:e=>Qt(e)}}},hooks(){return{parseNodeAttributes(e,t){const n=t.getAttribute("data-fa-transform");return n&&(e.transform=Qt(n)),e}}},provides(e){e.generateAbstractTransformGrouping=function(t){let{main:n,transform:a,containerWidth:r,iconWidth:s}=t;const l={transform:"translate(".concat(r/2," 256)")},i="translate(".concat(a.x*32,", ").concat(a.y*32,") "),u="scale(".concat(a.size/16*(a.flipX?-1:1),", ").concat(a.size/16*(a.flipY?-1:1),") "),d="rotate(".concat(a.rotate," 0 0)"),y={transform:"".concat(i," ").concat(u," ").concat(d)},x={transform:"translate(".concat(s/2*-1," -256)")},A={outer:l,inner:y,path:x};return{tag:"g",attributes:{...A.outer},children:[{tag:"g",attributes:{...A.inner},children:[{tag:n.icon.tag,children:n.icon.children,attributes:{...n.icon.attributes,...A.path}}]}]}}}};const Xe={x:0,y:0,width:"100%",height:"100%"};function Zt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function Dr(e){return e.tag==="g"?e.children:[e]}var _r={hooks(){return{parseNodeAttributes(e,t){const n=t.getAttribute("data-fa-mask"),a=n?Ue(n.split(" ").map(r=>r.trim())):vt();return a.prefix||(a.prefix=ee()),e.mask=a,e.maskId=t.getAttribute("data-fa-mask-id"),e}}},provides(e){e.generateAbstractMask=function(t){let{children:n,attributes:a,main:r,mask:s,maskId:l,transform:i}=t;const{width:u,icon:d}=r,{width:y,icon:x}=s,A=Fa({transform:i,containerWidth:y,iconWidth:u}),k={tag:"rect",attributes:{...Xe,fill:"white"}},N=d.children?{children:d.children.map(Zt)}:{},T={tag:"g",attributes:{...A.inner},children:[Zt({tag:d.tag,attributes:{...d.attributes,...A.path},...N})]},E={tag:"g",attributes:{...A.outer},children:[T]},h="mask-".concat(l||xe()),o="clip-".concat(l||xe()),c={tag:"mask",attributes:{...Xe,id:h,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"},children:[k,E]},f={tag:"defs",children:[{tag:"clipPath",attributes:{id:o},children:Dr(x)},c]};return n.push(f,{tag:"rect",attributes:{fill:"currentColor","clip-path":"url(#".concat(o,")"),mask:"url(#".concat(h,")"),...Xe}}),{children:n,attributes:a}}}},Ur={provides(e){let t=!1;J.matchMedia&&(t=J.matchMedia("(prefers-reduced-motion: reduce)").matches),e.missingIconAbstract=function(){const n=[],a={fill:"currentColor"},r={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};n.push({tag:"path",attributes:{...a,d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"}});const s={...r,attributeName:"opacity"},l={tag:"circle",attributes:{...a,cx:"256",cy:"364",r:"28"},children:[]};return t||l.children.push({tag:"animate",attributes:{...r,attributeName:"r",values:"28;14;28;28;14;28;"}},{tag:"animate",attributes:{...s,values:"1;0;1;1;0;1;"}}),n.push(l),n.push({tag:"path",attributes:{...a,opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"},children:t?[]:[{tag:"animate",attributes:{...s,values:"1;0;0;0;0;1;"}}]}),t||n.push({tag:"path",attributes:{...a,opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"},children:[{tag:"animate",attributes:{...s,values:"0;0;1;1;0;0;"}}]}),{tag:"g",attributes:{class:"missing"},children:n}}}},Br={hooks(){return{parseNodeAttributes(e,t){const n=t.getAttribute("data-fa-symbol"),a=n===null?!1:n===""?!0:n;return e.symbol=a,e}}}},zr=[_a,Sr,Tr,Ir,Or,Pr,Fr,Mr,_r,Ur,Br];Qa(zr,{mixoutsTo:U});U.noAuto;U.config;const jr=U.library;U.dom;const ft=U.parse;U.findIconDefinition;U.toHtml;const Hr=U.icon;U.layer;U.text;U.counter;function Jt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,a)}return n}function q(e){for(var t=1;t=0)continue;n[a]=e[a]}return n}function Yr(e,t){if(e==null)return{};var n=Wr(e,t),a,r;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var $r=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Mn={exports:{}};(function(e){(function(t){var n=function(h,o,c){if(!d(o)||x(o)||A(o)||k(o)||u(o))return o;var f,m=0,g=0;if(y(o))for(f=[],g=o.length;m1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string")return e;var a=(e.children||[]).map(function(u){return Dn(u)}),r=Object.keys(e.attributes||{}).reduce(function(u,d){var y=e.attributes[d];switch(d){case"class":u.class=Qr(y);break;case"style":u.style=Kr(y);break;default:u.attrs[d]=y}return u},{attrs:{},class:{},style:{}});n.class;var s=n.style,l=s===void 0?{}:s,i=Yr(n,Xr);return Wn(e.tag,q(q(q({},t),{},{class:r.class,style:q(q({},r.style),l)},r.attrs),i),a)}var _n=!1;try{_n=!0}catch{}function Zr(){if(!_n&&console&&typeof console.error=="function"){var e;(e=console).error.apply(e,arguments)}}function Ke(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?M({},e,t):{}}function Jr(e){var t,n=(t={"fa-spin":e.spin,"fa-pulse":e.pulse,"fa-fw":e.fixedWidth,"fa-border":e.border,"fa-li":e.listItem,"fa-inverse":e.inverse,"fa-flip":e.flip===!0,"fa-flip-horizontal":e.flip==="horizontal"||e.flip==="both","fa-flip-vertical":e.flip==="vertical"||e.flip==="both"},M(M(M(M(M(M(M(M(M(M(t,"fa-".concat(e.size),e.size!==null),"fa-rotate-".concat(e.rotation),e.rotation!==null),"fa-pull-".concat(e.pull),e.pull!==null),"fa-swap-opacity",e.swapOpacity),"fa-bounce",e.bounce),"fa-shake",e.shake),"fa-beat",e.beat),"fa-fade",e.fade),"fa-beat-fade",e.beatFade),"fa-flash",e.flash),M(M(t,"fa-spin-pulse",e.spinPulse),"fa-spin-reverse",e.spinReverse));return Object.keys(n).map(function(a){return n[a]?a:null}).filter(function(a){return a})}function en(e){if(e&&Me(e)==="object"&&e.prefix&&e.iconName&&e.icon)return e;if(ft.icon)return ft.icon(e);if(e===null)return null;if(Me(e)==="object"&&e.prefix&&e.iconName)return e;if(Array.isArray(e)&&e.length===2)return{prefix:e[0],iconName:e[1]};if(typeof e=="string")return{prefix:"fas",iconName:e}}var ei=Gn({name:"FontAwesomeIcon",props:{border:{type:Boolean,default:!1},fixedWidth:{type:Boolean,default:!1},flip:{type:[Boolean,String],default:!1,validator:function(t){return[!0,!1,"horizontal","vertical","both"].indexOf(t)>-1}},icon:{type:[Object,Array,String],required:!0},mask:{type:[Object,Array,String],default:null},maskId:{type:String,default:null},listItem:{type:Boolean,default:!1},pull:{type:String,default:null,validator:function(t){return["right","left"].indexOf(t)>-1}},pulse:{type:Boolean,default:!1},rotation:{type:[String,Number],default:null,validator:function(t){return[90,180,270].indexOf(Number.parseInt(t,10))>-1}},swapOpacity:{type:Boolean,default:!1},size:{type:String,default:null,validator:function(t){return["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"].indexOf(t)>-1}},spin:{type:Boolean,default:!1},transform:{type:[String,Object],default:null},symbol:{type:[Boolean,String],default:!1},title:{type:String,default:null},titleId:{type:String,default:null},inverse:{type:Boolean,default:!1},bounce:{type:Boolean,default:!1},shake:{type:Boolean,default:!1},beat:{type:Boolean,default:!1},fade:{type:Boolean,default:!1},beatFade:{type:Boolean,default:!1},flash:{type:Boolean,default:!1},spinPulse:{type:Boolean,default:!1},spinReverse:{type:Boolean,default:!1}},setup:function(t,n){var a=n.attrs,r=ne(function(){return en(t.icon)}),s=ne(function(){return Ke("classes",Jr(t))}),l=ne(function(){return Ke("transform",typeof t.transform=="string"?ft.transform(t.transform):t.transform)}),i=ne(function(){return Ke("mask",en(t.mask))}),u=ne(function(){return Hr(r.value,q(q(q(q({},s.value),l.value),i.value),{},{symbol:t.symbol,title:t.title,titleId:t.titleId,maskId:t.maskId}))});qn(u,function(y){if(!y)return Zr("Could not find one or more icon(s)",r.value,i.value)},{immediate:!0});var d=ne(function(){return u.value?Dn(u.value.abstract[0],{},a):null});return function(){return d.value}}});const ti={prefix:"fas",iconName:"skull-crossbones",icon:[448,512,[128369,9760],"f714","M368 128c0 44.4-25.4 83.5-64 106.4l0 21.6c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-21.6c-38.6-23-64-62.1-64-106.4C80 57.3 144.5 0 224 0s144 57.3 144 128zM168 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM3.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L224 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L295.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L224 419.8 46.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L152.4 384 17.7 316.6C1.9 308.7-4.5 289.5 3.4 273.7z"]};var tn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ni(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Un={exports:{}};(function(e){var t=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT - * @author Lea Verou - * @namespace - * @public - */var n=function(a){var r=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,s=0,l={},i={manual:a.Prism&&a.Prism.manual,disableWorkerMessageHandler:a.Prism&&a.Prism.disableWorkerMessageHandler,util:{encode:function o(c){return c instanceof u?new u(c.type,o(c.content),c.alias):Array.isArray(c)?c.map(o):c.replace(/&/g,"&").replace(/"u")return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(m){var o=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(m.stack)||[])[1];if(o){var c=document.getElementsByTagName("script");for(var f in c)if(c[f].src==o)return c[f]}return null}},isActive:function(o,c,f){for(var m="no-"+c;o;){var g=o.classList;if(g.contains(c))return!0;if(g.contains(m))return!1;o=o.parentElement}return!!f}},languages:{plain:l,plaintext:l,text:l,txt:l,extend:function(o,c){var f=i.util.clone(i.languages[o]);for(var m in c)f[m]=c[m];return f},insertBefore:function(o,c,f,m){m=m||i.languages;var g=m[o],b={};for(var S in g)if(g.hasOwnProperty(S)){if(S==c)for(var v in f)f.hasOwnProperty(v)&&(b[v]=f[v]);f.hasOwnProperty(S)||(b[S]=g[S])}var w=m[o];return m[o]=b,i.languages.DFS(i.languages,function(L,V){V===w&&L!=o&&(this[L]=b)}),b},DFS:function o(c,f,m,g){g=g||{};var b=i.util.objId;for(var S in c)if(c.hasOwnProperty(S)){f.call(c,S,c[S],m||S);var v=c[S],w=i.util.type(v);w==="Object"&&!g[b(v)]?(g[b(v)]=!0,o(v,f,null,g)):w==="Array"&&!g[b(v)]&&(g[b(v)]=!0,o(v,f,S,g))}}},plugins:{},highlightAll:function(o,c){i.highlightAllUnder(document,o,c)},highlightAllUnder:function(o,c,f){var m={callback:f,container:o,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};i.hooks.run("before-highlightall",m),m.elements=Array.prototype.slice.apply(m.container.querySelectorAll(m.selector)),i.hooks.run("before-all-elements-highlight",m);for(var g=0,b;b=m.elements[g++];)i.highlightElement(b,c===!0,m.callback)},highlightElement:function(o,c,f){var m=i.util.getLanguage(o),g=i.languages[m];i.util.setLanguage(o,m);var b=o.parentElement;b&&b.nodeName.toLowerCase()==="pre"&&i.util.setLanguage(b,m);var S=o.textContent,v={element:o,language:m,grammar:g,code:S};function w(V){v.highlightedCode=V,i.hooks.run("before-insert",v),v.element.innerHTML=v.highlightedCode,i.hooks.run("after-highlight",v),i.hooks.run("complete",v),f&&f.call(v.element)}if(i.hooks.run("before-sanity-check",v),b=v.element.parentElement,b&&b.nodeName.toLowerCase()==="pre"&&!b.hasAttribute("tabindex")&&b.setAttribute("tabindex","0"),!v.code){i.hooks.run("complete",v),f&&f.call(v.element);return}if(i.hooks.run("before-highlight",v),!v.grammar){w(i.util.encode(v.code));return}if(c&&a.Worker){var L=new Worker(i.filename);L.onmessage=function(V){w(V.data)},L.postMessage(JSON.stringify({language:v.language,code:v.code,immediateClose:!0}))}else w(i.highlight(v.code,v.grammar,v.language))},highlight:function(o,c,f){var m={code:o,grammar:c,language:f};if(i.hooks.run("before-tokenize",m),!m.grammar)throw new Error('The language "'+m.language+'" has no grammar.');return m.tokens=i.tokenize(m.code,m.grammar),i.hooks.run("after-tokenize",m),u.stringify(i.util.encode(m.tokens),m.language)},tokenize:function(o,c){var f=c.rest;if(f){for(var m in f)c[m]=f[m];delete c.rest}var g=new x;return A(g,g.head,o),y(o,g,c,g.head,0),N(g)},hooks:{all:{},add:function(o,c){var f=i.hooks.all;f[o]=f[o]||[],f[o].push(c)},run:function(o,c){var f=i.hooks.all[o];if(!(!f||!f.length))for(var m=0,g;g=f[m++];)g(c)}},Token:u};a.Prism=i;function u(o,c,f,m){this.type=o,this.content=c,this.alias=f,this.length=(m||"").length|0}u.stringify=function o(c,f){if(typeof c=="string")return c;if(Array.isArray(c)){var m="";return c.forEach(function(w){m+=o(w,f)}),m}var g={type:c.type,content:o(c.content,f),tag:"span",classes:["token",c.type],attributes:{},language:f},b=c.alias;b&&(Array.isArray(b)?Array.prototype.push.apply(g.classes,b):g.classes.push(b)),i.hooks.run("wrap",g);var S="";for(var v in g.attributes)S+=" "+v+'="'+(g.attributes[v]||"").replace(/"/g,""")+'"';return"<"+g.tag+' class="'+g.classes.join(" ")+'"'+S+">"+g.content+""};function d(o,c,f,m){o.lastIndex=c;var g=o.exec(f);if(g&&m&&g[1]){var b=g[1].length;g.index+=b,g[0]=g[0].slice(b)}return g}function y(o,c,f,m,g,b){for(var S in f)if(!(!f.hasOwnProperty(S)||!f[S])){var v=f[S];v=Array.isArray(v)?v:[v];for(var w=0;w=b.reach);z+=R.value.length,R=R.next){var le=R.value;if(c.length>o.length)return;if(!(le instanceof u)){var Ie=1,B;if(It){if(B=d(Ot,z,o,Tt),!B||B.index>=o.length)break;var Oe=B.index,jn=B.index+B[0].length,X=z;for(X+=R.value.length;Oe>=X;)R=R.next,X+=R.value.length;if(X-=R.value.length,z=X,R.value instanceof u)continue;for(var he=R;he!==c.tail&&(Xb.reach&&(b.reach=je);var ke=R.prev;ze&&(ke=A(c,ke,ze),z+=ze.length),k(c,ke,Ie);var Hn=new u(S,V?i.tokenize(we,V):we,Bn,we);if(R=A(c,ke,Hn),wt&&A(c,R,wt),Ie>1){var He={cause:S+","+w,reach:je};y(o,c,f,R.prev,z,He),b&&He.reach>b.reach&&(b.reach=He.reach)}}}}}}function x(){var o={value:null,prev:null,next:null},c={value:null,prev:o,next:null};o.next=c,this.head=o,this.tail=c,this.length=0}function A(o,c,f){var m=c.next,g={value:f,prev:c,next:m};return c.next=g,m.prev=g,o.length++,g}function k(o,c,f){for(var m=c.next,g=0;g/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},n.languages.markup.tag.inside["attr-value"].inside.entity=n.languages.markup.entity,n.languages.markup.doctype.inside["internal-subset"].inside=n.languages.markup,n.hooks.add("wrap",function(a){a.type==="entity"&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(n.languages.markup.tag,"addInlined",{value:function(r,s){var l={};l["language-"+s]={pattern:/(^$)/i,lookbehind:!0,inside:n.languages[s]},l.cdata=/^$/i;var i={"included-cdata":{pattern://i,inside:l}};i["language-"+s]={pattern:/[\s\S]+/,inside:n.languages[s]};var u={};u[r]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return r}),"i"),lookbehind:!0,greedy:!0,inside:i},n.languages.insertBefore("markup","cdata",u)}}),Object.defineProperty(n.languages.markup.tag,"addAttribute",{value:function(a,r){n.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+a+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[r,"language-"+r],inside:n.languages[r]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.xml=n.languages.extend("markup",{}),n.languages.ssml=n.languages.xml,n.languages.atom=n.languages.xml,n.languages.rss=n.languages.xml,function(a){var r=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+r.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+r.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+r.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+r.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:r,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},a.languages.css.atrule.inside.rest=a.languages.css;var s=a.languages.markup;s&&(s.tag.addInlined("style","css"),s.tag.addAttribute("style","css"))}(n),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{"class-name":[n.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),n.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,n.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:n.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:n.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:n.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:n.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:n.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),n.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:n.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),n.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),n.languages.markup&&(n.languages.markup.tag.addInlined("script","javascript"),n.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),n.languages.js=n.languages.javascript,function(){if(typeof n>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var a="Loading…",r=function(T,E){return"✖ Error "+T+" while fetching file: "+E},s="✖ Error: File does not exist or is empty",l={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},i="data-src-status",u="loading",d="loaded",y="failed",x="pre[data-src]:not(["+i+'="'+d+'"]):not(['+i+'="'+u+'"])';function A(T,E,h){var o=new XMLHttpRequest;o.open("GET",T,!0),o.onreadystatechange=function(){o.readyState==4&&(o.status<400&&o.responseText?E(o.responseText):o.status>=400?h(r(o.status,o.statusText)):h(s))},o.send(null)}function k(T){var E=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(T||"");if(E){var h=Number(E[1]),o=E[2],c=E[3];return o?c?[h,Number(c)]:[h,void 0]:[h,h]}}n.hooks.add("before-highlightall",function(T){T.selector+=", "+x}),n.hooks.add("before-sanity-check",function(T){var E=T.element;if(E.matches(x)){T.code="",E.setAttribute(i,u);var h=E.appendChild(document.createElement("CODE"));h.textContent=a;var o=E.getAttribute("data-src"),c=T.language;if(c==="none"){var f=(/\.(\w+)$/.exec(o)||[,"none"])[1];c=l[f]||f}n.util.setLanguage(h,c),n.util.setLanguage(E,c);var m=n.plugins.autoloader;m&&m.loadLanguages(c),A(o,function(g){E.setAttribute(i,d);var b=k(E.getAttribute("data-range"));if(b){var S=g.split(/\r\n?|\n/g),v=b[0],w=b[1]==null?S.length:b[1];v<0&&(v+=S.length),v=Math.max(0,Math.min(v-1,S.length)),w<0&&(w+=S.length),w=Math.max(0,Math.min(w,S.length)),g=S.slice(v,w).join(` -`),E.hasAttribute("data-start")||E.setAttribute("data-start",String(v+1))}h.textContent=g,n.highlightElement(h)},function(g){E.setAttribute(i,y),h.textContent=g})}}),n.plugins.fileHighlight={highlight:function(E){for(var h=(E||document).querySelectorAll(x),o=0,c;c=h[o++];)n.highlightElement(c)}};var N=!1;n.fileHighlight=function(){N||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),N=!0),n.plugins.fileHighlight.highlight.apply(this,arguments)}}()})(Un);var ai=Un.exports;const nn=ni(ai);Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/};jr.add(ti);const ri={components:{FontAwesomeIcon:ei},setup(){const e=Ce(["ClickHouse","Pinot","Elasticsearch","MongoDB","PostgreSQL"]),t=Ce([{question:"How many hits were driven by advertising?",text:"SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0;"},{question:"What's the total ad impact, hit count, and average screen width?",text:"SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits;"},{question:"How many unique users visited the site?",text:"SELECT COUNT(DISTINCT UserID) FROM hits;"},{question:"What are the top 10 regions by unique user count?",text:"SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC LIMIT 10;"},{question:"What are the top 10 search phrases from Google?",text:"SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10;"}]),n=$n({"Load time":{ClickHouse:"494s",Pinot:"2032s",Elasticsearch:"10072s",MongoDB:"44824s",PostgreSQL:"2342s"},"Data size":{ClickHouse:"13.48 GiB",Pinot:"-",Elasticsearch:"71.37 GiB",MongoDB:"80.46 GiB",PostgreSQL:"72.45 GiB"},"Q1.":{ClickHouse:"0.007s",Pinot:"0.185s",Elasticsearch:"1.667s",MongoDB:"0.398s",PostgreSQL:"254.238s"},"Q2.":{ClickHouse:"0.020s",Pinot:"0.258s",Elasticsearch:"13.991s",MongoDB:"115.775s",PostgreSQL:"263.072s"},"Q3.":{ClickHouse:"0.339s",Pinot:"3.633s",Elasticsearch:"4.413s",MongoDB:"25.618s",PostgreSQL:"42.334s"},"Q4.":{ClickHouse:"0.490s",Pinot:"2.902s",Elasticsearch:"16.050s",MongoDB:"377.012s",PostgreSQL:"321.918s"},"Q5.":{ClickHouse:"0.622s",Pinot:"-",Elasticsearch:"16.459s",MongoDB:"20.130s",PostgreSQL:"267.690s"}}),a=Ce(!1),r=Ce(null),s=(d,y)=>{var h;const x=(h=n[d])==null?void 0:h[y];if(x==="-"||x===""||x===void 0)return"unavailable";const A=parseFloat(x);if(isNaN(A))return"unavailable";const N=Object.values(n[d]||{}).map(o=>parseFloat(o)).filter(o=>!isNaN(o)),T=Math.min(...N);if(A===T)return"best";const E=A/T;return E<2?"best":E<10?"good":E<50?"average":E<250?"below-average":"poor"},l=d=>{r.value=t.value[d],a.value=!0},i=()=>{a.value=!1},u=ne(()=>r.value?nn.highlight(r.value.text,nn.languages.sql,"sql"):"");return{databases:e,queries:t,benchmarkData:n,showModal:a,selectedQuery:r,getColorClass:s,showQueryModal:l,closeModal:i,highlightedSQL:u}}},St=e=>(Zn("data-v-eb04f6a7"),e=e(),Jn(),e),ii={class:"benchmark-table"},si=St(()=>P("th",{class:"query-col"},null,-1)),oi={class:"metadata-row"},li=St(()=>P("td",null,"Load time",-1)),ci={class:"metadata-row"},ui=St(()=>P("td",null,"Data size",-1)),fi={class:"query-cell"},di=["onClick"],mi=["innerHTML"];function gi(e,t,n,a,r,s){const l=Vn("FontAwesomeIcon");return C(),F(K,null,[P("table",ii,[P("thead",null,[P("tr",null,[si,(C(!0),F(K,null,pe(a.databases,i=>(C(),F("th",{key:i},ce(i),1))),128))])]),P("tbody",null,[P("tr",oi,[li,(C(!0),F(K,null,pe(a.databases,i=>(C(),F("td",{key:i,class:qe(a.getColorClass("Load time",i))},ce(a.benchmarkData["Load time"][i]),3))),128))]),P("tr",ci,[ui,(C(!0),F(K,null,pe(a.databases,i=>(C(),F("td",{key:i,class:qe(a.getColorClass("Data size",i))},[a.benchmarkData["Data size"][i]==="-"?(C(),Ge(l,{key:0,icon:["fas","skull-crossbones"],class:"unavailable-icon"})):(C(),F(K,{key:1},[kt(ce(a.benchmarkData["Data size"][i]),1)],64))],2))),128))]),(C(!0),F(K,null,pe(a.queries,(i,u)=>(C(),F("tr",{key:u,class:"query-row"},[P("td",fi,[P("button",{onClick:d=>a.showQueryModal(u),class:"view-query-btn"}," Query "+ce(u+1),9,di)]),(C(!0),F(K,null,pe(a.databases,d=>(C(),F("td",{key:d,class:qe(a.getColorClass(`Q${u+1}.`,d))},[a.benchmarkData[`Q${u+1}.`][d]==="-"?(C(),Ge(l,{key:0,icon:["fas","skull-crossbones"],class:"unavailable-icon"})):(C(),F(K,{key:1},[kt(ce(a.benchmarkData[`Q${u+1}.`][d]),1)],64))],2))),128))]))),128))])]),(C(),Ge(Qn,{to:"body"},[a.showModal?(C(),F("div",{key:0,class:"modal-backdrop",onClick:t[2]||(t[2]=(...i)=>a.closeModal&&a.closeModal(...i))},[P("div",{class:"modal-content",onClick:t[1]||(t[1]=Xn(()=>{},["stop"]))},[P("button",{class:"close-btn",onClick:t[0]||(t[0]=(...i)=>a.closeModal&&a.closeModal(...i))},"×"),P("h3",null,ce(a.selectedQuery.question),1),P("pre",null,[P("code",{class:"language-sql",innerHTML:a.highlightedSQL},null,8,mi)])])])):Kn("",!0)]))],64)}const hi=Yn(ri,[["render",gi],["__scopeId","data-v-eb04f6a7"]]),pi=ta('

Load Testing

How Much Load Can Our Single Node Handle?

Load testing can play a vital role in understanding the limits an architecture can handle. By simulating real-world usage scenarios, load testing helps identify performance bottlenecks, system limitations, and areas for optimization before they become critical issues in production environments.

We conducted basic load testing on Helios to evaluate its performance under high-volume conditions. Our testing methodology assesses both data ingestion capabilities and query performance under load, simulating a continuous data stream typical of web applications. Our end-to-end tests are designed to closely mirror the performance a Helios user would experience in the web app.

Methodology

Infrastructure Setup

EC2 Instance:

  • Instance Type: c5.4xlarge
  • vCPUs: 16
  • Memory: 32 GB
  • Storage: 500gb gp2

Lambda Configuration:

  • Runtime: Python 3.12
  • Memory: 1024 MB
  • Timeout: 15 minutes
  • Concurrency: 10 instances per shard
  • Batch Size: 100
  • Batch Window: 1 second

Kinesis Configuration:

  • Streams: 1 stream
  • Shards: 1 shard per stream

Data Generation and Ingestion

To illustrate the real-world applicability of our load testing, let's revisit our e-commerce platform example from the introduction. In that scenario, an analytics team needed to quickly analyze user behavior data streamed through Amazon Kinesis.

We simulated data ingestion at a rate of 900 events per second for 30 seconds. This rate was chosen to represent a realistic high-volume scenario for a small to medium scale web application. We chose 900 because the max throughput for a Kinesis shard is 1000 requests per second. The Lambda function, triggered by Kinesis, processes these events by decoding them and then inserting them into ClickHouse.

This ingestion rate of 900 events per second closely mimics the high-volume data flow an e-commerce platform might experience during peak shopping hours, capturing events like page views, product interactions, and purchases.

Dataset Description

Our query test dataset consists of 100 million rows and 107 columns of web traffic data, derived from production data. While this is a relatively low volume of data, it allows for quicker test iterations. While our test dataset is generic web traffic data, it shares many similarities with the e-commerce scenario we discussed earlier. For instance, the UserID column could represent unique shoppers, the URL could indicate product pages viewed, and the SearchPhrase could reflect product searches.

The queries we use for testing only include the following columns:

  • UserID: Unique identifier for visitors
  • AdvEngineID: Identifier for advertising engines or campaigns
  • RegionID: Geographical region identifier
  • ResolutionWidth: Screen width of the user's device
  • URL: The webpage URL accessed
  • SearchPhrase: Search terms used to reach the site
  • (101 other columns are present but unused)

Note that we only have to access these 6 columns of a 107 column table for 5 different queries. This highlights the idea that analytical queries tend to only span a few columns or less at a time. These columns allow us to answer questions similar to those our hypothetical e-commerce analytics team might ask. For example, using UserID, URL, and SearchPhrase, we could analyze user journeys across product pages and search behaviors.

The dataset allows for analysis of user behavior, advertising effectiveness, regional performance, and search patterns. We obtained the dataset and selected 5 queries of increasing complexity from ClickBench[link], an open source benchmarking tool designed for testing the performance of databases using analytical queries.

Measurement Method

We implemented a monitoring system that tracks:

  • The number of records written to the Kinesis stream per second.
  • The time difference between event generation, insertion into Kinesis, and availability for querying in ClickHouse.

Load Testing Objectives

Our primary objectives for these tests were:

  1. Maintain consistent ingestion rates and measure end-to-end latency from event generation to availability for querying, aiming to stay under 30 seconds for full event availability.
  2. Evaluate end-to-end query response times under continuous high-volume data insertions (particularly relevant to our e-commerce example as it simulates the ability to compute real-time metrics like conversion rates while the system continues to ingest new user events.)
  3. Identify potential bottlenecks in our data processing pipeline.

Results

Stream Ingestion and Latency

Latency Measurements: We conducted multiple tests, each processing 27,000 events over 30 seconds. Here are the end-to-end latency results:

  • Test 1: 1.30 seconds
  • Test 2: 1.30 seconds
  • Test 3: 1.29 seconds

These latency measurements represent the end-to-end time from the last event generation to full availability for querying in ClickHouse, including:

  • Kinesis stream ingestion of final events and Lambda processing time
  • Data insertion into Clickhouse
  • Time for the application server to query ClickHouse and return the count of all 27,000 rows and return the result

Query Performance

Query performance tests were conducted on our table of 100 million rows while 900 rows per second were continuously inserted. Note that this is an end-to-end time, which includes request flight times to and from API, not just the query execution times. Each query was ran 5 times synchronously and the results are presented in the following table:

QuerySQLAvg Time (s)Min Time (s)Max Time (s)Median Time (s)Std Dev (s)
How many hits were driven by advertising?SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0;0.150.130.180.150.02
What's the total ad impact, hit count, and average screen width?SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits;0.160.140.180.160.02
How many unique users visited the site?SELECT COUNT(DISTINCT UserID) FROM hits;0.530.510.550.520.02
Which are the top 10 regions by unique user count?SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC LIMIT 10;0.740.720.750.740.01
What are the top 10 search phrases leading to Google-related URLs?SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10;0.990.951.040.980.03

Limitations and Interpretation of Results

Our current testing setup focuses on the ingestion of a single data stream with a relatively small single table dataset of 100 million rows. While derived from production data, this volume may not fully represent the scale of larger production environments. The ClickBench repo provides more detail on how to replicate the results as well as limitations of their dataset here[link]. Additionally, the Lambda functions were warmed up prior to testing to better simulate an already running stream. These factors should be considered when interpreting our results and planning future scaling efforts. In the future, we’d like to test higher ingestion rates, concurrent queries, and join queries.

Our end-to-end results demonstrate Helios' performance under real-world conditions. Data ingestion tests showed consistent low latency, with end-to-end processing times averaging around 1.30 seconds for 27,000 events over 30 seconds. This includes Kinesis ingestion, Lambda processing, ClickHouse insertion, and API flight times. Query performance tests on a c5.4xlarge instance (16 vCPUs, 32 GB RAM) showed efficient handling of various analytical tasks. Four queries, including operations like `COUNT`, `SUM`, `AVG`, and `GROUP BY` on distinct columns, completed in 0.15 to 0.74 seconds. The most complex query, combining `LIKE`, `GROUP BY`, and `ORDER BY` operations, averaged 0.99 seconds.

Notably, only the fifth query presented memory issues on a t2.large instance (2 vCPUs, 8 GB RAM). We hypothesize that the memory-intensive nature of grouping and sorting a large result set from the broad `LIKE '%google%'` condition exceeded the available RAM. Upgrading to the c5.4xlarge instance resolved this issue, highlighting the importance of proper resource allocation for complex analytical queries. These results demonstrate Helios' capability to handle high-volume data ingestion and complex queries efficiently, with the flexibility to scale resources for more demanding operations.

Benchmarking

For comparison of our results against other analytical databases, we utilized the same open-source benchmarking suite. ClickHouse conducted open-source benchmarking tests comparing their database to several others. The evaluation used a dataset of 100 million rows and executed queries typical of ad-hoc analytics and real-time dashboards to assess each database's performance boundaries. As you can see, ClickHouse excelled in most of the queries used compared to other databases. For a comprehensive view of the benchmark results, you can refer to the full report at the provided link.

',43),vi=JSON.parse('{"title":"Load Testing","description":"","frontmatter":{},"headers":[],"relativePath":"load-testing.md","filePath":"load-testing.md"}'),bi={name:"load-testing.md"},Ei=Object.assign(bi,{setup(e){return(t,n)=>(C(),F("div",null,[pi,ea(hi)]))}});export{vi as __pageData,Ei as default}; diff --git a/docs/.vitepress/dist/assets/load-testing.md.DvtUAtXt.lean.js b/docs/.vitepress/dist/assets/load-testing.md.DvtUAtXt.lean.js deleted file mode 100644 index 9ea10a8..0000000 --- a/docs/.vitepress/dist/assets/load-testing.md.DvtUAtXt.lean.js +++ /dev/null @@ -1,563 +0,0 @@ -import{d as Gn,h as ne,v as qn,a3 as Wn,_ as Yn,s as Ce,a4 as $n,D as Vn,o as C,c as F,j as P,F as K,E as pe,b as Ge,t as ce,a0 as Xn,e as Kn,a5 as Qn,n as qe,a as kt,p as Zn,l as Jn,I as ea,a2 as ta}from"./chunks/framework.BJvAGJ4I.js";const Ct=()=>{};let dt={},an={},rn=null,sn={mark:Ct,measure:Ct};try{typeof window<"u"&&(dt=window),typeof document<"u"&&(an=document),typeof MutationObserver<"u"&&(rn=MutationObserver),typeof performance<"u"&&(sn=performance)}catch{}const{userAgent:Nt=""}=dt.navigator||{},J=dt,I=an,Lt=rn,Ne=sn;J.document;const $=!!I.documentElement&&!!I.head&&typeof I.addEventListener=="function"&&typeof I.createElement=="function",on=~Nt.indexOf("MSIE")||~Nt.indexOf("Trident/");var O="classic",ln="duotone",D="sharp",_="sharp-duotone",na=[O,ln,D,_],aa={classic:{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},sharp:{900:"fass",400:"fasr",300:"fasl",100:"fast"},"sharp-duotone":{900:"fasds"}},Rt={kit:{fak:"kit","fa-kit":"kit"},"kit-duotone":{fakd:"kit-duotone","fa-kit-duotone":"kit-duotone"}},ra=["kit"],ia=/fa(s|r|l|t|d|b|k|kd|ss|sr|sl|st|sds)?[\-\ ]/,sa=/Font ?Awesome ?([56 ]*)(Solid|Regular|Light|Thin|Duotone|Brands|Free|Pro|Sharp Duotone|Sharp|Kit)?.*/i,oa={"Font Awesome 5 Free":{900:"fas",400:"far"},"Font Awesome 5 Pro":{900:"fas",400:"far",normal:"far",300:"fal"},"Font Awesome 5 Brands":{400:"fab",normal:"fab"},"Font Awesome 5 Duotone":{900:"fad"}},la={"Font Awesome 6 Free":{900:"fas",400:"far"},"Font Awesome 6 Pro":{900:"fas",400:"far",normal:"far",300:"fal",100:"fat"},"Font Awesome 6 Brands":{400:"fab",normal:"fab"},"Font Awesome 6 Duotone":{900:"fad"},"Font Awesome 6 Sharp":{900:"fass",400:"fasr",normal:"fasr",300:"fasl",100:"fast"},"Font Awesome 6 Sharp Duotone":{900:"fasds"}},ca={classic:{"fa-brands":"fab","fa-duotone":"fad","fa-light":"fal","fa-regular":"far","fa-solid":"fas","fa-thin":"fat"},sharp:{"fa-solid":"fass","fa-regular":"fasr","fa-light":"fasl","fa-thin":"fast"},"sharp-duotone":{"fa-solid":"fasds"}},ua={classic:["fas","far","fal","fat"],sharp:["fass","fasr","fasl","fast"],"sharp-duotone":["fasds"]},fa={classic:{fab:"fa-brands",fad:"fa-duotone",fal:"fa-light",far:"fa-regular",fas:"fa-solid",fat:"fa-thin"},sharp:{fass:"fa-solid",fasr:"fa-regular",fasl:"fa-light",fast:"fa-thin"},"sharp-duotone":{fasds:"fa-solid"}},da={classic:{solid:"fas",regular:"far",light:"fal",thin:"fat",duotone:"fad",brands:"fab"},sharp:{solid:"fass",regular:"fasr",light:"fasl",thin:"fast"},"sharp-duotone":{solid:"fasds"}},cn={classic:{fa:"solid",fas:"solid","fa-solid":"solid",far:"regular","fa-regular":"regular",fal:"light","fa-light":"light",fat:"thin","fa-thin":"thin",fad:"duotone","fa-duotone":"duotone",fab:"brands","fa-brands":"brands"},sharp:{fa:"solid",fass:"solid","fa-solid":"solid",fasr:"regular","fa-regular":"regular",fasl:"light","fa-light":"light",fast:"thin","fa-thin":"thin"},"sharp-duotone":{fa:"solid",fasds:"solid","fa-solid":"solid"}},ma=["solid","regular","light","thin","duotone","brands"],un=[1,2,3,4,5,6,7,8,9,10],ga=un.concat([11,12,13,14,15,16,17,18,19,20]),be={GROUP:"duotone-group",SWAP_OPACITY:"swap-opacity",PRIMARY:"primary",SECONDARY:"secondary"},ha=[...Object.keys(ua),...ma,"2xs","xs","sm","lg","xl","2xl","beat","border","fade","beat-fade","bounce","flip-both","flip-horizontal","flip-vertical","flip","fw","inverse","layers-counter","layers-text","layers","li","pull-left","pull-right","pulse","rotate-180","rotate-270","rotate-90","rotate-by","shake","spin-pulse","spin-reverse","spin","stack-1x","stack-2x","stack","ul",be.GROUP,be.SWAP_OPACITY,be.PRIMARY,be.SECONDARY].concat(un.map(e=>"".concat(e,"x"))).concat(ga.map(e=>"w-".concat(e))),pa={"Font Awesome Kit":{400:"fak",normal:"fak"},"Font Awesome Kit Duotone":{400:"fakd",normal:"fakd"}},ba={kit:{"fa-kit":"fak"},"kit-duotone":{"fa-kit-duotone":"fakd"}},ya={kit:{fak:"fa-kit"},"kit-duotone":{fakd:"fa-kit-duotone"}},Pt={kit:{kit:"fak"},"kit-duotone":{"kit-duotone":"fakd"}};const W="___FONT_AWESOME___",Qe=16,fn="fa",dn="svg-inline--fa",se="data-fa-i2svg",Ze="data-fa-pseudo-element",va="data-fa-pseudo-element-pending",mt="data-prefix",gt="data-icon",Ft="fontawesome-i2svg",Ea="async",Aa=["HTML","HEAD","STYLE","SCRIPT"],mn=(()=>{try{return!0}catch{return!1}})(),gn=[O,D,_];function Se(e){return new Proxy(e,{get(t,n){return n in t?t[n]:t[O]}})}const hn={...cn};hn[O]={...cn[O],...Rt.kit,...Rt["kit-duotone"]};const re=Se(hn),Je={...da};Je[O]={...Je[O],...Pt.kit,...Pt["kit-duotone"]};const Ae=Se(Je),et={...fa};et[O]={...et[O],...ya.kit};const ie=Se(et),tt={...ca};tt[O]={...tt[O],...ba.kit};const xa=Se(tt),Sa=ia,pn="fa-layers-text",Ta=sa,Ia={...aa};Se(Ia);const Oa=["class","data-prefix","data-icon","data-fa-transform","data-fa-mask"],We=be,de=new Set;Object.keys(Ae[O]).map(de.add.bind(de));Object.keys(Ae[D]).map(de.add.bind(de));Object.keys(Ae[_]).map(de.add.bind(de));const wa=[...ra,...ha],ve=J.FontAwesomeConfig||{};function ka(e){var t=I.querySelector("script["+e+"]");if(t)return t.getAttribute(e)}function Ca(e){return e===""?!0:e==="false"?!1:e==="true"?!0:e}I&&typeof I.querySelector=="function"&&[["data-family-prefix","familyPrefix"],["data-css-prefix","cssPrefix"],["data-family-default","familyDefault"],["data-style-default","styleDefault"],["data-replacement-class","replacementClass"],["data-auto-replace-svg","autoReplaceSvg"],["data-auto-add-css","autoAddCss"],["data-auto-a11y","autoA11y"],["data-search-pseudo-elements","searchPseudoElements"],["data-observe-mutations","observeMutations"],["data-mutate-approach","mutateApproach"],["data-keep-original-source","keepOriginalSource"],["data-measure-performance","measurePerformance"],["data-show-missing-icons","showMissingIcons"]].forEach(t=>{let[n,a]=t;const r=Ca(ka(n));r!=null&&(ve[a]=r)});const bn={styleDefault:"solid",familyDefault:"classic",cssPrefix:fn,replacementClass:dn,autoReplaceSvg:!0,autoAddCss:!0,autoA11y:!0,searchPseudoElements:!1,observeMutations:!0,mutateApproach:"async",keepOriginalSource:!0,measurePerformance:!1,showMissingIcons:!0};ve.familyPrefix&&(ve.cssPrefix=ve.familyPrefix);const me={...bn,...ve};me.autoReplaceSvg||(me.observeMutations=!1);const p={};Object.keys(bn).forEach(e=>{Object.defineProperty(p,e,{enumerable:!0,set:function(t){me[e]=t,Ee.forEach(n=>n(p))},get:function(){return me[e]}})});Object.defineProperty(p,"familyPrefix",{enumerable:!0,set:function(e){me.cssPrefix=e,Ee.forEach(t=>t(p))},get:function(){return me.cssPrefix}});J.FontAwesomeConfig=p;const Ee=[];function Na(e){return Ee.push(e),()=>{Ee.splice(Ee.indexOf(e),1)}}const Q=Qe,j={size:16,x:0,y:0,rotate:0,flipX:!1,flipY:!1};function La(e){if(!e||!$)return;const t=I.createElement("style");t.setAttribute("type","text/css"),t.innerHTML=e;const n=I.head.childNodes;let a=null;for(let r=n.length-1;r>-1;r--){const s=n[r],l=(s.tagName||"").toUpperCase();["STYLE","LINK"].indexOf(l)>-1&&(a=s)}return I.head.insertBefore(t,a),e}const Ra="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";function xe(){let e=12,t="";for(;e-- >0;)t+=Ra[Math.random()*62|0];return t}function ge(e){const t=[];for(let n=(e||[]).length>>>0;n--;)t[n]=e[n];return t}function ht(e){return e.classList?ge(e.classList):(e.getAttribute("class")||"").split(" ").filter(t=>t)}function yn(e){return"".concat(e).replace(/&/g,"&").replace(/"/g,""").replace(/'/g,"'").replace(//g,">")}function Pa(e){return Object.keys(e||{}).reduce((t,n)=>t+"".concat(n,'="').concat(yn(e[n]),'" '),"").trim()}function De(e){return Object.keys(e||{}).reduce((t,n)=>t+"".concat(n,": ").concat(e[n].trim(),";"),"")}function pt(e){return e.size!==j.size||e.x!==j.x||e.y!==j.y||e.rotate!==j.rotate||e.flipX||e.flipY}function Fa(e){let{transform:t,containerWidth:n,iconWidth:a}=e;const r={transform:"translate(".concat(n/2," 256)")},s="translate(".concat(t.x*32,", ").concat(t.y*32,") "),l="scale(".concat(t.size/16*(t.flipX?-1:1),", ").concat(t.size/16*(t.flipY?-1:1),") "),i="rotate(".concat(t.rotate," 0 0)"),u={transform:"".concat(s," ").concat(l," ").concat(i)},d={transform:"translate(".concat(a/2*-1," -256)")};return{outer:r,inner:u,path:d}}function Ma(e){let{transform:t,width:n=Qe,height:a=Qe,startCentered:r=!1}=e,s="";return r&&on?s+="translate(".concat(t.x/Q-n/2,"em, ").concat(t.y/Q-a/2,"em) "):r?s+="translate(calc(-50% + ".concat(t.x/Q,"em), calc(-50% + ").concat(t.y/Q,"em)) "):s+="translate(".concat(t.x/Q,"em, ").concat(t.y/Q,"em) "),s+="scale(".concat(t.size/Q*(t.flipX?-1:1),", ").concat(t.size/Q*(t.flipY?-1:1),") "),s+="rotate(".concat(t.rotate,"deg) "),s}var Da=`:root, :host { - --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free"; - --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free"; - --fa-font-light: normal 300 1em/1 "Font Awesome 6 Pro"; - --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Pro"; - --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone"; - --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands"; - --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp"; - --fa-font-sharp-regular: normal 400 1em/1 "Font Awesome 6 Sharp"; - --fa-font-sharp-light: normal 300 1em/1 "Font Awesome 6 Sharp"; - --fa-font-sharp-thin: normal 100 1em/1 "Font Awesome 6 Sharp"; - --fa-font-sharp-duotone-solid: normal 900 1em/1 "Font Awesome 6 Sharp Duotone"; -} - -svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa { - overflow: visible; - box-sizing: content-box; -} - -.svg-inline--fa { - display: var(--fa-display, inline-block); - height: 1em; - overflow: visible; - vertical-align: -0.125em; -} -.svg-inline--fa.fa-2xs { - vertical-align: 0.1em; -} -.svg-inline--fa.fa-xs { - vertical-align: 0em; -} -.svg-inline--fa.fa-sm { - vertical-align: -0.0714285705em; -} -.svg-inline--fa.fa-lg { - vertical-align: -0.2em; -} -.svg-inline--fa.fa-xl { - vertical-align: -0.25em; -} -.svg-inline--fa.fa-2xl { - vertical-align: -0.3125em; -} -.svg-inline--fa.fa-pull-left { - margin-right: var(--fa-pull-margin, 0.3em); - width: auto; -} -.svg-inline--fa.fa-pull-right { - margin-left: var(--fa-pull-margin, 0.3em); - width: auto; -} -.svg-inline--fa.fa-li { - width: var(--fa-li-width, 2em); - top: 0.25em; -} -.svg-inline--fa.fa-fw { - width: var(--fa-fw-width, 1.25em); -} - -.fa-layers svg.svg-inline--fa { - bottom: 0; - left: 0; - margin: auto; - position: absolute; - right: 0; - top: 0; -} - -.fa-layers-counter, .fa-layers-text { - display: inline-block; - position: absolute; - text-align: center; -} - -.fa-layers { - display: inline-block; - height: 1em; - position: relative; - text-align: center; - vertical-align: -0.125em; - width: 1em; -} -.fa-layers svg.svg-inline--fa { - transform-origin: center center; -} - -.fa-layers-text { - left: 50%; - top: 50%; - transform: translate(-50%, -50%); - transform-origin: center center; -} - -.fa-layers-counter { - background-color: var(--fa-counter-background-color, #ff253a); - border-radius: var(--fa-counter-border-radius, 1em); - box-sizing: border-box; - color: var(--fa-inverse, #fff); - line-height: var(--fa-counter-line-height, 1); - max-width: var(--fa-counter-max-width, 5em); - min-width: var(--fa-counter-min-width, 1.5em); - overflow: hidden; - padding: var(--fa-counter-padding, 0.25em 0.5em); - right: var(--fa-right, 0); - text-overflow: ellipsis; - top: var(--fa-top, 0); - transform: scale(var(--fa-counter-scale, 0.25)); - transform-origin: top right; -} - -.fa-layers-bottom-right { - bottom: var(--fa-bottom, 0); - right: var(--fa-right, 0); - top: auto; - transform: scale(var(--fa-layers-scale, 0.25)); - transform-origin: bottom right; -} - -.fa-layers-bottom-left { - bottom: var(--fa-bottom, 0); - left: var(--fa-left, 0); - right: auto; - top: auto; - transform: scale(var(--fa-layers-scale, 0.25)); - transform-origin: bottom left; -} - -.fa-layers-top-right { - top: var(--fa-top, 0); - right: var(--fa-right, 0); - transform: scale(var(--fa-layers-scale, 0.25)); - transform-origin: top right; -} - -.fa-layers-top-left { - left: var(--fa-left, 0); - right: auto; - top: var(--fa-top, 0); - transform: scale(var(--fa-layers-scale, 0.25)); - transform-origin: top left; -} - -.fa-1x { - font-size: 1em; -} - -.fa-2x { - font-size: 2em; -} - -.fa-3x { - font-size: 3em; -} - -.fa-4x { - font-size: 4em; -} - -.fa-5x { - font-size: 5em; -} - -.fa-6x { - font-size: 6em; -} - -.fa-7x { - font-size: 7em; -} - -.fa-8x { - font-size: 8em; -} - -.fa-9x { - font-size: 9em; -} - -.fa-10x { - font-size: 10em; -} - -.fa-2xs { - font-size: 0.625em; - line-height: 0.1em; - vertical-align: 0.225em; -} - -.fa-xs { - font-size: 0.75em; - line-height: 0.0833333337em; - vertical-align: 0.125em; -} - -.fa-sm { - font-size: 0.875em; - line-height: 0.0714285718em; - vertical-align: 0.0535714295em; -} - -.fa-lg { - font-size: 1.25em; - line-height: 0.05em; - vertical-align: -0.075em; -} - -.fa-xl { - font-size: 1.5em; - line-height: 0.0416666682em; - vertical-align: -0.125em; -} - -.fa-2xl { - font-size: 2em; - line-height: 0.03125em; - vertical-align: -0.1875em; -} - -.fa-fw { - text-align: center; - width: 1.25em; -} - -.fa-ul { - list-style-type: none; - margin-left: var(--fa-li-margin, 2.5em); - padding-left: 0; -} -.fa-ul > li { - position: relative; -} - -.fa-li { - left: calc(-1 * var(--fa-li-width, 2em)); - position: absolute; - text-align: center; - width: var(--fa-li-width, 2em); - line-height: inherit; -} - -.fa-border { - border-color: var(--fa-border-color, #eee); - border-radius: var(--fa-border-radius, 0.1em); - border-style: var(--fa-border-style, solid); - border-width: var(--fa-border-width, 0.08em); - padding: var(--fa-border-padding, 0.2em 0.25em 0.15em); -} - -.fa-pull-left { - float: left; - margin-right: var(--fa-pull-margin, 0.3em); -} - -.fa-pull-right { - float: right; - margin-left: var(--fa-pull-margin, 0.3em); -} - -.fa-beat { - animation-name: fa-beat; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, ease-in-out); -} - -.fa-bounce { - animation-name: fa-bounce; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1)); -} - -.fa-fade { - animation-name: fa-fade; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); -} - -.fa-beat-fade { - animation-name: fa-beat-fade; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1)); -} - -.fa-flip { - animation-name: fa-flip; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, ease-in-out); -} - -.fa-shake { - animation-name: fa-shake; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, linear); -} - -.fa-spin { - animation-name: fa-spin; - animation-delay: var(--fa-animation-delay, 0s); - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 2s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, linear); -} - -.fa-spin-reverse { - --fa-animation-direction: reverse; -} - -.fa-pulse, -.fa-spin-pulse { - animation-name: fa-spin; - animation-direction: var(--fa-animation-direction, normal); - animation-duration: var(--fa-animation-duration, 1s); - animation-iteration-count: var(--fa-animation-iteration-count, infinite); - animation-timing-function: var(--fa-animation-timing, steps(8)); -} - -@media (prefers-reduced-motion: reduce) { - .fa-beat, -.fa-bounce, -.fa-fade, -.fa-beat-fade, -.fa-flip, -.fa-pulse, -.fa-shake, -.fa-spin, -.fa-spin-pulse { - animation-delay: -1ms; - animation-duration: 1ms; - animation-iteration-count: 1; - transition-delay: 0s; - transition-duration: 0s; - } -} -@keyframes fa-beat { - 0%, 90% { - transform: scale(1); - } - 45% { - transform: scale(var(--fa-beat-scale, 1.25)); - } -} -@keyframes fa-bounce { - 0% { - transform: scale(1, 1) translateY(0); - } - 10% { - transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0); - } - 30% { - transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em)); - } - 50% { - transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0); - } - 57% { - transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em)); - } - 64% { - transform: scale(1, 1) translateY(0); - } - 100% { - transform: scale(1, 1) translateY(0); - } -} -@keyframes fa-fade { - 50% { - opacity: var(--fa-fade-opacity, 0.4); - } -} -@keyframes fa-beat-fade { - 0%, 100% { - opacity: var(--fa-beat-fade-opacity, 0.4); - transform: scale(1); - } - 50% { - opacity: 1; - transform: scale(var(--fa-beat-fade-scale, 1.125)); - } -} -@keyframes fa-flip { - 50% { - transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg)); - } -} -@keyframes fa-shake { - 0% { - transform: rotate(-15deg); - } - 4% { - transform: rotate(15deg); - } - 8%, 24% { - transform: rotate(-18deg); - } - 12%, 28% { - transform: rotate(18deg); - } - 16% { - transform: rotate(-22deg); - } - 20% { - transform: rotate(22deg); - } - 32% { - transform: rotate(-12deg); - } - 36% { - transform: rotate(12deg); - } - 40%, 100% { - transform: rotate(0deg); - } -} -@keyframes fa-spin { - 0% { - transform: rotate(0deg); - } - 100% { - transform: rotate(360deg); - } -} -.fa-rotate-90 { - transform: rotate(90deg); -} - -.fa-rotate-180 { - transform: rotate(180deg); -} - -.fa-rotate-270 { - transform: rotate(270deg); -} - -.fa-flip-horizontal { - transform: scale(-1, 1); -} - -.fa-flip-vertical { - transform: scale(1, -1); -} - -.fa-flip-both, -.fa-flip-horizontal.fa-flip-vertical { - transform: scale(-1, -1); -} - -.fa-rotate-by { - transform: rotate(var(--fa-rotate-angle, 0)); -} - -.fa-stack { - display: inline-block; - vertical-align: middle; - height: 2em; - position: relative; - width: 2.5em; -} - -.fa-stack-1x, -.fa-stack-2x { - bottom: 0; - left: 0; - margin: auto; - position: absolute; - right: 0; - top: 0; - z-index: var(--fa-stack-z-index, auto); -} - -.svg-inline--fa.fa-stack-1x { - height: 1em; - width: 1.25em; -} -.svg-inline--fa.fa-stack-2x { - height: 2em; - width: 2.5em; -} - -.fa-inverse { - color: var(--fa-inverse, #fff); -} - -.sr-only, -.fa-sr-only { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.sr-only-focusable:not(:focus), -.fa-sr-only-focusable:not(:focus) { - position: absolute; - width: 1px; - height: 1px; - padding: 0; - margin: -1px; - overflow: hidden; - clip: rect(0, 0, 0, 0); - white-space: nowrap; - border-width: 0; -} - -.svg-inline--fa .fa-primary { - fill: var(--fa-primary-color, currentColor); - opacity: var(--fa-primary-opacity, 1); -} - -.svg-inline--fa .fa-secondary { - fill: var(--fa-secondary-color, currentColor); - opacity: var(--fa-secondary-opacity, 0.4); -} - -.svg-inline--fa.fa-swap-opacity .fa-primary { - opacity: var(--fa-secondary-opacity, 0.4); -} - -.svg-inline--fa.fa-swap-opacity .fa-secondary { - opacity: var(--fa-primary-opacity, 1); -} - -.svg-inline--fa mask .fa-primary, -.svg-inline--fa mask .fa-secondary { - fill: black; -} - -.fad.fa-inverse, -.fa-duotone.fa-inverse { - color: var(--fa-inverse, #fff); -}`;function vn(){const e=fn,t=dn,n=p.cssPrefix,a=p.replacementClass;let r=Da;if(n!==e||a!==t){const s=new RegExp("\\.".concat(e,"\\-"),"g"),l=new RegExp("\\--".concat(e,"\\-"),"g"),i=new RegExp("\\.".concat(t),"g");r=r.replace(s,".".concat(n,"-")).replace(l,"--".concat(n,"-")).replace(i,".".concat(a))}return r}let Mt=!1;function Ye(){p.autoAddCss&&!Mt&&(La(vn()),Mt=!0)}var _a={mixout(){return{dom:{css:vn,insertCss:Ye}}},hooks(){return{beforeDOMElementCreation(){Ye()},beforeI2svg(){Ye()}}}};const Y=J||{};Y[W]||(Y[W]={});Y[W].styles||(Y[W].styles={});Y[W].hooks||(Y[W].hooks={});Y[W].shims||(Y[W].shims=[]);var H=Y[W];const En=[],An=function(){I.removeEventListener("DOMContentLoaded",An),Pe=1,En.map(e=>e())};let Pe=!1;$&&(Pe=(I.documentElement.doScroll?/^loaded|^c/:/^loaded|^i|^c/).test(I.readyState),Pe||I.addEventListener("DOMContentLoaded",An));function Ua(e){$&&(Pe?setTimeout(e,0):En.push(e))}function Te(e){const{tag:t,attributes:n={},children:a=[]}=e;return typeof e=="string"?yn(e):"<".concat(t," ").concat(Pa(n),">").concat(a.map(Te).join(""),"")}function Dt(e,t,n){if(e&&e[t]&&e[t][n])return{prefix:t,iconName:n,icon:e[t][n]}}var $e=function(t,n,a,r){var s=Object.keys(t),l=s.length,i=n,u,d,y;for(a===void 0?(u=1,y=t[s[0]]):(u=0,y=a);u=55296&&r<=56319&&n=55296&&a<=56319&&n>t+1&&(r=e.charCodeAt(t+1),r>=56320&&r<=57343)?(a-55296)*1024+r-56320+65536:a}function _t(e){return Object.keys(e).reduce((t,n)=>{const a=e[n];return!!a.icon?t[a.iconName]=a.icon:t[n]=a,t},{})}function at(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const{skipHooks:a=!1}=n,r=_t(t);typeof H.hooks.addPack=="function"&&!a?H.hooks.addPack(e,_t(t)):H.styles[e]={...H.styles[e]||{},...r},e==="fas"&&at("fa",t)}const{styles:ae,shims:ja}=H,Ha={[O]:Object.values(ie[O]),[D]:Object.values(ie[D]),[_]:Object.values(ie[_])};let bt=null,xn={},Sn={},Tn={},In={},On={};const Ga={[O]:Object.keys(re[O]),[D]:Object.keys(re[D]),[_]:Object.keys(re[_])};function qa(e){return~wa.indexOf(e)}function Wa(e,t){const n=t.split("-"),a=n[0],r=n.slice(1).join("-");return a===e&&r!==""&&!qa(r)?r:null}const wn=()=>{const e=a=>$e(ae,(r,s,l)=>(r[l]=$e(s,a,{}),r),{});xn=e((a,r,s)=>(r[3]&&(a[r[3]]=s),r[2]&&r[2].filter(i=>typeof i=="number").forEach(i=>{a[i.toString(16)]=s}),a)),Sn=e((a,r,s)=>(a[s]=s,r[2]&&r[2].filter(i=>typeof i=="string").forEach(i=>{a[i]=s}),a)),On=e((a,r,s)=>{const l=r[2];return a[s]=s,l.forEach(i=>{a[i]=s}),a});const t="far"in ae||p.autoFetchSvg,n=$e(ja,(a,r)=>{const s=r[0];let l=r[1];const i=r[2];return l==="far"&&!t&&(l="fas"),typeof s=="string"&&(a.names[s]={prefix:l,iconName:i}),typeof s=="number"&&(a.unicodes[s.toString(16)]={prefix:l,iconName:i}),a},{names:{},unicodes:{}});Tn=n.names,In=n.unicodes,bt=_e(p.styleDefault,{family:p.familyDefault})};Na(e=>{bt=_e(e.styleDefault,{family:p.familyDefault})});wn();function yt(e,t){return(xn[e]||{})[t]}function Ya(e,t){return(Sn[e]||{})[t]}function Z(e,t){return(On[e]||{})[t]}function kn(e){return Tn[e]||{prefix:null,iconName:null}}function $a(e){const t=In[e],n=yt("fas",e);return t||(n?{prefix:"fas",iconName:n}:null)||{prefix:null,iconName:null}}function ee(){return bt}const vt=()=>({prefix:null,iconName:null,rest:[]});function _e(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{family:n=O}=t,a=re[n][e],r=Ae[n][e]||Ae[n][a],s=e in H.styles?e:null;return r||s||null}const Va={[O]:Object.keys(ie[O]),[D]:Object.keys(ie[D]),[_]:Object.keys(ie[_])};function Ue(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{skipLookups:n=!1}=t,a={[O]:"".concat(p.cssPrefix,"-").concat(O),[D]:"".concat(p.cssPrefix,"-").concat(D),[_]:"".concat(p.cssPrefix,"-").concat(_)};let r=null,s=O;const l=na.filter(u=>u!==ln);l.forEach(u=>{(e.includes(a[u])||e.some(d=>Va[u].includes(d)))&&(s=u)});const i=e.reduce((u,d)=>{const y=Wa(p.cssPrefix,d);if(ae[d]?(d=Ha[s].includes(d)?xa[s][d]:d,r=d,u.prefix=d):Ga[s].indexOf(d)>-1?(r=d,u.prefix=_e(d,{family:s})):y?u.iconName=y:d!==p.replacementClass&&!l.some(x=>d===a[x])&&u.rest.push(d),!n&&u.prefix&&u.iconName){const x=r==="fa"?kn(u.iconName):{},A=Z(u.prefix,u.iconName);x.prefix&&(r=null),u.iconName=x.iconName||A||u.iconName,u.prefix=x.prefix||u.prefix,u.prefix==="far"&&!ae.far&&ae.fas&&!p.autoFetchSvg&&(u.prefix="fas")}return u},vt());return(e.includes("fa-brands")||e.includes("fab"))&&(i.prefix="fab"),(e.includes("fa-duotone")||e.includes("fad"))&&(i.prefix="fad"),!i.prefix&&s===D&&(ae.fass||p.autoFetchSvg)&&(i.prefix="fass",i.iconName=Z(i.prefix,i.iconName)||i.iconName),!i.prefix&&s===_&&(ae.fasds||p.autoFetchSvg)&&(i.prefix="fasds",i.iconName=Z(i.prefix,i.iconName)||i.iconName),(i.prefix==="fa"||r==="fa")&&(i.prefix=ee()||"fas"),i}class Xa{constructor(){this.definitions={}}add(){for(var t=arguments.length,n=new Array(t),a=0;a{this.definitions[s]={...this.definitions[s]||{},...r[s]},at(s,r[s]);const l=ie[O][s];l&&at(l,r[s]),wn()})}reset(){this.definitions={}}_pullDefinitions(t,n){const a=n.prefix&&n.iconName&&n.icon?{0:n}:n;return Object.keys(a).map(r=>{const{prefix:s,iconName:l,icon:i}=a[r],u=i[2];t[s]||(t[s]={}),u.length>0&&u.forEach(d=>{typeof d=="string"&&(t[s][d]=i)}),t[s][l]=i}),t}}let Ut=[],ue={};const fe={},Ka=Object.keys(fe);function Qa(e,t){let{mixoutsTo:n}=t;return Ut=e,ue={},Object.keys(fe).forEach(a=>{Ka.indexOf(a)===-1&&delete fe[a]}),Ut.forEach(a=>{const r=a.mixout?a.mixout():{};if(Object.keys(r).forEach(s=>{typeof r[s]=="function"&&(n[s]=r[s]),typeof r[s]=="object"&&Object.keys(r[s]).forEach(l=>{n[s]||(n[s]={}),n[s][l]=r[s][l]})}),a.hooks){const s=a.hooks();Object.keys(s).forEach(l=>{ue[l]||(ue[l]=[]),ue[l].push(s[l])})}a.provides&&a.provides(fe)}),n}function rt(e,t){for(var n=arguments.length,a=new Array(n>2?n-2:0),r=2;r{t=l.apply(null,[t,...a])}),t}function oe(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),a=1;a{s.apply(null,n)})}function te(){const e=arguments[0],t=Array.prototype.slice.call(arguments,1);return fe[e]?fe[e].apply(null,t):void 0}function it(e){e.prefix==="fa"&&(e.prefix="fas");let{iconName:t}=e;const n=e.prefix||ee();if(t)return t=Z(n,t)||t,Dt(Cn.definitions,n,t)||Dt(H.styles,n,t)}const Cn=new Xa,Za=()=>{p.autoReplaceSvg=!1,p.observeMutations=!1,oe("noAuto")},Ja={i2svg:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};return $?(oe("beforeI2svg",e),te("pseudoElements2svg",e),te("i2svg",e)):Promise.reject(new Error("Operation requires a DOM of some kind."))},watch:function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{autoReplaceSvgRoot:t}=e;p.autoReplaceSvg===!1&&(p.autoReplaceSvg=!0),p.observeMutations=!0,Ua(()=>{tr({autoReplaceSvgRoot:t}),oe("watch",e)})}},er={icon:e=>{if(e===null)return null;if(typeof e=="object"&&e.prefix&&e.iconName)return{prefix:e.prefix,iconName:Z(e.prefix,e.iconName)||e.iconName};if(Array.isArray(e)&&e.length===2){const t=e[1].indexOf("fa-")===0?e[1].slice(3):e[1],n=_e(e[0]);return{prefix:n,iconName:Z(n,t)||t}}if(typeof e=="string"&&(e.indexOf("".concat(p.cssPrefix,"-"))>-1||e.match(Sa))){const t=Ue(e.split(" "),{skipLookups:!0});return{prefix:t.prefix||ee(),iconName:Z(t.prefix,t.iconName)||t.iconName}}if(typeof e=="string"){const t=ee();return{prefix:t,iconName:Z(t,e)||e}}}},U={noAuto:Za,config:p,dom:Ja,parse:er,library:Cn,findIconDefinition:it,toHtml:Te},tr=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{autoReplaceSvgRoot:t=I}=e;(Object.keys(H.styles).length>0||p.autoFetchSvg)&&$&&p.autoReplaceSvg&&U.dom.i2svg({node:t})};function Be(e,t){return Object.defineProperty(e,"abstract",{get:t}),Object.defineProperty(e,"html",{get:function(){return e.abstract.map(n=>Te(n))}}),Object.defineProperty(e,"node",{get:function(){if(!$)return;const n=I.createElement("div");return n.innerHTML=e.html,n.children}}),e}function nr(e){let{children:t,main:n,mask:a,attributes:r,styles:s,transform:l}=e;if(pt(l)&&n.found&&!a.found){const{width:i,height:u}=n,d={x:i/u/2,y:.5};r.style=De({...s,"transform-origin":"".concat(d.x+l.x/16,"em ").concat(d.y+l.y/16,"em")})}return[{tag:"svg",attributes:r,children:t}]}function ar(e){let{prefix:t,iconName:n,children:a,attributes:r,symbol:s}=e;const l=s===!0?"".concat(t,"-").concat(p.cssPrefix,"-").concat(n):s;return[{tag:"svg",attributes:{style:"display: none;"},children:[{tag:"symbol",attributes:{...r,id:l},children:a}]}]}function Et(e){const{icons:{main:t,mask:n},prefix:a,iconName:r,transform:s,symbol:l,title:i,maskId:u,titleId:d,extra:y,watchable:x=!1}=e,{width:A,height:k}=n.found?n:t,N=a==="fak",T=[p.replacementClass,r?"".concat(p.cssPrefix,"-").concat(r):""].filter(m=>y.classes.indexOf(m)===-1).filter(m=>m!==""||!!m).concat(y.classes).join(" ");let E={children:[],attributes:{...y.attributes,"data-prefix":a,"data-icon":r,class:T,role:y.attributes.role||"img",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 ".concat(A," ").concat(k)}};const h=N&&!~y.classes.indexOf("fa-fw")?{width:"".concat(A/k*16*.0625,"em")}:{};x&&(E.attributes[se]=""),i&&(E.children.push({tag:"title",attributes:{id:E.attributes["aria-labelledby"]||"title-".concat(d||xe())},children:[i]}),delete E.attributes.title);const o={...E,prefix:a,iconName:r,main:t,mask:n,maskId:u,transform:s,symbol:l,styles:{...h,...y.styles}},{children:c,attributes:f}=n.found&&t.found?te("generateAbstractMask",o)||{children:[],attributes:{}}:te("generateAbstractIcon",o)||{children:[],attributes:{}};return o.children=c,o.attributes=f,l?ar(o):nr(o)}function Bt(e){const{content:t,width:n,height:a,transform:r,title:s,extra:l,watchable:i=!1}=e,u={...l.attributes,...s?{title:s}:{},class:l.classes.join(" ")};i&&(u[se]="");const d={...l.styles};pt(r)&&(d.transform=Ma({transform:r,startCentered:!0,width:n,height:a}),d["-webkit-transform"]=d.transform);const y=De(d);y.length>0&&(u.style=y);const x=[];return x.push({tag:"span",attributes:u,children:[t]}),s&&x.push({tag:"span",attributes:{class:"sr-only"},children:[s]}),x}function rr(e){const{content:t,title:n,extra:a}=e,r={...a.attributes,...n?{title:n}:{},class:a.classes.join(" ")},s=De(a.styles);s.length>0&&(r.style=s);const l=[];return l.push({tag:"span",attributes:r,children:[t]}),n&&l.push({tag:"span",attributes:{class:"sr-only"},children:[n]}),l}const{styles:Ve}=H;function st(e){const t=e[0],n=e[1],[a]=e.slice(4);let r=null;return Array.isArray(a)?r={tag:"g",attributes:{class:"".concat(p.cssPrefix,"-").concat(We.GROUP)},children:[{tag:"path",attributes:{class:"".concat(p.cssPrefix,"-").concat(We.SECONDARY),fill:"currentColor",d:a[0]}},{tag:"path",attributes:{class:"".concat(p.cssPrefix,"-").concat(We.PRIMARY),fill:"currentColor",d:a[1]}}]}:r={tag:"path",attributes:{fill:"currentColor",d:a}},{found:!0,width:t,height:n,icon:r}}const ir={found:!1,width:512,height:512};function sr(e,t){!mn&&!p.showMissingIcons&&e&&console.error('Icon with name "'.concat(e,'" and prefix "').concat(t,'" is missing.'))}function ot(e,t){let n=t;return t==="fa"&&p.styleDefault!==null&&(t=ee()),new Promise((a,r)=>{if(n==="fa"){const s=kn(e)||{};e=s.iconName||e,t=s.prefix||t}if(e&&t&&Ve[t]&&Ve[t][e]){const s=Ve[t][e];return a(st(s))}sr(e,t),a({...ir,icon:p.showMissingIcons&&e?te("missingIconAbstract")||{}:{}})})}const zt=()=>{},lt=p.measurePerformance&&Ne&&Ne.mark&&Ne.measure?Ne:{mark:zt,measure:zt},ye='FA "6.6.0"',or=e=>(lt.mark("".concat(ye," ").concat(e," begins")),()=>Nn(e)),Nn=e=>{lt.mark("".concat(ye," ").concat(e," ends")),lt.measure("".concat(ye," ").concat(e),"".concat(ye," ").concat(e," begins"),"".concat(ye," ").concat(e," ends"))};var At={begin:or,end:Nn};const Le=()=>{};function jt(e){return typeof(e.getAttribute?e.getAttribute(se):null)=="string"}function lr(e){const t=e.getAttribute?e.getAttribute(mt):null,n=e.getAttribute?e.getAttribute(gt):null;return t&&n}function cr(e){return e&&e.classList&&e.classList.contains&&e.classList.contains(p.replacementClass)}function ur(){return p.autoReplaceSvg===!0?Re.replace:Re[p.autoReplaceSvg]||Re.replace}function fr(e){return I.createElementNS("http://www.w3.org/2000/svg",e)}function dr(e){return I.createElement(e)}function Ln(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{ceFn:n=e.tag==="svg"?fr:dr}=t;if(typeof e=="string")return I.createTextNode(e);const a=n(e.tag);return Object.keys(e.attributes||[]).forEach(function(s){a.setAttribute(s,e.attributes[s])}),(e.children||[]).forEach(function(s){a.appendChild(Ln(s,{ceFn:n}))}),a}function mr(e){let t=" ".concat(e.outerHTML," ");return t="".concat(t,"Font Awesome fontawesome.com "),t}const Re={replace:function(e){const t=e[0];if(t.parentNode)if(e[1].forEach(n=>{t.parentNode.insertBefore(Ln(n),t)}),t.getAttribute(se)===null&&p.keepOriginalSource){let n=I.createComment(mr(t));t.parentNode.replaceChild(n,t)}else t.remove()},nest:function(e){const t=e[0],n=e[1];if(~ht(t).indexOf(p.replacementClass))return Re.replace(e);const a=new RegExp("".concat(p.cssPrefix,"-.*"));if(delete n[0].attributes.id,n[0].attributes.class){const s=n[0].attributes.class.split(" ").reduce((l,i)=>(i===p.replacementClass||i.match(a)?l.toSvg.push(i):l.toNode.push(i),l),{toNode:[],toSvg:[]});n[0].attributes.class=s.toSvg.join(" "),s.toNode.length===0?t.removeAttribute("class"):t.setAttribute("class",s.toNode.join(" "))}const r=n.map(s=>Te(s)).join(` -`);t.setAttribute(se,""),t.innerHTML=r}};function Ht(e){e()}function Rn(e,t){const n=typeof t=="function"?t:Le;if(e.length===0)n();else{let a=Ht;p.mutateApproach===Ea&&(a=J.requestAnimationFrame||Ht),a(()=>{const r=ur(),s=At.begin("mutate");e.map(r),s(),n()})}}let xt=!1;function Pn(){xt=!0}function ct(){xt=!1}let Fe=null;function Gt(e){if(!Lt||!p.observeMutations)return;const{treeCallback:t=Le,nodeCallback:n=Le,pseudoElementsCallback:a=Le,observeMutationsRoot:r=I}=e;Fe=new Lt(s=>{if(xt)return;const l=ee();ge(s).forEach(i=>{if(i.type==="childList"&&i.addedNodes.length>0&&!jt(i.addedNodes[0])&&(p.searchPseudoElements&&a(i.target),t(i.target)),i.type==="attributes"&&i.target.parentNode&&p.searchPseudoElements&&a(i.target.parentNode),i.type==="attributes"&&jt(i.target)&&~Oa.indexOf(i.attributeName))if(i.attributeName==="class"&&lr(i.target)){const{prefix:u,iconName:d}=Ue(ht(i.target));i.target.setAttribute(mt,u||l),d&&i.target.setAttribute(gt,d)}else cr(i.target)&&n(i.target)})}),$&&Fe.observe(r,{childList:!0,attributes:!0,characterData:!0,subtree:!0})}function gr(){Fe&&Fe.disconnect()}function hr(e){const t=e.getAttribute("style");let n=[];return t&&(n=t.split(";").reduce((a,r)=>{const s=r.split(":"),l=s[0],i=s.slice(1);return l&&i.length>0&&(a[l]=i.join(":").trim()),a},{})),n}function pr(e){const t=e.getAttribute("data-prefix"),n=e.getAttribute("data-icon"),a=e.innerText!==void 0?e.innerText.trim():"";let r=Ue(ht(e));return r.prefix||(r.prefix=ee()),t&&n&&(r.prefix=t,r.iconName=n),r.iconName&&r.prefix||(r.prefix&&a.length>0&&(r.iconName=Ya(r.prefix,e.innerText)||yt(r.prefix,nt(e.innerText))),!r.iconName&&p.autoFetchSvg&&e.firstChild&&e.firstChild.nodeType===Node.TEXT_NODE&&(r.iconName=e.firstChild.data)),r}function br(e){const t=ge(e.attributes).reduce((r,s)=>(r.name!=="class"&&r.name!=="style"&&(r[s.name]=s.value),r),{}),n=e.getAttribute("title"),a=e.getAttribute("data-fa-title-id");return p.autoA11y&&(n?t["aria-labelledby"]="".concat(p.replacementClass,"-title-").concat(a||xe()):(t["aria-hidden"]="true",t.focusable="false")),t}function yr(){return{iconName:null,title:null,titleId:null,prefix:null,transform:j,symbol:!1,mask:{iconName:null,prefix:null,rest:[]},maskId:null,extra:{classes:[],styles:{},attributes:{}}}}function qt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{styleParser:!0};const{iconName:n,prefix:a,rest:r}=pr(e),s=br(e),l=rt("parseNodeAttributes",{},e);let i=t.styleParser?hr(e):[];return{iconName:n,title:e.getAttribute("title"),titleId:e.getAttribute("data-fa-title-id"),prefix:a,transform:j,mask:{iconName:null,prefix:null,rest:[]},maskId:null,symbol:!1,extra:{classes:r,styles:i,attributes:s},...l}}const{styles:vr}=H;function Fn(e){const t=p.autoReplaceSvg==="nest"?qt(e,{styleParser:!1}):qt(e);return~t.extra.classes.indexOf(pn)?te("generateLayersText",e,t):te("generateSvgReplacementMutation",e,t)}let G=new Set;gn.map(e=>{G.add("fa-".concat(e))});Object.keys(re[O]).map(G.add.bind(G));Object.keys(re[D]).map(G.add.bind(G));Object.keys(re[_]).map(G.add.bind(G));G=[...G];function Wt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(!$)return Promise.resolve();const n=I.documentElement.classList,a=y=>n.add("".concat(Ft,"-").concat(y)),r=y=>n.remove("".concat(Ft,"-").concat(y)),s=p.autoFetchSvg?G:gn.map(y=>"fa-".concat(y)).concat(Object.keys(vr));s.includes("fa")||s.push("fa");const l=[".".concat(pn,":not([").concat(se,"])")].concat(s.map(y=>".".concat(y,":not([").concat(se,"])"))).join(", ");if(l.length===0)return Promise.resolve();let i=[];try{i=ge(e.querySelectorAll(l))}catch{}if(i.length>0)a("pending"),r("complete");else return Promise.resolve();const u=At.begin("onTree"),d=i.reduce((y,x)=>{try{const A=Fn(x);A&&y.push(A)}catch(A){mn||A.name==="MissingIcon"&&console.error(A)}return y},[]);return new Promise((y,x)=>{Promise.all(d).then(A=>{Rn(A,()=>{a("active"),a("complete"),r("pending"),typeof t=="function"&&t(),u(),y()})}).catch(A=>{u(),x(A)})})}function Er(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;Fn(e).then(n=>{n&&Rn([n],t)})}function Ar(e){return function(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const a=(t||{}).icon?t:it(t||{});let{mask:r}=n;return r&&(r=(r||{}).icon?r:it(r||{})),e(a,{...n,mask:r})}}const xr=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{transform:n=j,symbol:a=!1,mask:r=null,maskId:s=null,title:l=null,titleId:i=null,classes:u=[],attributes:d={},styles:y={}}=t;if(!e)return;const{prefix:x,iconName:A,icon:k}=e;return Be({type:"icon",...e},()=>(oe("beforeDOMElementCreation",{iconDefinition:e,params:t}),p.autoA11y&&(l?d["aria-labelledby"]="".concat(p.replacementClass,"-title-").concat(i||xe()):(d["aria-hidden"]="true",d.focusable="false")),Et({icons:{main:st(k),mask:r?st(r.icon):{found:!1,width:null,height:null,icon:{}}},prefix:x,iconName:A,transform:{...j,...n},symbol:a,title:l,maskId:s,titleId:i,extra:{attributes:d,styles:y,classes:u}})))};var Sr={mixout(){return{icon:Ar(xr)}},hooks(){return{mutationObserverCallbacks(e){return e.treeCallback=Wt,e.nodeCallback=Er,e}}},provides(e){e.i2svg=function(t){const{node:n=I,callback:a=()=>{}}=t;return Wt(n,a)},e.generateSvgReplacementMutation=function(t,n){const{iconName:a,title:r,titleId:s,prefix:l,transform:i,symbol:u,mask:d,maskId:y,extra:x}=n;return new Promise((A,k)=>{Promise.all([ot(a,l),d.iconName?ot(d.iconName,d.prefix):Promise.resolve({found:!1,width:512,height:512,icon:{}})]).then(N=>{let[T,E]=N;A([t,Et({icons:{main:T,mask:E},prefix:l,iconName:a,transform:i,symbol:u,maskId:y,title:r,titleId:s,extra:x,watchable:!0})])}).catch(k)})},e.generateAbstractIcon=function(t){let{children:n,attributes:a,main:r,transform:s,styles:l}=t;const i=De(l);i.length>0&&(a.style=i);let u;return pt(s)&&(u=te("generateAbstractTransformGrouping",{main:r,transform:s,containerWidth:r.width,iconWidth:r.width})),n.push(u||r.icon),{children:n,attributes:a}}}},Tr={mixout(){return{layer(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{classes:n=[]}=t;return Be({type:"layer"},()=>{oe("beforeDOMElementCreation",{assembler:e,params:t});let a=[];return e(r=>{Array.isArray(r)?r.map(s=>{a=a.concat(s.abstract)}):a=a.concat(r.abstract)}),[{tag:"span",attributes:{class:["".concat(p.cssPrefix,"-layers"),...n].join(" ")},children:a}]})}}}},Ir={mixout(){return{counter(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{title:n=null,classes:a=[],attributes:r={},styles:s={}}=t;return Be({type:"counter",content:e},()=>(oe("beforeDOMElementCreation",{content:e,params:t}),rr({content:e.toString(),title:n,extra:{attributes:r,styles:s,classes:["".concat(p.cssPrefix,"-layers-counter"),...a]}})))}}}},Or={mixout(){return{text(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{transform:n=j,title:a=null,classes:r=[],attributes:s={},styles:l={}}=t;return Be({type:"text",content:e},()=>(oe("beforeDOMElementCreation",{content:e,params:t}),Bt({content:e,transform:{...j,...n},title:a,extra:{attributes:s,styles:l,classes:["".concat(p.cssPrefix,"-layers-text"),...r]}})))}}},provides(e){e.generateLayersText=function(t,n){const{title:a,transform:r,extra:s}=n;let l=null,i=null;if(on){const u=parseInt(getComputedStyle(t).fontSize,10),d=t.getBoundingClientRect();l=d.width/u,i=d.height/u}return p.autoA11y&&!a&&(s.attributes["aria-hidden"]="true"),Promise.resolve([t,Bt({content:t.innerHTML,width:l,height:i,transform:r,title:a,extra:s,watchable:!0})])}}};const wr=new RegExp('"',"ug"),Yt=[1105920,1112319],$t={FontAwesome:{normal:"fas",400:"fas"},...la,...oa,...pa},ut=Object.keys($t).reduce((e,t)=>(e[t.toLowerCase()]=$t[t],e),{}),kr=Object.keys(ut).reduce((e,t)=>{const n=ut[t];return e[t]=n[900]||[...Object.entries(n)][0][1],e},{});function Cr(e){const t=e.replace(wr,""),n=za(t,0),a=n>=Yt[0]&&n<=Yt[1],r=t.length===2?t[0]===t[1]:!1;return{value:nt(r?t[0]:t),isSecondary:a||r}}function Nr(e,t){const n=e.replace(/^['"]|['"]$/g,"").toLowerCase(),a=parseInt(t),r=isNaN(a)?"normal":a;return(ut[n]||{})[r]||kr[n]}function Vt(e,t){const n="".concat(va).concat(t.replace(":","-"));return new Promise((a,r)=>{if(e.getAttribute(n)!==null)return a();const l=ge(e.children).filter(A=>A.getAttribute(Ze)===t)[0],i=J.getComputedStyle(e,t),u=i.getPropertyValue("font-family"),d=u.match(Ta),y=i.getPropertyValue("font-weight"),x=i.getPropertyValue("content");if(l&&!d)return e.removeChild(l),a();if(d&&x!=="none"&&x!==""){const A=i.getPropertyValue("content");let k=Nr(u,y);const{value:N,isSecondary:T}=Cr(A),E=d[0].startsWith("FontAwesome");let h=yt(k,N),o=h;if(E){const c=$a(N);c.iconName&&c.prefix&&(h=c.iconName,k=c.prefix)}if(h&&!T&&(!l||l.getAttribute(mt)!==k||l.getAttribute(gt)!==o)){e.setAttribute(n,o),l&&e.removeChild(l);const c=yr(),{extra:f}=c;f.attributes[Ze]=t,ot(h,k).then(m=>{const g=Et({...c,icons:{main:m,mask:vt()},prefix:k,iconName:o,extra:f,watchable:!0}),b=I.createElementNS("http://www.w3.org/2000/svg","svg");t==="::before"?e.insertBefore(b,e.firstChild):e.appendChild(b),b.outerHTML=g.map(S=>Te(S)).join(` -`),e.removeAttribute(n),a()}).catch(r)}else a()}else a()})}function Lr(e){return Promise.all([Vt(e,"::before"),Vt(e,"::after")])}function Rr(e){return e.parentNode!==document.head&&!~Aa.indexOf(e.tagName.toUpperCase())&&!e.getAttribute(Ze)&&(!e.parentNode||e.parentNode.tagName!=="svg")}function Xt(e){if($)return new Promise((t,n)=>{const a=ge(e.querySelectorAll("*")).filter(Rr).map(Lr),r=At.begin("searchPseudoElements");Pn(),Promise.all(a).then(()=>{r(),ct(),t()}).catch(()=>{r(),ct(),n()})})}var Pr={hooks(){return{mutationObserverCallbacks(e){return e.pseudoElementsCallback=Xt,e}}},provides(e){e.pseudoElements2svg=function(t){const{node:n=I}=t;p.searchPseudoElements&&Xt(n)}}};let Kt=!1;var Fr={mixout(){return{dom:{unwatch(){Pn(),Kt=!0}}}},hooks(){return{bootstrap(){Gt(rt("mutationObserverCallbacks",{}))},noAuto(){gr()},watch(e){const{observeMutationsRoot:t}=e;Kt?ct():Gt(rt("mutationObserverCallbacks",{observeMutationsRoot:t}))}}}};const Qt=e=>{let t={size:16,x:0,y:0,flipX:!1,flipY:!1,rotate:0};return e.toLowerCase().split(" ").reduce((n,a)=>{const r=a.toLowerCase().split("-"),s=r[0];let l=r.slice(1).join("-");if(s&&l==="h")return n.flipX=!0,n;if(s&&l==="v")return n.flipY=!0,n;if(l=parseFloat(l),isNaN(l))return n;switch(s){case"grow":n.size=n.size+l;break;case"shrink":n.size=n.size-l;break;case"left":n.x=n.x-l;break;case"right":n.x=n.x+l;break;case"up":n.y=n.y-l;break;case"down":n.y=n.y+l;break;case"rotate":n.rotate=n.rotate+l;break}return n},t)};var Mr={mixout(){return{parse:{transform:e=>Qt(e)}}},hooks(){return{parseNodeAttributes(e,t){const n=t.getAttribute("data-fa-transform");return n&&(e.transform=Qt(n)),e}}},provides(e){e.generateAbstractTransformGrouping=function(t){let{main:n,transform:a,containerWidth:r,iconWidth:s}=t;const l={transform:"translate(".concat(r/2," 256)")},i="translate(".concat(a.x*32,", ").concat(a.y*32,") "),u="scale(".concat(a.size/16*(a.flipX?-1:1),", ").concat(a.size/16*(a.flipY?-1:1),") "),d="rotate(".concat(a.rotate," 0 0)"),y={transform:"".concat(i," ").concat(u," ").concat(d)},x={transform:"translate(".concat(s/2*-1," -256)")},A={outer:l,inner:y,path:x};return{tag:"g",attributes:{...A.outer},children:[{tag:"g",attributes:{...A.inner},children:[{tag:n.icon.tag,children:n.icon.children,attributes:{...n.icon.attributes,...A.path}}]}]}}}};const Xe={x:0,y:0,width:"100%",height:"100%"};function Zt(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return e.attributes&&(e.attributes.fill||t)&&(e.attributes.fill="black"),e}function Dr(e){return e.tag==="g"?e.children:[e]}var _r={hooks(){return{parseNodeAttributes(e,t){const n=t.getAttribute("data-fa-mask"),a=n?Ue(n.split(" ").map(r=>r.trim())):vt();return a.prefix||(a.prefix=ee()),e.mask=a,e.maskId=t.getAttribute("data-fa-mask-id"),e}}},provides(e){e.generateAbstractMask=function(t){let{children:n,attributes:a,main:r,mask:s,maskId:l,transform:i}=t;const{width:u,icon:d}=r,{width:y,icon:x}=s,A=Fa({transform:i,containerWidth:y,iconWidth:u}),k={tag:"rect",attributes:{...Xe,fill:"white"}},N=d.children?{children:d.children.map(Zt)}:{},T={tag:"g",attributes:{...A.inner},children:[Zt({tag:d.tag,attributes:{...d.attributes,...A.path},...N})]},E={tag:"g",attributes:{...A.outer},children:[T]},h="mask-".concat(l||xe()),o="clip-".concat(l||xe()),c={tag:"mask",attributes:{...Xe,id:h,maskUnits:"userSpaceOnUse",maskContentUnits:"userSpaceOnUse"},children:[k,E]},f={tag:"defs",children:[{tag:"clipPath",attributes:{id:o},children:Dr(x)},c]};return n.push(f,{tag:"rect",attributes:{fill:"currentColor","clip-path":"url(#".concat(o,")"),mask:"url(#".concat(h,")"),...Xe}}),{children:n,attributes:a}}}},Ur={provides(e){let t=!1;J.matchMedia&&(t=J.matchMedia("(prefers-reduced-motion: reduce)").matches),e.missingIconAbstract=function(){const n=[],a={fill:"currentColor"},r={attributeType:"XML",repeatCount:"indefinite",dur:"2s"};n.push({tag:"path",attributes:{...a,d:"M156.5,447.7l-12.6,29.5c-18.7-9.5-35.9-21.2-51.5-34.9l22.7-22.7C127.6,430.5,141.5,440,156.5,447.7z M40.6,272H8.5 c1.4,21.2,5.4,41.7,11.7,61.1L50,321.2C45.1,305.5,41.8,289,40.6,272z M40.6,240c1.4-18.8,5.2-37,11.1-54.1l-29.5-12.6 C14.7,194.3,10,216.7,8.5,240H40.6z M64.3,156.5c7.8-14.9,17.2-28.8,28.1-41.5L69.7,92.3c-13.7,15.6-25.5,32.8-34.9,51.5 L64.3,156.5z M397,419.6c-13.9,12-29.4,22.3-46.1,30.4l11.9,29.8c20.7-9.9,39.8-22.6,56.9-37.6L397,419.6z M115,92.4 c13.9-12,29.4-22.3,46.1-30.4l-11.9-29.8c-20.7,9.9-39.8,22.6-56.8,37.6L115,92.4z M447.7,355.5c-7.8,14.9-17.2,28.8-28.1,41.5 l22.7,22.7c13.7-15.6,25.5-32.9,34.9-51.5L447.7,355.5z M471.4,272c-1.4,18.8-5.2,37-11.1,54.1l29.5,12.6 c7.5-21.1,12.2-43.5,13.6-66.8H471.4z M321.2,462c-15.7,5-32.2,8.2-49.2,9.4v32.1c21.2-1.4,41.7-5.4,61.1-11.7L321.2,462z M240,471.4c-18.8-1.4-37-5.2-54.1-11.1l-12.6,29.5c21.1,7.5,43.5,12.2,66.8,13.6V471.4z M462,190.8c5,15.7,8.2,32.2,9.4,49.2h32.1 c-1.4-21.2-5.4-41.7-11.7-61.1L462,190.8z M92.4,397c-12-13.9-22.3-29.4-30.4-46.1l-29.8,11.9c9.9,20.7,22.6,39.8,37.6,56.9 L92.4,397z M272,40.6c18.8,1.4,36.9,5.2,54.1,11.1l12.6-29.5C317.7,14.7,295.3,10,272,8.5V40.6z M190.8,50 c15.7-5,32.2-8.2,49.2-9.4V8.5c-21.2,1.4-41.7,5.4-61.1,11.7L190.8,50z M442.3,92.3L419.6,115c12,13.9,22.3,29.4,30.5,46.1 l29.8-11.9C470,128.5,457.3,109.4,442.3,92.3z M397,92.4l22.7-22.7c-15.6-13.7-32.8-25.5-51.5-34.9l-12.6,29.5 C370.4,72.1,384.4,81.5,397,92.4z"}});const s={...r,attributeName:"opacity"},l={tag:"circle",attributes:{...a,cx:"256",cy:"364",r:"28"},children:[]};return t||l.children.push({tag:"animate",attributes:{...r,attributeName:"r",values:"28;14;28;28;14;28;"}},{tag:"animate",attributes:{...s,values:"1;0;1;1;0;1;"}}),n.push(l),n.push({tag:"path",attributes:{...a,opacity:"1",d:"M263.7,312h-16c-6.6,0-12-5.4-12-12c0-71,77.4-63.9,77.4-107.8c0-20-17.8-40.2-57.4-40.2c-29.1,0-44.3,9.6-59.2,28.7 c-3.9,5-11.1,6-16.2,2.4l-13.1-9.2c-5.6-3.9-6.9-11.8-2.6-17.2c21.2-27.2,46.4-44.7,91.2-44.7c52.3,0,97.4,29.8,97.4,80.2 c0,67.6-77.4,63.5-77.4,107.8C275.7,306.6,270.3,312,263.7,312z"},children:t?[]:[{tag:"animate",attributes:{...s,values:"1;0;0;0;0;1;"}}]}),t||n.push({tag:"path",attributes:{...a,opacity:"0",d:"M232.5,134.5l7,168c0.3,6.4,5.6,11.5,12,11.5h9c6.4,0,11.7-5.1,12-11.5l7-168c0.3-6.8-5.2-12.5-12-12.5h-23 C237.7,122,232.2,127.7,232.5,134.5z"},children:[{tag:"animate",attributes:{...s,values:"0;0;1;1;0;0;"}}]}),{tag:"g",attributes:{class:"missing"},children:n}}}},Br={hooks(){return{parseNodeAttributes(e,t){const n=t.getAttribute("data-fa-symbol"),a=n===null?!1:n===""?!0:n;return e.symbol=a,e}}}},zr=[_a,Sr,Tr,Ir,Or,Pr,Fr,Mr,_r,Ur,Br];Qa(zr,{mixoutsTo:U});U.noAuto;U.config;const jr=U.library;U.dom;const ft=U.parse;U.findIconDefinition;U.toHtml;const Hr=U.icon;U.layer;U.text;U.counter;function Jt(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),n.push.apply(n,a)}return n}function q(e){for(var t=1;t=0)continue;n[a]=e[a]}return n}function Yr(e,t){if(e==null)return{};var n=Wr(e,t),a,r;if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r=0)&&Object.prototype.propertyIsEnumerable.call(e,a)&&(n[a]=e[a])}return n}var $r=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},Mn={exports:{}};(function(e){(function(t){var n=function(h,o,c){if(!d(o)||x(o)||A(o)||k(o)||u(o))return o;var f,m=0,g=0;if(y(o))for(f=[],g=o.length;m1&&arguments[1]!==void 0?arguments[1]:{},n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};if(typeof e=="string")return e;var a=(e.children||[]).map(function(u){return Dn(u)}),r=Object.keys(e.attributes||{}).reduce(function(u,d){var y=e.attributes[d];switch(d){case"class":u.class=Qr(y);break;case"style":u.style=Kr(y);break;default:u.attrs[d]=y}return u},{attrs:{},class:{},style:{}});n.class;var s=n.style,l=s===void 0?{}:s,i=Yr(n,Xr);return Wn(e.tag,q(q(q({},t),{},{class:r.class,style:q(q({},r.style),l)},r.attrs),i),a)}var _n=!1;try{_n=!0}catch{}function Zr(){if(!_n&&console&&typeof console.error=="function"){var e;(e=console).error.apply(e,arguments)}}function Ke(e,t){return Array.isArray(t)&&t.length>0||!Array.isArray(t)&&t?M({},e,t):{}}function Jr(e){var t,n=(t={"fa-spin":e.spin,"fa-pulse":e.pulse,"fa-fw":e.fixedWidth,"fa-border":e.border,"fa-li":e.listItem,"fa-inverse":e.inverse,"fa-flip":e.flip===!0,"fa-flip-horizontal":e.flip==="horizontal"||e.flip==="both","fa-flip-vertical":e.flip==="vertical"||e.flip==="both"},M(M(M(M(M(M(M(M(M(M(t,"fa-".concat(e.size),e.size!==null),"fa-rotate-".concat(e.rotation),e.rotation!==null),"fa-pull-".concat(e.pull),e.pull!==null),"fa-swap-opacity",e.swapOpacity),"fa-bounce",e.bounce),"fa-shake",e.shake),"fa-beat",e.beat),"fa-fade",e.fade),"fa-beat-fade",e.beatFade),"fa-flash",e.flash),M(M(t,"fa-spin-pulse",e.spinPulse),"fa-spin-reverse",e.spinReverse));return Object.keys(n).map(function(a){return n[a]?a:null}).filter(function(a){return a})}function en(e){if(e&&Me(e)==="object"&&e.prefix&&e.iconName&&e.icon)return e;if(ft.icon)return ft.icon(e);if(e===null)return null;if(Me(e)==="object"&&e.prefix&&e.iconName)return e;if(Array.isArray(e)&&e.length===2)return{prefix:e[0],iconName:e[1]};if(typeof e=="string")return{prefix:"fas",iconName:e}}var ei=Gn({name:"FontAwesomeIcon",props:{border:{type:Boolean,default:!1},fixedWidth:{type:Boolean,default:!1},flip:{type:[Boolean,String],default:!1,validator:function(t){return[!0,!1,"horizontal","vertical","both"].indexOf(t)>-1}},icon:{type:[Object,Array,String],required:!0},mask:{type:[Object,Array,String],default:null},maskId:{type:String,default:null},listItem:{type:Boolean,default:!1},pull:{type:String,default:null,validator:function(t){return["right","left"].indexOf(t)>-1}},pulse:{type:Boolean,default:!1},rotation:{type:[String,Number],default:null,validator:function(t){return[90,180,270].indexOf(Number.parseInt(t,10))>-1}},swapOpacity:{type:Boolean,default:!1},size:{type:String,default:null,validator:function(t){return["2xs","xs","sm","lg","xl","2xl","1x","2x","3x","4x","5x","6x","7x","8x","9x","10x"].indexOf(t)>-1}},spin:{type:Boolean,default:!1},transform:{type:[String,Object],default:null},symbol:{type:[Boolean,String],default:!1},title:{type:String,default:null},titleId:{type:String,default:null},inverse:{type:Boolean,default:!1},bounce:{type:Boolean,default:!1},shake:{type:Boolean,default:!1},beat:{type:Boolean,default:!1},fade:{type:Boolean,default:!1},beatFade:{type:Boolean,default:!1},flash:{type:Boolean,default:!1},spinPulse:{type:Boolean,default:!1},spinReverse:{type:Boolean,default:!1}},setup:function(t,n){var a=n.attrs,r=ne(function(){return en(t.icon)}),s=ne(function(){return Ke("classes",Jr(t))}),l=ne(function(){return Ke("transform",typeof t.transform=="string"?ft.transform(t.transform):t.transform)}),i=ne(function(){return Ke("mask",en(t.mask))}),u=ne(function(){return Hr(r.value,q(q(q(q({},s.value),l.value),i.value),{},{symbol:t.symbol,title:t.title,titleId:t.titleId,maskId:t.maskId}))});qn(u,function(y){if(!y)return Zr("Could not find one or more icon(s)",r.value,i.value)},{immediate:!0});var d=ne(function(){return u.value?Dn(u.value.abstract[0],{},a):null});return function(){return d.value}}});const ti={prefix:"fas",iconName:"skull-crossbones",icon:[448,512,[128369,9760],"f714","M368 128c0 44.4-25.4 83.5-64 106.4l0 21.6c0 17.7-14.3 32-32 32l-96 0c-17.7 0-32-14.3-32-32l0-21.6c-38.6-23-64-62.1-64-106.4C80 57.3 144.5 0 224 0s144 57.3 144 128zM168 176a32 32 0 1 0 0-64 32 32 0 1 0 0 64zm144-32a32 32 0 1 0 -64 0 32 32 0 1 0 64 0zM3.4 273.7c7.9-15.8 27.1-22.2 42.9-14.3L224 348.2l177.7-88.8c15.8-7.9 35-1.5 42.9 14.3s1.5 35-14.3 42.9L295.6 384l134.8 67.4c15.8 7.9 22.2 27.1 14.3 42.9s-27.1 22.2-42.9 14.3L224 419.8 46.3 508.6c-15.8 7.9-35 1.5-42.9-14.3s-1.5-35 14.3-42.9L152.4 384 17.7 316.6C1.9 308.7-4.5 289.5 3.4 273.7z"]};var tn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function ni(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}var Un={exports:{}};(function(e){var t=typeof window<"u"?window:typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope?self:{};/** - * Prism: Lightweight, robust, elegant syntax highlighting - * - * @license MIT - * @author Lea Verou - * @namespace - * @public - */var n=function(a){var r=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,s=0,l={},i={manual:a.Prism&&a.Prism.manual,disableWorkerMessageHandler:a.Prism&&a.Prism.disableWorkerMessageHandler,util:{encode:function o(c){return c instanceof u?new u(c.type,o(c.content),c.alias):Array.isArray(c)?c.map(o):c.replace(/&/g,"&").replace(/"u")return null;if("currentScript"in document)return document.currentScript;try{throw new Error}catch(m){var o=(/at [^(\r\n]*\((.*):[^:]+:[^:]+\)$/i.exec(m.stack)||[])[1];if(o){var c=document.getElementsByTagName("script");for(var f in c)if(c[f].src==o)return c[f]}return null}},isActive:function(o,c,f){for(var m="no-"+c;o;){var g=o.classList;if(g.contains(c))return!0;if(g.contains(m))return!1;o=o.parentElement}return!!f}},languages:{plain:l,plaintext:l,text:l,txt:l,extend:function(o,c){var f=i.util.clone(i.languages[o]);for(var m in c)f[m]=c[m];return f},insertBefore:function(o,c,f,m){m=m||i.languages;var g=m[o],b={};for(var S in g)if(g.hasOwnProperty(S)){if(S==c)for(var v in f)f.hasOwnProperty(v)&&(b[v]=f[v]);f.hasOwnProperty(S)||(b[S]=g[S])}var w=m[o];return m[o]=b,i.languages.DFS(i.languages,function(L,V){V===w&&L!=o&&(this[L]=b)}),b},DFS:function o(c,f,m,g){g=g||{};var b=i.util.objId;for(var S in c)if(c.hasOwnProperty(S)){f.call(c,S,c[S],m||S);var v=c[S],w=i.util.type(v);w==="Object"&&!g[b(v)]?(g[b(v)]=!0,o(v,f,null,g)):w==="Array"&&!g[b(v)]&&(g[b(v)]=!0,o(v,f,S,g))}}},plugins:{},highlightAll:function(o,c){i.highlightAllUnder(document,o,c)},highlightAllUnder:function(o,c,f){var m={callback:f,container:o,selector:'code[class*="language-"], [class*="language-"] code, code[class*="lang-"], [class*="lang-"] code'};i.hooks.run("before-highlightall",m),m.elements=Array.prototype.slice.apply(m.container.querySelectorAll(m.selector)),i.hooks.run("before-all-elements-highlight",m);for(var g=0,b;b=m.elements[g++];)i.highlightElement(b,c===!0,m.callback)},highlightElement:function(o,c,f){var m=i.util.getLanguage(o),g=i.languages[m];i.util.setLanguage(o,m);var b=o.parentElement;b&&b.nodeName.toLowerCase()==="pre"&&i.util.setLanguage(b,m);var S=o.textContent,v={element:o,language:m,grammar:g,code:S};function w(V){v.highlightedCode=V,i.hooks.run("before-insert",v),v.element.innerHTML=v.highlightedCode,i.hooks.run("after-highlight",v),i.hooks.run("complete",v),f&&f.call(v.element)}if(i.hooks.run("before-sanity-check",v),b=v.element.parentElement,b&&b.nodeName.toLowerCase()==="pre"&&!b.hasAttribute("tabindex")&&b.setAttribute("tabindex","0"),!v.code){i.hooks.run("complete",v),f&&f.call(v.element);return}if(i.hooks.run("before-highlight",v),!v.grammar){w(i.util.encode(v.code));return}if(c&&a.Worker){var L=new Worker(i.filename);L.onmessage=function(V){w(V.data)},L.postMessage(JSON.stringify({language:v.language,code:v.code,immediateClose:!0}))}else w(i.highlight(v.code,v.grammar,v.language))},highlight:function(o,c,f){var m={code:o,grammar:c,language:f};if(i.hooks.run("before-tokenize",m),!m.grammar)throw new Error('The language "'+m.language+'" has no grammar.');return m.tokens=i.tokenize(m.code,m.grammar),i.hooks.run("after-tokenize",m),u.stringify(i.util.encode(m.tokens),m.language)},tokenize:function(o,c){var f=c.rest;if(f){for(var m in f)c[m]=f[m];delete c.rest}var g=new x;return A(g,g.head,o),y(o,g,c,g.head,0),N(g)},hooks:{all:{},add:function(o,c){var f=i.hooks.all;f[o]=f[o]||[],f[o].push(c)},run:function(o,c){var f=i.hooks.all[o];if(!(!f||!f.length))for(var m=0,g;g=f[m++];)g(c)}},Token:u};a.Prism=i;function u(o,c,f,m){this.type=o,this.content=c,this.alias=f,this.length=(m||"").length|0}u.stringify=function o(c,f){if(typeof c=="string")return c;if(Array.isArray(c)){var m="";return c.forEach(function(w){m+=o(w,f)}),m}var g={type:c.type,content:o(c.content,f),tag:"span",classes:["token",c.type],attributes:{},language:f},b=c.alias;b&&(Array.isArray(b)?Array.prototype.push.apply(g.classes,b):g.classes.push(b)),i.hooks.run("wrap",g);var S="";for(var v in g.attributes)S+=" "+v+'="'+(g.attributes[v]||"").replace(/"/g,""")+'"';return"<"+g.tag+' class="'+g.classes.join(" ")+'"'+S+">"+g.content+""};function d(o,c,f,m){o.lastIndex=c;var g=o.exec(f);if(g&&m&&g[1]){var b=g[1].length;g.index+=b,g[0]=g[0].slice(b)}return g}function y(o,c,f,m,g,b){for(var S in f)if(!(!f.hasOwnProperty(S)||!f[S])){var v=f[S];v=Array.isArray(v)?v:[v];for(var w=0;w=b.reach);z+=R.value.length,R=R.next){var le=R.value;if(c.length>o.length)return;if(!(le instanceof u)){var Ie=1,B;if(It){if(B=d(Ot,z,o,Tt),!B||B.index>=o.length)break;var Oe=B.index,jn=B.index+B[0].length,X=z;for(X+=R.value.length;Oe>=X;)R=R.next,X+=R.value.length;if(X-=R.value.length,z=X,R.value instanceof u)continue;for(var he=R;he!==c.tail&&(Xb.reach&&(b.reach=je);var ke=R.prev;ze&&(ke=A(c,ke,ze),z+=ze.length),k(c,ke,Ie);var Hn=new u(S,V?i.tokenize(we,V):we,Bn,we);if(R=A(c,ke,Hn),wt&&A(c,R,wt),Ie>1){var He={cause:S+","+w,reach:je};y(o,c,f,R.prev,z,He),b&&He.reach>b.reach&&(b.reach=He.reach)}}}}}}function x(){var o={value:null,prev:null,next:null},c={value:null,prev:o,next:null};o.next=c,this.head=o,this.tail=c,this.length=0}function A(o,c,f){var m=c.next,g={value:f,prev:c,next:m};return c.next=g,m.prev=g,o.length++,g}function k(o,c,f){for(var m=c.next,g=0;g/,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},{pattern:/^(\s*)["']|["']$/,lookbehind:!0}]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},n.languages.markup.tag.inside["attr-value"].inside.entity=n.languages.markup.entity,n.languages.markup.doctype.inside["internal-subset"].inside=n.languages.markup,n.hooks.add("wrap",function(a){a.type==="entity"&&(a.attributes.title=a.content.replace(/&/,"&"))}),Object.defineProperty(n.languages.markup.tag,"addInlined",{value:function(r,s){var l={};l["language-"+s]={pattern:/(^$)/i,lookbehind:!0,inside:n.languages[s]},l.cdata=/^$/i;var i={"included-cdata":{pattern://i,inside:l}};i["language-"+s]={pattern:/[\s\S]+/,inside:n.languages[s]};var u={};u[r]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,function(){return r}),"i"),lookbehind:!0,greedy:!0,inside:i},n.languages.insertBefore("markup","cdata",u)}}),Object.defineProperty(n.languages.markup.tag,"addAttribute",{value:function(a,r){n.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+a+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[r,"language-"+r],inside:n.languages[r]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.xml=n.languages.extend("markup",{}),n.languages.ssml=n.languages.xml,n.languages.atom=n.languages.xml,n.languages.rss=n.languages.xml,function(a){var r=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;a.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:RegExp("@[\\w-](?:"+/[^;{\s"']|\s+(?!\s)/.source+"|"+r.source+")*?"+/(?:;|(?=\s*\{))/.source),inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+r.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+r.source+"$"),alias:"url"}}},selector:{pattern:RegExp(`(^|[{}\\s])[^{}\\s](?:[^{};"'\\s]|\\s+(?![\\s{])|`+r.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:r,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},a.languages.css.atrule.inside.rest=a.languages.css;var s=a.languages.markup;s&&(s.tag.addInlined("style","css"),s.tag.addAttribute("style","css"))}(n),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\s\S]*?(?:\*\/|$)/,lookbehind:!0,greedy:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0,greedy:!0}],string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/(\b(?:class|extends|implements|instanceof|interface|new|trait)\s+|\bcatch\s+\()[\w.\\]+/i,lookbehind:!0,inside:{punctuation:/[.\\]/}},keyword:/\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\b/,boolean:/\b(?:false|true)\b/,function:/\b\w+(?=\()/,number:/\b0x[\da-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?/i,operator:/[<>]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{"class-name":[n.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+(/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source)+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),n.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,n.languages.insertBefore("javascript","keyword",{regex:{pattern:RegExp(/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)/.source+/\//.source+"(?:"+/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}/.source+"|"+/(?:\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.|\[(?:[^[\]\\\r\n]|\\.)*\])*\])*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source+")"+/(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/.source),lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:n.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:n.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:n.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:n.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:n.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),n.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:n.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),n.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),n.languages.markup&&(n.languages.markup.tag.addInlined("script","javascript"),n.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),n.languages.js=n.languages.javascript,function(){if(typeof n>"u"||typeof document>"u")return;Element.prototype.matches||(Element.prototype.matches=Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector);var a="Loading…",r=function(T,E){return"✖ Error "+T+" while fetching file: "+E},s="✖ Error: File does not exist or is empty",l={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"},i="data-src-status",u="loading",d="loaded",y="failed",x="pre[data-src]:not(["+i+'="'+d+'"]):not(['+i+'="'+u+'"])';function A(T,E,h){var o=new XMLHttpRequest;o.open("GET",T,!0),o.onreadystatechange=function(){o.readyState==4&&(o.status<400&&o.responseText?E(o.responseText):o.status>=400?h(r(o.status,o.statusText)):h(s))},o.send(null)}function k(T){var E=/^\s*(\d+)\s*(?:(,)\s*(?:(\d+)\s*)?)?$/.exec(T||"");if(E){var h=Number(E[1]),o=E[2],c=E[3];return o?c?[h,Number(c)]:[h,void 0]:[h,h]}}n.hooks.add("before-highlightall",function(T){T.selector+=", "+x}),n.hooks.add("before-sanity-check",function(T){var E=T.element;if(E.matches(x)){T.code="",E.setAttribute(i,u);var h=E.appendChild(document.createElement("CODE"));h.textContent=a;var o=E.getAttribute("data-src"),c=T.language;if(c==="none"){var f=(/\.(\w+)$/.exec(o)||[,"none"])[1];c=l[f]||f}n.util.setLanguage(h,c),n.util.setLanguage(E,c);var m=n.plugins.autoloader;m&&m.loadLanguages(c),A(o,function(g){E.setAttribute(i,d);var b=k(E.getAttribute("data-range"));if(b){var S=g.split(/\r\n?|\n/g),v=b[0],w=b[1]==null?S.length:b[1];v<0&&(v+=S.length),v=Math.max(0,Math.min(v-1,S.length)),w<0&&(w+=S.length),w=Math.max(0,Math.min(w,S.length)),g=S.slice(v,w).join(` -`),E.hasAttribute("data-start")||E.setAttribute("data-start",String(v+1))}h.textContent=g,n.highlightElement(h)},function(g){E.setAttribute(i,y),h.textContent=g})}}),n.plugins.fileHighlight={highlight:function(E){for(var h=(E||document).querySelectorAll(x),o=0,c;c=h[o++];)n.highlightElement(c)}};var N=!1;n.fileHighlight=function(){N||(console.warn("Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead."),N=!0),n.plugins.fileHighlight.highlight.apply(this,arguments)}}()})(Un);var ai=Un.exports;const nn=ni(ai);Prism.languages.sql={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|(?:--|\/\/|#).*)/,lookbehind:!0},variable:[{pattern:/@(["'`])(?:\\[\s\S]|(?!\1)[^\\])+\1/,greedy:!0},/@[\w.$]+/],string:{pattern:/(^|[^@\\])("|')(?:\\[\s\S]|(?!\2)[^\\]|\2\2)*\2/,greedy:!0,lookbehind:!0},identifier:{pattern:/(^|[^@\\])`(?:\\[\s\S]|[^`\\]|``)*`/,greedy:!0,lookbehind:!0,inside:{punctuation:/^`|`$/}},function:/\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\s*\()/i,keyword:/\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\b/i,boolean:/\b(?:FALSE|NULL|TRUE)\b/i,number:/\b0x[\da-f]+\b|\b\d+(?:\.\d*)?|\B\.\d+\b/i,operator:/[-+*\/=%^~]|&&?|\|\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/};jr.add(ti);const ri={components:{FontAwesomeIcon:ei},setup(){const e=Ce(["ClickHouse","Pinot","Elasticsearch","MongoDB","PostgreSQL"]),t=Ce([{question:"How many hits were driven by advertising?",text:"SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0;"},{question:"What's the total ad impact, hit count, and average screen width?",text:"SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits;"},{question:"How many unique users visited the site?",text:"SELECT COUNT(DISTINCT UserID) FROM hits;"},{question:"What are the top 10 regions by unique user count?",text:"SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC LIMIT 10;"},{question:"What are the top 10 search phrases from Google?",text:"SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10;"}]),n=$n({"Load time":{ClickHouse:"494s",Pinot:"2032s",Elasticsearch:"10072s",MongoDB:"44824s",PostgreSQL:"2342s"},"Data size":{ClickHouse:"13.48 GiB",Pinot:"-",Elasticsearch:"71.37 GiB",MongoDB:"80.46 GiB",PostgreSQL:"72.45 GiB"},"Q1.":{ClickHouse:"0.007s",Pinot:"0.185s",Elasticsearch:"1.667s",MongoDB:"0.398s",PostgreSQL:"254.238s"},"Q2.":{ClickHouse:"0.020s",Pinot:"0.258s",Elasticsearch:"13.991s",MongoDB:"115.775s",PostgreSQL:"263.072s"},"Q3.":{ClickHouse:"0.339s",Pinot:"3.633s",Elasticsearch:"4.413s",MongoDB:"25.618s",PostgreSQL:"42.334s"},"Q4.":{ClickHouse:"0.490s",Pinot:"2.902s",Elasticsearch:"16.050s",MongoDB:"377.012s",PostgreSQL:"321.918s"},"Q5.":{ClickHouse:"0.622s",Pinot:"-",Elasticsearch:"16.459s",MongoDB:"20.130s",PostgreSQL:"267.690s"}}),a=Ce(!1),r=Ce(null),s=(d,y)=>{var h;const x=(h=n[d])==null?void 0:h[y];if(x==="-"||x===""||x===void 0)return"unavailable";const A=parseFloat(x);if(isNaN(A))return"unavailable";const N=Object.values(n[d]||{}).map(o=>parseFloat(o)).filter(o=>!isNaN(o)),T=Math.min(...N);if(A===T)return"best";const E=A/T;return E<2?"best":E<10?"good":E<50?"average":E<250?"below-average":"poor"},l=d=>{r.value=t.value[d],a.value=!0},i=()=>{a.value=!1},u=ne(()=>r.value?nn.highlight(r.value.text,nn.languages.sql,"sql"):"");return{databases:e,queries:t,benchmarkData:n,showModal:a,selectedQuery:r,getColorClass:s,showQueryModal:l,closeModal:i,highlightedSQL:u}}},St=e=>(Zn("data-v-eb04f6a7"),e=e(),Jn(),e),ii={class:"benchmark-table"},si=St(()=>P("th",{class:"query-col"},null,-1)),oi={class:"metadata-row"},li=St(()=>P("td",null,"Load time",-1)),ci={class:"metadata-row"},ui=St(()=>P("td",null,"Data size",-1)),fi={class:"query-cell"},di=["onClick"],mi=["innerHTML"];function gi(e,t,n,a,r,s){const l=Vn("FontAwesomeIcon");return C(),F(K,null,[P("table",ii,[P("thead",null,[P("tr",null,[si,(C(!0),F(K,null,pe(a.databases,i=>(C(),F("th",{key:i},ce(i),1))),128))])]),P("tbody",null,[P("tr",oi,[li,(C(!0),F(K,null,pe(a.databases,i=>(C(),F("td",{key:i,class:qe(a.getColorClass("Load time",i))},ce(a.benchmarkData["Load time"][i]),3))),128))]),P("tr",ci,[ui,(C(!0),F(K,null,pe(a.databases,i=>(C(),F("td",{key:i,class:qe(a.getColorClass("Data size",i))},[a.benchmarkData["Data size"][i]==="-"?(C(),Ge(l,{key:0,icon:["fas","skull-crossbones"],class:"unavailable-icon"})):(C(),F(K,{key:1},[kt(ce(a.benchmarkData["Data size"][i]),1)],64))],2))),128))]),(C(!0),F(K,null,pe(a.queries,(i,u)=>(C(),F("tr",{key:u,class:"query-row"},[P("td",fi,[P("button",{onClick:d=>a.showQueryModal(u),class:"view-query-btn"}," Query "+ce(u+1),9,di)]),(C(!0),F(K,null,pe(a.databases,d=>(C(),F("td",{key:d,class:qe(a.getColorClass(`Q${u+1}.`,d))},[a.benchmarkData[`Q${u+1}.`][d]==="-"?(C(),Ge(l,{key:0,icon:["fas","skull-crossbones"],class:"unavailable-icon"})):(C(),F(K,{key:1},[kt(ce(a.benchmarkData[`Q${u+1}.`][d]),1)],64))],2))),128))]))),128))])]),(C(),Ge(Qn,{to:"body"},[a.showModal?(C(),F("div",{key:0,class:"modal-backdrop",onClick:t[2]||(t[2]=(...i)=>a.closeModal&&a.closeModal(...i))},[P("div",{class:"modal-content",onClick:t[1]||(t[1]=Xn(()=>{},["stop"]))},[P("button",{class:"close-btn",onClick:t[0]||(t[0]=(...i)=>a.closeModal&&a.closeModal(...i))},"×"),P("h3",null,ce(a.selectedQuery.question),1),P("pre",null,[P("code",{class:"language-sql",innerHTML:a.highlightedSQL},null,8,mi)])])])):Kn("",!0)]))],64)}const hi=Yn(ri,[["render",gi],["__scopeId","data-v-eb04f6a7"]]),pi=ta("",43),vi=JSON.parse('{"title":"Load Testing","description":"","frontmatter":{},"headers":[],"relativePath":"load-testing.md","filePath":"load-testing.md"}'),bi={name:"load-testing.md"},Ei=Object.assign(bi,{setup(e){return(t,n)=>(C(),F("div",null,[pi,ea(hi)]))}});export{vi as __pageData,Ei as default}; diff --git a/docs/.vitepress/dist/assets/load-testing.md.frXIo8k7.js b/docs/.vitepress/dist/assets/load-testing.md.frXIo8k7.js new file mode 100644 index 0000000..924feb3 --- /dev/null +++ b/docs/.vitepress/dist/assets/load-testing.md.frXIo8k7.js @@ -0,0 +1 @@ +import{B as n}from"./chunks/theme.H2-gvx_u.js";import{e as o,f as s,g as e,N as t,c as i,o as r}from"./chunks/framework.CE9GIcbU.js";const d=i('

Load Testing

How Much Load Can Our Single Node Handle?

Load testing can play a vital role in understanding the limits an architecture can handle. By simulating real-world usage scenarios, load testing helps identify performance bottlenecks, system limitations, and areas for optimization before they become critical issues in production environments.

We conducted basic load testing on Helios to evaluate its performance under high-volume conditions. Our testing methodology assesses both data ingestion capabilities and query performance under load, simulating a continuous data stream typical of web applications. Our end-to-end tests are designed to closely mirror the performance a Helios user would experience in the web app.

Methodology

Infrastructure Setup

EC2 InstanceLambda ConfigurationKinesis Configuration
• Instance Type: c5.4xlarge• Runtime: Python 3.12• Streams: 1 stream
• vCPUs: 16• Memory: 1024 MB• Shards: 1 shard per stream
• Memory: 32 GB• Timeout: 15 minutes
• Storage: 500gb gp2• Concurrency: 10 instances per shard
• Batch Size: 100
• Batch Window: 1 second

Data Generation and Ingestion

To illustrate the real-world applicability of our load testing, let's revisit our e-commerce platform example from the introduction. In that scenario, an analytics team needed to quickly analyze user behavior data streamed through Amazon Kinesis.

We simulated data ingestion at a rate of 900 events per second for 30 seconds. This rate was chosen to represent a realistic high-volume scenario for a small to medium scale web application. We chose 900 because the max throughput for a Kinesis shard is 1000 requests per second. The Lambda function, triggered by Kinesis, processes these events by decoding them and then inserting them into ClickHouse.

This ingestion rate of 900 events per second closely mimics the high-volume data flow an e-commerce platform might experience during peak shopping hours, capturing events like page views, product interactions, and purchases.

Dataset Description

Our query test dataset consists of 100 million rows and 107 columns of web traffic data, derived from production data. While this is a relatively low volume of data, it allows for quicker test iterations. While our test dataset is generic web traffic data, it shares many similarities with the e-commerce scenario we discussed earlier. For instance, the UserID column could represent unique shoppers, the URL could indicate product pages viewed, and the SearchPhrase could reflect product searches.

The queries we use for testing only include the following columns:

  • UserID: Unique identifier for visitors
  • AdvEngineID: Identifier for advertising engines or campaigns
  • RegionID: Geographical region identifier
  • ResolutionWidth: Screen width of the user's device
  • URL: The webpage URL accessed
  • SearchPhrase: Search terms used to reach the site
  • (101 other columns are present but unused)

Note that we only have to access these 6 columns of a 107 column table for 5 different queries. This highlights the idea that analytical queries tend to only span a few columns or less at a time. These columns allow us to answer questions similar to those our hypothetical e-commerce analytics team might ask. For example, using UserID, URL, and SearchPhrase, we could analyze user journeys across product pages and search behaviors.

The dataset allows for analysis of user behavior, advertising effectiveness, regional performance, and search patterns. We obtained the dataset and selected 5 queries of increasing complexity from ClickBench, an open source benchmarking tool designed for testing the performance of databases using analytical queries.

Measurement Method

We implemented a monitoring system that tracks:

  • The number of records written to the Kinesis stream per second.
  • The time difference between event generation, insertion into Kinesis, and availability for querying in ClickHouse.

Load Testing Objectives

Our primary objectives for these tests were:

',22),l={class:"icon-list"},c=e("span",null,"Maintain consistent ingestion rates and measure end-to-end latency from event generation to availability for querying, aiming to stay under 30 seconds for full event availability.",-1),h=e("span",null,"Evaluate end-to-end query response times under continuous high-volume data insertions _(particularly relevant to our e-commerce example as it simulates the ability to compute real-time metrics like conversion rates while the system continues to ingest new user events.)_",-1),u=e("span",null,"Identify potential bottlenecks in our data processing pipeline.",-1),m=i('

Results

Stream Ingestion and Latency

Latency Measurements: We conducted multiple tests, each processing 27,000 events over 30 seconds. Here are the end-to-end latency results:

  • Test 1: 1.30 seconds
  • Test 2: 1.30 seconds
  • Test 3: 1.29 seconds

These latency measurements represent the end-to-end time from the last event generation to full availability for querying in ClickHouse, including:

  • Kinesis stream ingestion of final events and Lambda processing time
  • Data insertion into Clickhouse
  • Time for the application server to query ClickHouse and return the count of all 27,000 rows and return the result

Query Performance

Query performance tests were conducted on our table of 100 million rows while 900 rows per second were continuously inserted. Note that this is an end-to-end time, which includes request flight times to and from API, not just the query execution times. Each query was ran 5 times synchronously and the results are presented in the following table:

QuerySQLAvg Time (s)Min Time (s)Max Time (s)Median Time (s)Std Dev (s)
How many page views were driven by advertising?SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0;0.150.130.180.150.02
What's the total ad impact, page view count, and average screen width?SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits;0.160.140.180.160.02
How many unique users visited the site?SELECT COUNT(DISTINCT UserID) FROM hits;0.530.510.550.520.02
Which are the top 10 regions by unique user count?SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC LIMIT 10;0.740.720.750.740.01
What are the top 10 search phrases leading to Google-related URLs?SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10;0.990.951.040.980.03

Limitations and Interpretation of Results

Our current testing setup focuses on the ingestion of a single data stream with a relatively small single table dataset of 100 million rows. While derived from production data, this volume may not fully represent the scale of larger production environments. The ClickBench repo provides more detail on how to replicate the results as well as limitations of their dataset here. Additionally, the Lambda functions were warmed up prior to testing to better simulate an already running stream. These factors should be considered when interpreting our results and planning future scaling efforts. In the future, we’d like to test higher ingestion rates, concurrent queries, and join queries.

Our end-to-end results demonstrate Helios' performance under real-world conditions. Data ingestion tests showed consistent low latency, with end-to-end processing times averaging around 1.30 seconds for 27,000 events over 30 seconds. This includes Kinesis ingestion, Lambda processing, ClickHouse insertion, and API flight times. Query performance tests on a c5.4xlarge instance (16 vCPUs, 32 GB RAM) showed efficient handling of various analytical tasks. Four queries, including operations like `COUNT`, `SUM`, `AVG`, and `GROUP BY` on distinct columns, completed in 0.15 to 0.74 seconds. The most complex query, combining `LIKE`, `GROUP BY`, and `ORDER BY` operations, averaged 0.99 seconds.

Notably, only the fifth query presented memory issues on a t2.large instance (2 vCPUs, 8 GB RAM). We hypothesize that the memory-intensive nature of grouping and sorting a large result set from the broad `LIKE '%google%'` condition exceeded the available RAM. Upgrading to the c5.4xlarge instance resolved this issue, highlighting the importance of proper resource allocation for complex analytical queries. These results demonstrate Helios' capability to handle high-volume data ingestion and complex queries efficiently, with the flexibility to scale resources for more demanding operations.

Benchmarking

For comparison of our results against other analytical databases, we utilized the same open-source benchmarking suite. ClickHouse conducted open-source benchmarking tests comparing their database to several others. The evaluation used a dataset of 100 million rows and executed queries typical of ad-hoc analytics and real-time dashboards to assess each database's performance boundaries. As you can see, ClickHouse excelled in most of the queries used compared to other databases. For a comprehensive view of the benchmark results, you can refer to the full report at the provided link.

',15),w=JSON.parse('{"title":"Load Testing","description":"","frontmatter":{},"headers":[],"relativePath":"load-testing.md","filePath":"load-testing.md"}'),p={name:"load-testing.md"},T=Object.assign(p,{setup(g){return(f,b)=>{const a=o("Icon");return r(),s("div",null,[d,e("div",l,[e("p",null,[t(a,{name:"ClockIcon"}),c]),e("p",null,[t(a,{name:"BoltIcon"}),h]),e("p",null,[t(a,{name:"FunnelIcon"}),u])]),m,t(n)])}}});export{w as __pageData,T as default}; diff --git a/docs/.vitepress/dist/assets/load-testing.md.frXIo8k7.lean.js b/docs/.vitepress/dist/assets/load-testing.md.frXIo8k7.lean.js new file mode 100644 index 0000000..cd0fef7 --- /dev/null +++ b/docs/.vitepress/dist/assets/load-testing.md.frXIo8k7.lean.js @@ -0,0 +1 @@ +import{B as n}from"./chunks/theme.H2-gvx_u.js";import{e as o,f as s,g as e,N as t,c as i,o as r}from"./chunks/framework.CE9GIcbU.js";const d=i("",22),l={class:"icon-list"},c=e("span",null,"Maintain consistent ingestion rates and measure end-to-end latency from event generation to availability for querying, aiming to stay under 30 seconds for full event availability.",-1),h=e("span",null,"Evaluate end-to-end query response times under continuous high-volume data insertions _(particularly relevant to our e-commerce example as it simulates the ability to compute real-time metrics like conversion rates while the system continues to ingest new user events.)_",-1),u=e("span",null,"Identify potential bottlenecks in our data processing pipeline.",-1),m=i("",15),w=JSON.parse('{"title":"Load Testing","description":"","frontmatter":{},"headers":[],"relativePath":"load-testing.md","filePath":"load-testing.md"}'),p={name:"load-testing.md"},T=Object.assign(p,{setup(g){return(f,b)=>{const a=o("Icon");return r(),s("div",null,[d,e("div",l,[e("p",null,[t(a,{name:"ClockIcon"}),c]),e("p",null,[t(a,{name:"BoltIcon"}),h]),e("p",null,[t(a,{name:"FunnelIcon"}),u])]),m,t(n)])}}});export{w as __pageData,T as default}; diff --git a/docs/.vitepress/dist/assets/main.md.CFPkIoDn.js b/docs/.vitepress/dist/assets/main.md.BOy_26uh.js similarity index 82% rename from docs/.vitepress/dist/assets/main.md.CFPkIoDn.js rename to docs/.vitepress/dist/assets/main.md.BOy_26uh.js index 6df3ac9..ca08cad 100644 --- a/docs/.vitepress/dist/assets/main.md.CFPkIoDn.js +++ b/docs/.vitepress/dist/assets/main.md.BOy_26uh.js @@ -1 +1 @@ -import{_ as e,c as t,o as a}from"./chunks/framework.BJvAGJ4I.js";const _=JSON.parse('{"title":"Helios Case Study","description":"","frontmatter":{"title":"Helios Case Study"},"headers":[],"relativePath":"main.md","filePath":"main.md"}'),s={name:"main.md"};function n(o,r,i,c,m,d){return a(),t("div")}const l=e(s,[["render",n]]);export{_ as __pageData,l as default}; +import{_ as e,f as t,o as a}from"./chunks/framework.CE9GIcbU.js";const _=JSON.parse('{"title":"Helios Case Study","description":"","frontmatter":{"title":"Helios Case Study"},"headers":[],"relativePath":"main.md","filePath":"main.md"}'),s={name:"main.md"};function n(o,r,i,c,m,d){return a(),t("div")}const l=e(s,[["render",n]]);export{_ as __pageData,l as default}; diff --git a/docs/.vitepress/dist/assets/main.md.CFPkIoDn.lean.js b/docs/.vitepress/dist/assets/main.md.BOy_26uh.lean.js similarity index 82% rename from docs/.vitepress/dist/assets/main.md.CFPkIoDn.lean.js rename to docs/.vitepress/dist/assets/main.md.BOy_26uh.lean.js index 6df3ac9..ca08cad 100644 --- a/docs/.vitepress/dist/assets/main.md.CFPkIoDn.lean.js +++ b/docs/.vitepress/dist/assets/main.md.BOy_26uh.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a}from"./chunks/framework.BJvAGJ4I.js";const _=JSON.parse('{"title":"Helios Case Study","description":"","frontmatter":{"title":"Helios Case Study"},"headers":[],"relativePath":"main.md","filePath":"main.md"}'),s={name:"main.md"};function n(o,r,i,c,m,d){return a(),t("div")}const l=e(s,[["render",n]]);export{_ as __pageData,l as default}; +import{_ as e,f as t,o as a}from"./chunks/framework.CE9GIcbU.js";const _=JSON.parse('{"title":"Helios Case Study","description":"","frontmatter":{"title":"Helios Case Study"},"headers":[],"relativePath":"main.md","filePath":"main.md"}'),s={name:"main.md"};function n(o,r,i,c,m,d){return a(),t("div")}const l=e(s,[["render",n]]);export{_ as __pageData,l as default}; diff --git a/docs/.vitepress/dist/assets/markdown-examples.md.BMRmil5e.lean.js b/docs/.vitepress/dist/assets/markdown-examples.md.BMRmil5e.lean.js deleted file mode 100644 index 67c7517..0000000 --- a/docs/.vitepress/dist/assets/markdown-examples.md.BMRmil5e.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as i,a2 as n}from"./chunks/framework.BJvAGJ4I.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"markdown-examples.md","filePath":"markdown-examples.md"}'),t={name:"markdown-examples.md"},e=n("",19),l=[e];function p(h,k,r,o,d,E){return i(),a("div",null,l)}const m=s(t,[["render",p]]);export{g as __pageData,m as default}; diff --git a/docs/.vitepress/dist/assets/markdown-examples.md.BMRmil5e.js b/docs/.vitepress/dist/assets/markdown-examples.md.BtPgfgKw.js similarity index 80% rename from docs/.vitepress/dist/assets/markdown-examples.md.BMRmil5e.js rename to docs/.vitepress/dist/assets/markdown-examples.md.BtPgfgKw.js index 5280044..9de2130 100644 --- a/docs/.vitepress/dist/assets/markdown-examples.md.BMRmil5e.js +++ b/docs/.vitepress/dist/assets/markdown-examples.md.BtPgfgKw.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as i,a2 as n}from"./chunks/framework.BJvAGJ4I.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"markdown-examples.md","filePath":"markdown-examples.md"}'),t={name:"markdown-examples.md"},e=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

md
\`\`\`js{4}
+import{_ as s,f as a,o as i,c as n}from"./chunks/framework.CE9GIcbU.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"markdown-examples.md","filePath":"markdown-examples.md"}'),t={name:"markdown-examples.md"},e=n(`

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

md
\`\`\`js{4}
 export default {
   data () {
     return {
diff --git a/docs/.vitepress/dist/assets/markdown-examples.md.BtPgfgKw.lean.js b/docs/.vitepress/dist/assets/markdown-examples.md.BtPgfgKw.lean.js
new file mode 100644
index 0000000..e255d7c
--- /dev/null
+++ b/docs/.vitepress/dist/assets/markdown-examples.md.BtPgfgKw.lean.js
@@ -0,0 +1 @@
+import{_ as s,f as a,o as i,c as n}from"./chunks/framework.CE9GIcbU.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"markdown-examples.md","filePath":"markdown-examples.md"}'),t={name:"markdown-examples.md"},e=n("",19),l=[e];function p(h,k,r,o,d,E){return i(),a("div",null,l)}const m=s(t,[["render",p]]);export{g as __pageData,m as default};
diff --git a/docs/.vitepress/dist/assets/node_cluster_opt.CWSwPPFP.png b/docs/.vitepress/dist/assets/node_cluster_opt.CWSwPPFP.png
new file mode 100644
index 0000000..5500af8
Binary files /dev/null and b/docs/.vitepress/dist/assets/node_cluster_opt.CWSwPPFP.png differ
diff --git a/docs/.vitepress/dist/assets/references.md.DT6rkEqj.js b/docs/.vitepress/dist/assets/references.md.DT6rkEqj.js
deleted file mode 100644
index f1f8cc7..0000000
--- a/docs/.vitepress/dist/assets/references.md.DT6rkEqj.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as e,c as a,o as r,a2 as t}from"./chunks/framework.BJvAGJ4I.js";const f=JSON.parse('{"title":"References","description":"","frontmatter":{},"headers":[],"relativePath":"references.md","filePath":"references.md"}'),i={name:"references.md"},o=t('

References

',2),s=[o];function l(n,c,d,h,m,p){return r(),a("div",null,s)}const w=e(i,[["render",l]]);export{f as __pageData,w as default}; diff --git a/docs/.vitepress/dist/assets/references.md.DT6rkEqj.lean.js b/docs/.vitepress/dist/assets/references.md.DT6rkEqj.lean.js deleted file mode 100644 index 481aecc..0000000 --- a/docs/.vitepress/dist/assets/references.md.DT6rkEqj.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as a,o as r,a2 as t}from"./chunks/framework.BJvAGJ4I.js";const f=JSON.parse('{"title":"References","description":"","frontmatter":{},"headers":[],"relativePath":"references.md","filePath":"references.md"}'),i={name:"references.md"},o=t("",2),s=[o];function l(n,c,d,h,m,p){return r(),a("div",null,s)}const w=e(i,[["render",l]]);export{f as __pageData,w as default}; diff --git a/docs/.vitepress/dist/assets/references.md.kd-DA1tE.js b/docs/.vitepress/dist/assets/references.md.kd-DA1tE.js new file mode 100644 index 0000000..d761b0a --- /dev/null +++ b/docs/.vitepress/dist/assets/references.md.kd-DA1tE.js @@ -0,0 +1 @@ +import{_ as e,f as a,o as r,c as t}from"./chunks/framework.CE9GIcbU.js";const u=JSON.parse('{"title":"References","description":"","frontmatter":{},"headers":[],"relativePath":"references.md","filePath":"references.md"}'),i={name:"references.md"},o=t('

References

',2),s=[o];function l(n,c,d,h,m,p){return r(),a("div",null,s)}const w=e(i,[["render",l]]);export{u as __pageData,w as default}; diff --git a/docs/.vitepress/dist/assets/references.md.kd-DA1tE.lean.js b/docs/.vitepress/dist/assets/references.md.kd-DA1tE.lean.js new file mode 100644 index 0000000..12ca055 --- /dev/null +++ b/docs/.vitepress/dist/assets/references.md.kd-DA1tE.lean.js @@ -0,0 +1 @@ +import{_ as e,f as a,o as r,c as t}from"./chunks/framework.CE9GIcbU.js";const u=JSON.parse('{"title":"References","description":"","frontmatter":{},"headers":[],"relativePath":"references.md","filePath":"references.md"}'),i={name:"references.md"},o=t("",2),s=[o];function l(n,c,d,h,m,p){return r(),a("div",null,s)}const w=e(i,[["render",l]]);export{u as __pageData,w as default}; diff --git a/docs/.vitepress/dist/assets/rowbased.CzBh14Lk.png b/docs/.vitepress/dist/assets/rowbased.CzBh14Lk.png new file mode 100644 index 0000000..fb9b414 Binary files /dev/null and b/docs/.vitepress/dist/assets/rowbased.CzBh14Lk.png differ diff --git a/docs/.vitepress/dist/assets/scaling.md.DJd_eJBc.js b/docs/.vitepress/dist/assets/scaling.md.DJd_eJBc.js new file mode 100644 index 0000000..63e2237 --- /dev/null +++ b/docs/.vitepress/dist/assets/scaling.md.DJd_eJBc.js @@ -0,0 +1 @@ +import{_ as o,e as n,f as l,g as e,m as s,N as i,u as a,o as c}from"./chunks/framework.CE9GIcbU.js";const r="/case-study/assets/scaling_components.Dj9Bx6mF.png",H=JSON.parse('{"title":"Scaling Helios","description":"","frontmatter":{},"headers":[],"relativePath":"scaling.md","filePath":"scaling.md"}'),d={name:"scaling.md"},h=e("h1",{id:"scaling-helios",tabindex:"-1"},[s("Scaling Helios "),e("a",{class:"header-anchor",href:"#scaling-helios","aria-label":'Permalink to "Scaling Helios"'},"​")],-1),p=e("p",null,"As noted previously in the “Deploying ClickHouse” section, we decided to follow ClickHouses’ recommendation and host the ClickHouse database on one EC2 instance.",-1),u=e("p",null,"While this design simplifies management and reduces the cost of Clickhouse database hosting by following best practices, it does so at the expense of horizontal scalability and high availability options that a distributed setup might offer.",-1),g=e("p",null,'Vertical scaling, often referred to as "scaling up," involves increasing the resources (such as CPU, RAM, or storage) of existing services.',-1),f=e("p",null,[e("img",{src:r,alt:"Scaling Helios"})],-1),m=e("p",null,"Understanding our system's limits is key to effective scaling. In this next section, we'll walk through our load testing process and system capabilities.",-1);function _(y,v,b,w,k,C){const t=n("TippyWrapper");return c(),l("div",null,[h,p,e("p",null,[s("The chosen architecture presents several important trade-offs. By deploying everything on a single EC2 instance, we significantly reduce deployment complexity, avoiding the intricacies of managing multiple ClickHouse "),i(t,{content:"Per ClickHouse, “A shard is a subset of data. ClickHouse always has at least one shard for your data, so if you do not split the data across multiple servers, your data will be stored in one shard.”"},{default:a(()=>[s("shards")]),_:1}),s(".")]),u,g,e("p",null,[s("The diagram below illustrates three primary vertical scaling options available for the Helios architecture within the AWS ecosystem. These options focus on enhancing the capabilities of our existing EC2 instances, "),i(t,{content:"EBS is AWS's persistent storage for EC2 instances"},{default:a(()=>[s("Elastic Block Store (EBS)")]),_:1}),s(" volumes, and Lambda functions, allowing us to boost processing power and storage capacity without fundamentally altering our system's architecture. By leveraging these vertical scaling techniques, we can efficiently address growing workloads and ensure Helios continues to deliver solid performance as user needs evolve.")]),f,m])}const S=o(d,[["render",_]]);export{H as __pageData,S as default}; diff --git a/docs/.vitepress/dist/assets/scaling.md.DJd_eJBc.lean.js b/docs/.vitepress/dist/assets/scaling.md.DJd_eJBc.lean.js new file mode 100644 index 0000000..63e2237 --- /dev/null +++ b/docs/.vitepress/dist/assets/scaling.md.DJd_eJBc.lean.js @@ -0,0 +1 @@ +import{_ as o,e as n,f as l,g as e,m as s,N as i,u as a,o as c}from"./chunks/framework.CE9GIcbU.js";const r="/case-study/assets/scaling_components.Dj9Bx6mF.png",H=JSON.parse('{"title":"Scaling Helios","description":"","frontmatter":{},"headers":[],"relativePath":"scaling.md","filePath":"scaling.md"}'),d={name:"scaling.md"},h=e("h1",{id:"scaling-helios",tabindex:"-1"},[s("Scaling Helios "),e("a",{class:"header-anchor",href:"#scaling-helios","aria-label":'Permalink to "Scaling Helios"'},"​")],-1),p=e("p",null,"As noted previously in the “Deploying ClickHouse” section, we decided to follow ClickHouses’ recommendation and host the ClickHouse database on one EC2 instance.",-1),u=e("p",null,"While this design simplifies management and reduces the cost of Clickhouse database hosting by following best practices, it does so at the expense of horizontal scalability and high availability options that a distributed setup might offer.",-1),g=e("p",null,'Vertical scaling, often referred to as "scaling up," involves increasing the resources (such as CPU, RAM, or storage) of existing services.',-1),f=e("p",null,[e("img",{src:r,alt:"Scaling Helios"})],-1),m=e("p",null,"Understanding our system's limits is key to effective scaling. In this next section, we'll walk through our load testing process and system capabilities.",-1);function _(y,v,b,w,k,C){const t=n("TippyWrapper");return c(),l("div",null,[h,p,e("p",null,[s("The chosen architecture presents several important trade-offs. By deploying everything on a single EC2 instance, we significantly reduce deployment complexity, avoiding the intricacies of managing multiple ClickHouse "),i(t,{content:"Per ClickHouse, “A shard is a subset of data. ClickHouse always has at least one shard for your data, so if you do not split the data across multiple servers, your data will be stored in one shard.”"},{default:a(()=>[s("shards")]),_:1}),s(".")]),u,g,e("p",null,[s("The diagram below illustrates three primary vertical scaling options available for the Helios architecture within the AWS ecosystem. These options focus on enhancing the capabilities of our existing EC2 instances, "),i(t,{content:"EBS is AWS's persistent storage for EC2 instances"},{default:a(()=>[s("Elastic Block Store (EBS)")]),_:1}),s(" volumes, and Lambda functions, allowing us to boost processing power and storage capacity without fundamentally altering our system's architecture. By leveraging these vertical scaling techniques, we can efficiently address growing workloads and ensure Helios continues to deliver solid performance as user needs evolve.")]),f,m])}const S=o(d,[["render",_]]);export{H as __pageData,S as default}; diff --git a/docs/.vitepress/dist/assets/scaling.md.Dy-hXduC.js b/docs/.vitepress/dist/assets/scaling.md.Dy-hXduC.js deleted file mode 100644 index ebdf74a..0000000 --- a/docs/.vitepress/dist/assets/scaling.md.Dy-hXduC.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as g,c as B,o as C,j as A,a as t}from"./chunks/framework.BJvAGJ4I.js";const D=JSON.parse('{"title":"Scaling Helios","description":"","frontmatter":{},"headers":[],"relativePath":"scaling.md","filePath":"scaling.md"}'),i={name:"scaling.md"},c=A("h1",{id:"scaling-helios",tabindex:"-1"},[t("Scaling Helios "),A("a",{class:"header-anchor",href:"#scaling-helios","aria-label":'Permalink to "Scaling Helios"'},"​")],-1),s=A("p",null,"As noted previously in the “Deploying ClickHouse” section, we decided to follow ClickHouses’ recommendation and host the ClickHouse database on one EC2 instance.",-1),e=A("p",null,"The chosen architecture presents several important trade-offs. By deploying everything on a single EC2 instance, we significantly reduce deployment complexity, avoiding the intricacies of managing multiple ClickHouse shards.",-1),E=A("p",null,"While this design simplifies management and reduces the cost of Clickhouse database hosting by following best practices, it does so at the expense of horizontal scalability and high availability options that a distributed setup might offer.",-1),a=A("p",null,'Vertical scaling, often referred to as "scaling up," involves increasing the resources (such as CPU, RAM, or storage) of existing services.',-1),Q=A("p",null,"The diagram below illustrates three primary vertical scaling options available for the Helios architecture within the AWS ecosystem. These options focus on enhancing the capabilities of our existing EC2 instances, Elastic Block Store (EBS) volumes, and Lambda functions, allowing us to boost processing power and storage capacity without fundamentally altering our system's architecture. By leveraging these vertical scaling techniques, we can efficiently address growing workloads and ensure Helios continues to deliver solid performance as user needs evolve.",-1),o=A("p",null,[A("img",{src:"data:image/png;base64,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",alt:""})],-1),n=A("p",null,"Understanding our system's limits is key to effective scaling. In this next section, we'll walk through our load testing process and system capabilities.",-1),h=[c,s,e,E,a,Q,o,n];function l(I,r,u,w,H,d){return C(),B("div",null,h)}const k=g(i,[["render",l]]);export{D as __pageData,k as default}; diff --git a/docs/.vitepress/dist/assets/scaling.md.Dy-hXduC.lean.js b/docs/.vitepress/dist/assets/scaling.md.Dy-hXduC.lean.js deleted file mode 100644 index ebdf74a..0000000 --- a/docs/.vitepress/dist/assets/scaling.md.Dy-hXduC.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as g,c as B,o as C,j as A,a as t}from"./chunks/framework.BJvAGJ4I.js";const D=JSON.parse('{"title":"Scaling Helios","description":"","frontmatter":{},"headers":[],"relativePath":"scaling.md","filePath":"scaling.md"}'),i={name:"scaling.md"},c=A("h1",{id:"scaling-helios",tabindex:"-1"},[t("Scaling Helios "),A("a",{class:"header-anchor",href:"#scaling-helios","aria-label":'Permalink to "Scaling Helios"'},"​")],-1),s=A("p",null,"As noted previously in the “Deploying ClickHouse” section, we decided to follow ClickHouses’ recommendation and host the ClickHouse database on one EC2 instance.",-1),e=A("p",null,"The chosen architecture presents several important trade-offs. By deploying everything on a single EC2 instance, we significantly reduce deployment complexity, avoiding the intricacies of managing multiple ClickHouse shards.",-1),E=A("p",null,"While this design simplifies management and reduces the cost of Clickhouse database hosting by following best practices, it does so at the expense of horizontal scalability and high availability options that a distributed setup might offer.",-1),a=A("p",null,'Vertical scaling, often referred to as "scaling up," involves increasing the resources (such as CPU, RAM, or storage) of existing services.',-1),Q=A("p",null,"The diagram below illustrates three primary vertical scaling options available for the Helios architecture within the AWS ecosystem. These options focus on enhancing the capabilities of our existing EC2 instances, Elastic Block Store (EBS) volumes, and Lambda functions, allowing us to boost processing power and storage capacity without fundamentally altering our system's architecture. By leveraging these vertical scaling techniques, we can efficiently address growing workloads and ensure Helios continues to deliver solid performance as user needs evolve.",-1),o=A("p",null,[A("img",{src:"data:image/png;base64,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",alt:""})],-1),n=A("p",null,"Understanding our system's limits is key to effective scaling. In this next section, we'll walk through our load testing process and system capabilities.",-1),h=[c,s,e,E,a,Q,o,n];function l(I,r,u,w,H,d){return C(),B("div",null,h)}const k=g(i,[["render",l]]);export{D as __pageData,k as default}; diff --git a/docs/.vitepress/dist/assets/scaling_components.Dj9Bx6mF.png b/docs/.vitepress/dist/assets/scaling_components.Dj9Bx6mF.png new file mode 100644 index 0000000..14f53bd Binary files /dev/null and b/docs/.vitepress/dist/assets/scaling_components.Dj9Bx6mF.png differ diff --git a/docs/.vitepress/dist/assets/stream_efficiency.CiESwD7H.png b/docs/.vitepress/dist/assets/stream_efficiency.CiESwD7H.png new file mode 100644 index 0000000..c83d378 Binary files /dev/null and b/docs/.vitepress/dist/assets/stream_efficiency.CiESwD7H.png differ diff --git a/docs/.vitepress/dist/assets/style.Ch3mEVPQ.css b/docs/.vitepress/dist/assets/style.Ch3mEVPQ.css new file mode 100644 index 0000000..5e20f82 --- /dev/null +++ b/docs/.vitepress/dist/assets/style.Ch3mEVPQ.css @@ -0,0 +1 @@ +.star-animation-container{height:fit-content;min-width:100vw;min-height:100vh;background:radial-gradient(ellipse at bottom,#1b2735,#090a0f)}#stars{width:1px;height:1px;background:transparent;box-shadow:14vw 74vw #fff,97vw 15vw #fff,11vw 10vw #fff,6vw 2vw #fff,10vw 19vw #fff,67vw 39vw #fff,12vw 19vw #fff,92vw 54vw #fff,19vw 12vw #fff,69vw 29vw #fff,86vw 81vw #fff,60vw 87vw #fff,38vw 79vw #fff,12vw 33vw #fff,58vw 19vw #fff,97vw 91vw #fff,59vw 32vw #fff,92vw 76vw #fff,42vw 94vw #fff,39vw 1vw #fff,88vw 72vw #fff,89vw 36vw #fff,22vw 65vw #fff,69vw 95vw #fff,96vw 77vw #fff,42vw 50vw #fff,40vw 54vw #fff,51vw 47vw #fff,3vw 86vw #fff,2vw 67vw #fff,72vw 38vw #fff,26vw 14vw #fff,48vw 5vw #fff,47vw 14vw #fff,86vw 26vw #fff,99vw 57vw #fff,56vw 6vw #fff,11vw 63vw #fff,28vw 61vw #fff,78vw 55vw #fff,63vw 90vw #fff,56vw 72vw #fff,79vw 87vw #fff,55vw 98vw #fff,12vw 16vw #fff,69vw 35vw #fff,40vw 79vw #fff,26vw 69vw #fff,43vw 80vw #fff,31vw 52vw #fff,39vw 84vw #fff,61vw 74vw #fff,86vw 89vw #fff,33vw 12vw #fff,48vw 89vw #fff,1vw 4vw #fff,56vw 35vw #fff,1vw 94vw #fff,69vw 88vw #fff,58vw 25vw #fff,8vw 18vw #fff,6vw 100vw #fff,70vw 8vw #fff,89vw 55vw #fff,27vw 66vw #fff,60vw 96vw #fff,29vw 39vw #fff,78vw 88vw #fff,66vw 8vw #fff,10vw 18vw #fff,87vw 57vw #fff,30vw 30vw #fff,1vw 51vw #fff,79vw 92vw #fff,11vw 59vw #fff,85vw 30vw #fff,97vw 22vw #fff,68vw 14vw #fff,28vw 100vw #fff,28vw 95vw #fff,97vw 66vw #fff,91vw 50vw #fff,58vw 93vw #fff,14vw 20vw #fff,98vw 6vw #fff,1vw 99vw #fff,96vw 61vw #fff,6vw 96vw #fff,68vw 65vw #fff,50vw 67vw #fff,47vw 84vw #fff,62vw 7vw #fff,54vw 7vw #fff,46vw 31vw #fff,16vw 12vw #fff,65vw 27vw #fff,82vw 73vw #fff,43vw 98vw #fff,76vw 9vw #fff,31vw 80vw #fff,93vw 49vw #fff,77vw 24vw #fff,17vw 47vw #fff,25vw 15vw #fff,33vw 63vw #fff,98vw 94vw #fff,93vw 70vw #fff,91vw 90vw #fff,33vw 24vw #fff,56vw 52vw #fff,59vw 27vw #fff,30vw 68vw #fff,66vw 81vw #fff,13vw 42vw #fff,8vw 12vw #fff,1vw 30vw #fff,50vw 7vw #fff,13vw 56vw #fff,1vw 39vw #fff,11vw 45vw #fff,88vw 1vw #fff,56vw 41vw #fff,99vw 26vw #fff,80vw 35vw #fff,32vw 70vw #fff,79vw 99vw #fff,32vw 36vw #fff,6vw 24vw #fff,45vw 98vw #fff,90vw 99vw #fff,71vw 84vw #fff,66vw 8vw #fff,57vw 95vw #fff,96vw 48vw #fff,59vw 100vw #fff,39vw 17vw #fff,64vw 90vw #fff,93vw 46vw #fff,86vw 72vw #fff,24vw 41vw #fff,10vw 45vw #fff,10vw 59vw #fff,81vw 39vw #fff,81vw 100vw #fff,83vw 31vw #fff,3vw 90vw #fff,65vw 17vw #fff,96vw 45vw #fff,23vw 72vw #fff,75vw 35vw #fff,80vw 43vw #fff,1vw 19vw #fff,38vw 32vw #fff,59vw 90vw #fff,48vw 8vw #fff,78vw 5vw #fff,31vw 80vw #fff,81vw 98vw #fff,39vw 63vw #fff,30vw 34vw #fff,98vw 74vw #fff,31vw 66vw #fff,64vw 93vw #fff,61vw 92vw #fff,39vw 92vw #fff,18vw 65vw #fff,41vw 45vw #fff,82vw 88vw #fff,39vw 11vw #fff,86vw 82vw #fff,86vw 10vw #fff,75vw 57vw #fff,98vw 76vw #fff,95vw 8vw #fff,100vw 6vw #fff,65vw 38vw #fff,76vw 82vw #fff,19vw 29vw #fff,23vw 31vw #fff,41vw 73vw #fff,39vw 8vw #fff,74vw 15vw #fff,6vw 25vw #fff,39vw 91vw #fff,67vw 50vw #fff,69vw 37vw #fff,30vw 93vw #fff,57vw 15vw #fff,99vw 49vw #fff,98vw 1vw #fff,6vw 46vw #fff,51vw 77vw #fff,67vw 66vw #fff,10vw 75vw #fff,11vw 65vw #fff,15vw 65vw #fff,54vw 95vw #fff,89vw 30vw #fff,86vw 12vw #fff,21vw 65vw #fff,62vw 77vw #fff,50vw 67vw #fff,56vw 60vw #fff,3vw 47vw #fff,51vw 60vw #fff,64vw 98vw #fff,46vw 91vw #fff,99vw 1vw #fff,79vw 43vw #fff,37vw 65vw #fff,67vw 48vw #fff,19vw 2vw #fff,99vw 66vw #fff,1vw 56vw #fff,58vw 20vw #fff,93vw 99vw #fff,19vw 50vw #fff,38vw 29vw #fff,68vw 39vw #fff,42vw 74vw #fff,92vw 62vw #fff,77vw 27vw #fff,22vw 54vw #fff,60vw 26vw #fff,75vw 55vw #fff,53vw 35vw #fff,60vw 69vw #fff,25vw 97vw #fff,31vw 63vw #fff,85vw 17vw #fff,84vw 16vw #fff,45vw 26vw #fff,57vw 65vw #fff,47vw 34vw #fff,64vw 52vw #fff,14vw 94vw #fff,95vw 92vw #fff,68vw 77vw #fff,39vw 65vw #fff,35vw 90vw #fff,96vw 30vw #fff,12vw 77vw #fff,66vw 79vw #fff,23vw 85vw #fff,86vw 32vw #fff,95vw 45vw #fff,95vw 33vw #fff,22vw 11vw #fff,62vw 68vw #fff,15vw 87vw #fff,16vw 62vw #fff,72vw 65vw #fff,87vw 72vw #fff,86vw 35vw #fff,16vw 31vw #fff,97vw 12vw #fff,15vw 71vw #fff,93vw 93vw #fff,63vw 18vw #fff,14vw 29vw #fff,2vw 95vw #fff,69vw 30vw #fff,33vw 66vw #fff,24vw 47vw #fff,24vw 34vw #fff,70vw 75vw #fff,44vw 29vw #fff,91vw 87vw #fff,6vw 82vw #fff,68vw 47vw #fff,3vw 98vw #fff,64vw 76vw #fff,83vw 58vw #fff,43vw 57vw #fff,48vw 57vw #fff,19vw 61vw #fff,85vw 33vw #fff,30vw 12vw #fff,88vw 56vw #fff,4vw 74vw #fff,52vw 49vw #fff,3vw 77vw #fff,39vw 58vw #fff,19vw 74vw #fff,17vw 50vw #fff,14vw 31vw #fff,45vw 16vw #fff,46vw 32vw #fff,32vw 64vw #fff,47vw 70vw #fff,95vw 80vw #fff,24vw 95vw #fff,58vw 47vw #fff,56vw 95vw #fff,23vw 18vw #fff,26vw 75vw #fff,16vw 19vw #fff,75vw 33vw #fff,9vw 53vw #fff,75vw 68vw #fff,78vw 96vw #fff,90vw 37vw #fff,3vw 77vw #fff,56vw 67vw #fff,33vw 80vw #fff,84vw 49vw #fff,89vw 15vw #fff,93vw 53vw #fff,99vw 36vw #fff,4vw 23vw #fff,99vw 83vw #fff,54vw 3vw #fff,95vw 26vw #fff,39vw 96vw #fff,36vw 4vw #fff,49vw 48vw #fff,52vw 48vw #fff,80vw 99vw #fff,79vw 5vw #fff,17vw 48vw #fff,94vw 30vw #fff,42vw 90vw #fff,53vw 14vw #fff,27vw 67vw #fff,46vw 60vw #fff,80vw 57vw #fff,50vw 42vw #fff,74vw 61vw #fff,38vw 40vw #fff,73vw 9vw #fff,93vw 7vw #fff,44vw 65vw #fff,38vw 49vw #fff,89vw 78vw #fff,17vw 44vw #fff,100vw 36vw #fff,40vw 66vw #fff,41vw 55vw #fff,78vw 57vw #fff,18vw 33vw #fff,61vw 15vw #fff,52vw 52vw #fff,18vw 29vw #fff,3vw 35vw #fff,80vw 43vw #fff,23vw 43vw #fff,22vw 32vw #fff,15vw 83vw #fff,13vw 42vw #fff,75vw 1vw #fff,83vw 80vw #fff,91vw 28vw #fff,44vw 80vw #fff,45vw 9vw #fff,11vw 76vw #fff,52vw 42vw #fff,34vw 70vw #fff,21vw 29vw #fff,78vw 1vw #fff,82vw 63vw #fff,29vw 11vw #fff,54vw 79vw #fff,92vw 31vw #fff,47vw 33vw #fff,83vw 75vw #fff,21vw 8vw #fff,87vw 90vw #fff,28vw 38vw #fff,82vw 38vw #fff,26vw 77vw #fff,75vw 80vw #fff,47vw 49vw #fff,94vw 98vw #fff,29vw 9vw #fff,92vw 25vw #fff,27vw 46vw #fff,44vw 20vw #fff,60vw 12vw #fff,59vw 26vw #fff,95vw 54vw #fff,92vw 81vw #fff,9vw 69vw #fff,95vw 37vw #fff,74vw 64vw #fff,30vw 3vw #fff,79vw 54vw #fff,21vw 2vw #fff,78vw 35vw #fff,24vw 71vw #fff,1vw 98vw #fff,64vw 56vw #fff,9vw 59vw #fff,44vw 32vw #fff,8vw 99vw #fff,17vw 98vw #fff,3vw 58vw #fff,28vw 55vw #fff,23vw 9vw #fff,24vw 75vw #fff,100vw 17vw #fff,68vw 32vw #fff,77vw 40vw #fff,37vw 89vw #fff,17vw 76vw #fff,8vw 58vw #fff,68vw 78vw #fff,80vw 5vw #fff,25vw 43vw #fff,13vw 2vw #fff,95vw 4vw #fff,61vw 66vw #fff,5vw 51vw #fff,83vw 6vw #fff,73vw 2vw #fff,16vw 55vw #fff,62vw 80vw #fff,14vw 79vw #fff,21vw 57vw #fff,38vw 85vw #fff,73vw 51vw #fff,24vw 69vw #fff,51vw 61vw #fff,99vw 36vw #fff,52vw 94vw #fff,44vw 70vw #fff,35vw 87vw #fff,51vw 84vw #fff,52vw 78vw #fff,37vw 12vw #fff,64vw 91vw #fff,88vw 10vw #fff,77vw 8vw #fff,52vw 16vw #fff,50vw 68vw #fff,30vw 28vw #fff,1vw 39vw #fff,8vw 96vw #fff,12vw 85vw #fff,6vw 78vw #fff,63vw 71vw #fff,28vw 36vw #fff,52vw 18vw #fff,3vw 18vw #fff,91vw 78vw #fff,63vw 13vw #fff,70vw 54vw #fff,33vw 49vw #fff,5vw 59vw #fff,5vw 14vw #fff,79vw 32vw #fff,50vw 45vw #fff,15vw 91vw #fff,8vw 72vw #fff,29vw 97vw #fff,7vw 31vw #fff,65vw 87vw #fff,33vw 92vw #fff,29vw 73vw #fff,15vw 66vw #fff,5vw 51vw #fff,21vw 76vw #fff,76vw 56vw #fff,6vw 81vw #fff,53vw 36vw #fff,82vw 56vw #fff,50vw 98vw #fff,35vw 31vw #fff,100vw 52vw #fff,53vw 10vw #fff,16vw 58vw #fff,90vw 95vw #fff,45vw 84vw #fff,16vw 3vw #fff,41vw 78vw #fff,69vw 14vw #fff,48vw 72vw #fff,33vw 9vw #fff,80vw 66vw #fff,92vw 18vw #fff,65vw 40vw #fff,14vw 12vw #fff,35vw 93vw #fff,77vw 36vw #fff,75vw 23vw #fff,96vw 3vw #fff,58vw 9vw #fff,16vw 77vw #fff,49vw 32vw #fff,64vw 18vw #fff,81vw 46vw #fff,54vw 2vw #fff,10vw 69vw #fff,63vw 37vw #fff,23vw 54vw #fff,44vw 74vw #fff,16vw 39vw #fff,60vw 2vw #fff,89vw 64vw #fff,21vw 95vw #fff,9vw 51vw #fff,54vw 81vw #fff,18vw 51vw #fff,52vw 64vw #fff,69vw 50vw #fff,5vw 61vw #fff,99vw 8vw #fff,91vw 82vw #fff,5vw 11vw #fff,50vw 41vw #fff,73vw 6vw #fff,69vw 37vw #fff,90vw 18vw #fff,39vw 55vw #fff,5vw 27vw #fff,36vw 11vw #fff,5vw 10vw #fff,28vw 77vw #fff,51vw 29vw #fff,11vw 35vw #fff,3vw 59vw #fff,38vw 19vw #fff,73vw 72vw #fff,80vw 80vw #fff,35vw 92vw #fff,50vw 39vw #fff,35vw 1vw #fff,49vw 75vw #fff,30vw 5vw #fff,85vw 43vw #fff,45vw 38vw #fff,55vw 51vw #fff,49vw 37vw #fff,100vw 89vw #fff,15vw 59vw #fff,42vw 47vw #fff,15vw 67vw #fff,100vw 17vw #fff,69vw 8vw #fff,27vw 22vw #fff,81vw 28vw #fff,55vw 73vw #fff,17vw 10vw #fff,3vw 42vw #fff,19vw 5vw #fff,81vw 1vw #fff,8vw 86vw #fff,11vw 11vw #fff,28vw 37vw #fff,66vw 99vw #fff,7vw 2vw #fff,2vw 26vw #fff,15vw 7vw #fff,29vw 5vw #fff,63vw 34vw #fff,2vw 73vw #fff,42vw 99vw #fff,98vw 81vw #fff,44vw 59vw #fff,16vw 72vw #fff,36vw 54vw #fff,79vw 30vw #fff,10vw 36vw #fff,75vw 97vw #fff,83vw 65vw #fff,99vw 14vw #fff,36vw 59vw #fff,8vw 67vw #fff,81vw 99vw #fff,33vw 81vw #fff,11vw 68vw #fff,35vw 48vw #fff,74vw 40vw #fff,28vw 52vw #fff,38vw 64vw #fff,79vw 67vw #fff,20vw 20vw #fff,86vw 81vw #fff,64vw 13vw #fff,93vw 90vw #fff,82vw 35vw #fff,40vw 56vw #fff,4vw 35vw #fff,95vw 64vw #fff,69vw 23vw #fff,7vw 92vw #fff,66vw 27vw #fff,77vw 13vw #fff,18vw 97vw #fff,49vw 68vw #fff,96vw 90vw #fff,10vw 36vw #fff,63vw 59vw #fff,83vw 57vw #fff,30vw 47vw #fff,65vw 100vw #fff,54vw 46vw #fff,47vw 18vw #fff,12vw 61vw #fff,98vw 30vw #fff,84vw 28vw #fff,69vw 49vw #fff,45vw 13vw #fff,6vw 88vw #fff,47vw 96vw #fff,9vw 43vw #fff,83vw 17vw #fff,2vw 6vw #fff,70vw 13vw #fff,51vw 5vw #fff,83vw 38vw #fff,29vw 36vw #fff,79vw 25vw #fff,24vw 8vw #fff,42vw 23vw #fff,52vw 26vw #fff,73vw 52vw #fff,80vw 42vw #fff,32vw 36vw #fff,48vw 95vw #fff,18vw 22vw #fff,74vw 69vw #fff,39vw 79vw #fff,33vw 14vw #fff,99vw 32vw #fff,91vw 94vw #fff,79vw 18vw #fff,15vw 12vw #fff,89vw 38vw #fff,73vw 71vw #fff,4vw 44vw #fff,41vw 87vw #fff,87vw 5vw #fff,13vw 98vw #fff,14vw 77vw #fff,34vw 82vw #fff,20vw 90vw #fff,93vw 15vw #fff,5vw 49vw #fff,1vw 78vw #fff,36vw 21vw #fff,79vw 69vw #fff,47vw 33vw #fff,22vw 92vw #fff,44vw 20vw #fff,88vw 92vw #fff,18vw 100vw #fff,54vw 72vw #fff,64vw 85vw #fff,16vw 52vw #fff,94vw 7vw #fff,98vw 93vw #fff,16vw 50vw #fff,91vw 71vw #fff,48vw 35vw #fff,89vw 54vw #fff,61vw 29vw #fff,11vw 71vw #fff,96vw 60vw #fff,8vw 72vw #fff,82vw 61vw #fff,69vw 77vw #fff,48vw 95vw #fff,17vw 6vw #fff,3vw 86vw #fff,21vw 8vw #fff,40vw 50vw #fff,58vw 31vw #fff,21vw 91vw #fff,22vw 92vw #fff,72vw 7vw #fff,73vw 15vw #fff,92vw 91vw #fff,2vw 97vw #fff,44vw 5vw #fff,46vw 47vw #fff,90vw 2vw #fff,74vw 84vw #fff,34vw 34vw #fff,27vw 44vw #fff,87vw 89vw #fff,12vw 4vw #fff,98vw 43vw #fff,100vw 61vw #fff,63vw 62vw #fff,83vw 73vw #fff,48vw 48vw #fff,100vw 14vw #fff,64vw 32vw #fff,64vw 54vw #fff,95vw 67vw #fff,78vw 97vw #fff,52vw 80vw #fff,35vw 89vw #fff,88vw 95vw #fff,41vw 35vw #fff,100vw 46vw #fff,15vw 17vw #fff,78vw 95vw #fff,84vw 66vw #fff,10vw 35vw #fff;animation:animStar 50s linear infinite}#stars:after{content:" ";position:absolute;top:100vh;width:1px;height:1px;background:transparent;box-shadow:14vw 74vw #fff,97vw 15vw #fff,11vw 10vw #fff,6vw 2vw #fff,10vw 19vw #fff,67vw 39vw #fff,12vw 19vw #fff,92vw 54vw #fff,19vw 12vw #fff,69vw 29vw #fff,86vw 81vw #fff,60vw 87vw #fff,38vw 79vw #fff,12vw 33vw #fff,58vw 19vw #fff,97vw 91vw #fff,59vw 32vw #fff,92vw 76vw #fff,42vw 94vw #fff,39vw 1vw #fff,88vw 72vw #fff,89vw 36vw #fff,22vw 65vw #fff,69vw 95vw #fff,96vw 77vw #fff,42vw 50vw #fff,40vw 54vw #fff,51vw 47vw #fff,3vw 86vw #fff,2vw 67vw #fff,72vw 38vw #fff,26vw 14vw #fff,48vw 5vw #fff,47vw 14vw #fff,86vw 26vw #fff,99vw 57vw #fff,56vw 6vw #fff,11vw 63vw #fff,28vw 61vw #fff,78vw 55vw #fff,63vw 90vw #fff,56vw 72vw #fff,79vw 87vw #fff,55vw 98vw #fff,12vw 16vw #fff,69vw 35vw #fff,40vw 79vw #fff,26vw 69vw #fff,43vw 80vw #fff,31vw 52vw #fff,39vw 84vw #fff,61vw 74vw #fff,86vw 89vw #fff,33vw 12vw #fff,48vw 89vw #fff,1vw 4vw #fff,56vw 35vw #fff,1vw 94vw #fff,69vw 88vw #fff,58vw 25vw #fff,8vw 18vw #fff,6vw 100vw #fff,70vw 8vw #fff,89vw 55vw #fff,27vw 66vw #fff,60vw 96vw #fff,29vw 39vw #fff,78vw 88vw #fff,66vw 8vw #fff,10vw 18vw #fff,87vw 57vw #fff,30vw 30vw #fff,1vw 51vw #fff,79vw 92vw #fff,11vw 59vw #fff,85vw 30vw #fff,97vw 22vw #fff,68vw 14vw #fff,28vw 100vw #fff,28vw 95vw #fff,97vw 66vw #fff,91vw 50vw #fff,58vw 93vw #fff,14vw 20vw #fff,98vw 6vw #fff,1vw 99vw #fff,96vw 61vw #fff,6vw 96vw #fff,68vw 65vw #fff,50vw 67vw #fff,47vw 84vw #fff,62vw 7vw #fff,54vw 7vw #fff,46vw 31vw #fff,16vw 12vw #fff,65vw 27vw #fff,82vw 73vw #fff,43vw 98vw #fff,76vw 9vw #fff,31vw 80vw #fff,93vw 49vw #fff,77vw 24vw #fff,17vw 47vw #fff,25vw 15vw #fff,33vw 63vw #fff,98vw 94vw #fff,93vw 70vw #fff,91vw 90vw #fff,33vw 24vw #fff,56vw 52vw #fff,59vw 27vw #fff,30vw 68vw #fff,66vw 81vw #fff,13vw 42vw #fff,8vw 12vw #fff,1vw 30vw #fff,50vw 7vw #fff,13vw 56vw #fff,1vw 39vw #fff,11vw 45vw #fff,88vw 1vw #fff,56vw 41vw #fff,99vw 26vw #fff,80vw 35vw #fff,32vw 70vw #fff,79vw 99vw #fff,32vw 36vw #fff,6vw 24vw #fff,45vw 98vw #fff,90vw 99vw #fff,71vw 84vw #fff,66vw 8vw #fff,57vw 95vw #fff,96vw 48vw #fff,59vw 100vw #fff,39vw 17vw #fff,64vw 90vw #fff,93vw 46vw #fff,86vw 72vw #fff,24vw 41vw #fff,10vw 45vw #fff,10vw 59vw #fff,81vw 39vw #fff,81vw 100vw #fff,83vw 31vw #fff,3vw 90vw #fff,65vw 17vw #fff,96vw 45vw #fff,23vw 72vw #fff,75vw 35vw #fff,80vw 43vw #fff,1vw 19vw #fff,38vw 32vw #fff,59vw 90vw #fff,48vw 8vw #fff,78vw 5vw #fff,31vw 80vw #fff,81vw 98vw #fff,39vw 63vw #fff,30vw 34vw #fff,98vw 74vw #fff,31vw 66vw #fff,64vw 93vw #fff,61vw 92vw #fff,39vw 92vw #fff,18vw 65vw #fff,41vw 45vw #fff,82vw 88vw #fff,39vw 11vw #fff,86vw 82vw #fff,86vw 10vw #fff,75vw 57vw #fff,98vw 76vw #fff,95vw 8vw #fff,100vw 6vw #fff,65vw 38vw #fff,76vw 82vw #fff,19vw 29vw #fff,23vw 31vw #fff,41vw 73vw #fff,39vw 8vw #fff,74vw 15vw #fff,6vw 25vw #fff,39vw 91vw #fff,67vw 50vw #fff,69vw 37vw #fff,30vw 93vw #fff,57vw 15vw #fff,99vw 49vw #fff,98vw 1vw #fff,6vw 46vw #fff,51vw 77vw #fff,67vw 66vw #fff,10vw 75vw #fff,11vw 65vw #fff,15vw 65vw #fff,54vw 95vw #fff,89vw 30vw #fff,86vw 12vw #fff,21vw 65vw #fff,62vw 77vw #fff,50vw 67vw #fff,56vw 60vw #fff,3vw 47vw #fff,51vw 60vw #fff,64vw 98vw #fff,46vw 91vw #fff,99vw 1vw #fff,79vw 43vw #fff,37vw 65vw #fff,67vw 48vw #fff,19vw 2vw #fff,99vw 66vw #fff,1vw 56vw #fff,58vw 20vw #fff,93vw 99vw #fff,19vw 50vw #fff,38vw 29vw #fff,68vw 39vw #fff,42vw 74vw #fff,92vw 62vw #fff,77vw 27vw #fff,22vw 54vw #fff,60vw 26vw #fff,75vw 55vw #fff,53vw 35vw #fff,60vw 69vw #fff,25vw 97vw #fff,31vw 63vw #fff,85vw 17vw #fff,84vw 16vw #fff,45vw 26vw #fff,57vw 65vw #fff,47vw 34vw #fff,64vw 52vw #fff,14vw 94vw #fff,95vw 92vw #fff,68vw 77vw #fff,39vw 65vw #fff,35vw 90vw #fff,96vw 30vw #fff,12vw 77vw #fff,66vw 79vw #fff,23vw 85vw #fff,86vw 32vw #fff,95vw 45vw #fff,95vw 33vw #fff,22vw 11vw #fff,62vw 68vw #fff,15vw 87vw #fff,16vw 62vw #fff,72vw 65vw #fff,87vw 72vw #fff,86vw 35vw #fff,16vw 31vw #fff,97vw 12vw #fff,15vw 71vw #fff,93vw 93vw #fff,63vw 18vw #fff,14vw 29vw #fff,2vw 95vw #fff,69vw 30vw #fff,33vw 66vw #fff,24vw 47vw #fff,24vw 34vw #fff,70vw 75vw #fff,44vw 29vw #fff,91vw 87vw #fff,6vw 82vw #fff,68vw 47vw #fff,3vw 98vw #fff,64vw 76vw #fff,83vw 58vw #fff,43vw 57vw #fff,48vw 57vw #fff,19vw 61vw #fff,85vw 33vw #fff,30vw 12vw #fff,88vw 56vw #fff,4vw 74vw #fff,52vw 49vw #fff,3vw 77vw #fff,39vw 58vw #fff,19vw 74vw #fff,17vw 50vw #fff,14vw 31vw #fff,45vw 16vw #fff,46vw 32vw #fff,32vw 64vw #fff,47vw 70vw #fff,95vw 80vw #fff,24vw 95vw #fff,58vw 47vw #fff,56vw 95vw #fff,23vw 18vw #fff,26vw 75vw #fff,16vw 19vw #fff,75vw 33vw #fff,9vw 53vw #fff,75vw 68vw #fff,78vw 96vw #fff,90vw 37vw #fff,3vw 77vw #fff,56vw 67vw #fff,33vw 80vw #fff,84vw 49vw #fff,89vw 15vw #fff,93vw 53vw #fff,99vw 36vw #fff,4vw 23vw #fff,99vw 83vw #fff,54vw 3vw #fff,95vw 26vw #fff,39vw 96vw #fff,36vw 4vw #fff,49vw 48vw #fff,52vw 48vw #fff,80vw 99vw #fff,79vw 5vw #fff,17vw 48vw #fff,94vw 30vw #fff,42vw 90vw #fff,53vw 14vw #fff,27vw 67vw #fff,46vw 60vw #fff,80vw 57vw #fff,50vw 42vw #fff,74vw 61vw #fff,38vw 40vw #fff,73vw 9vw #fff,93vw 7vw #fff,44vw 65vw #fff,38vw 49vw #fff,89vw 78vw #fff,17vw 44vw #fff,100vw 36vw #fff,40vw 66vw #fff,41vw 55vw #fff,78vw 57vw #fff,18vw 33vw #fff,61vw 15vw #fff,52vw 52vw #fff,18vw 29vw #fff,3vw 35vw #fff,80vw 43vw #fff,23vw 43vw #fff,22vw 32vw #fff,15vw 83vw #fff,13vw 42vw #fff,75vw 1vw #fff,83vw 80vw #fff,91vw 28vw #fff,44vw 80vw #fff,45vw 9vw #fff,11vw 76vw #fff,52vw 42vw #fff,34vw 70vw #fff,21vw 29vw #fff,78vw 1vw #fff,82vw 63vw #fff,29vw 11vw #fff,54vw 79vw #fff,92vw 31vw #fff,47vw 33vw #fff,83vw 75vw #fff,21vw 8vw #fff,87vw 90vw #fff,28vw 38vw #fff,82vw 38vw #fff,26vw 77vw #fff,75vw 80vw #fff,47vw 49vw #fff,94vw 98vw #fff,29vw 9vw #fff,92vw 25vw #fff,27vw 46vw #fff,44vw 20vw #fff,60vw 12vw #fff,59vw 26vw #fff,95vw 54vw #fff,92vw 81vw #fff,9vw 69vw #fff,95vw 37vw #fff,74vw 64vw #fff,30vw 3vw #fff,79vw 54vw #fff,21vw 2vw #fff,78vw 35vw #fff,24vw 71vw #fff,1vw 98vw #fff,64vw 56vw #fff,9vw 59vw #fff,44vw 32vw #fff,8vw 99vw #fff,17vw 98vw #fff,3vw 58vw #fff,28vw 55vw #fff,23vw 9vw #fff,24vw 75vw #fff,100vw 17vw #fff,68vw 32vw #fff,77vw 40vw #fff,37vw 89vw #fff,17vw 76vw #fff,8vw 58vw #fff,68vw 78vw #fff,80vw 5vw #fff,25vw 43vw #fff,13vw 2vw #fff,95vw 4vw #fff,61vw 66vw #fff,5vw 51vw #fff,83vw 6vw #fff,73vw 2vw #fff,16vw 55vw #fff,62vw 80vw #fff,14vw 79vw #fff,21vw 57vw #fff,38vw 85vw #fff,73vw 51vw #fff,24vw 69vw #fff,51vw 61vw #fff,99vw 36vw #fff,52vw 94vw #fff,44vw 70vw #fff,35vw 87vw #fff,51vw 84vw #fff,52vw 78vw #fff,37vw 12vw #fff,64vw 91vw #fff,88vw 10vw #fff,77vw 8vw #fff,52vw 16vw #fff,50vw 68vw #fff,30vw 28vw #fff,1vw 39vw #fff,8vw 96vw #fff,12vw 85vw #fff,6vw 78vw #fff,63vw 71vw #fff,28vw 36vw #fff,52vw 18vw #fff,3vw 18vw #fff,91vw 78vw #fff,63vw 13vw #fff,70vw 54vw #fff,33vw 49vw #fff,5vw 59vw #fff,5vw 14vw #fff,79vw 32vw #fff,50vw 45vw #fff,15vw 91vw #fff,8vw 72vw #fff,29vw 97vw #fff,7vw 31vw #fff,65vw 87vw #fff,33vw 92vw #fff,29vw 73vw #fff,15vw 66vw #fff,5vw 51vw #fff,21vw 76vw #fff,76vw 56vw #fff,6vw 81vw #fff,53vw 36vw #fff,82vw 56vw #fff,50vw 98vw #fff,35vw 31vw #fff,100vw 52vw #fff,53vw 10vw #fff,16vw 58vw #fff,90vw 95vw #fff,45vw 84vw #fff,16vw 3vw #fff,41vw 78vw #fff,69vw 14vw #fff,48vw 72vw #fff,33vw 9vw #fff,80vw 66vw #fff,92vw 18vw #fff,65vw 40vw #fff,14vw 12vw #fff,35vw 93vw #fff,77vw 36vw #fff,75vw 23vw #fff,96vw 3vw #fff,58vw 9vw #fff,16vw 77vw #fff,49vw 32vw #fff,64vw 18vw #fff,81vw 46vw #fff,54vw 2vw #fff,10vw 69vw #fff,63vw 37vw #fff,23vw 54vw #fff,44vw 74vw #fff,16vw 39vw #fff,60vw 2vw #fff,89vw 64vw #fff,21vw 95vw #fff,9vw 51vw #fff,54vw 81vw #fff,18vw 51vw #fff,52vw 64vw #fff,69vw 50vw #fff,5vw 61vw #fff,99vw 8vw #fff,91vw 82vw #fff,5vw 11vw #fff,50vw 41vw #fff,73vw 6vw #fff,69vw 37vw #fff,90vw 18vw #fff,39vw 55vw #fff,5vw 27vw #fff,36vw 11vw #fff,5vw 10vw #fff,28vw 77vw #fff,51vw 29vw #fff,11vw 35vw #fff,3vw 59vw #fff,38vw 19vw #fff,73vw 72vw #fff,80vw 80vw #fff,35vw 92vw #fff,50vw 39vw #fff,35vw 1vw #fff,49vw 75vw #fff,30vw 5vw #fff,85vw 43vw #fff,45vw 38vw #fff,55vw 51vw #fff,49vw 37vw #fff,100vw 89vw #fff,15vw 59vw #fff,42vw 47vw #fff,15vw 67vw #fff,100vw 17vw #fff,69vw 8vw #fff,27vw 22vw #fff,81vw 28vw #fff,55vw 73vw #fff,17vw 10vw #fff,3vw 42vw #fff,19vw 5vw #fff,81vw 1vw #fff,8vw 86vw #fff,11vw 11vw #fff,28vw 37vw #fff,66vw 99vw #fff,7vw 2vw #fff,2vw 26vw #fff,15vw 7vw #fff,29vw 5vw #fff,63vw 34vw #fff,2vw 73vw #fff,42vw 99vw #fff,98vw 81vw #fff,44vw 59vw #fff,16vw 72vw #fff,36vw 54vw #fff,79vw 30vw #fff,10vw 36vw #fff,75vw 97vw #fff,83vw 65vw #fff,99vw 14vw #fff,36vw 59vw #fff,8vw 67vw #fff,81vw 99vw #fff,33vw 81vw #fff,11vw 68vw #fff,35vw 48vw #fff,74vw 40vw #fff,28vw 52vw #fff,38vw 64vw #fff,79vw 67vw #fff,20vw 20vw #fff,86vw 81vw #fff,64vw 13vw #fff,93vw 90vw #fff,82vw 35vw #fff,40vw 56vw #fff,4vw 35vw #fff,95vw 64vw #fff,69vw 23vw #fff,7vw 92vw #fff,66vw 27vw #fff,77vw 13vw #fff,18vw 97vw #fff,49vw 68vw #fff,96vw 90vw #fff,10vw 36vw #fff,63vw 59vw #fff,83vw 57vw #fff,30vw 47vw #fff,65vw 100vw #fff,54vw 46vw #fff,47vw 18vw #fff,12vw 61vw #fff,98vw 30vw #fff,84vw 28vw #fff,69vw 49vw #fff,45vw 13vw #fff,6vw 88vw #fff,47vw 96vw #fff,9vw 43vw #fff,83vw 17vw #fff,2vw 6vw #fff,70vw 13vw #fff,51vw 5vw #fff,83vw 38vw #fff,29vw 36vw #fff,79vw 25vw #fff,24vw 8vw #fff,42vw 23vw #fff,52vw 26vw #fff,73vw 52vw #fff,80vw 42vw #fff,32vw 36vw #fff,48vw 95vw #fff,18vw 22vw #fff,74vw 69vw #fff,39vw 79vw #fff,33vw 14vw #fff,99vw 32vw #fff,91vw 94vw #fff,79vw 18vw #fff,15vw 12vw #fff,89vw 38vw #fff,73vw 71vw #fff,4vw 44vw #fff,41vw 87vw #fff,87vw 5vw #fff,13vw 98vw #fff,14vw 77vw #fff,34vw 82vw #fff,20vw 90vw #fff,93vw 15vw #fff,5vw 49vw #fff,1vw 78vw #fff,36vw 21vw #fff,79vw 69vw #fff,47vw 33vw #fff,22vw 92vw #fff,44vw 20vw #fff,88vw 92vw #fff,18vw 100vw #fff,54vw 72vw #fff,64vw 85vw #fff,16vw 52vw #fff,94vw 7vw #fff,98vw 93vw #fff,16vw 50vw #fff,91vw 71vw #fff,48vw 35vw #fff,89vw 54vw #fff,61vw 29vw #fff,11vw 71vw #fff,96vw 60vw #fff,8vw 72vw #fff,82vw 61vw #fff,69vw 77vw #fff,48vw 95vw #fff,17vw 6vw #fff,3vw 86vw #fff,21vw 8vw #fff,40vw 50vw #fff,58vw 31vw #fff,21vw 91vw #fff,22vw 92vw #fff,72vw 7vw #fff,73vw 15vw #fff,92vw 91vw #fff,2vw 97vw #fff,44vw 5vw #fff,46vw 47vw #fff,90vw 2vw #fff,74vw 84vw #fff,34vw 34vw #fff,27vw 44vw #fff,87vw 89vw #fff,12vw 4vw #fff,98vw 43vw #fff,100vw 61vw #fff,63vw 62vw #fff,83vw 73vw #fff,48vw 48vw #fff,100vw 14vw #fff,64vw 32vw #fff,64vw 54vw #fff,95vw 67vw #fff,78vw 97vw #fff,52vw 80vw #fff,35vw 89vw #fff,88vw 95vw #fff,41vw 35vw #fff,100vw 46vw #fff,15vw 17vw #fff,78vw 95vw #fff,84vw 66vw #fff,10vw 35vw #fff}#stars2{width:2px;height:2px;background:transparent;box-shadow:98vw 47vw #fff,22vw 58vw #fff,43vw 50vw #fff,58vw 50vw #fff,46vw 96vw #fff,95vw 68vw #fff,62vw 71vw #fff,19vw 48vw #fff,67vw 45vw #fff,37vw 28vw #fff,59vw 6vw #fff,96vw 9vw #fff,95vw 99vw #fff,27vw 21vw #fff,37vw 61vw #fff,28vw 77vw #fff,89vw 4vw #fff,43vw 50vw #fff,11vw 5vw #fff,87vw 45vw #fff,38vw 73vw #fff,82vw 46vw #fff,80vw 75vw #fff,31vw 88vw #fff,53vw 85vw #fff,11vw 53vw #fff,30vw 76vw #fff,26vw 66vw #fff,23vw 41vw #fff,18vw 34vw #fff,65vw 5vw #fff,49vw 42vw #fff,12vw 68vw #fff,85vw 47vw #fff,1vw 88vw #fff,81vw 16vw #fff,12vw 82vw #fff,69vw 43vw #fff,69vw 17vw #fff,5vw 18vw #fff,30vw 92vw #fff,15vw 13vw #fff,99vw 47vw #fff,16vw 14vw #fff,50vw 28vw #fff,69vw 92vw #fff,4vw 91vw #fff,63vw 45vw #fff,21vw 22vw #fff,58vw 17vw #fff,2vw 25vw #fff,36vw 72vw #fff,75vw 80vw #fff,63vw 29vw #fff,37vw 93vw #fff,64vw 95vw #fff,28vw 65vw #fff,21vw 58vw #fff,15vw 84vw #fff,41vw 62vw #fff,94vw 41vw #fff,38vw 26vw #fff,11vw 75vw #fff,64vw 58vw #fff,22vw 100vw #fff,33vw 72vw #fff,55vw 68vw #fff,16vw 65vw #fff,77vw 73vw #fff,84vw 87vw #fff,77vw 1vw #fff,28vw 75vw #fff,58vw 44vw #fff,2vw 16vw #fff,47vw 68vw #fff,1vw 77vw #fff,38vw 3vw #fff,100vw 20vw #fff,20vw 60vw #fff,13vw 57vw #fff,74vw 25vw #fff,33vw 61vw #fff,90vw 4vw #fff,97vw 84vw #fff,29vw 27vw #fff,61vw 45vw #fff,84vw 29vw #fff,8vw 71vw #fff,6vw 39vw #fff,83vw 86vw #fff,76vw 80vw #fff,46vw 48vw #fff,39vw 90vw #fff,75vw 96vw #fff,49vw 35vw #fff,85vw 10vw #fff,56vw 78vw #fff,95vw 72vw #fff,54vw 99vw #fff,55vw 53vw #fff,3vw 84vw #fff,24vw 81vw #fff,87vw 6vw #fff,96vw 83vw #fff,11vw 91vw #fff,61vw 24vw #fff,8vw 51vw #fff,95vw 39vw #fff,98vw 62vw #fff,46vw 56vw #fff,93vw 40vw #fff,81vw 92vw #fff,39vw 90vw #fff,13vw 42vw #fff,50vw 98vw #fff,30vw 62vw #fff,65vw 20vw #fff,66vw 14vw #fff,36vw 32vw #fff,9vw 72vw #fff,52vw 18vw #fff,77vw 96vw #fff,99vw 7vw #fff,13vw 58vw #fff,84vw 1vw #fff,55vw 96vw #fff,51vw 13vw #fff,62vw 63vw #fff,80vw 7vw #fff,37vw 44vw #fff,95vw 39vw #fff,84vw 38vw #fff,54vw 59vw #fff,75vw 94vw #fff,58vw 55vw #fff,70vw 93vw #fff,57vw 28vw #fff,14vw 67vw #fff,20vw 95vw #fff,97vw 80vw #fff,88vw 34vw #fff,69vw 41vw #fff,17vw 78vw #fff,34vw 57vw #fff,50vw 5vw #fff,4vw 32vw #fff,50vw 51vw #fff,55vw 28vw #fff,89vw 4vw #fff,61vw 50vw #fff,9vw 64vw #fff,67vw 98vw #fff,77vw 93vw #fff,69vw 64vw #fff,63vw 87vw #fff,21vw 32vw #fff,63vw 99vw #fff,8vw 77vw #fff,29vw 51vw #fff,45vw 64vw #fff,52vw 10vw #fff,60vw 49vw #fff,33vw 78vw #fff,53vw 53vw #fff,93vw 93vw #fff,52vw 48vw #fff,97vw 92vw #fff,41vw 21vw #fff,62vw 77vw #fff,25vw 6vw #fff,40vw 51vw #fff,24vw 50vw #fff,13vw 9vw #fff,71vw 43vw #fff,87vw 52vw #fff,4vw 74vw #fff,60vw 85vw #fff,65vw 66vw #fff,93vw 97vw #fff,24vw 67vw #fff,68vw 69vw #fff,57vw 8vw #fff,67vw 65vw #fff,13vw 63vw #fff,97vw 74vw #fff,72vw 86vw #fff,87vw 25vw #fff,42vw 11vw #fff,80vw 93vw #fff,78vw 40vw #fff,10vw 97vw #fff,89vw 62vw #fff,6vw 22vw #fff,50vw 92vw #fff,67vw 54vw #fff,3vw 9vw #fff,85vw 81vw #fff,45vw 90vw #fff,86vw 22vw #fff,6vw 7vw #fff;animation:animStar 100s linear infinite}#stars2:after{content:" ";position:absolute;top:100vh;width:2px;height:2px;background:transparent;box-shadow:98vw 47vw #fff,22vw 58vw #fff,43vw 50vw #fff,58vw 50vw #fff,46vw 96vw #fff,95vw 68vw #fff,62vw 71vw #fff,19vw 48vw #fff,67vw 45vw #fff,37vw 28vw #fff,59vw 6vw #fff,96vw 9vw #fff,95vw 99vw #fff,27vw 21vw #fff,37vw 61vw #fff,28vw 77vw #fff,89vw 4vw #fff,43vw 50vw #fff,11vw 5vw #fff,87vw 45vw #fff,38vw 73vw #fff,82vw 46vw #fff,80vw 75vw #fff,31vw 88vw #fff,53vw 85vw #fff,11vw 53vw #fff,30vw 76vw #fff,26vw 66vw #fff,23vw 41vw #fff,18vw 34vw #fff,65vw 5vw #fff,49vw 42vw #fff,12vw 68vw #fff,85vw 47vw #fff,1vw 88vw #fff,81vw 16vw #fff,12vw 82vw #fff,69vw 43vw #fff,69vw 17vw #fff,5vw 18vw #fff,30vw 92vw #fff,15vw 13vw #fff,99vw 47vw #fff,16vw 14vw #fff,50vw 28vw #fff,69vw 92vw #fff,4vw 91vw #fff,63vw 45vw #fff,21vw 22vw #fff,58vw 17vw #fff,2vw 25vw #fff,36vw 72vw #fff,75vw 80vw #fff,63vw 29vw #fff,37vw 93vw #fff,64vw 95vw #fff,28vw 65vw #fff,21vw 58vw #fff,15vw 84vw #fff,41vw 62vw #fff,94vw 41vw #fff,38vw 26vw #fff,11vw 75vw #fff,64vw 58vw #fff,22vw 100vw #fff,33vw 72vw #fff,55vw 68vw #fff,16vw 65vw #fff,77vw 73vw #fff,84vw 87vw #fff,77vw 1vw #fff,28vw 75vw #fff,58vw 44vw #fff,2vw 16vw #fff,47vw 68vw #fff,1vw 77vw #fff,38vw 3vw #fff,100vw 20vw #fff,20vw 60vw #fff,13vw 57vw #fff,74vw 25vw #fff,33vw 61vw #fff,90vw 4vw #fff,97vw 84vw #fff,29vw 27vw #fff,61vw 45vw #fff,84vw 29vw #fff,8vw 71vw #fff,6vw 39vw #fff,83vw 86vw #fff,76vw 80vw #fff,46vw 48vw #fff,39vw 90vw #fff,75vw 96vw #fff,49vw 35vw #fff,85vw 10vw #fff,56vw 78vw #fff,95vw 72vw #fff,54vw 99vw #fff,55vw 53vw #fff,3vw 84vw #fff,24vw 81vw #fff,87vw 6vw #fff,96vw 83vw #fff,11vw 91vw #fff,61vw 24vw #fff,8vw 51vw #fff,95vw 39vw #fff,98vw 62vw #fff,46vw 56vw #fff,93vw 40vw #fff,81vw 92vw #fff,39vw 90vw #fff,13vw 42vw #fff,50vw 98vw #fff,30vw 62vw #fff,65vw 20vw #fff,66vw 14vw #fff,36vw 32vw #fff,9vw 72vw #fff,52vw 18vw #fff,77vw 96vw #fff,99vw 7vw #fff,13vw 58vw #fff,84vw 1vw #fff,55vw 96vw #fff,51vw 13vw #fff,62vw 63vw #fff,80vw 7vw #fff,37vw 44vw #fff,95vw 39vw #fff,84vw 38vw #fff,54vw 59vw #fff,75vw 94vw #fff,58vw 55vw #fff,70vw 93vw #fff,57vw 28vw #fff,14vw 67vw #fff,20vw 95vw #fff,97vw 80vw #fff,88vw 34vw #fff,69vw 41vw #fff,17vw 78vw #fff,34vw 57vw #fff,50vw 5vw #fff,4vw 32vw #fff,50vw 51vw #fff,55vw 28vw #fff,89vw 4vw #fff,61vw 50vw #fff,9vw 64vw #fff,67vw 98vw #fff,77vw 93vw #fff,69vw 64vw #fff,63vw 87vw #fff,21vw 32vw #fff,63vw 99vw #fff,8vw 77vw #fff,29vw 51vw #fff,45vw 64vw #fff,52vw 10vw #fff,60vw 49vw #fff,33vw 78vw #fff,53vw 53vw #fff,93vw 93vw #fff,52vw 48vw #fff,97vw 92vw #fff,41vw 21vw #fff,62vw 77vw #fff,25vw 6vw #fff,40vw 51vw #fff,24vw 50vw #fff,13vw 9vw #fff,71vw 43vw #fff,87vw 52vw #fff,4vw 74vw #fff,60vw 85vw #fff,65vw 66vw #fff,93vw 97vw #fff,24vw 67vw #fff,68vw 69vw #fff,57vw 8vw #fff,67vw 65vw #fff,13vw 63vw #fff,97vw 74vw #fff,72vw 86vw #fff,87vw 25vw #fff,42vw 11vw #fff,80vw 93vw #fff,78vw 40vw #fff,10vw 97vw #fff,89vw 62vw #fff,6vw 22vw #fff,50vw 92vw #fff,67vw 54vw #fff,3vw 9vw #fff,85vw 81vw #fff,45vw 90vw #fff,86vw 22vw #fff,6vw 7vw #fff}#stars3{width:3px;height:3px;background:transparent;box-shadow:87vw 1vw #fff,82vw 36vw #fff,49vw 98vw #fff,39vw 50vw #fff,32vw 90vw #fff,13vw 53vw #fff,73vw 85vw #fff,74vw 63vw #fff,33vw 35vw #fff,38vw 11vw #fff,60vw 67vw #fff,57vw 98vw #fff,7vw 52vw #fff,45vw 38vw #fff,15vw 17vw #fff,74vw 22vw #fff,9vw 9vw #fff,61vw 14vw #fff,36vw 48vw #fff,92vw 46vw #fff,1vw 90vw #fff,43vw 73vw #fff,44vw 26vw #fff,17vw 2vw #fff,3vw 6vw #fff,3vw 98vw #fff,30vw 13vw #fff,86vw 78vw #fff,14vw 40vw #fff,85vw 71vw #fff,55vw 92vw #fff,77vw 67vw #fff,78vw 76vw #fff,7vw 57vw #fff,40vw 65vw #fff,51vw 31vw #fff,40vw 6vw #fff,67vw 63vw #fff,30vw 35vw #fff,70vw 9vw #fff,8vw 39vw #fff,96vw 15vw #fff,32vw 71vw #fff,93vw 67vw #fff,39vw 44vw #fff,36vw 18vw #fff,77vw 97vw #fff,84vw 23vw #fff,23vw 5vw #fff,81vw 29vw #fff,85vw 30vw #fff,83vw 7vw #fff,64vw 48vw #fff,23vw 6vw #fff,91vw 69vw #fff,52vw 65vw #fff,87vw 62vw #fff,55vw 83vw #fff,13vw 98vw #fff,79vw 57vw #fff,68vw 16vw #fff,31vw 60vw #fff,8vw 88vw #fff,65vw 95vw #fff,14vw 48vw #fff,52vw 27vw #fff,52vw 9vw #fff,60vw 40vw #fff,42vw 66vw #fff,75vw 14vw #fff,14vw 62vw #fff,62vw 95vw #fff,64vw 66vw #fff,98vw 94vw #fff,38vw 74vw #fff,50vw 71vw #fff,63vw 4vw #fff,48vw 5vw #fff,35vw 52vw #fff,86vw 74vw #fff,59vw 37vw #fff,69vw 56vw #fff,53vw 50vw #fff,5vw 23vw #fff,9vw 58vw #fff,37vw 27vw #fff,87vw 83vw #fff,29vw 77vw #fff,29vw 2vw #fff,74vw 18vw #fff,25vw 35vw #fff,90vw 6vw #fff,34vw 64vw #fff,17vw 14vw #fff,77vw 95vw #fff,37vw 4vw #fff,6vw 1vw #fff,2vw 68vw #fff,21vw 15vw #fff,9vw 5vw #fff;animation:animStar 150s linear infinite}#stars3:after{content:" ";position:absolute;top:100vh;width:3px;height:3px;background:transparent;box-shadow:87vw 1vw #fff,82vw 36vw #fff,49vw 98vw #fff,39vw 50vw #fff,32vw 90vw #fff,13vw 53vw #fff,73vw 85vw #fff,74vw 63vw #fff,33vw 35vw #fff,38vw 11vw #fff,60vw 67vw #fff,57vw 98vw #fff,7vw 52vw #fff,45vw 38vw #fff,15vw 17vw #fff,74vw 22vw #fff,9vw 9vw #fff,61vw 14vw #fff,36vw 48vw #fff,92vw 46vw #fff,1vw 90vw #fff,43vw 73vw #fff,44vw 26vw #fff,17vw 2vw #fff,3vw 6vw #fff,3vw 98vw #fff,30vw 13vw #fff,86vw 78vw #fff,14vw 40vw #fff,85vw 71vw #fff,55vw 92vw #fff,77vw 67vw #fff,78vw 76vw #fff,7vw 57vw #fff,40vw 65vw #fff,51vw 31vw #fff,40vw 6vw #fff,67vw 63vw #fff,30vw 35vw #fff,70vw 9vw #fff,8vw 39vw #fff,96vw 15vw #fff,32vw 71vw #fff,93vw 67vw #fff,39vw 44vw #fff,36vw 18vw #fff,77vw 97vw #fff,84vw 23vw #fff,23vw 5vw #fff,81vw 29vw #fff,85vw 30vw #fff,83vw 7vw #fff,64vw 48vw #fff,23vw 6vw #fff,91vw 69vw #fff,52vw 65vw #fff,87vw 62vw #fff,55vw 83vw #fff,13vw 98vw #fff,79vw 57vw #fff,68vw 16vw #fff,31vw 60vw #fff,8vw 88vw #fff,65vw 95vw #fff,14vw 48vw #fff,52vw 27vw #fff,52vw 9vw #fff,60vw 40vw #fff,42vw 66vw #fff,75vw 14vw #fff,14vw 62vw #fff,62vw 95vw #fff,64vw 66vw #fff,98vw 94vw #fff,38vw 74vw #fff,50vw 71vw #fff,63vw 4vw #fff,48vw 5vw #fff,35vw 52vw #fff,86vw 74vw #fff,59vw 37vw #fff,69vw 56vw #fff,53vw 50vw #fff,5vw 23vw #fff,9vw 58vw #fff,37vw 27vw #fff,87vw 83vw #fff,29vw 77vw #fff,29vw 2vw #fff,74vw 18vw #fff,25vw 35vw #fff,90vw 6vw #fff,34vw 64vw #fff,17vw 14vw #fff,77vw 95vw #fff,37vw 4vw #fff,6vw 1vw #fff,2vw 68vw #fff,21vw 15vw #fff,9vw 5vw #fff}@keyframes animStar{0%{transform:translateY(0)}to{transform:translateY(-3000px)}}.cursor-element,.cursor-element *{pointer-events:none}.cursor-element{position:fixed;width:8px;height:8px;border-radius:100%;z-index:2000}.cursor-element *{mix-blend-mode:difference}.cursor-element span{position:fixed;border-radius:100%;background:transparent;opacity:.3;width:40px;height:40px;display:block;z-index:2000;transition:.62s;transform:translate(-50%) translateY(-50%);transform-origin:top left;transition-timing-function:cubic-bezier(.19,.58,.58,.93)}.cursor-glow{position:fixed;pointer-events:none;width:100px;height:100px;background:#fff059;border-radius:100%;z-index:1000;opacity:0;transform:scale(1) translate(-50%) translateY(-50%);transform-origin:top left;filter:blur(32px);transition:all .64s,opacity .6s,width .68s,height .68s,left 0s,top 0s;transition-timing-function:cubic-bezier(.19,.58,.58,.93);transition-delay:.2s}.cursor-glow.active{filter:blur(22px);z-index:1000;width:32px;height:32px;opacity:.5;transition-delay:0s;transition:all 1s,opacity 1.24s,width .6s,height .6s,left 0s,top 0s}.cursor-glow.active+span{background:#fff059;z-index:1000;opacity:.82;transform:scale(.42) translate(-50%) translateY(-50%);box-shadow:0 0 24px #0202021a;transition:.32s ease;transition-delay:.08s}@keyframes hue-rotate{0%{filter:hue-rotate(0)}to{filter:hue-rotate(360deg)}}.body[data-v-2c984628]{font-family:Lato,Arial,sans-serif;background-color:#1a202c;color:#fff;margin:0;padding:0;min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden}header[data-v-2c984628]{display:flex;justify-content:space-between;align-items:center;padding:1rem;max-width:1500px;margin:0 auto;width:100%;position:relative;z-index:1}.logo[data-v-2c984628]{font-size:1.5rem;font-weight:700}nav ul[data-v-2c984628]{display:flex;list-style-type:none;padding:0}nav ul li[data-v-2c984628]{margin-left:1rem}nav ul li a[data-v-2c984628]{color:#f5f5f5;text-decoration:none;font-size:1.3rem}nav ul li a[data-v-2c984628]:hover{color:#c4b5fd}main[data-v-2c984628]{flex-grow:1;padding:0 3rem 3rem;max-width:1500px;margin:0 auto;width:100%;position:relative;z-index:1}.hero[data-v-2c984628]{position:relative;text-align:center;padding:10rem 0}@keyframes complexPulse-2c984628{0%{opacity:.7;transform:scale(1) rotate(0) skew(0)}25%{opacity:.8;transform:scale(1.02) rotate(.5deg) skew(.5deg,.5deg)}50%{opacity:.9;transform:scale(1.05) rotate(1deg) skew(1deg,1deg)}75%{opacity:.8;transform:scale(1.02) rotate(.5deg) skew(.5deg,.5deg)}to{opacity:.7;transform:scale(1) rotate(0) skew(0)}}.hero[data-v-2c984628]:before{content:"";position:absolute;top:-90px;left:-20%;width:130%;height:1000px;background-image:url(/case-study/home/blur1.png);background-position:center;background-size:cover;z-index:-1;pointer-events:none;animation:complexPulse-2c984628 12s ease-in-out infinite;transform-origin:center}.kinesis .content[data-v-2c984628]{position:relative}.kinesis .content[data-v-2c984628]:before{content:"";position:absolute;top:-90px;left:0;width:100%;height:300px;background-image:url(/case-study/home/blur2.png);background-position:center;background-size:cover;z-index:-1}.kinesis-img[data-v-2c984628]{max-width:27%}section.content-section.cli[data-v-2c984628]{margin-bottom:10rem}.cli .content[data-v-2c984628]{position:relative}.cli .content[data-v-2c984628]:before{content:"";position:absolute;top:-140px;left:60px;width:100%;height:500px;background-image:url(/case-study/home/blur3.png);background-position:center;background-size:cover;z-index:-1}main[data-v-2c984628]:after{content:"";position:absolute;top:800px;left:15px;width:98%;aspect-ratio:1/1;background-image:url(/case-study/home/trail.png);background-position:center;background-size:contain;background-repeat:no-repeat;z-index:-1}.hero h1[data-v-2c984628]{font-size:clamp(2.5rem,.3125rem + 3.75vw,6rem);font-weight:600;margin-bottom:1rem;opacity:var(--sds-size-stroke-border);padding:2.5rem;background:#365eab;background:linear-gradient(to top,#365eab,#f7b655 64%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.hero p[data-v-2c984628]{font-size:1.25rem;margin-bottom:2rem}button[data-v-2c984628]{background-color:#7c3aed;color:#fff;border:none;padding:.5rem 1rem;font-size:1rem;font-weight:700;border-radius:.25rem;cursor:pointer}button[data-v-2c984628]:hover{background-color:#1d132e}.content-section[data-v-2c984628]{display:flex;flex-direction:column;align-items:center;margin-bottom:6rem;gap:2rem}.content-section .content[data-v-2c984628],.content-section .image[data-v-2c984628]{width:100%}.content-section h2[data-v-2c984628],.additional-features h2[data-v-2c984628]{font-size:1.5rem;margin-bottom:1rem}.additional-features[data-v-2c984628]{margin-inline:20%;margin-bottom:10rem}.features-container[data-v-2c984628]{display:flex;flex-direction:column;gap:3rem}.feature[data-v-2c984628]{background-color:#2d3748;padding:1.5rem;border-radius:.5rem;margin-bottom:1rem}.feature h3[data-v-2c984628]{font-size:1.25rem;margin-bottom:.5rem}footer[data-v-2c984628]{background-color:#2d3748;padding:2.5rem 0;text-align:center;position:relative;z-index:1}@media (min-width: 1024px){.content-section[data-v-2c984628]{flex-direction:row;gap:7rem}.content-section[data-v-2c984628]:nth-child(odd){flex-direction:row-reverse}.content-section .content[data-v-2c984628],.content-section .image[data-v-2c984628]{width:50%}.features-container[data-v-2c984628]{flex-direction:row;justify-content:space-between;gap:17%}.feature[data-v-2c984628]{width:48%}.additional-features[data-v-2c984628]{padding-inline:11rem;margin-inline:0}.image.sqlconsole[data-v-2c984628]{max-width:45%}}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px white;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.deleted{color:#905}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#690}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:#9a6e3a;background:#ffffff80}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.function,.token.class-name{color:#dd4a68}.token.regex,.token.important,.token.variable{color:#e90}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.benchmark-table[data-v-cc929558]{width:100%;border-collapse:separate;border-spacing:0;font-size:14px;border-radius:8px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.benchmark-table th[data-v-cc929558],.benchmark-table td[data-v-cc929558]{padding:12px;text-align:center;border:none}.benchmark-table th[data-v-cc929558]:first-child,.benchmark-table td[data-v-cc929558]:first-child{width:15%;border-right:1px solid rgba(0,0,0,.1)}.benchmark-table th[data-v-cc929558]:not(:first-child),.benchmark-table td[data-v-cc929558]:not(:first-child){width:17%}.benchmark-table th[data-v-cc929558]{border-bottom:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1);background-color:#e2e8f0;color:#1f2937;font-weight:600}.benchmark-table th[data-v-cc929558]:last-child{border-right:none}.question-col[data-v-cc929558],.query-col[data-v-cc929558]{width:15%}.metadata-row td[data-v-cc929558]:first-child{font-weight:600;text-align:left}.query-row[data-v-cc929558]:nth-child(2n){background-color:#f9fafb}.question-cell[data-v-cc929558],.query-cell[data-v-cc929558]{text-align:left}.view-query-btn[data-v-cc929558]{background-color:#8b5cf6cc;color:#fff;border:none;padding:4px 8px;border-radius:4px;cursor:pointer;font-size:14px;font-weight:600;white-space:nowrap;width:100%;transition:all .3s ease;box-shadow:0 1px 3px #0000001a}.view-query-btn[data-v-cc929558]:hover{background-color:#7c3aede6;box-shadow:0 2px 4px #0003;transform:translateY(-1px)}.best[data-v-cc929558]{background-color:#10b98199}.good[data-v-cc929558]{background-color:#f59e0b99}.average[data-v-cc929558]{background-color:#f9731699}.below-average[data-v-cc929558]{background-color:#ef444499}.poor[data-v-cc929558]{background-color:#dc262699}.unavailable[data-v-cc929558]{background-color:#111827b3}.unavailable-icon[data-v-cc929558]{color:#ef4444;font-weight:700}.modal-backdrop[data-v-cc929558]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content[data-v-cc929558]{background-color:#fff;padding:20px;border-radius:8px;max-width:80%;max-height:80%;overflow-y:auto;position:relative}.close-btn[data-v-cc929558]{position:absolute;top:10px;right:10px;background:none;border:none;font-size:24px;cursor:pointer}pre[data-v-cc929558]{background-color:#f3f4f6;padding:15px;border-radius:4px;overflow-x:auto}code[data-v-cc929558]{font-family:Courier New,Courier,monospace;font-size:14px;line-height:1.5}[data-v-cc929558] .token.keyword{color:#00f}[data-v-cc929558] .token.function{color:#f0f}[data-v-cc929558] .token.number{color:#099}[data-v-cc929558] .token.operator{color:#9a6e3a}[data-v-cc929558] .token.punctuation{color:#666}@media (max-width: 768px){.benchmark-table[data-v-cc929558]{font-size:12px}.benchmark-table th[data-v-cc929558],.benchmark-table td[data-v-cc929558]{padding:8px}.view-query-btn[data-v-cc929558]{font-size:10px;padding:2px 4px}}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/case-study/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/case-study/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/case-study/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/case-study/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/case-study/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/case-study/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/case-study/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/case-study/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/case-study/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/case-study/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/case-study/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/case-study/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/case-study/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/case-study/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-d6be1790]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-d6be1790]{padding:96px 32px 168px}}.code[data-v-d6be1790]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-d6be1790]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-d6be1790]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-d6be1790]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-d6be1790]{padding-top:20px}.link[data-v-d6be1790]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-d6be1790]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-b933a997]{position:relative;z-index:1}.nested[data-v-b933a997]{padding-right:16px;padding-left:16px}.outline-link[data-v-b933a997]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-b933a997]:hover,.outline-link.active[data-v-b933a997]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-b933a997]{padding-left:13px}.VPDocAsideOutline[data-v-a5bbad30]{display:none}.VPDocAsideOutline.has-outline[data-v-a5bbad30]{display:block}.content[data-v-a5bbad30]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-a5bbad30]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-a5bbad30]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-e98dd255]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-e98dd255]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-e257564d]{margin-top:64px}.edit-info[data-v-e257564d]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-e257564d]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-e257564d]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-e257564d]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-e257564d]{margin-right:8px}.prev-next[data-v-e257564d]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-e257564d]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-e257564d]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-e257564d]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-e257564d]{margin-left:auto;text-align:right}.desc[data-v-e257564d]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-e257564d]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-39a288b8]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-39a288b8]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-39a288b8]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-39a288b8]{display:flex;justify-content:center}.VPDoc .aside[data-v-39a288b8]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{max-width:1104px}}.container[data-v-39a288b8]{margin:0 auto;width:100%}.aside[data-v-39a288b8]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-39a288b8]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-39a288b8]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-39a288b8]::-webkit-scrollbar{display:none}.aside-curtain[data-v-39a288b8]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-39a288b8]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-39a288b8]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-39a288b8]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-39a288b8]{order:1;margin:0;min-width:640px}}.content-container[data-v-39a288b8]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-39a288b8]{max-width:688px}.VPButton[data-v-cad61b99]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-cad61b99]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-cad61b99]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-cad61b99]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-cad61b99]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-cad61b99]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-cad61b99]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-cad61b99]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-cad61b99]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-cad61b99]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-cad61b99]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-cad61b99]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-cad61b99]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-303bb580]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-303bb580]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-303bb580]{flex-direction:row}}.main[data-v-303bb580]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-303bb580]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-303bb580]{text-align:left}}@media (min-width: 960px){.main[data-v-303bb580]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-303bb580]{max-width:592px}}.name[data-v-303bb580],.text[data-v-303bb580]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0 auto}.name[data-v-303bb580]{color:var(--vp-home-hero-name-color)}.clip[data-v-303bb580]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-303bb580],.text[data-v-303bb580]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-303bb580],.text[data-v-303bb580]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0}}.tagline[data-v-303bb580]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-303bb580]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-303bb580]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-303bb580]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-303bb580]{margin:0}}.actions[data-v-303bb580]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-303bb580]{justify-content:center}@media (min-width: 640px){.actions[data-v-303bb580]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-303bb580]{justify-content:flex-start}}.action[data-v-303bb580]{flex-shrink:0;padding:6px}.image[data-v-303bb580]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-303bb580]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-303bb580]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-303bb580]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-303bb580]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-303bb580]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-303bb580]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-303bb580]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-303bb580]{width:320px;height:320px}}[data-v-303bb580] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-303bb580] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-303bb580] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-a3976bdc]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-a3976bdc]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-a3976bdc]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-a3976bdc]>.VPImage{margin-bottom:20px}.icon[data-v-a3976bdc]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-a3976bdc]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-a3976bdc]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-a3976bdc]{padding-top:8px}.link-text-value[data-v-a3976bdc]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-a3976bdc]{margin-left:6px}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.container[data-v-8e2d4988]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-8e2d4988]{padding:0 48px}}@media (min-width: 960px){.container[data-v-8e2d4988]{width:100%;padding:0 64px}}.vp-doc[data-v-8e2d4988] .VPHomeSponsors,.vp-doc[data-v-8e2d4988] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-8e2d4988] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-8e2d4988] .VPHomeSponsors a,.vp-doc[data-v-8e2d4988] .VPTeamPage a{text-decoration:none}.VPHome[data-v-686f80a6]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-686f80a6]{margin-bottom:128px}}.VPContent[data-v-1428d186]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-1428d186]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-1428d186]{margin:0}@media (min-width: 960px){.VPContent[data-v-1428d186]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-1428d186]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-1428d186]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e315a0ad]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-17a5e62e]{color:var(--vp-c-text-1)}.icon[data-v-17a5e62e]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{font-size:14px}.icon[data-v-17a5e62e]{font-size:16px}}.open>.icon[data-v-17a5e62e]{transform:rotate(90deg)}.items[data-v-17a5e62e]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-17a5e62e]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-17a5e62e]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-17a5e62e]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-17a5e62e]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-17a5e62e]{transition:all .2s ease-out}.flyout-leave-active[data-v-17a5e62e]{transition:all .15s ease-in}.flyout-enter-from[data-v-17a5e62e],.flyout-leave-to[data-v-17a5e62e]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-a6f0e41e]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-a6f0e41e]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-a6f0e41e]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-a6f0e41e]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-a6f0e41e]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-a6f0e41e]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-a6f0e41e]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-a6f0e41e]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-a6f0e41e]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-a6f0e41e]{display:none}}.menu-icon[data-v-a6f0e41e]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 32px 11px}}.VPSwitch[data-v-1d5665e3]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-1d5665e3]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-1d5665e3]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-1d5665e3]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-1d5665e3] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-1d5665e3] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-5337faa4]{opacity:1}.moon[data-v-5337faa4],.dark .sun[data-v-5337faa4]{opacity:0}.dark .moon[data-v-5337faa4]{opacity:1}.dark .VPSwitchAppearance[data-v-5337faa4] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-6c893767]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-6c893767]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-b98bc113]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-b98bc113] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-b98bc113] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-b98bc113] .group:last-child{padding-bottom:0}.VPMenu[data-v-b98bc113] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-b98bc113] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-b98bc113] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-b98bc113] .action{padding-left:24px}.VPFlyout[data-v-b6c34ac9]{position:relative}.VPFlyout[data-v-b6c34ac9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-b6c34ac9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-b6c34ac9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-b6c34ac9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-b6c34ac9]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-b6c34ac9],.button[aria-expanded=true]+.menu[data-v-b6c34ac9]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-b6c34ac9]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-b6c34ac9]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-b6c34ac9]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-b6c34ac9]{margin-right:0;font-size:16px}.text-icon[data-v-b6c34ac9]{margin-left:4px;font-size:14px}.icon[data-v-b6c34ac9]{font-size:20px;transition:fill .25s}.menu[data-v-b6c34ac9]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-eee4e7cb]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-eee4e7cb]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-eee4e7cb]>svg,.VPSocialLink[data-v-eee4e7cb]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-bb2aa2f0]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-bb2aa2f0]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-bb2aa2f0]{display:none}}.trans-title[data-v-bb2aa2f0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-bb2aa2f0],.item.social-links[data-v-bb2aa2f0]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-bb2aa2f0]{min-width:176px}.appearance-action[data-v-bb2aa2f0]{margin-right:-2px}.social-links-list[data-v-bb2aa2f0]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-9c663999]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-9c663999],.VPNavBarMenuLink[data-v-9c663999]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-dc692963]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-dc692963]{display:flex}}/*! @docsearch/css 3.6.1 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-ab179fa1]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-ab179fa1]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-ab179fa1]{border-bottom-color:var(--vp-c-divider)}}[data-v-ab179fa1] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-88af2de4]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-88af2de4]{display:flex;align-items:center}}.title[data-v-88af2de4]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-6aa21345]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-6aa21345]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-6aa21345]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-6aa21345]:not(.home){background-color:transparent}.VPNavBar[data-v-6aa21345]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-6aa21345]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-6aa21345]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-6aa21345]{padding:0}}.container[data-v-6aa21345]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-6aa21345],.container>.content[data-v-6aa21345]{pointer-events:none}.container[data-v-6aa21345] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-6aa21345]{max-width:100%}}.title[data-v-6aa21345]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-6aa21345]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-6aa21345]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-6aa21345]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-6aa21345]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-6aa21345]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-6aa21345]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-6aa21345]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-6aa21345]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-6aa21345]{column-gap:.5rem}}.menu+.translations[data-v-6aa21345]:before,.menu+.appearance[data-v-6aa21345]:before,.menu+.social-links[data-v-6aa21345]:before,.translations+.appearance[data-v-6aa21345]:before,.appearance+.social-links[data-v-6aa21345]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-6aa21345]:before,.translations+.appearance[data-v-6aa21345]:before{margin-right:16px}.appearance+.social-links[data-v-6aa21345]:before{margin-left:16px}.social-links[data-v-6aa21345]{margin-right:-8px}.divider[data-v-6aa21345]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-6aa21345]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-6aa21345]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-6aa21345]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-6aa21345]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-6aa21345]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-6aa21345]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-b44890b2]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-b44890b2]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-7f31e1f6]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-7f31e1f6]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-b9ab8c58]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-b9ab8c58]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-b9ab8c58]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-b9ab8c58]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-b9ab8c58]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-b9ab8c58]{transform:rotate(45deg)}.button[data-v-b9ab8c58]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-b9ab8c58]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-b9ab8c58]{transition:transform .25s}.group[data-v-b9ab8c58]:first-child{padding-top:0}.group+.group[data-v-b9ab8c58],.group+.item[data-v-b9ab8c58]{padding-top:4px}.VPNavScreenTranslations[data-v-858fe1a4]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-858fe1a4]{height:auto}.title[data-v-858fe1a4]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-858fe1a4]{font-size:16px}.icon.lang[data-v-858fe1a4]{margin-right:8px}.icon.chevron[data-v-858fe1a4]{margin-left:4px}.list[data-v-858fe1a4]{padding:4px 0 0 24px}.link[data-v-858fe1a4]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-f2779853]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-f2779853],.VPNavScreen.fade-leave-active[data-v-f2779853]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-f2779853],.VPNavScreen.fade-leave-active .container[data-v-f2779853]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-f2779853],.VPNavScreen.fade-leave-to[data-v-f2779853]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-f2779853],.VPNavScreen.fade-leave-to .container[data-v-f2779853]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-f2779853]{display:none}}.container[data-v-f2779853]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-f2779853],.menu+.appearance[data-v-f2779853],.translations+.appearance[data-v-f2779853]{margin-top:24px}.menu+.social-links[data-v-f2779853]{margin-top:16px}.appearance+.social-links[data-v-f2779853]{margin-top:16px}.VPNav[data-v-ae24b3ad]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-b7550ba0]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-b7550ba0]{padding-bottom:10px}.item[data-v-b7550ba0]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-b7550ba0]{cursor:pointer}.indicator[data-v-b7550ba0]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-b7550ba0]{background-color:var(--vp-c-brand-1)}.link[data-v-b7550ba0]{display:flex;align-items:center;flex-grow:1}.text[data-v-b7550ba0]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-b7550ba0]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-b7550ba0],.VPSidebarItem.level-2 .text[data-v-b7550ba0],.VPSidebarItem.level-3 .text[data-v-b7550ba0],.VPSidebarItem.level-4 .text[data-v-b7550ba0],.VPSidebarItem.level-5 .text[data-v-b7550ba0]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-b7550ba0]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-1.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-2.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-3.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-4.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-5.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-b7550ba0]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-b7550ba0]{color:var(--vp-c-brand-1)}.caret[data-v-b7550ba0]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-b7550ba0]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-b7550ba0]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-b7550ba0]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-b7550ba0]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-b7550ba0],.VPSidebarItem.level-2 .items[data-v-b7550ba0],.VPSidebarItem.level-3 .items[data-v-b7550ba0],.VPSidebarItem.level-4 .items[data-v-b7550ba0],.VPSidebarItem.level-5 .items[data-v-b7550ba0]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-b7550ba0]{display:none}.no-transition[data-v-c40bc020] .caret-icon{transition:none}.group+.group[data-v-c40bc020]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-c40bc020]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-319d5ca6]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-319d5ca6]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-319d5ca6]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-319d5ca6]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-319d5ca6]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-319d5ca6]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-319d5ca6]{outline:0}.VPSkipLink[data-v-0f60ec36]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-0f60ec36]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5d98c3a5]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3d121b4a]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3d121b4a]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{margin:128px 0}}.VPHomeSponsors[data-v-3d121b4a]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 64px}}.container[data-v-3d121b4a]{margin:0 auto;max-width:1152px}.love[data-v-3d121b4a]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3d121b4a]{display:inline-block}.message[data-v-3d121b4a]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3d121b4a]{padding-top:32px}.action[data-v-3d121b4a]{padding-top:40px;text-align:center}.VPTeamPage[data-v-7c57f839]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-7c57f839]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-7c57f839-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-7c57f839-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:96px}}.VPTeamMembers[data-v-7c57f839-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-f3fa364a]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f3fa364a]{padding:32px}.VPTeamMembersItem.small .data[data-v-f3fa364a]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f3fa364a]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f3fa364a]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f3fa364a]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f3fa364a]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f3fa364a]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f3fa364a]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f3fa364a]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f3fa364a]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f3fa364a]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f3fa364a]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f3fa364a]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f3fa364a]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f3fa364a]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f3fa364a]{text-align:center}.avatar[data-v-f3fa364a]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f3fa364a]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f3fa364a]{margin:0;font-weight:600}.affiliation[data-v-f3fa364a]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f3fa364a]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f3fa364a]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f3fa364a]{margin:0 auto}.desc[data-v-f3fa364a] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f3fa364a]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f3fa364a]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f3fa364a]:hover,.sp .sp-link.link[data-v-f3fa364a]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f3fa364a]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1}.tippy-trigger{border-bottom:1px dotted #3eaf7c;cursor:help}.tippy-box{border-radius:4px;font-size:.9em}.tippy-box[data-theme~=custom]{background-color:#213547;color:#fff}.tippy-box[data-theme~=custom][data-placement^=top]>.tippy-arrow:before{border-top-color:#213547}.tippy-arrow{color:#213547}.outline-link{white-space:wrap!important}.icon-list{padding-left:.5em}.icon-list p{display:flex;align-items:flex-start;margin-bottom:.5em}.icon-list .icon{flex-shrink:0;margin-right:.5em;width:1.6em;height:1.6em;color:#e37626}.icon-list p span{display:inline-block;line-height:1.2;padding-top:.2em}.custom-icon[data-v-5bc0d446]{display:inline-block;width:1.6em;height:1.6em;vertical-align:middle}.icon-placeholder[data-v-5bc0d446]{display:inline-block;width:1.6em;height:1.6em;vertical-align:middle;text-align:center;line-height:1.6em;background-color:#ccc;color:#fff;font-weight:700}.icon[data-v-f6562595]{display:block;width:1.6em;height:1.6em}.body[data-v-78673a82]{font-family:Lato,Arial,sans-serif;background-color:#1a202c;color:#fff;margin:0;padding:0;min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden}header[data-v-78673a82]{display:flex;justify-content:space-between;align-items:center;padding:1rem;max-width:1500px;margin:0 auto;width:100%;position:relative;z-index:1}.logo[data-v-78673a82]{font-size:1.5rem;font-weight:700}nav ul[data-v-78673a82]{display:flex;list-style-type:none;padding:0}nav ul li[data-v-78673a82]{margin-left:1rem}nav ul li a[data-v-78673a82]{color:#f5f5f5;text-decoration:none;font-size:1.3rem}nav ul li a[data-v-78673a82]:hover{color:#c4b5fd}.hero[data-v-78673a82]{position:relative;text-align:center;padding:10rem 0}.hero[data-v-78673a82]:before{content:"";position:absolute;top:-90px;left:-20%;width:130%;height:1000px;background-image:url(/case-study/home/blur1.png);background-position:center;background-size:cover;z-index:-1;pointer-events:none;animation:complexPulse 12s ease-in-out infinite;transform-origin:center}.hero h1[data-v-78673a82]{font-size:clamp(2.5rem,.3125rem + 3.75vw,6rem);font-weight:600;margin-bottom:1rem;opacity:var(--sds-size-stroke-border);padding:2.5rem;background:#365eab;background:linear-gradient(to top,#365eab,#f7b655 64%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.hero p[data-v-78673a82]{font-size:1.25rem;margin-bottom:2rem}.about-us[data-v-78673a82]{text-align:center;padding:2rem 0;flex-grow:1}.about-us h1[data-v-78673a82]{margin-bottom:2rem;font-size:2.5rem}.team-members[data-v-78673a82]{display:flex;flex-wrap:wrap;justify-content:center;gap:2rem;padding:1rem}.team-member[data-v-78673a82]{background-color:#2d3748;padding:1.5rem;border-radius:.5rem;text-align:center;width:200px}.team-member img[data-v-78673a82]{border-radius:50%;margin-bottom:1rem;width:150px;height:150px}.team-member h2[data-v-78673a82]{margin:.5rem 0;font-size:1.5rem}.team-member p[data-v-78673a82]{margin:.25rem 0;font-size:1rem}.team-member a[data-v-78673a82]{color:#b67bf1;text-decoration:none}.team-member a[data-v-78673a82]:hover{color:#eea011;text-decoration:underline} diff --git a/docs/.vitepress/dist/assets/style.DvQGO8UR.css b/docs/.vitepress/dist/assets/style.DvQGO8UR.css deleted file mode 100644 index 9c99196..0000000 --- a/docs/.vitepress/dist/assets/style.DvQGO8UR.css +++ /dev/null @@ -1 +0,0 @@ -.star-animation-container{height:fit-content;min-width:100vw;background:radial-gradient(ellipse at bottom,#1b2735,#090a0f)}#stars{width:1px;height:1px;background:transparent;box-shadow:26vw 88vw #fff,17vw 57vw #fff,77vw 73vw #fff,48vw 59vw #fff,52vw 71vw #fff,60vw 82vw #fff,34vw 21vw #fff,63vw 23vw #fff,72vw 45vw #fff,76vw 95vw #fff,48vw 81vw #fff,91vw 18vw #fff,39vw 16vw #fff,43vw 31vw #fff,99vw 64vw #fff,4vw 44vw #fff,72vw 13vw #fff,80vw 83vw #fff,15vw 94vw #fff,88vw 80vw #fff,50vw 95vw #fff,92vw 57vw #fff,41vw 84vw #fff,69vw 53vw #fff,8vw 7vw #fff,34vw 55vw #fff,28vw 49vw #fff,7vw 53vw #fff,26vw 57vw #fff,93vw 60vw #fff,15vw 86vw #fff,78vw 99vw #fff,11vw 63vw #fff,42vw 19vw #fff,14vw 31vw #fff,79vw 90vw #fff,5vw 70vw #fff,42vw 56vw #fff,100vw 100vw #fff,44vw 35vw #fff,68vw 90vw #fff,29vw 77vw #fff,91vw 11vw #fff,100vw 36vw #fff,32vw 50vw #fff,82vw 7vw #fff,10vw 28vw #fff,58vw 26vw #fff,53vw 35vw #fff,36vw 67vw #fff,52vw 79vw #fff,41vw 83vw #fff,99vw 44vw #fff,39vw 52vw #fff,94vw 14vw #fff,44vw 79vw #fff,89vw 95vw #fff,54vw 5vw #fff,90vw 37vw #fff,33vw 89vw #fff,55vw 92vw #fff,49vw 12vw #fff,89vw 36vw #fff,14vw 20vw #fff,1vw 21vw #fff,15vw 65vw #fff,24vw 8vw #fff,53vw 37vw #fff,65vw 51vw #fff,31vw 70vw #fff,6vw 17vw #fff,58vw 86vw #fff,68vw 2vw #fff,29vw 15vw #fff,38vw 84vw #fff,36vw 23vw #fff,80vw 32vw #fff,93vw 66vw #fff,54vw 99vw #fff,54vw 41vw #fff,73vw 62vw #fff,71vw 68vw #fff,23vw 64vw #fff,74vw 40vw #fff,37vw 16vw #fff,91vw 36vw #fff,96vw 41vw #fff,41vw 7vw #fff,77vw 32vw #fff,30vw 21vw #fff,5vw 88vw #fff,74vw 5vw #fff,97vw 27vw #fff,87vw 36vw #fff,72vw 15vw #fff,23vw 66vw #fff,58vw 45vw #fff,2vw 36vw #fff,27vw 41vw #fff,65vw 13vw #fff,61vw 50vw #fff,79vw 21vw #fff,82vw 8vw #fff,1vw 61vw #fff,87vw 66vw #fff,36vw 61vw #fff,64vw 66vw #fff,16vw 74vw #fff,95vw 28vw #fff,74vw 49vw #fff,9vw 37vw #fff,82vw 87vw #fff,57vw 67vw #fff,53vw 61vw #fff,80vw 47vw #fff,56vw 61vw #fff,26vw 79vw #fff,27vw 95vw #fff,28vw 97vw #fff,81vw 34vw #fff,44vw 45vw #fff,65vw 62vw #fff,64vw 21vw #fff,99vw 29vw #fff,54vw 81vw #fff,2vw 62vw #fff,75vw 76vw #fff,90vw 45vw #fff,49vw 24vw #fff,87vw 18vw #fff,61vw 81vw #fff,48vw 28vw #fff,57vw 96vw #fff,34vw 86vw #fff,44vw 94vw #fff,59vw 75vw #fff,11vw 19vw #fff,18vw 68vw #fff,28vw 20vw #fff,47vw 6vw #fff,88vw 20vw #fff,14vw 62vw #fff,23vw 24vw #fff,33vw 13vw #fff,11vw 35vw #fff,1vw 53vw #fff,22vw 54vw #fff,58vw 12vw #fff,54vw 72vw #fff,67vw 64vw #fff,23vw 39vw #fff,10vw 83vw #fff,44vw 45vw #fff,83vw 19vw #fff,12vw 37vw #fff,55vw 80vw #fff,62vw 15vw #fff,11vw 84vw #fff,71vw 41vw #fff,50vw 53vw #fff,2vw 67vw #fff,14vw 65vw #fff,95vw 34vw #fff,61vw 1vw #fff,83vw 8vw #fff,40vw 66vw #fff,39vw 88vw #fff,33vw 25vw #fff,39vw 26vw #fff,66vw 56vw #fff,19vw 80vw #fff,17vw 8vw #fff,61vw 16vw #fff,47vw 87vw #fff,3vw 14vw #fff,79vw 51vw #fff,87vw 24vw #fff,57vw 97vw #fff,94vw 4vw #fff,20vw 99vw #fff,25vw 95vw #fff,24vw 82vw #fff,42vw 62vw #fff,1vw 9vw #fff,27vw 8vw #fff,48vw 25vw #fff,95vw 13vw #fff,95vw 32vw #fff,98vw 55vw #fff,83vw 98vw #fff,85vw 37vw #fff,86vw 59vw #fff,25vw 33vw #fff,53vw 80vw #fff,89vw 87vw #fff,96vw 36vw #fff,71vw 81vw #fff,11vw 62vw #fff,3vw 6vw #fff,51vw 94vw #fff,1vw 8vw #fff,52vw 21vw #fff,86vw 61vw #fff,50vw 68vw #fff,38vw 5vw #fff,20vw 46vw #fff,57vw 88vw #fff,16vw 31vw #fff,6vw 7vw #fff,85vw 57vw #fff,26vw 20vw #fff,83vw 1vw #fff,49vw 83vw #fff,85vw 97vw #fff,100vw 21vw #fff,27vw 47vw #fff,93vw 71vw #fff,42vw 62vw #fff,9vw 60vw #fff,96vw 68vw #fff,87vw 87vw #fff,60vw 43vw #fff,4vw 68vw #fff,98vw 62vw #fff,42vw 82vw #fff,82vw 42vw #fff,29vw 86vw #fff,69vw 21vw #fff,10vw 71vw #fff,48vw 81vw #fff,17vw 98vw #fff,31vw 79vw #fff,60vw 9vw #fff,4vw 81vw #fff,62vw 17vw #fff,78vw 90vw #fff,16vw 40vw #fff,83vw 19vw #fff,80vw 67vw #fff,91vw 84vw #fff,74vw 27vw #fff,19vw 69vw #fff,60vw 11vw #fff,33vw 63vw #fff,23vw 39vw #fff,18vw 33vw #fff,65vw 95vw #fff,12vw 80vw #fff,85vw 47vw #fff,21vw 60vw #fff,95vw 51vw #fff,11vw 10vw #fff,57vw 87vw #fff,70vw 63vw #fff,65vw 65vw #fff,23vw 26vw #fff,34vw 41vw #fff,9vw 73vw #fff,85vw 73vw #fff,91vw 71vw #fff,80vw 70vw #fff,22vw 47vw #fff,12vw 82vw #fff,18vw 54vw #fff,18vw 18vw #fff,11vw 48vw #fff,23vw 49vw #fff,20vw 3vw #fff,56vw 70vw #fff,97vw 54vw #fff,61vw 33vw #fff,85vw 38vw #fff,24vw 60vw #fff,90vw 9vw #fff,14vw 39vw #fff,13vw 59vw #fff,53vw 39vw #fff,4vw 40vw #fff,59vw 23vw #fff,100vw 71vw #fff,60vw 35vw #fff,40vw 9vw #fff,31vw 29vw #fff,40vw 75vw #fff,17vw 4vw #fff,63vw 88vw #fff,68vw 99vw #fff,72vw 3vw #fff,16vw 75vw #fff,81vw 57vw #fff,12vw 91vw #fff,66vw 96vw #fff,95vw 30vw #fff,31vw 49vw #fff,99vw 12vw #fff,39vw 18vw #fff,81vw 73vw #fff,29vw 66vw #fff,64vw 14vw #fff,85vw 32vw #fff,43vw 70vw #fff,78vw 84vw #fff,31vw 21vw #fff,23vw 69vw #fff,45vw 51vw #fff,7vw 29vw #fff,32vw 29vw #fff,29vw 52vw #fff,76vw 69vw #fff,7vw 1vw #fff,51vw 6vw #fff,65vw 59vw #fff,78vw 74vw #fff,1vw 82vw #fff,75vw 71vw #fff,74vw 59vw #fff,23vw 71vw #fff,22vw 19vw #fff,40vw 45vw #fff,68vw 35vw #fff,27vw 40vw #fff,82vw 40vw #fff,63vw 80vw #fff,91vw 67vw #fff,26vw 28vw #fff,15vw 13vw #fff,83vw 30vw #fff,69vw 46vw #fff,92vw 59vw #fff,76vw 84vw #fff,99vw 86vw #fff,20vw 51vw #fff,45vw 27vw #fff,65vw 87vw #fff,48vw 50vw #fff,54vw 78vw #fff,35vw 30vw #fff,33vw 42vw #fff,62vw 59vw #fff,43vw 91vw #fff,61vw 92vw #fff,28vw 69vw #fff,51vw 45vw #fff,6vw 92vw #fff,15vw 24vw #fff,54vw 14vw #fff,57vw 51vw #fff,52vw 100vw #fff,29vw 31vw #fff,60vw 85vw #fff,91vw 47vw #fff,4vw 30vw #fff,48vw 15vw #fff,97vw 22vw #fff,73vw 45vw #fff,39vw 2vw #fff,24vw 52vw #fff,47vw 17vw #fff,27vw 26vw #fff,65vw 59vw #fff,90vw 38vw #fff,85vw 63vw #fff,99vw 77vw #fff,45vw 87vw #fff,64vw 92vw #fff,85vw 20vw #fff,42vw 49vw #fff,75vw 77vw #fff,39vw 61vw #fff,95vw 74vw #fff,93vw 67vw #fff,20vw 54vw #fff,1vw 22vw #fff,49vw 35vw #fff,91vw 20vw #fff,44vw 41vw #fff,69vw 36vw #fff,22vw 61vw #fff,46vw 66vw #fff,16vw 6vw #fff,100vw 73vw #fff,64vw 58vw #fff,47vw 7vw #fff,79vw 60vw #fff,13vw 58vw #fff,6vw 64vw #fff,99vw 45vw #fff,87vw 50vw #fff,26vw 51vw #fff,78vw 94vw #fff,81vw 47vw #fff,8vw 84vw #fff,57vw 31vw #fff,1vw 81vw #fff,10vw 82vw #fff,14vw 40vw #fff,63vw 100vw #fff,33vw 51vw #fff,45vw 57vw #fff,84vw 59vw #fff,73vw 54vw #fff,22vw 77vw #fff,42vw 6vw #fff,80vw 85vw #fff,34vw 66vw #fff,63vw 51vw #fff,31vw 49vw #fff,6vw 29vw #fff,92vw 70vw #fff,26vw 86vw #fff,24vw 54vw #fff,18vw 93vw #fff,97vw 41vw #fff,87vw 92vw #fff,3vw 44vw #fff,22vw 43vw #fff,50vw 22vw #fff,23vw 63vw #fff,22vw 96vw #fff,28vw 4vw #fff,8vw 23vw #fff,99vw 68vw #fff,95vw 56vw #fff,95vw 97vw #fff,83vw 7vw #fff,63vw 76vw #fff,8vw 55vw #fff,11vw 27vw #fff,40vw 10vw #fff,71vw 45vw #fff,87vw 78vw #fff,57vw 55vw #fff,53vw 5vw #fff,20vw 30vw #fff,9vw 21vw #fff,39vw 94vw #fff,11vw 86vw #fff,49vw 46vw #fff,58vw 77vw #fff,94vw 4vw #fff,28vw 83vw #fff,63vw 27vw #fff,34vw 73vw #fff,6vw 36vw #fff,99vw 91vw #fff,9vw 41vw #fff,89vw 47vw #fff,79vw 14vw #fff,64vw 46vw #fff,97vw 2vw #fff,94vw 52vw #fff,76vw 82vw #fff,92vw 3vw #fff,85vw 11vw #fff,53vw 83vw #fff,76vw 16vw #fff,89vw 73vw #fff,57vw 32vw #fff,84vw 36vw #fff,2vw 28vw #fff,44vw 92vw #fff,49vw 36vw #fff,66vw 28vw #fff,62vw 84vw #fff,79vw 73vw #fff,30vw 95vw #fff,3vw 78vw #fff,75vw 91vw #fff,42vw 18vw #fff,74vw 29vw #fff,61vw 33vw #fff,4vw 54vw #fff,52vw 80vw #fff,8vw 91vw #fff,8vw 41vw #fff,18vw 50vw #fff,64vw 65vw #fff,56vw 17vw #fff,87vw 43vw #fff,31vw 25vw #fff,42vw 31vw #fff,41vw 37vw #fff,58vw 71vw #fff,54vw 37vw #fff,2vw 34vw #fff,93vw 95vw #fff,82vw 90vw #fff,67vw 98vw #fff,87vw 53vw #fff,18vw 10vw #fff,25vw 54vw #fff,21vw 90vw #fff,67vw 75vw #fff,48vw 83vw #fff,53vw 76vw #fff,44vw 27vw #fff,11vw 47vw #fff,82vw 37vw #fff,74vw 39vw #fff,57vw 72vw #fff,38vw 28vw #fff,71vw 34vw #fff,19vw 91vw #fff,57vw 50vw #fff,2vw 40vw #fff,48vw 6vw #fff,98vw 93vw #fff,48vw 50vw #fff,1vw 54vw #fff,6vw 64vw #fff,67vw 88vw #fff,95vw 61vw #fff,11vw 38vw #fff,4vw 3vw #fff,15vw 20vw #fff,59vw 40vw #fff,48vw 62vw #fff,62vw 75vw #fff,89vw 32vw #fff,19vw 48vw #fff,34vw 29vw #fff,33vw 85vw #fff,79vw 100vw #fff,30vw 65vw #fff,21vw 83vw #fff,9vw 100vw #fff,66vw 10vw #fff,42vw 53vw #fff,82vw 68vw #fff,63vw 38vw #fff,82vw 71vw #fff,15vw 46vw #fff,22vw 3vw #fff,75vw 6vw #fff,45vw 84vw #fff,99vw 44vw #fff,64vw 94vw #fff,62vw 20vw #fff,53vw 14vw #fff,100vw 55vw #fff,80vw 100vw #fff,93vw 72vw #fff,7vw 36vw #fff,95vw 93vw #fff,21vw 92vw #fff,20vw 19vw #fff,62vw 7vw #fff,8vw 78vw #fff,44vw 49vw #fff,22vw 33vw #fff,5vw 66vw #fff,60vw 66vw #fff,89vw 91vw #fff,12vw 68vw #fff,67vw 72vw #fff,80vw 8vw #fff,4vw 55vw #fff,95vw 59vw #fff,14vw 23vw #fff,63vw 63vw #fff,60vw 8vw #fff,49vw 70vw #fff,58vw 29vw #fff,54vw 17vw #fff,47vw 22vw #fff,54vw 94vw #fff,19vw 40vw #fff,33vw 46vw #fff,74vw 69vw #fff,42vw 26vw #fff,59vw 88vw #fff,37vw 66vw #fff,52vw 71vw #fff,39vw 36vw #fff,8vw 93vw #fff,41vw 28vw #fff,81vw 51vw #fff,81vw 40vw #fff,7vw 55vw #fff,22vw 57vw #fff,12vw 49vw #fff,33vw 82vw #fff,22vw 80vw #fff,50vw 83vw #fff,42vw 70vw #fff,35vw 21vw #fff,91vw 94vw #fff,1vw 96vw #fff,42vw 24vw #fff,53vw 65vw #fff,76vw 51vw #fff,62vw 28vw #fff,11vw 100vw #fff,91vw 6vw #fff,86vw 77vw #fff,85vw 26vw #fff,64vw 24vw #fff,11vw 65vw #fff,93vw 71vw #fff,92vw 94vw #fff,47vw 87vw #fff,32vw 30vw #fff,48vw 35vw #fff,70vw 34vw #fff,61vw 78vw #fff,28vw 33vw #fff,44vw 36vw #fff,64vw 60vw #fff,65vw 24vw #fff,33vw 45vw #fff,12vw 59vw #fff,19vw 82vw #fff,38vw 93vw #fff,89vw 95vw #fff,62vw 8vw #fff,8vw 27vw #fff,65vw 51vw #fff,99vw 9vw #fff,24vw 58vw #fff,80vw 56vw #fff,36vw 32vw #fff,54vw 24vw #fff,64vw 34vw #fff,35vw 1vw #fff,28vw 70vw #fff,86vw 20vw #fff,95vw 74vw #fff,32vw 54vw #fff,62vw 59vw #fff,54vw 47vw #fff,3vw 24vw #fff,84vw 47vw #fff,56vw 27vw #fff,70vw 18vw #fff,65vw 41vw #fff,92vw 92vw #fff,78vw 43vw #fff,32vw 63vw #fff,15vw 70vw #fff,52vw 58vw #fff,86vw 63vw #fff,29vw 72vw #fff,90vw 95vw #fff,9vw 62vw #fff,23vw 21vw #fff,92vw 5vw #fff,79vw 89vw #fff,64vw 63vw #fff,3vw 10vw #fff,48vw 58vw #fff,91vw 38vw #fff,45vw 54vw #fff,47vw 24vw #fff,40vw 10vw #fff,61vw 61vw #fff,29vw 73vw #fff,14vw 18vw #fff,23vw 43vw #fff,51vw 9vw #fff,59vw 6vw #fff,12vw 95vw #fff,85vw 92vw #fff,94vw 28vw #fff,90vw 69vw #fff,43vw 25vw #fff,54vw 21vw #fff,80vw 44vw #fff,67vw 3vw #fff,52vw 74vw #fff,56vw 94vw #fff,72vw 50vw #fff,57vw 71vw #fff,55vw 5vw #fff,24vw 69vw #fff,91vw 63vw #fff,84vw 25vw #fff,4vw 8vw #fff,16vw 33vw #fff,53vw 100vw #fff,65vw 97vw #fff,9vw 54vw #fff,83vw 49vw #fff,88vw 2vw #fff,46vw 90vw #fff,47vw 18vw #fff,60vw 98vw #fff,1vw 4vw #fff,24vw 47vw #fff,99vw 5vw #fff,6vw 50vw #fff,3vw 58vw #fff,19vw 24vw #fff,76vw 65vw #fff,9vw 70vw #fff,31vw 54vw #fff,28vw 31vw #fff,55vw 30vw #fff,65vw 79vw #fff,31vw 7vw #fff,95vw 14vw #fff;animation:animStar 50s linear infinite}#stars:after{content:" ";position:absolute;top:2000px;width:1px;height:1px;background:transparent;box-shadow:26vw 88vw #fff,17vw 57vw #fff,77vw 73vw #fff,48vw 59vw #fff,52vw 71vw #fff,60vw 82vw #fff,34vw 21vw #fff,63vw 23vw #fff,72vw 45vw #fff,76vw 95vw #fff,48vw 81vw #fff,91vw 18vw #fff,39vw 16vw #fff,43vw 31vw #fff,99vw 64vw #fff,4vw 44vw #fff,72vw 13vw #fff,80vw 83vw #fff,15vw 94vw #fff,88vw 80vw #fff,50vw 95vw #fff,92vw 57vw #fff,41vw 84vw #fff,69vw 53vw #fff,8vw 7vw #fff,34vw 55vw #fff,28vw 49vw #fff,7vw 53vw #fff,26vw 57vw #fff,93vw 60vw #fff,15vw 86vw #fff,78vw 99vw #fff,11vw 63vw #fff,42vw 19vw #fff,14vw 31vw #fff,79vw 90vw #fff,5vw 70vw #fff,42vw 56vw #fff,100vw 100vw #fff,44vw 35vw #fff,68vw 90vw #fff,29vw 77vw #fff,91vw 11vw #fff,100vw 36vw #fff,32vw 50vw #fff,82vw 7vw #fff,10vw 28vw #fff,58vw 26vw #fff,53vw 35vw #fff,36vw 67vw #fff,52vw 79vw #fff,41vw 83vw #fff,99vw 44vw #fff,39vw 52vw #fff,94vw 14vw #fff,44vw 79vw #fff,89vw 95vw #fff,54vw 5vw #fff,90vw 37vw #fff,33vw 89vw #fff,55vw 92vw #fff,49vw 12vw #fff,89vw 36vw #fff,14vw 20vw #fff,1vw 21vw #fff,15vw 65vw #fff,24vw 8vw #fff,53vw 37vw #fff,65vw 51vw #fff,31vw 70vw #fff,6vw 17vw #fff,58vw 86vw #fff,68vw 2vw #fff,29vw 15vw #fff,38vw 84vw #fff,36vw 23vw #fff,80vw 32vw #fff,93vw 66vw #fff,54vw 99vw #fff,54vw 41vw #fff,73vw 62vw #fff,71vw 68vw #fff,23vw 64vw #fff,74vw 40vw #fff,37vw 16vw #fff,91vw 36vw #fff,96vw 41vw #fff,41vw 7vw #fff,77vw 32vw #fff,30vw 21vw #fff,5vw 88vw #fff,74vw 5vw #fff,97vw 27vw #fff,87vw 36vw #fff,72vw 15vw #fff,23vw 66vw #fff,58vw 45vw #fff,2vw 36vw #fff,27vw 41vw #fff,65vw 13vw #fff,61vw 50vw #fff,79vw 21vw #fff,82vw 8vw #fff,1vw 61vw #fff,87vw 66vw #fff,36vw 61vw #fff,64vw 66vw #fff,16vw 74vw #fff,95vw 28vw #fff,74vw 49vw #fff,9vw 37vw #fff,82vw 87vw #fff,57vw 67vw #fff,53vw 61vw #fff,80vw 47vw #fff,56vw 61vw #fff,26vw 79vw #fff,27vw 95vw #fff,28vw 97vw #fff,81vw 34vw #fff,44vw 45vw #fff,65vw 62vw #fff,64vw 21vw #fff,99vw 29vw #fff,54vw 81vw #fff,2vw 62vw #fff,75vw 76vw #fff,90vw 45vw #fff,49vw 24vw #fff,87vw 18vw #fff,61vw 81vw #fff,48vw 28vw #fff,57vw 96vw #fff,34vw 86vw #fff,44vw 94vw #fff,59vw 75vw #fff,11vw 19vw #fff,18vw 68vw #fff,28vw 20vw #fff,47vw 6vw #fff,88vw 20vw #fff,14vw 62vw #fff,23vw 24vw #fff,33vw 13vw #fff,11vw 35vw #fff,1vw 53vw #fff,22vw 54vw #fff,58vw 12vw #fff,54vw 72vw #fff,67vw 64vw #fff,23vw 39vw #fff,10vw 83vw #fff,44vw 45vw #fff,83vw 19vw #fff,12vw 37vw #fff,55vw 80vw #fff,62vw 15vw #fff,11vw 84vw #fff,71vw 41vw #fff,50vw 53vw #fff,2vw 67vw #fff,14vw 65vw #fff,95vw 34vw #fff,61vw 1vw #fff,83vw 8vw #fff,40vw 66vw #fff,39vw 88vw #fff,33vw 25vw #fff,39vw 26vw #fff,66vw 56vw #fff,19vw 80vw #fff,17vw 8vw #fff,61vw 16vw #fff,47vw 87vw #fff,3vw 14vw #fff,79vw 51vw #fff,87vw 24vw #fff,57vw 97vw #fff,94vw 4vw #fff,20vw 99vw #fff,25vw 95vw #fff,24vw 82vw #fff,42vw 62vw #fff,1vw 9vw #fff,27vw 8vw #fff,48vw 25vw #fff,95vw 13vw #fff,95vw 32vw #fff,98vw 55vw #fff,83vw 98vw #fff,85vw 37vw #fff,86vw 59vw #fff,25vw 33vw #fff,53vw 80vw #fff,89vw 87vw #fff,96vw 36vw #fff,71vw 81vw #fff,11vw 62vw #fff,3vw 6vw #fff,51vw 94vw #fff,1vw 8vw #fff,52vw 21vw #fff,86vw 61vw #fff,50vw 68vw #fff,38vw 5vw #fff,20vw 46vw #fff,57vw 88vw #fff,16vw 31vw #fff,6vw 7vw #fff,85vw 57vw #fff,26vw 20vw #fff,83vw 1vw #fff,49vw 83vw #fff,85vw 97vw #fff,100vw 21vw #fff,27vw 47vw #fff,93vw 71vw #fff,42vw 62vw #fff,9vw 60vw #fff,96vw 68vw #fff,87vw 87vw #fff,60vw 43vw #fff,4vw 68vw #fff,98vw 62vw #fff,42vw 82vw #fff,82vw 42vw #fff,29vw 86vw #fff,69vw 21vw #fff,10vw 71vw #fff,48vw 81vw #fff,17vw 98vw #fff,31vw 79vw #fff,60vw 9vw #fff,4vw 81vw #fff,62vw 17vw #fff,78vw 90vw #fff,16vw 40vw #fff,83vw 19vw #fff,80vw 67vw #fff,91vw 84vw #fff,74vw 27vw #fff,19vw 69vw #fff,60vw 11vw #fff,33vw 63vw #fff,23vw 39vw #fff,18vw 33vw #fff,65vw 95vw #fff,12vw 80vw #fff,85vw 47vw #fff,21vw 60vw #fff,95vw 51vw #fff,11vw 10vw #fff,57vw 87vw #fff,70vw 63vw #fff,65vw 65vw #fff,23vw 26vw #fff,34vw 41vw #fff,9vw 73vw #fff,85vw 73vw #fff,91vw 71vw #fff,80vw 70vw #fff,22vw 47vw #fff,12vw 82vw #fff,18vw 54vw #fff,18vw 18vw #fff,11vw 48vw #fff,23vw 49vw #fff,20vw 3vw #fff,56vw 70vw #fff,97vw 54vw #fff,61vw 33vw #fff,85vw 38vw #fff,24vw 60vw #fff,90vw 9vw #fff,14vw 39vw #fff,13vw 59vw #fff,53vw 39vw #fff,4vw 40vw #fff,59vw 23vw #fff,100vw 71vw #fff,60vw 35vw #fff,40vw 9vw #fff,31vw 29vw #fff,40vw 75vw #fff,17vw 4vw #fff,63vw 88vw #fff,68vw 99vw #fff,72vw 3vw #fff,16vw 75vw #fff,81vw 57vw #fff,12vw 91vw #fff,66vw 96vw #fff,95vw 30vw #fff,31vw 49vw #fff,99vw 12vw #fff,39vw 18vw #fff,81vw 73vw #fff,29vw 66vw #fff,64vw 14vw #fff,85vw 32vw #fff,43vw 70vw #fff,78vw 84vw #fff,31vw 21vw #fff,23vw 69vw #fff,45vw 51vw #fff,7vw 29vw #fff,32vw 29vw #fff,29vw 52vw #fff,76vw 69vw #fff,7vw 1vw #fff,51vw 6vw #fff,65vw 59vw #fff,78vw 74vw #fff,1vw 82vw #fff,75vw 71vw #fff,74vw 59vw #fff,23vw 71vw #fff,22vw 19vw #fff,40vw 45vw #fff,68vw 35vw #fff,27vw 40vw #fff,82vw 40vw #fff,63vw 80vw #fff,91vw 67vw #fff,26vw 28vw #fff,15vw 13vw #fff,83vw 30vw #fff,69vw 46vw #fff,92vw 59vw #fff,76vw 84vw #fff,99vw 86vw #fff,20vw 51vw #fff,45vw 27vw #fff,65vw 87vw #fff,48vw 50vw #fff,54vw 78vw #fff,35vw 30vw #fff,33vw 42vw #fff,62vw 59vw #fff,43vw 91vw #fff,61vw 92vw #fff,28vw 69vw #fff,51vw 45vw #fff,6vw 92vw #fff,15vw 24vw #fff,54vw 14vw #fff,57vw 51vw #fff,52vw 100vw #fff,29vw 31vw #fff,60vw 85vw #fff,91vw 47vw #fff,4vw 30vw #fff,48vw 15vw #fff,97vw 22vw #fff,73vw 45vw #fff,39vw 2vw #fff,24vw 52vw #fff,47vw 17vw #fff,27vw 26vw #fff,65vw 59vw #fff,90vw 38vw #fff,85vw 63vw #fff,99vw 77vw #fff,45vw 87vw #fff,64vw 92vw #fff,85vw 20vw #fff,42vw 49vw #fff,75vw 77vw #fff,39vw 61vw #fff,95vw 74vw #fff,93vw 67vw #fff,20vw 54vw #fff,1vw 22vw #fff,49vw 35vw #fff,91vw 20vw #fff,44vw 41vw #fff,69vw 36vw #fff,22vw 61vw #fff,46vw 66vw #fff,16vw 6vw #fff,100vw 73vw #fff,64vw 58vw #fff,47vw 7vw #fff,79vw 60vw #fff,13vw 58vw #fff,6vw 64vw #fff,99vw 45vw #fff,87vw 50vw #fff,26vw 51vw #fff,78vw 94vw #fff,81vw 47vw #fff,8vw 84vw #fff,57vw 31vw #fff,1vw 81vw #fff,10vw 82vw #fff,14vw 40vw #fff,63vw 100vw #fff,33vw 51vw #fff,45vw 57vw #fff,84vw 59vw #fff,73vw 54vw #fff,22vw 77vw #fff,42vw 6vw #fff,80vw 85vw #fff,34vw 66vw #fff,63vw 51vw #fff,31vw 49vw #fff,6vw 29vw #fff,92vw 70vw #fff,26vw 86vw #fff,24vw 54vw #fff,18vw 93vw #fff,97vw 41vw #fff,87vw 92vw #fff,3vw 44vw #fff,22vw 43vw #fff,50vw 22vw #fff,23vw 63vw #fff,22vw 96vw #fff,28vw 4vw #fff,8vw 23vw #fff,99vw 68vw #fff,95vw 56vw #fff,95vw 97vw #fff,83vw 7vw #fff,63vw 76vw #fff,8vw 55vw #fff,11vw 27vw #fff,40vw 10vw #fff,71vw 45vw #fff,87vw 78vw #fff,57vw 55vw #fff,53vw 5vw #fff,20vw 30vw #fff,9vw 21vw #fff,39vw 94vw #fff,11vw 86vw #fff,49vw 46vw #fff,58vw 77vw #fff,94vw 4vw #fff,28vw 83vw #fff,63vw 27vw #fff,34vw 73vw #fff,6vw 36vw #fff,99vw 91vw #fff,9vw 41vw #fff,89vw 47vw #fff,79vw 14vw #fff,64vw 46vw #fff,97vw 2vw #fff,94vw 52vw #fff,76vw 82vw #fff,92vw 3vw #fff,85vw 11vw #fff,53vw 83vw #fff,76vw 16vw #fff,89vw 73vw #fff,57vw 32vw #fff,84vw 36vw #fff,2vw 28vw #fff,44vw 92vw #fff,49vw 36vw #fff,66vw 28vw #fff,62vw 84vw #fff,79vw 73vw #fff,30vw 95vw #fff,3vw 78vw #fff,75vw 91vw #fff,42vw 18vw #fff,74vw 29vw #fff,61vw 33vw #fff,4vw 54vw #fff,52vw 80vw #fff,8vw 91vw #fff,8vw 41vw #fff,18vw 50vw #fff,64vw 65vw #fff,56vw 17vw #fff,87vw 43vw #fff,31vw 25vw #fff,42vw 31vw #fff,41vw 37vw #fff,58vw 71vw #fff,54vw 37vw #fff,2vw 34vw #fff,93vw 95vw #fff,82vw 90vw #fff,67vw 98vw #fff,87vw 53vw #fff,18vw 10vw #fff,25vw 54vw #fff,21vw 90vw #fff,67vw 75vw #fff,48vw 83vw #fff,53vw 76vw #fff,44vw 27vw #fff,11vw 47vw #fff,82vw 37vw #fff,74vw 39vw #fff,57vw 72vw #fff,38vw 28vw #fff,71vw 34vw #fff,19vw 91vw #fff,57vw 50vw #fff,2vw 40vw #fff,48vw 6vw #fff,98vw 93vw #fff,48vw 50vw #fff,1vw 54vw #fff,6vw 64vw #fff,67vw 88vw #fff,95vw 61vw #fff,11vw 38vw #fff,4vw 3vw #fff,15vw 20vw #fff,59vw 40vw #fff,48vw 62vw #fff,62vw 75vw #fff,89vw 32vw #fff,19vw 48vw #fff,34vw 29vw #fff,33vw 85vw #fff,79vw 100vw #fff,30vw 65vw #fff,21vw 83vw #fff,9vw 100vw #fff,66vw 10vw #fff,42vw 53vw #fff,82vw 68vw #fff,63vw 38vw #fff,82vw 71vw #fff,15vw 46vw #fff,22vw 3vw #fff,75vw 6vw #fff,45vw 84vw #fff,99vw 44vw #fff,64vw 94vw #fff,62vw 20vw #fff,53vw 14vw #fff,100vw 55vw #fff,80vw 100vw #fff,93vw 72vw #fff,7vw 36vw #fff,95vw 93vw #fff,21vw 92vw #fff,20vw 19vw #fff,62vw 7vw #fff,8vw 78vw #fff,44vw 49vw #fff,22vw 33vw #fff,5vw 66vw #fff,60vw 66vw #fff,89vw 91vw #fff,12vw 68vw #fff,67vw 72vw #fff,80vw 8vw #fff,4vw 55vw #fff,95vw 59vw #fff,14vw 23vw #fff,63vw 63vw #fff,60vw 8vw #fff,49vw 70vw #fff,58vw 29vw #fff,54vw 17vw #fff,47vw 22vw #fff,54vw 94vw #fff,19vw 40vw #fff,33vw 46vw #fff,74vw 69vw #fff,42vw 26vw #fff,59vw 88vw #fff,37vw 66vw #fff,52vw 71vw #fff,39vw 36vw #fff,8vw 93vw #fff,41vw 28vw #fff,81vw 51vw #fff,81vw 40vw #fff,7vw 55vw #fff,22vw 57vw #fff,12vw 49vw #fff,33vw 82vw #fff,22vw 80vw #fff,50vw 83vw #fff,42vw 70vw #fff,35vw 21vw #fff,91vw 94vw #fff,1vw 96vw #fff,42vw 24vw #fff,53vw 65vw #fff,76vw 51vw #fff,62vw 28vw #fff,11vw 100vw #fff,91vw 6vw #fff,86vw 77vw #fff,85vw 26vw #fff,64vw 24vw #fff,11vw 65vw #fff,93vw 71vw #fff,92vw 94vw #fff,47vw 87vw #fff,32vw 30vw #fff,48vw 35vw #fff,70vw 34vw #fff,61vw 78vw #fff,28vw 33vw #fff,44vw 36vw #fff,64vw 60vw #fff,65vw 24vw #fff,33vw 45vw #fff,12vw 59vw #fff,19vw 82vw #fff,38vw 93vw #fff,89vw 95vw #fff,62vw 8vw #fff,8vw 27vw #fff,65vw 51vw #fff,99vw 9vw #fff,24vw 58vw #fff,80vw 56vw #fff,36vw 32vw #fff,54vw 24vw #fff,64vw 34vw #fff,35vw 1vw #fff,28vw 70vw #fff,86vw 20vw #fff,95vw 74vw #fff,32vw 54vw #fff,62vw 59vw #fff,54vw 47vw #fff,3vw 24vw #fff,84vw 47vw #fff,56vw 27vw #fff,70vw 18vw #fff,65vw 41vw #fff,92vw 92vw #fff,78vw 43vw #fff,32vw 63vw #fff,15vw 70vw #fff,52vw 58vw #fff,86vw 63vw #fff,29vw 72vw #fff,90vw 95vw #fff,9vw 62vw #fff,23vw 21vw #fff,92vw 5vw #fff,79vw 89vw #fff,64vw 63vw #fff,3vw 10vw #fff,48vw 58vw #fff,91vw 38vw #fff,45vw 54vw #fff,47vw 24vw #fff,40vw 10vw #fff,61vw 61vw #fff,29vw 73vw #fff,14vw 18vw #fff,23vw 43vw #fff,51vw 9vw #fff,59vw 6vw #fff,12vw 95vw #fff,85vw 92vw #fff,94vw 28vw #fff,90vw 69vw #fff,43vw 25vw #fff,54vw 21vw #fff,80vw 44vw #fff,67vw 3vw #fff,52vw 74vw #fff,56vw 94vw #fff,72vw 50vw #fff,57vw 71vw #fff,55vw 5vw #fff,24vw 69vw #fff,91vw 63vw #fff,84vw 25vw #fff,4vw 8vw #fff,16vw 33vw #fff,53vw 100vw #fff,65vw 97vw #fff,9vw 54vw #fff,83vw 49vw #fff,88vw 2vw #fff,46vw 90vw #fff,47vw 18vw #fff,60vw 98vw #fff,1vw 4vw #fff,24vw 47vw #fff,99vw 5vw #fff,6vw 50vw #fff,3vw 58vw #fff,19vw 24vw #fff,76vw 65vw #fff,9vw 70vw #fff,31vw 54vw #fff,28vw 31vw #fff,55vw 30vw #fff,65vw 79vw #fff,31vw 7vw #fff,95vw 14vw #fff}#stars2{width:2px;height:2px;background:transparent;box-shadow:61vw 51vw #fff,75vw 88vw #fff,77vw 72vw #fff,97vw 47vw #fff,59vw 42vw #fff,83vw 16vw #fff,41vw 12vw #fff,15vw 80vw #fff,43vw 67vw #fff,77vw 59vw #fff,63vw 3vw #fff,16vw 54vw #fff,90vw 66vw #fff,6vw 18vw #fff,17vw 71vw #fff,41vw 52vw #fff,8vw 81vw #fff,96vw 49vw #fff,26vw 21vw #fff,16vw 83vw #fff,91vw 25vw #fff,91vw 29vw #fff,8vw 93vw #fff,5vw 66vw #fff,58vw 100vw #fff,94vw 78vw #fff,11vw 72vw #fff,100vw 66vw #fff,99vw 45vw #fff,92vw 90vw #fff,13vw 51vw #fff,1vw 94vw #fff,47vw 75vw #fff,15vw 46vw #fff,11vw 40vw #fff,3vw 15vw #fff,31vw 9vw #fff,26vw 52vw #fff,36vw 6vw #fff,64vw 70vw #fff,62vw 24vw #fff,69vw 23vw #fff,55vw 64vw #fff,9vw 40vw #fff,16vw 45vw #fff,29vw 28vw #fff,38vw 61vw #fff,60vw 61vw #fff,4vw 32vw #fff,18vw 16vw #fff,29vw 56vw #fff,82vw 59vw #fff,16vw 86vw #fff,17vw 92vw #fff,15vw 75vw #fff,67vw 34vw #fff,54vw 15vw #fff,15vw 65vw #fff,6vw 75vw #fff,75vw 43vw #fff,1vw 97vw #fff,32vw 67vw #fff,99vw 50vw #fff,66vw 44vw #fff,4vw 58vw #fff,31vw 11vw #fff,75vw 71vw #fff,2vw 26vw #fff,77vw 14vw #fff,37vw 46vw #fff,5vw 71vw #fff,67vw 33vw #fff,4vw 22vw #fff,2vw 45vw #fff,41vw 86vw #fff,44vw 55vw #fff,48vw 10vw #fff,99vw 85vw #fff,43vw 43vw #fff,6vw 11vw #fff,40vw 82vw #fff,20vw 13vw #fff,12vw 59vw #fff,22vw 86vw #fff,95vw 61vw #fff,48vw 47vw #fff,95vw 87vw #fff,41vw 65vw #fff,83vw 80vw #fff,52vw 31vw #fff,14vw 49vw #fff,98vw 85vw #fff,36vw 33vw #fff,50vw 96vw #fff,3vw 90vw #fff,10vw 18vw #fff,46vw 88vw #fff,8vw 10vw #fff,78vw 4vw #fff,60vw 39vw #fff,12vw 36vw #fff,77vw 65vw #fff,15vw 50vw #fff,81vw 60vw #fff,25vw 18vw #fff,84vw 100vw #fff,72vw 19vw #fff,23vw 95vw #fff,27vw 36vw #fff,98vw 79vw #fff,3vw 14vw #fff,41vw 85vw #fff,12vw 41vw #fff,76vw 90vw #fff,9vw 41vw #fff,41vw 6vw #fff,88vw 60vw #fff,4vw 62vw #fff,89vw 77vw #fff,97vw 19vw #fff,85vw 41vw #fff,68vw 100vw #fff,56vw 94vw #fff,41vw 47vw #fff,91vw 83vw #fff,65vw 48vw #fff,17vw 5vw #fff,86vw 40vw #fff,37vw 66vw #fff,70vw 11vw #fff,68vw 51vw #fff,54vw 16vw #fff,25vw 35vw #fff,84vw 4vw #fff,21vw 38vw #fff,39vw 20vw #fff,47vw 80vw #fff,70vw 93vw #fff,16vw 28vw #fff,55vw 91vw #fff,11vw 37vw #fff,39vw 78vw #fff,81vw 7vw #fff,21vw 22vw #fff,78vw 100vw #fff,45vw 17vw #fff,11vw 47vw #fff,32vw 15vw #fff,95vw 85vw #fff,22vw 53vw #fff,49vw 48vw #fff,32vw 26vw #fff,74vw 20vw #fff,28vw 73vw #fff,14vw 83vw #fff,71vw 79vw #fff,83vw 43vw #fff,6vw 58vw #fff,2vw 53vw #fff,87vw 89vw #fff,32vw 96vw #fff,64vw 80vw #fff,1vw 6vw #fff,95vw 95vw #fff,8vw 5vw #fff,45vw 41vw #fff,55vw 35vw #fff,17vw 99vw #fff,24vw 94vw #fff,97vw 5vw #fff,42vw 69vw #fff,91vw 47vw #fff,90vw 50vw #fff,82vw 17vw #fff,62vw 33vw #fff,33vw 31vw #fff,81vw 1vw #fff,95vw 23vw #fff,80vw 83vw #fff,23vw 50vw #fff,93vw 27vw #fff,9vw 6vw #fff,56vw 87vw #fff,26vw 74vw #fff,28vw 8vw #fff,39vw 72vw #fff,13vw 6vw #fff,20vw 100vw #fff,56vw 86vw #fff,11vw 75vw #fff,96vw 30vw #fff,40vw 98vw #fff,18vw 67vw #fff,54vw 45vw #fff,93vw 44vw #fff,30vw 65vw #fff,55vw 49vw #fff,98vw 48vw #fff,60vw 91vw #fff,51vw 41vw #fff;animation:animStar 100s linear infinite}#stars2:after{content:" ";position:absolute;top:2000px;width:2px;height:2px;background:transparent;box-shadow:61vw 51vw #fff,75vw 88vw #fff,77vw 72vw #fff,97vw 47vw #fff,59vw 42vw #fff,83vw 16vw #fff,41vw 12vw #fff,15vw 80vw #fff,43vw 67vw #fff,77vw 59vw #fff,63vw 3vw #fff,16vw 54vw #fff,90vw 66vw #fff,6vw 18vw #fff,17vw 71vw #fff,41vw 52vw #fff,8vw 81vw #fff,96vw 49vw #fff,26vw 21vw #fff,16vw 83vw #fff,91vw 25vw #fff,91vw 29vw #fff,8vw 93vw #fff,5vw 66vw #fff,58vw 100vw #fff,94vw 78vw #fff,11vw 72vw #fff,100vw 66vw #fff,99vw 45vw #fff,92vw 90vw #fff,13vw 51vw #fff,1vw 94vw #fff,47vw 75vw #fff,15vw 46vw #fff,11vw 40vw #fff,3vw 15vw #fff,31vw 9vw #fff,26vw 52vw #fff,36vw 6vw #fff,64vw 70vw #fff,62vw 24vw #fff,69vw 23vw #fff,55vw 64vw #fff,9vw 40vw #fff,16vw 45vw #fff,29vw 28vw #fff,38vw 61vw #fff,60vw 61vw #fff,4vw 32vw #fff,18vw 16vw #fff,29vw 56vw #fff,82vw 59vw #fff,16vw 86vw #fff,17vw 92vw #fff,15vw 75vw #fff,67vw 34vw #fff,54vw 15vw #fff,15vw 65vw #fff,6vw 75vw #fff,75vw 43vw #fff,1vw 97vw #fff,32vw 67vw #fff,99vw 50vw #fff,66vw 44vw #fff,4vw 58vw #fff,31vw 11vw #fff,75vw 71vw #fff,2vw 26vw #fff,77vw 14vw #fff,37vw 46vw #fff,5vw 71vw #fff,67vw 33vw #fff,4vw 22vw #fff,2vw 45vw #fff,41vw 86vw #fff,44vw 55vw #fff,48vw 10vw #fff,99vw 85vw #fff,43vw 43vw #fff,6vw 11vw #fff,40vw 82vw #fff,20vw 13vw #fff,12vw 59vw #fff,22vw 86vw #fff,95vw 61vw #fff,48vw 47vw #fff,95vw 87vw #fff,41vw 65vw #fff,83vw 80vw #fff,52vw 31vw #fff,14vw 49vw #fff,98vw 85vw #fff,36vw 33vw #fff,50vw 96vw #fff,3vw 90vw #fff,10vw 18vw #fff,46vw 88vw #fff,8vw 10vw #fff,78vw 4vw #fff,60vw 39vw #fff,12vw 36vw #fff,77vw 65vw #fff,15vw 50vw #fff,81vw 60vw #fff,25vw 18vw #fff,84vw 100vw #fff,72vw 19vw #fff,23vw 95vw #fff,27vw 36vw #fff,98vw 79vw #fff,3vw 14vw #fff,41vw 85vw #fff,12vw 41vw #fff,76vw 90vw #fff,9vw 41vw #fff,41vw 6vw #fff,88vw 60vw #fff,4vw 62vw #fff,89vw 77vw #fff,97vw 19vw #fff,85vw 41vw #fff,68vw 100vw #fff,56vw 94vw #fff,41vw 47vw #fff,91vw 83vw #fff,65vw 48vw #fff,17vw 5vw #fff,86vw 40vw #fff,37vw 66vw #fff,70vw 11vw #fff,68vw 51vw #fff,54vw 16vw #fff,25vw 35vw #fff,84vw 4vw #fff,21vw 38vw #fff,39vw 20vw #fff,47vw 80vw #fff,70vw 93vw #fff,16vw 28vw #fff,55vw 91vw #fff,11vw 37vw #fff,39vw 78vw #fff,81vw 7vw #fff,21vw 22vw #fff,78vw 100vw #fff,45vw 17vw #fff,11vw 47vw #fff,32vw 15vw #fff,95vw 85vw #fff,22vw 53vw #fff,49vw 48vw #fff,32vw 26vw #fff,74vw 20vw #fff,28vw 73vw #fff,14vw 83vw #fff,71vw 79vw #fff,83vw 43vw #fff,6vw 58vw #fff,2vw 53vw #fff,87vw 89vw #fff,32vw 96vw #fff,64vw 80vw #fff,1vw 6vw #fff,95vw 95vw #fff,8vw 5vw #fff,45vw 41vw #fff,55vw 35vw #fff,17vw 99vw #fff,24vw 94vw #fff,97vw 5vw #fff,42vw 69vw #fff,91vw 47vw #fff,90vw 50vw #fff,82vw 17vw #fff,62vw 33vw #fff,33vw 31vw #fff,81vw 1vw #fff,95vw 23vw #fff,80vw 83vw #fff,23vw 50vw #fff,93vw 27vw #fff,9vw 6vw #fff,56vw 87vw #fff,26vw 74vw #fff,28vw 8vw #fff,39vw 72vw #fff,13vw 6vw #fff,20vw 100vw #fff,56vw 86vw #fff,11vw 75vw #fff,96vw 30vw #fff,40vw 98vw #fff,18vw 67vw #fff,54vw 45vw #fff,93vw 44vw #fff,30vw 65vw #fff,55vw 49vw #fff,98vw 48vw #fff,60vw 91vw #fff,51vw 41vw #fff}#stars3{width:3px;height:3px;background:transparent;box-shadow:30vw 7vw #fff,59vw 18vw #fff,94vw 21vw #fff,58vw 58vw #fff,2vw 62vw #fff,82vw 35vw #fff,10vw 100vw #fff,15vw 99vw #fff,18vw 23vw #fff,72vw 85vw #fff,63vw 72vw #fff,88vw 80vw #fff,33vw 86vw #fff,61vw 53vw #fff,56vw 37vw #fff,17vw 82vw #fff,29vw 98vw #fff,89vw 61vw #fff,1vw 68vw #fff,37vw 81vw #fff,41vw 31vw #fff,91vw 22vw #fff,98vw 29vw #fff,48vw 40vw #fff,33vw 12vw #fff,82vw 19vw #fff,76vw 10vw #fff,37vw 30vw #fff,65vw 98vw #fff,33vw 67vw #fff,71vw 41vw #fff,73vw 94vw #fff,78vw 26vw #fff,10vw 90vw #fff,64vw 50vw #fff,40vw 89vw #fff,75vw 86vw #fff,47vw 33vw #fff,99vw 35vw #fff,95vw 85vw #fff,79vw 92vw #fff,22vw 34vw #fff,32vw 50vw #fff,92vw 66vw #fff,45vw 6vw #fff,79vw 95vw #fff,68vw 73vw #fff,63vw 14vw #fff,38vw 99vw #fff,25vw 60vw #fff,3vw 94vw #fff,40vw 81vw #fff,1vw 35vw #fff,46vw 75vw #fff,15vw 57vw #fff,21vw 88vw #fff,41vw 43vw #fff,50vw 7vw #fff,29vw 13vw #fff,87vw 39vw #fff,69vw 14vw #fff,33vw 43vw #fff,62vw 52vw #fff,58vw 18vw #fff,77vw 83vw #fff,55vw 98vw #fff,49vw 42vw #fff,25vw 38vw #fff,73vw 85vw #fff,62vw 56vw #fff,98vw 52vw #fff,44vw 65vw #fff,67vw 7vw #fff,3vw 43vw #fff,72vw 86vw #fff,50vw 6vw #fff,98vw 84vw #fff,54vw 95vw #fff,92vw 33vw #fff,91vw 49vw #fff,4vw 40vw #fff,84vw 92vw #fff,1vw 84vw #fff,27vw 65vw #fff,7vw 45vw #fff,46vw 73vw #fff,78vw 21vw #fff,57vw 83vw #fff,24vw 41vw #fff,90vw 96vw #fff,90vw 65vw #fff,51vw 88vw #fff,28vw 76vw #fff,10vw 73vw #fff,33vw 54vw #fff,86vw 82vw #fff,78vw 31vw #fff,27vw 85vw #fff,61vw 82vw #fff,34vw 6vw #fff;animation:animStar 150s linear infinite}#stars3:after{content:" ";position:absolute;top:2000px;width:3px;height:3px;background:transparent;box-shadow:30vw 7vw #fff,59vw 18vw #fff,94vw 21vw #fff,58vw 58vw #fff,2vw 62vw #fff,82vw 35vw #fff,10vw 100vw #fff,15vw 99vw #fff,18vw 23vw #fff,72vw 85vw #fff,63vw 72vw #fff,88vw 80vw #fff,33vw 86vw #fff,61vw 53vw #fff,56vw 37vw #fff,17vw 82vw #fff,29vw 98vw #fff,89vw 61vw #fff,1vw 68vw #fff,37vw 81vw #fff,41vw 31vw #fff,91vw 22vw #fff,98vw 29vw #fff,48vw 40vw #fff,33vw 12vw #fff,82vw 19vw #fff,76vw 10vw #fff,37vw 30vw #fff,65vw 98vw #fff,33vw 67vw #fff,71vw 41vw #fff,73vw 94vw #fff,78vw 26vw #fff,10vw 90vw #fff,64vw 50vw #fff,40vw 89vw #fff,75vw 86vw #fff,47vw 33vw #fff,99vw 35vw #fff,95vw 85vw #fff,79vw 92vw #fff,22vw 34vw #fff,32vw 50vw #fff,92vw 66vw #fff,45vw 6vw #fff,79vw 95vw #fff,68vw 73vw #fff,63vw 14vw #fff,38vw 99vw #fff,25vw 60vw #fff,3vw 94vw #fff,40vw 81vw #fff,1vw 35vw #fff,46vw 75vw #fff,15vw 57vw #fff,21vw 88vw #fff,41vw 43vw #fff,50vw 7vw #fff,29vw 13vw #fff,87vw 39vw #fff,69vw 14vw #fff,33vw 43vw #fff,62vw 52vw #fff,58vw 18vw #fff,77vw 83vw #fff,55vw 98vw #fff,49vw 42vw #fff,25vw 38vw #fff,73vw 85vw #fff,62vw 56vw #fff,98vw 52vw #fff,44vw 65vw #fff,67vw 7vw #fff,3vw 43vw #fff,72vw 86vw #fff,50vw 6vw #fff,98vw 84vw #fff,54vw 95vw #fff,92vw 33vw #fff,91vw 49vw #fff,4vw 40vw #fff,84vw 92vw #fff,1vw 84vw #fff,27vw 65vw #fff,7vw 45vw #fff,46vw 73vw #fff,78vw 21vw #fff,57vw 83vw #fff,24vw 41vw #fff,90vw 96vw #fff,90vw 65vw #fff,51vw 88vw #fff,28vw 76vw #fff,10vw 73vw #fff,33vw 54vw #fff,86vw 82vw #fff,78vw 31vw #fff,27vw 85vw #fff,61vw 82vw #fff,34vw 6vw #fff}@keyframes animStar{0%{transform:translateY(0)}to{transform:translateY(-2000px)}}.cursor-element,.cursor-element *{pointer-events:none}.cursor-element{position:fixed;width:8px;height:8px;border-radius:100%;z-index:2000}.cursor-element *{mix-blend-mode:difference}.cursor-element span{position:fixed;border-radius:100%;background:transparent;opacity:.3;width:40px;height:40px;display:block;z-index:2000;transition:.62s;transform:translate(-50%) translateY(-50%);transform-origin:top left;transition-timing-function:cubic-bezier(.19,.58,.58,.93)}.cursor-glow{position:fixed;pointer-events:none;width:100px;height:100px;background:#fff059;border-radius:100%;z-index:1000;opacity:0;transform:scale(1) translate(-50%) translateY(-50%);transform-origin:top left;filter:blur(32px);transition:all .64s,opacity .6s,width .68s,height .68s,left 0s,top 0s;transition-timing-function:cubic-bezier(.19,.58,.58,.93);transition-delay:.2s}.cursor-glow.active{filter:blur(22px);z-index:1000;width:32px;height:32px;opacity:.5;transition-delay:0s;transition:all 1s,opacity 1.24s,width .6s,height .6s,left 0s,top 0s}.cursor-glow.active+span{background:#fff059;z-index:1000;opacity:.82;transform:scale(.42) translate(-50%) translateY(-50%);box-shadow:0 0 24px #0202021a;transition:.32s ease;transition-delay:.08s}@keyframes hue-rotate{0%{filter:hue-rotate(0)}to{filter:hue-rotate(360deg)}}.body[data-v-7cb9b0e2]{font-family:Lato,Arial,sans-serif;background-color:#1a202c;color:#fff;margin:0;padding:0;min-height:100vh;display:flex;flex-direction:column;overflow-x:hidden}header[data-v-7cb9b0e2]{display:flex;justify-content:space-between;align-items:center;padding:1rem;max-width:1500px;margin:0 auto;width:100%;position:relative;z-index:1}.logo[data-v-7cb9b0e2]{font-size:1.5rem;font-weight:700}nav ul[data-v-7cb9b0e2]{display:flex;list-style-type:none;padding:0}nav ul li[data-v-7cb9b0e2]{margin-left:1rem}nav ul li a[data-v-7cb9b0e2]{color:#f5f5f5;text-decoration:none;font-size:1.3rem}nav ul li a[data-v-7cb9b0e2]:hover{color:#c4b5fd}main[data-v-7cb9b0e2]{flex-grow:1;padding:0 3rem 3rem;max-width:1500px;margin:0 auto;width:100%;position:relative;z-index:1}.hero[data-v-7cb9b0e2]{position:relative;text-align:center;padding:10rem 0}@keyframes complexPulse-7cb9b0e2{0%{opacity:.7;transform:scale(1) rotate(0) skew(0)}25%{opacity:.8;transform:scale(1.02) rotate(.5deg) skew(.5deg,.5deg)}50%{opacity:.9;transform:scale(1.05) rotate(1deg) skew(1deg,1deg)}75%{opacity:.8;transform:scale(1.02) rotate(.5deg) skew(.5deg,.5deg)}to{opacity:.7;transform:scale(1) rotate(0) skew(0)}}.hero[data-v-7cb9b0e2]:before{content:"";position:absolute;top:-90px;left:-20%;width:130%;height:1000px;background-image:url(/assets/blur1.fssN-tse.png);background-position:center;background-size:cover;z-index:-1;pointer-events:none;animation:complexPulse-7cb9b0e2 12s ease-in-out infinite;transform-origin:center}.kinesis .content[data-v-7cb9b0e2]{position:relative}.kinesis .content[data-v-7cb9b0e2]:before{content:"";position:absolute;top:-90px;left:0;width:100%;height:300px;background-image:url(/assets/blur2.Cm_F34UH.png);background-position:center;background-size:cover;z-index:-1}.kinesis-img[data-v-7cb9b0e2]{max-width:27%}section.content-section.cli[data-v-7cb9b0e2]{margin-bottom:10rem}.cli .content[data-v-7cb9b0e2]{position:relative}.cli .content[data-v-7cb9b0e2]:before{content:"";position:absolute;top:-140px;left:60px;width:100%;height:500px;background-image:url(/assets/blur3.C_i1i996.png);background-position:center;background-size:cover;z-index:-1}main[data-v-7cb9b0e2]:after{content:"";position:absolute;top:800px;left:15px;width:98%;aspect-ratio:1/1;background-image:url(/assets/trail.C0RnV6cK.png);background-position:center;background-size:contain;background-repeat:no-repeat;z-index:-1}.hero h1[data-v-7cb9b0e2]{font-size:clamp(2.5rem,.3125rem + 3.75vw,6rem);font-weight:600;margin-bottom:1rem;opacity:var(--sds-size-stroke-border);padding:2.5rem;background:#365eab;background:linear-gradient(to top,#365eab,#f7b655 64%);-webkit-background-clip:text;-webkit-text-fill-color:transparent}.hero p[data-v-7cb9b0e2]{font-size:1.25rem;margin-bottom:2rem}button[data-v-7cb9b0e2]{background-color:#7c3aed;color:#fff;border:none;padding:.5rem 1rem;font-size:1rem;font-weight:700;border-radius:.25rem;cursor:pointer}button[data-v-7cb9b0e2]:hover{background-color:#1d132e}.content-section[data-v-7cb9b0e2]{display:flex;flex-direction:column;align-items:center;margin-bottom:6rem;gap:2rem}.content-section .content[data-v-7cb9b0e2],.content-section .image[data-v-7cb9b0e2]{width:100%}.content-section h2[data-v-7cb9b0e2],.additional-features h2[data-v-7cb9b0e2]{font-size:1.5rem;margin-bottom:1rem}.additional-features[data-v-7cb9b0e2]{margin-inline:20%;margin-bottom:10rem}.features-container[data-v-7cb9b0e2]{display:flex;flex-direction:column;gap:3rem}.feature[data-v-7cb9b0e2]{background-color:#2d3748;padding:1.5rem;border-radius:.5rem;margin-bottom:1rem}.feature h3[data-v-7cb9b0e2]{font-size:1.25rem;margin-bottom:.5rem}footer[data-v-7cb9b0e2]{background-color:#2d3748;padding:2.5rem 0;text-align:center;position:relative;z-index:1}@media (min-width: 1024px){.content-section[data-v-7cb9b0e2]{flex-direction:row;gap:7rem}.content-section[data-v-7cb9b0e2]:nth-child(odd){flex-direction:row-reverse}.content-section .content[data-v-7cb9b0e2],.content-section .image[data-v-7cb9b0e2]{width:50%}.features-container[data-v-7cb9b0e2]{flex-direction:row;justify-content:space-between;gap:17%}.feature[data-v-7cb9b0e2]{width:48%}.additional-features[data-v-7cb9b0e2]{padding-inline:11rem;margin-inline:0}.image.sqlconsole[data-v-7cb9b0e2]{max-width:45%}}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-cyrillic.C5lxZ8CY.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek-ext.CqjqNYQ-.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-greek.BBVDIX6e.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-vietnamese.BjW4sHH5.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin-ext.4ZJIpNVo.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/assets/inter-roman-latin.Di8DUHzh.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic-ext.r48I6akx.woff2) format("woff2");unicode-range:U+0460-052F,U+1C80-1C88,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-cyrillic.By2_1cv3.woff2) format("woff2");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek-ext.1u6EdAuj.woff2) format("woff2");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-greek.DJ8dCoTZ.woff2) format("woff2");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-vietnamese.BSbpV94h.woff2) format("woff2");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin-ext.CN1xVJS-.woff2) format("woff2");unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:italic;font-weight:100 900;font-display:swap;src:url(/assets/inter-italic-latin.C2AdPX0b.woff2) format("woff2");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Punctuation SC;font-weight:400;src:local("PingFang SC Regular"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:500;src:local("PingFang SC Medium"),local("Noto Sans CJK SC"),local("Microsoft YaHei");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:600;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}@font-face{font-family:Punctuation SC;font-weight:700;src:local("PingFang SC Semibold"),local("Noto Sans CJK SC Bold"),local("Microsoft YaHei Bold");unicode-range:U+201C,U+201D,U+2018,U+2019,U+2E3A,U+2014,U+2013,U+2026,U+00B7,U+007E,U+002F}:root{--vp-c-white: #ffffff;--vp-c-black: #000000;--vp-c-neutral: var(--vp-c-black);--vp-c-neutral-inverse: var(--vp-c-white)}.dark{--vp-c-neutral: var(--vp-c-white);--vp-c-neutral-inverse: var(--vp-c-black)}:root{--vp-c-gray-1: #dddde3;--vp-c-gray-2: #e4e4e9;--vp-c-gray-3: #ebebef;--vp-c-gray-soft: rgba(142, 150, 170, .14);--vp-c-indigo-1: #3451b2;--vp-c-indigo-2: #3a5ccc;--vp-c-indigo-3: #5672cd;--vp-c-indigo-soft: rgba(100, 108, 255, .14);--vp-c-purple-1: #6f42c1;--vp-c-purple-2: #7e4cc9;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .14);--vp-c-green-1: #18794e;--vp-c-green-2: #299764;--vp-c-green-3: #30a46c;--vp-c-green-soft: rgba(16, 185, 129, .14);--vp-c-yellow-1: #915930;--vp-c-yellow-2: #946300;--vp-c-yellow-3: #9f6a00;--vp-c-yellow-soft: rgba(234, 179, 8, .14);--vp-c-red-1: #b8272c;--vp-c-red-2: #d5393e;--vp-c-red-3: #e0575b;--vp-c-red-soft: rgba(244, 63, 94, .14);--vp-c-sponsor: #db2777}.dark{--vp-c-gray-1: #515c67;--vp-c-gray-2: #414853;--vp-c-gray-3: #32363f;--vp-c-gray-soft: rgba(101, 117, 133, .16);--vp-c-indigo-1: #a8b1ff;--vp-c-indigo-2: #5c73e7;--vp-c-indigo-3: #3e63dd;--vp-c-indigo-soft: rgba(100, 108, 255, .16);--vp-c-purple-1: #c8abfa;--vp-c-purple-2: #a879e6;--vp-c-purple-3: #8e5cd9;--vp-c-purple-soft: rgba(159, 122, 234, .16);--vp-c-green-1: #3dd68c;--vp-c-green-2: #30a46c;--vp-c-green-3: #298459;--vp-c-green-soft: rgba(16, 185, 129, .16);--vp-c-yellow-1: #f9b44e;--vp-c-yellow-2: #da8b17;--vp-c-yellow-3: #a46a0a;--vp-c-yellow-soft: rgba(234, 179, 8, .16);--vp-c-red-1: #f66f81;--vp-c-red-2: #f14158;--vp-c-red-3: #b62a3c;--vp-c-red-soft: rgba(244, 63, 94, .16)}:root{--vp-c-bg: #ffffff;--vp-c-bg-alt: #f6f6f7;--vp-c-bg-elv: #ffffff;--vp-c-bg-soft: #f6f6f7}.dark{--vp-c-bg: #1b1b1f;--vp-c-bg-alt: #161618;--vp-c-bg-elv: #202127;--vp-c-bg-soft: #202127}:root{--vp-c-border: #c2c2c4;--vp-c-divider: #e2e2e3;--vp-c-gutter: #e2e2e3}.dark{--vp-c-border: #3c3f44;--vp-c-divider: #2e2e32;--vp-c-gutter: #000000}:root{--vp-c-text-1: rgba(60, 60, 67);--vp-c-text-2: rgba(60, 60, 67, .78);--vp-c-text-3: rgba(60, 60, 67, .56)}.dark{--vp-c-text-1: rgba(255, 255, 245, .86);--vp-c-text-2: rgba(235, 235, 245, .6);--vp-c-text-3: rgba(235, 235, 245, .38)}:root{--vp-c-default-1: var(--vp-c-gray-1);--vp-c-default-2: var(--vp-c-gray-2);--vp-c-default-3: var(--vp-c-gray-3);--vp-c-default-soft: var(--vp-c-gray-soft);--vp-c-brand-1: var(--vp-c-indigo-1);--vp-c-brand-2: var(--vp-c-indigo-2);--vp-c-brand-3: var(--vp-c-indigo-3);--vp-c-brand-soft: var(--vp-c-indigo-soft);--vp-c-brand: var(--vp-c-brand-1);--vp-c-tip-1: var(--vp-c-brand-1);--vp-c-tip-2: var(--vp-c-brand-2);--vp-c-tip-3: var(--vp-c-brand-3);--vp-c-tip-soft: var(--vp-c-brand-soft);--vp-c-note-1: var(--vp-c-brand-1);--vp-c-note-2: var(--vp-c-brand-2);--vp-c-note-3: var(--vp-c-brand-3);--vp-c-note-soft: var(--vp-c-brand-soft);--vp-c-success-1: var(--vp-c-green-1);--vp-c-success-2: var(--vp-c-green-2);--vp-c-success-3: var(--vp-c-green-3);--vp-c-success-soft: var(--vp-c-green-soft);--vp-c-important-1: var(--vp-c-purple-1);--vp-c-important-2: var(--vp-c-purple-2);--vp-c-important-3: var(--vp-c-purple-3);--vp-c-important-soft: var(--vp-c-purple-soft);--vp-c-warning-1: var(--vp-c-yellow-1);--vp-c-warning-2: var(--vp-c-yellow-2);--vp-c-warning-3: var(--vp-c-yellow-3);--vp-c-warning-soft: var(--vp-c-yellow-soft);--vp-c-danger-1: var(--vp-c-red-1);--vp-c-danger-2: var(--vp-c-red-2);--vp-c-danger-3: var(--vp-c-red-3);--vp-c-danger-soft: var(--vp-c-red-soft);--vp-c-caution-1: var(--vp-c-red-1);--vp-c-caution-2: var(--vp-c-red-2);--vp-c-caution-3: var(--vp-c-red-3);--vp-c-caution-soft: var(--vp-c-red-soft)}:root{--vp-font-family-base: "Inter", ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--vp-font-family-mono: ui-monospace, "Menlo", "Monaco", "Consolas", "Liberation Mono", "Courier New", monospace;font-optical-sizing:auto}:root:where(:lang(zh)){--vp-font-family-base: "Punctuation SC", "Inter", ui-sans-serif, system-ui, "PingFang SC", "Noto Sans CJK SC", "Noto Sans SC", "Heiti SC", "Microsoft YaHei", "DengXian", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}:root{--vp-shadow-1: 0 1px 2px rgba(0, 0, 0, .04), 0 1px 2px rgba(0, 0, 0, .06);--vp-shadow-2: 0 3px 12px rgba(0, 0, 0, .07), 0 1px 4px rgba(0, 0, 0, .07);--vp-shadow-3: 0 12px 32px rgba(0, 0, 0, .1), 0 2px 6px rgba(0, 0, 0, .08);--vp-shadow-4: 0 14px 44px rgba(0, 0, 0, .12), 0 3px 9px rgba(0, 0, 0, .12);--vp-shadow-5: 0 18px 56px rgba(0, 0, 0, .16), 0 4px 12px rgba(0, 0, 0, .16)}:root{--vp-z-index-footer: 10;--vp-z-index-local-nav: 20;--vp-z-index-nav: 30;--vp-z-index-layout-top: 40;--vp-z-index-backdrop: 50;--vp-z-index-sidebar: 60}@media (min-width: 960px){:root{--vp-z-index-sidebar: 25}}:root{--vp-layout-max-width: 1440px}:root{--vp-header-anchor-symbol: "#"}:root{--vp-code-line-height: 1.7;--vp-code-font-size: .875em;--vp-code-color: var(--vp-c-brand-1);--vp-code-link-color: var(--vp-c-brand-1);--vp-code-link-hover-color: var(--vp-c-brand-2);--vp-code-bg: var(--vp-c-default-soft);--vp-code-block-color: var(--vp-c-text-2);--vp-code-block-bg: var(--vp-c-bg-alt);--vp-code-block-divider-color: var(--vp-c-gutter);--vp-code-lang-color: var(--vp-c-text-3);--vp-code-line-highlight-color: var(--vp-c-default-soft);--vp-code-line-number-color: var(--vp-c-text-3);--vp-code-line-diff-add-color: var(--vp-c-success-soft);--vp-code-line-diff-add-symbol-color: var(--vp-c-success-1);--vp-code-line-diff-remove-color: var(--vp-c-danger-soft);--vp-code-line-diff-remove-symbol-color: var(--vp-c-danger-1);--vp-code-line-warning-color: var(--vp-c-warning-soft);--vp-code-line-error-color: var(--vp-c-danger-soft);--vp-code-copy-code-border-color: var(--vp-c-divider);--vp-code-copy-code-bg: var(--vp-c-bg-soft);--vp-code-copy-code-hover-border-color: var(--vp-c-divider);--vp-code-copy-code-hover-bg: var(--vp-c-bg);--vp-code-copy-code-active-text: var(--vp-c-text-2);--vp-code-copy-copied-text-content: "Copied";--vp-code-tab-divider: var(--vp-code-block-divider-color);--vp-code-tab-text-color: var(--vp-c-text-2);--vp-code-tab-bg: var(--vp-code-block-bg);--vp-code-tab-hover-text-color: var(--vp-c-text-1);--vp-code-tab-active-text-color: var(--vp-c-text-1);--vp-code-tab-active-bar-color: var(--vp-c-brand-1)}:root{--vp-button-brand-border: transparent;--vp-button-brand-text: var(--vp-c-white);--vp-button-brand-bg: var(--vp-c-brand-3);--vp-button-brand-hover-border: transparent;--vp-button-brand-hover-text: var(--vp-c-white);--vp-button-brand-hover-bg: var(--vp-c-brand-2);--vp-button-brand-active-border: transparent;--vp-button-brand-active-text: var(--vp-c-white);--vp-button-brand-active-bg: var(--vp-c-brand-1);--vp-button-alt-border: transparent;--vp-button-alt-text: var(--vp-c-text-1);--vp-button-alt-bg: var(--vp-c-default-3);--vp-button-alt-hover-border: transparent;--vp-button-alt-hover-text: var(--vp-c-text-1);--vp-button-alt-hover-bg: var(--vp-c-default-2);--vp-button-alt-active-border: transparent;--vp-button-alt-active-text: var(--vp-c-text-1);--vp-button-alt-active-bg: var(--vp-c-default-1);--vp-button-sponsor-border: var(--vp-c-text-2);--vp-button-sponsor-text: var(--vp-c-text-2);--vp-button-sponsor-bg: transparent;--vp-button-sponsor-hover-border: var(--vp-c-sponsor);--vp-button-sponsor-hover-text: var(--vp-c-sponsor);--vp-button-sponsor-hover-bg: transparent;--vp-button-sponsor-active-border: var(--vp-c-sponsor);--vp-button-sponsor-active-text: var(--vp-c-sponsor);--vp-button-sponsor-active-bg: transparent}:root{--vp-custom-block-font-size: 14px;--vp-custom-block-code-font-size: 13px;--vp-custom-block-info-border: transparent;--vp-custom-block-info-text: var(--vp-c-text-1);--vp-custom-block-info-bg: var(--vp-c-default-soft);--vp-custom-block-info-code-bg: var(--vp-c-default-soft);--vp-custom-block-note-border: transparent;--vp-custom-block-note-text: var(--vp-c-text-1);--vp-custom-block-note-bg: var(--vp-c-default-soft);--vp-custom-block-note-code-bg: var(--vp-c-default-soft);--vp-custom-block-tip-border: transparent;--vp-custom-block-tip-text: var(--vp-c-text-1);--vp-custom-block-tip-bg: var(--vp-c-tip-soft);--vp-custom-block-tip-code-bg: var(--vp-c-tip-soft);--vp-custom-block-important-border: transparent;--vp-custom-block-important-text: var(--vp-c-text-1);--vp-custom-block-important-bg: var(--vp-c-important-soft);--vp-custom-block-important-code-bg: var(--vp-c-important-soft);--vp-custom-block-warning-border: transparent;--vp-custom-block-warning-text: var(--vp-c-text-1);--vp-custom-block-warning-bg: var(--vp-c-warning-soft);--vp-custom-block-warning-code-bg: var(--vp-c-warning-soft);--vp-custom-block-danger-border: transparent;--vp-custom-block-danger-text: var(--vp-c-text-1);--vp-custom-block-danger-bg: var(--vp-c-danger-soft);--vp-custom-block-danger-code-bg: var(--vp-c-danger-soft);--vp-custom-block-caution-border: transparent;--vp-custom-block-caution-text: var(--vp-c-text-1);--vp-custom-block-caution-bg: var(--vp-c-caution-soft);--vp-custom-block-caution-code-bg: var(--vp-c-caution-soft);--vp-custom-block-details-border: var(--vp-custom-block-info-border);--vp-custom-block-details-text: var(--vp-custom-block-info-text);--vp-custom-block-details-bg: var(--vp-custom-block-info-bg);--vp-custom-block-details-code-bg: var(--vp-custom-block-info-code-bg)}:root{--vp-input-border-color: var(--vp-c-border);--vp-input-bg-color: var(--vp-c-bg-alt);--vp-input-switch-bg-color: var(--vp-c-default-soft)}:root{--vp-nav-height: 64px;--vp-nav-bg-color: var(--vp-c-bg);--vp-nav-screen-bg-color: var(--vp-c-bg);--vp-nav-logo-height: 24px}.hide-nav{--vp-nav-height: 0px}.hide-nav .VPSidebar{--vp-nav-height: 22px}:root{--vp-local-nav-bg-color: var(--vp-c-bg)}:root{--vp-sidebar-width: 272px;--vp-sidebar-bg-color: var(--vp-c-bg-alt)}:root{--vp-backdrop-bg-color: rgba(0, 0, 0, .6)}:root{--vp-home-hero-name-color: var(--vp-c-brand-1);--vp-home-hero-name-background: transparent;--vp-home-hero-image-background-image: none;--vp-home-hero-image-filter: none}:root{--vp-badge-info-border: transparent;--vp-badge-info-text: var(--vp-c-text-2);--vp-badge-info-bg: var(--vp-c-default-soft);--vp-badge-tip-border: transparent;--vp-badge-tip-text: var(--vp-c-tip-1);--vp-badge-tip-bg: var(--vp-c-tip-soft);--vp-badge-warning-border: transparent;--vp-badge-warning-text: var(--vp-c-warning-1);--vp-badge-warning-bg: var(--vp-c-warning-soft);--vp-badge-danger-border: transparent;--vp-badge-danger-text: var(--vp-c-danger-1);--vp-badge-danger-bg: var(--vp-c-danger-soft)}:root{--vp-carbon-ads-text-color: var(--vp-c-text-1);--vp-carbon-ads-poweredby-color: var(--vp-c-text-2);--vp-carbon-ads-bg-color: var(--vp-c-bg-soft);--vp-carbon-ads-hover-text-color: var(--vp-c-brand-1);--vp-carbon-ads-hover-poweredby-color: var(--vp-c-text-1)}:root{--vp-local-search-bg: var(--vp-c-bg);--vp-local-search-result-bg: var(--vp-c-bg);--vp-local-search-result-border: var(--vp-c-divider);--vp-local-search-result-selected-bg: var(--vp-c-bg);--vp-local-search-result-selected-border: var(--vp-c-brand-1);--vp-local-search-highlight-bg: var(--vp-c-brand-1);--vp-local-search-highlight-text: var(--vp-c-neutral-inverse)}@media (prefers-reduced-motion: reduce){*,:before,:after{animation-delay:-1ms!important;animation-duration:1ms!important;animation-iteration-count:1!important;background-attachment:initial!important;scroll-behavior:auto!important;transition-duration:0s!important;transition-delay:0s!important}}*,:before,:after{box-sizing:border-box}html{line-height:1.4;font-size:16px;-webkit-text-size-adjust:100%}html.dark{color-scheme:dark}body{margin:0;width:100%;min-width:320px;min-height:100vh;line-height:24px;font-family:var(--vp-font-family-base);font-size:16px;font-weight:400;color:var(--vp-c-text-1);background-color:var(--vp-c-bg);font-synthesis:style;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}main{display:block}h1,h2,h3,h4,h5,h6{margin:0;line-height:24px;font-size:16px;font-weight:400}p{margin:0}strong,b{font-weight:600}a,area,button,[role=button],input,label,select,summary,textarea{touch-action:manipulation}a{color:inherit;text-decoration:inherit}ol,ul{list-style:none;margin:0;padding:0}blockquote{margin:0}pre,code,kbd,samp{font-family:var(--vp-font-family-mono)}img,svg,video,canvas,audio,iframe,embed,object{display:block}figure{margin:0}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{border:0;padding:0;line-height:inherit;color:inherit}button{padding:0;font-family:inherit;background-color:transparent;background-image:none}button:enabled,[role=button]:enabled{cursor:pointer}button:focus,button:focus-visible{outline:1px dotted;outline:4px auto -webkit-focus-ring-color}button:focus:not(:focus-visible){outline:none!important}input:focus,textarea:focus,select:focus{outline:none}table{border-collapse:collapse}input{background-color:transparent}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:var(--vp-c-text-3)}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:var(--vp-c-text-3)}input::placeholder,textarea::placeholder{color:var(--vp-c-text-3)}input::-webkit-outer-spin-button,input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}textarea{resize:vertical}select{-webkit-appearance:none}fieldset{margin:0;padding:0}h1,h2,h3,h4,h5,h6,li,p{overflow-wrap:break-word}vite-error-overlay{z-index:9999}mjx-container{overflow-x:auto}mjx-container>svg{display:inline-block;margin:auto}[class^=vpi-],[class*=" vpi-"],.vp-icon{width:1em;height:1em}[class^=vpi-].bg,[class*=" vpi-"].bg,.vp-icon.bg{background-size:100% 100%;background-color:transparent}[class^=vpi-]:not(.bg),[class*=" vpi-"]:not(.bg),.vp-icon:not(.bg){-webkit-mask:var(--icon) no-repeat;mask:var(--icon) no-repeat;-webkit-mask-size:100% 100%;mask-size:100% 100%;background-color:currentColor;color:inherit}.vpi-align-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M21 6H3M15 12H3M17 18H3'/%3E%3C/svg%3E")}.vpi-arrow-right,.vpi-arrow-down,.vpi-arrow-left,.vpi-arrow-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5l7 7-7 7'/%3E%3C/svg%3E")}.vpi-chevron-right,.vpi-chevron-down,.vpi-chevron-left,.vpi-chevron-up{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 18 6-6-6-6'/%3E%3C/svg%3E")}.vpi-chevron-down,.vpi-arrow-down{transform:rotate(90deg)}.vpi-chevron-left,.vpi-arrow-left{transform:rotate(180deg)}.vpi-chevron-up,.vpi-arrow-up{transform:rotate(-90deg)}.vpi-square-pen{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.375 2.625a2.121 2.121 0 1 1 3 3L12 15l-4 1 1-4Z'/%3E%3C/svg%3E")}.vpi-plus{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M5 12h14M12 5v14'/%3E%3C/svg%3E")}.vpi-sun{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Cpath d='M12 2v2M12 20v2M4.93 4.93l1.41 1.41M17.66 17.66l1.41 1.41M2 12h2M20 12h2M6.34 17.66l-1.41 1.41M19.07 4.93l-1.41 1.41'/%3E%3C/svg%3E")}.vpi-moon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z'/%3E%3C/svg%3E")}.vpi-more-horizontal{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='12' cy='12' r='1'/%3E%3Ccircle cx='19' cy='12' r='1'/%3E%3Ccircle cx='5' cy='12' r='1'/%3E%3C/svg%3E")}.vpi-languages{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m5 8 6 6M4 14l6-6 2-3M2 5h12M7 2h1M22 22l-5-10-5 10M14 18h6'/%3E%3C/svg%3E")}.vpi-heart{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M19 14c1.49-1.46 3-3.21 3-5.5A5.5 5.5 0 0 0 16.5 3c-1.76 0-3 .5-4.5 2-1.5-1.5-2.74-2-4.5-2A5.5 5.5 0 0 0 2 8.5c0 2.3 1.5 4.05 3 5.5l7 7Z'/%3E%3C/svg%3E")}.vpi-search{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E")}.vpi-layout-list{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='7' height='7' x='3' y='3' rx='1'/%3E%3Crect width='7' height='7' x='3' y='14' rx='1'/%3E%3Cpath d='M14 4h7M14 9h7M14 15h7M14 20h7'/%3E%3C/svg%3E")}.vpi-delete{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='M20 5H9l-7 7 7 7h11a2 2 0 0 0 2-2V7a2 2 0 0 0-2-2ZM18 9l-6 6M12 9l6 6'/%3E%3C/svg%3E")}.vpi-corner-down-left{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath d='m9 10-5 5 5 5'/%3E%3Cpath d='M20 4v7a4 4 0 0 1-4 4H4'/%3E%3C/svg%3E")}:root{--vp-icon-copy: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3C/svg%3E");--vp-icon-copied: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='none' stroke='rgba(128,128,128,1)' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24'%3E%3Crect width='8' height='4' x='8' y='2' rx='1' ry='1'/%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'/%3E%3Cpath d='m9 14 2 2 4-4'/%3E%3C/svg%3E")}.vpi-social-discord{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0 12.64 12.64 0 0 0-.617-1.25.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057 19.9 19.9 0 0 0 5.993 3.03.078.078 0 0 0 .084-.028c.462-.63.874-1.295 1.226-1.994a.076.076 0 0 0-.041-.106 13.107 13.107 0 0 1-1.872-.892.077.077 0 0 1-.008-.128 10.2 10.2 0 0 0 .372-.292.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127 12.299 12.299 0 0 1-1.873.892.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028 19.839 19.839 0 0 0 6.002-3.03.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.956-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419 0-1.333.955-2.419 2.157-2.419 1.21 0 2.176 1.096 2.157 2.42 0 1.333-.946 2.418-2.157 2.418Z'/%3E%3C/svg%3E")}.vpi-social-facebook{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.101 23.691v-7.98H6.627v-3.667h2.474v-1.58c0-4.085 1.848-5.978 5.858-5.978.401 0 .955.042 1.468.103a8.68 8.68 0 0 1 1.141.195v3.325a8.623 8.623 0 0 0-.653-.036 26.805 26.805 0 0 0-.733-.009c-.707 0-1.259.096-1.675.309a1.686 1.686 0 0 0-.679.622c-.258.42-.374.995-.374 1.752v1.297h3.919l-.386 2.103-.287 1.564h-3.246v8.245C19.396 23.238 24 18.179 24 12.044c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.628 3.874 10.35 9.101 11.647Z'/%3E%3C/svg%3E")}.vpi-social-github{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12'/%3E%3C/svg%3E")}.vpi-social-instagram{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M7.03.084c-1.277.06-2.149.264-2.91.563a5.874 5.874 0 0 0-2.124 1.388 5.878 5.878 0 0 0-1.38 2.127C.321 4.926.12 5.8.064 7.076.008 8.354-.005 8.764.001 12.023c.007 3.259.021 3.667.083 4.947.061 1.277.264 2.149.563 2.911.308.789.72 1.457 1.388 2.123a5.872 5.872 0 0 0 2.129 1.38c.763.295 1.636.496 2.913.552 1.278.056 1.689.069 4.947.063 3.257-.007 3.668-.021 4.947-.082 1.28-.06 2.147-.265 2.91-.563a5.881 5.881 0 0 0 2.123-1.388 5.881 5.881 0 0 0 1.38-2.129c.295-.763.496-1.636.551-2.912.056-1.28.07-1.69.063-4.948-.006-3.258-.02-3.667-.081-4.947-.06-1.28-.264-2.148-.564-2.911a5.892 5.892 0 0 0-1.387-2.123 5.857 5.857 0 0 0-2.128-1.38C19.074.322 18.202.12 16.924.066 15.647.009 15.236-.006 11.977 0 8.718.008 8.31.021 7.03.084m.14 21.693c-1.17-.05-1.805-.245-2.228-.408a3.736 3.736 0 0 1-1.382-.895 3.695 3.695 0 0 1-.9-1.378c-.165-.423-.363-1.058-.417-2.228-.06-1.264-.072-1.644-.08-4.848-.006-3.204.006-3.583.061-4.848.05-1.169.246-1.805.408-2.228.216-.561.477-.96.895-1.382a3.705 3.705 0 0 1 1.379-.9c.423-.165 1.057-.361 2.227-.417 1.265-.06 1.644-.072 4.848-.08 3.203-.006 3.583.006 4.85.062 1.168.05 1.804.244 2.227.408.56.216.96.475 1.382.895.421.42.681.817.9 1.378.165.422.362 1.056.417 2.227.06 1.265.074 1.645.08 4.848.005 3.203-.006 3.583-.061 4.848-.051 1.17-.245 1.805-.408 2.23-.216.56-.477.96-.896 1.38a3.705 3.705 0 0 1-1.378.9c-.422.165-1.058.362-2.226.418-1.266.06-1.645.072-4.85.079-3.204.007-3.582-.006-4.848-.06m9.783-16.192a1.44 1.44 0 1 0 1.437-1.442 1.44 1.44 0 0 0-1.437 1.442M5.839 12.012a6.161 6.161 0 1 0 12.323-.024 6.162 6.162 0 0 0-12.323.024M8 12.008A4 4 0 1 1 12.008 16 4 4 0 0 1 8 12.008'/%3E%3C/svg%3E")}.vpi-social-linkedin{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433a2.062 2.062 0 0 1-2.063-2.065 2.064 2.064 0 1 1 2.063 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z'/%3E%3C/svg%3E")}.vpi-social-mastodon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.268 5.313c-.35-2.578-2.617-4.61-5.304-5.004C17.51.242 15.792 0 11.813 0h-.03c-3.98 0-4.835.242-5.288.309C3.882.692 1.496 2.518.917 5.127.64 6.412.61 7.837.661 9.143c.074 1.874.088 3.745.26 5.611.118 1.24.325 2.47.62 3.68.55 2.237 2.777 4.098 4.96 4.857 2.336.792 4.849.923 7.256.38.265-.061.527-.132.786-.213.585-.184 1.27-.39 1.774-.753a.057.057 0 0 0 .023-.043v-1.809a.052.052 0 0 0-.02-.041.053.053 0 0 0-.046-.01 20.282 20.282 0 0 1-4.709.545c-2.73 0-3.463-1.284-3.674-1.818a5.593 5.593 0 0 1-.319-1.433.053.053 0 0 1 .066-.054c1.517.363 3.072.546 4.632.546.376 0 .75 0 1.125-.01 1.57-.044 3.224-.124 4.768-.422.038-.008.077-.015.11-.024 2.435-.464 4.753-1.92 4.989-5.604.008-.145.03-1.52.03-1.67.002-.512.167-3.63-.024-5.545zm-3.748 9.195h-2.561V8.29c0-1.309-.55-1.976-1.67-1.976-1.23 0-1.846.79-1.846 2.35v3.403h-2.546V8.663c0-1.56-.617-2.35-1.848-2.35-1.112 0-1.668.668-1.67 1.977v6.218H4.822V8.102c0-1.31.337-2.35 1.011-3.12.696-.77 1.608-1.164 2.74-1.164 1.311 0 2.302.5 2.962 1.498l.638 1.06.638-1.06c.66-.999 1.65-1.498 2.96-1.498 1.13 0 2.043.395 2.74 1.164.675.77 1.012 1.81 1.012 3.12z'/%3E%3C/svg%3E")}.vpi-social-npm{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M1.763 0C.786 0 0 .786 0 1.763v20.474C0 23.214.786 24 1.763 24h20.474c.977 0 1.763-.786 1.763-1.763V1.763C24 .786 23.214 0 22.237 0zM5.13 5.323l13.837.019-.009 13.836h-3.464l.01-10.382h-3.456L12.04 19.17H5.113z'/%3E%3C/svg%3E")}.vpi-social-slack{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M5.042 15.165a2.528 2.528 0 0 1-2.52 2.523A2.528 2.528 0 0 1 0 15.165a2.527 2.527 0 0 1 2.522-2.52h2.52v2.52zm1.271 0a2.527 2.527 0 0 1 2.521-2.52 2.527 2.527 0 0 1 2.521 2.52v6.313A2.528 2.528 0 0 1 8.834 24a2.528 2.528 0 0 1-2.521-2.522v-6.313zM8.834 5.042a2.528 2.528 0 0 1-2.521-2.52A2.528 2.528 0 0 1 8.834 0a2.528 2.528 0 0 1 2.521 2.522v2.52H8.834zm0 1.271a2.528 2.528 0 0 1 2.521 2.521 2.528 2.528 0 0 1-2.521 2.521H2.522A2.528 2.528 0 0 1 0 8.834a2.528 2.528 0 0 1 2.522-2.521h6.312zm10.122 2.521a2.528 2.528 0 0 1 2.522-2.521A2.528 2.528 0 0 1 24 8.834a2.528 2.528 0 0 1-2.522 2.521h-2.522V8.834zm-1.268 0a2.528 2.528 0 0 1-2.523 2.521 2.527 2.527 0 0 1-2.52-2.521V2.522A2.527 2.527 0 0 1 15.165 0a2.528 2.528 0 0 1 2.523 2.522v6.312zm-2.523 10.122a2.528 2.528 0 0 1 2.523 2.522A2.528 2.528 0 0 1 15.165 24a2.527 2.527 0 0 1-2.52-2.522v-2.522h2.52zm0-1.268a2.527 2.527 0 0 1-2.52-2.523 2.526 2.526 0 0 1 2.52-2.52h6.313A2.527 2.527 0 0 1 24 15.165a2.528 2.528 0 0 1-2.522 2.523h-6.313z'/%3E%3C/svg%3E")}.vpi-social-twitter,.vpi-social-x{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M18.901 1.153h3.68l-8.04 9.19L24 22.846h-7.406l-5.8-7.584-6.638 7.584H.474l8.6-9.83L0 1.154h7.594l5.243 6.932ZM17.61 20.644h2.039L6.486 3.24H4.298Z'/%3E%3C/svg%3E")}.vpi-social-youtube{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z'/%3E%3C/svg%3E")}.visually-hidden{position:absolute;width:1px;height:1px;white-space:nowrap;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden}.custom-block{border:1px solid transparent;border-radius:8px;padding:16px 16px 8px;line-height:24px;font-size:var(--vp-custom-block-font-size);color:var(--vp-c-text-2)}.custom-block.info{border-color:var(--vp-custom-block-info-border);color:var(--vp-custom-block-info-text);background-color:var(--vp-custom-block-info-bg)}.custom-block.info a,.custom-block.info code{color:var(--vp-c-brand-1)}.custom-block.info a:hover,.custom-block.info a:hover>code{color:var(--vp-c-brand-2)}.custom-block.info code{background-color:var(--vp-custom-block-info-code-bg)}.custom-block.note{border-color:var(--vp-custom-block-note-border);color:var(--vp-custom-block-note-text);background-color:var(--vp-custom-block-note-bg)}.custom-block.note a,.custom-block.note code{color:var(--vp-c-brand-1)}.custom-block.note a:hover,.custom-block.note a:hover>code{color:var(--vp-c-brand-2)}.custom-block.note code{background-color:var(--vp-custom-block-note-code-bg)}.custom-block.tip{border-color:var(--vp-custom-block-tip-border);color:var(--vp-custom-block-tip-text);background-color:var(--vp-custom-block-tip-bg)}.custom-block.tip a,.custom-block.tip code{color:var(--vp-c-tip-1)}.custom-block.tip a:hover,.custom-block.tip a:hover>code{color:var(--vp-c-tip-2)}.custom-block.tip code{background-color:var(--vp-custom-block-tip-code-bg)}.custom-block.important{border-color:var(--vp-custom-block-important-border);color:var(--vp-custom-block-important-text);background-color:var(--vp-custom-block-important-bg)}.custom-block.important a,.custom-block.important code{color:var(--vp-c-important-1)}.custom-block.important a:hover,.custom-block.important a:hover>code{color:var(--vp-c-important-2)}.custom-block.important code{background-color:var(--vp-custom-block-important-code-bg)}.custom-block.warning{border-color:var(--vp-custom-block-warning-border);color:var(--vp-custom-block-warning-text);background-color:var(--vp-custom-block-warning-bg)}.custom-block.warning a,.custom-block.warning code{color:var(--vp-c-warning-1)}.custom-block.warning a:hover,.custom-block.warning a:hover>code{color:var(--vp-c-warning-2)}.custom-block.warning code{background-color:var(--vp-custom-block-warning-code-bg)}.custom-block.danger{border-color:var(--vp-custom-block-danger-border);color:var(--vp-custom-block-danger-text);background-color:var(--vp-custom-block-danger-bg)}.custom-block.danger a,.custom-block.danger code{color:var(--vp-c-danger-1)}.custom-block.danger a:hover,.custom-block.danger a:hover>code{color:var(--vp-c-danger-2)}.custom-block.danger code{background-color:var(--vp-custom-block-danger-code-bg)}.custom-block.caution{border-color:var(--vp-custom-block-caution-border);color:var(--vp-custom-block-caution-text);background-color:var(--vp-custom-block-caution-bg)}.custom-block.caution a,.custom-block.caution code{color:var(--vp-c-caution-1)}.custom-block.caution a:hover,.custom-block.caution a:hover>code{color:var(--vp-c-caution-2)}.custom-block.caution code{background-color:var(--vp-custom-block-caution-code-bg)}.custom-block.details{border-color:var(--vp-custom-block-details-border);color:var(--vp-custom-block-details-text);background-color:var(--vp-custom-block-details-bg)}.custom-block.details a{color:var(--vp-c-brand-1)}.custom-block.details a:hover,.custom-block.details a:hover>code{color:var(--vp-c-brand-2)}.custom-block.details code{background-color:var(--vp-custom-block-details-code-bg)}.custom-block-title{font-weight:600}.custom-block p+p{margin:8px 0}.custom-block.details summary{margin:0 0 8px;font-weight:700;cursor:pointer;-webkit-user-select:none;user-select:none}.custom-block.details summary+p{margin:8px 0}.custom-block a{color:inherit;font-weight:600;text-decoration:underline;text-underline-offset:2px;transition:opacity .25s}.custom-block a:hover{opacity:.75}.custom-block code{font-size:var(--vp-custom-block-code-font-size)}.custom-block.custom-block th,.custom-block.custom-block blockquote>p{font-size:var(--vp-custom-block-font-size);color:inherit}.dark .vp-code span{color:var(--shiki-dark, inherit)}html:not(.dark) .vp-code span{color:var(--shiki-light, inherit)}.vp-code-group{margin-top:16px}.vp-code-group .tabs{position:relative;display:flex;margin-right:-24px;margin-left:-24px;padding:0 12px;background-color:var(--vp-code-tab-bg);overflow-x:auto;overflow-y:hidden;box-shadow:inset 0 -1px var(--vp-code-tab-divider)}@media (min-width: 640px){.vp-code-group .tabs{margin-right:0;margin-left:0;border-radius:8px 8px 0 0}}.vp-code-group .tabs input{position:fixed;opacity:0;pointer-events:none}.vp-code-group .tabs label{position:relative;display:inline-block;border-bottom:1px solid transparent;padding:0 12px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-code-tab-text-color);white-space:nowrap;cursor:pointer;transition:color .25s}.vp-code-group .tabs label:after{position:absolute;right:8px;bottom:-1px;left:8px;z-index:1;height:2px;border-radius:2px;content:"";background-color:transparent;transition:background-color .25s}.vp-code-group label:hover{color:var(--vp-code-tab-hover-text-color)}.vp-code-group input:checked+label{color:var(--vp-code-tab-active-text-color)}.vp-code-group input:checked+label:after{background-color:var(--vp-code-tab-active-bar-color)}.vp-code-group div[class*=language-],.vp-block{display:none;margin-top:0!important;border-top-left-radius:0!important;border-top-right-radius:0!important}.vp-code-group div[class*=language-].active,.vp-block.active{display:block}.vp-block{padding:20px 24px}.vp-doc h1,.vp-doc h2,.vp-doc h3,.vp-doc h4,.vp-doc h5,.vp-doc h6{position:relative;font-weight:600;outline:none}.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:28px}.vp-doc h2{margin:48px 0 16px;border-top:1px solid var(--vp-c-divider);padding-top:24px;letter-spacing:-.02em;line-height:32px;font-size:24px}.vp-doc h3{margin:32px 0 0;letter-spacing:-.01em;line-height:28px;font-size:20px}.vp-doc h4{margin:24px 0 0;letter-spacing:-.01em;line-height:24px;font-size:18px}.vp-doc .header-anchor{position:absolute;top:0;left:0;margin-left:-.87em;font-weight:500;-webkit-user-select:none;user-select:none;opacity:0;text-decoration:none;transition:color .25s,opacity .25s}.vp-doc .header-anchor:before{content:var(--vp-header-anchor-symbol)}.vp-doc h1:hover .header-anchor,.vp-doc h1 .header-anchor:focus,.vp-doc h2:hover .header-anchor,.vp-doc h2 .header-anchor:focus,.vp-doc h3:hover .header-anchor,.vp-doc h3 .header-anchor:focus,.vp-doc h4:hover .header-anchor,.vp-doc h4 .header-anchor:focus,.vp-doc h5:hover .header-anchor,.vp-doc h5 .header-anchor:focus,.vp-doc h6:hover .header-anchor,.vp-doc h6 .header-anchor:focus{opacity:1}@media (min-width: 768px){.vp-doc h1{letter-spacing:-.02em;line-height:40px;font-size:32px}}.vp-doc h2 .header-anchor{top:24px}.vp-doc p,.vp-doc summary{margin:16px 0}.vp-doc p{line-height:28px}.vp-doc blockquote{margin:16px 0;border-left:2px solid var(--vp-c-divider);padding-left:16px;transition:border-color .5s;color:var(--vp-c-text-2)}.vp-doc blockquote>p{margin:0;font-size:16px;transition:color .5s}.vp-doc a{font-weight:500;color:var(--vp-c-brand-1);text-decoration:underline;text-underline-offset:2px;transition:color .25s,opacity .25s}.vp-doc a:hover{color:var(--vp-c-brand-2)}.vp-doc strong{font-weight:600}.vp-doc ul,.vp-doc ol{padding-left:1.25rem;margin:16px 0}.vp-doc ul{list-style:disc}.vp-doc ol{list-style:decimal}.vp-doc li+li{margin-top:8px}.vp-doc li>ol,.vp-doc li>ul{margin:8px 0 0}.vp-doc table{display:block;border-collapse:collapse;margin:20px 0;overflow-x:auto}.vp-doc tr{background-color:var(--vp-c-bg);border-top:1px solid var(--vp-c-divider);transition:background-color .5s}.vp-doc tr:nth-child(2n){background-color:var(--vp-c-bg-soft)}.vp-doc th,.vp-doc td{border:1px solid var(--vp-c-divider);padding:8px 16px}.vp-doc th{text-align:left;font-size:14px;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-doc td{font-size:14px}.vp-doc hr{margin:16px 0;border:none;border-top:1px solid var(--vp-c-divider)}.vp-doc .custom-block{margin:16px 0}.vp-doc .custom-block p{margin:8px 0;line-height:24px}.vp-doc .custom-block p:first-child{margin:0}.vp-doc .custom-block div[class*=language-]{margin:8px 0;border-radius:8px}.vp-doc .custom-block div[class*=language-] code{font-weight:400;background-color:transparent}.vp-doc .custom-block .vp-code-group .tabs{margin:0;border-radius:8px 8px 0 0}.vp-doc :not(pre,h1,h2,h3,h4,h5,h6)>code{font-size:var(--vp-code-font-size);color:var(--vp-code-color)}.vp-doc :not(pre)>code{border-radius:4px;padding:3px 6px;background-color:var(--vp-code-bg);transition:color .25s,background-color .5s}.vp-doc a>code{color:var(--vp-code-link-color)}.vp-doc a:hover>code{color:var(--vp-code-link-hover-color)}.vp-doc h1>code,.vp-doc h2>code,.vp-doc h3>code,.vp-doc h4>code{font-size:.9em}.vp-doc div[class*=language-],.vp-block{position:relative;margin:16px -24px;background-color:var(--vp-code-block-bg);overflow-x:auto;transition:background-color .5s}@media (min-width: 640px){.vp-doc div[class*=language-],.vp-block{border-radius:8px;margin:16px 0}}@media (max-width: 639px){.vp-doc li div[class*=language-]{border-radius:8px 0 0 8px}}.vp-doc div[class*=language-]+div[class*=language-],.vp-doc div[class$=-api]+div[class*=language-],.vp-doc div[class*=language-]+div[class$=-api]>div[class*=language-]{margin-top:-8px}.vp-doc [class*=language-] pre,.vp-doc [class*=language-] code{direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}.vp-doc [class*=language-] pre{position:relative;z-index:1;margin:0;padding:20px 0;background:transparent;overflow-x:auto}.vp-doc [class*=language-] code{display:block;padding:0 24px;width:fit-content;min-width:100%;line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-block-color);transition:color .5s}.vp-doc [class*=language-] code .highlighted{background-color:var(--vp-code-line-highlight-color);transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .highlighted.error{background-color:var(--vp-code-line-error-color)}.vp-doc [class*=language-] code .highlighted.warning{background-color:var(--vp-code-line-warning-color)}.vp-doc [class*=language-] code .diff{transition:background-color .5s;margin:0 -24px;padding:0 24px;width:calc(100% + 48px);display:inline-block}.vp-doc [class*=language-] code .diff:before{position:absolute;left:10px}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){filter:blur(.095rem);opacity:.4;transition:filter .35s,opacity .35s}.vp-doc [class*=language-] .has-focused-lines .line:not(.has-focus){opacity:.7;transition:filter .35s,opacity .35s}.vp-doc [class*=language-]:hover .has-focused-lines .line:not(.has-focus){filter:blur(0);opacity:1}.vp-doc [class*=language-] code .diff.remove{background-color:var(--vp-code-line-diff-remove-color);opacity:.7}.vp-doc [class*=language-] code .diff.remove:before{content:"-";color:var(--vp-code-line-diff-remove-symbol-color)}.vp-doc [class*=language-] code .diff.add{background-color:var(--vp-code-line-diff-add-color)}.vp-doc [class*=language-] code .diff.add:before{content:"+";color:var(--vp-code-line-diff-add-symbol-color)}.vp-doc div[class*=language-].line-numbers-mode{padding-left:32px}.vp-doc .line-numbers-wrapper{position:absolute;top:0;bottom:0;left:0;z-index:3;border-right:1px solid var(--vp-code-block-divider-color);padding-top:20px;width:32px;text-align:center;font-family:var(--vp-font-family-mono);line-height:var(--vp-code-line-height);font-size:var(--vp-code-font-size);color:var(--vp-code-line-number-color);transition:border-color .5s,color .5s}.vp-doc [class*=language-]>button.copy{direction:ltr;position:absolute;top:12px;right:12px;z-index:3;border:1px solid var(--vp-code-copy-code-border-color);border-radius:4px;width:40px;height:40px;background-color:var(--vp-code-copy-code-bg);opacity:0;cursor:pointer;background-image:var(--vp-icon-copy);background-position:50%;background-size:20px;background-repeat:no-repeat;transition:border-color .25s,background-color .25s,opacity .25s}.vp-doc [class*=language-]:hover>button.copy,.vp-doc [class*=language-]>button.copy:focus{opacity:1}.vp-doc [class*=language-]>button.copy:hover,.vp-doc [class*=language-]>button.copy.copied{border-color:var(--vp-code-copy-code-hover-border-color);background-color:var(--vp-code-copy-code-hover-bg)}.vp-doc [class*=language-]>button.copy.copied,.vp-doc [class*=language-]>button.copy:hover.copied{border-radius:0 4px 4px 0;background-color:var(--vp-code-copy-code-hover-bg);background-image:var(--vp-icon-copied)}.vp-doc [class*=language-]>button.copy.copied:before,.vp-doc [class*=language-]>button.copy:hover.copied:before{position:relative;top:-1px;transform:translate(calc(-100% - 1px));display:flex;justify-content:center;align-items:center;border:1px solid var(--vp-code-copy-code-hover-border-color);border-right:0;border-radius:4px 0 0 4px;padding:0 10px;width:fit-content;height:40px;text-align:center;font-size:12px;font-weight:500;color:var(--vp-code-copy-code-active-text);background-color:var(--vp-code-copy-code-hover-bg);white-space:nowrap;content:var(--vp-code-copy-copied-text-content)}.vp-doc [class*=language-]>span.lang{position:absolute;top:2px;right:8px;z-index:2;font-size:12px;font-weight:500;color:var(--vp-code-lang-color);transition:color .4s,opacity .4s}.vp-doc [class*=language-]:hover>button.copy+span.lang,.vp-doc [class*=language-]>button.copy:focus+span.lang{opacity:0}.vp-doc .VPTeamMembers{margin-top:24px}.vp-doc .VPTeamMembers.small.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}.vp-doc .VPTeamMembers.small.count-2 .container,.vp-doc .VPTeamMembers.small.count-3 .container{max-width:100%!important}.vp-doc .VPTeamMembers.medium.count-1 .container{margin:0!important;max-width:calc((100% - 24px)/2)!important}:is(.vp-external-link-icon,.vp-doc a[href*="://"],.vp-doc a[target=_blank]):not(.no-icon):after{display:inline-block;margin-top:-1px;margin-left:4px;width:11px;height:11px;background:currentColor;color:var(--vp-c-text-3);flex-shrink:0;--icon: url("data:image/svg+xml, %3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' %3E%3Cpath d='M0 0h24v24H0V0z' fill='none' /%3E%3Cpath d='M9 5v2h6.59L4 18.59 5.41 20 17 8.41V15h2V5H9z' /%3E%3C/svg%3E");-webkit-mask-image:var(--icon);mask-image:var(--icon)}.vp-external-link-icon:after{content:""}.external-link-icon-enabled :is(.vp-doc a[href*="://"],.vp-doc a[target=_blank]):after{content:"";color:currentColor}.vp-sponsor{border-radius:16px;overflow:hidden}.vp-sponsor.aside{border-radius:12px}.vp-sponsor-section+.vp-sponsor-section{margin-top:4px}.vp-sponsor-tier{margin:0 0 4px!important;text-align:center;letter-spacing:1px!important;line-height:24px;width:100%;font-weight:600;color:var(--vp-c-text-2);background-color:var(--vp-c-bg-soft)}.vp-sponsor.normal .vp-sponsor-tier{padding:13px 0 11px;font-size:14px}.vp-sponsor.aside .vp-sponsor-tier{padding:9px 0 7px;font-size:12px}.vp-sponsor-grid+.vp-sponsor-tier{margin-top:4px}.vp-sponsor-grid{display:flex;flex-wrap:wrap;gap:4px}.vp-sponsor-grid.xmini .vp-sponsor-grid-link{height:64px}.vp-sponsor-grid.xmini .vp-sponsor-grid-image{max-width:64px;max-height:22px}.vp-sponsor-grid.mini .vp-sponsor-grid-link{height:72px}.vp-sponsor-grid.mini .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.small .vp-sponsor-grid-link{height:96px}.vp-sponsor-grid.small .vp-sponsor-grid-image{max-width:96px;max-height:24px}.vp-sponsor-grid.medium .vp-sponsor-grid-link{height:112px}.vp-sponsor-grid.medium .vp-sponsor-grid-image{max-width:120px;max-height:36px}.vp-sponsor-grid.big .vp-sponsor-grid-link{height:184px}.vp-sponsor-grid.big .vp-sponsor-grid-image{max-width:192px;max-height:56px}.vp-sponsor-grid[data-vp-grid="2"] .vp-sponsor-grid-item{width:calc((100% - 4px)/2)}.vp-sponsor-grid[data-vp-grid="3"] .vp-sponsor-grid-item{width:calc((100% - 4px * 2) / 3)}.vp-sponsor-grid[data-vp-grid="4"] .vp-sponsor-grid-item{width:calc((100% - 12px)/4)}.vp-sponsor-grid[data-vp-grid="5"] .vp-sponsor-grid-item{width:calc((100% - 16px)/5)}.vp-sponsor-grid[data-vp-grid="6"] .vp-sponsor-grid-item{width:calc((100% - 4px * 5) / 6)}.vp-sponsor-grid-item{flex-shrink:0;width:100%;background-color:var(--vp-c-bg-soft);transition:background-color .25s}.vp-sponsor-grid-item:hover{background-color:var(--vp-c-default-soft)}.vp-sponsor-grid-item:hover .vp-sponsor-grid-image{filter:grayscale(0) invert(0)}.vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.dark .vp-sponsor-grid-item:hover{background-color:var(--vp-c-white)}.dark .vp-sponsor-grid-item.empty:hover{background-color:var(--vp-c-bg-soft)}.vp-sponsor-grid-link{display:flex}.vp-sponsor-grid-box{display:flex;justify-content:center;align-items:center;width:100%}.vp-sponsor-grid-image{max-width:100%;filter:grayscale(1);transition:filter .25s}.dark .vp-sponsor-grid-image{filter:grayscale(1) invert(1)}.VPBadge{display:inline-block;margin-left:2px;border:1px solid transparent;border-radius:12px;padding:0 10px;line-height:22px;font-size:12px;font-weight:500;transform:translateY(-2px)}.VPBadge.small{padding:0 6px;line-height:18px;font-size:10px;transform:translateY(-8px)}.VPDocFooter .VPBadge{display:none}.vp-doc h1>.VPBadge{margin-top:4px;vertical-align:top}.vp-doc h2>.VPBadge{margin-top:3px;padding:0 8px;vertical-align:top}.vp-doc h3>.VPBadge{vertical-align:middle}.vp-doc h4>.VPBadge,.vp-doc h5>.VPBadge,.vp-doc h6>.VPBadge{vertical-align:middle;line-height:18px}.VPBadge.info{border-color:var(--vp-badge-info-border);color:var(--vp-badge-info-text);background-color:var(--vp-badge-info-bg)}.VPBadge.tip{border-color:var(--vp-badge-tip-border);color:var(--vp-badge-tip-text);background-color:var(--vp-badge-tip-bg)}.VPBadge.warning{border-color:var(--vp-badge-warning-border);color:var(--vp-badge-warning-text);background-color:var(--vp-badge-warning-bg)}.VPBadge.danger{border-color:var(--vp-badge-danger-border);color:var(--vp-badge-danger-text);background-color:var(--vp-badge-danger-bg)}.VPBackdrop[data-v-c79a1216]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vp-z-index-backdrop);background:var(--vp-backdrop-bg-color);transition:opacity .5s}.VPBackdrop.fade-enter-from[data-v-c79a1216],.VPBackdrop.fade-leave-to[data-v-c79a1216]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c79a1216]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c79a1216]{display:none}}.NotFound[data-v-d6be1790]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-d6be1790]{padding:96px 32px 168px}}.code[data-v-d6be1790]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-d6be1790]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-d6be1790]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-d6be1790]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-d6be1790]{padding-top:20px}.link[data-v-d6be1790]{display:inline-block;border:1px solid var(--vp-c-brand-1);border-radius:16px;padding:3px 16px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:border-color .25s,color .25s}.link[data-v-d6be1790]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-b933a997]{position:relative;z-index:1}.nested[data-v-b933a997]{padding-right:16px;padding-left:16px}.outline-link[data-v-b933a997]{display:block;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .5s}.outline-link[data-v-b933a997]:hover,.outline-link.active[data-v-b933a997]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-b933a997]{padding-left:13px}.VPDocAsideOutline[data-v-a5bbad30]{display:none}.VPDocAsideOutline.has-outline[data-v-a5bbad30]{display:block}.content[data-v-a5bbad30]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-a5bbad30]{position:absolute;top:32px;left:-1px;z-index:0;opacity:0;width:2px;border-radius:2px;height:18px;background-color:var(--vp-c-brand-1);transition:top .25s cubic-bezier(0,1,.5,1),background-color .5s,opacity .25s}.outline-title[data-v-a5bbad30]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-3f215769]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-3f215769]{flex-grow:1}.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-3f215769] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-3f215769] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-e98dd255]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-e98dd255]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-e257564d]{margin-top:64px}.edit-info[data-v-e257564d]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-e257564d]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-e257564d]{display:flex;align-items:center;border:0;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.edit-link-button[data-v-e257564d]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-e257564d]{margin-right:8px}.prev-next[data-v-e257564d]{border-top:1px solid var(--vp-c-divider);padding-top:24px;display:grid;grid-row-gap:8px}@media (min-width: 640px){.prev-next[data-v-e257564d]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-e257564d]{display:block;border:1px solid var(--vp-c-divider);border-radius:8px;padding:11px 16px 13px;width:100%;height:100%;transition:border-color .25s}.pager-link[data-v-e257564d]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-e257564d]{margin-left:auto;text-align:right}.desc[data-v-e257564d]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-e257564d]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-39a288b8]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-39a288b8]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-39a288b8]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-39a288b8]{display:flex;justify-content:center}.VPDoc .aside[data-v-39a288b8]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-39a288b8]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-39a288b8]{max-width:1104px}}.container[data-v-39a288b8]{margin:0 auto;width:100%}.aside[data-v-39a288b8]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-39a288b8]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-39a288b8]{position:fixed;top:0;padding-top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + var(--vp-doc-top-height, 0px) + 48px);width:224px;height:100vh;overflow-x:hidden;overflow-y:auto;scrollbar-width:none}.aside-container[data-v-39a288b8]::-webkit-scrollbar{display:none}.aside-curtain[data-v-39a288b8]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-39a288b8]{display:flex;flex-direction:column;min-height:calc(100vh - (var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px));padding-bottom:32px}.content[data-v-39a288b8]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-39a288b8]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-39a288b8]{order:1;margin:0;min-width:640px}}.content-container[data-v-39a288b8]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-39a288b8]{max-width:688px}.VPButton[data-v-cad61b99]{display:inline-block;border:1px solid transparent;text-align:center;font-weight:600;white-space:nowrap;transition:color .25s,border-color .25s,background-color .25s}.VPButton[data-v-cad61b99]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-cad61b99]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-cad61b99]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-cad61b99]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-cad61b99]:hover{border-color:var(--vp-button-brand-hover-border);color:var(--vp-button-brand-hover-text);background-color:var(--vp-button-brand-hover-bg)}.VPButton.brand[data-v-cad61b99]:active{border-color:var(--vp-button-brand-active-border);color:var(--vp-button-brand-active-text);background-color:var(--vp-button-brand-active-bg)}.VPButton.alt[data-v-cad61b99]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-cad61b99]:hover{border-color:var(--vp-button-alt-hover-border);color:var(--vp-button-alt-hover-text);background-color:var(--vp-button-alt-hover-bg)}.VPButton.alt[data-v-cad61b99]:active{border-color:var(--vp-button-alt-active-border);color:var(--vp-button-alt-active-text);background-color:var(--vp-button-alt-active-bg)}.VPButton.sponsor[data-v-cad61b99]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-cad61b99]:hover{border-color:var(--vp-button-sponsor-hover-border);color:var(--vp-button-sponsor-hover-text);background-color:var(--vp-button-sponsor-hover-bg)}.VPButton.sponsor[data-v-cad61b99]:active{border-color:var(--vp-button-sponsor-active-border);color:var(--vp-button-sponsor-active-text);background-color:var(--vp-button-sponsor-active-bg)}html:not(.dark) .VPImage.dark[data-v-8426fc1a]{display:none}.dark .VPImage.light[data-v-8426fc1a]{display:none}.VPHero[data-v-303bb580]{margin-top:calc((var(--vp-nav-height) + var(--vp-layout-top-height, 0px)) * -1);padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 48px) 24px 48px}@media (min-width: 640px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-303bb580]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-303bb580]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-303bb580]{flex-direction:row}}.main[data-v-303bb580]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-303bb580]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-303bb580]{text-align:left}}@media (min-width: 960px){.main[data-v-303bb580]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-303bb580]{max-width:592px}}.name[data-v-303bb580],.text[data-v-303bb580]{max-width:392px;letter-spacing:-.4px;line-height:40px;font-size:32px;font-weight:700;white-space:pre-wrap}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0 auto}.name[data-v-303bb580]{color:var(--vp-home-hero-name-color)}.clip[data-v-303bb580]{background:var(--vp-home-hero-name-background);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:var(--vp-home-hero-name-color)}@media (min-width: 640px){.name[data-v-303bb580],.text[data-v-303bb580]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-303bb580],.text[data-v-303bb580]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-303bb580],.VPHero.has-image .text[data-v-303bb580]{margin:0}}.tagline[data-v-303bb580]{padding-top:8px;max-width:392px;line-height:28px;font-size:18px;font-weight:500;white-space:pre-wrap;color:var(--vp-c-text-2)}.VPHero.has-image .tagline[data-v-303bb580]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-303bb580]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-303bb580]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-303bb580]{margin:0}}.actions[data-v-303bb580]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-303bb580]{justify-content:center}@media (min-width: 640px){.actions[data-v-303bb580]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-303bb580]{justify-content:flex-start}}.action[data-v-303bb580]{flex-shrink:0;padding:6px}.image[data-v-303bb580]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-303bb580]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-303bb580]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-303bb580]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-303bb580]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-303bb580]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-303bb580]{position:absolute;top:50%;left:50%;border-radius:50%;width:192px;height:192px;background-image:var(--vp-home-hero-image-background-image);filter:var(--vp-home-hero-image-filter);transform:translate(-50%,-50%)}@media (min-width: 640px){.image-bg[data-v-303bb580]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-303bb580]{width:320px;height:320px}}[data-v-303bb580] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-303bb580] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-303bb580] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-a3976bdc]{display:block;border:1px solid var(--vp-c-bg-soft);border-radius:12px;height:100%;background-color:var(--vp-c-bg-soft);transition:border-color .25s,background-color .25s}.VPFeature.link[data-v-a3976bdc]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-a3976bdc]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-a3976bdc]>.VPImage{margin-bottom:20px}.icon[data-v-a3976bdc]{display:flex;justify-content:center;align-items:center;margin-bottom:20px;border-radius:6px;background-color:var(--vp-c-default-soft);width:48px;height:48px;font-size:24px;transition:background-color .25s}.title[data-v-a3976bdc]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-a3976bdc]{flex-grow:1;padding-top:8px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.link-text[data-v-a3976bdc]{padding-top:8px}.link-text-value[data-v-a3976bdc]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-a3976bdc]{margin-left:6px}.VPFeatures[data-v-a6181336]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-a6181336]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-a6181336]{padding:0 64px}}.container[data-v-a6181336]{margin:0 auto;max-width:1152px}.items[data-v-a6181336]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-a6181336]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-a6181336],.item.grid-4[data-v-a6181336]{width:50%}.item.grid-3[data-v-a6181336],.item.grid-6[data-v-a6181336]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-a6181336]{width:25%}}.container[data-v-8e2d4988]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-8e2d4988]{padding:0 48px}}@media (min-width: 960px){.container[data-v-8e2d4988]{width:100%;padding:0 64px}}.vp-doc[data-v-8e2d4988] .VPHomeSponsors,.vp-doc[data-v-8e2d4988] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-8e2d4988] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-8e2d4988] .VPHomeSponsors a,.vp-doc[data-v-8e2d4988] .VPTeamPage a{text-decoration:none}.VPHome[data-v-686f80a6]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-686f80a6]{margin-bottom:128px}}.VPContent[data-v-1428d186]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-1428d186]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-1428d186]{margin:0}@media (min-width: 960px){.VPContent[data-v-1428d186]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-1428d186]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-1428d186]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.VPFooter[data-v-e315a0ad]{position:relative;z-index:var(--vp-z-index-footer);border-top:1px solid var(--vp-c-gutter);padding:32px 24px;background-color:var(--vp-c-bg)}.VPFooter.has-sidebar[data-v-e315a0ad]{display:none}.VPFooter[data-v-e315a0ad] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-e315a0ad] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-e315a0ad]{padding:32px}}.container[data-v-e315a0ad]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-e315a0ad],.copyright[data-v-e315a0ad]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-17a5e62e]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{display:block;font-size:12px;font-weight:500;line-height:24px;color:var(--vp-c-text-2);transition:color .5s;position:relative}.VPLocalNavOutlineDropdown button[data-v-17a5e62e]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-17a5e62e]{color:var(--vp-c-text-1)}.icon[data-v-17a5e62e]{display:inline-block;vertical-align:middle;margin-left:2px;font-size:14px;transform:rotate(0);transition:transform .25s}@media (min-width: 960px){.VPLocalNavOutlineDropdown button[data-v-17a5e62e]{font-size:14px}.icon[data-v-17a5e62e]{font-size:16px}}.open>.icon[data-v-17a5e62e]{transform:rotate(90deg)}.items[data-v-17a5e62e]{position:absolute;top:40px;right:16px;left:16px;display:grid;gap:1px;border:1px solid var(--vp-c-border);border-radius:8px;background-color:var(--vp-c-gutter);max-height:calc(var(--vp-vh, 100vh) - 86px);overflow:hidden auto;box-shadow:var(--vp-shadow-3)}@media (min-width: 960px){.items[data-v-17a5e62e]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-17a5e62e]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-17a5e62e]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-17a5e62e]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-17a5e62e]{transition:all .2s ease-out}.flyout-leave-active[data-v-17a5e62e]{transition:all .15s ease-in}.flyout-enter-from[data-v-17a5e62e],.flyout-leave-to[data-v-17a5e62e]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-a6f0e41e]{position:sticky;top:0;left:0;z-index:var(--vp-z-index-local-nav);border-bottom:1px solid var(--vp-c-gutter);padding-top:var(--vp-layout-top-height, 0px);width:100%;background-color:var(--vp-local-nav-bg-color)}.VPLocalNav.fixed[data-v-a6f0e41e]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-a6f0e41e]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-a6f0e41e]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-a6f0e41e]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-a6f0e41e]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-a6f0e41e]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-a6f0e41e]{display:flex;align-items:center;padding:12px 24px 11px;line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.menu[data-v-a6f0e41e]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-a6f0e41e]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-a6f0e41e]{display:none}}.menu-icon[data-v-a6f0e41e]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-a6f0e41e]{padding:12px 32px 11px}}.VPSwitch[data-v-1d5665e3]{position:relative;border-radius:11px;display:block;width:40px;height:22px;flex-shrink:0;border:1px solid var(--vp-input-border-color);background-color:var(--vp-input-switch-bg-color);transition:border-color .25s!important}.VPSwitch[data-v-1d5665e3]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-1d5665e3]{position:absolute;top:1px;left:1px;width:18px;height:18px;border-radius:50%;background-color:var(--vp-c-neutral-inverse);box-shadow:var(--vp-shadow-1);transition:transform .25s!important}.icon[data-v-1d5665e3]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-1d5665e3] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-1d5665e3] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-5337faa4]{opacity:1}.moon[data-v-5337faa4],.dark .sun[data-v-5337faa4]{opacity:0}.dark .moon[data-v-5337faa4]{opacity:1}.dark .VPSwitchAppearance[data-v-5337faa4] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-6c893767]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-6c893767]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-43f1e123]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-43f1e123]{display:block;border-radius:6px;padding:0 12px;line-height:32px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);white-space:nowrap;transition:background-color .25s,color .25s}.link[data-v-43f1e123]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-43f1e123]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-69e747b5]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-69e747b5]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-69e747b5]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-69e747b5]{padding:0 12px;line-height:32px;font-size:14px;font-weight:600;color:var(--vp-c-text-2);white-space:nowrap;transition:color .25s}.VPMenu[data-v-b98bc113]{border-radius:12px;padding:12px;min-width:128px;border:1px solid var(--vp-c-divider);background-color:var(--vp-c-bg-elv);box-shadow:var(--vp-shadow-3);transition:background-color .5s;max-height:calc(100vh - var(--vp-nav-height));overflow-y:auto}.VPMenu[data-v-b98bc113] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-b98bc113] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-b98bc113] .group:last-child{padding-bottom:0}.VPMenu[data-v-b98bc113] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-b98bc113] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-b98bc113] .label{flex-grow:1;line-height:28px;font-size:12px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.VPMenu[data-v-b98bc113] .action{padding-left:24px}.VPFlyout[data-v-b6c34ac9]{position:relative}.VPFlyout[data-v-b6c34ac9]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-b6c34ac9]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-b6c34ac9]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-b6c34ac9]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-b6c34ac9]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-b6c34ac9],.button[aria-expanded=true]+.menu[data-v-b6c34ac9]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-b6c34ac9]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-b6c34ac9]{display:flex;align-items:center;padding:0 12px;height:var(--vp-nav-height);color:var(--vp-c-text-1);transition:color .5s}.text[data-v-b6c34ac9]{display:flex;align-items:center;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.option-icon[data-v-b6c34ac9]{margin-right:0;font-size:16px}.text-icon[data-v-b6c34ac9]{margin-left:4px;font-size:14px}.icon[data-v-b6c34ac9]{font-size:20px;transition:fill .25s}.menu[data-v-b6c34ac9]{position:absolute;top:calc(var(--vp-nav-height) / 2 + 20px);right:0;opacity:0;visibility:hidden;transition:opacity .25s,visibility .25s,transform .25s}.VPSocialLink[data-v-eee4e7cb]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-eee4e7cb]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-eee4e7cb]>svg,.VPSocialLink[data-v-eee4e7cb]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-7bc22406]{display:flex;justify-content:center}.VPNavBarExtra[data-v-bb2aa2f0]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-bb2aa2f0]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-bb2aa2f0]{display:none}}.trans-title[data-v-bb2aa2f0]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-bb2aa2f0],.item.social-links[data-v-bb2aa2f0]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-bb2aa2f0]{min-width:176px}.appearance-action[data-v-bb2aa2f0]{margin-right:-2px}.social-links-list[data-v-bb2aa2f0]{margin:-4px -8px}.VPNavBarHamburger[data-v-e5dd9c1c]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-e5dd9c1c]{display:none}}.container[data-v-e5dd9c1c]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-e5dd9c1c]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-e5dd9c1c]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .middle[data-v-e5dd9c1c],.VPNavBarHamburger.active:hover .bottom[data-v-e5dd9c1c]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-e5dd9c1c],.middle[data-v-e5dd9c1c],.bottom[data-v-e5dd9c1c]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-e5dd9c1c]{top:0;left:0;transform:translate(0)}.middle[data-v-e5dd9c1c]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-e5dd9c1c]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-9c663999]{display:flex;align-items:center;padding:0 12px;line-height:var(--vp-nav-height);font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.VPNavBarMenuLink.active[data-v-9c663999],.VPNavBarMenuLink[data-v-9c663999]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-dc692963]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-dc692963]{display:flex}}/*! @docsearch/css 3.6.1 | MIT License | © Algolia, Inc. and contributors | https://docsearch.algolia.com */:root{--docsearch-primary-color:#5468ff;--docsearch-text-color:#1c1e21;--docsearch-spacing:12px;--docsearch-icon-stroke-width:1.4;--docsearch-highlight-color:var(--docsearch-primary-color);--docsearch-muted-color:#969faf;--docsearch-container-background:rgba(101,108,133,.8);--docsearch-logo-color:#5468ff;--docsearch-modal-width:560px;--docsearch-modal-height:600px;--docsearch-modal-background:#f5f6f7;--docsearch-modal-shadow:inset 1px 1px 0 0 hsla(0,0%,100%,.5),0 3px 8px 0 #555a64;--docsearch-searchbox-height:56px;--docsearch-searchbox-background:#ebedf0;--docsearch-searchbox-focus-background:#fff;--docsearch-searchbox-shadow:inset 0 0 0 2px var(--docsearch-primary-color);--docsearch-hit-height:56px;--docsearch-hit-color:#444950;--docsearch-hit-active-color:#fff;--docsearch-hit-background:#fff;--docsearch-hit-shadow:0 1px 3px 0 #d4d9e1;--docsearch-key-gradient:linear-gradient(-225deg,#d5dbe4,#f8f8f8);--docsearch-key-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 2px 1px rgba(30,35,90,.4);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #cdcde6,inset 0 0 1px 1px #fff,0 1px 1px 0 rgba(30,35,90,.4);--docsearch-footer-height:44px;--docsearch-footer-background:#fff;--docsearch-footer-shadow:0 -1px 0 0 #e0e3e8,0 -3px 6px 0 rgba(69,98,155,.12)}html[data-theme=dark]{--docsearch-text-color:#f5f6f7;--docsearch-container-background:rgba(9,10,17,.8);--docsearch-modal-background:#15172a;--docsearch-modal-shadow:inset 1px 1px 0 0 #2c2e40,0 3px 8px 0 #000309;--docsearch-searchbox-background:#090a11;--docsearch-searchbox-focus-background:#000;--docsearch-hit-color:#bec3c9;--docsearch-hit-shadow:none;--docsearch-hit-background:#090a11;--docsearch-key-gradient:linear-gradient(-26.5deg,#565872,#31355b);--docsearch-key-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 2px 2px 0 rgba(3,4,9,.3);--docsearch-key-pressed-shadow:inset 0 -2px 0 0 #282d55,inset 0 0 1px 1px #51577d,0 1px 1px 0 rgba(3,4,9,.30196078431372547);--docsearch-footer-background:#1e2136;--docsearch-footer-shadow:inset 0 1px 0 0 rgba(73,76,106,.5),0 -4px 8px 0 rgba(0,0,0,.2);--docsearch-logo-color:#fff;--docsearch-muted-color:#7f8497}.DocSearch-Button{align-items:center;background:var(--docsearch-searchbox-background);border:0;border-radius:40px;color:var(--docsearch-muted-color);cursor:pointer;display:flex;font-weight:500;height:36px;justify-content:space-between;margin:0 0 0 16px;padding:0 8px;-webkit-user-select:none;user-select:none}.DocSearch-Button:active,.DocSearch-Button:focus,.DocSearch-Button:hover{background:var(--docsearch-searchbox-focus-background);box-shadow:var(--docsearch-searchbox-shadow);color:var(--docsearch-text-color);outline:none}.DocSearch-Button-Container{align-items:center;display:flex}.DocSearch-Search-Icon{stroke-width:1.6}.DocSearch-Button .DocSearch-Search-Icon{color:var(--docsearch-text-color)}.DocSearch-Button-Placeholder{font-size:1rem;padding:0 12px 0 6px}.DocSearch-Button-Keys{display:flex;min-width:calc(40px + .8em)}.DocSearch-Button-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:3px;box-shadow:var(--docsearch-key-shadow);color:var(--docsearch-muted-color);display:flex;height:18px;justify-content:center;margin-right:.4em;position:relative;padding:0 0 2px;border:0;top:-1px;width:20px}.DocSearch-Button-Key--pressed{transform:translate3d(0,1px,0);box-shadow:var(--docsearch-key-pressed-shadow)}@media (max-width:768px){.DocSearch-Button-Keys,.DocSearch-Button-Placeholder{display:none}}.DocSearch--active{overflow:hidden!important}.DocSearch-Container,.DocSearch-Container *{box-sizing:border-box}.DocSearch-Container{background-color:var(--docsearch-container-background);height:100vh;left:0;position:fixed;top:0;width:100vw;z-index:200}.DocSearch-Container a{text-decoration:none}.DocSearch-Link{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;font:inherit;margin:0;padding:0}.DocSearch-Modal{background:var(--docsearch-modal-background);border-radius:6px;box-shadow:var(--docsearch-modal-shadow);flex-direction:column;margin:60px auto auto;max-width:var(--docsearch-modal-width);position:relative}.DocSearch-SearchBar{display:flex;padding:var(--docsearch-spacing) var(--docsearch-spacing) 0}.DocSearch-Form{align-items:center;background:var(--docsearch-searchbox-focus-background);border-radius:4px;box-shadow:var(--docsearch-searchbox-shadow);display:flex;height:var(--docsearch-searchbox-height);margin:0;padding:0 var(--docsearch-spacing);position:relative;width:100%}.DocSearch-Input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:transparent;border:0;color:var(--docsearch-text-color);flex:1;font:inherit;font-size:1.2em;height:100%;outline:none;padding:0 0 0 8px;width:80%}.DocSearch-Input::placeholder{color:var(--docsearch-muted-color);opacity:1}.DocSearch-Input::-webkit-search-cancel-button,.DocSearch-Input::-webkit-search-decoration,.DocSearch-Input::-webkit-search-results-button,.DocSearch-Input::-webkit-search-results-decoration{display:none}.DocSearch-LoadingIndicator,.DocSearch-MagnifierLabel,.DocSearch-Reset{margin:0;padding:0}.DocSearch-MagnifierLabel,.DocSearch-Reset{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}.DocSearch-Container--Stalled .DocSearch-MagnifierLabel,.DocSearch-LoadingIndicator{display:none}.DocSearch-Container--Stalled .DocSearch-LoadingIndicator{align-items:center;color:var(--docsearch-highlight-color);display:flex;justify-content:center}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Reset{animation:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;right:0;stroke-width:var(--docsearch-icon-stroke-width)}}.DocSearch-Reset{animation:fade-in .1s ease-in forwards;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:var(--docsearch-icon-color);cursor:pointer;padding:2px;right:0;stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Reset[hidden]{display:none}.DocSearch-Reset:hover{color:var(--docsearch-highlight-color)}.DocSearch-LoadingIndicator svg,.DocSearch-MagnifierLabel svg{height:24px;width:24px}.DocSearch-Cancel{display:none}.DocSearch-Dropdown{max-height:calc(var(--docsearch-modal-height) - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height));min-height:var(--docsearch-spacing);overflow-y:auto;overflow-y:overlay;padding:0 var(--docsearch-spacing);scrollbar-color:var(--docsearch-muted-color) var(--docsearch-modal-background);scrollbar-width:thin}.DocSearch-Dropdown::-webkit-scrollbar{width:12px}.DocSearch-Dropdown::-webkit-scrollbar-track{background:transparent}.DocSearch-Dropdown::-webkit-scrollbar-thumb{background-color:var(--docsearch-muted-color);border:3px solid var(--docsearch-modal-background);border-radius:20px}.DocSearch-Dropdown ul{list-style:none;margin:0;padding:0}.DocSearch-Label{font-size:.75em;line-height:1.6em}.DocSearch-Help,.DocSearch-Label{color:var(--docsearch-muted-color)}.DocSearch-Help{font-size:.9em;margin:0;-webkit-user-select:none;user-select:none}.DocSearch-Title{font-size:1.2em}.DocSearch-Logo a{display:flex}.DocSearch-Logo svg{color:var(--docsearch-logo-color);margin-left:8px}.DocSearch-Hits:last-of-type{margin-bottom:24px}.DocSearch-Hits mark{background:none;color:var(--docsearch-highlight-color)}.DocSearch-HitsFooter{color:var(--docsearch-muted-color);display:flex;font-size:.85em;justify-content:center;margin-bottom:var(--docsearch-spacing);padding:var(--docsearch-spacing)}.DocSearch-HitsFooter a{border-bottom:1px solid;color:inherit}.DocSearch-Hit{border-radius:4px;display:flex;padding-bottom:4px;position:relative}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--deleting{transition:none}}.DocSearch-Hit--deleting{opacity:0;transition:all .25s linear}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit--favoriting{transition:none}}.DocSearch-Hit--favoriting{transform:scale(0);transform-origin:top center;transition:all .25s linear;transition-delay:.25s}.DocSearch-Hit a{background:var(--docsearch-hit-background);border-radius:4px;box-shadow:var(--docsearch-hit-shadow);display:block;padding-left:var(--docsearch-spacing);width:100%}.DocSearch-Hit-source{background:var(--docsearch-modal-background);color:var(--docsearch-highlight-color);font-size:.85em;font-weight:600;line-height:32px;margin:0 -4px;padding:8px 4px 0;position:sticky;top:0;z-index:10}.DocSearch-Hit-Tree{color:var(--docsearch-muted-color);height:var(--docsearch-hit-height);opacity:.5;stroke-width:var(--docsearch-icon-stroke-width);width:24px}.DocSearch-Hit[aria-selected=true] a{background-color:var(--docsearch-highlight-color)}.DocSearch-Hit[aria-selected=true] mark{text-decoration:underline}.DocSearch-Hit-Container{align-items:center;color:var(--docsearch-hit-color);display:flex;flex-direction:row;height:var(--docsearch-hit-height);padding:0 var(--docsearch-spacing) 0 0}.DocSearch-Hit-icon{height:20px;width:20px}.DocSearch-Hit-action,.DocSearch-Hit-icon{color:var(--docsearch-muted-color);stroke-width:var(--docsearch-icon-stroke-width)}.DocSearch-Hit-action{align-items:center;display:flex;height:22px;width:22px}.DocSearch-Hit-action svg{display:block;height:18px;width:18px}.DocSearch-Hit-action+.DocSearch-Hit-action{margin-left:6px}.DocSearch-Hit-action-button{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:50%;color:inherit;cursor:pointer;padding:2px}svg.DocSearch-Hit-Select-Icon{display:none}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Select-Icon{display:block}.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:background-color .1s ease-in}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{transition:none}}.DocSearch-Hit-action-button:focus path,.DocSearch-Hit-action-button:hover path{fill:#fff}.DocSearch-Hit-content-wrapper{display:flex;flex:1 1 auto;flex-direction:column;font-weight:500;justify-content:center;line-height:1.2em;margin:0 8px;overflow-x:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;width:80%}.DocSearch-Hit-title{font-size:.9em}.DocSearch-Hit-path{color:var(--docsearch-muted-color);font-size:.75em}.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-action,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-icon,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-path,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-text,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-title,.DocSearch-Hit[aria-selected=true] .DocSearch-Hit-Tree,.DocSearch-Hit[aria-selected=true] mark{color:var(--docsearch-hit-active-color)!important}@media screen and (prefers-reduced-motion:reduce){.DocSearch-Hit-action-button:focus,.DocSearch-Hit-action-button:hover{background:#0003;transition:none}}.DocSearch-ErrorScreen,.DocSearch-NoResults,.DocSearch-StartScreen{font-size:.9em;margin:0 auto;padding:36px 0;text-align:center;width:80%}.DocSearch-Screen-Icon{color:var(--docsearch-muted-color);padding-bottom:12px}.DocSearch-NoResults-Prefill-List{display:inline-block;padding-bottom:24px;text-align:left}.DocSearch-NoResults-Prefill-List ul{display:inline-block;padding:8px 0 0}.DocSearch-NoResults-Prefill-List li{list-style-position:inside;list-style-type:"» "}.DocSearch-Prefill{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;border-radius:1em;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;font-size:1em;font-weight:700;padding:0}.DocSearch-Prefill:focus,.DocSearch-Prefill:hover{outline:none;text-decoration:underline}.DocSearch-Footer{align-items:center;background:var(--docsearch-footer-background);border-radius:0 0 8px 8px;box-shadow:var(--docsearch-footer-shadow);display:flex;flex-direction:row-reverse;flex-shrink:0;height:var(--docsearch-footer-height);justify-content:space-between;padding:0 var(--docsearch-spacing);position:relative;-webkit-user-select:none;user-select:none;width:100%;z-index:300}.DocSearch-Commands{color:var(--docsearch-muted-color);display:flex;list-style:none;margin:0;padding:0}.DocSearch-Commands li{align-items:center;display:flex}.DocSearch-Commands li:not(:last-of-type){margin-right:.8em}.DocSearch-Commands-Key{align-items:center;background:var(--docsearch-key-gradient);border-radius:2px;box-shadow:var(--docsearch-key-shadow);display:flex;height:18px;justify-content:center;margin-right:.4em;padding:0 0 1px;color:var(--docsearch-muted-color);border:0;width:20px}.DocSearch-VisuallyHiddenForAccessibility{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}@media (max-width:768px){:root{--docsearch-spacing:10px;--docsearch-footer-height:40px}.DocSearch-Dropdown{height:100%}.DocSearch-Container{height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);position:absolute}.DocSearch-Footer{border-radius:0;bottom:0;position:absolute}.DocSearch-Hit-content-wrapper{display:flex;position:relative;width:80%}.DocSearch-Modal{border-radius:0;box-shadow:none;height:100vh;height:-webkit-fill-available;height:calc(var(--docsearch-vh, 1vh)*100);margin:0;max-width:100%;width:100%}.DocSearch-Dropdown{max-height:calc(var(--docsearch-vh, 1vh)*100 - var(--docsearch-searchbox-height) - var(--docsearch-spacing) - var(--docsearch-footer-height))}.DocSearch-Cancel{-webkit-appearance:none;-moz-appearance:none;appearance:none;background:none;border:0;color:var(--docsearch-highlight-color);cursor:pointer;display:inline-block;flex:none;font:inherit;font-size:1em;font-weight:500;margin-left:var(--docsearch-spacing);outline:none;overflow:hidden;padding:0;-webkit-user-select:none;user-select:none;white-space:nowrap}.DocSearch-Commands,.DocSearch-Hit-Tree{display:none}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}[class*=DocSearch]{--docsearch-primary-color: var(--vp-c-brand-1);--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-text-color: var(--vp-c-text-1);--docsearch-muted-color: var(--vp-c-text-2);--docsearch-searchbox-shadow: none;--docsearch-searchbox-background: transparent;--docsearch-searchbox-focus-background: transparent;--docsearch-key-gradient: transparent;--docsearch-key-shadow: none;--docsearch-modal-background: var(--vp-c-bg-soft);--docsearch-footer-background: var(--vp-c-bg)}.dark [class*=DocSearch]{--docsearch-modal-shadow: none;--docsearch-footer-shadow: none;--docsearch-logo-color: var(--vp-c-text-2);--docsearch-hit-background: var(--vp-c-default-soft);--docsearch-hit-color: var(--vp-c-text-2);--docsearch-hit-shadow: none}.DocSearch-Button{display:flex;justify-content:center;align-items:center;margin:0;padding:0;width:48px;height:55px;background:transparent;transition:border-color .25s}.DocSearch-Button:hover{background:transparent}.DocSearch-Button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}.DocSearch-Button-Key--pressed{transform:none;box-shadow:none}.DocSearch-Button:focus:not(:focus-visible){outline:none!important}@media (min-width: 768px){.DocSearch-Button{justify-content:flex-start;border:1px solid transparent;border-radius:8px;padding:0 10px 0 12px;width:100%;height:40px;background-color:var(--vp-c-bg-alt)}.DocSearch-Button:hover{border-color:var(--vp-c-brand-1);background:var(--vp-c-bg-alt)}}.DocSearch-Button .DocSearch-Button-Container{display:flex;align-items:center}.DocSearch-Button .DocSearch-Search-Icon{position:relative;width:16px;height:16px;color:var(--vp-c-text-1);fill:currentColor;transition:color .5s}.DocSearch-Button:hover .DocSearch-Search-Icon{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Search-Icon{top:1px;margin-right:8px;width:14px;height:14px;color:var(--vp-c-text-2)}}.DocSearch-Button .DocSearch-Button-Placeholder{display:none;margin-top:2px;padding:0 16px 0 0;font-size:13px;font-weight:500;color:var(--vp-c-text-2);transition:color .5s}.DocSearch-Button:hover .DocSearch-Button-Placeholder{color:var(--vp-c-text-1)}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Placeholder{display:inline-block}}.DocSearch-Button .DocSearch-Button-Keys{direction:ltr;display:none;min-width:auto}@media (min-width: 768px){.DocSearch-Button .DocSearch-Button-Keys{display:flex;align-items:center}}.DocSearch-Button .DocSearch-Button-Key{display:block;margin:2px 0 0;border:1px solid var(--vp-c-divider);border-right:none;border-radius:4px 0 0 4px;padding-left:6px;min-width:0;width:auto;height:22px;line-height:22px;font-family:var(--vp-font-family-base);font-size:12px;font-weight:500;transition:color .5s,border-color .5s}.DocSearch-Button .DocSearch-Button-Key+.DocSearch-Button-Key{border-right:1px solid var(--vp-c-divider);border-left:none;border-radius:0 4px 4px 0;padding-left:2px;padding-right:6px}.DocSearch-Button .DocSearch-Button-Key:first-child{font-size:0!important}.DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"Ctrl";font-size:12px;letter-spacing:normal;color:var(--docsearch-muted-color)}.mac .DocSearch-Button .DocSearch-Button-Key:first-child:after{content:"⌘"}.DocSearch-Button .DocSearch-Button-Key:first-child>*{display:none}.DocSearch-Search-Icon{--icon: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' stroke-width='1.6' viewBox='0 0 20 20'%3E%3Cpath fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' d='m14.386 14.386 4.088 4.088-4.088-4.088A7.533 7.533 0 1 1 3.733 3.733a7.533 7.533 0 0 1 10.653 10.653z'/%3E%3C/svg%3E")}.VPNavBarSearch{display:flex;align-items:center}@media (min-width: 768px){.VPNavBarSearch{flex-grow:1;padding-left:24px}}@media (min-width: 960px){.VPNavBarSearch{padding-left:32px}}.dark .DocSearch-Footer{border-top:1px solid var(--vp-c-divider)}.DocSearch-Form{border:1px solid var(--vp-c-brand-1);background-color:var(--vp-c-white)}.dark .DocSearch-Form{background-color:var(--vp-c-default-soft)}.DocSearch-Screen-Icon>svg{margin:auto}.VPNavBarSocialLinks[data-v-0394ad82]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-0394ad82]{display:flex;align-items:center}}.title[data-v-ab179fa1]{display:flex;align-items:center;border-bottom:1px solid transparent;width:100%;height:var(--vp-nav-height);font-size:16px;font-weight:600;color:var(--vp-c-text-1);transition:opacity .25s}@media (min-width: 960px){.title[data-v-ab179fa1]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-ab179fa1]{border-bottom-color:var(--vp-c-divider)}}[data-v-ab179fa1] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-88af2de4]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-88af2de4]{display:flex;align-items:center}}.title[data-v-88af2de4]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-6aa21345]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-6aa21345]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-6aa21345]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-6aa21345]:not(.home){background-color:transparent}.VPNavBar[data-v-6aa21345]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-6aa21345]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-6aa21345]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-6aa21345]{padding:0}}.container[data-v-6aa21345]{display:flex;justify-content:space-between;margin:0 auto;max-width:calc(var(--vp-layout-max-width) - 64px);height:var(--vp-nav-height);pointer-events:none}.container>.title[data-v-6aa21345],.container>.content[data-v-6aa21345]{pointer-events:none}.container[data-v-6aa21345] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-6aa21345]{max-width:100%}}.title[data-v-6aa21345]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-6aa21345]{position:absolute;top:0;left:0;z-index:2;padding:0 32px;width:var(--vp-sidebar-width);height:var(--vp-nav-height);background-color:transparent}}@media (min-width: 1440px){.VPNavBar.has-sidebar .title[data-v-6aa21345]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}.content[data-v-6aa21345]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-6aa21345]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-6aa21345]{padding-right:calc((100vw - var(--vp-layout-max-width)) / 2 + 32px);padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.content-body[data-v-6aa21345]{display:flex;justify-content:flex-end;align-items:center;height:var(--vp-nav-height);transition:background-color .5s}@media (min-width: 960px){.VPNavBar:not(.home.top) .content-body[data-v-6aa21345]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-6aa21345]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-6aa21345]{column-gap:.5rem}}.menu+.translations[data-v-6aa21345]:before,.menu+.appearance[data-v-6aa21345]:before,.menu+.social-links[data-v-6aa21345]:before,.translations+.appearance[data-v-6aa21345]:before,.appearance+.social-links[data-v-6aa21345]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-6aa21345]:before,.translations+.appearance[data-v-6aa21345]:before{margin-right:16px}.appearance+.social-links[data-v-6aa21345]:before{margin-left:16px}.social-links[data-v-6aa21345]{margin-right:-8px}.divider[data-v-6aa21345]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-6aa21345]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-6aa21345]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-6aa21345]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-6aa21345]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-6aa21345]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-6aa21345]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-b44890b2]{display:flex;justify-content:space-between;align-items:center;border-radius:8px;padding:12px 14px 12px 16px;background-color:var(--vp-c-bg-soft)}.text[data-v-b44890b2]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-7f31e1f6]{display:block;border-bottom:1px solid var(--vp-c-divider);padding:12px 0 11px;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:border-color .25s,color .25s}.VPNavScreenMenuLink[data-v-7f31e1f6]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-19976ae1]{display:block;margin-left:12px;line-height:32px;font-size:14px;font-weight:400;color:var(--vp-c-text-1);transition:color .25s}.VPNavScreenMenuGroupLink[data-v-19976ae1]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-8133b170]{display:block}.title[data-v-8133b170]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-b9ab8c58]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-b9ab8c58]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-b9ab8c58]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-b9ab8c58]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-b9ab8c58]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-b9ab8c58]{transform:rotate(45deg)}.button[data-v-b9ab8c58]{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 11px 0;width:100%;line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-1);transition:color .25s}.button[data-v-b9ab8c58]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-b9ab8c58]{transition:transform .25s}.group[data-v-b9ab8c58]:first-child{padding-top:0}.group+.group[data-v-b9ab8c58],.group+.item[data-v-b9ab8c58]{padding-top:4px}.VPNavScreenTranslations[data-v-858fe1a4]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-858fe1a4]{height:auto}.title[data-v-858fe1a4]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-858fe1a4]{font-size:16px}.icon.lang[data-v-858fe1a4]{margin-right:8px}.icon.chevron[data-v-858fe1a4]{margin-left:4px}.list[data-v-858fe1a4]{padding:4px 0 0 24px}.link[data-v-858fe1a4]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-f2779853]{position:fixed;top:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px));right:0;bottom:0;left:0;padding:0 32px;width:100%;background-color:var(--vp-nav-screen-bg-color);overflow-y:auto;transition:background-color .25s;pointer-events:auto}.VPNavScreen.fade-enter-active[data-v-f2779853],.VPNavScreen.fade-leave-active[data-v-f2779853]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-f2779853],.VPNavScreen.fade-leave-active .container[data-v-f2779853]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-f2779853],.VPNavScreen.fade-leave-to[data-v-f2779853]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-f2779853],.VPNavScreen.fade-leave-to .container[data-v-f2779853]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-f2779853]{display:none}}.container[data-v-f2779853]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-f2779853],.menu+.appearance[data-v-f2779853],.translations+.appearance[data-v-f2779853]{margin-top:24px}.menu+.social-links[data-v-f2779853]{margin-top:16px}.appearance+.social-links[data-v-f2779853]{margin-top:16px}.VPNav[data-v-ae24b3ad]{position:relative;top:var(--vp-layout-top-height, 0px);left:0;z-index:var(--vp-z-index-nav);width:100%;pointer-events:none;transition:background-color .5s}@media (min-width: 960px){.VPNav[data-v-ae24b3ad]{position:fixed}}.VPSidebarItem.level-0[data-v-b7550ba0]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-b7550ba0]{padding-bottom:10px}.item[data-v-b7550ba0]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-b7550ba0]{cursor:pointer}.indicator[data-v-b7550ba0]{position:absolute;top:6px;bottom:6px;left:-17px;width:2px;border-radius:2px;transition:background-color .25s}.VPSidebarItem.level-2.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-b7550ba0],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-b7550ba0]{background-color:var(--vp-c-brand-1)}.link[data-v-b7550ba0]{display:flex;align-items:center;flex-grow:1}.text[data-v-b7550ba0]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-b7550ba0]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-b7550ba0],.VPSidebarItem.level-2 .text[data-v-b7550ba0],.VPSidebarItem.level-3 .text[data-v-b7550ba0],.VPSidebarItem.level-4 .text[data-v-b7550ba0],.VPSidebarItem.level-5 .text[data-v-b7550ba0]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-b7550ba0],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-b7550ba0]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-1.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-2.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-3.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-4.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-5.has-active>.item>.text[data-v-b7550ba0],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-b7550ba0],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-b7550ba0]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-b7550ba0],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-b7550ba0]{color:var(--vp-c-brand-1)}.caret[data-v-b7550ba0]{display:flex;justify-content:center;align-items:center;margin-right:-7px;width:32px;height:32px;color:var(--vp-c-text-3);cursor:pointer;transition:color .25s;flex-shrink:0}.item:hover .caret[data-v-b7550ba0]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-b7550ba0]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-b7550ba0]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-b7550ba0]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-b7550ba0],.VPSidebarItem.level-2 .items[data-v-b7550ba0],.VPSidebarItem.level-3 .items[data-v-b7550ba0],.VPSidebarItem.level-4 .items[data-v-b7550ba0],.VPSidebarItem.level-5 .items[data-v-b7550ba0]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-b7550ba0]{display:none}.no-transition[data-v-c40bc020] .caret-icon{transition:none}.group+.group[data-v-c40bc020]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-c40bc020]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-319d5ca6]{position:fixed;top:var(--vp-layout-top-height, 0px);bottom:0;left:0;z-index:var(--vp-z-index-sidebar);padding:32px 32px 96px;width:calc(100vw - 64px);max-width:320px;background-color:var(--vp-sidebar-bg-color);opacity:0;box-shadow:var(--vp-c-shadow-3);overflow-x:hidden;overflow-y:auto;transform:translate(-100%);transition:opacity .5s,transform .25s ease;overscroll-behavior:contain}.VPSidebar.open[data-v-319d5ca6]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-319d5ca6]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-319d5ca6]{padding-top:var(--vp-nav-height);width:var(--vp-sidebar-width);max-width:100%;background-color:var(--vp-sidebar-bg-color);opacity:1;visibility:visible;box-shadow:none;transform:translate(0)}}@media (min-width: 1440px){.VPSidebar[data-v-319d5ca6]{padding-left:max(32px,calc((100% - (var(--vp-layout-max-width) - 64px)) / 2));width:calc((100% - (var(--vp-layout-max-width) - 64px)) / 2 + var(--vp-sidebar-width) - 32px)}}@media (min-width: 960px){.curtain[data-v-319d5ca6]{position:sticky;top:-64px;left:0;z-index:1;margin-top:calc(var(--vp-nav-height) * -1);margin-right:-32px;margin-left:-32px;height:var(--vp-nav-height);background-color:var(--vp-sidebar-bg-color)}}.nav[data-v-319d5ca6]{outline:0}.VPSkipLink[data-v-0f60ec36]{top:8px;left:8px;padding:8px 16px;z-index:999;border-radius:8px;font-size:12px;font-weight:700;text-decoration:none;color:var(--vp-c-brand-1);box-shadow:var(--vp-shadow-3);background-color:var(--vp-c-bg)}.VPSkipLink[data-v-0f60ec36]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-0f60ec36]{top:14px;left:16px}}.Layout[data-v-5d98c3a5]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3d121b4a]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3d121b4a]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{margin:128px 0}}.VPHomeSponsors[data-v-3d121b4a]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3d121b4a]{padding:0 64px}}.container[data-v-3d121b4a]{margin:0 auto;max-width:1152px}.love[data-v-3d121b4a]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3d121b4a]{display:inline-block}.message[data-v-3d121b4a]{margin:0 auto;padding-top:10px;max-width:320px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.sponsors[data-v-3d121b4a]{padding-top:32px}.action[data-v-3d121b4a]{padding-top:40px;text-align:center}.VPTeamPage[data-v-7c57f839]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-7c57f839]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-7c57f839-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-7c57f839-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-7c57f839-s],.VPTeamMembers+.VPTeamPageSection[data-v-7c57f839-s]{margin-top:96px}}.VPTeamMembers[data-v-7c57f839-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-7c57f839-s]{padding:0 64px}}.VPTeamPageTitle[data-v-bf2cbdac]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-bf2cbdac]{padding:80px 64px 48px}}.title[data-v-bf2cbdac]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-bf2cbdac]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-bf2cbdac]{margin:0 auto;max-width:512px;padding-top:12px;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 768px){.lead[data-v-bf2cbdac]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-b1a88750]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-b1a88750]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-b1a88750]{padding:0 64px}}.title[data-v-b1a88750]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-b1a88750]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-b1a88750]{position:relative;display:inline-block;padding:0 24px;letter-spacing:0;line-height:32px;font-size:20px;font-weight:500;background-color:var(--vp-c-bg)}.lead[data-v-b1a88750]{margin:0 auto;max-width:480px;padding-top:12px;text-align:center;line-height:24px;font-size:16px;font-weight:500;color:var(--vp-c-text-2)}.members[data-v-b1a88750]{padding-top:40px}.VPTeamMembersItem[data-v-f3fa364a]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-f3fa364a]{padding:32px}.VPTeamMembersItem.small .data[data-v-f3fa364a]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-f3fa364a]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-f3fa364a]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-f3fa364a]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-f3fa364a]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-f3fa364a]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-f3fa364a]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-f3fa364a]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-f3fa364a]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-f3fa364a]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-f3fa364a]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-f3fa364a]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-f3fa364a]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-f3fa364a]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-f3fa364a]{text-align:center}.avatar[data-v-f3fa364a]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-f3fa364a]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-f3fa364a]{margin:0;font-weight:600}.affiliation[data-v-f3fa364a]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-f3fa364a]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-f3fa364a]:hover{color:var(--vp-c-brand-1)}.desc[data-v-f3fa364a]{margin:0 auto}.desc[data-v-f3fa364a] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-f3fa364a]{display:flex;justify-content:center;height:56px}.sp-link[data-v-f3fa364a]{display:flex;justify-content:center;align-items:center;text-align:center;padding:16px;font-size:14px;font-weight:500;color:var(--vp-c-sponsor);background-color:var(--vp-c-bg-soft);transition:color .25s,background-color .25s}.sp .sp-link.link[data-v-f3fa364a]:hover,.sp .sp-link.link[data-v-f3fa364a]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-f3fa364a]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-6cb0dbc4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-6cb0dbc4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-6cb0dbc4]{max-width:876px}.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-6cb0dbc4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-6cb0dbc4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-6cb0dbc4]{max-width:760px}.container[data-v-6cb0dbc4]{display:grid;gap:24px;margin:0 auto;max-width:1152px}code[class*=language-],pre[class*=language-]{color:#000;background:none;text-shadow:0 1px white;font-family:Consolas,Monaco,Andale Mono,Ubuntu Mono,monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,code[class*=language-] ::-moz-selection{text-shadow:none;background:#b3d4fc}pre[class*=language-]::selection,pre[class*=language-] ::selection,code[class*=language-]::selection,code[class*=language-] ::selection{text-shadow:none;background:#b3d4fc}@media print{code[class*=language-],pre[class*=language-]{text-shadow:none}}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto}:not(pre)>code[class*=language-],pre[class*=language-]{background:#f5f2f0}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.comment,.token.prolog,.token.doctype,.token.cdata{color:#708090}.token.punctuation{color:#999}.token.namespace{opacity:.7}.token.property,.token.tag,.token.boolean,.token.number,.token.constant,.token.symbol,.token.deleted{color:#905}.token.selector,.token.attr-name,.token.string,.token.char,.token.builtin,.token.inserted{color:#690}.token.operator,.token.entity,.token.url,.language-css .token.string,.style .token.string{color:#9a6e3a;background:#ffffff80}.token.atrule,.token.attr-value,.token.keyword{color:#07a}.token.function,.token.class-name{color:#dd4a68}.token.regex,.token.important,.token.variable{color:#e90}.token.important,.token.bold{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}.benchmark-table[data-v-eb04f6a7]{width:100%;border-collapse:separate;border-spacing:0;font-size:14px;border-radius:8px;box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -1px #0000000f}.benchmark-table th[data-v-eb04f6a7],.benchmark-table td[data-v-eb04f6a7]{padding:12px;text-align:center;border:none}.benchmark-table th[data-v-eb04f6a7]:first-child,.benchmark-table td[data-v-eb04f6a7]:first-child{width:15%;border-right:1px solid rgba(0,0,0,.1)}.benchmark-table th[data-v-eb04f6a7]:not(:first-child),.benchmark-table td[data-v-eb04f6a7]:not(:first-child){width:17%}.benchmark-table th[data-v-eb04f6a7]{border-bottom:1px solid rgba(0,0,0,.1);border-right:1px solid rgba(0,0,0,.1);background-color:#e2e8f0;color:#1f2937;font-weight:600}.benchmark-table th[data-v-eb04f6a7]:last-child{border-right:none}.question-col[data-v-eb04f6a7],.query-col[data-v-eb04f6a7]{width:15%}.metadata-row td[data-v-eb04f6a7]:first-child{font-weight:600;text-align:left}.query-row[data-v-eb04f6a7]:nth-child(2n){background-color:#f9fafb}.question-cell[data-v-eb04f6a7],.query-cell[data-v-eb04f6a7]{text-align:left}.view-query-btn[data-v-eb04f6a7]{background-color:#8b5cf6cc;color:#fff;border:none;padding:4px 8px;border-radius:4px;cursor:pointer;font-size:14px;font-weight:600;white-space:nowrap;width:100%;transition:all .3s ease;box-shadow:0 1px 3px #0000001a}.view-query-btn[data-v-eb04f6a7]:hover{background-color:#7c3aede6;box-shadow:0 2px 4px #0003;transform:translateY(-1px)}.best[data-v-eb04f6a7]{background-color:#10b98199}.good[data-v-eb04f6a7]{background-color:#f59e0b99}.average[data-v-eb04f6a7]{background-color:#f9731699}.below-average[data-v-eb04f6a7]{background-color:#ef444499}.poor[data-v-eb04f6a7]{background-color:#dc262699}.unavailable[data-v-eb04f6a7]{background-color:#111827b3}.unavailable-icon[data-v-eb04f6a7]{color:#ef4444;font-weight:700}.modal-backdrop[data-v-eb04f6a7]{position:fixed;top:0;left:0;width:100%;height:100%;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal-content[data-v-eb04f6a7]{background-color:#fff;padding:20px;border-radius:8px;max-width:80%;max-height:80%;overflow-y:auto;position:relative}.close-btn[data-v-eb04f6a7]{position:absolute;top:10px;right:10px;background:none;border:none;font-size:24px;cursor:pointer}pre[data-v-eb04f6a7]{background-color:#f3f4f6;padding:15px;border-radius:4px;overflow-x:auto}code[data-v-eb04f6a7]{font-family:Courier New,Courier,monospace;font-size:14px;line-height:1.5}[data-v-eb04f6a7] .token.keyword{color:#00f}[data-v-eb04f6a7] .token.function{color:#f0f}[data-v-eb04f6a7] .token.number{color:#099}[data-v-eb04f6a7] .token.operator{color:#9a6e3a}[data-v-eb04f6a7] .token.punctuation{color:#666}@media (max-width: 768px){.benchmark-table[data-v-eb04f6a7]{font-size:12px}.benchmark-table th[data-v-eb04f6a7],.benchmark-table td[data-v-eb04f6a7]{padding:8px}.view-query-btn[data-v-eb04f6a7]{font-size:10px;padding:2px 4px}} diff --git a/docs/.vitepress/dist/assets/tinybird_arch.C3J8I2tT.png b/docs/.vitepress/dist/assets/tinybird_arch.C3J8I2tT.png new file mode 100644 index 0000000..a01de7d Binary files /dev/null and b/docs/.vitepress/dist/assets/tinybird_arch.C3J8I2tT.png differ diff --git a/docs/.vitepress/dist/assets/webapp.D7dG4eWK.png b/docs/.vitepress/dist/assets/webapp.D7dG4eWK.png new file mode 100644 index 0000000..c540400 Binary files /dev/null and b/docs/.vitepress/dist/assets/webapp.D7dG4eWK.png differ diff --git a/docs/.vitepress/dist/automating-deployment.html b/docs/.vitepress/dist/automating-deployment.html index 02d826f..85f2f5f 100644 --- a/docs/.vitepress/dist/automating-deployment.html +++ b/docs/.vitepress/dist/automating-deployment.html @@ -5,20 +5,21 @@ Automating Deployment | Helios Case Study - - + + - - - - - + + + + + + -
Skip to content

Automating Deployment

Command-Line Interface

The Helios Command-Line Interface (CLI) streamlines the deployment, configuration and management of Helios infrastructure on AWS.

This interface simplifies what would otherwise be complex AWS operations, allowing users to quickly set up, manage, and tear down their Helios environment without navigating multiple AWS interfaces or writing custom scripts.

How it works:

  • When deploying Helios with the CLI, a user will be prompted for an AWS profile name and an optional ChatGPT API key.
  • Once credentials are provided, the CLI uses the stored AWS credentials in your local AWS environment configuration files to deploy all Helios infrastructure within your AWS account.
  • Under the hood, Helios leverages the AWS Cloud Development Kit (AWS CDK) which we will go into more detail below.

AWS CDK

To automate deployment for our users, we evaluated the AWS CDK and Terraform.

  • Terraform: an open source infrastructure as code tool that enables declarative configuration of cloud resources across multiple providers, using its own domain-specific language.
  • AWS CDK: an infrastructure as code framework for defining cloud infrastructure, which then compiles into CloudFormation YAML templates. This process combines the flexibility of a programming language with the reliability of declarative deployments, allowing developers to use object-oriented techniques to model their infrastructure.

Comparing the AWS CDK and Terraform, while we found Terraform easier to use and quicker for initial deployments, however, we ultimately preferred the CDK. In our opinion, it offered us slightly better debugging capabilities and greater control in defining our infrastructure, particularly for complex, interconnected resources.

After careful consideration, we opted for the AWS CDK as our infrastructure-as-code solution.

- +
Skip to content

Automating Deployment

Command-Line Interface

The Helios Command-Line Interface (CLI) streamlines the deployment, configuration and management of Helios infrastructure on AWS.

This interface simplifies what would otherwise be complex AWS operations, allowing users to quickly set up, manage, and tear down their Helios environment without navigating multiple AWS interfaces or writing custom scripts.

How it works:

When deploying Helios with the CLI, a user will be prompted for an AWS profile name and an optional ChatGPT API key.

Once credentials are provided, the CLI uses the stored AWS credentials in your local AWS environment configuration files to deploy all Helios infrastructure within your AWS account.

Under the hood, Helios leverages the AWS Cloud Development Kit (AWS CDK) which we will go into more detail below.

CLI

AWS CDK

To automate deployment for our users, we evaluated the AWS CDK and Terraform.

terraform-iconTerraform: an open source infrastructure as code tool that enables declarative configuration of cloud resources across multiple providers, using its own domain-specific language.

aws-iconAWS CDK: an infrastructure as code framework for defining cloud infrastructure, which then compiles into CloudFormation YAML templates. This process combines the flexibility of a programming language with the reliability of declarative deployments, allowing developers to use object-oriented techniques to model their infrastructure.

Comparing the AWS CDK and Terraform, while we found Terraform easier to use and quicker for initial deployments, however, we ultimately preferred the CDK. In our opinion, it offered us slightly better debugging capabilities and greater control in defining our infrastructure, particularly for complex, interconnected resources.

After careful consideration, we opted for the AWS CDK as our infrastructure-as-code solution.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/building-helios.html b/docs/.vitepress/dist/building-helios.html index 9b88aca..da659e0 100644 --- a/docs/.vitepress/dist/building-helios.html +++ b/docs/.vitepress/dist/building-helios.html @@ -5,20 +5,20 @@ Building Helios: Design Choices | Helios Case Study - - + + - - - - - + + + + + -
Skip to content

Building Helios: Design Choices

Choosing a Database

When evaluating storage solutions for real-time event streaming and querying, we investigated relational databases, document databases, and columnar databases. In this section we explore some of the fundamental differences between these database types.

Our criteria

  1. High write throughput: The database must be capable of handling continuous writes of large volumes of streaming data, allowing Helios to ingest data efficiently without bottlenecks.
  2. Low-latency query performance: Aggregating large datasets for analytical queries inherently challenges performance, and real-time analytics demands rapid insights for timely decision-making. Specifically, the database should be able to execute aggregation queries spanning multiple columns across tens of millions of rows in under a few seconds.
  3. Extensive SQL support: Given SQL's popularity and reliability as a querying language, we prioritized databases that support a wide range of SQL features. This ensures users can leverage complex joins, filters, and aggregations, enhancing the flexibility and depth of their data analysis.

Document-based Storage

Document databases such as MongoDB and Couchbase store data in flexible, JSON-like documents. Each document can have a different structure, allowing for schema flexibility. Many document databases are designed for horizontal scaling and quick read access for contiguous pieces of data.

While document databases offer schema flexibility, we require our data to have a consistent structure, making schema flexibility a liability rather than an asset. In addition, they don’t align with our needs for high-performance analytical queries across large datasets. Please see our benchmarking section for performance metrics.

Row-based Storage

Relational databases such as Postgres and MySQL use row-based storage. It is the conventional method of storing data, where each row is treated as a primary unit and is sequentially stored on the disk. A key characteristic of row-based storage includes efficient transactions, particularly in regards to record updates and deletions.

However, row-based storage is often inefficient when it comes to analytical queries, especially those that require an aggregation of data over a few columns. In these queries, the database must read entire rows of data even when only a subset of columns are needed.

The following is a basic event table along with a basic analytic query that asks the question “How many events has each user initiated?”

Below is an example of how row-based databases might execute an analytical query:

Column-based Storage

Columnar databases such as Clickhouse and Apache Druid use column-based storage. The key difference is that columns are treated as the primary unit and stored sequentially on the disk. When running queries that span only a few columns, a columnar database can ignore unneeded columns. Additionally, columns can be compressed more efficiently than rows, leading to better storage efficiency and speed. More performance details can be found in our Benchmarking[link] section.

Below is an example of how column-based databases might execute an analytical query:

One key limitation is that the data in a columnar database is not well-suited for frequent updates or deletions of existing data. Fortunately, this drawback should not be limiting for Helios users. By nature, many real-time streaming data use-cases mostly require database reads and insertions that do not modify existing data.

After evaluating these database types, it was clear that columnar-based storage is the best fit for analytical queries.

Why Clickhouse

After deciding on a columnar database, we evaluated a number of database option and ultimately selected Clickhouse as our preferred choice because it met all of our original criteria and had a few extra standout benefits:

  • High write throughput
  • Low-latency query performance
  • SQL Support
  • Comprehensive Documentation
  • Open Source

Of the criteria listed above, the one that stood out to us the most was ClickHouse’s low read and write latency. Detailed benchmark information can be found in ‘Load Testing.’

Deploying ClickHouse

Single Node vs Node Cluster

We explored several options when determining the optimal deployment strategy for the Helios production ClickHouse server. While many database deployments utilize clustered architectures for high availability and scalability, with modern implementations often leveraging containerization and orchestration tools like Kubernetes, we found this approach less suitable for ClickHouse.

Contrary to the typical horizontal scaling strategy for other database types like Druid, the ClickHouse development team specifically advises against premature horizontal scaling. Their recommendation stems from ClickHouse's design, which is optimized for efficient performance on a single server, even at scales of hundreds of billions of rows. This guidance challenged our initial assumptions about needing a containerized cluster deployment strategy.

💡 “ClickHouse was designed from the ground up to utilize the full resources of a machine. We commonly find successful deployments with ClickHouse deployed on servers with hundreds of cores, terabytes of RAM, and petabytes of disk space. Most analytical queries have a sort, filter, and aggregation stage. Each of these can be parallelized independently and will, by default, use as many threads as cores, thus utilizing the full machine resources for a query.”

Key factors in our decision-making process included:

  1. Performance optimization: ClickHouse can efficiently handle massive datasets on a single server
  2. Simplicity: Reduced complexity in deployment and management compared to a clustered setup.
  3. Cost-effectiveness: Maximizing resource utilization before scaling horizontally.
  4. Scalability: Ensuring our architecture can still accommodate future growth when necessary.

Based on these considerations, we opted to host ClickHouse on an Amazon EC2 virtual server with Elastic Block Storage (EBS). This approach allows us to leverage ClickHouse's inherent strengths while maintaining the flexibility for users to scale as needed. Later in the Scaling Helios section, we will go deeper into EBS and other vertical scaling considerations as it pertains to Helios.

Lambda Trade-offs

Cold Starts

Users of Helios may experience an initial delay when connecting their Kinesis streams, this is due to the AWS Lambda cold start. We looked into cold starts to better understand if this would have a significant impact on our user experience.

Lambda functions typically operate on a shared pool of virtual CPUs, essentially Amazon EC2 instances. When a request comes in, AWS must allocate a worker from this EC2 pool to handle it. This allocation process involves initializing the execution environment and loading a module containing the provided function code. This setup process explains why cold starts occur, introducing a brief delay before the function can begin processing the request.

This prep time setting up the execution environment, a cold start, is not charged, but it adds latency to the Lambda invocation. One could pay to ensure dedicated CPUs are available to avoid this cold start latency.

Ultimately, we decided to stick with the default setup to save users money and have our Lambda function run with cold starts versus implementing a warm Lambda. We believe that the latency impact from this initial setup is of minimal concern as per the nature of event streams; after the first execution, each Lambda execution environment will stay active as long as they are continually invoked.

- +
Skip to content

Building Helios: Design Choices

Choosing a Database

When evaluating storage solutions for real-time event streaming and querying, we investigated relational databases, document databases, and columnar databases. In this section we explore some of the fundamental differences between these database types.

Our criteria

High write throughput: The database must be capable of handling continuous writes of large volumes of streaming data, allowing Helios to ingest data efficiently without bottlenecks.

Low-latency query performance: Aggregating large datasets for analytical queries inherently challenges performance, and real-time analytics demands rapid insights for timely decision-making. Specifically, the database should be able to execute aggregation queries spanning multiple columns across tens of millions of rows in under a few seconds.

Extensive SQL support: Given SQL's popularity and reliability as a querying language, we prioritized databases that support a wide range of SQL features. This ensures users can leverage complex joins, filters, and aggregations, enhancing the flexibility and depth of their data analysis.

Document-based Storage

Document databases such as MongoDB and Couchbase store data in flexible, JSON-like documents. Each document can have a different structure, allowing for schema flexibility. Many document databases are designed for horizontal scaling and quick read access for contiguous pieces of data.

While document databases offer schema flexibility, we require our data to have a consistent structure, making schema flexibility a liability rather than an asset. In addition, they don’t align with our needs for high-performance analytical queries across large datasets. Please see our benchmarking section for performance metrics.

Row-based Storage

Relational databases such as Postgres and MySQL use row-based storage. It is the conventional method of storing data, where each row is treated as a primary unit and is sequentially stored on the disk. A key characteristic of row-based storage includes efficient transactions, particularly in regards to record updates and deletions.

However, row-based storage is often inefficient when it comes to analytical queries, especially those that require an aggregation of data over a few columns. In these queries, the database must read entire rows of data even when only a subset of columns are needed.

The following is a basic event table along with a basic analytic query that asks the question “How many events has each user initiated?”

Event Table

Below is an example of how row-based databases might execute an analytical query:

Row Table

Column-based Storage

Columnar databases such as Clickhouse and Apache Druid use column-based storage. The key difference is that columns are treated as the primary unit and stored sequentially on the disk. When running queries that span only a few columns, a columnar database can ignore unneeded columns. Additionally, columns can be compressed more efficiently than rows, leading to better storage efficiency and speed. More performance details can be found in our Benchmarking section.

Below is an example of how column-based databases might execute an analytical query:

Column Table

One key limitation is that the data in a columnar database is not well-suited for frequent updates or deletions of existing data. Fortunately, this drawback should not be limiting for Helios users. By nature, many real-time streaming data use-cases mostly require database reads and insertions that do not modify existing data.

After evaluating these database types, it was clear that columnar-based storage is the best fit for analytical queries.

Why Clickhouse

After deciding on a columnar database, we evaluated a number of database options and ultimately selected Clickhouse as our preferred choice because it met all of our original criteria plus had a few extra standout benefits:

High write throughput

Low-latency query performance

SQL Support

Comprehensive Documentation

Open Source

Of the criteria listed above, ClickHouse's impressive read and write latency particularly impressed us. For more insights into ClickHouse's performance, see our Load Testing results.

Deploying ClickHouse

Single Node vs Node Cluster

Node Cluster

We explored several options when determining the optimal deployment strategy for the Helios production ClickHouse server. While many database deployments utilize clustered architectures for high availability and scalability, with modern implementations often leveraging containerization and orchestration tools like Kubernetes, we found this approach less suitable for ClickHouse.

Contrary to the typical horizontal scaling strategy for other database types like Druid, the ClickHouse development team specifically advises against premature horizontal scaling. Their recommendation stems from ClickHouse's design, which is optimized for efficient performance on a single server, even at scales of hundreds of billions of rows. This guidance challenged our initial assumptions about needing a containerized cluster deployment strategy.

💡 “ClickHouse was designed from the ground up to utilize the full resources of a machine. We commonly find successful deployments with ClickHouse deployed on servers with hundreds of cores, terabytes of RAM, and petabytes of disk space. Most analytical queries have a sort, filter, and aggregation stage. Each of these can be parallelized independently and will, by default, use as many threads as cores, thus utilizing the full machine resources for a query.”

Key factors in our decision-making process included:

Performance optimization: ClickHouse can efficiently handle massive datasets on a single server

Simplicity: Reduced complexity in deployment and management compared to a clustered setup.

Cost-effectiveness: Maximizing resource utilization before scaling horizontally.

Scalability: Ensuring our architecture can still accommodate future growth when necessary.

Based on these considerations, we opted to host ClickHouse on an Amazon EC2 virtual server with Elastic Block Storage (EBS). This approach allows us to leverage ClickHouse's inherent strengths while maintaining the flexibility for users to scale as needed. Later in the Scaling Helios section, we will go deeper into EBS and other vertical scaling considerations as it pertains to Helios.

Lambda Trade-offs

Cold Starts

Users of Helios may experience an initial delay when connecting their Kinesis streams, this is due to the AWS Lambda cold start. We looked into cold starts to better understand if this would have a significant impact on our user experience.

Lambda functions typically operate on a shared pool of virtual CPUs, essentially Amazon EC2 instances. When a request comes in, AWS must allocate a worker from this EC2 pool to handle it. This allocation process involves initializing the execution environment and loading a module containing the provided function code. This setup process explains why cold starts occur, introducing a brief delay before the function can begin processing the request.

This prep time setting up the execution environment, a cold start, is not charged, but it adds latency to the Lambda invocation. One could pay to ensure dedicated CPUs are available to avoid this cold start latency.

Cold Starts

Ultimately, we decided to stick with the default setup to save users money and have our Lambda function run with cold starts versus implementing a warm Lambda. We believe that the latency impact from this initial setup is of minimal concern as per the nature of event streams; after the first execution, each Lambda execution environment will stay active as long as they are continually invoked.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/case_study/blackbox.png b/docs/.vitepress/dist/case_study/blackbox.png new file mode 100755 index 0000000..9762c20 Binary files /dev/null and b/docs/.vitepress/dist/case_study/blackbox.png differ diff --git a/docs/.vitepress/dist/case_study/cli_dropshadow.png b/docs/.vitepress/dist/case_study/cli_dropshadow.png new file mode 100644 index 0000000..33df4ca Binary files /dev/null and b/docs/.vitepress/dist/case_study/cli_dropshadow.png differ diff --git a/docs/.vitepress/dist/case_study/columnbased.png b/docs/.vitepress/dist/case_study/columnbased.png new file mode 100644 index 0000000..54b1715 Binary files /dev/null and b/docs/.vitepress/dist/case_study/columnbased.png differ diff --git a/docs/.vitepress/dist/case_study/comparetableshadow.png b/docs/.vitepress/dist/case_study/comparetableshadow.png new file mode 100755 index 0000000..6765c8f Binary files /dev/null and b/docs/.vitepress/dist/case_study/comparetableshadow.png differ diff --git a/docs/.vitepress/dist/case_study/core_clickhouse_highlight.png b/docs/.vitepress/dist/case_study/core_clickhouse_highlight.png new file mode 100644 index 0000000..04607a2 Binary files /dev/null and b/docs/.vitepress/dist/case_study/core_clickhouse_highlight.png differ diff --git a/docs/.vitepress/dist/case_study/core_client_server_highlight.png b/docs/.vitepress/dist/case_study/core_client_server_highlight.png new file mode 100644 index 0000000..f55881b Binary files /dev/null and b/docs/.vitepress/dist/case_study/core_client_server_highlight.png differ diff --git a/docs/.vitepress/dist/case_study/core_connector_highlight.png b/docs/.vitepress/dist/case_study/core_connector_highlight.png new file mode 100644 index 0000000..35ee657 Binary files /dev/null and b/docs/.vitepress/dist/case_study/core_connector_highlight.png differ diff --git a/docs/.vitepress/dist/case_study/core_full_color.png b/docs/.vitepress/dist/case_study/core_full_color.png new file mode 100644 index 0000000..a84c476 Binary files /dev/null and b/docs/.vitepress/dist/case_study/core_full_color.png differ diff --git a/docs/.vitepress/dist/case_study/dailycjob.png b/docs/.vitepress/dist/case_study/dailycjob.png new file mode 100755 index 0000000..5ff320a Binary files /dev/null and b/docs/.vitepress/dist/case_study/dailycjob.png differ diff --git a/docs/.vitepress/dist/case_study/eventbroker.png b/docs/.vitepress/dist/case_study/eventbroker.png new file mode 100755 index 0000000..89fdd11 Binary files /dev/null and b/docs/.vitepress/dist/case_study/eventbroker.png differ diff --git a/docs/.vitepress/dist/case_study/eventtable.png b/docs/.vitepress/dist/case_study/eventtable.png new file mode 100644 index 0000000..593f5b6 Binary files /dev/null and b/docs/.vitepress/dist/case_study/eventtable.png differ diff --git a/docs/.vitepress/dist/case_study/full_backup_highlight.png b/docs/.vitepress/dist/case_study/full_backup_highlight.png new file mode 100644 index 0000000..6a0d63a Binary files /dev/null and b/docs/.vitepress/dist/case_study/full_backup_highlight.png differ diff --git a/docs/.vitepress/dist/case_study/full_full_color.png b/docs/.vitepress/dist/case_study/full_full_color.png new file mode 100644 index 0000000..e1eb14d Binary files /dev/null and b/docs/.vitepress/dist/case_study/full_full_color.png differ diff --git a/docs/.vitepress/dist/case_study/full_storage_highlight.png b/docs/.vitepress/dist/case_study/full_storage_highlight.png new file mode 100644 index 0000000..3057bee Binary files /dev/null and b/docs/.vitepress/dist/case_study/full_storage_highlight.png differ diff --git a/docs/.vitepress/dist/case_study/kinesis_integration1.png b/docs/.vitepress/dist/case_study/kinesis_integration1.png new file mode 100755 index 0000000..5703a15 Binary files /dev/null and b/docs/.vitepress/dist/case_study/kinesis_integration1.png differ diff --git a/docs/.vitepress/dist/case_study/kinesis_integration2.png b/docs/.vitepress/dist/case_study/kinesis_integration2.png new file mode 100755 index 0000000..601cf3f Binary files /dev/null and b/docs/.vitepress/dist/case_study/kinesis_integration2.png differ diff --git a/docs/.vitepress/dist/case_study/kinesis_to_helios.png b/docs/.vitepress/dist/case_study/kinesis_to_helios.png new file mode 100755 index 0000000..31d6dff Binary files /dev/null and b/docs/.vitepress/dist/case_study/kinesis_to_helios.png differ diff --git a/docs/.vitepress/dist/case_study/lambdacoldstarts.png b/docs/.vitepress/dist/case_study/lambdacoldstarts.png new file mode 100755 index 0000000..301659d Binary files /dev/null and b/docs/.vitepress/dist/case_study/lambdacoldstarts.png differ diff --git a/docs/.vitepress/dist/case_study/lambdakinesislimit.png b/docs/.vitepress/dist/case_study/lambdakinesislimit.png new file mode 100755 index 0000000..2c10079 Binary files /dev/null and b/docs/.vitepress/dist/case_study/lambdakinesislimit.png differ diff --git a/docs/.vitepress/dist/case_study/node_cluster_opt.png b/docs/.vitepress/dist/case_study/node_cluster_opt.png new file mode 100644 index 0000000..5500af8 Binary files /dev/null and b/docs/.vitepress/dist/case_study/node_cluster_opt.png differ diff --git a/docs/.vitepress/dist/case_study/rowbased.png b/docs/.vitepress/dist/case_study/rowbased.png new file mode 100644 index 0000000..fb9b414 Binary files /dev/null and b/docs/.vitepress/dist/case_study/rowbased.png differ diff --git a/docs/.vitepress/dist/case_study/scaling_components.png b/docs/.vitepress/dist/case_study/scaling_components.png new file mode 100755 index 0000000..14f53bd Binary files /dev/null and b/docs/.vitepress/dist/case_study/scaling_components.png differ diff --git a/docs/.vitepress/dist/case_study/stream_efficiency.png b/docs/.vitepress/dist/case_study/stream_efficiency.png new file mode 100755 index 0000000..c83d378 Binary files /dev/null and b/docs/.vitepress/dist/case_study/stream_efficiency.png differ diff --git a/docs/.vitepress/dist/case_study/tinybird_arch.png b/docs/.vitepress/dist/case_study/tinybird_arch.png new file mode 100644 index 0000000..a01de7d Binary files /dev/null and b/docs/.vitepress/dist/case_study/tinybird_arch.png differ diff --git a/docs/.vitepress/dist/case_study/webapp.png b/docs/.vitepress/dist/case_study/webapp.png new file mode 100644 index 0000000..c540400 Binary files /dev/null and b/docs/.vitepress/dist/case_study/webapp.png differ diff --git a/docs/.vitepress/dist/custom_icons/aws.png b/docs/.vitepress/dist/custom_icons/aws.png new file mode 100644 index 0000000..6cb9244 Binary files /dev/null and b/docs/.vitepress/dist/custom_icons/aws.png differ diff --git a/docs/.vitepress/dist/custom_icons/gcp.png b/docs/.vitepress/dist/custom_icons/gcp.png new file mode 100644 index 0000000..b25f2a0 Binary files /dev/null and b/docs/.vitepress/dist/custom_icons/gcp.png differ diff --git a/docs/.vitepress/dist/custom_icons/kafka.png b/docs/.vitepress/dist/custom_icons/kafka.png new file mode 100644 index 0000000..3767492 Binary files /dev/null and b/docs/.vitepress/dist/custom_icons/kafka.png differ diff --git a/docs/.vitepress/dist/custom_icons/terraform.png b/docs/.vitepress/dist/custom_icons/terraform.png new file mode 100644 index 0000000..f43c33c Binary files /dev/null and b/docs/.vitepress/dist/custom_icons/terraform.png differ diff --git a/docs/.vitepress/dist/future-work.html b/docs/.vitepress/dist/future-work.html index 59521c9..22851d5 100644 --- a/docs/.vitepress/dist/future-work.html +++ b/docs/.vitepress/dist/future-work.html @@ -5,20 +5,20 @@ Future Work | Helios Case Study - - + + - - - - - + + + + + -
Skip to content

Future Work

API Endpoints

The introduction of API endpoints in Helios would significantly enhance user capabilities by allowing them to expose query results as accessible HTTP endpoints. Users can define those endpoints to accept parameters, execute preset queries, and return results in a standardized format. This would enable seamless integration of Helios data into other applications and services.

Use Cases

  1. Real-time Dashboards: Endpoints can be integrated with visualization tools like Grafana.
  2. Data Integration: Other applications can easily incorporate Helios data into their workflows without having to use our console.

Supporting Materialized Views

Materialized views allow users to shift the cost of computation from query time to insert time, resulting in faster SELECT queries. Supporting materialized views will help utilize the efficiency and real-time abilities of our ClickHouse database. Explaining ClickHouse’s version of materialized views is best done by ClickHouse themselves:

“A ClickHouse materialized view is a trigger that runs a query on blocks of data as they are inserted into a table. The result of this query is inserted into a second "target" table …

The principal motivation for materialized views is that the results inserted into the target table represent the results of an aggregation, filtering, or transformation on rows. These results will often be a smaller representation of the original data ….

[This] ensures query times are faster than if the same computation was performed on the original data, shifting computation (and thus query latency) from query time to insert time.

Materialized views in ClickHouse are updated in real-time as data flows into the table they are based on, functioning more like continually updating indexes. This is in contrast to other databases where materialized views are typically static snapshots of a query that must be refreshed”

Additional data sources

Our initial release supports data ingestion solely through Amazon Kinesis. While this decision was strategic, given our limited resources and the synergy with our AWS-hosted infrastructure, we recognize that many companies use other streaming providers.

Future versions of Helios could expand support for additional streaming platforms. To address this, we've outlined an approach to expand our data ingestion capabilities:

  • Apache Kafka Integration: As the industry leader, Kafka integration is our top priority. We'll approach this in two stages:
    • Amazon MSK Integration: We'll first support Amazon Managed Service for Apache Kafka, leveraging our existing Lambda function logic.
    • Direct Kafka Support: Following this, we'll re-architect our Lambda Connector function for direct Kafka integration.
  • Additional Platforms: After Kafka, we would extend support to other popular streaming platforms, including:
    • Google Pub/Sub
    • Redpanda
    • Confluent (a popular Kafka managed service)

This expansion will require a number of changes to our current implementation. Our existing serverless function, which ingests data from Kinesis and inserts it into ClickHouse DB, relies on AWS Lambda Triggers.

By broadening our data source support, Helios will be accessible to a wider range of companies, regardless of their preferred streaming platform.

- +
Skip to content

Future Work

API Endpoints

The introduction of API endpoints in Helios would significantly enhance user capabilities by allowing them to expose query results as accessible HTTP endpoints. Users can define those endpoints to accept parameters, execute preset queries, and return results in a standardized format. This would enable seamless integration of Helios data into other applications and services.

Use Cases

Real-time Dashboards: Endpoints can be integrated with visualization tools like Grafana.

Data Integration: Other applications can easily incorporate Helios data into their workflows without having to use our console.

Supporting Materialized Views

Materialized views allow users to shift the cost of computation from query time to insert time, resulting in faster SELECT queries. Supporting materialized views will help utilize the efficiency and real-time abilities of our ClickHouse database. Explaining ClickHouse’s version of materialized views is best done by ClickHouse themselves:

“A ClickHouse materialized view is a trigger that runs a query on blocks of data as they are inserted into a table. The result of this query is inserted into a second "target" table …

The principal motivation for materialized views is that the results inserted into the target table represent the results of an aggregation, filtering, or transformation on rows. These results will often be a smaller representation of the original data ….

[This] ensures query times are faster than if the same computation was performed on the original data, shifting computation (and thus query latency) from query time to insert time.

Materialized views in ClickHouse are updated in real-time as data flows into the table they are based on, functioning more like continually updating indexes. This is in contrast to other databases where materialized views are typically static snapshots of a query that must be refreshed”

Additional data sources

Our initial release supports data ingestion solely through Amazon Kinesis. While this decision was strategic, given our limited resources and the synergy with our AWS-hosted infrastructure, we recognize that many companies use other streaming providers.

Future versions of Helios could expand support for additional streaming platforms. To address this, we've outlined an approach to expand our data ingestion capabilities:

  1. Apache Kafka Integration: As the industry leader, Kafka integration is our top priority. We'll approach this in two stages:

    • Amazon MSK Integration: We'll first support Amazon Managed Service for Apache Kafka, leveraging our existing Lambda function logic
    • Direct Kafka Support: Following this, we'll re-architect our Lambda Connector function for direct Kafka integration.
  2. Additional Platforms: After Kafka, we would extend support to other popular streaming platforms, including:

    • Google Pub/Sub
    • Redpanda
    • Confluent (a popular Kafka managed service)

This expansion will require a number of changes to our current implementation. Our existing serverless function, which ingests data from Kinesis and inserts it into ClickHouse DB, relies on AWS Lambda Triggers.

By broadening our data source support, Helios will be accessible to a wider range of companies, regardless of their preferred streaming platform.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/hashmap.json b/docs/.vitepress/dist/hashmap.json index a54801e..2fb64cc 100644 --- a/docs/.vitepress/dist/hashmap.json +++ b/docs/.vitepress/dist/hashmap.json @@ -1 +1 @@ -{"api-examples.md":"C9MzH2FB","automating-deployment.md":"zDcF1udB","building-helios.md":"cznknSt2","future-work.md":"92XAy3ZW","helios-architecture.md":"BJH9O2FM","improving-core-platform.md":"B9IaNb9w","index.md":"_d5ivb6b","introduction.md":"B3UNu6bI","load-testing.md":"DvtUAtXt","main.md":"CFPkIoDn","markdown-examples.md":"BMRmil5e","references.md":"DT6rkEqj","scaling.md":"Dy-hXduC"} +{"about-us.md":"C2qKxKgR","api-examples.md":"C61jmcDT","automating-deployment.md":"CzzCffgA","building-helios.md":"NyMLTPtG","future-work.md":"CFwf7ZIW","helios-architecture.md":"CY1ms68H","improving-core-platform.md":"BqJIFFk1","index.md":"P4UWnwpO","introduction.md":"GgrqDEP4","load-testing.md":"frXIo8k7","main.md":"BOy_26uh","markdown-examples.md":"BtPgfgKw","references.md":"kd-DA1tE","scaling.md":"DJd_eJBc"} diff --git a/docs/.vitepress/dist/helios-architecture.html b/docs/.vitepress/dist/helios-architecture.html index fd0c4c9..40ef9a4 100644 --- a/docs/.vitepress/dist/helios-architecture.html +++ b/docs/.vitepress/dist/helios-architecture.html @@ -5,20 +5,20 @@ Helios Architecture | Helios Case Study - - + + - - - - - + + + + + -
Skip to content

Helios Architecture

To meet the requirements of Amazon Kinesis users looking to explore and analyze their event streams, Helios is built around three key components:

  1. Storage - A database optimized for querying streaming data, specifically an Online Analytical Processing (OLAP) database capable of handling high-volume, real-time data ingestion, and delivering fast query performance for analytical workloads.
  2. Connection - An ingestion mechanism to efficiently transfer events from Kinesis streams into our chosen database.
  3. Interface - A user-friendly graphical interface allowing users to conduct analyses and visualize results.

Given that potential Helios users are already leveraging Amazon Kinesis, it made sense to host all of Helios' infrastructure within the AWS ecosystem.

In the following section, we will dive into the specific services we chose, explaining how each component contributes to Helios' functionality and performance.

Our design decisions and their associated tradeoffs will be explored in the “Building Helios: Design Choices” section of the case study, while this section is focused on how we architected Helios.

Storage

Tying back to our example use case of e-commerce user analytics, we required a database optimized for analytical queries. A typical analytical query might ask, "What is the average order value for customers who used a discount code in the past hour?" Such queries demand specific capabilities from our database.

As defined in "Designing Data-Intensive Applications" (DDIA), analytical queries typically scan millions of records, reading only a few columns per record, and calculate aggregate statistics rather than returning raw data. This definition guided our approach to storage architecture.

Databases typically fall into two categories: Online Analytical Processing (OLAP) and Online Transaction Processing (OLTP), each optimized for distinct use cases. OLAP systems, primarily used for analytics, are designed to process millions of records per query. In contrast, OLTP systems typically process small numbers of records per query using keys and indexes for quick data retrieval. The fundamental difference lies in their access patterns: OLTP prioritizes small-scale transactions, while OLAP focuses on large-scale data analysis.

Ultimately, we chose ClickHouse as our OLAP database to power Helios' analytical capabilities. Later(link!) in this case study, we will provide a detailed exploration of our database selection process, including the factors that influenced our decision.

The following diagram illustrates our storage architecture:

ClickHouse Database Server

The main functions of the ClickHouse database are to store event data consumed from Kinesis streams and to make this data available for querying. The database is deployed on an Amazon EC2 instance (i.e. virtual server).

With storage in place, the next phase of our architecture design was to implement an integration between a user’s Amazon Kinesis streams and the ClickHouse instance.

Connection

Efficiently transferring events from Kinesis streams to our ClickHouse database presented a challenge. We needed a solution that could handle high-volume data ingestion, perform necessary decoding, and ensure reliable delivery.

To address this, we developed a custom AWS Lambda function as our stream processor. This approach allows us to:

  • Decode and parse Kinesis event data
  • Implement custom error handling
  • Dynamically map data to appropriate ClickHouse tables
  • Perform efficient inserts

By leveraging Lambda, we created a flexible and scalable solution tailored to our specific data processing needs. Let's explore how this custom processor works in detail.

Kinesis to ClickHouse Integration

Helios’ Lambda Processor is an AWS serverless function that serves as a connector between Amazon Kinesis event streams and ClickHouse tables. The Lambda’s main roles are to decode the events from the Kinesis stream and insert them into the ClickHouse database. The full process involves retrieving table information, preparing data for batch insertion, and attempting to insert the data into ClickHouse.

Using an event based trigger, the function ingests event data(tooltip) from AWS Kinesis streams, and decodes the Kinesis event payload into a JSON object.

Once the Lambda decodes the payload from a stream, the data needs to be sent to the associated destination table within Clickhouse. To retrieve the table ID, the Lambda interacts with a key-value database, DynamoDB, which contains a mapping of stream IDs to table IDs.

In the DynamoDB table we associate one AWS Kinesis stream to one Clickhouse table. This not only eliminates potential schema errors when ingesting data from multiple streams, but also prevents human error if users try to connect multiple streams to one table.

While the storage and connection components form the backbone of Helios, the analysis layer serves as the user-facing interface, bridging the gap between raw data and actionable insights.

Interface

Application Server

The Helios web application, hosted on an Amazon EC2 instance, serves as the primary interface for users. Implemented with a Flask backend and a React frontend, its core features include:

  1. An interactive SQL console for querying data from event streams, enabling real-time data analysis
  2. An interface for connecting a data source, such as a Kinesis stream, to the Helios architecture

Now that you have a good understanding of how Helios works, in the next section we will cover why we designed it in this way as well as the trade-offs made throughout the building of Helios. Here is our architecture so far:

- +
Skip to content

Helios Architecture

To meet the requirements of Amazon Kinesis users looking to explore and analyze their event streams, Helios is built around three key components:

Storage - A database optimized for querying streaming data, specifically an Online Analytical Processing (OLAP) database capable of handling high-volume, real-time data ingestion, and delivering fast query performance for analytical workloads.

Connection - An ingestion mechanism to efficiently transfer events from Kinesis streams into our chosen database.

Interface - A user-friendly graphical interface allowing users to conduct analyses and visualize results.

Core Arch

Given that potential Helios users are already leveraging Amazon Kinesis, it made sense to host all of Helios' infrastructure within the AWS ecosystem.

In the following section, we will dive into the specific services we chose, explaining how each component contributes to Helios' functionality and performance.

Our design decisions and their associated tradeoffs will be explored in the “Building Helios: Design Choices” section of the case study, while this section is focused on how we architected Helios.

Storage

Tying back to our example use case of e-commerce user analytics, we required a database optimized for analytical queries. A typical analytical query might ask, "What is the average order value for customers who used a discount code in the past hour?" Such queries demand specific capabilities from our database.

As defined in "Designing Data-Intensive Applications" (DDIA), analytical queries typically scan millions of records, reading only a few columns per record, and calculate aggregate statistics rather than returning raw data. This definition guided our approach to storage architecture.

Databases typically fall into two categories: Online Analytical Processing (OLAP) and Online Transaction Processing (OLTP), each optimized for distinct use cases. OLAP systems, primarily used for analytics, are designed to process millions of records per query. In contrast, OLTP systems typically process small numbers of records per query using keys and indexes for quick data retrieval. The fundamental difference lies in their access patterns: OLTP prioritizes small-scale transactions, while OLAP focuses on large-scale data analysis.

Ultimately, we chose ClickHouse as our OLAP database to power Helios' analytical capabilities. Later in this case study, we will provide a detailed exploration of our database selection process, including the factors that influenced our decision.

The following diagram illustrates our storage architecture:

ClickHouse Database Server

Clickhouse Arch

The main functions of the ClickHouse database are to store event data consumed from Kinesis streams and to make this data available for querying. The database is deployed on an Amazon EC2 instance (i.e. virtual server).

With storage in place, the next phase of our architecture design was to implement an integration between a user’s Amazon Kinesis streams and the ClickHouse instance.

Connection

Connection Arch

Efficiently transferring events from Kinesis streams to our ClickHouse database presented a challenge. We needed a solution that could handle high-volume data ingestion, perform necessary decoding, and ensure reliable delivery.

To address this, we developed a custom AWS Lambda function as our stream processor. This approach allows us to:

Decode and parse Kinesis event data

Implement custom error handling

Dynamically map data to appropriate ClickHouse tables

Perform efficient inserts

By leveraging Lambda, we created a flexible and scalable solution tailored to our specific data processing needs. Let's explore how this custom processor works in detail.

Kinesis to ClickHouse Integration

Helios’ Lambda Processor is an AWS serverless function that serves as a connector between Amazon Kinesis event streams and ClickHouse tables. The Lambda’s main roles are to decode the events from the Kinesis stream and insert them into the ClickHouse database. The full process involves retrieving table information, preparing data for batch insertion, and attempting to insert the data into ClickHouse.

Using an event-based trigger, the function ingests event data from AWS Kinesis streams, and decodes the Kinesis event payload into a JSON object.

Kinesis Integration 1

Kinesis Integration 2

Once the Lambda decodes the payload from a stream, the data needs to be sent to the associated destination table within Clickhouse. To retrieve the table ID, the Lambda interacts with a key-value database, DynamoDB, which contains a mapping of stream IDs to table IDs.

In the DynamoDB table we associate one AWS Kinesis stream to one Clickhouse table. This not only eliminates potential schema errors when ingesting data from multiple streams, but also prevents human error if users try to connect multiple streams to one table.

While the storage and connection components form the backbone of Helios, the analysis layer serves as the user-facing interface, bridging the gap between raw data and actionable insights.

Interface

Application Server

App Server

The Helios web application, hosted on an Amazon EC2 instance, serves as the primary interface for users. Implemented with a Flask backend and a React frontend, its core features include:

An interactive SQL console for querying data from event streams, enabling real-time data analysis

An interface for connecting a data source, such as a Kinesis stream, to the Helios architecture

Now that you have a good understanding of how Helios works, in the next section we will cover why we designed it in this way as well as the trade-offs made throughout the building of Helios. Here is our architecture so far: Core Arch

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/assets/ai_error.CoajBoll.png b/docs/.vitepress/dist/home/ai_error.png similarity index 100% rename from docs/.vitepress/dist/assets/ai_error.CoajBoll.png rename to docs/.vitepress/dist/home/ai_error.png diff --git a/docs/.vitepress/dist/assets/blur1.fssN-tse.png b/docs/.vitepress/dist/home/blur1.png similarity index 100% rename from docs/.vitepress/dist/assets/blur1.fssN-tse.png rename to docs/.vitepress/dist/home/blur1.png diff --git a/docs/.vitepress/dist/assets/blur2.Cm_F34UH.png b/docs/.vitepress/dist/home/blur2.png similarity index 100% rename from docs/.vitepress/dist/assets/blur2.Cm_F34UH.png rename to docs/.vitepress/dist/home/blur2.png diff --git a/docs/.vitepress/dist/assets/blur3.C_i1i996.png b/docs/.vitepress/dist/home/blur3.png similarity index 100% rename from docs/.vitepress/dist/assets/blur3.C_i1i996.png rename to docs/.vitepress/dist/home/blur3.png diff --git a/docs/.vitepress/dist/home/blur4.png b/docs/.vitepress/dist/home/blur4.png new file mode 100644 index 0000000..03773ad Binary files /dev/null and b/docs/.vitepress/dist/home/blur4.png differ diff --git a/docs/.vitepress/dist/assets/kinesis.BLuFRNRT.png b/docs/.vitepress/dist/home/kinesis.png similarity index 100% rename from docs/.vitepress/dist/assets/kinesis.BLuFRNRT.png rename to docs/.vitepress/dist/home/kinesis.png diff --git a/docs/.vitepress/dist/assets/quarantinetable.6neOjckm.png b/docs/.vitepress/dist/home/quarantinetable.png similarity index 100% rename from docs/.vitepress/dist/assets/quarantinetable.6neOjckm.png rename to docs/.vitepress/dist/home/quarantinetable.png diff --git a/docs/.vitepress/dist/assets/sqlconsole.8DKWqgUH.png b/docs/.vitepress/dist/home/sqlconsole.png similarity index 100% rename from docs/.vitepress/dist/assets/sqlconsole.8DKWqgUH.png rename to docs/.vitepress/dist/home/sqlconsole.png diff --git a/docs/.vitepress/dist/assets/terminal.ngYbvxa-.png b/docs/.vitepress/dist/home/terminal.png similarity index 100% rename from docs/.vitepress/dist/assets/terminal.ngYbvxa-.png rename to docs/.vitepress/dist/home/terminal.png diff --git a/docs/.vitepress/dist/assets/trail.C0RnV6cK.png b/docs/.vitepress/dist/home/trail.png similarity index 100% rename from docs/.vitepress/dist/assets/trail.C0RnV6cK.png rename to docs/.vitepress/dist/home/trail.png diff --git a/docs/.vitepress/dist/improving-core-platform.html b/docs/.vitepress/dist/improving-core-platform.html index 5d45f2f..dd4f174 100644 --- a/docs/.vitepress/dist/improving-core-platform.html +++ b/docs/.vitepress/dist/improving-core-platform.html @@ -5,20 +5,20 @@ Improving Core Platform | Helios Case Study - - + + - - - - - + + + + + -
Skip to content

Improving Core Platform

Below we detail the problems we encountered and the solutions we implemented to improve upon our core platform.

Quarantine Tables

The initial version of Helios lacked error handling for failed database insertion of event records within the Lambda connector, potentially leading to data loss and difficult to parse error messages. To address this, we implemented a comprehensive error handling and data quarantine system. Here is a list of the key functionality we implemented:

  1. Error Identification: The Lambda now includes logic to identify various types of errors, including schema mismatches and insertion failures.
  2. Error Categorization: Each error is then categorized by type and summarized with a concise abstract, providing clear insight into the nature of data quality issues.
  3. Data Preservation: The data that fails to insert into the main table is then stored in a separate quarantine table along with the error summary details. This ensures no data loss and allows users to quickly examine the exact records that failed to insert.
  4. AI Summary: For users who provide a ChatGPT AI key during deployment, we've integrated an AI-powered feature to enhance the error analysis process. This feature leverages a custom ChatGPT system prompt to summarize and interpret the errors stored in the quarantine table, significantly aiding users in their debugging efforts.

[Image of quarantine table - needs css done first]

These enhancements collectively improve Helios’ error handling, while providing tools for error analysis and resolution.

Lambda Optimization

To improve Helios' performance and efficiency, we implemented several optimizations to the Lambda connector. These enhancements focus on data processing, concurrency, and resource utilization, aiming to increase throughput and reduce costs while maintaining real-time capabilities.

Batching and Batch Window

Our initial Connector function processed Kinesis records in small batches of 10. We optimized this by increasing the maximum batch size to 100 records and setting a batch window of one second.

This change significantly reduces Lambda invocations, leading to less overhead and improved cost efficiency. Larger batches also enhance overall throughput and make better use of allocated resources. The one-second window ensures a balance between efficiency and near real-time processing, as records are sent when either the batch size is reached or the time window expires.

These optimizations improve system performance while reducing costs for users, all while maintaining Clickhouse's real-time update capabilities.

Parallelization

Parallelization in the context of Lambdas means that multiple Lambda instances can be run at the same time. By default, the Lambda parallelization factor is set to 1. This means that only 1 Lambda instance can be a trigger for 1 Kinesis shard. We adjusted this setting to 10, allowing up to 10 Lambda instances to process data from a single Kinesis shard simultaneously. This significantly improves our ingestion capacity and scalability, increasing our system's ability to handle high-volume data streams quickly and efficiently.

Caching DynamoDB requests

Recall from earlier that Lambdas have to send a request to the DynamoDB to get the table UUID for the Clickhouse table destination. To reduce unnecessary DynamoDB calls for the Clickhouse table UUID, we moved the DynamoDB client initialization to the global scope of our Lambda function.

Our caching strategy ensures that subsequent invocations of the same Lambda instance will reuse the existing client and table UUID information. This approach reduces DynamoDB calls from executing for each record in the batch. For example, if the batch size is 100 records, 1 Dynamo request will be sent rather than 100 - since we already have our table UUID information cached. Additionally, further calls are not made if the same Lambda instance is invoked.

Database Backups

In the first iteration of Helios, the ClickHouse database lacked backup capabilities. For instance, if the EC2 went down, our data would not be recoverable. Addressing this vulnerability was a critical improvement for version two.

As part of our backup strategy, we integrated an Amazon S3 (Simple Storage Service) bucket into our AWS-based architecture. This addition plays a crucial role in enhancing our data resilience and disaster recovery capabilities for our ClickHouse database running on an EC2 instance. The S3 bucket serves as a highly durable and scalable object storage solution, allowing us to implement daily backups of the ClickHouse database efficiently. By leveraging S3's virtually unlimited storage capacity and 99.999999999% (11 9's) of durability, we ensure that our critical data is preserved securely over the long term.

The backup cron job process is automated to run daily, capturing a full snapshot of the ClickHouse database and transferring it to the designated S3 bucket.

Export to CSV

The underlying goal for developing Helios is to provide Amazon Kinesis customers with a simple, cost-effective way to analyze their streaming events. While our interactive SQL console serves as the core feature for this analysis, we recognize the need for users to easily extract, run further analysis and share their query results.

To address this, we implemented a feature allowing users to download the results of any SQL query as a CSV file. This functionality enables information sharing and integration with other tools in users' data analysis workflows.

Future enhancements are planned to further expand the utility of query results for Helios users. These improvements will aim to provide even more flexibility in how users can leverage their SQL query results. Please refer to the Future Work section below for more details on upcoming features.

To summarize our core platform improvements, we bolstered the platform with features including quarantine tables, Lambda optimizations, S3 backups, and CSV exports. These enhancements to Helios have improved our system resilience, error handling, and overall performance.

After the above improvements, our final architecture looks like this:

- +
Skip to content

Improving Core Platform

Below we detail the problems we encountered and the solutions we implemented to improve upon our core platform.

Quarantine Tables

Quarantine Arch

The initial version of Helios lacked error handling for failed database insertion of event records within the Lambda connector, potentially leading to data loss and difficult to parse error messages. To mitigate these issues and enhance system reliability, we implemented a comprehensive error handling and data quarantine system. Below, we outline the key features of this new system:

Error Identification: The Lambda now includes logic to identify various types of errors, including schema mismatches and insertion failures.

Error Categorization: Each error is then categorized by type and summarized with a concise abstract, providing clear insight into the nature of data quality issues.

Data Preservation: The data that fails to insert into the main table is then stored in a separate quarantine table along with the error summary details. This ensures no data loss and allows users to quickly examine the exact records that failed to insert.

AI Summary: For users who provide a ChatGPT AI key during deployment, we've integrated an AI-powered feature to enhance the error analysis process. This feature leverages a custom ChatGPT system prompt to summarize and interpret the errors stored in the quarantine table, significantly aiding users in their debugging efforts.

[Image of quarantine table - needs css done first]

These enhancements collectively improve Helios’ error handling, while providing tools for error analysis and resolution.

Lambda Optimization

To improve Helios' performance and efficiency, we implemented several optimizations to the Lambda connector. These enhancements focus on data processing, concurrency, and resource utilization, aiming to increase throughput and reduce costs while maintaining real-time capabilities.

Batching and Batch Window

Our initial Connector function processed Kinesis records in small batches of 10. We optimized this by increasing the maximum batch size to 100 records and setting a batch window of one second.

Batch Size

This change significantly reduces Lambda invocations, leading to less overhead and improved cost efficiency. Larger batches also enhance overall throughput and make better use of allocated resources. The one-second window ensures a balance between efficiency and near real-time processing, as records are sent when either the batch size is reached or the time window expires.

These optimizations improve system performance while reducing costs for users, all while maintaining Clickhouse's real-time update capabilities.

Parallelization

Parallelization in the context of Lambdas means that multiple Lambda instances can be run at the same time. By default, the Lambda parallelization factor is set to 1. This means that only one Lambda instance can be a trigger for one Kinesis shard. We adjusted this setting to 10, allowing up to ten Lambda instances to process data from a single Kinesis shard simultaneously. This significantly improves our ingestion capacity and scalability, increasing our system's ability to handle high-volume data streams quickly and efficiently.

Parallelization

Caching DynamoDB requests

Recall from earlier that Lambdas have to send a request to the DynamoDB to get the table UUID for the Clickhouse table destination. To reduce unnecessary DynamoDB calls for the Clickhouse table UUID, we moved the DynamoDB client initialization to the global scope of our Lambda function.

Our caching strategy ensures that subsequent invocations of the same Lambda instance will reuse the existing client and table UUID information. This approach reduces DynamoDB calls from executing for each record in the batch. For example, if the batch size is 100 records, 1 Dynamo request will be sent rather than 100 - since we already have our table UUID information cached. Additionally, further calls are not made if the same Lambda instance is invoked.

Database Backups

Database Arch

In the first iteration of Helios, the ClickHouse database lacked backup capabilities. For instance, if the EC2 went down, our data would not be recoverable. Addressing this vulnerability was a critical improvement for version two.

As part of our backup strategy, we integrated an Amazon S3 (Simple Storage Service) bucket into our AWS-based architecture. This addition plays a crucial role in enhancing our data resilience and disaster recovery capabilities for our ClickHouse database running on an EC2 instance. The S3 bucket serves as a highly durable and scalable object storage solution, allowing us to implement daily backups of the ClickHouse database efficiently. By leveraging S3's virtually unlimited storage capacity and 99.999999999% (11 9's) of durability, we ensure that our critical data is preserved securely over the long term.

The backup cron job process is automated to run daily, capturing a full snapshot of the ClickHouse database and transferring it to the designated S3 bucket.

Daily Cron Job

Export to CSV

The underlying goal for developing Helios is to provide Amazon Kinesis customers with a simple, cost-effective way to analyze their streaming events. While our interactive SQL console serves as the core feature for this analysis, we recognize the need for users to easily extract, run further analysis and share their query results.

To address this, we implemented a feature allowing users to download the results of any SQL query as a CSV file. This functionality enables information sharing and integration with other tools in users' data analysis workflows.

Future enhancements are planned to further expand the utility of query results for Helios users. These improvements will aim to provide even more flexibility in how users can leverage their SQL query results. Please refer to the Future Work section below for more details on upcoming features.


To summarize our core platform improvements, we bolstered the platform with features including quarantine tables, Lambda optimizations, S3 backups, and CSV exports. These enhancements to Helios have improved our system resilience, error handling, and overall performance.

After the above improvements, our final architecture looks like this:

Full Arch

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/index.html b/docs/.vitepress/dist/index.html index 8ec347d..e819174 100644 --- a/docs/.vitepress/dist/index.html +++ b/docs/.vitepress/dist/index.html @@ -5,20 +5,20 @@ Helios Case Study - - + + - - - - - + + + + + -

Helios

Helios is an open-source platform designed to simplify the visualization and analysis of real-time event streams by exposing data for SQL querying.

Real-time SQL querying

Run SQL queries directly on your ingested data in real-time.

Built-in Amazon Kinesis Integration

Link your existing Kinesis streams to the Helios infrastructure.

Automated Deployment

Helios CLI configures Helios deployment with AWS credentials, deploys the entire Helios stack to AWS using a single command, and destroys the stack when needed.

- +

Helios

Helios is an open-source platform designed to simplify the visualization and analysis of real-time event streams by exposing data for SQL querying.

Real-time SQL querying

Run SQL queries directly on your ingested data in real-time.

Built-in Amazon Kinesis Integration

Link your existing Kinesis streams to the Helios infrastructure.

Automated Deployment

Helios CLI configures Helios deployment with AWS credentials, deploys the entire Helios stack to AWS using a single command, and destroys the stack when needed.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/introduction.html b/docs/.vitepress/dist/introduction.html index 9e10f1d..f8acb0f 100644 --- a/docs/.vitepress/dist/introduction.html +++ b/docs/.vitepress/dist/introduction.html @@ -5,20 +5,21 @@ Introduction | Helios Case Study - - + + - - - - - + + + + + + -
Skip to content

Introduction

Helios is an open-source platform designed to simplify the visualization and analysis of real-time event streams by exposing data for SQL querying. Our automated deployment process and intuitive interface allow teams to query and gain insights from their existing event streams.

In this case study, we will describe why we built Helios, the architecture and specific trade-offs made, technical challenges we encountered and improvements we made along the way.

Problem Domain

In today's data-driven landscape, teams increasingly rely on real-time event streams to gain insights and drive decision-making. However, the sheer volume and velocity of these streams often present significant challenges for extracting meaningful information, including viewing raw event data, performing ad-hoc analysis, and debugging events in real-time. These difficulties are particularly pronounced when using popular event streaming platforms like Amazon Kinesis, which offer limited native tools for data exploration and analysis. To fully appreciate the context in which Helios operates and the problems it aims to solve, it's essential to first understand some fundamental concepts related to events and event streaming.

Fundamental Background

Events

An event is a state change in a system or application. This could be as simple as a user clicking a button or as complex as a critical system update.

“[An event is] a small, self-contained, immutable object containing the details of something that happened at some point in time … [it] might be an action that a user took, such as viewing a page or making a purchase. It might also originate from a machine, such as a periodic measurement from a temperature sensor, or a CPU utilization metric.” - DDIA

Event streaming

Event streaming is the continuous transmission and processing of events from various sources in real-time or near real-time. Real-time has different meanings depending on the context. For instance, in high-frequency trading, real-time might mean microseconds, whereas in social media analytics, it could mean within a few minutes. In this case study, we define real-time as end-to-end latency within 5 seconds from event consumption by Helios from a streaming platform to event data being available for querying. This definition is based on our load testing, which will be detailed later in this case study.

In event streaming architecture, events are generated by producers, for example a web application which produces user click events, and can be processed by multiple consumers. A consumer is an entity that receives and processes messages or events from one or more streams. Brokers are the intermediary that receives, stores and distributes events (e.g. queues).

Event Streaming Platforms

Event streaming platforms act like a broker in that they receive events from producers and can have multiple consumers. Popular event streaming platforms include Apache Kafka, Google Pub/Sub, and Amazon Kinesis.

The defining characteristics of event streaming are its real-time nature - where data is processed as it arrives rather than being stored for later analysis, its continuity - with data being constantly added to the stream, and its unboundedness - meaning the total size of the data is unknown and potentially infinite.

Event streaming use cases

Event streaming serves a variety of functions, including:

  • User analytics - allowing organizations to gain immediate insights from data as it's generated
  • Log aggregation and monitoring - facilitating rapid identification of system issues and performance bottlenecks
  • Security - powers fraud detection systems, enabling swift responses to suspicious activities
  • Transaction processing - financial institutions leverage event streaming for processing transactions in real-time, ensuring up-to-the-second accuracy in account balances and trade executions

Event Streaming Platform Limitations

While event streaming platforms excel at ingesting and processing high-volume, real-time data, they present a significant challenge for data analysis and exploration: data accessibility. Event streaming platforms are optimized for throughput and real-time processing, not for ad-hoc querying or historical analysis. This makes it difficult for analysts to explore past data or perform complex analyses on the fly.

This limitation can significantly impact a team's ability to derive timely insights from their streaming data. To illustrate this challenge more concretely, let's consider a common use case in the e-commerce industry.

Example: User Analytics in E-commerce

Imagine an e-commerce platform using Amazon Kinesis to stream user behavior data. The platform captures events such as page views, product interactions, and purchases in real-time. The analytics team might want to leverage this data to:

  1. Analyze user journeys across sessions
  2. Compute real-time conversion rates
  3. Detect anomalies in user behavior

However, they face a significant hurdle: data accessibility. While Kinesis efficiently handles the ingestion of these events, it does not provide an easy way for analysts to query this data using familiar tools like SQL. This means that even seemingly simple questions like "What are the top 5 products viewed in the last hour?" become challenging to answer quickly.

The team finds themselves constrained by the limitations of the platform, unable to easily explore the wealth of data at their fingertips. This scenario underscores the need for additional tools that can bridge the gap between the data ingestion capabilities of streaming platforms and the analytical needs of data teams.

Given these challenges with event streams, various platforms exist to improve event visibility and accessibility. Helios is one such tool, focused on enabling real-time exploration and analysis of Amazon Kinesis event streams.

Third-Party Managed Services

There are a number of data analytics managed services(tooltip!) that help teams access their streaming data for analysis.

For example, Tinybird is a data platform that allows users to explore real-time event streams using SQL and publish API endpoints of the query results to be consumed by user-facing analytics systems. Some of their most well-known customers include Canva and Vercel.

There are similar services including StarTree, which operates in the same space as Tinybird and serves customers including Stripe.

Managed services offer quick setup and powerful features, but come with specific trade-offs.

The main trade-offs of using managed services like Tinybird are vendor lock-in, cost and data ownership. Vendor lock-in can make it difficult and expensive to switch to another provider or bring operations in-house. In terms of cost, while managed services often have higher upfront pricing, they can potentially reduce operational expenses by eliminating the need for in-house infrastructure management and specialized personnel. The total cost of ownership depends on factors such as scaling needs and existing resources. Regarding data ownership, using a managed service means entrusting data storage and management to a third party. This can raise concerns about data control, access, portability, and compliance, although many services offer security measures and options for increased data control.

For teams willing to navigate these trade-offs, managed services can often be a great option, providing scalability and specialized capabilities without the complexity of maintaining a custom infrastructure. If going the managed route, each service comes with its own set of considerations in terms of deployment complexity, underlying database, and integration capabilities.

DIY Infrastructure

Alternatively, teams opting for a do-it-yourself (DIY) solution would need to develop and maintain their own infrastructure and tooling, mirroring the capabilities offered by managed services such as Tinybird.

The DIY route offers maximum flexibility and control over your data and infrastructure. It allows for deep customization to meet specific needs and can potentially be more cost-effective at large scales. However, it requires in-house expertise in areas such as data engineering and infrastructure management. The initial setup time and ongoing maintenance efforts are also considerably higher compared to managed services.

How does Helios compare?

Helios provides an alternative option in the landscape of event stream analytics solutions, particularly for users of Amazon Kinesis. Our platform aims to address some of the challenges associated with both third-party managed services and DIY approaches.

Helios strives to offer a practical solution for teams looking to analyze their Kinesis data without the full complexity of a DIY setup or the potential costs of third-party managed services.

Helios simplifies the process of exploring and analyzing Amazon Kinesis event data by offering a Kinesis integration, an intuitive SQL-based analysis interface, and automated AWS infrastructure deployment for the Helios application.

At its core, Helios is comprised of:

  1. Helios Amazon Kinesis Integration: Links existing Kinesis streams to the Helios infrastructure.

  2. Helios web application: offers an interface for connecting existing streams to the Helios backend infrastructure and an integrated SQL console querying and analyzing Kinesis event streams.

  3. Helios CLI: configures Helios deployment with AWS credentials; deploys the entire Helios stack to AWS using a single command; and destroys the stack when needed. We will go into more detail within the Automating Deployment section.

As with any tool, the suitability of Helios depends on each team's specific requirements, existing infrastructure, and resources. We encourage potential users to evaluate how our offering aligns with their particular needs and constraints.

Comparison Table

To summarize, teams have numerous options for viewing and analyzing events within Kinesis streams. There is no one-size-fits-all solution. The choices can be broadly categorized into three main options: DIY, paid 3rd-party services, and open-source solutions (including Helios).

Each option offers distinct advantages and limitations, making it crucial for teams to carefully evaluate their specific requirements before selecting the most suitable approach.

Having explored the problem space and current solutions, we will now dive into Helios' internal workings. The upcoming section will break down our architecture, examining how each component functions in detail.

- +
Skip to content

Introduction

Helios is an open-source platform designed to simplify the visualization and analysis of real-time event streams by exposing data for SQL querying. Our automated deployment process and intuitive interface allow teams to query and gain insights from their existing event streams.

In this case study, we will describe why we built Helios, the architecture and specific trade-offs made, technical challenges we encountered and improvements we made along the way.

Problem Domain

In today's data-driven landscape, teams increasingly rely on real-time event streams to gain insights and drive decision-making. However, the sheer volume and velocity of these streams often present significant challenges for extracting meaningful information, including viewing raw event data, performing ad-hoc analysis, and debugging events in real-time. These difficulties are particularly pronounced when using popular event streaming platforms like Amazon Kinesis, which offer limited native tools for data exploration and analysis. To fully appreciate the context in which Helios operates and the problems it aims to solve, it's essential to first understand some fundamental concepts related to events and event streaming.

Fundamental Background

Events

An event is a state change in a system or application. This could be as simple as a user clicking a button or as complex as a critical system update.

“[An event is] a small, self-contained, immutable object containing the details of something that happened at some point in time … [it] might be an action that a user took, such as viewing a page or making a purchase. It might also originate from a machine, such as a periodic measurement from a temperature sensor, or a CPU utilization metric.” - DDIA

Event streaming

Event Streaming

Event streaming is the continuous transmission and processing of events from various sources in real-time or near real-time. Real-time has different meanings depending on the context. For instance, in high-frequency trading, real-time might mean microseconds, whereas in social media analytics, it could mean within a few minutes. In this case study, we define real-time as end-to-end latency within 5 seconds from event consumption by Helios from a streaming platform to event data being available for querying. This definition is based on our load testing, which will be detailed later in this case study.

In event streaming architecture, events are generated by producers, for example a web application which produces user click events, and can be processed by multiple consumers. A consumer is an entity that receives and processes messages or events from one or more streams. Brokers are the intermediary that receives, stores and distributes events (e.g. queues).

Event Streaming Platforms

Event streaming platforms act like a broker in that they receive events from producers and can have multiple consumers. Popular event streaming platforms include Apache Kafka, Google Pub/Sub, and Amazon Kinesis.

The defining characteristics of event streaming are its real-time nature - where data is processed as it arrives rather than being stored for later analysis, its continuity - with data being constantly added to the stream, and its unboundedness - meaning the total size of the data is unknown and potentially infinite.

Event streaming use cases

Event streaming serves a variety of functions, including:

User analytics - allowing organizations to gain immediate insights from data as it's generated

Log aggregation and monitoring - facilitating rapid identification of system issues and performance bottlenecks

Security - powers fraud detection systems, enabling swift responses to suspicious activities

Transaction processing - financial institutions leverage event streaming for processing transactions in real-time, ensuring up-to-the-second accuracy in account balances and trade executions

Event Streaming Platform Limitations

While event streaming platforms excel at ingesting and processing high-volume, real-time data, they present a significant challenge for data analysis and exploration: data accessibility. Event streaming platforms are optimized for throughput and real-time processing, not for ad-hoc querying or historical analysis. This makes it difficult for analysts to explore past data or perform complex analyses on the fly.

Black Box

This limitation can significantly impact a team's ability to derive timely insights from their streaming data. To illustrate this challenge more concretely, let's consider a common use case in the e-commerce industry.

Example: User Analytics in E-commerce

Imagine an e-commerce platform using Amazon Kinesis to stream user behavior data. The platform captures events such as page views, product interactions, and purchases in real-time. The analytics team might want to leverage this data to:

Analyze user journeys across sessions

Compute real-time conversion rates

Detect anomalies in user behavior

However, they face a significant hurdle: data accessibility. While Kinesis efficiently handles the ingestion of these events, it does not provide an easy way for analysts to query this data using familiar tools like SQL. This means that even seemingly simple questions like "What are the top 5 products viewed in the last hour?" become challenging to answer quickly.

The team finds themselves constrained by the limitations of the platform, unable to easily explore the wealth of data at their fingertips. This scenario underscores the need for additional tools that can bridge the gap between the data ingestion capabilities of streaming platforms and the analytical needs of data teams.

Given these challenges with event streams, various platforms exist to improve event visibility and accessibility. Helios is one such tool, focused on enabling real-time exploration and analysis of Amazon Kinesis event streams.

Third-Party Managed Services

There are a number of data analytics managed services that help teams access their streaming data for analysis.

For example, Tinybird is a data platform that allows users to explore real-time event streams using SQL and publish API endpoints of the query results to be consumed by user-facing analytics systems. Some of their most well-known customers include Canva and Vercel.

There are similar services including StarTree, which operates in the same space as Tinybird and serves customers including Stripe.

Tinybird

Managed services offer quick setup and powerful features, but come with specific trade-offs.

The main trade-offs of using managed services like Tinybird are vendor lock-in, cost and data ownership. Vendor lock-in can make it difficult and expensive to switch to another provider or bring operations in-house. In terms of cost, while managed services often have higher upfront pricing, they can potentially reduce operational expenses by eliminating the need for in-house infrastructure management and specialized personnel. The total cost of ownership depends on factors such as scaling needs and existing resources. Regarding data ownership, using a managed service means entrusting data storage and management to a third party. This can raise concerns about data control, access, portability, and compliance, although many services offer security measures and options for increased data control.

For teams willing to navigate these trade-offs, managed services can often be a great option, providing scalability and specialized capabilities without the complexity of maintaining a custom infrastructure. If going the managed route, each service comes with its own set of considerations in terms of deployment complexity, underlying database, and integration capabilities.

DIY Infrastructure

Alternatively, teams opting for a do-it-yourself (DIY) solution would need to develop and maintain their own infrastructure and tooling, mirroring the capabilities offered by managed services such as Tinybird.

The DIY route offers maximum flexibility and control over your data and infrastructure. It allows for deep customization to meet specific needs and can potentially be more cost-effective at large scales. However, it requires in-house expertise in areas such as data engineering and infrastructure management. The initial setup time and ongoing maintenance efforts are also considerably higher compared to managed services.

How does Helios compare?

Helios provides an alternative option in the landscape of event stream analytics solutions, particularly for users of Amazon Kinesis. Our platform aims to address some of the challenges associated with both third-party managed services and DIY approaches.

Helios strives to offer a practical solution for teams looking to analyze their Kinesis data without the full complexity of a DIY setup or the potential costs of third-party managed services.

Helios simplifies the process of exploring and analyzing Amazon Kinesis event data by offering a Kinesis integration, an intuitive SQL-based analysis interface, and automated AWS infrastructure deployment for the Helios application.

At its core, Helios is comprised of:

Helios Amazon Kinesis Integration: Links existing Kinesis streams to the Helios infrastructure.

Kinesis Connection

Helios web application: offers an interface for connecting existing streams to the Helios backend infrastructure and an integrated SQL console querying and analyzing Kinesis event streams.

Web app

Helios CLI: configures Helios deployment with AWS credentials; deploys the entire Helios stack to AWS using a single command; and destroys the stack when needed. We will go into more detail within the Automating Deployment section.

CLI

As with any tool, the suitability of Helios depends on each team's specific requirements, existing infrastructure, and resources. We encourage potential users to evaluate how our offering aligns with their particular needs and constraints.

Comparison Table

To summarize, teams have numerous options for viewing and analyzing events within Kinesis streams. There is no one-size-fits-all solution. The choices can be broadly categorized into three main options: DIY, paid 3rd-party services, and open-source solutions (including Helios).

Each option offers distinct advantages and limitations, making it crucial for teams to carefully evaluate their specific requirements before selecting the most suitable approach.

Comparison Table

Having explored the problem space and current solutions, we will now dive into Helios' internal workings. The upcoming section will break down our architecture, examining how each component functions in detail.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/load-testing.html b/docs/.vitepress/dist/load-testing.html index ed0a98b..b7b8f21 100644 --- a/docs/.vitepress/dist/load-testing.html +++ b/docs/.vitepress/dist/load-testing.html @@ -5,20 +5,20 @@ Load Testing | Helios Case Study - - + + - - - - - + + + + + -
Skip to content

Load Testing

How Much Load Can Our Single Node Handle?

Load testing can play a vital role in understanding the limits an architecture can handle. By simulating real-world usage scenarios, load testing helps identify performance bottlenecks, system limitations, and areas for optimization before they become critical issues in production environments.

We conducted basic load testing on Helios to evaluate its performance under high-volume conditions. Our testing methodology assesses both data ingestion capabilities and query performance under load, simulating a continuous data stream typical of web applications. Our end-to-end tests are designed to closely mirror the performance a Helios user would experience in the web app.

Methodology

Infrastructure Setup

EC2 Instance:

  • Instance Type: c5.4xlarge
  • vCPUs: 16
  • Memory: 32 GB
  • Storage: 500gb gp2

Lambda Configuration:

  • Runtime: Python 3.12
  • Memory: 1024 MB
  • Timeout: 15 minutes
  • Concurrency: 10 instances per shard
  • Batch Size: 100
  • Batch Window: 1 second

Kinesis Configuration:

  • Streams: 1 stream
  • Shards: 1 shard per stream

Data Generation and Ingestion

To illustrate the real-world applicability of our load testing, let's revisit our e-commerce platform example from the introduction. In that scenario, an analytics team needed to quickly analyze user behavior data streamed through Amazon Kinesis.

We simulated data ingestion at a rate of 900 events per second for 30 seconds. This rate was chosen to represent a realistic high-volume scenario for a small to medium scale web application. We chose 900 because the max throughput for a Kinesis shard is 1000 requests per second. The Lambda function, triggered by Kinesis, processes these events by decoding them and then inserting them into ClickHouse.

This ingestion rate of 900 events per second closely mimics the high-volume data flow an e-commerce platform might experience during peak shopping hours, capturing events like page views, product interactions, and purchases.

Dataset Description

Our query test dataset consists of 100 million rows and 107 columns of web traffic data, derived from production data. While this is a relatively low volume of data, it allows for quicker test iterations. While our test dataset is generic web traffic data, it shares many similarities with the e-commerce scenario we discussed earlier. For instance, the UserID column could represent unique shoppers, the URL could indicate product pages viewed, and the SearchPhrase could reflect product searches.

The queries we use for testing only include the following columns:

  • UserID: Unique identifier for visitors
  • AdvEngineID: Identifier for advertising engines or campaigns
  • RegionID: Geographical region identifier
  • ResolutionWidth: Screen width of the user's device
  • URL: The webpage URL accessed
  • SearchPhrase: Search terms used to reach the site
  • (101 other columns are present but unused)

Note that we only have to access these 6 columns of a 107 column table for 5 different queries. This highlights the idea that analytical queries tend to only span a few columns or less at a time. These columns allow us to answer questions similar to those our hypothetical e-commerce analytics team might ask. For example, using UserID, URL, and SearchPhrase, we could analyze user journeys across product pages and search behaviors.

The dataset allows for analysis of user behavior, advertising effectiveness, regional performance, and search patterns. We obtained the dataset and selected 5 queries of increasing complexity from ClickBench[link], an open source benchmarking tool designed for testing the performance of databases using analytical queries.

Measurement Method

We implemented a monitoring system that tracks:

  • The number of records written to the Kinesis stream per second.
  • The time difference between event generation, insertion into Kinesis, and availability for querying in ClickHouse.

Load Testing Objectives

Our primary objectives for these tests were:

  1. Maintain consistent ingestion rates and measure end-to-end latency from event generation to availability for querying, aiming to stay under 30 seconds for full event availability.
  2. Evaluate end-to-end query response times under continuous high-volume data insertions (particularly relevant to our e-commerce example as it simulates the ability to compute real-time metrics like conversion rates while the system continues to ingest new user events.)
  3. Identify potential bottlenecks in our data processing pipeline.

Results

Stream Ingestion and Latency

Latency Measurements: We conducted multiple tests, each processing 27,000 events over 30 seconds. Here are the end-to-end latency results:

  • Test 1: 1.30 seconds
  • Test 2: 1.30 seconds
  • Test 3: 1.29 seconds

These latency measurements represent the end-to-end time from the last event generation to full availability for querying in ClickHouse, including:

  • Kinesis stream ingestion of final events and Lambda processing time
  • Data insertion into Clickhouse
  • Time for the application server to query ClickHouse and return the count of all 27,000 rows and return the result

Query Performance

Query performance tests were conducted on our table of 100 million rows while 900 rows per second were continuously inserted. Note that this is an end-to-end time, which includes request flight times to and from API, not just the query execution times. Each query was ran 5 times synchronously and the results are presented in the following table:

QuerySQLAvg Time (s)Min Time (s)Max Time (s)Median Time (s)Std Dev (s)
How many hits were driven by advertising?SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0;0.150.130.180.150.02
What's the total ad impact, hit count, and average screen width?SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits;0.160.140.180.160.02
How many unique users visited the site?SELECT COUNT(DISTINCT UserID) FROM hits;0.530.510.550.520.02
Which are the top 10 regions by unique user count?SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC LIMIT 10;0.740.720.750.740.01
What are the top 10 search phrases leading to Google-related URLs?SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10;0.990.951.040.980.03

Limitations and Interpretation of Results

Our current testing setup focuses on the ingestion of a single data stream with a relatively small single table dataset of 100 million rows. While derived from production data, this volume may not fully represent the scale of larger production environments. The ClickBench repo provides more detail on how to replicate the results as well as limitations of their dataset here[link]. Additionally, the Lambda functions were warmed up prior to testing to better simulate an already running stream. These factors should be considered when interpreting our results and planning future scaling efforts. In the future, we’d like to test higher ingestion rates, concurrent queries, and join queries.

Our end-to-end results demonstrate Helios' performance under real-world conditions. Data ingestion tests showed consistent low latency, with end-to-end processing times averaging around 1.30 seconds for 27,000 events over 30 seconds. This includes Kinesis ingestion, Lambda processing, ClickHouse insertion, and API flight times. Query performance tests on a c5.4xlarge instance (16 vCPUs, 32 GB RAM) showed efficient handling of various analytical tasks. Four queries, including operations like `COUNT`, `SUM`, `AVG`, and `GROUP BY` on distinct columns, completed in 0.15 to 0.74 seconds. The most complex query, combining `LIKE`, `GROUP BY`, and `ORDER BY` operations, averaged 0.99 seconds.

Notably, only the fifth query presented memory issues on a t2.large instance (2 vCPUs, 8 GB RAM). We hypothesize that the memory-intensive nature of grouping and sorting a large result set from the broad `LIKE '%google%'` condition exceeded the available RAM. Upgrading to the c5.4xlarge instance resolved this issue, highlighting the importance of proper resource allocation for complex analytical queries. These results demonstrate Helios' capability to handle high-volume data ingestion and complex queries efficiently, with the flexibility to scale resources for more demanding operations.

Benchmarking

For comparison of our results against other analytical databases, we utilized the same open-source benchmarking suite. ClickHouse conducted open-source benchmarking tests comparing their database to several others. The evaluation used a dataset of 100 million rows and executed queries typical of ad-hoc analytics and real-time dashboards to assess each database's performance boundaries. As you can see, ClickHouse excelled in most of the queries used compared to other databases. For a comprehensive view of the benchmark results, you can refer to the full report at the provided link.

ClickHousePinotElasticsearchMongoDBPostgreSQL
0.007s0.185s1.667s0.398s254.238s
0.020s0.258s13.991s115.775s263.072s
0.339s3.633s4.413s25.618s42.334s
0.490s2.902s16.050s377.012s321.918s
0.622s16.459s20.130s267.690s
- +
Skip to content

Load Testing

How Much Load Can Our Single Node Handle?

Load testing can play a vital role in understanding the limits an architecture can handle. By simulating real-world usage scenarios, load testing helps identify performance bottlenecks, system limitations, and areas for optimization before they become critical issues in production environments.

We conducted basic load testing on Helios to evaluate its performance under high-volume conditions. Our testing methodology assesses both data ingestion capabilities and query performance under load, simulating a continuous data stream typical of web applications. Our end-to-end tests are designed to closely mirror the performance a Helios user would experience in the web app.

Methodology

Infrastructure Setup

EC2 InstanceLambda ConfigurationKinesis Configuration
• Instance Type: c5.4xlarge• Runtime: Python 3.12• Streams: 1 stream
• vCPUs: 16• Memory: 1024 MB• Shards: 1 shard per stream
• Memory: 32 GB• Timeout: 15 minutes
• Storage: 500gb gp2• Concurrency: 10 instances per shard
• Batch Size: 100
• Batch Window: 1 second

Data Generation and Ingestion

To illustrate the real-world applicability of our load testing, let's revisit our e-commerce platform example from the introduction. In that scenario, an analytics team needed to quickly analyze user behavior data streamed through Amazon Kinesis.

We simulated data ingestion at a rate of 900 events per second for 30 seconds. This rate was chosen to represent a realistic high-volume scenario for a small to medium scale web application. We chose 900 because the max throughput for a Kinesis shard is 1000 requests per second. The Lambda function, triggered by Kinesis, processes these events by decoding them and then inserting them into ClickHouse.

This ingestion rate of 900 events per second closely mimics the high-volume data flow an e-commerce platform might experience during peak shopping hours, capturing events like page views, product interactions, and purchases.

Dataset Description

Our query test dataset consists of 100 million rows and 107 columns of web traffic data, derived from production data. While this is a relatively low volume of data, it allows for quicker test iterations. While our test dataset is generic web traffic data, it shares many similarities with the e-commerce scenario we discussed earlier. For instance, the UserID column could represent unique shoppers, the URL could indicate product pages viewed, and the SearchPhrase could reflect product searches.

The queries we use for testing only include the following columns:

  • UserID: Unique identifier for visitors
  • AdvEngineID: Identifier for advertising engines or campaigns
  • RegionID: Geographical region identifier
  • ResolutionWidth: Screen width of the user's device
  • URL: The webpage URL accessed
  • SearchPhrase: Search terms used to reach the site
  • (101 other columns are present but unused)

Note that we only have to access these 6 columns of a 107 column table for 5 different queries. This highlights the idea that analytical queries tend to only span a few columns or less at a time. These columns allow us to answer questions similar to those our hypothetical e-commerce analytics team might ask. For example, using UserID, URL, and SearchPhrase, we could analyze user journeys across product pages and search behaviors.

The dataset allows for analysis of user behavior, advertising effectiveness, regional performance, and search patterns. We obtained the dataset and selected 5 queries of increasing complexity from ClickBench, an open source benchmarking tool designed for testing the performance of databases using analytical queries.

Measurement Method

We implemented a monitoring system that tracks:

  • The number of records written to the Kinesis stream per second.
  • The time difference between event generation, insertion into Kinesis, and availability for querying in ClickHouse.

Load Testing Objectives

Our primary objectives for these tests were:

Maintain consistent ingestion rates and measure end-to-end latency from event generation to availability for querying, aiming to stay under 30 seconds for full event availability.

Evaluate end-to-end query response times under continuous high-volume data insertions _(particularly relevant to our e-commerce example as it simulates the ability to compute real-time metrics like conversion rates while the system continues to ingest new user events.)_

Identify potential bottlenecks in our data processing pipeline.

Results

Stream Ingestion and Latency

Latency Measurements: We conducted multiple tests, each processing 27,000 events over 30 seconds. Here are the end-to-end latency results:

  • Test 1: 1.30 seconds
  • Test 2: 1.30 seconds
  • Test 3: 1.29 seconds

These latency measurements represent the end-to-end time from the last event generation to full availability for querying in ClickHouse, including:

  • Kinesis stream ingestion of final events and Lambda processing time
  • Data insertion into Clickhouse
  • Time for the application server to query ClickHouse and return the count of all 27,000 rows and return the result

Query Performance

Query performance tests were conducted on our table of 100 million rows while 900 rows per second were continuously inserted. Note that this is an end-to-end time, which includes request flight times to and from API, not just the query execution times. Each query was ran 5 times synchronously and the results are presented in the following table:

QuerySQLAvg Time (s)Min Time (s)Max Time (s)Median Time (s)Std Dev (s)
How many page views were driven by advertising?SELECT COUNT(*) FROM hits WHERE AdvEngineID <> 0;0.150.130.180.150.02
What's the total ad impact, page view count, and average screen width?SELECT SUM(AdvEngineID), COUNT(*), AVG(ResolutionWidth) FROM hits;0.160.140.180.160.02
How many unique users visited the site?SELECT COUNT(DISTINCT UserID) FROM hits;0.530.510.550.520.02
Which are the top 10 regions by unique user count?SELECT RegionID, COUNT(DISTINCT UserID) AS u FROM hits GROUP BY RegionID ORDER BY u DESC LIMIT 10;0.740.720.750.740.01
What are the top 10 search phrases leading to Google-related URLs?SELECT SearchPhrase, MIN(URL), COUNT(*) AS c FROM hits WHERE URL LIKE '%google%' AND SearchPhrase <> '' GROUP BY SearchPhrase ORDER BY c DESC LIMIT 10;0.990.951.040.980.03

Limitations and Interpretation of Results

Our current testing setup focuses on the ingestion of a single data stream with a relatively small single table dataset of 100 million rows. While derived from production data, this volume may not fully represent the scale of larger production environments. The ClickBench repo provides more detail on how to replicate the results as well as limitations of their dataset here. Additionally, the Lambda functions were warmed up prior to testing to better simulate an already running stream. These factors should be considered when interpreting our results and planning future scaling efforts. In the future, we’d like to test higher ingestion rates, concurrent queries, and join queries.

Our end-to-end results demonstrate Helios' performance under real-world conditions. Data ingestion tests showed consistent low latency, with end-to-end processing times averaging around 1.30 seconds for 27,000 events over 30 seconds. This includes Kinesis ingestion, Lambda processing, ClickHouse insertion, and API flight times. Query performance tests on a c5.4xlarge instance (16 vCPUs, 32 GB RAM) showed efficient handling of various analytical tasks. Four queries, including operations like `COUNT`, `SUM`, `AVG`, and `GROUP BY` on distinct columns, completed in 0.15 to 0.74 seconds. The most complex query, combining `LIKE`, `GROUP BY`, and `ORDER BY` operations, averaged 0.99 seconds.

Notably, only the fifth query presented memory issues on a t2.large instance (2 vCPUs, 8 GB RAM). We hypothesize that the memory-intensive nature of grouping and sorting a large result set from the broad `LIKE '%google%'` condition exceeded the available RAM. Upgrading to the c5.4xlarge instance resolved this issue, highlighting the importance of proper resource allocation for complex analytical queries. These results demonstrate Helios' capability to handle high-volume data ingestion and complex queries efficiently, with the flexibility to scale resources for more demanding operations.

Benchmarking

For comparison of our results against other analytical databases, we utilized the same open-source benchmarking suite. ClickHouse conducted open-source benchmarking tests comparing their database to several others. The evaluation used a dataset of 100 million rows and executed queries typical of ad-hoc analytics and real-time dashboards to assess each database's performance boundaries. As you can see, ClickHouse excelled in most of the queries used compared to other databases. For a comprehensive view of the benchmark results, you can refer to the full report at the provided link.

ClickHousePinotElasticsearchMongoDBPostgreSQL
0.007s0.185s1.667s0.398s254.238s
0.020s0.258s13.991s115.775s263.072s
0.339s3.633s4.413s25.618s42.334s
0.490s2.902s16.050s377.012s321.918s
0.622s16.459s20.130s267.690s
+ \ No newline at end of file diff --git a/docs/.vitepress/dist/main.html b/docs/.vitepress/dist/main.html index 845c5ab..660bfb9 100644 --- a/docs/.vitepress/dist/main.html +++ b/docs/.vitepress/dist/main.html @@ -5,20 +5,20 @@ Helios Case Study - - + + - - - - - + + + + + - - + + \ No newline at end of file diff --git a/docs/.vitepress/dist/markdown-examples.html b/docs/.vitepress/dist/markdown-examples.html index 5565405..9ca3182 100644 --- a/docs/.vitepress/dist/markdown-examples.html +++ b/docs/.vitepress/dist/markdown-examples.html @@ -5,19 +5,19 @@ Markdown Extension Examples | Helios Case Study - - + + - - - - - + + + + + -
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

md
```js{4}
+    
Skip to content

Markdown Extension Examples

This page demonstrates some of the built-in markdown extensions provided by VitePress.

Syntax Highlighting

VitePress provides Syntax Highlighting powered by Shiki, with additional features like line-highlighting:

Input

md
```js{4}
 export default {
   data () {
     return {
@@ -49,8 +49,8 @@
 
 ::: details
 This is a details block.
-:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

- +:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

Check out the documentation for the full list of markdown extensions.

+ \ No newline at end of file diff --git a/docs/.vitepress/dist/references.html b/docs/.vitepress/dist/references.html index f578a6e..d520719 100644 --- a/docs/.vitepress/dist/references.html +++ b/docs/.vitepress/dist/references.html @@ -5,20 +5,20 @@ References | Helios Case Study - - + + - - - - - + + + + + - - + + \ No newline at end of file diff --git a/docs/.vitepress/dist/scaling.html b/docs/.vitepress/dist/scaling.html index 27a20e3..737439d 100644 --- a/docs/.vitepress/dist/scaling.html +++ b/docs/.vitepress/dist/scaling.html @@ -5,20 +5,20 @@ Scaling Helios | Helios Case Study - - + + - - - - - + + + + + -
Skip to content

Scaling Helios

As noted previously in the “Deploying ClickHouse” section, we decided to follow ClickHouses’ recommendation and host the ClickHouse database on one EC2 instance.

The chosen architecture presents several important trade-offs. By deploying everything on a single EC2 instance, we significantly reduce deployment complexity, avoiding the intricacies of managing multiple ClickHouse shards.

While this design simplifies management and reduces the cost of Clickhouse database hosting by following best practices, it does so at the expense of horizontal scalability and high availability options that a distributed setup might offer.

Vertical scaling, often referred to as "scaling up," involves increasing the resources (such as CPU, RAM, or storage) of existing services.

The diagram below illustrates three primary vertical scaling options available for the Helios architecture within the AWS ecosystem. These options focus on enhancing the capabilities of our existing EC2 instances, Elastic Block Store (EBS) volumes, and Lambda functions, allowing us to boost processing power and storage capacity without fundamentally altering our system's architecture. By leveraging these vertical scaling techniques, we can efficiently address growing workloads and ensure Helios continues to deliver solid performance as user needs evolve.

Understanding our system's limits is key to effective scaling. In this next section, we'll walk through our load testing process and system capabilities.

- +
Skip to content

Scaling Helios

As noted previously in the “Deploying ClickHouse” section, we decided to follow ClickHouses’ recommendation and host the ClickHouse database on one EC2 instance.

The chosen architecture presents several important trade-offs. By deploying everything on a single EC2 instance, we significantly reduce deployment complexity, avoiding the intricacies of managing multiple ClickHouse shards.

While this design simplifies management and reduces the cost of Clickhouse database hosting by following best practices, it does so at the expense of horizontal scalability and high availability options that a distributed setup might offer.

Vertical scaling, often referred to as "scaling up," involves increasing the resources (such as CPU, RAM, or storage) of existing services.

The diagram below illustrates three primary vertical scaling options available for the Helios architecture within the AWS ecosystem. These options focus on enhancing the capabilities of our existing EC2 instances, Elastic Block Store (EBS) volumes, and Lambda functions, allowing us to boost processing power and storage capacity without fundamentally altering our system's architecture. By leveraging these vertical scaling techniques, we can efficiently address growing workloads and ensure Helios continues to deliver solid performance as user needs evolve.

Scaling Helios

Understanding our system's limits is key to effective scaling. In this next section, we'll walk through our load testing process and system capabilities.

+ \ No newline at end of file diff --git a/docs/.vitepress/theme/components/AboutPage.vue b/docs/.vitepress/theme/components/AboutPage.vue index 29b9868..5552544 100644 --- a/docs/.vitepress/theme/components/AboutPage.vue +++ b/docs/.vitepress/theme/components/AboutPage.vue @@ -202,7 +202,7 @@ nav ul li a:hover { left: -20%; width: 130%; height: 1000px; - background-image: url('home/blur1.png'); + background-image: url('/home/blur1.png'); background-position: center; background-size: cover; z-index: -1; diff --git a/docs/.vitepress/theme/components/HomePage.vue b/docs/.vitepress/theme/components/HomePage.vue index 3aae00b..ca36552 100644 --- a/docs/.vitepress/theme/components/HomePage.vue +++ b/docs/.vitepress/theme/components/HomePage.vue @@ -91,8 +91,8 @@ export default { diff --git a/package-lock.json b/package-lock.json index c67ef51..34d406f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -29,6 +29,7 @@ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", "@algolia/autocomplete-shared": "1.9.3" @@ -39,6 +40,7 @@ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/autocomplete-shared": "1.9.3" }, @@ -51,6 +53,7 @@ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/autocomplete-shared": "1.9.3" }, @@ -64,6 +67,7 @@ "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", "dev": true, + "license": "MIT", "peerDependencies": { "@algolia/client-search": ">= 4.9.1 < 6", "algoliasearch": ">= 4.9.1 < 6" @@ -74,6 +78,7 @@ "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.24.0.tgz", "integrity": "sha512-t63W9BnoXVrGy9iYHBgObNXqYXM3tYXCjDSHeNwnsc324r4o5UiVKUiAB4THQ5z9U5hTj6qUvwg/Ez43ZD85ww==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/cache-common": "4.24.0" } @@ -82,13 +87,15 @@ "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.24.0.tgz", "integrity": "sha512-emi+v+DmVLpMGhp0V9q9h5CdkURsNmFC+cOS6uK9ndeJm9J4TiqSvPYVu+THUP8P/S08rxf5x2P+p3CfID0Y4g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@algolia/cache-in-memory": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.24.0.tgz", "integrity": "sha512-gDrt2so19jW26jY3/MkFg5mEypFIPbPoXsQGQWAi6TrCPsNOSEYepBMPlucqWigsmEy/prp5ug2jy/N3PVG/8w==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/cache-common": "4.24.0" } @@ -98,6 +105,7 @@ "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.24.0.tgz", "integrity": "sha512-adcvyJ3KjPZFDybxlqnf+5KgxJtBjwTPTeyG2aOyoJvx0Y8dUQAEOEVOJ/GBxX0WWNbmaSrhDURMhc+QeevDsA==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/client-common": "4.24.0", "@algolia/client-search": "4.24.0", @@ -109,6 +117,7 @@ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/requester-common": "4.24.0", "@algolia/transporter": "4.24.0" @@ -119,6 +128,7 @@ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/client-common": "4.24.0", "@algolia/requester-common": "4.24.0", @@ -130,6 +140,7 @@ "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.24.0.tgz", "integrity": "sha512-y8jOZt1OjwWU4N2qr8G4AxXAzaa8DBvyHTWlHzX/7Me1LX8OayfgHexqrsL4vSBcoMmVw2XnVW9MhL+Y2ZDJXg==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/client-common": "4.24.0", "@algolia/client-search": "4.24.0", @@ -142,6 +153,7 @@ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/requester-common": "4.24.0", "@algolia/transporter": "4.24.0" @@ -152,6 +164,7 @@ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/client-common": "4.24.0", "@algolia/requester-common": "4.24.0", @@ -163,6 +176,7 @@ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.0.2.tgz", "integrity": "sha512-wXZn4Ne+oFr1vaJuT2El5cbobm4sUgYqWiiWyy4QDr8AIoUfROtCkV7YhwZLzmZRBfn6ptPB5MB8ely7iFZXnw==", "dev": true, + "license": "MIT", "peer": true, "engines": { "node": ">= 14.0.0" @@ -173,6 +187,7 @@ "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.24.0.tgz", "integrity": "sha512-l5FRFm/yngztweU0HdUzz1rC4yoWCFo3IF+dVIVTfEPg906eZg5BOd1k0K6rZx5JzyyoP4LdmOikfkfGsKVE9w==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/client-common": "4.24.0", "@algolia/requester-common": "4.24.0", @@ -184,6 +199,7 @@ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/requester-common": "4.24.0", "@algolia/transporter": "4.24.0" @@ -194,6 +210,7 @@ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.0.2.tgz", "integrity": "sha512-dOAekvG7S85n1x3Nibc1UUADQCZpFXP7m/bYoxzIQe2+bGKAPa2zQ4s9E1H+qIDiWa7EzhVfwGlSxRi9S2SeVg==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@algolia/client-common": "5.0.2", @@ -208,13 +225,15 @@ "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.24.0.tgz", "integrity": "sha512-LLUNjkahj9KtKYrQhFKCzMx0BY3RnNP4FEtO+sBybCjJ73E8jNdaKJ/Dd8A/VA4imVHP5tADZ8pn5B8Ga/wTMA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@algolia/logger-console": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.24.0.tgz", "integrity": "sha512-X4C8IoHgHfiUROfoRCV+lzSy+LHMgkoEEU1BbKcsfnV0i0S20zyy0NLww9dwVHUWNfPPxdMU+/wKmLGYf96yTg==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/logger-common": "4.24.0" } @@ -224,6 +243,7 @@ "resolved": "https://registry.npmjs.org/@algolia/recommend/-/recommend-4.24.0.tgz", "integrity": "sha512-P9kcgerfVBpfYHDfVZDvvdJv0lEoCvzNlOy2nykyt5bK8TyieYyiD0lguIJdRZZYGre03WIAFf14pgE+V+IBlw==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/cache-browser-local-storage": "4.24.0", "@algolia/cache-common": "4.24.0", @@ -243,6 +263,7 @@ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/requester-common": "4.24.0", "@algolia/transporter": "4.24.0" @@ -253,6 +274,7 @@ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/client-common": "4.24.0", "@algolia/requester-common": "4.24.0", @@ -264,6 +286,7 @@ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/requester-common": "4.24.0" } @@ -273,6 +296,7 @@ "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/requester-common": "4.24.0" } @@ -282,6 +306,7 @@ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.0.2.tgz", "integrity": "sha512-GrLWa9jo+tqnieXtpdUMM6NHZV/bDbAJ8uBgyDF5PpaKtk44/3vQk8LVcKQsT3/nnVb/5T+AprNbJmIjsVaRqA==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@algolia/client-common": "5.0.2" @@ -294,13 +319,15 @@ "version": "4.24.0", "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.24.0.tgz", "integrity": "sha512-k3CXJ2OVnvgE3HMwcojpvY6d9kgKMPRxs/kVohrwF5WMr2fnqojnycZkxPoEg+bXm8fi5BBfFmOqgYztRtHsQA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@algolia/requester-node-http": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.0.2.tgz", "integrity": "sha512-6Kt1MQcdCyefs//ie3JtcDo/73QRwHoA1JX4J5t1yZp0W3J3o1QPb6mueFswJ+nHg+cVbSpbsL2xamtZ/rjj7w==", "dev": true, + "license": "MIT", "peer": true, "dependencies": { "@algolia/client-common": "5.0.2" @@ -314,6 +341,7 @@ "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.24.0.tgz", "integrity": "sha512-86nI7w6NzWxd1Zp9q3413dRshDqAzSbsQjhcDhPIatEFiZrL1/TjnHL8S7jVKFePlIMzDsZWXAXwXzcok9c5oA==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/cache-common": "4.24.0", "@algolia/logger-common": "4.24.0", @@ -324,6 +352,7 @@ "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -332,6 +361,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -340,6 +370,7 @@ "version": "7.25.3", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "license": "MIT", "dependencies": { "@babel/types": "^7.25.2" }, @@ -354,6 +385,7 @@ "version": "7.25.2", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.24.8", "@babel/helper-validator-identifier": "^7.24.7", @@ -367,13 +399,15 @@ "version": "3.6.1", "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.6.1.tgz", "integrity": "sha512-VtVb5DS+0hRIprU2CO6ZQjK2Zg4QU5HrDM1+ix6rT0umsYvFvatMAnf97NHZlVWDaaLlx7GRfR/7FikANiM2Fg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@docsearch/js": { "version": "3.6.1", "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.6.1.tgz", "integrity": "sha512-erI3RRZurDr1xES5hvYJ3Imp7jtrXj6f1xYIzDzxiS7nNBufYWPbJwrmMqWC5g9y165PmxEmN9pklGCdLi0Iqg==", "dev": true, + "license": "MIT", "dependencies": { "@docsearch/react": "3.6.1", "preact": "^10.0.0" @@ -384,6 +418,7 @@ "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.6.1.tgz", "integrity": "sha512-qXZkEPvybVhSXj0K7U3bXc233tk5e8PfhoZ6MhPOiik/qUQxYC+Dn9DnoS7CxHQQhHfCvTiN0eY9M12oRghEXw==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/autocomplete-core": "1.9.3", "@algolia/autocomplete-preset-algolia": "1.9.3", @@ -411,6 +446,74 @@ } } }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@esbuild/darwin-arm64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", @@ -419,6 +522,7 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -427,10 +531,317 @@ "node": ">=12" } }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@fortawesome/fontawesome-common-types": { "version": "6.6.0", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.6.0.tgz", "integrity": "sha512-xyX0X9mc0kyz9plIyryrRbl7ngsA9jz77mCZJsUkLl+ZKs0KWObgaEBoSgQiYWAsSmjz/yjl0F++Got0Mdp4Rw==", + "license": "MIT", "engines": { "node": ">=6" } @@ -439,6 +850,7 @@ "version": "6.6.0", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.6.0.tgz", "integrity": "sha512-KHwPkCk6oRT4HADE7smhfsKudt9N/9lm6EJ5BVg0tD1yPA5hht837fB87F8pn15D8JfTqQOjhKTktwmLMiD7Kg==", + "license": "MIT", "dependencies": { "@fortawesome/fontawesome-common-types": "6.6.0" }, @@ -450,6 +862,7 @@ "version": "6.6.0", "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.6.0.tgz", "integrity": "sha512-1MPD8lMNW/earme4OQi1IFHtmHUwAKgghXlNwWi9GO7QkTfD+IIaYpIai4m2YJEzqfEji3jFHX1DZI5pbY/biQ==", + "license": "(CC-BY-4.0 AND MIT)", "dependencies": { "@fortawesome/fontawesome-common-types": "6.6.0" }, @@ -461,6 +874,7 @@ "version": "6.6.0", "resolved": "https://registry.npmjs.org/@fortawesome/free-regular-svg-icons/-/free-regular-svg-icons-6.6.0.tgz", "integrity": "sha512-Yv9hDzL4aI73BEwSEh20clrY8q/uLxawaQ98lekBx6t9dQKDHcDzzV1p2YtBGTtolYtNqcWdniOnhzB+JPnQEQ==", + "license": "(CC-BY-4.0 AND MIT)", "dependencies": { "@fortawesome/fontawesome-common-types": "6.6.0" }, @@ -472,6 +886,7 @@ "version": "6.6.0", "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-6.6.0.tgz", "integrity": "sha512-IYv/2skhEDFc2WGUcqvFJkeK39Q+HyPf5GHUrT/l2pKbtgEIv1al1TKd6qStR5OIwQdN1GZP54ci3y4mroJWjA==", + "license": "(CC-BY-4.0 AND MIT)", "dependencies": { "@fortawesome/fontawesome-common-types": "6.6.0" }, @@ -483,6 +898,7 @@ "version": "3.0.8", "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-3.0.8.tgz", "integrity": "sha512-yyHHAj4G8pQIDfaIsMvQpwKMboIZtcHTUvPqXjOHyldh1O1vZfH4W03VDPv5RvI9P6DLTzJQlmVgj9wCf7c2Fw==", + "license": "MIT", "peerDependencies": { "@fortawesome/fontawesome-svg-core": "~1 || ~6", "vue": ">= 3.0.0 < 4" @@ -492,6 +908,7 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@heroicons/vue/-/vue-2.1.5.tgz", "integrity": "sha512-IpqR72sFqFs55kyKfFS7tN+Ww6odFNeH/7UxycIOrlVYfj4WUGAdzQtLBnJspucSeqWFQsKM0g0YrgU655BEfA==", + "license": "MIT", "peerDependencies": { "vue": ">= 3" } @@ -499,17 +916,47 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" } }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.0.tgz", + "integrity": "sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.0.tgz", + "integrity": "sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, "node_modules/@rollup/rollup-darwin-arm64": { "version": "4.21.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.0.tgz", @@ -518,16 +965,200 @@ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" ] }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.0.tgz", + "integrity": "sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.0.tgz", + "integrity": "sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.0.tgz", + "integrity": "sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.0.tgz", + "integrity": "sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.0.tgz", + "integrity": "sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.0.tgz", + "integrity": "sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.0.tgz", + "integrity": "sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.0.tgz", + "integrity": "sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.0.tgz", + "integrity": "sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.0.tgz", + "integrity": "sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.0.tgz", + "integrity": "sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.0.tgz", + "integrity": "sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.0.tgz", + "integrity": "sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@shikijs/core": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.14.1.tgz", "integrity": "sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==", "dev": true, + "license": "MIT", "dependencies": { "@types/hast": "^3.0.4" } @@ -537,6 +1168,7 @@ "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.14.1.tgz", "integrity": "sha512-JJqL8QBVCJh3L61jqqEXgFq1cTycwjcGj7aSmqOEsbxnETM9hRlaB74QuXvY/fVJNjbNt8nvWo0VwAXKvMSLRg==", "dev": true, + "license": "MIT", "dependencies": { "shiki": "1.14.1" } @@ -545,13 +1177,15 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/unist": "*" } @@ -560,13 +1194,15 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/markdown-it": { "version": "14.1.2", "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", "dev": true, + "license": "MIT", "dependencies": { "@types/linkify-it": "^5", "@types/mdurl": "^2" @@ -576,25 +1212,29 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/web-bluetooth": { "version": "0.0.20", "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@vitejs/plugin-vue": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.2.tgz", "integrity": "sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==", "dev": true, + "license": "MIT", "engines": { "node": "^18.0.0 || >=20.0.0" }, @@ -607,6 +1247,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.4.38.tgz", "integrity": "sha512-8IQOTCWnLFqfHzOGm9+P8OPSEDukgg3Huc92qSG49if/xI2SAwLHQO2qaPQbjCWPBcQoO1WYfXfTACUrWV3c5A==", + "license": "MIT", "dependencies": { "@babel/parser": "^7.24.7", "@vue/shared": "3.4.38", @@ -619,6 +1260,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.4.38.tgz", "integrity": "sha512-Osc/c7ABsHXTsETLgykcOwIxFktHfGSUDkb05V61rocEfsFDcjDLH/IHJSNJP+/Sv9KeN2Lx1V6McZzlSb9EhQ==", + "license": "MIT", "dependencies": { "@vue/compiler-core": "3.4.38", "@vue/shared": "3.4.38" @@ -628,6 +1270,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.4.38.tgz", "integrity": "sha512-s5QfZ+9PzPh3T5H4hsQDJtI8x7zdJaew/dCGgqZ2630XdzaZ3AD8xGZfBqpT8oaD/p2eedd+pL8tD5vvt5ZYJQ==", + "license": "MIT", "dependencies": { "@babel/parser": "^7.24.7", "@vue/compiler-core": "3.4.38", @@ -644,6 +1287,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.4.38.tgz", "integrity": "sha512-YXznKFQ8dxYpAz9zLuVvfcXhc31FSPFDcqr0kyujbOwNhlmaNvL2QfIy+RZeJgSn5Fk54CWoEUeW+NVBAogGaw==", + "license": "MIT", "dependencies": { "@vue/compiler-dom": "3.4.38", "@vue/shared": "3.4.38" @@ -654,6 +1298,7 @@ "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-7.3.8.tgz", "integrity": "sha512-NURFwmxz4WukFU54IHgyGI2KSejdgHG5JC4xTcWmTWEBIc8aelj9fBy4qsboObGHFp3JIdRxxANO9s2wZA/pVQ==", "dev": true, + "license": "MIT", "dependencies": { "@vue/devtools-kit": "^7.3.8" } @@ -663,6 +1308,7 @@ "resolved": "https://registry.npmjs.org/@vue/devtools-kit/-/devtools-kit-7.3.8.tgz", "integrity": "sha512-HYy3MQP1nZ6GbE4vrgJ/UB+MvZnhYmEwCa/UafrEpdpwa+jNCkz1ZdUrC5I7LpkH1ShREEV2/pZlAQdBj+ncLQ==", "dev": true, + "license": "MIT", "dependencies": { "@vue/devtools-shared": "^7.3.8", "birpc": "^0.2.17", @@ -678,6 +1324,7 @@ "resolved": "https://registry.npmjs.org/@vue/devtools-shared/-/devtools-shared-7.3.8.tgz", "integrity": "sha512-1NiJbn7Yp47nPDWhFZyEKpB2+5/+7JYv8IQnU0ccMrgslPR2dL7u1DIyI7mLqy4HN1ll36gQy0k8GqBYSFgZJw==", "dev": true, + "license": "MIT", "dependencies": { "rfdc": "^1.4.1" } @@ -686,6 +1333,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.4.38.tgz", "integrity": "sha512-4vl4wMMVniLsSYYeldAKzbk72+D3hUnkw9z8lDeJacTxAkXeDAP1uE9xr2+aKIN0ipOL8EG2GPouVTH6yF7Gnw==", + "license": "MIT", "dependencies": { "@vue/shared": "3.4.38" } @@ -694,6 +1342,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.4.38.tgz", "integrity": "sha512-21z3wA99EABtuf+O3IhdxP0iHgkBs1vuoCAsCKLVJPEjpVqvblwBnTj42vzHRlWDCyxu9ptDm7sI2ZMcWrQqlA==", + "license": "MIT", "dependencies": { "@vue/reactivity": "3.4.38", "@vue/shared": "3.4.38" @@ -703,6 +1352,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.4.38.tgz", "integrity": "sha512-afZzmUreU7vKwKsV17H1NDThEEmdYI+GCAK/KY1U957Ig2NATPVjCROv61R19fjZNzMmiU03n79OMnXyJVN0UA==", + "license": "MIT", "dependencies": { "@vue/reactivity": "3.4.38", "@vue/runtime-core": "3.4.38", @@ -714,6 +1364,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.4.38.tgz", "integrity": "sha512-NggOTr82FbPEkkUvBm4fTGcwUY8UuTsnWC/L2YZBmvaQ4C4Jl/Ao4HHTB+l7WnFCt5M/dN3l0XLuyjzswGYVCA==", + "license": "MIT", "dependencies": { "@vue/compiler-ssr": "3.4.38", "@vue/shared": "3.4.38" @@ -725,13 +1376,15 @@ "node_modules/@vue/shared": { "version": "3.4.38", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.4.38.tgz", - "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==" + "integrity": "sha512-q0xCiLkuWWQLzVrecPb0RMsNWyxICOjPrcrwxTUEHb1fsnvni4dcuyG7RT/Ie7VPTvnjzIaWzRMUBsrqNj/hhw==", + "license": "MIT" }, "node_modules/@vueuse/core": { "version": "11.0.1", "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-11.0.1.tgz", "integrity": "sha512-YTrekI18WwEyP3h168Fir94G/HNC27wvXJI21Alm0sPOwvhihfkrvHIe+5PNJq+MpgWdRcsjvE/38JaoKrgZhQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/web-bluetooth": "^0.0.20", "@vueuse/metadata": "11.0.1", @@ -748,6 +1401,7 @@ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" @@ -773,6 +1427,7 @@ "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-11.0.1.tgz", "integrity": "sha512-V/FQTS/aiV6RTFXOj8cXgqhtNJBvxvbHeLElOUR7N7F3Kr0btS+dkymLB54mFd0Or6uEGpgwwb41cs/q2/rdOg==", "dev": true, + "license": "MIT", "dependencies": { "@vueuse/core": "11.0.1", "@vueuse/shared": "11.0.1", @@ -840,6 +1495,7 @@ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" @@ -865,6 +1521,7 @@ "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-11.0.1.tgz", "integrity": "sha512-dTFvuHFAjLYOiSd+t9Sk7xUiuL6jbfay/eX+g+jaipXXlwKur2VCqBCZX+jfu+2vROUGcUsdn3fJR9KkpadIOg==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" } @@ -874,6 +1531,7 @@ "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-11.0.1.tgz", "integrity": "sha512-eAPf5CQB3HR0S76HqrhjBqFYstZfiHWZq8xF9EQmobGBkrhPfErJEhr8aMNQMqd6MkENIx2pblIEfJGlHpClug==", "dev": true, + "license": "MIT", "dependencies": { "vue-demi": ">=0.14.10" }, @@ -887,6 +1545,7 @@ "integrity": "sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "vue-demi-fix": "bin/vue-demi-fix.js", "vue-demi-switch": "bin/vue-demi-switch.js" @@ -912,6 +1571,7 @@ "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.24.0.tgz", "integrity": "sha512-bf0QV/9jVejssFBmz2HQLxUadxk574t4iwjCKp5E7NBzwKkrDEhKPISIIjAU/p6K5qDx3qoeh4+26zWN1jmw3g==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/cache-browser-local-storage": "4.24.0", "@algolia/cache-common": "4.24.0", @@ -935,6 +1595,7 @@ "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.24.0.tgz", "integrity": "sha512-bc2ROsNL6w6rqpl5jj/UywlIYC21TwSSoFHKl01lYirGMW+9Eek6r02Tocg4gZ8HAw3iBvu6XQiM3BEbmEMoiA==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/requester-common": "4.24.0", "@algolia/transporter": "4.24.0" @@ -945,6 +1606,7 @@ "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.24.0.tgz", "integrity": "sha512-uRW6EpNapmLAD0mW47OXqTP8eiIx5F6qN9/x/7HHO6owL3N1IXqydGwW5nhDFBrV+ldouro2W1VX3XlcUXEFCA==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/client-common": "4.24.0", "@algolia/requester-common": "4.24.0", @@ -956,6 +1618,7 @@ "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.24.0.tgz", "integrity": "sha512-Z2NxZMb6+nVXSjF13YpjYTdvV3032YTBSGm2vnYvYPA6mMxzM3v5rsCiSspndn9rzIW4Qp1lPHBvuoKJV6jnAA==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/requester-common": "4.24.0" } @@ -965,6 +1628,7 @@ "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.24.0.tgz", "integrity": "sha512-JF18yTjNOVYvU/L3UosRcvbPMGT9B+/GQWNWnenIImglzNVGpyzChkXLnrSf6uxwVNO6ESGu6oN8MqcGQcjQJw==", "dev": true, + "license": "MIT", "dependencies": { "@algolia/requester-common": "4.24.0" } @@ -973,6 +1637,7 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -985,6 +1650,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "license": "MIT", "engines": { "node": ">=8" }, @@ -997,6 +1663,7 @@ "resolved": "https://registry.npmjs.org/birpc/-/birpc-0.2.17.tgz", "integrity": "sha512-+hkTxhot+dWsLpp3gia5AkVHIsKlZybNT5gIYiDlNzJrmYPcTM9k5/w2uaj3IPpd7LlEYpmCj4Jj1nC41VhDFg==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" } @@ -1005,6 +1672,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "license": "MIT", "dependencies": { "fill-range": "^7.1.1" }, @@ -1016,6 +1684,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -1040,6 +1709,7 @@ "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-3.0.5.tgz", "integrity": "sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==", "dev": true, + "license": "MIT", "dependencies": { "is-what": "^4.1.8" }, @@ -1053,12 +1723,14 @@ "node_modules/csstype": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "license": "MIT" }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -1072,6 +1744,7 @@ "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -1107,12 +1780,14 @@ "node_modules/estree-walker": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "license": "MIT" }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -1125,6 +1800,7 @@ "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", "dev": true, + "license": "MIT", "dependencies": { "tabbable": "^6.2.0" } @@ -1134,6 +1810,7 @@ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "hasInstallScript": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -1146,6 +1823,7 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -1157,17 +1835,20 @@ "version": "5.5.3", "resolved": "https://registry.npmjs.org/hookable/-/hookable-5.5.3.tgz", "integrity": "sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/immutable": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.7.tgz", - "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==" + "integrity": "sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==", + "license": "MIT" }, "node_modules/is-binary-path": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -1179,6 +1860,7 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1187,6 +1869,7 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" }, @@ -1198,6 +1881,7 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "license": "MIT", "engines": { "node": ">=0.12.0" } @@ -1207,6 +1891,7 @@ "resolved": "https://registry.npmjs.org/is-what/-/is-what-4.1.16.tgz", "integrity": "sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==", "dev": true, + "license": "MIT", "engines": { "node": ">=12.13" }, @@ -1218,6 +1903,7 @@ "version": "0.30.11", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } @@ -1226,19 +1912,22 @@ "version": "8.11.1", "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/minisearch": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-7.1.0.tgz", "integrity": "sha512-tv7c/uefWdEhcu6hvrfTihflgeEi2tN6VV7HJnCjK6VxM75QQJh4t9FwJCsA2EsRS8LCnu3W87CuGPWMocOLCA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mitt": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/nanoid": { "version": "3.3.7", @@ -1250,6 +1939,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -1261,6 +1951,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -1269,17 +1960,20 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/perfect-debounce/-/perfect-debounce-1.0.0.tgz", "integrity": "sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/picocolors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "license": "ISC" }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "license": "MIT", "engines": { "node": ">=8.6" }, @@ -1305,6 +1999,7 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.1", @@ -1319,6 +2014,7 @@ "resolved": "https://registry.npmjs.org/preact/-/preact-10.23.2.tgz", "integrity": "sha512-kKYfePf9rzKnxOAKDpsWhg/ysrHPqT+yQ7UW4JjdnqjFIeNUnNcEJvhuA8fDenxAGWzUqtd51DfVg7xp/8T9NA==", "dev": true, + "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/preact" @@ -1328,6 +2024,7 @@ "version": "1.29.0", "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.29.0.tgz", "integrity": "sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==", + "license": "MIT", "engines": { "node": ">=6" } @@ -1336,6 +2033,7 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "license": "MIT", "dependencies": { "picomatch": "^2.2.1" }, @@ -1347,13 +2045,15 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/rollup": { "version": "4.21.0", "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.0.tgz", "integrity": "sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==", "dev": true, + "license": "MIT", "dependencies": { "@types/estree": "1.0.5" }, @@ -1388,6 +2088,7 @@ "version": "1.77.8", "resolved": "https://registry.npmjs.org/sass/-/sass-1.77.8.tgz", "integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==", + "license": "MIT", "dependencies": { "chokidar": ">=3.0.0 <4.0.0", "immutable": "^4.0.0", @@ -1405,6 +2106,7 @@ "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.16.3.tgz", "integrity": "sha512-hSHy/s4Zk2xibhj9XTCACB+1PqS+CaJxepGNBhKc/OsHRpqvHAUAm5+uZ6kJJbGXn0pb3XqekHjg6JAqPExzqg==", "dev": true, + "license": "MIT", "peer": true }, "node_modules/shiki": { @@ -1412,6 +2114,7 @@ "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.14.1.tgz", "integrity": "sha512-FujAN40NEejeXdzPt+3sZ3F2dx1U24BY2XTY01+MG8mbxCiA2XukXdcbyMyLAHJ/1AUUnQd1tZlvIjefWWEJeA==", "dev": true, + "license": "MIT", "dependencies": { "@shikijs/core": "1.14.1", "@types/hast": "^3.0.4" @@ -1421,6 +2124,7 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -1430,6 +2134,7 @@ "resolved": "https://registry.npmjs.org/speakingurl/-/speakingurl-14.0.1.tgz", "integrity": "sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -1439,6 +2144,7 @@ "resolved": "https://registry.npmjs.org/superjson/-/superjson-2.2.1.tgz", "integrity": "sha512-8iGv75BYOa0xRJHK5vRLEjE2H/i4lulTjzpUXic3Eg8akftYjkmQDa8JARQ42rlczXyFR3IeRoeFCc7RxHsYZA==", "dev": true, + "license": "MIT", "dependencies": { "copy-anything": "^3.0.2" }, @@ -1450,12 +2156,14 @@ "version": "6.2.0", "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tippy.js": { "version": "6.3.7", "resolved": "https://registry.npmjs.org/tippy.js/-/tippy.js-6.3.7.tgz", "integrity": "sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==", + "license": "MIT", "dependencies": { "@popperjs/core": "^2.9.0" } @@ -1464,6 +2172,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "license": "MIT", "engines": { "node": ">=4" } @@ -1472,6 +2181,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "license": "MIT", "dependencies": { "is-number": "^7.0.0" }, @@ -1484,6 +2194,7 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.1.tgz", "integrity": "sha512-1oE6yuNXssjrZdblI9AfBbHCC41nnyoVoEZxQnID6yvQZAFBzxxkqoFLtHUMkYunL8hwOLEjgTuxpkRxvba3kA==", "dev": true, + "license": "MIT", "dependencies": { "esbuild": "^0.21.3", "postcss": "^8.4.41", @@ -1543,6 +2254,7 @@ "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.3.3.tgz", "integrity": "sha512-6UzEw/wZ41S/CATby7ea7UlffvRER/uekxgN6hbEvSys9ukmLOKsz87Ehq9yOx1Rwiw+Sj97yjpivP8w1sUmng==", "dev": true, + "license": "MIT", "dependencies": { "@docsearch/css": "^3.6.1", "@docsearch/js": "^3.6.1", @@ -1581,6 +2293,7 @@ "version": "3.4.38", "resolved": "https://registry.npmjs.org/vue/-/vue-3.4.38.tgz", "integrity": "sha512-f0ZgN+mZ5KFgVv9wz0f4OgVKukoXtS3nwET4c2vLBGQR50aI8G0cqbFtLlX9Yiyg3LFGBitruPHt2PxwTduJEw==", + "license": "MIT", "dependencies": { "@vue/compiler-dom": "3.4.38", "@vue/compiler-sfc": "3.4.38", @@ -1601,6 +2314,7 @@ "version": "6.4.4", "resolved": "https://registry.npmjs.org/vue-tippy/-/vue-tippy-6.4.4.tgz", "integrity": "sha512-0C5TSU482FvjhEeKrPkz08tzyC/KJC0CiEbm3yW9oS+n3fa03ajEzU2QcxI9oR6Hwlg8NOP0U6T4EsGuccq6YQ==", + "license": "MIT", "dependencies": { "tippy.js": "^6.3.7" },