t.includes("(")?e:e.slice(1,-1)),n.startsWith("(")?n.slice(1,-1):n}function Nr(n){if(!n.includes("#1")||n.length<2)return n.filter((i,d)=>i.startsWith("(")||d===n.length-1).map(i=>Oe(i));const e={};let t,o;for(const[i,d]of n.entries())d.startsWith("#")&&(t=n[i-2]||"",o=!t.startsWith("#")&&[...t].some(l=>Ze(l)||Ve(l)),e[d]={result:n[i-1],expr:o?t:""});const s=[];function r(i,d){let l=i;i&&(l=i.replaceAll(/#\d/g,h=>{var $;return(($=e[h])==null?void 0:$.result)||""}),i=i.replaceAll(/#\d/g,h=>{var $,_;return(($=e[h])==null?void 0:$.expr)||((_=e[h])==null?void 0:_.result)||""}),l!==i&&d.unshift(l),i.includes("#")||d.unshift(i)),i.includes("#")&&r(i,d)}return r(n.at(-2)||"",s),s.push(n.at(-1)),s.map(i=>Oe(i))}function Fe(n,e,t){const o=Lr(n),s=Sr(o);return ae(s,e,t,!0)}function Mr(n){const e={variables:{}},t=n.trim().replace(/(\d)([a-z]|\()/gi,(r,i,d)=>i+"*"+d).split(`
+`).filter(r=>{if(r=r.trim(),!r||r.startsWith("#"))return!1;const i=r.replaceAll(" ","").split(",");let d=!1,l;for(const h of i)if(l=h.match(/^([A-Za-z](\d+)?)=(.+)$/),l){if(Ee[l[1]]||Be[l[1]])throw new Error(`Identifier '${l[1]}' is a builtin constant or function`);e.variables[l[1]]=Fe(l[3],e,[]),d=!0}return!d});let o=Pe,s=[];for(const r of t)o=Fe(r,e,s);return s=Nr(s),{value:o,scope:e,solution:s}}const Ir={class:"box"},wr=["disabled"],Tr={class:"copy"},Cr=["textContent"],Ar={key:0},Br={__name:"PlayGround",setup(n){const e=N(""),t=N(""),o=N(""),s=N(""),r=N(!1);function i(){try{o.value=Mr(t.value)}catch($){o.value=""+$}}function d(){s.value=window.location.origin+window.location.pathname+"?s="+encodeURIComponent(t.value)}function l(){s.value="",o.value=""}function h(){try{navigator.clipboard.writeText(s.value),r.value=!0,setTimeout(()=>{r.value=!1},750)}catch($){console.error($)}}return K(()=>{const $=new URLSearchParams(window.location.search);$.has("s")?t.value=decodeURIComponent($.get("s")):t.value=`# Hello World!
+# This is a comment
+x = 1
+y = 2
+
+# return sum of x and y
+x + y
+
+# now hit run to view the solution`}),($,_)=>(a(),c("div",Ir,[p("div",null,[ee(p("textarea",{ref_key:"input",ref:e,"onUpdate:modelValue":_[0]||(_[0]=V=>t.value=V),onInput:l,spellcheck:"false",autocomplete:"off"},null,544),[[ft,t.value,void 0,{trim:!0}]])]),p("div",null,[p("button",{onClick:i},"Run"),p("button",{onClick:d,disabled:!t.value},"Share",8,wr)]),ee(p("div",null,[p("div",Tr,[_[1]||(_[1]=p("span",null,"Link",-1)),p("span",{textContent:S(s.value)},null,8,Cr),p("span",{onClick:h},S(r.value?"Copied":"Copy"),1)])],512),[[he,t.value.length&&s.value.length]]),ee(p("div",null,[o.value.solution?(a(),c("div",Ar,[_[2]||(_[2]=p("b",null,"Solution:",-1)),(a(!0),c(T,null,E(o.value.solution,V=>(a(),c("div",{key:V},"= "+S(V),1))),128))])):m("",!0)],512),[[he,typeof o.value!="string"]]),ee(p("div",null,[_[3]||(_[3]=p("b",null,"Output:",-1)),p("p",null,S(JSON.stringify(o.value,null,2)),1)],512),[[he,typeof o.value!="string"]])]))}},Er=g(Br,[["__scopeId","data-v-1bec6d39"]]),Gr={extends:yr,enhanceApp(n){n.app.component("PlayGround",Er)}};export{Gr as R,Fr as V,Ur as a,Dr as b,Or as c,wo as d,L as u};
diff --git a/assets/guide_basics.md.BCcVR8cV.js b/assets/guide_basics.md.BCcVR8cV.js
new file mode 100644
index 0000000..ab2c6e2
--- /dev/null
+++ b/assets/guide_basics.md.BCcVR8cV.js
@@ -0,0 +1,3 @@
+import{_ as s,c as e,a5 as n,o as t}from"./chunks/framework.CmzXIptl.js";const d=JSON.parse('{"title":"Syntax","description":"","frontmatter":{},"headers":[],"relativePath":"guide/basics.md","filePath":"guide/basics.md"}'),i={name:"guide/basics.md"};function o(r,a,l,c,p,h){return t(),e("div",null,a[0]||(a[0]=[n(`Syntax This section shows you the MathFlow syntax to enable you write scripts.
In MathFlow, comments are statements on a new line starting with a hash symbol , #
. These are ignored during evaluation.
sh # this is comment 1
+# this is comment 2
+# this is comment 3
1 2 3
Spaces Indents, spaces, tabs or empty lines are ignored in MathFlow. This implies that they carry no special meaning.
`,7)]))}const u=s(i,[["render",o]]);export{d as __pageData,u as default};
diff --git a/assets/guide_basics.md.BCcVR8cV.lean.js b/assets/guide_basics.md.BCcVR8cV.lean.js
new file mode 100644
index 0000000..ab2c6e2
--- /dev/null
+++ b/assets/guide_basics.md.BCcVR8cV.lean.js
@@ -0,0 +1,3 @@
+import{_ as s,c as e,a5 as n,o as t}from"./chunks/framework.CmzXIptl.js";const d=JSON.parse('{"title":"Syntax","description":"","frontmatter":{},"headers":[],"relativePath":"guide/basics.md","filePath":"guide/basics.md"}'),i={name:"guide/basics.md"};function o(r,a,l,c,p,h){return t(),e("div",null,a[0]||(a[0]=[n(`Syntax This section shows you the MathFlow syntax to enable you write scripts.
In MathFlow, comments are statements on a new line starting with a hash symbol , #
. These are ignored during evaluation.
sh # this is comment 1
+# this is comment 2
+# this is comment 3
1 2 3
Spaces Indents, spaces, tabs or empty lines are ignored in MathFlow. This implies that they carry no special meaning.
`,7)]))}const u=s(i,[["render",o]]);export{d as __pageData,u as default};
diff --git a/assets/guide_builtin.md.BNm9T_ih.js b/assets/guide_builtin.md.BNm9T_ih.js
new file mode 100644
index 0000000..288c82f
--- /dev/null
+++ b/assets/guide_builtin.md.BNm9T_ih.js
@@ -0,0 +1,4 @@
+import{_ as i,c as e,a5 as a,o as n}from"./chunks/framework.CmzXIptl.js";const k=JSON.parse('{"title":"Built-ins","description":"","frontmatter":{},"headers":[],"relativePath":"guide/builtin.md","filePath":"guide/builtin.md"}'),t={name:"guide/builtin.md"};function l(r,s,o,h,d,p){return n(),e("div",null,s[0]||(s[0]=[a(`Built-ins Constants Mathflow comes with pre-defined universal constants to ease your workflow.
pi
- This is the ratio of the circumference of a circle to its diametere
- The mathematical constant e . This is Euler's number, the base of natural logarithms.Functions Just like Mathematics, MathFlow has commonly used functions built in. A full list of those functions can be found in this file .
exp
- returns e (the base of natural logarithms) raised to a powerlog
- returns the base 10 logarithm of a numberln
- returns the natural logarithm of a numberdeg
- convert radians into degreesrad
- convert degrees into radianssin
- returns the sine of a number in degreescos
- returns the cosine of a number in degreestan
- returns the tangent of a number in degreesasin
- equivalent to arcsine of a numberacos
- equivalent to arcosine of a numberatan
- equivalent to arctangent of a numbersqrt
- returns the square root of a numberExamples:
These functions can take up a single number or expression.
js log ( 100 ) // 2
+sin ( 15 + 15 ) // 0.5
+cos ( acos ( 0.5 )) // 0.5
+sqrt ( 4 ) // 2
1 2 3 4
`,10)]))}const u=i(t,[["render",l]]);export{k as __pageData,u as default};
diff --git a/assets/guide_builtin.md.BNm9T_ih.lean.js b/assets/guide_builtin.md.BNm9T_ih.lean.js
new file mode 100644
index 0000000..288c82f
--- /dev/null
+++ b/assets/guide_builtin.md.BNm9T_ih.lean.js
@@ -0,0 +1,4 @@
+import{_ as i,c as e,a5 as a,o as n}from"./chunks/framework.CmzXIptl.js";const k=JSON.parse('{"title":"Built-ins","description":"","frontmatter":{},"headers":[],"relativePath":"guide/builtin.md","filePath":"guide/builtin.md"}'),t={name:"guide/builtin.md"};function l(r,s,o,h,d,p){return n(),e("div",null,s[0]||(s[0]=[a(`Built-ins Constants Mathflow comes with pre-defined universal constants to ease your workflow.
pi
- This is the ratio of the circumference of a circle to its diametere
- The mathematical constant e . This is Euler's number, the base of natural logarithms.Functions Just like Mathematics, MathFlow has commonly used functions built in. A full list of those functions can be found in this file .
exp
- returns e (the base of natural logarithms) raised to a powerlog
- returns the base 10 logarithm of a numberln
- returns the natural logarithm of a numberdeg
- convert radians into degreesrad
- convert degrees into radianssin
- returns the sine of a number in degreescos
- returns the cosine of a number in degreestan
- returns the tangent of a number in degreesasin
- equivalent to arcsine of a numberacos
- equivalent to arcosine of a numberatan
- equivalent to arctangent of a numbersqrt
- returns the square root of a numberExamples:
These functions can take up a single number or expression.
js log ( 100 ) // 2
+sin ( 15 + 15 ) // 0.5
+cos ( acos ( 0.5 )) // 0.5
+sqrt ( 4 ) // 2
1 2 3 4
`,10)]))}const u=i(t,[["render",l]]);export{k as __pageData,u as default};
diff --git a/assets/guide_config.md.DBTLwcG7.js b/assets/guide_config.md.DBTLwcG7.js
new file mode 100644
index 0000000..c057f0d
--- /dev/null
+++ b/assets/guide_config.md.DBTLwcG7.js
@@ -0,0 +1,9 @@
+import{_ as a,c as i,a5 as n,o as e}from"./chunks/framework.CmzXIptl.js";const k=JSON.parse('{"title":"Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"guide/config.md","filePath":"guide/config.md"}'),t={name:"guide/config.md"};function l(p,s,r,o,h,c){return e(),i("div",null,s[0]||(s[0]=[n(`Configuration fractionDigits You can change the number of digits after the floating point to any number between 0
and 20
using config.fractionDigits .
Example : Set 3
decimal places.
ts import { config, evaluate } from 'mathflow' ;
+
+config.fractionDigits = 3 ;
+
+console. log (
+ evaluate ( \`1/6\` )
+);
+
+// Output: { value: 0.1667, scope: { variables: {} }, solution: [ '(1 / 6)', '0.1667' ]}
1 2 3 4 5 6 7 8 9
`,5)]))}const g=a(t,[["render",l]]);export{k as __pageData,g as default};
diff --git a/assets/guide_config.md.DBTLwcG7.lean.js b/assets/guide_config.md.DBTLwcG7.lean.js
new file mode 100644
index 0000000..c057f0d
--- /dev/null
+++ b/assets/guide_config.md.DBTLwcG7.lean.js
@@ -0,0 +1,9 @@
+import{_ as a,c as i,a5 as n,o as e}from"./chunks/framework.CmzXIptl.js";const k=JSON.parse('{"title":"Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"guide/config.md","filePath":"guide/config.md"}'),t={name:"guide/config.md"};function l(p,s,r,o,h,c){return e(),i("div",null,s[0]||(s[0]=[n(`Configuration fractionDigits You can change the number of digits after the floating point to any number between 0
and 20
using config.fractionDigits .
Example : Set 3
decimal places.
ts import { config, evaluate } from 'mathflow' ;
+
+config.fractionDigits = 3 ;
+
+console. log (
+ evaluate ( \`1/6\` )
+);
+
+// Output: { value: 0.1667, scope: { variables: {} }, solution: [ '(1 / 6)', '0.1667' ]}
1 2 3 4 5 6 7 8 9
`,5)]))}const g=a(t,[["render",l]]);export{k as __pageData,g as default};
diff --git a/assets/guide_expressions.md.4H5Qv7A5.js b/assets/guide_expressions.md.4H5Qv7A5.js
new file mode 100644
index 0000000..94814a6
--- /dev/null
+++ b/assets/guide_expressions.md.4H5Qv7A5.js
@@ -0,0 +1,7 @@
+import{_ as i,c as a,a5 as e,o as n}from"./chunks/framework.CmzXIptl.js";const c=JSON.parse('{"title":"Expressions","description":"","frontmatter":{},"headers":[],"relativePath":"guide/expressions.md","filePath":"guide/expressions.md"}'),t={name:"guide/expressions.md"};function l(p,s,r,h,d,o){return n(),a("div",null,s[0]||(s[0]=[e(`Expressions Expressions are parts of a statement that may contain a composition of binary operators, brackets and numbers: floats and integers .
Operators MathFlow currently supports the following operators;
Unary Operators: +
, -
Binary Operators: +
, -
, /
, *
, ^
Computations follow the arithmetic precedence of each operator.
The above expression evaluates to 7
but not 9
.
Return Values The result of the last expression in the script is considered to be the return value .
The script below results into 5
as the resultant value.
Terms MathFlow enables you to write normal mathematical terms.
sh x = 3
+y = (2x - 1 ) / ( 3x + 1 )
1 2
However, the following is not allowed;
sh x = 3
+y = 2
+z = xy
1 2 3
To handle that kind of composition, add a binary operator between the variables. Otherwise, it is considered as an identifier or a reserved keyword.
sh x = 3
+y = 2
+z = x * y
1 2 3
`,19)]))}const F=i(t,[["render",l]]);export{c as __pageData,F as default};
diff --git a/assets/guide_expressions.md.4H5Qv7A5.lean.js b/assets/guide_expressions.md.4H5Qv7A5.lean.js
new file mode 100644
index 0000000..94814a6
--- /dev/null
+++ b/assets/guide_expressions.md.4H5Qv7A5.lean.js
@@ -0,0 +1,7 @@
+import{_ as i,c as a,a5 as e,o as n}from"./chunks/framework.CmzXIptl.js";const c=JSON.parse('{"title":"Expressions","description":"","frontmatter":{},"headers":[],"relativePath":"guide/expressions.md","filePath":"guide/expressions.md"}'),t={name:"guide/expressions.md"};function l(p,s,r,h,d,o){return n(),a("div",null,s[0]||(s[0]=[e(`Expressions Expressions are parts of a statement that may contain a composition of binary operators, brackets and numbers: floats and integers .
Operators MathFlow currently supports the following operators;
Unary Operators: +
, -
Binary Operators: +
, -
, /
, *
, ^
Computations follow the arithmetic precedence of each operator.
The above expression evaluates to 7
but not 9
.
Return Values The result of the last expression in the script is considered to be the return value .
The script below results into 5
as the resultant value.
Terms MathFlow enables you to write normal mathematical terms.
sh x = 3
+y = (2x - 1 ) / ( 3x + 1 )
1 2
However, the following is not allowed;
sh x = 3
+y = 2
+z = xy
1 2 3
To handle that kind of composition, add a binary operator between the variables. Otherwise, it is considered as an identifier or a reserved keyword.
sh x = 3
+y = 2
+z = x * y
1 2 3
`,19)]))}const F=i(t,[["render",l]]);export{c as __pageData,F as default};
diff --git a/assets/guide_getting-started.md.DoKtlU_3.js b/assets/guide_getting-started.md.DoKtlU_3.js
new file mode 100644
index 0000000..ce1d2ac
--- /dev/null
+++ b/assets/guide_getting-started.md.DoKtlU_3.js
@@ -0,0 +1,13 @@
+import{_ as a,c as i,a5 as n,o as e}from"./chunks/framework.CmzXIptl.js";const c=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started.md","filePath":"guide/getting-started.md"}'),t={name:"guide/getting-started.md"};function l(p,s,r,h,k,d){return e(),i("div",null,s[0]||(s[0]=[n(`Getting Started Preresquities Before getting started, make sure that you have the following installed on your machine;
Installation You can install MathFlow via npm:
sh npm install mathflow
+# pnpm add mathflow
Usage js import { evaluate } from 'mathflow' ;
+
+// Example script
+const script = \`
+# Hello MathFlow!
+1 * 3 - 2 + 2sin(30)
+\` ;
+
+const result = evaluate (script);
+
+console. log (result);
+// Output: { value: 2, scope: { variables: {} }, solution: ... }
1 2 3 4 5 6 7 8 9 10 11 12
To learn the MathFlow syntax, head over to the syntax section for details.
For more examples, check the examples section.
`,11)]))}const g=a(t,[["render",l]]);export{c as __pageData,g as default};
diff --git a/assets/guide_getting-started.md.DoKtlU_3.lean.js b/assets/guide_getting-started.md.DoKtlU_3.lean.js
new file mode 100644
index 0000000..ce1d2ac
--- /dev/null
+++ b/assets/guide_getting-started.md.DoKtlU_3.lean.js
@@ -0,0 +1,13 @@
+import{_ as a,c as i,a5 as n,o as e}from"./chunks/framework.CmzXIptl.js";const c=JSON.parse('{"title":"Getting Started","description":"","frontmatter":{},"headers":[],"relativePath":"guide/getting-started.md","filePath":"guide/getting-started.md"}'),t={name:"guide/getting-started.md"};function l(p,s,r,h,k,d){return e(),i("div",null,s[0]||(s[0]=[n(`Getting Started Preresquities Before getting started, make sure that you have the following installed on your machine;
Installation You can install MathFlow via npm:
sh npm install mathflow
+# pnpm add mathflow
Usage js import { evaluate } from 'mathflow' ;
+
+// Example script
+const script = \`
+# Hello MathFlow!
+1 * 3 - 2 + 2sin(30)
+\` ;
+
+const result = evaluate (script);
+
+console. log (result);
+// Output: { value: 2, scope: { variables: {} }, solution: ... }
1 2 3 4 5 6 7 8 9 10 11 12
To learn the MathFlow syntax, head over to the syntax section for details.
For more examples, check the examples section.
`,11)]))}const g=a(t,[["render",l]]);export{c as __pageData,g as default};
diff --git a/assets/guide_index.md.C1zV6pKq.js b/assets/guide_index.md.C1zV6pKq.js
new file mode 100644
index 0000000..83d003e
--- /dev/null
+++ b/assets/guide_index.md.C1zV6pKq.js
@@ -0,0 +1 @@
+import{_ as t,c as i,a5 as a,o}from"./chunks/framework.CmzXIptl.js";const p=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"guide/index.md","filePath":"guide/index.md"}'),n={name:"guide/index.md"};function s(r,e,l,h,d,c){return o(),i("div",null,e[0]||(e[0]=[a('Introduction 👋 Hello World!
You're reading the official documentation for MathFlow .
What is MathFlow? MathFlow is a lightweight and expressive scripting language designed for mathematical expressions and calculations. It provides a simple and intuitive syntax for performing mathematical operations, including support for standard arithmetic, functions like sin, cos, tan, and other functions.
What MathFlow is not? WARNING
MathFlow is not a fully-fledged scripting language. This means that it can not be used to build applications by itself. Main Objectives The main goals of this project include expressiveness, focus, and simplicity . This implies that the development of this project tends in the direction of providing a better and mathematics-centric usecase.
How it Works This section describes how MathFlow is able to work.
This library API exposes the evaluate
function that takes the MathFlow code and returns a result. Below are the stages the source code undergoes to produce the result;
A global scope that holds all variables is created The source code is then split into individual statements. This process involves; Trimming whitespaces Expanding composite terms like 2x
into 2*x
Varible declarations are extracted, their assigned value or expression executed and stored in the global scope variables dictionary Empty lines or statements are ignored Every statement in the generated list of statements is executed independently. This stage involves the followings; The statement is tokenized to generate a list of identified tokens The tokens are then parsed into an Abstract Syntax Tree (AST) basing on the order of operations and precedence of the operators used. The tree is then interpreted by running through the every node identifying the node type and applying the corresponding operation or computation. The output of the interpreter is a numerical value. The resultant value of the last statement is returned with the final state of the global scope. ',13)]))}const m=t(n,[["render",s]]);export{p as __pageData,m as default};
diff --git a/assets/guide_index.md.C1zV6pKq.lean.js b/assets/guide_index.md.C1zV6pKq.lean.js
new file mode 100644
index 0000000..83d003e
--- /dev/null
+++ b/assets/guide_index.md.C1zV6pKq.lean.js
@@ -0,0 +1 @@
+import{_ as t,c as i,a5 as a,o}from"./chunks/framework.CmzXIptl.js";const p=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"guide/index.md","filePath":"guide/index.md"}'),n={name:"guide/index.md"};function s(r,e,l,h,d,c){return o(),i("div",null,e[0]||(e[0]=[a('Introduction 👋 Hello World!
You're reading the official documentation for MathFlow .
What is MathFlow? MathFlow is a lightweight and expressive scripting language designed for mathematical expressions and calculations. It provides a simple and intuitive syntax for performing mathematical operations, including support for standard arithmetic, functions like sin, cos, tan, and other functions.
What MathFlow is not? WARNING
MathFlow is not a fully-fledged scripting language. This means that it can not be used to build applications by itself. Main Objectives The main goals of this project include expressiveness, focus, and simplicity . This implies that the development of this project tends in the direction of providing a better and mathematics-centric usecase.
How it Works This section describes how MathFlow is able to work.
This library API exposes the evaluate
function that takes the MathFlow code and returns a result. Below are the stages the source code undergoes to produce the result;
A global scope that holds all variables is created The source code is then split into individual statements. This process involves; Trimming whitespaces Expanding composite terms like 2x
into 2*x
Varible declarations are extracted, their assigned value or expression executed and stored in the global scope variables dictionary Empty lines or statements are ignored Every statement in the generated list of statements is executed independently. This stage involves the followings; The statement is tokenized to generate a list of identified tokens The tokens are then parsed into an Abstract Syntax Tree (AST) basing on the order of operations and precedence of the operators used. The tree is then interpreted by running through the every node identifying the node type and applying the corresponding operation or computation. The output of the interpreter is a numerical value. The resultant value of the last statement is returned with the final state of the global scope. ',13)]))}const m=t(n,[["render",s]]);export{p as __pageData,m as default};
diff --git a/assets/guide_programs.md.DRZoiyqi.js b/assets/guide_programs.md.DRZoiyqi.js
new file mode 100644
index 0000000..2c35adb
--- /dev/null
+++ b/assets/guide_programs.md.DRZoiyqi.js
@@ -0,0 +1,41 @@
+import{_ as a,c as n,a5 as i,o as l}from"./chunks/framework.CmzXIptl.js";const b=JSON.parse('{"title":"Programs","description":"","frontmatter":{},"headers":[],"relativePath":"guide/programs.md","filePath":"guide/programs.md"}'),p={name:"guide/programs.md"};function e(r,s,t,h,k,c){return l(),n("div",null,s[0]||(s[0]=[i(`Programs Here's a list of a few basic programs;
Area of a triangle js import { evaluate } from 'mathflow' ;
+
+const script = \`
+# base
+b = 1.4
+
+# height
+h = 4
+
+# compute the area
+A = 0.5 * b * h
+
+# output the area
+A
+\` ;
+
+const result = evaluate (script);
+
+console. log (result);
+// Output: { value: 2, scope: { variables: { b: 1.4, h: 4, A: 2.8 } }, solution: ... }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Gradient of a line js import { evaluate } from 'mathflow' ;
+
+const script = \`
+# Point A
+x1 = 1
+y1 = 1
+
+# Point B
+x2 = 3
+y2 = 5
+
+# Gradient
+m = (y2 - y1) / (x2 - x1)
+
+# Result
+m
+\` ;
+
+const result = evaluate (script);
+
+console. log (result);
+// Output: { value: 2.8, scope: { variables: { x1: 1, y1: 1, x2: 3, y2: 5, m: 2 } }, solution: ['2.8'] }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
`,4)]))}const F=a(p,[["render",e]]);export{b as __pageData,F as default};
diff --git a/assets/guide_programs.md.DRZoiyqi.lean.js b/assets/guide_programs.md.DRZoiyqi.lean.js
new file mode 100644
index 0000000..2c35adb
--- /dev/null
+++ b/assets/guide_programs.md.DRZoiyqi.lean.js
@@ -0,0 +1,41 @@
+import{_ as a,c as n,a5 as i,o as l}from"./chunks/framework.CmzXIptl.js";const b=JSON.parse('{"title":"Programs","description":"","frontmatter":{},"headers":[],"relativePath":"guide/programs.md","filePath":"guide/programs.md"}'),p={name:"guide/programs.md"};function e(r,s,t,h,k,c){return l(),n("div",null,s[0]||(s[0]=[i(`Programs Here's a list of a few basic programs;
Area of a triangle js import { evaluate } from 'mathflow' ;
+
+const script = \`
+# base
+b = 1.4
+
+# height
+h = 4
+
+# compute the area
+A = 0.5 * b * h
+
+# output the area
+A
+\` ;
+
+const result = evaluate (script);
+
+console. log (result);
+// Output: { value: 2, scope: { variables: { b: 1.4, h: 4, A: 2.8 } }, solution: ... }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Gradient of a line js import { evaluate } from 'mathflow' ;
+
+const script = \`
+# Point A
+x1 = 1
+y1 = 1
+
+# Point B
+x2 = 3
+y2 = 5
+
+# Gradient
+m = (y2 - y1) / (x2 - x1)
+
+# Result
+m
+\` ;
+
+const result = evaluate (script);
+
+console. log (result);
+// Output: { value: 2.8, scope: { variables: { x1: 1, y1: 1, x2: 3, y2: 5, m: 2 } }, solution: ['2.8'] }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
`,4)]))}const F=a(p,[["render",e]]);export{b as __pageData,F as default};
diff --git a/assets/guide_scripts.md.Bp8-QSOx.js b/assets/guide_scripts.md.Bp8-QSOx.js
new file mode 100644
index 0000000..53186f8
--- /dev/null
+++ b/assets/guide_scripts.md.Bp8-QSOx.js
@@ -0,0 +1,8 @@
+import{_ as a,c as i,a5 as n,o as e}from"./chunks/framework.CmzXIptl.js";const o=JSON.parse('{"title":"Scripts","description":"","frontmatter":{},"headers":[],"relativePath":"guide/scripts.md","filePath":"guide/scripts.md"}'),p={name:"guide/scripts.md"};function t(l,s,r,c,h,d){return e(),i("div",null,s[0]||(s[0]=[n(`Scripts Here's a list of a few basic example scripts;
Addition of two numbers sh # first number
+a = 1
+
+# second number
+b = 2
+
+# return the sum
+a + b
1 2 3 4 5 6 7 8
`,3)]))}const u=a(p,[["render",t]]);export{o as __pageData,u as default};
diff --git a/assets/guide_scripts.md.Bp8-QSOx.lean.js b/assets/guide_scripts.md.Bp8-QSOx.lean.js
new file mode 100644
index 0000000..53186f8
--- /dev/null
+++ b/assets/guide_scripts.md.Bp8-QSOx.lean.js
@@ -0,0 +1,8 @@
+import{_ as a,c as i,a5 as n,o as e}from"./chunks/framework.CmzXIptl.js";const o=JSON.parse('{"title":"Scripts","description":"","frontmatter":{},"headers":[],"relativePath":"guide/scripts.md","filePath":"guide/scripts.md"}'),p={name:"guide/scripts.md"};function t(l,s,r,c,h,d){return e(),i("div",null,s[0]||(s[0]=[n(`Scripts Here's a list of a few basic example scripts;
Addition of two numbers sh # first number
+a = 1
+
+# second number
+b = 2
+
+# return the sum
+a + b
1 2 3 4 5 6 7 8
`,3)]))}const u=a(p,[["render",t]]);export{o as __pageData,u as default};
diff --git a/assets/guide_variables.md.CZuev32-.js b/assets/guide_variables.md.CZuev32-.js
new file mode 100644
index 0000000..606d2fd
--- /dev/null
+++ b/assets/guide_variables.md.CZuev32-.js
@@ -0,0 +1,5 @@
+import{_ as i,c as a,a5 as e,o as n}from"./chunks/framework.CmzXIptl.js";const c=JSON.parse('{"title":"Variables","description":"","frontmatter":{},"headers":[],"relativePath":"guide/variables.md","filePath":"guide/variables.md"}'),l={name:"guide/variables.md"};function t(p,s,r,h,d,k){return n(),a("div",null,s[0]||(s[0]=[e(`Variables A variable is a global area that stores a value.
Rules for namig variables
Must start with a letter, uppercase or lowercase e.g. x
, A
Case sensitive: x
is different from X
Can contain numbers after a letter like x1
, x12
, x123
How to declare a variable?
Declare variables the same way you would do on paper.
Variables can be declared with expressions. Each declaraion or statement must exist on a newline.
On declaration, variables can reference others in an expression.
sh x = 1
+y = x + 1
+z = x / (2 * y )
1 2 3
Multicharacter variable identifiers start with a letter followed by a number.
sh x1 = 1
+x2 = 2
+x3 = x1 + x2
1 2 3
`,13)]))}const F=i(l,[["render",t]]);export{c as __pageData,F as default};
diff --git a/assets/guide_variables.md.CZuev32-.lean.js b/assets/guide_variables.md.CZuev32-.lean.js
new file mode 100644
index 0000000..606d2fd
--- /dev/null
+++ b/assets/guide_variables.md.CZuev32-.lean.js
@@ -0,0 +1,5 @@
+import{_ as i,c as a,a5 as e,o as n}from"./chunks/framework.CmzXIptl.js";const c=JSON.parse('{"title":"Variables","description":"","frontmatter":{},"headers":[],"relativePath":"guide/variables.md","filePath":"guide/variables.md"}'),l={name:"guide/variables.md"};function t(p,s,r,h,d,k){return n(),a("div",null,s[0]||(s[0]=[e(`Variables A variable is a global area that stores a value.
Rules for namig variables
Must start with a letter, uppercase or lowercase e.g. x
, A
Case sensitive: x
is different from X
Can contain numbers after a letter like x1
, x12
, x123
How to declare a variable?
Declare variables the same way you would do on paper.
Variables can be declared with expressions. Each declaraion or statement must exist on a newline.
On declaration, variables can reference others in an expression.
sh x = 1
+y = x + 1
+z = x / (2 * y )
1 2 3
Multicharacter variable identifiers start with a letter followed by a number.
sh x1 = 1
+x2 = 2
+x3 = x1 + x2
1 2 3
`,13)]))}const F=i(l,[["render",t]]);export{c as __pageData,F as default};
diff --git a/assets/index.md.D_fcWQWK.js b/assets/index.md.D_fcWQWK.js
new file mode 100644
index 0000000..56f8793
--- /dev/null
+++ b/assets/index.md.D_fcWQWK.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o as a}from"./chunks/framework.CmzXIptl.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"MathFlow","text":"Simplifying Math, Empowering Code.","tagline":"Ready to elevate your mathematical scripting experience?","image":{"src":"/logo.svg","alt":"MathFlow Logo"},"actions":[{"theme":"brand","text":"Get Started","link":"/guide/index"},{"theme":"alt","text":"Playground","link":"/playground/"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/henryhale/mathflow"}]},"features":[{"title":"Mathematical Expressions","icon":"📝","details":"Perform standard arithmetic operations with ease."},{"title":"Functions","icon":"🛠️","details":"Built-in support for mathematical functions such as sin, cos, tan, abs and more."},{"title":"Clean and Modern Syntax","icon":"✅","details":"Readable and easy-to-write syntax for mathematical expressions."},{"title":"Abstract Syntax Tree (AST)","icon":"🌿","details":"Utilizes an AST for parsing and interpreting expressions."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),i={name:"index.md"};function n(o,s,r,l,c,d){return a(),t("div")}const h=e(i,[["render",n]]);export{p as __pageData,h as default};
diff --git a/assets/index.md.D_fcWQWK.lean.js b/assets/index.md.D_fcWQWK.lean.js
new file mode 100644
index 0000000..56f8793
--- /dev/null
+++ b/assets/index.md.D_fcWQWK.lean.js
@@ -0,0 +1 @@
+import{_ as e,c as t,o as a}from"./chunks/framework.CmzXIptl.js";const p=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"MathFlow","text":"Simplifying Math, Empowering Code.","tagline":"Ready to elevate your mathematical scripting experience?","image":{"src":"/logo.svg","alt":"MathFlow Logo"},"actions":[{"theme":"brand","text":"Get Started","link":"/guide/index"},{"theme":"alt","text":"Playground","link":"/playground/"},{"theme":"alt","text":"View on GitHub","link":"https://github.com/henryhale/mathflow"}]},"features":[{"title":"Mathematical Expressions","icon":"📝","details":"Perform standard arithmetic operations with ease."},{"title":"Functions","icon":"🛠️","details":"Built-in support for mathematical functions such as sin, cos, tan, abs and more."},{"title":"Clean and Modern Syntax","icon":"✅","details":"Readable and easy-to-write syntax for mathematical expressions."},{"title":"Abstract Syntax Tree (AST)","icon":"🌿","details":"Utilizes an AST for parsing and interpreting expressions."}]},"headers":[],"relativePath":"index.md","filePath":"index.md"}'),i={name:"index.md"};function n(o,s,r,l,c,d){return a(),t("div")}const h=e(i,[["render",n]]);export{p as __pageData,h as default};
diff --git a/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2
new file mode 100644
index 0000000..b6b603d
Binary files /dev/null and b/assets/inter-italic-cyrillic-ext.r48I6akx.woff2 differ
diff --git a/assets/inter-italic-cyrillic.By2_1cv3.woff2 b/assets/inter-italic-cyrillic.By2_1cv3.woff2
new file mode 100644
index 0000000..def40a4
Binary files /dev/null and b/assets/inter-italic-cyrillic.By2_1cv3.woff2 differ
diff --git a/assets/inter-italic-greek-ext.1u6EdAuj.woff2 b/assets/inter-italic-greek-ext.1u6EdAuj.woff2
new file mode 100644
index 0000000..e070c3d
Binary files /dev/null and b/assets/inter-italic-greek-ext.1u6EdAuj.woff2 differ
diff --git a/assets/inter-italic-greek.DJ8dCoTZ.woff2 b/assets/inter-italic-greek.DJ8dCoTZ.woff2
new file mode 100644
index 0000000..a3c16ca
Binary files /dev/null and b/assets/inter-italic-greek.DJ8dCoTZ.woff2 differ
diff --git a/assets/inter-italic-latin-ext.CN1xVJS-.woff2 b/assets/inter-italic-latin-ext.CN1xVJS-.woff2
new file mode 100644
index 0000000..2210a89
Binary files /dev/null and b/assets/inter-italic-latin-ext.CN1xVJS-.woff2 differ
diff --git a/assets/inter-italic-latin.C2AdPX0b.woff2 b/assets/inter-italic-latin.C2AdPX0b.woff2
new file mode 100644
index 0000000..790d62d
Binary files /dev/null and b/assets/inter-italic-latin.C2AdPX0b.woff2 differ
diff --git a/assets/inter-italic-vietnamese.BSbpV94h.woff2 b/assets/inter-italic-vietnamese.BSbpV94h.woff2
new file mode 100644
index 0000000..1eec077
Binary files /dev/null and b/assets/inter-italic-vietnamese.BSbpV94h.woff2 differ
diff --git a/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 b/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2
new file mode 100644
index 0000000..2cfe615
Binary files /dev/null and b/assets/inter-roman-cyrillic-ext.BBPuwvHQ.woff2 differ
diff --git a/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 b/assets/inter-roman-cyrillic.C5lxZ8CY.woff2
new file mode 100644
index 0000000..e3886dd
Binary files /dev/null and b/assets/inter-roman-cyrillic.C5lxZ8CY.woff2 differ
diff --git a/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2
new file mode 100644
index 0000000..36d6748
Binary files /dev/null and b/assets/inter-roman-greek-ext.CqjqNYQ-.woff2 differ
diff --git a/assets/inter-roman-greek.BBVDIX6e.woff2 b/assets/inter-roman-greek.BBVDIX6e.woff2
new file mode 100644
index 0000000..2bed1e8
Binary files /dev/null and b/assets/inter-roman-greek.BBVDIX6e.woff2 differ
diff --git a/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2
new file mode 100644
index 0000000..9a8d1e2
Binary files /dev/null and b/assets/inter-roman-latin-ext.4ZJIpNVo.woff2 differ
diff --git a/assets/inter-roman-latin.Di8DUHzh.woff2 b/assets/inter-roman-latin.Di8DUHzh.woff2
new file mode 100644
index 0000000..07d3c53
Binary files /dev/null and b/assets/inter-roman-latin.Di8DUHzh.woff2 differ
diff --git a/assets/inter-roman-vietnamese.BjW4sHH5.woff2 b/assets/inter-roman-vietnamese.BjW4sHH5.woff2
new file mode 100644
index 0000000..57bdc22
Binary files /dev/null and b/assets/inter-roman-vietnamese.BjW4sHH5.woff2 differ
diff --git a/assets/playground_index.md.DTfCzTOX.js b/assets/playground_index.md.DTfCzTOX.js
new file mode 100644
index 0000000..f2f0e88
--- /dev/null
+++ b/assets/playground_index.md.DTfCzTOX.js
@@ -0,0 +1 @@
+import{_ as o,c as t,j as e,a,G as s,B as d,o as l}from"./chunks/framework.CmzXIptl.js";const f=JSON.parse('{"title":"Playground","description":"","frontmatter":{},"headers":[],"relativePath":"playground/index.md","filePath":"playground/index.md"}'),i={name:"playground/index.md"};function u(c,n,p,g,m,h){const r=d("PlayGround");return l(),t("div",null,[n[0]||(n[0]=e("h1",{id:"playground",tabindex:"-1"},[a("Playground "),e("a",{class:"header-anchor",href:"#playground","aria-label":'Permalink to "Playground"'},"")],-1)),s(r),n[1]||(n[1]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"ALERT"),e("p",null,[a("In case you get a wrong answer; Generate a link using the "),e("code",null,"Share"),a(" button and copy it. Open an issue on GitHub describing the error. Add the copied link to the issue description for a reproduction. => "),e("a",{href:"https://github.com/henryhale/xterminal/issues",target:"_blank",rel:"noreferrer"},"Open new issue"),a(".")])],-1))])}const x=o(i,[["render",u]]);export{f as __pageData,x as default};
diff --git a/assets/playground_index.md.DTfCzTOX.lean.js b/assets/playground_index.md.DTfCzTOX.lean.js
new file mode 100644
index 0000000..f2f0e88
--- /dev/null
+++ b/assets/playground_index.md.DTfCzTOX.lean.js
@@ -0,0 +1 @@
+import{_ as o,c as t,j as e,a,G as s,B as d,o as l}from"./chunks/framework.CmzXIptl.js";const f=JSON.parse('{"title":"Playground","description":"","frontmatter":{},"headers":[],"relativePath":"playground/index.md","filePath":"playground/index.md"}'),i={name:"playground/index.md"};function u(c,n,p,g,m,h){const r=d("PlayGround");return l(),t("div",null,[n[0]||(n[0]=e("h1",{id:"playground",tabindex:"-1"},[a("Playground "),e("a",{class:"header-anchor",href:"#playground","aria-label":'Permalink to "Playground"'},"")],-1)),s(r),n[1]||(n[1]=e("div",{class:"warning custom-block"},[e("p",{class:"custom-block-title"},"ALERT"),e("p",null,[a("In case you get a wrong answer; Generate a link using the "),e("code",null,"Share"),a(" button and copy it. Open an issue on GitHub describing the error. Add the copied link to the issue description for a reproduction. => "),e("a",{href:"https://github.com/henryhale/xterminal/issues",target:"_blank",rel:"noreferrer"},"Open new issue"),a(".")])],-1))])}const x=o(i,[["render",u]]);export{f as __pageData,x as default};
diff --git a/assets/style.X1m6DH2t.css b/assets/style.X1m6DH2t.css
new file mode 100644
index 0000000..54f69b0
--- /dev/null
+++ b/assets/style.X1m6DH2t.css
@@ -0,0 +1 @@
+@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-c94b16eb]{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-c94b16eb],.VPBackdrop.fade-leave-to[data-v-c94b16eb]{opacity:0}.VPBackdrop.fade-leave-active[data-v-c94b16eb]{transition-duration:.25s}@media (min-width: 1280px){.VPBackdrop[data-v-c94b16eb]{display:none}}.NotFound[data-v-6b1025ba]{padding:64px 24px 96px;text-align:center}@media (min-width: 768px){.NotFound[data-v-6b1025ba]{padding:96px 32px 168px}}.code[data-v-6b1025ba]{line-height:64px;font-size:64px;font-weight:600}.title[data-v-6b1025ba]{padding-top:12px;letter-spacing:2px;line-height:20px;font-size:20px;font-weight:700}.divider[data-v-6b1025ba]{margin:24px auto 18px;width:64px;height:1px;background-color:var(--vp-c-divider)}.quote[data-v-6b1025ba]{margin:0 auto;max-width:256px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.action[data-v-6b1025ba]{padding-top:20px}.link[data-v-6b1025ba]{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-6b1025ba]:hover{border-color:var(--vp-c-brand-2);color:var(--vp-c-brand-2)}.root[data-v-4d3acf8c]{position:relative;z-index:1}.nested[data-v-4d3acf8c]{padding-right:16px;padding-left:16px}.outline-link[data-v-4d3acf8c]{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-4d3acf8c]:hover,.outline-link.active[data-v-4d3acf8c]{color:var(--vp-c-text-1);transition:color .25s}.outline-link.nested[data-v-4d3acf8c]{padding-left:13px}.VPDocAsideOutline[data-v-91d0fa28]{display:none}.VPDocAsideOutline.has-outline[data-v-91d0fa28]{display:block}.content[data-v-91d0fa28]{position:relative;border-left:1px solid var(--vp-c-divider);padding-left:16px;font-size:13px;font-weight:500}.outline-marker[data-v-91d0fa28]{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-91d0fa28]{line-height:32px;font-size:14px;font-weight:600}.VPDocAside[data-v-a65e726b]{display:flex;flex-direction:column;flex-grow:1}.spacer[data-v-a65e726b]{flex-grow:1}.VPDocAside[data-v-a65e726b] .spacer+.VPDocAsideSponsors,.VPDocAside[data-v-a65e726b] .spacer+.VPDocAsideCarbonAds{margin-top:24px}.VPDocAside[data-v-a65e726b] .VPDocAsideSponsors+.VPDocAsideCarbonAds{margin-top:16px}.VPLastUpdated[data-v-8cdb700f]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}@media (min-width: 640px){.VPLastUpdated[data-v-8cdb700f]{line-height:32px;font-size:14px;font-weight:500}}.VPDocFooter[data-v-c67e171b]{margin-top:64px}.edit-info[data-v-c67e171b]{padding-bottom:18px}@media (min-width: 640px){.edit-info[data-v-c67e171b]{display:flex;justify-content:space-between;align-items:center;padding-bottom:14px}}.edit-link-button[data-v-c67e171b]{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-c67e171b]:hover{color:var(--vp-c-brand-2)}.edit-link-icon[data-v-c67e171b]{margin-right:8px}.prev-next[data-v-c67e171b]{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-c67e171b]{grid-template-columns:repeat(2,1fr);grid-column-gap:16px}}.pager-link[data-v-c67e171b]{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-c67e171b]:hover{border-color:var(--vp-c-brand-1)}.pager-link.next[data-v-c67e171b]{margin-left:auto;text-align:right}.desc[data-v-c67e171b]{display:block;line-height:20px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.title[data-v-c67e171b]{display:block;line-height:20px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1);transition:color .25s}.VPDoc[data-v-0b5dbc50]{padding:32px 24px 96px;width:100%}@media (min-width: 768px){.VPDoc[data-v-0b5dbc50]{padding:48px 32px 128px}}@media (min-width: 960px){.VPDoc[data-v-0b5dbc50]{padding:48px 32px 0}.VPDoc:not(.has-sidebar) .container[data-v-0b5dbc50]{display:flex;justify-content:center;max-width:992px}.VPDoc:not(.has-sidebar) .content[data-v-0b5dbc50]{max-width:752px}}@media (min-width: 1280px){.VPDoc .container[data-v-0b5dbc50]{display:flex;justify-content:center}.VPDoc .aside[data-v-0b5dbc50]{display:block}}@media (min-width: 1440px){.VPDoc:not(.has-sidebar) .content[data-v-0b5dbc50]{max-width:784px}.VPDoc:not(.has-sidebar) .container[data-v-0b5dbc50]{max-width:1104px}}.container[data-v-0b5dbc50]{margin:0 auto;width:100%}.aside[data-v-0b5dbc50]{position:relative;display:none;order:2;flex-grow:1;padding-left:32px;width:100%;max-width:256px}.left-aside[data-v-0b5dbc50]{order:1;padding-left:unset;padding-right:32px}.aside-container[data-v-0b5dbc50]{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-0b5dbc50]::-webkit-scrollbar{display:none}.aside-curtain[data-v-0b5dbc50]{position:fixed;bottom:0;z-index:10;width:224px;height:32px;background:linear-gradient(transparent,var(--vp-c-bg) 70%)}.aside-content[data-v-0b5dbc50]{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-0b5dbc50]{position:relative;margin:0 auto;width:100%}@media (min-width: 960px){.content[data-v-0b5dbc50]{padding:0 32px 128px}}@media (min-width: 1280px){.content[data-v-0b5dbc50]{order:1;margin:0;min-width:640px}}.content-container[data-v-0b5dbc50]{margin:0 auto}.VPDoc.has-aside .content-container[data-v-0b5dbc50]{max-width:688px}.VPButton[data-v-269892f1]{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-269892f1]:active{transition:color .1s,border-color .1s,background-color .1s}.VPButton.medium[data-v-269892f1]{border-radius:20px;padding:0 20px;line-height:38px;font-size:14px}.VPButton.big[data-v-269892f1]{border-radius:24px;padding:0 24px;line-height:46px;font-size:16px}.VPButton.brand[data-v-269892f1]{border-color:var(--vp-button-brand-border);color:var(--vp-button-brand-text);background-color:var(--vp-button-brand-bg)}.VPButton.brand[data-v-269892f1]: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-269892f1]: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-269892f1]{border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg)}.VPButton.alt[data-v-269892f1]: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-269892f1]: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-269892f1]{border-color:var(--vp-button-sponsor-border);color:var(--vp-button-sponsor-text);background-color:var(--vp-button-sponsor-bg)}.VPButton.sponsor[data-v-269892f1]: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-269892f1]: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-51680aa4]{display:none}.dark .VPImage.light[data-v-51680aa4]{display:none}.VPHero[data-v-f38999ef]{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-f38999ef]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 48px 64px}}@media (min-width: 960px){.VPHero[data-v-f38999ef]{padding:calc(var(--vp-nav-height) + var(--vp-layout-top-height, 0px) + 80px) 64px 64px}}.container[data-v-f38999ef]{display:flex;flex-direction:column;margin:0 auto;max-width:1152px}@media (min-width: 960px){.container[data-v-f38999ef]{flex-direction:row}}.main[data-v-f38999ef]{position:relative;z-index:10;order:2;flex-grow:1;flex-shrink:0}.VPHero.has-image .container[data-v-f38999ef]{text-align:center}@media (min-width: 960px){.VPHero.has-image .container[data-v-f38999ef]{text-align:left}}@media (min-width: 960px){.main[data-v-f38999ef]{order:1;width:calc((100% / 3) * 2)}.VPHero.has-image .main[data-v-f38999ef]{max-width:592px}}.name[data-v-f38999ef],.text[data-v-f38999ef]{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-f38999ef],.VPHero.has-image .text[data-v-f38999ef]{margin:0 auto}.name[data-v-f38999ef]{color:var(--vp-home-hero-name-color)}.clip[data-v-f38999ef]{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-f38999ef],.text[data-v-f38999ef]{max-width:576px;line-height:56px;font-size:48px}}@media (min-width: 960px){.name[data-v-f38999ef],.text[data-v-f38999ef]{line-height:64px;font-size:56px}.VPHero.has-image .name[data-v-f38999ef],.VPHero.has-image .text[data-v-f38999ef]{margin:0}}.tagline[data-v-f38999ef]{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-f38999ef]{margin:0 auto}@media (min-width: 640px){.tagline[data-v-f38999ef]{padding-top:12px;max-width:576px;line-height:32px;font-size:20px}}@media (min-width: 960px){.tagline[data-v-f38999ef]{line-height:36px;font-size:24px}.VPHero.has-image .tagline[data-v-f38999ef]{margin:0}}.actions[data-v-f38999ef]{display:flex;flex-wrap:wrap;margin:-6px;padding-top:24px}.VPHero.has-image .actions[data-v-f38999ef]{justify-content:center}@media (min-width: 640px){.actions[data-v-f38999ef]{padding-top:32px}}@media (min-width: 960px){.VPHero.has-image .actions[data-v-f38999ef]{justify-content:flex-start}}.action[data-v-f38999ef]{flex-shrink:0;padding:6px}.image[data-v-f38999ef]{order:1;margin:-76px -24px -48px}@media (min-width: 640px){.image[data-v-f38999ef]{margin:-108px -24px -48px}}@media (min-width: 960px){.image[data-v-f38999ef]{flex-grow:1;order:2;margin:0;min-height:100%}}.image-container[data-v-f38999ef]{position:relative;margin:0 auto;width:320px;height:320px}@media (min-width: 640px){.image-container[data-v-f38999ef]{width:392px;height:392px}}@media (min-width: 960px){.image-container[data-v-f38999ef]{display:flex;justify-content:center;align-items:center;width:100%;height:100%;transform:translate(-32px,-32px)}}.image-bg[data-v-f38999ef]{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-f38999ef]{width:256px;height:256px}}@media (min-width: 960px){.image-bg[data-v-f38999ef]{width:320px;height:320px}}[data-v-f38999ef] .image-src{position:absolute;top:50%;left:50%;max-width:192px;max-height:192px;transform:translate(-50%,-50%)}@media (min-width: 640px){[data-v-f38999ef] .image-src{max-width:256px;max-height:256px}}@media (min-width: 960px){[data-v-f38999ef] .image-src{max-width:320px;max-height:320px}}.VPFeature[data-v-cac8b2b5]{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-cac8b2b5]:hover{border-color:var(--vp-c-brand-1)}.box[data-v-cac8b2b5]{display:flex;flex-direction:column;padding:24px;height:100%}.box[data-v-cac8b2b5]>.VPImage{margin-bottom:20px}.icon[data-v-cac8b2b5]{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-cac8b2b5]{line-height:24px;font-size:16px;font-weight:600}.details[data-v-cac8b2b5]{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-cac8b2b5]{padding-top:8px}.link-text-value[data-v-cac8b2b5]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.link-text-icon[data-v-cac8b2b5]{margin-left:6px}.VPFeatures[data-v-05153e5d]{position:relative;padding:0 24px}@media (min-width: 640px){.VPFeatures[data-v-05153e5d]{padding:0 48px}}@media (min-width: 960px){.VPFeatures[data-v-05153e5d]{padding:0 64px}}.container[data-v-05153e5d]{margin:0 auto;max-width:1152px}.items[data-v-05153e5d]{display:flex;flex-wrap:wrap;margin:-8px}.item[data-v-05153e5d]{padding:8px;width:100%}@media (min-width: 640px){.item.grid-2[data-v-05153e5d],.item.grid-4[data-v-05153e5d],.item.grid-6[data-v-05153e5d]{width:50%}}@media (min-width: 768px){.item.grid-2[data-v-05153e5d],.item.grid-4[data-v-05153e5d]{width:50%}.item.grid-3[data-v-05153e5d],.item.grid-6[data-v-05153e5d]{width:calc(100% / 3)}}@media (min-width: 960px){.item.grid-4[data-v-05153e5d]{width:25%}}.container[data-v-e7f69375]{margin:auto;width:100%;max-width:1280px;padding:0 24px}@media (min-width: 640px){.container[data-v-e7f69375]{padding:0 48px}}@media (min-width: 960px){.container[data-v-e7f69375]{width:100%;padding:0 64px}}.vp-doc[data-v-e7f69375] .VPHomeSponsors,.vp-doc[data-v-e7f69375] .VPTeamPage{margin-left:var(--vp-offset, calc(50% - 50vw) );margin-right:var(--vp-offset, calc(50% - 50vw) )}.vp-doc[data-v-e7f69375] .VPHomeSponsors h2{border-top:none;letter-spacing:normal}.vp-doc[data-v-e7f69375] .VPHomeSponsors a,.vp-doc[data-v-e7f69375] .VPTeamPage a{text-decoration:none}.VPHome[data-v-b848dd48]{margin-bottom:96px}@media (min-width: 768px){.VPHome[data-v-b848dd48]{margin-bottom:128px}}.VPContent[data-v-16e6edbd]{flex-grow:1;flex-shrink:0;margin:var(--vp-layout-top-height, 0px) auto 0;width:100%}.VPContent.is-home[data-v-16e6edbd]{width:100%;max-width:100%}.VPContent.has-sidebar[data-v-16e6edbd]{margin:0}@media (min-width: 960px){.VPContent[data-v-16e6edbd]{padding-top:var(--vp-nav-height)}.VPContent.has-sidebar[data-v-16e6edbd]{margin:var(--vp-layout-top-height, 0px) 0 0;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPContent.has-sidebar[data-v-16e6edbd]{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-67d5436b]{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-67d5436b]{display:none}.VPFooter[data-v-67d5436b] a{text-decoration-line:underline;text-underline-offset:2px;transition:color .25s}.VPFooter[data-v-67d5436b] a:hover{color:var(--vp-c-text-1)}@media (min-width: 768px){.VPFooter[data-v-67d5436b]{padding:32px}}.container[data-v-67d5436b]{margin:0 auto;max-width:var(--vp-layout-max-width);text-align:center}.message[data-v-67d5436b],.copyright[data-v-67d5436b]{line-height:24px;font-size:14px;font-weight:500;color:var(--vp-c-text-2)}.VPLocalNavOutlineDropdown[data-v-94196647]{padding:12px 20px 11px}@media (min-width: 960px){.VPLocalNavOutlineDropdown[data-v-94196647]{padding:12px 36px 11px}}.VPLocalNavOutlineDropdown button[data-v-94196647]{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-94196647]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPLocalNavOutlineDropdown button.open[data-v-94196647]{color:var(--vp-c-text-1)}.icon[data-v-94196647]{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-94196647]{font-size:14px}.icon[data-v-94196647]{font-size:16px}}.open>.icon[data-v-94196647]{transform:rotate(90deg)}.items[data-v-94196647]{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-94196647]{right:auto;left:calc(var(--vp-sidebar-width) + 32px);width:320px}}.header[data-v-94196647]{background-color:var(--vp-c-bg-soft)}.top-link[data-v-94196647]{display:block;padding:0 16px;line-height:48px;font-size:14px;font-weight:500;color:var(--vp-c-brand-1)}.outline[data-v-94196647]{padding:8px 0;background-color:var(--vp-c-bg-soft)}.flyout-enter-active[data-v-94196647]{transition:all .2s ease-out}.flyout-leave-active[data-v-94196647]{transition:all .15s ease-in}.flyout-enter-from[data-v-94196647],.flyout-leave-to[data-v-94196647]{opacity:0;transform:translateY(-16px)}.VPLocalNav[data-v-cf54e897]{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-cf54e897]{position:fixed}@media (min-width: 960px){.VPLocalNav[data-v-cf54e897]{top:var(--vp-nav-height)}.VPLocalNav.has-sidebar[data-v-cf54e897]{padding-left:var(--vp-sidebar-width)}.VPLocalNav.empty[data-v-cf54e897]{display:none}}@media (min-width: 1280px){.VPLocalNav[data-v-cf54e897]{display:none}}@media (min-width: 1440px){.VPLocalNav.has-sidebar[data-v-cf54e897]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.container[data-v-cf54e897]{display:flex;justify-content:space-between;align-items:center}.menu[data-v-cf54e897]{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-cf54e897]:hover{color:var(--vp-c-text-1);transition:color .25s}@media (min-width: 768px){.menu[data-v-cf54e897]{padding:0 32px}}@media (min-width: 960px){.menu[data-v-cf54e897]{display:none}}.menu-icon[data-v-cf54e897]{margin-right:8px;font-size:14px}.VPOutlineDropdown[data-v-cf54e897]{padding:12px 24px 11px}@media (min-width: 768px){.VPOutlineDropdown[data-v-cf54e897]{padding:12px 32px 11px}}.VPSwitch[data-v-2f976fdd]{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-2f976fdd]:hover{border-color:var(--vp-c-brand-1)}.check[data-v-2f976fdd]{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-2f976fdd]{position:relative;display:block;width:18px;height:18px;border-radius:50%;overflow:hidden}.icon[data-v-2f976fdd] [class^=vpi-]{position:absolute;top:3px;left:3px;width:12px;height:12px;color:var(--vp-c-text-2)}.dark .icon[data-v-2f976fdd] [class^=vpi-]{color:var(--vp-c-text-1);transition:opacity .25s!important}.sun[data-v-98eaf048]{opacity:1}.moon[data-v-98eaf048],.dark .sun[data-v-98eaf048]{opacity:0}.dark .moon[data-v-98eaf048]{opacity:1}.dark .VPSwitchAppearance[data-v-98eaf048] .check{transform:translate(18px)}.VPNavBarAppearance[data-v-2bca0d54]{display:none}@media (min-width: 1280px){.VPNavBarAppearance[data-v-2bca0d54]{display:flex;align-items:center}}.VPMenuGroup+.VPMenuLink[data-v-4766a333]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.link[data-v-4766a333]{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-4766a333]:hover{color:var(--vp-c-brand-1);background-color:var(--vp-c-default-soft)}.link.active[data-v-4766a333]{color:var(--vp-c-brand-1)}.VPMenuGroup[data-v-8348c51f]{margin:12px -12px 0;border-top:1px solid var(--vp-c-divider);padding:12px 12px 0}.VPMenuGroup[data-v-8348c51f]:first-child{margin-top:0;border-top:0;padding-top:0}.VPMenuGroup+.VPMenuGroup[data-v-8348c51f]{margin-top:12px;border-top:1px solid var(--vp-c-divider)}.title[data-v-8348c51f]{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-ecae26b2]{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-ecae26b2] .group{margin:0 -12px;padding:0 12px 12px}.VPMenu[data-v-ecae26b2] .group+.group{border-top:1px solid var(--vp-c-divider);padding:11px 12px 12px}.VPMenu[data-v-ecae26b2] .group:last-child{padding-bottom:0}.VPMenu[data-v-ecae26b2] .group+.item{border-top:1px solid var(--vp-c-divider);padding:11px 16px 0}.VPMenu[data-v-ecae26b2] .item{padding:0 16px;white-space:nowrap}.VPMenu[data-v-ecae26b2] .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-ecae26b2] .action{padding-left:24px}.VPFlyout[data-v-4ec7c207]{position:relative}.VPFlyout[data-v-4ec7c207]:hover{color:var(--vp-c-brand-1);transition:color .25s}.VPFlyout:hover .text[data-v-4ec7c207]{color:var(--vp-c-text-2)}.VPFlyout:hover .icon[data-v-4ec7c207]{fill:var(--vp-c-text-2)}.VPFlyout.active .text[data-v-4ec7c207]{color:var(--vp-c-brand-1)}.VPFlyout.active:hover .text[data-v-4ec7c207]{color:var(--vp-c-brand-2)}.VPFlyout:hover .menu[data-v-4ec7c207],.button[aria-expanded=true]+.menu[data-v-4ec7c207]{opacity:1;visibility:visible;transform:translateY(0)}.button[aria-expanded=false]+.menu[data-v-4ec7c207]{opacity:0;visibility:hidden;transform:translateY(0)}.button[data-v-4ec7c207]{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-4ec7c207]{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-4ec7c207]{margin-right:0;font-size:16px}.text-icon[data-v-4ec7c207]{margin-left:4px;font-size:14px}.icon[data-v-4ec7c207]{font-size:20px;transition:fill .25s}.menu[data-v-4ec7c207]{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-eace2088]{display:flex;justify-content:center;align-items:center;width:36px;height:36px;color:var(--vp-c-text-2);transition:color .5s}.VPSocialLink[data-v-eace2088]:hover{color:var(--vp-c-text-1);transition:color .25s}.VPSocialLink[data-v-eace2088]>svg,.VPSocialLink[data-v-eace2088]>[class^=vpi-social-]{width:20px;height:20px;fill:currentColor}.VPSocialLinks[data-v-4db2782b]{display:flex;justify-content:center}.VPNavBarExtra[data-v-1cda5079]{display:none;margin-right:-12px}@media (min-width: 768px){.VPNavBarExtra[data-v-1cda5079]{display:block}}@media (min-width: 1280px){.VPNavBarExtra[data-v-1cda5079]{display:none}}.trans-title[data-v-1cda5079]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.item.appearance[data-v-1cda5079],.item.social-links[data-v-1cda5079]{display:flex;align-items:center;padding:0 12px}.item.appearance[data-v-1cda5079]{min-width:176px}.appearance-action[data-v-1cda5079]{margin-right:-2px}.social-links-list[data-v-1cda5079]{margin:-4px -8px}.VPNavBarHamburger[data-v-4c1e16c7]{display:flex;justify-content:center;align-items:center;width:48px;height:var(--vp-nav-height)}@media (min-width: 768px){.VPNavBarHamburger[data-v-4c1e16c7]{display:none}}.container[data-v-4c1e16c7]{position:relative;width:16px;height:14px;overflow:hidden}.VPNavBarHamburger:hover .top[data-v-4c1e16c7]{top:0;left:0;transform:translate(4px)}.VPNavBarHamburger:hover .middle[data-v-4c1e16c7]{top:6px;left:0;transform:translate(0)}.VPNavBarHamburger:hover .bottom[data-v-4c1e16c7]{top:12px;left:0;transform:translate(8px)}.VPNavBarHamburger.active .top[data-v-4c1e16c7]{top:6px;transform:translate(0) rotate(225deg)}.VPNavBarHamburger.active .middle[data-v-4c1e16c7]{top:6px;transform:translate(16px)}.VPNavBarHamburger.active .bottom[data-v-4c1e16c7]{top:6px;transform:translate(0) rotate(135deg)}.VPNavBarHamburger.active:hover .top[data-v-4c1e16c7],.VPNavBarHamburger.active:hover .middle[data-v-4c1e16c7],.VPNavBarHamburger.active:hover .bottom[data-v-4c1e16c7]{background-color:var(--vp-c-text-2);transition:top .25s,background-color .25s,transform .25s}.top[data-v-4c1e16c7],.middle[data-v-4c1e16c7],.bottom[data-v-4c1e16c7]{position:absolute;width:16px;height:2px;background-color:var(--vp-c-text-1);transition:top .25s,background-color .5s,transform .25s}.top[data-v-4c1e16c7]{top:0;left:0;transform:translate(0)}.middle[data-v-4c1e16c7]{top:6px;left:0;transform:translate(8px)}.bottom[data-v-4c1e16c7]{top:12px;left:0;transform:translate(4px)}.VPNavBarMenuLink[data-v-5d54742f]{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-5d54742f],.VPNavBarMenuLink[data-v-5d54742f]:hover{color:var(--vp-c-brand-1)}.VPNavBarMenu[data-v-74b88904]{display:none}@media (min-width: 768px){.VPNavBarMenu[data-v-74b88904]{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-354f5644]{display:none}@media (min-width: 1280px){.VPNavBarSocialLinks[data-v-354f5644]{display:flex;align-items:center}}.title[data-v-e1bf594c]{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-e1bf594c]{flex-shrink:0}.VPNavBarTitle.has-sidebar .title[data-v-e1bf594c]{border-bottom-color:var(--vp-c-divider)}}[data-v-e1bf594c] .logo{margin-right:8px;height:var(--vp-nav-logo-height)}.VPNavBarTranslations[data-v-7e086b51]{display:none}@media (min-width: 1280px){.VPNavBarTranslations[data-v-7e086b51]{display:flex;align-items:center}}.title[data-v-7e086b51]{padding:0 24px 0 12px;line-height:32px;font-size:14px;font-weight:700;color:var(--vp-c-text-1)}.VPNavBar[data-v-2c7fe6f5]{position:relative;height:var(--vp-nav-height);pointer-events:none;white-space:nowrap;transition:background-color .25s}.VPNavBar.screen-open[data-v-2c7fe6f5]{transition:none;background-color:var(--vp-nav-bg-color);border-bottom:1px solid var(--vp-c-divider)}.VPNavBar[data-v-2c7fe6f5]:not(.home){background-color:var(--vp-nav-bg-color)}@media (min-width: 960px){.VPNavBar[data-v-2c7fe6f5]:not(.home){background-color:transparent}.VPNavBar[data-v-2c7fe6f5]:not(.has-sidebar):not(.home.top){background-color:var(--vp-nav-bg-color)}}.wrapper[data-v-2c7fe6f5]{padding:0 8px 0 24px}@media (min-width: 768px){.wrapper[data-v-2c7fe6f5]{padding:0 32px}}@media (min-width: 960px){.VPNavBar.has-sidebar .wrapper[data-v-2c7fe6f5]{padding:0}}.container[data-v-2c7fe6f5]{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-2c7fe6f5],.container>.content[data-v-2c7fe6f5]{pointer-events:none}.container[data-v-2c7fe6f5] *{pointer-events:auto}@media (min-width: 960px){.VPNavBar.has-sidebar .container[data-v-2c7fe6f5]{max-width:100%}}.title[data-v-2c7fe6f5]{flex-shrink:0;height:calc(var(--vp-nav-height) - 1px);transition:background-color .5s}@media (min-width: 960px){.VPNavBar.has-sidebar .title[data-v-2c7fe6f5]{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-2c7fe6f5]{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-2c7fe6f5]{flex-grow:1}@media (min-width: 960px){.VPNavBar.has-sidebar .content[data-v-2c7fe6f5]{position:relative;z-index:1;padding-right:32px;padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .content[data-v-2c7fe6f5]{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-2c7fe6f5]{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-2c7fe6f5]{position:relative;background-color:var(--vp-nav-bg-color)}.VPNavBar:not(.has-sidebar):not(.home.top) .content-body[data-v-2c7fe6f5]{background-color:transparent}}@media (max-width: 767px){.content-body[data-v-2c7fe6f5]{column-gap:.5rem}}.menu+.translations[data-v-2c7fe6f5]:before,.menu+.appearance[data-v-2c7fe6f5]:before,.menu+.social-links[data-v-2c7fe6f5]:before,.translations+.appearance[data-v-2c7fe6f5]:before,.appearance+.social-links[data-v-2c7fe6f5]:before{margin-right:8px;margin-left:8px;width:1px;height:24px;background-color:var(--vp-c-divider);content:""}.menu+.appearance[data-v-2c7fe6f5]:before,.translations+.appearance[data-v-2c7fe6f5]:before{margin-right:16px}.appearance+.social-links[data-v-2c7fe6f5]:before{margin-left:16px}.social-links[data-v-2c7fe6f5]{margin-right:-8px}.divider[data-v-2c7fe6f5]{width:100%;height:1px}@media (min-width: 960px){.VPNavBar.has-sidebar .divider[data-v-2c7fe6f5]{padding-left:var(--vp-sidebar-width)}}@media (min-width: 1440px){.VPNavBar.has-sidebar .divider[data-v-2c7fe6f5]{padding-left:calc((100vw - var(--vp-layout-max-width)) / 2 + var(--vp-sidebar-width))}}.divider-line[data-v-2c7fe6f5]{width:100%;height:1px;transition:background-color .5s}.VPNavBar:not(.home) .divider-line[data-v-2c7fe6f5]{background-color:var(--vp-c-gutter)}@media (min-width: 960px){.VPNavBar:not(.home.top) .divider-line[data-v-2c7fe6f5]{background-color:var(--vp-c-gutter)}.VPNavBar:not(.has-sidebar):not(.home.top) .divider[data-v-2c7fe6f5]{background-color:var(--vp-c-gutter)}}.VPNavScreenAppearance[data-v-b2c1baa2]{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-b2c1baa2]{line-height:24px;font-size:12px;font-weight:500;color:var(--vp-c-text-2)}.VPNavScreenMenuLink[data-v-9013deec]{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-9013deec]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupLink[data-v-0b9b1c0b]{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-0b9b1c0b]:hover{color:var(--vp-c-brand-1)}.VPNavScreenMenuGroupSection[data-v-17d7aad1]{display:block}.title[data-v-17d7aad1]{line-height:32px;font-size:13px;font-weight:700;color:var(--vp-c-text-2);transition:color .25s}.VPNavScreenMenuGroup[data-v-0ea622c5]{border-bottom:1px solid var(--vp-c-divider);height:48px;overflow:hidden;transition:border-color .5s}.VPNavScreenMenuGroup .items[data-v-0ea622c5]{visibility:hidden}.VPNavScreenMenuGroup.open .items[data-v-0ea622c5]{visibility:visible}.VPNavScreenMenuGroup.open[data-v-0ea622c5]{padding-bottom:10px;height:auto}.VPNavScreenMenuGroup.open .button[data-v-0ea622c5]{padding-bottom:6px;color:var(--vp-c-brand-1)}.VPNavScreenMenuGroup.open .button-icon[data-v-0ea622c5]{transform:rotate(45deg)}.button[data-v-0ea622c5]{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-0ea622c5]:hover{color:var(--vp-c-brand-1)}.button-icon[data-v-0ea622c5]{transition:transform .25s}.group[data-v-0ea622c5]:first-child{padding-top:0}.group+.group[data-v-0ea622c5],.group+.item[data-v-0ea622c5]{padding-top:4px}.VPNavScreenTranslations[data-v-c0d85525]{height:24px;overflow:hidden}.VPNavScreenTranslations.open[data-v-c0d85525]{height:auto}.title[data-v-c0d85525]{display:flex;align-items:center;font-size:14px;font-weight:500;color:var(--vp-c-text-1)}.icon[data-v-c0d85525]{font-size:16px}.icon.lang[data-v-c0d85525]{margin-right:8px}.icon.chevron[data-v-c0d85525]{margin-left:4px}.list[data-v-c0d85525]{padding:4px 0 0 24px}.link[data-v-c0d85525]{line-height:32px;font-size:13px;color:var(--vp-c-text-1)}.VPNavScreen[data-v-42e40a96]{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-42e40a96],.VPNavScreen.fade-leave-active[data-v-42e40a96]{transition:opacity .25s}.VPNavScreen.fade-enter-active .container[data-v-42e40a96],.VPNavScreen.fade-leave-active .container[data-v-42e40a96]{transition:transform .25s ease}.VPNavScreen.fade-enter-from[data-v-42e40a96],.VPNavScreen.fade-leave-to[data-v-42e40a96]{opacity:0}.VPNavScreen.fade-enter-from .container[data-v-42e40a96],.VPNavScreen.fade-leave-to .container[data-v-42e40a96]{transform:translateY(-8px)}@media (min-width: 768px){.VPNavScreen[data-v-42e40a96]{display:none}}.container[data-v-42e40a96]{margin:0 auto;padding:24px 0 96px;max-width:288px}.menu+.translations[data-v-42e40a96],.menu+.appearance[data-v-42e40a96],.translations+.appearance[data-v-42e40a96]{margin-top:24px}.menu+.social-links[data-v-42e40a96]{margin-top:16px}.appearance+.social-links[data-v-42e40a96]{margin-top:16px}.VPNav[data-v-2b09750f]{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-2b09750f]{position:fixed}}.VPSidebarItem.level-0[data-v-047948a9]{padding-bottom:24px}.VPSidebarItem.collapsed.level-0[data-v-047948a9]{padding-bottom:10px}.item[data-v-047948a9]{position:relative;display:flex;width:100%}.VPSidebarItem.collapsible>.item[data-v-047948a9]{cursor:pointer}.indicator[data-v-047948a9]{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-047948a9],.VPSidebarItem.level-3.is-active>.item>.indicator[data-v-047948a9],.VPSidebarItem.level-4.is-active>.item>.indicator[data-v-047948a9],.VPSidebarItem.level-5.is-active>.item>.indicator[data-v-047948a9]{background-color:var(--vp-c-brand-1)}.link[data-v-047948a9]{display:flex;align-items:center;flex-grow:1}.text[data-v-047948a9]{flex-grow:1;padding:4px 0;line-height:24px;font-size:14px;transition:color .25s}.VPSidebarItem.level-0 .text[data-v-047948a9]{font-weight:700;color:var(--vp-c-text-1)}.VPSidebarItem.level-1 .text[data-v-047948a9],.VPSidebarItem.level-2 .text[data-v-047948a9],.VPSidebarItem.level-3 .text[data-v-047948a9],.VPSidebarItem.level-4 .text[data-v-047948a9],.VPSidebarItem.level-5 .text[data-v-047948a9]{font-weight:500;color:var(--vp-c-text-2)}.VPSidebarItem.level-0.is-link>.item>.link:hover .text[data-v-047948a9],.VPSidebarItem.level-1.is-link>.item>.link:hover .text[data-v-047948a9],.VPSidebarItem.level-2.is-link>.item>.link:hover .text[data-v-047948a9],.VPSidebarItem.level-3.is-link>.item>.link:hover .text[data-v-047948a9],.VPSidebarItem.level-4.is-link>.item>.link:hover .text[data-v-047948a9],.VPSidebarItem.level-5.is-link>.item>.link:hover .text[data-v-047948a9]{color:var(--vp-c-brand-1)}.VPSidebarItem.level-0.has-active>.item>.text[data-v-047948a9],.VPSidebarItem.level-1.has-active>.item>.text[data-v-047948a9],.VPSidebarItem.level-2.has-active>.item>.text[data-v-047948a9],.VPSidebarItem.level-3.has-active>.item>.text[data-v-047948a9],.VPSidebarItem.level-4.has-active>.item>.text[data-v-047948a9],.VPSidebarItem.level-5.has-active>.item>.text[data-v-047948a9],.VPSidebarItem.level-0.has-active>.item>.link>.text[data-v-047948a9],.VPSidebarItem.level-1.has-active>.item>.link>.text[data-v-047948a9],.VPSidebarItem.level-2.has-active>.item>.link>.text[data-v-047948a9],.VPSidebarItem.level-3.has-active>.item>.link>.text[data-v-047948a9],.VPSidebarItem.level-4.has-active>.item>.link>.text[data-v-047948a9],.VPSidebarItem.level-5.has-active>.item>.link>.text[data-v-047948a9]{color:var(--vp-c-text-1)}.VPSidebarItem.level-0.is-active>.item .link>.text[data-v-047948a9],.VPSidebarItem.level-1.is-active>.item .link>.text[data-v-047948a9],.VPSidebarItem.level-2.is-active>.item .link>.text[data-v-047948a9],.VPSidebarItem.level-3.is-active>.item .link>.text[data-v-047948a9],.VPSidebarItem.level-4.is-active>.item .link>.text[data-v-047948a9],.VPSidebarItem.level-5.is-active>.item .link>.text[data-v-047948a9]{color:var(--vp-c-brand-1)}.caret[data-v-047948a9]{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-047948a9]{color:var(--vp-c-text-2)}.item:hover .caret[data-v-047948a9]:hover{color:var(--vp-c-text-1)}.caret-icon[data-v-047948a9]{font-size:18px;transform:rotate(90deg);transition:transform .25s}.VPSidebarItem.collapsed .caret-icon[data-v-047948a9]{transform:rotate(0)}.VPSidebarItem.level-1 .items[data-v-047948a9],.VPSidebarItem.level-2 .items[data-v-047948a9],.VPSidebarItem.level-3 .items[data-v-047948a9],.VPSidebarItem.level-4 .items[data-v-047948a9],.VPSidebarItem.level-5 .items[data-v-047948a9]{border-left:1px solid var(--vp-c-divider);padding-left:16px}.VPSidebarItem.collapsed .items[data-v-047948a9]{display:none}.no-transition[data-v-9a5bc99e] .caret-icon{transition:none}.group+.group[data-v-9a5bc99e]{border-top:1px solid var(--vp-c-divider);padding-top:10px}@media (min-width: 960px){.group[data-v-9a5bc99e]{padding-top:10px;width:calc(var(--vp-sidebar-width) - 64px)}}.VPSidebar[data-v-c8ba038f]{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-c8ba038f]{opacity:1;visibility:visible;transform:translate(0);transition:opacity .25s,transform .5s cubic-bezier(.19,1,.22,1)}.dark .VPSidebar[data-v-c8ba038f]{box-shadow:var(--vp-shadow-1)}@media (min-width: 960px){.VPSidebar[data-v-c8ba038f]{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-c8ba038f]{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-c8ba038f]{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-c8ba038f]{outline:0}.VPSkipLink[data-v-d8b33460]{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-d8b33460]:focus{height:auto;width:auto;clip:auto;clip-path:none}@media (min-width: 1280px){.VPSkipLink[data-v-d8b33460]{top:14px;left:16px}}.Layout[data-v-17ca63c4]{display:flex;flex-direction:column;min-height:100vh}.VPHomeSponsors[data-v-3b218f30]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPHomeSponsors[data-v-3b218f30]{margin:96px 0}@media (min-width: 768px){.VPHomeSponsors[data-v-3b218f30]{margin:128px 0}}.VPHomeSponsors[data-v-3b218f30]{padding:0 24px}@media (min-width: 768px){.VPHomeSponsors[data-v-3b218f30]{padding:0 48px}}@media (min-width: 960px){.VPHomeSponsors[data-v-3b218f30]{padding:0 64px}}.container[data-v-3b218f30]{margin:0 auto;max-width:1152px}.love[data-v-3b218f30]{margin:0 auto;width:fit-content;font-size:28px;color:var(--vp-c-text-3)}.icon[data-v-3b218f30]{display:inline-block}.message[data-v-3b218f30]{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-3b218f30]{padding-top:32px}.action[data-v-3b218f30]{padding-top:40px;text-align:center}.VPTeamPage[data-v-1c9484ac]{margin:96px 0}@media (min-width: 768px){.VPTeamPage[data-v-1c9484ac]{margin:128px 0}}.VPHome .VPTeamPageTitle[data-v-1c9484ac-s]{border-top:1px solid var(--vp-c-gutter);padding-top:88px!important}.VPTeamPageSection+.VPTeamPageSection[data-v-1c9484ac-s],.VPTeamMembers+.VPTeamPageSection[data-v-1c9484ac-s]{margin-top:64px}.VPTeamMembers+.VPTeamMembers[data-v-1c9484ac-s]{margin-top:24px}@media (min-width: 768px){.VPTeamPageTitle+.VPTeamPageSection[data-v-1c9484ac-s]{margin-top:16px}.VPTeamPageSection+.VPTeamPageSection[data-v-1c9484ac-s],.VPTeamMembers+.VPTeamPageSection[data-v-1c9484ac-s]{margin-top:96px}}.VPTeamMembers[data-v-1c9484ac-s]{padding:0 24px}@media (min-width: 768px){.VPTeamMembers[data-v-1c9484ac-s]{padding:0 48px}}@media (min-width: 960px){.VPTeamMembers[data-v-1c9484ac-s]{padding:0 64px}}.VPTeamPageTitle[data-v-484c4d95]{padding:48px 32px;text-align:center}@media (min-width: 768px){.VPTeamPageTitle[data-v-484c4d95]{padding:64px 48px 48px}}@media (min-width: 960px){.VPTeamPageTitle[data-v-484c4d95]{padding:80px 64px 48px}}.title[data-v-484c4d95]{letter-spacing:0;line-height:44px;font-size:36px;font-weight:500}@media (min-width: 768px){.title[data-v-484c4d95]{letter-spacing:-.5px;line-height:56px;font-size:48px}}.lead[data-v-484c4d95]{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-484c4d95]{max-width:592px;letter-spacing:.15px;line-height:28px;font-size:20px}}.VPTeamPageSection[data-v-3574936e]{padding:0 32px}@media (min-width: 768px){.VPTeamPageSection[data-v-3574936e]{padding:0 48px}}@media (min-width: 960px){.VPTeamPageSection[data-v-3574936e]{padding:0 64px}}.title[data-v-3574936e]{position:relative;margin:0 auto;max-width:1152px;text-align:center;color:var(--vp-c-text-2)}.title-line[data-v-3574936e]{position:absolute;top:16px;left:0;width:100%;height:1px;background-color:var(--vp-c-divider)}.title-text[data-v-3574936e]{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-3574936e]{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-3574936e]{padding-top:40px}.VPTeamMembersItem[data-v-03e817fb]{display:flex;flex-direction:column;gap:2px;border-radius:12px;width:100%;height:100%;overflow:hidden}.VPTeamMembersItem.small .profile[data-v-03e817fb]{padding:32px}.VPTeamMembersItem.small .data[data-v-03e817fb]{padding-top:20px}.VPTeamMembersItem.small .avatar[data-v-03e817fb]{width:64px;height:64px}.VPTeamMembersItem.small .name[data-v-03e817fb]{line-height:24px;font-size:16px}.VPTeamMembersItem.small .affiliation[data-v-03e817fb]{padding-top:4px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .desc[data-v-03e817fb]{padding-top:12px;line-height:20px;font-size:14px}.VPTeamMembersItem.small .links[data-v-03e817fb]{margin:0 -16px -20px;padding:10px 0 0}.VPTeamMembersItem.medium .profile[data-v-03e817fb]{padding:48px 32px}.VPTeamMembersItem.medium .data[data-v-03e817fb]{padding-top:24px;text-align:center}.VPTeamMembersItem.medium .avatar[data-v-03e817fb]{width:96px;height:96px}.VPTeamMembersItem.medium .name[data-v-03e817fb]{letter-spacing:.15px;line-height:28px;font-size:20px}.VPTeamMembersItem.medium .affiliation[data-v-03e817fb]{padding-top:4px;font-size:16px}.VPTeamMembersItem.medium .desc[data-v-03e817fb]{padding-top:16px;max-width:288px;font-size:16px}.VPTeamMembersItem.medium .links[data-v-03e817fb]{margin:0 -16px -12px;padding:16px 12px 0}.profile[data-v-03e817fb]{flex-grow:1;background-color:var(--vp-c-bg-soft)}.data[data-v-03e817fb]{text-align:center}.avatar[data-v-03e817fb]{position:relative;flex-shrink:0;margin:0 auto;border-radius:50%;box-shadow:var(--vp-shadow-3)}.avatar-img[data-v-03e817fb]{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;object-fit:cover}.name[data-v-03e817fb]{margin:0;font-weight:600}.affiliation[data-v-03e817fb]{margin:0;font-weight:500;color:var(--vp-c-text-2)}.org.link[data-v-03e817fb]{color:var(--vp-c-text-2);transition:color .25s}.org.link[data-v-03e817fb]:hover{color:var(--vp-c-brand-1)}.desc[data-v-03e817fb]{margin:0 auto}.desc[data-v-03e817fb] a{font-weight:500;color:var(--vp-c-brand-1);text-decoration-style:dotted;transition:color .25s}.links[data-v-03e817fb]{display:flex;justify-content:center;height:56px}.sp-link[data-v-03e817fb]{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-03e817fb]:hover,.sp .sp-link.link[data-v-03e817fb]:focus{outline:none;color:var(--vp-c-white);background-color:var(--vp-c-sponsor)}.sp-icon[data-v-03e817fb]{margin-right:8px;font-size:16px}.VPTeamMembers.small .container[data-v-7fb4e4b4]{grid-template-columns:repeat(auto-fit,minmax(224px,1fr))}.VPTeamMembers.small.count-1 .container[data-v-7fb4e4b4]{max-width:276px}.VPTeamMembers.small.count-2 .container[data-v-7fb4e4b4]{max-width:576px}.VPTeamMembers.small.count-3 .container[data-v-7fb4e4b4]{max-width:876px}.VPTeamMembers.medium .container[data-v-7fb4e4b4]{grid-template-columns:repeat(auto-fit,minmax(256px,1fr))}@media (min-width: 375px){.VPTeamMembers.medium .container[data-v-7fb4e4b4]{grid-template-columns:repeat(auto-fit,minmax(288px,1fr))}}.VPTeamMembers.medium.count-1 .container[data-v-7fb4e4b4]{max-width:368px}.VPTeamMembers.medium.count-2 .container[data-v-7fb4e4b4]{max-width:760px}.container[data-v-7fb4e4b4]{display:grid;gap:24px;margin:0 auto;max-width:1152px}.box[data-v-1bec6d39]{max-width:720px;margin:3rem auto;display:flex;flex-direction:column}.box>div[data-v-1bec6d39]{margin-bottom:1.5rem}button[data-v-1bec6d39]{border:1px solid;border-color:var(--vp-button-alt-border);color:var(--vp-button-alt-text);background-color:var(--vp-button-alt-bg);margin-right:1rem;border-radius:10px;padding:0 20px;line-height:38px;font-size:14px}textarea[data-v-1bec6d39]:focus,button[data-v-1bec6d39]:focus,button[data-v-1bec6d39]:hover{background-color:var(--vp-button-alt-hover-bg)}button[data-v-1bec6d39]:focus{border-color:var(--vp-button-brand-bg)}textarea[data-v-1bec6d39]{width:100%;padding:.75rem;overflow-wrap:break-word;border-radius:8px;min-height:250px;max-height:500px}.copy[data-v-1bec6d39]{display:flex;border:1px solid var(--vp-input-border-color);border-radius:10px;overflow:hidden;transition:all .25ms}.copy>span[data-v-1bec6d39]{display:inline-block;padding:5px 15px;max-height:50px}.copy>span[data-v-1bec6d39]:nth-child(2){flex-grow:1;border-width:0 1px 0 1px;border-style:solid;border-color:var(--vp-input-border-color);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.copy>span[data-v-1bec6d39]:last-child{background-color:var(--vp-input-switch-bg-color);cursor:pointer}.copy>span[data-v-1bec6d39]:last-child:hover{background-color:var(--vp-bg-brand);color:var(--vp-c-brand-1)}:root{--vp-c-brand-1: #4169e1;--vp-c-brand-2: #747bff;--vp-home-hero-image-background-image: linear-gradient(180deg, var(--vp-home-hero-name-color) 50%,#27332a 50%);--vp-home-hero-image-filter: blur(40px)}.VPImage{border-radius:5px}.VPImage.image-src{width:min(25vw,250px);height:min(25vw,250px)}.image-src{border-radius:20px}.dark .vp-doc .custom-block a{transition:color .25s}.VPLocalSearchBox[data-v-fb965e4a]{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;display:flex}.backdrop[data-v-fb965e4a]{position:absolute;top:0;right:0;bottom:0;left:0;background:var(--vp-backdrop-bg-color);transition:opacity .5s}.shell[data-v-fb965e4a]{position:relative;padding:12px;margin:64px auto;display:flex;flex-direction:column;gap:16px;background:var(--vp-local-search-bg);width:min(100vw - 60px,900px);height:min-content;max-height:min(100vh - 128px,900px);border-radius:6px}@media (max-width: 767px){.shell[data-v-fb965e4a]{margin:0;width:100vw;height:100vh;max-height:none;border-radius:0}}.search-bar[data-v-fb965e4a]{border:1px solid var(--vp-c-divider);border-radius:4px;display:flex;align-items:center;padding:0 12px;cursor:text}@media (max-width: 767px){.search-bar[data-v-fb965e4a]{padding:0 8px}}.search-bar[data-v-fb965e4a]:focus-within{border-color:var(--vp-c-brand-1)}.local-search-icon[data-v-fb965e4a]{display:block;font-size:18px}.navigate-icon[data-v-fb965e4a]{display:block;font-size:14px}.search-icon[data-v-fb965e4a]{margin:8px}@media (max-width: 767px){.search-icon[data-v-fb965e4a]{display:none}}.search-input[data-v-fb965e4a]{padding:6px 12px;font-size:inherit;width:100%}@media (max-width: 767px){.search-input[data-v-fb965e4a]{padding:6px 4px}}.search-actions[data-v-fb965e4a]{display:flex;gap:4px}@media (any-pointer: coarse){.search-actions[data-v-fb965e4a]{gap:8px}}@media (min-width: 769px){.search-actions.before[data-v-fb965e4a]{display:none}}.search-actions button[data-v-fb965e4a]{padding:8px}.search-actions button[data-v-fb965e4a]:not([disabled]):hover,.toggle-layout-button.detailed-list[data-v-fb965e4a]{color:var(--vp-c-brand-1)}.search-actions button.clear-button[data-v-fb965e4a]:disabled{opacity:.37}.search-keyboard-shortcuts[data-v-fb965e4a]{font-size:.8rem;opacity:75%;display:flex;flex-wrap:wrap;gap:16px;line-height:14px}.search-keyboard-shortcuts span[data-v-fb965e4a]{display:flex;align-items:center;gap:4px}@media (max-width: 767px){.search-keyboard-shortcuts[data-v-fb965e4a]{display:none}}.search-keyboard-shortcuts kbd[data-v-fb965e4a]{background:#8080801a;border-radius:4px;padding:3px 6px;min-width:24px;display:inline-block;text-align:center;vertical-align:middle;border:1px solid rgba(128,128,128,.15);box-shadow:0 2px 2px #0000001a}.results[data-v-fb965e4a]{display:flex;flex-direction:column;gap:6px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain}.result[data-v-fb965e4a]{display:flex;align-items:center;gap:8px;border-radius:4px;transition:none;line-height:1rem;border:solid 2px var(--vp-local-search-result-border);outline:none}.result>div[data-v-fb965e4a]{margin:12px;width:100%;overflow:hidden}@media (max-width: 767px){.result>div[data-v-fb965e4a]{margin:8px}}.titles[data-v-fb965e4a]{display:flex;flex-wrap:wrap;gap:4px;position:relative;z-index:1001;padding:2px 0}.title[data-v-fb965e4a]{display:flex;align-items:center;gap:4px}.title.main[data-v-fb965e4a]{font-weight:500}.title-icon[data-v-fb965e4a]{opacity:.5;font-weight:500;color:var(--vp-c-brand-1)}.title svg[data-v-fb965e4a]{opacity:.5}.result.selected[data-v-fb965e4a]{--vp-local-search-result-bg: var(--vp-local-search-result-selected-bg);border-color:var(--vp-local-search-result-selected-border)}.excerpt-wrapper[data-v-fb965e4a]{position:relative}.excerpt[data-v-fb965e4a]{opacity:50%;pointer-events:none;max-height:140px;overflow:hidden;position:relative;margin-top:4px}.result.selected .excerpt[data-v-fb965e4a]{opacity:1}.excerpt[data-v-fb965e4a] *{font-size:.8rem!important;line-height:130%!important}.titles[data-v-fb965e4a] mark,.excerpt[data-v-fb965e4a] mark{background-color:var(--vp-local-search-highlight-bg);color:var(--vp-local-search-highlight-text);border-radius:2px;padding:0 2px}.excerpt[data-v-fb965e4a] .vp-code-group .tabs{display:none}.excerpt[data-v-fb965e4a] .vp-code-group div[class*=language-]{border-radius:8px!important}.excerpt-gradient-bottom[data-v-fb965e4a]{position:absolute;bottom:-1px;left:0;width:100%;height:8px;background:linear-gradient(transparent,var(--vp-local-search-result-bg));z-index:1000}.excerpt-gradient-top[data-v-fb965e4a]{position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vp-local-search-result-bg),transparent);z-index:1000}.result.selected .titles[data-v-fb965e4a],.result.selected .title-icon[data-v-fb965e4a]{color:var(--vp-c-brand-1)!important}.no-results[data-v-fb965e4a]{font-size:.9rem;text-align:center;padding:12px}svg[data-v-fb965e4a]{flex:none}
diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts
deleted file mode 100644
index 8e465e5..0000000
--- a/docs/.vitepress/config.ts
+++ /dev/null
@@ -1,139 +0,0 @@
-import { defineConfig } from "vitepress";
-
-const socialHandle = "@devhenryhale";
-const ogUrl = "https://mathflow.js.org";
-const ogImage = `${ogUrl}/og-image.png`;
-const desc =
- "A lightweight and expressive scripting language designed for mathematical expressions and calculations.";
-
-// https://vitepress.dev/reference/site-config
-export default defineConfig({
- base: "/",
- lang: "en-US",
- title: "MathFlow",
- description: desc,
- head: [
- ["link", { rel: "icon", href: "/logo.svg" }],
- ["meta", { name: "theme-color", content: "#4169e1" }],
- ["meta", { property: "og:type", content: "website" }],
- ["meta", { property: "og:title", content: "MathFlow" }],
- ["meta", { property: "og:image", content: ogImage }],
- ["meta", { property: "og:url", content: ogUrl }],
- ["meta", { property: "og:description", content: desc }],
- ["meta", { name: "twitter:card", content: "summary_large_image" }],
- ["meta", { name: "twitter:site", content: socialHandle }],
- ["meta", { name: "twitter:title", content: "MathFlow" }],
- ["meta", { name: "twitter:description", content: desc }],
- ["meta", { name: "twitter:image", content: ogImage }],
- ],
- themeConfig: {
- // https://vitepress.dev/reference/default-theme-config
- logo: "/logo.svg",
- siteTitle: "MathFlow",
-
- search: {
- provider: "local",
- options: {
- detailedView: true,
- miniSearch: {
- searchOptions: {
- fuzzy: 0.2,
- prefix: true,
- boost: {
- title: 4,
- text: 2,
- titles: 1,
- },
- },
- },
- },
- },
-
- outline: {
- label: "On this page",
- level: [2, 3],
- },
- nav: [
- { text: "Home", link: "/" },
- { text: "Guide", link: "/guide/" },
- { text: "API", link: "/api/" },
- { text: "Examples", link: "/examples/" },
- { text: "Playground", link: "/playground/" },
- {
- text: "v1.0.0",
- items: [
- {
- text: "Changelog",
- link: "https://github.com/mathflowjs/mathflow/blob/main/CHANGELOG.md",
- },
- {
- text: "Contributing",
- link: "https://github.com/mathflowjs/mathflow/#contributing",
- },
- { text: "Team", link: "/about" },
- ],
- },
- ],
-
- sidebar: [
- {
- text: "Introduction",
- collapsed: false,
- items: [
- { text: "What is MathFlow?", link: "/guide/" },
- { text: "Getting Started", link: "/guide/getting-started" },
- ],
- },
- {
- text: "Core Concepts",
- collapsed: false,
- items: [
- { text: "Basics", link: "/guide/basics" },
- { text: "Variables", link: "/guide/variables" },
- { text: "Expressions", link: "/guide/expressions" },
- { text: "Built-in Functions", link: "/guide/builtin" },
- ],
- },
- {
- text: "API Reference",
- collapsed: false,
- items: [
- { text: "Context API", link: "/api/" },
- { text: "Procedural API", link: "/api/procedural" },
- { text: "Error Handling", link: "/api/errors" },
- { text: "Rendering", link: "/api/rendering" },
- ],
- },
- {
- text: "Showcase",
- collapsed: false,
- items: [{ text: "Examples", link: "/examples/" }],
- },
- ],
-
- socialLinks: [
- { icon: "github", link: "https://github.com/mathflowjs/mathflow" },
- ],
-
- editLink: {
- text: "Edit this page on GitHub",
- pattern:
- "https://github.com/mathflowjs/mathflowjs.github.io/edit/main/docs/:path",
- },
-
- footer: {
- message:
- 'Released under the MIT License .',
- copyright:
- 'Copyright © 2024-present, Henry Hale .',
- },
- },
-
- markdown: {
- lineNumbers: false,
- theme: {
- light: "github-light",
- dark: "github-dark",
- },
- },
-});
diff --git a/docs/.vitepress/theme/assets/styles.css b/docs/.vitepress/theme/assets/styles.css
deleted file mode 100644
index 8bffb56..0000000
--- a/docs/.vitepress/theme/assets/styles.css
+++ /dev/null
@@ -1,27 +0,0 @@
-:root {
- --vp-c-brand-1: #4169e1;
- --vp-c-brand-2: #747bff;
- --vp-home-hero-image-background-image: linear-gradient(
- 180deg,
- var(--vp-home-hero-name-color),
- var(--vp-home-hero-name-color)
- );
- --vp-home-hero-image-filter: blur(40px);
-}
-
-.VPImage {
- border-radius: 5px;
-}
-
-.VPImage.image-src {
- width: min(25vw, 250px);
- height: min(25vw, 250px);
-}
-
-.image-src {
- border-radius: 20px;
-}
-
-.dark .vp-doc .custom-block a {
- transition: color 0.25s;
-}
diff --git a/docs/.vitepress/theme/components/PlayGround.vue b/docs/.vitepress/theme/components/PlayGround.vue
deleted file mode 100644
index 4c867bb..0000000
--- a/docs/.vitepress/theme/components/PlayGround.vue
+++ /dev/null
@@ -1,166 +0,0 @@
-
-
-
-
-
-
-
-
- Run
- Share
-
-
-
- Link
-
- {{ copied ? "Copied" : "Copy" }}
-
-
-
-
-
Solution:
-
= {{ n }}
-
-
-
-
Output:
-
{{ JSON.stringify(output, null, 2) }}
-
-
-
-
-
diff --git a/docs/.vitepress/theme/index.ts b/docs/.vitepress/theme/index.ts
deleted file mode 100644
index 86eae7c..0000000
--- a/docs/.vitepress/theme/index.ts
+++ /dev/null
@@ -1,16 +0,0 @@
-import DefaultTheme from "vitepress/theme";
-
-// @ts-ignore
-import PlayGround from "./components/PlayGround.vue";
-// @ts-ignore
-// import ProjectCards from "./components/ProjectCards.vue";
-
-import "./assets/styles.css";
-
-export default {
- extends: DefaultTheme,
- enhanceApp(ctx) {
- ctx.app.component("PlayGround", PlayGround);
- // ctx.app.component('ProjectCards', ProjectCards);
- },
-};
diff --git a/docs/about/index.md b/docs/about/index.md
deleted file mode 100644
index a30f547..0000000
--- a/docs/about/index.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-layout: page
----
-
-
-
-
-
- Our Team
- Say hello to our awesome team.
-
-
-
- Contributors
- A big shout out to these awesome people
-
-
-
-
-
diff --git a/docs/api/errors.md b/docs/api/errors.md
deleted file mode 100644
index f23d7b1..0000000
--- a/docs/api/errors.md
+++ /dev/null
@@ -1,178 +0,0 @@
-# Error Handling
-
-MathFlow provides comprehensive error handling to help you debug and handle issues in mathematical expressions.
-
-## Error Types
-
-MathFlow has three main types of errors:
-
-### LexicalError
-
-Occurs during the tokenization phase when the input string contains invalid characters or tokens.
-
-**Common causes**:
-
-- Invalid characters in expressions
-- Malformed numbers
-- Unknown operators
-
-**Example**:
-
-```ts
-try {
- ctx.solve("2 @ 3"); // Invalid operator @
-} catch (error) {
- if (error.type === "LexicalError") {
- console.log(error.message);
- // Invalid character '@' at position 2
- }
-}
-```
-
-### SyntaxError
-
-Occurs during parsing when the expression structure is invalid.
-
-**Common causes**:
-
-- Mismatched parentheses
-- Invalid function calls
-- Missing operators
-- Incorrect expression structure
-
-**Example**:
-
-```ts
-try {
- ctx.solve("2 + * 3"); // Invalid syntax: consecutive operators
-} catch (error) {
- if (error.type === "SyntaxError") {
- console.log(error.message);
- // Unexpected operator '*' after operator '+'
- }
-}
-```
-
-### RuntimeError
-
-Occurs during evaluation when mathematical operations fail.
-
-**Common causes**:
-
-- Division by zero
-- Invalid function arguments
-- Undefined variables
-- Numeric overflow
-
-**Example**:
-
-```ts
-try {
- ctx.solve("1/0"); // Division by zero
-} catch (error) {
- if (error.type === "RuntimeError") {
- console.log(error.message);
- // Division by zero
- }
-}
-```
-
-## Error Structure
-
-All errors in MathFlow follow a consistent structure:
-
-```ts
-interface MathFlowError {
- name: "MathFlowError";
- type: "LexicalError" | "SyntaxError" | "RuntimeError";
- message: string;
- suggestion: string | null;
- toString(): string;
-}
-```
-
-### Error Properties
-
-- `name`: Always 'MathFlowError' for easy type checking
-- `type`: Specific error category
-- `message`: Detailed error description
-- `suggestion`: Optional hint for fixing the error
-- `toString()`: Formatted error message with suggestion if available
-
-## Best Practices
-
-### 1. Use Try-Catch Blocks
-
-Always wrap MathFlow operations in try-catch blocks when handling user input:
-
-```ts
-try {
- const result = ctx.solve(userInput);
- displayResult(result);
-} catch (error) {
- if (error.name === "MathFlowError") {
- handleMathFlowError(error);
- } else {
- throw error; // Re-throw unexpected errors
- }
-}
-```
-
-### 2. Error Type Checking
-
-Check error types to provide appropriate feedback:
-
-```ts
-function handleMathFlowError(error) {
- switch (error.type) {
- case "LexicalError":
- // Handle invalid characters/tokens
- break;
- case "SyntaxError":
- // Handle invalid expression structure
- break;
- case "RuntimeError":
- // Handle evaluation errors
- break;
- }
-}
-```
-
-### 3. User Feedback
-
-Use error suggestions to help users fix issues:
-
-```ts
-function displayError(error) {
- const message = error.toString();
- // "SyntaxError: unexpected token '9' at 3:5 - expecting ')'"
- showErrorToUser(message);
-}
-```
-
-### 4. Variable Validation
-
-Check variables before evaluation to prevent runtime errors:
-
-```ts
-const ctx = createContext();
-
-// Validate variables before solving
-function safeEvaluate(expr, variables) {
- for (const [name, value] of Object.entries(variables)) {
- if (typeof value !== "number" || !isFinite(value)) {
- throw createError(
- "RuntimeError",
- `Invalid value for variable '${name}'`,
- "Use finite numeric values only"
- );
- }
- }
-
- ctx.variables.clear();
-
- Object.entries(variables).forEach(([k, v]) => ctx.variables.set(k, v));
-
- return ctx.solve(expr);
-}
-```
diff --git a/docs/api/index.md b/docs/api/index.md
deleted file mode 100644
index ef7cc6b..0000000
--- a/docs/api/index.md
+++ /dev/null
@@ -1,194 +0,0 @@
-# Context API
-
-MathFlow configuration is managed through the properties of a context.
-
-This provides a simple interface for solving, rendering, and managing variables/functions/constants.
-
-## Creating a context
-
-- **Type**: `function createContext(options?: Partial): ContextAPI`
-
-Use `createContext` to manage isolated or persistent variable scopes:
-
-```ts
-import { createContext } from "mathflow";
-
-const ctx = createContext({
- // ...
-});
-```
-
-### preferences
-
-You can set preferences when creating a context, or update them at any time.
-
-```ts
-const ctx = createContext({
- preferences: {
- // key: value
- },
-});
-```
-
-```ts
-type Preferences = {
- angles: "rad" | "deg";
- fractionDigits: number;
- precision: number;
-};
-```
-
-#### angles
-
-- **Type**: `rad` - radians | `deg` - degrees
-- **Default**: `rad`
-
-Mode of angles - trignometric functions depend on `angles` to handle arguments and return values.
-
-```ts
-const ctx = createContext({
- preferences: {
- angles: "deg",
- },
-});
-
-// or
-
-ctx.preferences.angles = "deg";
-
-// example: sin(30) = 0.5 in degrees mode
-```
-
-#### fractionDigits
-
-- **Type**: `number`
-- **Default**: `15`
-
-Number of digits after the decimal point. Must be in the range `0` - `20`, inclusive.
-
-```ts
-const ctx = createContext({
- preferences: {
- fractionDigits: 10,
- },
-});
-
-// or
-
-ctx.preferences.fractionDigits = 10;
-```
-
-#### precision
-
-- **Type**: `number`
-- **Default**: `15`
-
-Number of significant digits. Must be in the range 1 - 21, inclusive.
-
-```ts
-const ctx = createContext({
- preferences: {
- precision: 20,
- },
-});
-
-// or
-
-ctx.preferences.precision = 20;
-```
-
-### variables
-
-You can provide predefined variables and constants to the context at its creation:
-
-- **Type**: `Record`
-
-```ts
-const ctx = createContext({
- variables: {
- x: 1,
- },
- constants: {
- g: 9.81,
- },
-});
-```
-
-For an existing context, use:
-
-- **Type**: `Map`
-
-```ts
-ctx.variables.set("x", 1);
-
-ctx.constants.set("g", 9.81);
-```
-
-Managing variables using:
-
-```js
-// Check if variable exists
-ctx.variables.has("x"); // true/false
-
-// Get variable value
-ctx.variables.get("x"); // Returns value
-
-// Set variable value
-ctx.variables.set("x", 10);
-
-// Delete variable
-ctx.variables.delete("x");
-
-// Clear all variables
-ctx.variables.clear();
-```
-
-### functions
-
-Add custom functions to a context.
-
-- **Type**: `(...args: number[]) => number`
-
-```ts
-const ctx = createContext({
- functions: {
- double: (x) => 2 * x,
- },
-});
-```
-
-For an existing context, use:
-
-- **Type**: `Map`
-
-```ts
-ctx.functions.set("double", (x) => 2 * x);
-```
-
-## Solving expressions
-
-### solve
-
-Evaluate a single mathematical expression string
-
-- **Type**: `(code: string) => ({ value: number, solution: string[] })`
-
-```js
-ctx.solve("1 + 3 + 5");
-// { value: 9, solution: ['4 + 5', '9'] }
-```
-
-### solveBatch
-
-Evaluate multiple mathematical expressions at once
-
-- **Type**: `(code: string) => ({ value: number, solution: string[] }[])`
-
-```ts
-ctx.solveBatch(`x=2\ny=3x\nz=x+y`);
-// [
-// { value: 2, solution: ['x = 2'] },
-// { value: 6, solution: ['y = 3 * 2', 'y = 6'] },
-// { value: 8, solution: ['z = 2 + 6', 'z = 8'] },
-// ]
-```
diff --git a/docs/api/procedural.md b/docs/api/procedural.md
deleted file mode 100644
index 242076b..0000000
--- a/docs/api/procedural.md
+++ /dev/null
@@ -1,295 +0,0 @@
-# Procedural API
-
-The procedural API provides low-level access to MathFlow's core components, offering fine-grained control over the expression parsing and evaluation process.
-
-## Overview
-
-MathFlow's processing pipeline consists of four main stages:
-
-1. **Tokenization**: Converting raw text into tokens (lexical analysis)
-2. **Parsing**: Converting tokens into an Abstract Syntax Tree (AST)
-3. **Evaluation**: Computing the final value from the AST
-4. **Solution Tracking**: Recording step-by-step evaluation details
-
-### Use Cases
-
-- Implementing custom evaluation strategies
-- Tracking step-by-step solutions
-- Building tools and extensions
-- Advanced error handling
-- Creating custom syntax implementations
-- Integrating with other systems
-
-## Core Components
-
-### tokenize
-
-`function tokenize(ctx: Context, input: string): Token[]`
-
-Converts a string input into a sequence of tokens.
-
-```ts
-import { createContext, tokenize, TOKEN } from "mathflow";
-
-const ctx = createContext();
-
-const tokens = tokenize(ctx, "2*x + 1");
-// [
-// { type: TOKEN.NUMBER, value: '2', line: 1, column: 1 },
-// { type: TOKEN.OPERATOR, value: '*', line: 1, column: 2 },
-// { type: TOKEN.IDENTIFIER, value: 'x', line: 1, column: 3 },
-// { type: TOKEN.OPERATOR, value: '+', line: 1, column: 5 },
-// { type: TOKEN.NUMBER, value: '1', line: 1, column: 7 }
-// ]
-```
-
-**Token Types**:
-
-```ts
-enum TOKEN {
- NUMBER,
- IDENTIFIER,
- OPERATOR,
- FUNCTION,
- LPAREN,
- RPAREN,
- COMMA,
- ASSIGNMENT,
- NEWLINE,
- EOF,
-}
-
-type Token = {
- type: TOKEN;
- value: string;
- column: number;
- line: number;
- position: number;
-};
-```
-
-### parse
-
-`function parse(tokens: Token[]): Node`
-
-Converts a sequence of tokens into an Abstract Syntax Tree (AST).
-
-```ts
-import { parse, NODE } from "mathflow";
-
-const ast = parse(tokens);
-// {
-// type: NODE.PROGRAM,
-// body: [{
-// type: NODE.BINARY,
-// operator: '+',
-// left: {
-// type: NODE.BINARY,
-// operator: '*',
-// left: { type: NODE.NUMBER, value: 2 },
-// right: { type: NODE.IDENTIFIER, name: 'x' }
-// },
-// right: { type: NODE.NUMBER, value: 1 }
-// }]
-// }
-```
-
-**Node Types**:
-
-```ts
-enum NODE {
- PROGRAM,
- BINARY,
- UNARY,
- NUMBER,
- IDENTIFIER,
- CALL,
- ASSIGNMENT,
-}
-```
-
-### createSolutionStack
-
-`function createSolutionStack(): Solution`
-
-Creates a new solution stack for tracking evaluation steps.
-
-```ts
-import { createSolutionStack } from "mathflow";
-
-const solution = createSolutionStack();
-
-// evaluate expression with `solution` buffer
-
-console.log(solution.steps); // [ ... ]
-```
-
-### evaluate
-
-`function evaluate(ctx: Context, node: Node, solution?: Solution): number`
-
-Evaluates an AST node in the given context.
-
-```ts
-import { evaluate } from "mathflow";
-
-const value = evaluate(ctx, ast.body[0], solution);
-
-console.log(value); // Numeric result
-```
-
-## Complete Example
-
-Here's a complete example showing how to use all components together:
-
-```ts
-import {
- createContext,
- tokenize,
- parse,
- evaluate,
- createSolutionStack,
- TOKEN,
- NODE,
-} from "mathflow";
-
-// 1. Create context with variables
-const ctx = createContext({
- variables: { x: 5 },
-});
-
-// 2. Create solution tracker
-const solution = createSolutionStack();
-
-// 3. Process expression
-const expression = "2*x + sin(30)";
-
-// 4. Tokenize
-const tokens = tokenize(ctx, expression);
-console.log("Tokens:", tokens);
-
-// 5. Parse
-const ast = parse(tokens);
-console.log("AST:", ast);
-
-// 6. Evaluate
-const value = evaluate(ctx, ast.body[0], solution);
-
-console.log("Result:", value);
-console.log("Steps:", solution.steps);
-```
-
-## Advanced Usage
-
-### Custom Token Processing
-
-```ts
-import { Token, TOKEN } from "mathflow";
-
-function analyzeTokens(tokens: Token[]) {
- return tokens.reduce(
- (info, token) => {
- info.types.add(token.type);
- if (token.type === TOKEN.IDENTIFIER) {
- info.variables.add(token.value);
- }
- return info;
- },
- {
- types: new Set(),
- variables: new Set(),
- }
- );
-}
-```
-
-### AST Transformation
-
-```ts
-import { Node, NODE } from "mathflow";
-
-// ...
-
-function simplifyAST(node: Node): Node {
- // Handle numbers
- if (node.type === NODE.NUMBER) {
- return node;
- }
-
- // Simplify binary expressions
- if (node.type === NODE.BINARY) {
- const left = simplifyAST(node.left);
- const right = simplifyAST(node.right);
-
- // If both operands are numbers, compute the result
- if (left.type === NODE.NUMBER && right.type === NODE.NUMBER) {
- return {
- type: NODE.NUMBER,
- value: evaluate(ctx, {
- type: NODE.BINARY,
- operator: node.operator,
- left,
- right,
- }),
- };
- }
-
- return {
- ...node,
- left,
- right,
- };
- }
-
- return node;
-}
-```
-
-### Custom Evaluation Strategy
-
-```ts
-import { Context, Node } from "mathflow";
-
-function evaluateWithTimeout(
- ctx: Context,
- node: Node,
- timeout: number = 1000
-): Promise {
- return new Promise((resolve, reject) => {
- const timeoutId = setTimeout(() => {
- reject(new Error("Evaluation timeout"));
- }, timeout);
-
- try {
- const result = evaluate(ctx, node);
- clearTimeout(timeoutId);
- resolve(result);
- } catch (error) {
- clearTimeout(timeoutId);
- reject(error);
- }
- });
-}
-```
-
-## Best Practices
-
-1. **Token Management**
- - Keep track of token positions for error reporting
-
-2. **AST Operations**
- - Implement AST visitors for complex transformations
- - Cache AST for repeated evaluations
-
-3. **Error Handling**
- - Implement specific error types for each phase
-
-## Performance Considerations
-
-1. **Tokenization**
- - Cache tokens for frequently used expressions
-
-2. **Evaluation**
- - Cache computed values when possible
- - Implement lazy evaluation for large expressions
- - Use optimized math functions for common operations
diff --git a/docs/api/rendering.md b/docs/api/rendering.md
deleted file mode 100644
index a19b345..0000000
--- a/docs/api/rendering.md
+++ /dev/null
@@ -1,105 +0,0 @@
-# Rendering Math Expressions
-
-MathFlow supports rendering mathematical expressions as HTML and LaTeX for use in web applications, documentation, or scientific publishing.
-
-## HTML Rendering
-
-You can render mathematical expressions as HTML with customizable styling and theme support. The rendered output includes built-in CSS for proper display of mathematical symbols and expressions.
-
-### renderAsHTML
-
-You can render MathFlow code as HTML using the context API (recommended):
-
-```ts
-import { createContext } from "mathflow";
-
-const ctx = createContext();
-const html = ctx.renderAsHTML("sin(x) + 2^3", {
- /* options */
-});
-// html: 'sin(x) + 23 '
-```
-
-### renderTokensAsHTML
-
-For advanced usage, tokenize an expression and render manually:
-
-```ts
-import { createContext, tokenize, renderTokensAsHTML } from "mathflow";
-
-const ctx = createContext();
-const tokens = tokenize(ctx, "sin(x) + 2^3");
-const html = renderTokensAsHTML(tokens, {
- /* options */
-});
-```
-
-### Options
-
-You can customize the HTML output using `HTMLRenderOptions` listed below:
-
-- `classPrefix`: Prefix for CSS classes (default: `mf`)
-- `colorScheme`: Color scheme selection (`none` | `auto` | `light` | `dark`)
-- `includeDebugInfo`: Include position data attributes for debugging (`true` or `false`)
-
-**Default Options**:
-
-```ts
-{
- classPrefix: 'mf',
- colorScheme: 'none',
- includeDebugInfo: false
-}
-```
-
-## LaTeX Rendering
-
-You can convert mathematical expressions to LaTeX format, suitable for use with LaTeX renderers or math typesetting systems.
-
-### renderAsLaTeX
-
-You can render MathFlow code as LaTeX using the context API (recommended):
-
-```ts
-import { createContext } from "mathflow";
-
-const ctx = createContext();
-
-const latex = ctx.renderAsLaTeX("sqrt(4) + pi", { mode: "inline" });
-// latex: '$\\sqrt{4} + \\pi$'
-```
-
-### renderTokensAsLaTeX
-
-For advanced usage, tokenize an expression and render manually:
-
-```ts
-import { createContext, tokenize, renderTokensAsLaTeX } from "mathflow";
-
-const ctx = createContext();
-
-const tokens = tokenize(ctx, "sqrt(4) + pi");
-
-const latex = renderTokensAsLaTeX(tokens, {
- /* options */
-});
-```
-
-### Options
-
-You can customize the LaTeX output using `LaTeXRenderOptions` listed below:
-
-- `mode`: LaTeX math mode (`inline` | `display` | `align`)
-
-**Default Options**:
-
-```ts
-{
- mode: "inline";
-}
-```
-
-## Use Cases
-
-- Displaying results in web-based math editors
-- Exporting expressions for scientific papers
diff --git a/docs/examples/index.md b/docs/examples/index.md
deleted file mode 100644
index d7be929..0000000
--- a/docs/examples/index.md
+++ /dev/null
@@ -1,284 +0,0 @@
-# Examples
-
-This section provides practical examples of using MathFlow in different scenarios.
-
-## Basic Usage
-
-### Simple Calculations
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-const ctx = createContext();
-
-// Basic arithmetic
-console.log(ctx.solve('2 + 3 * 4')); // 14
-console.log(ctx.solve('(2 + 3) * 4')); // 20
-
-// Powers and roots
-console.log(ctx.solve('2^3')); // 8
-console.log(ctx.solve('sqrt(16)')); // 4
-```
-
-### Working with Variables
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-const ctx = createContext({
- variables: {
- x: 5,
- y: 3
- }
-});
-
-// Using variables in expressions
-console.log(ctx.solve('2*x + y')); // 13
-console.log(ctx.solve('x^2 + y^2')); // 34
-
-// Dynamic variable updates
-ctx.variables.set('z', 10);
-console.log(ctx.solve('x + y + z')); // 18
-```
-
-## Advanced Examples
-
-### Solving Equations in Steps
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-const steps = ctx.solveBatch(`
- x = 5
- y = 3*x
- z = x^2 + y
- result = z/2
-`);
-
-// Each step shows work and final value
-steps.forEach(step => {
- console.log(step.solution);
- console.log('= ' + step.value);
-});
-```
-
-### Working with Functions
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-const ctx = createContext({
- functions: {
- // Custom average function
- avg: (...args) => args.reduce((a, b) => a + b) / args.length,
- // Area of a circle
- circleArea: (r) => Math.PI * r * r
- }
-});
-
-console.log(ctx.solve('avg(1, 2, 3, 4)')); // 2.5
-console.log(ctx.solve('circleArea(5)')); // 78.54...
-```
-
-### Trigonometry
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-const ctx = createContext({
- preferences: {
- angles: 'deg' // Use degrees instead of radians
- }
-});
-
-// Basic trigonometry
-console.log(ctx.solve('sin(30)')); // 0.5
-console.log(ctx.solve('cos(60)')); // 0.5
-console.log(ctx.solve('tan(45)')); // 1
-
-// Complex expressions
-console.log(ctx.solve('sin(x)^2 + cos(x)^2')); // 1
-```
-
-### LaTeX Output
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-const ctx = createContext();
-
-const expr = '1/2 + sqrt(x^2 + y^2)';
-
-// Get LaTeX for display mode
-const latex = ctx.renderAsLaTeX(expr, {
- mode: 'display'
-});
-
-console.log(latex);
-// $$\frac{1}{2} + \sqrt{x^2 + y^2}$$
-```
-
-### HTML Rendering
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-const ctx = createContext();
-
-const expr = 'sin^2(x) + cos^2(x) = 1';
-
-// Get interactive HTML with dark theme
-const html = ctx.renderAsHTML(expr, {
- colorScheme: 'dark'
-});
-
-document.getElementById('math').innerHTML = html;
-```
-
-## Real-World Applications
-
-### Financial Calculations
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-const ctx = createContext({
- functions: {
- // Future Value calculation
- FV: (pv, r, n) => pv * Math.pow(1 + r, n),
- // Monthly Payment calculation
- PMT: (pv, r, n) => {
- const monthlyRate = r / 12;
- return pv * monthlyRate / (1 - Math.pow(1 + monthlyRate, -n));
- }
- }
-});
-
-// Calculate future value of $1000 at 5% for 3 years
-console.log(ctx.solve('FV(1000, 0.05, 3)')); // 1157.63
-
-// Calculate monthly payment for $200000 loan at 3.5% for 30 years
-console.log(ctx.solve('PMT(200000, 0.035, 360)')); // 898.09
-```
-
-### Physics Equations
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-const ctx = createContext({
- constants: {
- g: 9.81, // Gravity
- pi: Math.PI
- },
- functions: {
- // Kinetic energy
- KE: (m, v) => 0.5 * m * v * v,
- // Period of a pendulum
- period: (l) => 2 * Math.PI * Math.sqrt(l / 9.81)
- }
-});
-
-// Calculate kinetic energy
-console.log(ctx.solve('KE(2, 5)')); // 25 (2kg mass at 5m/s)
-
-// Calculate pendulum period
-console.log(ctx.solve('period(2)')); // 2.84s (2m length)
-```
-
-### Geometry
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-const ctx = createContext({
- functions: {
- // Triangle area using Heron's formula
- triangleArea: (a, b, c) => {
- const s = (a + b + c) / 2;
- return Math.sqrt(s * (s - a) * (s - b) * (s - c));
- },
- // Regular polygon area
- polygonArea: (n, r) => {
- return (n * r * r * Math.sin(2 * Math.PI / n)) / 2;
- }
- }
-});
-
-// Area of triangle with sides 3, 4, 5
-console.log(ctx.solve('triangleArea(3, 4, 5)')); // 6
-
-// Area of regular hexagon with radius 2
-console.log(ctx.solve('polygonArea(6, 2)')); // 10.39
-```
-
-## Error Handling Examples
-
-### Graceful Error Handling
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-function safeSolve(expr: string) {
- try {
- const ctx = createContext();
- return {
- success: true,
- value: ctx.solve(expr)
- };
- } catch (error) {
- return {
- success: false,
- error: error.toString(),
- suggestion: error.suggestion
- };
- }
-}
-
-// Examples
-console.log(safeSolve('1 + 2')); // { success: true, value: 3 }
-console.log(safeSolve('1 + / 2')); // { success: false, error: "SyntaxError: ..." }
-console.log(safeSolve('undefined_var')); // { success: false, error: "RuntimeError: ..." }
-```
-
-### Input Validation
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-function validateExpression(expr: string) {
- const ctx = createContext();
- const issues = [];
-
- // Check for basic syntax
- try {
- ctx.tokenize(expr);
- } catch (error) {
- issues.push({
- type: 'syntax',
- message: error.message
- });
- }
-
- // Check for undefined variables
- const variables = new Set();
- expr.match(/[a-zA-Z_]\w*/g)?.forEach(name => {
- if (!ctx.variables.has(name) && !ctx.functions.has(name)) {
- variables.add(name);
- }
- });
-
- if (variables.size > 0) {
- issues.push({
- type: 'variables',
- message: `Undefined variables: ${Array.from(variables).join(', ')}`
- });
- }
-
- return issues;
-}
-
-// Example usage
-console.log(validateExpression('x + y'));
-// [{ type: 'variables', message: 'Undefined variables: x, y' }]
-```
diff --git a/docs/guide/basics.md b/docs/guide/basics.md
deleted file mode 100644
index 8edcf50..0000000
--- a/docs/guide/basics.md
+++ /dev/null
@@ -1,232 +0,0 @@
-# Basic Syntax
-
-This guide covers the fundamental syntax elements of MathFlow, a powerful mathematical expression parser and evaluator.
-
-## Overview
-
-MathFlow's syntax is designed to be:
-
-- **Intuitive**: Similar to standard mathematical notation
-- **Flexible**: Supports various writing styles
-- **Forgiving**: Handles different spacing and formatting
-- **Expressive**: Rich set of operations and functions
-
-## Lexical Structure
-
-### Comments
-
-Comments in MathFlow start with a hash symbol (`#`) and continue to the end of the line:
-
-```sh
-# This is a single line comment
-2 + 3 # Calculate sum
-x = 5 # Assign value to x
-```
-
-### Whitespace
-
-MathFlow is whitespace-insensitive. Spaces, tabs, and newlines are ignored except to separate tokens:
-
-```sh
-# These are equivalent:
-2+3*4
-2 + 3 * 4
-2 + 3 * 4
-
-# These are also equivalent:
-sin(30)
-sin (30)
-sin ( 30 )
-```
-
-### Numbers
-
-MathFlow supports various numeric formats:
-
-```sh
-# Integers
-42
--17
-
-# Decimals
-3.14
--0.001
-
-# Scientific notation
-1.23e4 # 12300
-1.23e-4 # 0.000123
-
-# Special values
-Infinity
--Infinity
-```
-
-### Operators
-
-#### Arithmetic Operators
-
-```sh
-a + b # Addition
-a - b # Subtraction
-a * b # Multiplication
-a / b # Division
-a ^ b # Exponentiation (power)
--a # Negation (unary minus)
-```
-
-#### Assignment Operator
-
-```sh
-x = 5 # Assign 5 to variable x
-```
-
-### Grouping
-
-Use parentheses for grouping and controlling evaluation order:
-
-```sh
-2 * (3 + 4) # 14 (not 10)
-(1 + 2) * (3 + 4) # 21
-
-# Nested parentheses
-((2 + 3) * 4) + 5 # 25
-```
-
-## Expression Structure
-
-### Simple Expressions
-
-```sh
-# Basic arithmetic
-2 + 3
-4 * 5 - 1
-
-# Using variables
-x + y
-2 * radius
-
-# Using functions
-sin(30)
-sqrt(16)
-```
-
-### Compound Expressions
-
-```sh
-# Multiple operations
-2 * x + y / 4
-
-# Function composition
-sin(sqrt(x))
-
-# Complex calculations
-(-b + sqrt(b^2 - 4*a*c)) / (2*a)
-```
-
-### Multiple Lines
-
-```sh
-# Sequential calculations
-x = 5
-y = 2 * x
-z = x + y
-
-# Functions with multiple arguments
-point_distance(x1, y1, x2, y2)
-
-# Multi-line expressions
-(sin(x)^2 +
- cos(x)^2)
-```
-
-## Implicit Multiplication
-
-MathFlow supports implicit multiplication between:
-
-- Numbers and variables: `2x` = `2 * x`
-- Numbers and functions: `2sin(x)` = `2 * sin(x)`
-- Variables: `xy` = `x * y`
-- Parentheses: `2(x+y)` = `2 * (x+y)`
-
-```sh
-# These are equivalent:
-2x + 3y
-2 * x + 3 * y
-
-# These are also equivalent:
-2sin(30)
-2 * sin(30)
-```
-
-## Operator Precedence
-
-Operators are evaluated in this order (highest to lowest):
-
-1. Parentheses `()`
-2. Functions `sin(), cos(), etc.`
-3. Exponentiation `^`
-4. Unary minus `-`
-5. Multiplication `*` and Division `/`
-6. Addition `+` and Subtraction `-`
-7. Assignment `=`
-
-```sh
-# Examples of precedence:
-2 + 3 * 4 # 14 (not 20)
--2^2 # -4 (not 4)
-2^3 * 4 # 32 (not 64)
-x = y = 5 # Assigns 5 to both x and y
-```
-
-## Error Handling
-
-MathFlow provides clear error messages for common syntax issues:
-
-```sh
-2 + # Incomplete expression
-2 * * 3 # Invalid operator sequence
-(2 + 3 # Unmatched parenthesis
-sin 30 # Missing parentheses
-```
-
-## Style Guidelines
-
-While MathFlow is flexible with syntax, these guidelines improve readability:
-
-1. **Use Spaces** around operators:
-
- ```sh
- x = 2 * y + 5 # Good
- x=2*y+5 # Less readable
- ```
-
-2. **One Expression per Line**:
-
- ```sh
- # Good
- x = 5
- y = 2 * x
-
- # Less readable
- x = 5; y = 2 * x
- ```
-
-3. **Use Parentheses** for clarity:
-
- ```sh
- (a + b) * c # Clear precedence
- a + b * c # Less clear
- ```
-
-4. **Meaningful Variable Names**:
-
- ```sh
- radius = 5 # Clear purpose
- r = 5 # Less clear
- ```
-
-5. **Add Comments** for complex expressions:
- ```sh
- # Calculate discriminant
- b^2 - 4*a*c
- ```
diff --git a/docs/guide/builtin.md b/docs/guide/builtin.md
deleted file mode 100644
index e746a42..0000000
--- a/docs/guide/builtin.md
+++ /dev/null
@@ -1,65 +0,0 @@
-# Built-ins
-
-MathFlow comes with a rich set of built-in constants and functions for mathematical computation. These are available in every context by default.
-
-## Constants
-
-- `pi` : Ratio of a circle's circumference to its diameter (`3.14159...`)
-- `e` : Euler's number, the base of natural logarithms (`2.71828...`)
-
-## Functions
-
-### Arithmetic & Numbers
-
-- `add(x, y, ...)` : Sum of arguments
-- `sub(x, y)` : Subtraction
-- `mul(x, y, ...)` : Product of arguments
-- `div(x, y)` : Division
-- `abs(x)` : Absolute value
-- `ceil(x)` : Ceiling
-- `floor(x)` : Floor
-- `sqrt(x)` : Square root
-- `pow(x, y)` : x to the power y
-- `cbrt(x)` : Cube root
-- `root(x, y)` : y-th root of x
-- `trunc(x)` : Truncate to integer
-
-### Logarithms & Exponentials
-
-- `exp(x)` : e^x
-- `ln(x)` : Natural logarithm
-- `log(x, y)` : Logarithm of x base y
-- `log10(x)` : Base-10 logarithm
-- `log2(x)` : Base-2 logarithm
-
-### Trigonometry
-
-> Angle mode can be _degrees_ or _radians_ - See [Preferences](../api/index.md#angles) for details.
-
-- `sin(x)`, `cos(x)`, `tan(x)` : Sine, cosine, tangent
-- `asin(x)`, `acos(x)`, `atan(x)` : Inverse trigonometric functions
-- `csc(x)`, `sec(x)`, `cot(x)` : Cosecant, secant, cotangent
-- `sinh(x)`, `cosh(x)`, `tanh(x)` : Hyperbolic functions
-- `asinh(x)`, `acosh(x)`, `atanh(x)` : Inverse hyperbolic functions
-- `deg(x)` : Convert radians to degrees
-- `rad(x)` : Convert degrees to radians
-- `hypot(x, y)` : sqrt(x² + y²)
-- `versin(x)` : 1 - cos(x)
-- `coversin(x)` : (1 - cos(x)) / 2
-
-## Examples
-
-```js:line-numbers
-import { createContext } from 'mathflow';
-
-const ctx = createContext();
-
-ctx.solve('log(100, 10)'); // 2
-ctx.solve('sin(90)'); // 1 (if angles = 'deg')
-ctx.solve('sqrt(16)'); // 4
-ctx.solve('hypot(3, 4)'); // 5
-```
-
----
-
-See also: [Preferences](../api/index.md#preferences) for angle mode and precision settings.
diff --git a/docs/guide/expressions.md b/docs/guide/expressions.md
deleted file mode 100644
index 9ed3f34..0000000
--- a/docs/guide/expressions.md
+++ /dev/null
@@ -1,235 +0,0 @@
-# Expressions
-
-Expressions in MathFlow are combinations of values, variables, operators, and function calls that can be evaluated to produce a result.
-
-## Expression Types
-
-### 1. Arithmetic Expressions
-
-Basic mathematical calculations using operators:
-
-```sh
-# Simple arithmetic
-2 + 3 * 4 # 14
-(2 + 3) * 4 # 20
-2^3 + 4 # 12
-
-# Mixed operations
-(3 + 4) * (5 - 2) / 2 # 10.5
-```
-
-### 2. Function Expressions
-
-Calls to built-in or custom functions:
-
-```sh
-# Basic function calls
-sin(30)
-sqrt(16)
-abs(-5)
-
-# Nested functions
-sin(sqrt(x))
-log(abs(x - y))
-
-# Multiple arguments
-min(x, y, z)
-max(2, 3, x, y)
-```
-
-### 3. Variable Expressions
-
-Operations involving variables:
-
-```sh
-# Simple variable usage
-x + y
-2 * radius
-
-# Complex expressions
-(x^2 + y^2) / 2
-velocity * time + (acceleration * time^2) / 2
-```
-
-## Expression Structure
-
-### 1. Terms
-
-Terms are the basic building blocks of expressions:
-
-```sh
-# Numbers
-42
-3.14
-1.23e-4
-
-# Variables
-x
-y
-radius
-
-# Function calls
-sin(x)
-sqrt(y)
-
-# Parenthesized expressions
-(x + y)
-```
-
-### 2. Operators
-
-#### Arithmetic Operators
-
-- `+`: Addition
-- `-`: Subtraction or negation
-- `*`: Multiplication
-- `/`: Division
-- `^`: Exponentiation
-
-```sh
-# Binary operators
-a + b
-x * y
-base ^ exponent
-
-# Unary operators
--x
-+y
-```
-
-### 3. Function Calls
-
-```sh
-# Basic syntax
-functionName(argument)
-functionName(arg1, arg2)
-
-# Examples
-sin(angle)
-max(x, y, z)
-sqrt(x^2 + y^2)
-```
-
-## Expression Evaluation
-
-### 1. Operator Precedence
-
-Operators are evaluated in this order (highest to lowest):
-
-1. `( )` - Parentheses
-2. Function calls
-3. `^` - Exponentiation
-4. `-` (unary) - Negation
-5. `*`, `/` - Multiplication and division
-6. `+`, `-` (binary) - Addition and subtraction
-
-```sh
-# Examples of precedence
-2 + 3 * 4 # 14 (not 20)
--2^2 # -4 (not 4)
-2^3 * 4 # 32 (not 64)
-sin(30) * 2 # Function call before multiplication
-```
-
-### 2. Expression Evaluation Rules
-
-1. **Left-to-Right Evaluation**
-
- ```sh
- a - b - c # Evaluated as (a - b) - c
- ```
-
-2. **Function Precedence**
-
- ```sh
- sin(x) + cos(x) # Functions evaluated before addition
- 2 * sin(x) # Function evaluated before multiplication
- ```
-
-3. **Implicit Multiplication**
- ```sh
- 2x # Same as 2 * x
- 2sin(x) # Same as 2 * sin(x)
- (x+1)(x-1) # Same as (x+1) * (x-1)
- ```
-
-## Expression Results
-
-### 1. Return Values
-
-- Each expression produces a single numeric value
-- In multi-line scripts, the last expression's value is returned
-- Assignment expressions return the assigned value
-
-```sh
-# Single expression
-2 + 3 # Returns 5
-
-# Multiple expressions
-x = 2 # Returns 2
-y = x * 3 # Returns 6
-z = (x + y) / 2 # Returns 4
-```
-
-## Best Practices
-
-1. **Use Parentheses for Clarity**
-
- ```sh
- # Clear intention
- (x + y) * z
-
- # Less clear
- x + y * z
- ```
-
-2. **Break Down Complex Expressions**
-
- ```sh
- # Hard to read
- result = (-b + sqrt(b^2 - 4*a*c)) / (2*a)
-
- # Better
- discriminant = b^2 - 4*a*c
- numerator = -b + sqrt(discriminant)
- result = numerator / (2*a)
- ```
-
-3. **Use Meaningful Variables**
-
- ```sh
- # Good
- area = length * width
-
- # Less clear
- a = l * w
- ```
-
-## Common Patterns
-
-### 1. Mathematical Formulas
-
-```sh
-# Quadratic formula
-x1 = (-b + sqrt(b^2 - 4*a*c)) / (2*a)
-x2 = (-b - sqrt(b^2 - 4*a*c)) / (2*a)
-
-# Circle area
-area = pi * radius^2
-
-# Pythagorean theorem
-c = sqrt(a^2 + b^2)
-```
-
-### 2. Scientific Calculations
-
-```sh
-# Kinetic energy
-ke = (1/2) * mass * velocity^2
-
-# Gravitational force
-force = G * (mass1 * mass2) / distance^2
-
-# Wave frequency
-frequency = velocity / wavelength
-```
diff --git a/docs/guide/getting-started.md b/docs/guide/getting-started.md
deleted file mode 100644
index 9cb6b88..0000000
--- a/docs/guide/getting-started.md
+++ /dev/null
@@ -1,160 +0,0 @@
-# Getting Started
-
-## Introduction
-
-MathFlow is a powerful mathematical expression parser and evaluator for JavaScript/TypeScript. It provides a robust way to parse, evaluate, and work with mathematical expressions in your applications.
-
-## Prerequisites
-
-Before getting started, ensure you have:
-
-- [Node.js](https://nodejs.org) (version 20 or higher)
-- A package manager: [npm](https://npmjs.org), [pnpm](https://pnpm.io), [yarn](https://yarnpkg.com), or [bun](https://bun.sh)
-- [TypeScript](https://typescript.org) (optional, but recommended for better development experience)
-
-## Installation
-
-Install MathFlow using your preferred package manager:
-
-:::code-group
-
-```sh [npm]
-$ npm install mathflow
-```
-
-```sh [pnpm]
-$ pnpm add mathflow
-```
-
-```sh [yarn]
-$ yarn add mathflow
-```
-
-```sh [bun]
-$ bun add mathflow
-```
-
-:::
-
-## Quick Start
-
-Here's a simple example to get you started:
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-// Create a new context
-const ctx = createContext();
-
-// Evaluate a simple expression
-const result = ctx.solve('2 * (3 + 4)');
-console.log(result.value); // 14
-```
-
-## Basic Usage Patterns
-
-This section uses the [Context API](../api/index.md) which provides a simple interface for solving, rendering, and managing variables, functions or constants.
-
-### 1. Simple Calculations
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-const ctx = createContext();
-
-// Basic arithmetic
-console.log(ctx.solve('2 + 3 * 4').value); // 14
-console.log(ctx.solve('(2 + 3) * 4').value); // 20
-console.log(ctx.solve('2^3 + sqrt(16)').value); // 12
-```
-
-### 2. Working with Variables
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-const ctx = createContext();
-
-// Set variables
-ctx.variables.set('x', 5);
-ctx.variables.set('y', 3);
-
-// Use variables in expressions
-console.log(ctx.solve('2*x + y').value); // 13
-console.log(ctx.solve('x^2 + y^2').value); // 34
-```
-
-### 3. Custom Functions
-
-```ts:line-numbers
-import { createContext } from 'mathflow';
-
-const ctx = createContext({
- functions: {
- // Average of numbers
- avg: (...args) => args.reduce((a, b) => a + b) / args.length,
- // Area of a circle
- circleArea: (r) => Math.PI * r * r
- }
-});
-
-console.log(ctx.solve('avg(1, 2, 3, 4)').value); // 2.5
-console.log(ctx.solve('circleArea(5)').value); // 78.54...
-```
-
-## Advanced Usage
-
-For more control over the evaluation process, MathFlow provides a [Procedural API](../api/procedural.md) along side the [Context API](../api/index.md):
-
-```ts:line-numbers
-import {
- createContext,
- tokenize,
- parse,
- evaluate,
- createSolutionStack
-} from 'mathflow';
-
-const ctx = createContext();
-const solution = createSolutionStack();
-
-// Step 1: Tokenize the expression
-const tokens = tokenize(ctx, '1 * 3 - 2 + 2*sin(30)');
-
-// Step 2: Parse tokens into an AST
-const ast = parse(tokens);
-
-// Step 3: Evaluate the AST
-const value = evaluate(ctx, ast.body[0], solution);
-
-// Get the step-by-step solution
-console.log(solution.steps);
-```
-
-## Error Handling
-
-Always wrap MathFlow operations in `try-catch` blocks when working with user input:
-
-```ts
-try {
- const result = ctx.solve(userInput);
- displayResult(result.value);
-} catch (error) {
- if (error.name === "MathFlowError") {
- console.error(`${error.type}: ${error.message}`);
- if (error.suggestion) {
- console.info("Suggestion:", error.suggestion);
- }
- }
-}
-```
-
-## Next Steps
-
-- Learn about [Basic Syntax](./basics.md)
-- Explore [Built-in Functions](./builtin.md)
-- See practical [Examples](../examples/index.md)
-- Check the [API Reference](../api/index.md)
-- Try the online [Playground](../playground/index.md)
-
-For more advanced features and comprehensive examples, continue through the documentation.
diff --git a/docs/guide/index.md b/docs/guide/index.md
deleted file mode 100644
index d83faca..0000000
--- a/docs/guide/index.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# Introduction
-
-Welcome to the official documentation for [MathFlow](https://github.com/mathflowjs/mathflow)!
-
-## What is MathFlow?
-
-**MathFlow** is a lightweight, expressive JavaScript library for mathematical expressions and calculations. It provides a simple, intuitive syntax for arithmetic, algebra, trigonometry, logarithms, and more.
-
-## What MathFlow is not
-
-::: warning
-
-- MathFlow is not a general-purpose programming language. It is focused on mathematical computation and basic scripting.
- :::
-
-## Main Objectives
-
-MathFlow aims for _expressiveness_, _focus_, and _simplicity_, making it ideal for math-centric applications, calculators, and educational tools.
-
-## How it Works
-
-MathFlow exposes an [API](../api/index.md) for evaluating code, solving equations, rendering, and more. The typical evaluation process:
-
-1. A global scope for variables is created.
-2. Source code is split into statements, whitespace is trimmed, and composite terms like `2x` are expanded to `2*x`.
-3. Variable declarations are executed and stored in the scope.
-4. Each statement is tokenized, parsed into an AST, and interpreted.
-5. The result of the last statement is returned, along with the final scope.
diff --git a/docs/guide/variables.md b/docs/guide/variables.md
deleted file mode 100644
index 957d8b2..0000000
--- a/docs/guide/variables.md
+++ /dev/null
@@ -1,217 +0,0 @@
-# Variables
-
-Variables in MathFlow are used to store values and make expressions reusable. They work similar to variables in mathematical notation, making them intuitive for mathematical calculations.
-
-## Variable Basics
-
-### Naming Rules
-
-1. **Start with a letter**
- - Must begin with uppercase or lowercase letter
- - Examples: `x`, `A`, `radius`, `Height`
-
-2. **Case sensitivity**
- - `x` and `X` are different variables
- - `area` and `Area` are different variables
-
-3. **Valid characters**
- - Letters (a-z, A-Z)
- - Numbers (0-9, not at start)
- - Underscores (\_)
-
-```js
-// Valid variable names
-x
-y1
-radius
-total_sum
-mass2
-velocity_initial
-
-// Invalid variable names
-1x // Can't start with number
-@speed // Can't use special characters
-sin // Can't use function names
-```
-
-### Declaration and Assignment
-
-Variables are declared and assigned using the `=` operator:
-
-```sh
-# Simple assignments
-x = 5
-y = 3.14
-radius = 10
-
-# Expression assignments
-area = pi * radius^2
-circumference = 2 * pi * radius
-
-# Using other variables
-total = x + y
-average = total / 2
-```
-
-## Variable Scoping
-
-Variables in MathFlow are scoped to their [context](../api/index.md).
-Learn how to manage variables programmatically [here](../api/index.md#variables).
-
-## Using Variables
-
-### In Expressions
-
-```sh
-# Basic arithmetic
-x = 5
-y = 2 * x # 10
-z = x + y # 15
-
-# Complex expressions
-t = 2
-distance = initial_velocity * t + (acceleration * t^2) / 2
-
-## Multiple variables
-base = 4
-height = 3
-area = (base * height) / 2
-```
-
-### In Functions
-
-```sh
-# Using variables in function calls
-angle = 30
-result = sin(angle)
-
-# Multiple variables in functions
-x1 = 0
-y1 = 0
-x2 = 3
-y2 = 4
-distance = sqrt((x2 - x1)^2 + (y2 - y1)^2)
-```
-
-## Best Practices
-
-:::tip
-Use your preferred approach to naming variables.
-You are recommended that you use variable names just like you would on paper or at least close.
-Add precise comments to describe the use of the variable or significance of an expression.
-:::
-
-### 1. Descriptive Names
-
-Choose meaningful variable names that describe their purpose:
-
-```sh
-# GOOD
-radius = 5
-area = pi * radius^2
-
-# LESS CLEAR
-r = 5
-a = pi * r^2
-```
-
-Alternatively, be precise and add comments to describe variables:
-
-```sh
-# GOOD
-
-# radius of circle
-r = 5
-
-# area of cirlce
-A = pi * r * r
-
-# LESS CLEAR
-r = 5
-a = pi * r * r
-```
-
-### 2. Consistent Naming
-
-Use consistent naming conventions:
-
-```sh
-# GOOD - consistent style
-initial_velocity = 0
-final_velocity = 10
-average_velocity = (initial_velocity + final_velocity) / 2
-
-# Bad - mixed styles
-initialVel = 0
-final_vel = 10
-avgVelocity = (initialVel + final_vel) / 2
-```
-
-### 3. Intermediate Variables
-
-Use intermediate variables for complex calculations:
-
-```sh
-# Hard to read
-result = (-b + sqrt(b^2 - 4*a*c)) / (2*a)
-
-# Better
-discriminant = b^2 - 4*a*c
-numerator = -b + sqrt(discriminant)
-denominator = 2*a
-result = numerator / denominator
-
-# Descriptive altenative
-
-# compute roots of a quadratic eqaution
-x1 = (-b + sqrt(b^2 - 4*a*c)) / (2*a)
-x2 = (+b + sqrt(b^2 - 4*a*c)) / (2*a)
-```
-
-### 4. Initialize Before Use
-
-Always initialize variables before using them:
-
-```sh
-# Good
-x = 5
-y = 10
-sum = x + y
-
-# Will cause error
-sum = a + b # a and b not defined
-```
-
-## Common Patterns
-
-### 1. Accumulation
-
-```sh
-# Sum calculation
-sum = 0
-sum = sum + x1
-sum = sum + x2
-sum = sum + x3
-```
-
-### 2. Swapping Values
-
-```sh
-# Swap x and y
-temp = x
-x = y
-y = temp
-```
-
-### 3. Derived Values
-
-```sh
-# Calculate derived quantities
-mass = 10
-acceleration = 9.81
-force = mass * acceleration
-
-# Convert units
-celsius = 25
-fahrenheit = celsius * 9/5 + 32
-```
diff --git a/docs/index.md b/docs/index.md
deleted file mode 100644
index 08ed1be..0000000
--- a/docs/index.md
+++ /dev/null
@@ -1,42 +0,0 @@
----
-# https://vitepress.dev/reference/default-theme-home-page
-layout: home
-
-hero:
- name: MathFlow
- text: A Robust Mathematical Expression Parser for JavaScript
- tagline: Parse, evaluate and work with mathematical expressions with ease
- image:
- src: /logo.svg
- alt: MathFlow Logo
- actions:
- - theme: brand
- text: Get Started
- link: /guide/index
- - theme: alt
- text: Playground
- link: /playground/
- - theme: alt
- text: View on GitHub
- link: https://github.com/mathflowjs/mathflow
-
-features:
- - title: Expression Parsing
- icon: "📝"
- details: Parse and evaluate mathematical expressions with support for variables and functions
- - title: Rich Function Library
- icon: "🛠️"
- details: Comprehensive set of mathematical functions including trigonometric, logarithmic, and algebraic operations
- - title: Type Safety
- icon: "🛡️"
- details: Built with TypeScript for enhanced type safety and better developer experience
- - title: Abstract Syntax Tree
- icon: "🌿"
- details: Generate and work with ASTs for complex mathematical expressions
- - title: Easy Integration
- icon: "🔌"
- details: Simple to integrate with any JavaScript/TypeScript project
- - title: Extensible Design
- icon: "🎯"
- details: Add custom functions and operators to extend functionality
----
diff --git a/docs/playground/index.md b/docs/playground/index.md
deleted file mode 100644
index 8abc7e4..0000000
--- a/docs/playground/index.md
+++ /dev/null
@@ -1,8 +0,0 @@
-# Playground
-
-
-
-:::warning ALERT
-In case you get a wrong answer; Generate a link using the `Share` button and copy it. Open an issue on GitHub describing the error. Add the copied link to the issue description for a reproduction.
-=> [Open new issue](https://github.com/henryhale/xterminal/issues).
-:::
\ No newline at end of file
diff --git a/guide/basics.html b/guide/basics.html
new file mode 100644
index 0000000..d7936b4
--- /dev/null
+++ b/guide/basics.html
@@ -0,0 +1,27 @@
+
+
+
+
+
+ Syntax | MathFlow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/guide/builtin.html b/guide/builtin.html
new file mode 100644
index 0000000..edf15b7
--- /dev/null
+++ b/guide/builtin.html
@@ -0,0 +1,28 @@
+
+
+
+
+
+ Built-ins | MathFlow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/guide/config.html b/guide/config.html
new file mode 100644
index 0000000..0f6d37d
--- /dev/null
+++ b/guide/config.html
@@ -0,0 +1,33 @@
+
+
+
+
+
+ Configuration | MathFlow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/guide/expressions.html b/guide/expressions.html
new file mode 100644
index 0000000..af1ab16
--- /dev/null
+++ b/guide/expressions.html
@@ -0,0 +1,31 @@
+
+
+
+
+
+ Expressions | MathFlow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/guide/getting-started.html b/guide/getting-started.html
new file mode 100644
index 0000000..fcd3884
--- /dev/null
+++ b/guide/getting-started.html
@@ -0,0 +1,37 @@
+
+
+
+
+
+ Getting Started | MathFlow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/guide/index.html b/guide/index.html
new file mode 100644
index 0000000..3889ca2
--- /dev/null
+++ b/guide/index.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ Introduction | MathFlow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/guide/programs.html b/guide/programs.html
new file mode 100644
index 0000000..93c0322
--- /dev/null
+++ b/guide/programs.html
@@ -0,0 +1,65 @@
+
+
+
+
+
+ Programs | MathFlow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/guide/scripts.html b/guide/scripts.html
new file mode 100644
index 0000000..8e21503
--- /dev/null
+++ b/guide/scripts.html
@@ -0,0 +1,32 @@
+
+
+
+
+
+ Scripts | MathFlow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/guide/variables.html b/guide/variables.html
new file mode 100644
index 0000000..ff33076
--- /dev/null
+++ b/guide/variables.html
@@ -0,0 +1,29 @@
+
+
+
+
+
+ Variables | MathFlow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/hashmap.json b/hashmap.json
new file mode 100644
index 0000000..c0e4933
--- /dev/null
+++ b/hashmap.json
@@ -0,0 +1 @@
+{"about_coc.md":"o455OzpI","about_history.md":"wlh0J3IL","about_team.md":"BM9Lmv1P","api_index.md":"jcci5YS1","guide_basics.md":"BCcVR8cV","guide_builtin.md":"BNm9T_ih","guide_config.md":"DBTLwcG7","guide_expressions.md":"4H5Qv7A5","guide_getting-started.md":"DoKtlU_3","guide_index.md":"C1zV6pKq","guide_programs.md":"DRZoiyqi","guide_scripts.md":"Bp8-QSOx","guide_variables.md":"CZuev32-","index.md":"D_fcWQWK","playground_index.md":"DTfCzTOX"}
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..e7ee193
--- /dev/null
+++ b/index.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ MathFlow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Skip to content MathFlow Simplifying Math, Empowering Code.
Ready to elevate your mathematical scripting experience?
📝
Mathematical Expressions Perform standard arithmetic operations with ease.
🛠️
Functions Built-in support for mathematical functions such as sin, cos, tan, abs and more.
✅
Clean and Modern Syntax Readable and easy-to-write syntax for mathematical expressions.
🌿
Abstract Syntax Tree (AST) Utilizes an AST for parsing and interpreting expressions.
+
+
+
+
\ No newline at end of file
diff --git a/docs/public/logo.svg b/logo.svg
similarity index 100%
rename from docs/public/logo.svg
rename to logo.svg
diff --git a/package.json b/package.json
deleted file mode 100644
index 22805b3..0000000
--- a/package.json
+++ /dev/null
@@ -1,25 +0,0 @@
-{
- "name": "mathflowjs.github.io",
- "private": true,
- "version": "0.0.0",
- "description": "A documentation website for mathflowjs hosted on Github Pages",
- "type": "module",
- "scripts": {
- "dev": "vitepress dev docs",
- "build": "vitepress build docs",
- "format": "prettier --write docs",
- "check": "prettier --check docs"
- },
- "author": {
- "name": "Henry Hale",
- "url": "https://github.com/henryhale"
- },
- "license": "MIT",
- "devDependencies": {
- "prettier": "^3.6.2",
- "vitepress": "^1.6.4"
- },
- "dependencies": {
- "mathflow": "^0.3.0"
- }
-}
\ No newline at end of file
diff --git a/playground/index.html b/playground/index.html
new file mode 100644
index 0000000..3a2de07
--- /dev/null
+++ b/playground/index.html
@@ -0,0 +1,25 @@
+
+
+
+
+
+ Playground | MathFlow
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
deleted file mode 100644
index 1041e17..0000000
--- a/pnpm-lock.yaml
+++ /dev/null
@@ -1,1545 +0,0 @@
-lockfileVersion: '9.0'
-
-settings:
- autoInstallPeers: true
- excludeLinksFromLockfile: false
-
-importers:
-
- .:
- dependencies:
- mathflow:
- specifier: ^0.3.0
- version: 0.3.0
- devDependencies:
- prettier:
- specifier: ^3.6.2
- version: 3.6.2
- vitepress:
- specifier: ^1.6.4
- version: 1.6.4(@algolia/client-search@5.35.0)(postcss@8.5.6)(search-insights@2.17.2)
-
-packages:
-
- '@algolia/abtesting@1.1.0':
- resolution: {integrity: sha512-sEyWjw28a/9iluA37KLGu8vjxEIlb60uxznfTUmXImy7H5NvbpSO6yYgmgH5KiD7j+zTUUihiST0jEP12IoXow==}
- engines: {node: '>= 14.0.0'}
-
- '@algolia/autocomplete-core@1.17.7':
- resolution: {integrity: sha512-BjiPOW6ks90UKl7TwMv7oNQMnzU+t/wk9mgIDi6b1tXpUek7MW0lbNOUHpvam9pe3lVCf4xPFT+lK7s+e+fs7Q==}
-
- '@algolia/autocomplete-plugin-algolia-insights@1.17.7':
- resolution: {integrity: sha512-Jca5Ude6yUOuyzjnz57og7Et3aXjbwCSDf/8onLHSQgw1qW3ALl9mrMWaXb5FmPVkV3EtkD2F/+NkT6VHyPu9A==}
- peerDependencies:
- search-insights: '>= 1 < 3'
-
- '@algolia/autocomplete-preset-algolia@1.17.7':
- resolution: {integrity: sha512-ggOQ950+nwbWROq2MOCIL71RE0DdQZsceqrg32UqnhDz8FlO9rL8ONHNsI2R1MH0tkgVIDKI/D0sMiUchsFdWA==}
- peerDependencies:
- '@algolia/client-search': '>= 4.9.1 < 6'
- algoliasearch: '>= 4.9.1 < 6'
-
- '@algolia/autocomplete-shared@1.17.7':
- resolution: {integrity: sha512-o/1Vurr42U/qskRSuhBH+VKxMvkkUVTLU6WZQr+L5lGZZLYWyhdzWjW0iGXY7EkwRTjBqvN2EsR81yCTGV/kmg==}
- peerDependencies:
- '@algolia/client-search': '>= 4.9.1 < 6'
- algoliasearch: '>= 4.9.1 < 6'
-
- '@algolia/client-abtesting@5.35.0':
- resolution: {integrity: sha512-uUdHxbfHdoppDVflCHMxRlj49/IllPwwQ2cQ8DLC4LXr3kY96AHBpW0dMyi6ygkn2MtFCc6BxXCzr668ZRhLBQ==}
- engines: {node: '>= 14.0.0'}
-
- '@algolia/client-analytics@5.35.0':
- resolution: {integrity: sha512-SunAgwa9CamLcRCPnPHx1V2uxdQwJGqb1crYrRWktWUdld0+B2KyakNEeVn5lln4VyeNtW17Ia7V7qBWyM/Skw==}
- engines: {node: '>= 14.0.0'}
-
- '@algolia/client-common@5.35.0':
- resolution: {integrity: sha512-ipE0IuvHu/bg7TjT2s+187kz/E3h5ssfTtjpg1LbWMgxlgiaZIgTTbyynM7NfpSJSKsgQvCQxWjGUO51WSCu7w==}
- engines: {node: '>= 14.0.0'}
-
- '@algolia/client-insights@5.35.0':
- resolution: {integrity: sha512-UNbCXcBpqtzUucxExwTSfAe8gknAJ485NfPN6o1ziHm6nnxx97piIbcBQ3edw823Tej2Wxu1C0xBY06KgeZ7gA==}
- engines: {node: '>= 14.0.0'}
-
- '@algolia/client-personalization@5.35.0':
- resolution: {integrity: sha512-/KWjttZ6UCStt4QnWoDAJ12cKlQ+fkpMtyPmBgSS2WThJQdSV/4UWcqCUqGH7YLbwlj3JjNirCu3Y7uRTClxvA==}
- engines: {node: '>= 14.0.0'}
-
- '@algolia/client-query-suggestions@5.35.0':
- resolution: {integrity: sha512-8oCuJCFf/71IYyvQQC+iu4kgViTODbXDk3m7yMctEncRSRV+u2RtDVlpGGfPlJQOrAY7OONwJlSHkmbbm2Kp/w==}
- engines: {node: '>= 14.0.0'}
-
- '@algolia/client-search@5.35.0':
- resolution: {integrity: sha512-FfmdHTrXhIduWyyuko1YTcGLuicVbhUyRjO3HbXE4aP655yKZgdTIfMhZ/V5VY9bHuxv/fGEh3Od1Lvv2ODNTg==}
- engines: {node: '>= 14.0.0'}
-
- '@algolia/ingestion@1.35.0':
- resolution: {integrity: sha512-gPzACem9IL1Co8mM1LKMhzn1aSJmp+Vp434An4C0OBY4uEJRcqsLN3uLBlY+bYvFg8C8ImwM9YRiKczJXRk0XA==}
- engines: {node: '>= 14.0.0'}
-
- '@algolia/monitoring@1.35.0':
- resolution: {integrity: sha512-w9MGFLB6ashI8BGcQoVt7iLgDIJNCn4OIu0Q0giE3M2ItNrssvb8C0xuwJQyTy1OFZnemG0EB1OvXhIHOvQwWw==}
- engines: {node: '>= 14.0.0'}
-
- '@algolia/recommend@5.35.0':
- resolution: {integrity: sha512-AhrVgaaXAb8Ue0u2nuRWwugt0dL5UmRgS9LXe0Hhz493a8KFeZVUE56RGIV3hAa6tHzmAV7eIoqcWTQvxzlJeQ==}
- engines: {node: '>= 14.0.0'}
-
- '@algolia/requester-browser-xhr@5.35.0':
- resolution: {integrity: sha512-diY415KLJZ6x1Kbwl9u96Jsz0OstE3asjXtJ9pmk1d+5gPuQ5jQyEsgC+WmEXzlec3iuVszm8AzNYYaqw6B+Zw==}
- engines: {node: '>= 14.0.0'}
-
- '@algolia/requester-fetch@5.35.0':
- resolution: {integrity: sha512-uydqnSmpAjrgo8bqhE9N1wgcB98psTRRQXcjc4izwMB7yRl9C8uuAQ/5YqRj04U0mMQ+fdu2fcNF6m9+Z1BzDQ==}
- engines: {node: '>= 14.0.0'}
-
- '@algolia/requester-node-http@5.35.0':
- resolution: {integrity: sha512-RgLX78ojYOrThJHrIiPzT4HW3yfQa0D7K+MQ81rhxqaNyNBu4F1r+72LNHYH/Z+y9I1Mrjrd/c/Ue5zfDgAEjQ==}
- engines: {node: '>= 14.0.0'}
-
- '@babel/helper-string-parser@7.27.1':
- resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-validator-identifier@7.27.1':
- resolution: {integrity: sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==}
- engines: {node: '>=6.9.0'}
-
- '@babel/parser@7.28.0':
- resolution: {integrity: sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==}
- engines: {node: '>=6.0.0'}
- hasBin: true
-
- '@babel/types@7.28.2':
- resolution: {integrity: sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==}
- engines: {node: '>=6.9.0'}
-
- '@docsearch/css@3.8.2':
- resolution: {integrity: sha512-y05ayQFyUmCXze79+56v/4HpycYF3uFqB78pLPrSV5ZKAlDuIAAJNhaRi8tTdRNXh05yxX/TyNnzD6LwSM89vQ==}
-
- '@docsearch/js@3.8.2':
- resolution: {integrity: sha512-Q5wY66qHn0SwA7Taa0aDbHiJvaFJLOJyHmooQ7y8hlwwQLQ/5WwCcoX0g7ii04Qi2DJlHsd0XXzJ8Ypw9+9YmQ==}
-
- '@docsearch/react@3.8.2':
- resolution: {integrity: sha512-xCRrJQlTt8N9GU0DG4ptwHRkfnSnD/YpdeaXe02iKfqs97TkZJv60yE+1eq/tjPcVnTW8dP5qLP7itifFVV5eg==}
- peerDependencies:
- '@types/react': '>= 16.8.0 < 19.0.0'
- react: '>= 16.8.0 < 19.0.0'
- react-dom: '>= 16.8.0 < 19.0.0'
- search-insights: '>= 1 < 3'
- peerDependenciesMeta:
- '@types/react':
- optional: true
- react:
- optional: true
- react-dom:
- optional: true
- search-insights:
- optional: true
-
- '@esbuild/aix-ppc64@0.21.5':
- resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [aix]
-
- '@esbuild/android-arm64@0.21.5':
- resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [android]
-
- '@esbuild/android-arm@0.21.5':
- resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [android]
-
- '@esbuild/android-x64@0.21.5':
- resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [android]
-
- '@esbuild/darwin-arm64@0.21.5':
- resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [darwin]
-
- '@esbuild/darwin-x64@0.21.5':
- resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [darwin]
-
- '@esbuild/freebsd-arm64@0.21.5':
- resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [freebsd]
-
- '@esbuild/freebsd-x64@0.21.5':
- resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [freebsd]
-
- '@esbuild/linux-arm64@0.21.5':
- resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [linux]
-
- '@esbuild/linux-arm@0.21.5':
- resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
- engines: {node: '>=12'}
- cpu: [arm]
- os: [linux]
-
- '@esbuild/linux-ia32@0.21.5':
- resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [linux]
-
- '@esbuild/linux-loong64@0.21.5':
- resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
- engines: {node: '>=12'}
- cpu: [loong64]
- os: [linux]
-
- '@esbuild/linux-mips64el@0.21.5':
- resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
- engines: {node: '>=12'}
- cpu: [mips64el]
- os: [linux]
-
- '@esbuild/linux-ppc64@0.21.5':
- resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
- engines: {node: '>=12'}
- cpu: [ppc64]
- os: [linux]
-
- '@esbuild/linux-riscv64@0.21.5':
- resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
- engines: {node: '>=12'}
- cpu: [riscv64]
- os: [linux]
-
- '@esbuild/linux-s390x@0.21.5':
- resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
- engines: {node: '>=12'}
- cpu: [s390x]
- os: [linux]
-
- '@esbuild/linux-x64@0.21.5':
- resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [linux]
-
- '@esbuild/netbsd-x64@0.21.5':
- resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [netbsd]
-
- '@esbuild/openbsd-x64@0.21.5':
- resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [openbsd]
-
- '@esbuild/sunos-x64@0.21.5':
- resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [sunos]
-
- '@esbuild/win32-arm64@0.21.5':
- resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
- engines: {node: '>=12'}
- cpu: [arm64]
- os: [win32]
-
- '@esbuild/win32-ia32@0.21.5':
- resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
- engines: {node: '>=12'}
- cpu: [ia32]
- os: [win32]
-
- '@esbuild/win32-x64@0.21.5':
- resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
- engines: {node: '>=12'}
- cpu: [x64]
- os: [win32]
-
- '@iconify-json/simple-icons@1.2.47':
- resolution: {integrity: sha512-wa/2O7G4sBmwSEWWLh5C+HeY00lVOoWYRKJOYQtk7lAbQrHUReD1ijiGOyTynV1YavxtNueL1CBA1UZmYJfOrQ==}
-
- '@iconify/types@2.0.0':
- resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==}
-
- '@jridgewell/sourcemap-codec@1.5.0':
- resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
-
- '@rollup/rollup-android-arm-eabi@4.22.4':
- resolution: {integrity: sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==}
- cpu: [arm]
- os: [android]
-
- '@rollup/rollup-android-arm64@4.22.4':
- resolution: {integrity: sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==}
- cpu: [arm64]
- os: [android]
-
- '@rollup/rollup-darwin-arm64@4.22.4':
- resolution: {integrity: sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==}
- cpu: [arm64]
- os: [darwin]
-
- '@rollup/rollup-darwin-x64@4.22.4':
- resolution: {integrity: sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==}
- cpu: [x64]
- os: [darwin]
-
- '@rollup/rollup-linux-arm-gnueabihf@4.22.4':
- resolution: {integrity: sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==}
- cpu: [arm]
- os: [linux]
-
- '@rollup/rollup-linux-arm-musleabihf@4.22.4':
- resolution: {integrity: sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==}
- cpu: [arm]
- os: [linux]
-
- '@rollup/rollup-linux-arm64-gnu@4.22.4':
- resolution: {integrity: sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==}
- cpu: [arm64]
- os: [linux]
-
- '@rollup/rollup-linux-arm64-musl@4.22.4':
- resolution: {integrity: sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==}
- cpu: [arm64]
- os: [linux]
-
- '@rollup/rollup-linux-powerpc64le-gnu@4.22.4':
- resolution: {integrity: sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==}
- cpu: [ppc64]
- os: [linux]
-
- '@rollup/rollup-linux-riscv64-gnu@4.22.4':
- resolution: {integrity: sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==}
- cpu: [riscv64]
- os: [linux]
-
- '@rollup/rollup-linux-s390x-gnu@4.22.4':
- resolution: {integrity: sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==}
- cpu: [s390x]
- os: [linux]
-
- '@rollup/rollup-linux-x64-gnu@4.22.4':
- resolution: {integrity: sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==}
- cpu: [x64]
- os: [linux]
-
- '@rollup/rollup-linux-x64-musl@4.22.4':
- resolution: {integrity: sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==}
- cpu: [x64]
- os: [linux]
-
- '@rollup/rollup-win32-arm64-msvc@4.22.4':
- resolution: {integrity: sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==}
- cpu: [arm64]
- os: [win32]
-
- '@rollup/rollup-win32-ia32-msvc@4.22.4':
- resolution: {integrity: sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==}
- cpu: [ia32]
- os: [win32]
-
- '@rollup/rollup-win32-x64-msvc@4.22.4':
- resolution: {integrity: sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==}
- cpu: [x64]
- os: [win32]
-
- '@shikijs/core@2.5.0':
- resolution: {integrity: sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==}
-
- '@shikijs/engine-javascript@2.5.0':
- resolution: {integrity: sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==}
-
- '@shikijs/engine-oniguruma@2.5.0':
- resolution: {integrity: sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==}
-
- '@shikijs/langs@2.5.0':
- resolution: {integrity: sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==}
-
- '@shikijs/themes@2.5.0':
- resolution: {integrity: sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==}
-
- '@shikijs/transformers@2.5.0':
- resolution: {integrity: sha512-SI494W5X60CaUwgi8u4q4m4s3YAFSxln3tzNjOSYqq54wlVgz0/NbbXEb3mdLbqMBztcmS7bVTaEd2w0qMmfeg==}
-
- '@shikijs/types@2.5.0':
- resolution: {integrity: sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==}
-
- '@shikijs/vscode-textmate@10.0.2':
- resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==}
-
- '@types/estree@1.0.5':
- resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
-
- '@types/hast@3.0.4':
- resolution: {integrity: sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==}
-
- '@types/linkify-it@5.0.0':
- resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
-
- '@types/markdown-it@14.1.2':
- resolution: {integrity: sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==}
-
- '@types/mdast@4.0.4':
- resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
-
- '@types/mdurl@2.0.0':
- resolution: {integrity: sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==}
-
- '@types/unist@3.0.3':
- resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==}
-
- '@types/web-bluetooth@0.0.21':
- resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==}
-
- '@ungap/structured-clone@1.2.0':
- resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==}
-
- '@vitejs/plugin-vue@5.2.4':
- resolution: {integrity: sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==}
- engines: {node: ^18.0.0 || >=20.0.0}
- peerDependencies:
- vite: ^5.0.0 || ^6.0.0
- vue: ^3.2.25
-
- '@vue/compiler-core@3.5.18':
- resolution: {integrity: sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==}
-
- '@vue/compiler-dom@3.5.18':
- resolution: {integrity: sha512-RMbU6NTU70++B1JyVJbNbeFkK+A+Q7y9XKE2EM4NLGm2WFR8x9MbAtWxPPLdm0wUkuZv9trpwfSlL6tjdIa1+A==}
-
- '@vue/compiler-sfc@3.5.18':
- resolution: {integrity: sha512-5aBjvGqsWs+MoxswZPoTB9nSDb3dhd1x30xrrltKujlCxo48j8HGDNj3QPhF4VIS0VQDUrA1xUfp2hEa+FNyXA==}
-
- '@vue/compiler-ssr@3.5.18':
- resolution: {integrity: sha512-xM16Ak7rSWHkM3m22NlmcdIM+K4BMyFARAfV9hYFl+SFuRzrZ3uGMNW05kA5pmeMa0X9X963Kgou7ufdbpOP9g==}
-
- '@vue/devtools-api@7.7.7':
- resolution: {integrity: sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==}
-
- '@vue/devtools-kit@7.7.7':
- resolution: {integrity: sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==}
-
- '@vue/devtools-shared@7.7.7':
- resolution: {integrity: sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==}
-
- '@vue/reactivity@3.5.18':
- resolution: {integrity: sha512-x0vPO5Imw+3sChLM5Y+B6G1zPjwdOri9e8V21NnTnlEvkxatHEH5B5KEAJcjuzQ7BsjGrKtfzuQ5eQwXh8HXBg==}
-
- '@vue/runtime-core@3.5.18':
- resolution: {integrity: sha512-DUpHa1HpeOQEt6+3nheUfqVXRog2kivkXHUhoqJiKR33SO4x+a5uNOMkV487WPerQkL0vUuRvq/7JhRgLW3S+w==}
-
- '@vue/runtime-dom@3.5.18':
- resolution: {integrity: sha512-YwDj71iV05j4RnzZnZtGaXwPoUWeRsqinblgVJwR8XTXYZ9D5PbahHQgsbmzUvCWNF6x7siQ89HgnX5eWkr3mw==}
-
- '@vue/server-renderer@3.5.18':
- resolution: {integrity: sha512-PvIHLUoWgSbDG7zLHqSqaCoZvHi6NNmfVFOqO+OnwvqMz/tqQr3FuGWS8ufluNddk7ZLBJYMrjcw1c6XzR12mA==}
- peerDependencies:
- vue: 3.5.18
-
- '@vue/shared@3.5.18':
- resolution: {integrity: sha512-cZy8Dq+uuIXbxCZpuLd2GJdeSO/lIzIspC2WtkqIpje5QyFbvLaI5wZtdUjLHjGZrlVX6GilejatWwVYYRc8tA==}
-
- '@vueuse/core@12.8.2':
- resolution: {integrity: sha512-HbvCmZdzAu3VGi/pWYm5Ut+Kd9mn1ZHnn4L5G8kOQTPs/IwIAmJoBrmYk2ckLArgMXZj0AW3n5CAejLUO+PhdQ==}
-
- '@vueuse/integrations@12.8.2':
- resolution: {integrity: sha512-fbGYivgK5uBTRt7p5F3zy6VrETlV9RtZjBqd1/HxGdjdckBgBM4ugP8LHpjolqTj14TXTxSK1ZfgPbHYyGuH7g==}
- peerDependencies:
- async-validator: ^4
- axios: ^1
- change-case: ^5
- drauu: ^0.4
- focus-trap: ^7
- fuse.js: ^7
- idb-keyval: ^6
- jwt-decode: ^4
- nprogress: ^0.2
- qrcode: ^1.5
- sortablejs: ^1
- universal-cookie: ^7
- peerDependenciesMeta:
- async-validator:
- optional: true
- axios:
- optional: true
- change-case:
- optional: true
- drauu:
- optional: true
- focus-trap:
- optional: true
- fuse.js:
- optional: true
- idb-keyval:
- optional: true
- jwt-decode:
- optional: true
- nprogress:
- optional: true
- qrcode:
- optional: true
- sortablejs:
- optional: true
- universal-cookie:
- optional: true
-
- '@vueuse/metadata@12.8.2':
- resolution: {integrity: sha512-rAyLGEuoBJ/Il5AmFHiziCPdQzRt88VxR+Y/A/QhJ1EWtWqPBBAxTAFaSkviwEuOEZNtW8pvkPgoCZQ+HxqW1A==}
-
- '@vueuse/shared@12.8.2':
- resolution: {integrity: sha512-dznP38YzxZoNloI0qpEfpkms8knDtaoQ6Y/sfS0L7Yki4zh40LFHEhur0odJC6xTHG5dxWVPiUWBXn+wCG2s5w==}
-
- algoliasearch@5.35.0:
- resolution: {integrity: sha512-Y+moNhsqgLmvJdgTsO4GZNgsaDWv8AOGAaPeIeHKlDn/XunoAqYbA+XNpBd1dW8GOXAUDyxC9Rxc7AV4kpFcIg==}
- engines: {node: '>= 14.0.0'}
-
- birpc@2.5.0:
- resolution: {integrity: sha512-VSWO/W6nNQdyP520F1mhf+Lc2f8pjGQOtoHHm7Ze8Go1kX7akpVIrtTa0fn+HB0QJEDVacl6aO08YE0PgXfdnQ==}
-
- ccount@2.0.1:
- resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
-
- character-entities-html4@2.1.0:
- resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
-
- character-entities-legacy@3.0.0:
- resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
-
- comma-separated-tokens@2.0.3:
- resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
-
- copy-anything@3.0.5:
- resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==}
- engines: {node: '>=12.13'}
-
- csstype@3.1.3:
- resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
-
- dequal@2.0.3:
- resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==}
- engines: {node: '>=6'}
-
- devlop@1.1.0:
- resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
-
- emoji-regex-xs@1.0.0:
- resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==}
-
- entities@4.5.0:
- resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
- engines: {node: '>=0.12'}
-
- esbuild@0.21.5:
- resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
- engines: {node: '>=12'}
- hasBin: true
-
- estree-walker@2.0.2:
- resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
-
- focus-trap@7.6.5:
- resolution: {integrity: sha512-7Ke1jyybbbPZyZXFxEftUtxFGLMpE2n6A+z//m4CRDlj0hW+o3iYSmh8nFlYMurOiJVDmJRilUQtJr08KfIxlg==}
-
- fsevents@2.3.3:
- resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
- hast-util-to-html@9.0.5:
- resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==}
-
- hast-util-whitespace@3.0.0:
- resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==}
-
- hookable@5.5.3:
- resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==}
-
- html-void-elements@3.0.0:
- resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
-
- is-what@4.1.16:
- resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==}
- engines: {node: '>=12.13'}
-
- magic-string@0.30.17:
- resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
-
- mark.js@8.11.1:
- resolution: {integrity: sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==}
-
- mathflow@0.3.0:
- resolution: {integrity: sha512-M/2dNJwL9MzskEPyzjM31y4BGmyQbveXZfTYpZuu94XNf53ELBzSPs6XRCLBZDPguceGg35gwLLXSgQzp57vow==}
-
- mdast-util-to-hast@13.2.0:
- resolution: {integrity: sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==}
-
- micromark-util-character@2.1.0:
- resolution: {integrity: sha512-KvOVV+X1yLBfs9dCBSopq/+G1PcgT3lAK07mC4BzXi5E7ahzMAF8oIupDDJ6mievI6F+lAATkbQQlQixJfT3aQ==}
-
- micromark-util-encode@2.0.0:
- resolution: {integrity: sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==}
-
- micromark-util-sanitize-uri@2.0.0:
- resolution: {integrity: sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==}
-
- micromark-util-symbol@2.0.0:
- resolution: {integrity: sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==}
-
- micromark-util-types@2.0.0:
- resolution: {integrity: sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==}
-
- minisearch@7.1.2:
- resolution: {integrity: sha512-R1Pd9eF+MD5JYDDSPAp/q1ougKglm14uEkPMvQ/05RGmx6G9wvmLTrTI/Q5iPNJLYqNdsDQ7qTGIcNWR+FrHmA==}
-
- mitt@3.0.1:
- resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==}
-
- nanoid@3.3.11:
- resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
- engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
- hasBin: true
-
- oniguruma-to-es@3.1.1:
- resolution: {integrity: sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==}
-
- perfect-debounce@1.0.0:
- resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==}
-
- picocolors@1.1.1:
- resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
-
- postcss@8.5.6:
- resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
- engines: {node: ^10 || ^12 || >=14}
-
- preact@10.24.0:
- resolution: {integrity: sha512-aK8Cf+jkfyuZ0ZZRG9FbYqwmEiGQ4y/PUO4SuTWoyWL244nZZh7bd5h2APd4rSNDYTBNghg1L+5iJN3Skxtbsw==}
-
- prettier@3.6.2:
- resolution: {integrity: sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==}
- engines: {node: '>=14'}
- hasBin: true
-
- property-information@7.1.0:
- resolution: {integrity: sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==}
-
- regex-recursion@6.0.2:
- resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==}
-
- regex-utilities@2.3.0:
- resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
-
- regex@6.0.1:
- resolution: {integrity: sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==}
-
- rfdc@1.4.1:
- resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==}
-
- rollup@4.22.4:
- resolution: {integrity: sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==}
- engines: {node: '>=18.0.0', npm: '>=8.0.0'}
- hasBin: true
-
- search-insights@2.17.2:
- resolution: {integrity: sha512-zFNpOpUO+tY2D85KrxJ+aqwnIfdEGi06UH2+xEb+Bp9Mwznmauqc9djbnBibJO5mpfUPPa8st6Sx65+vbeO45g==}
-
- shiki@2.5.0:
- resolution: {integrity: sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==}
-
- source-map-js@1.2.1:
- resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
- engines: {node: '>=0.10.0'}
-
- space-separated-tokens@2.0.2:
- resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
-
- speakingurl@14.0.1:
- resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==}
- engines: {node: '>=0.10.0'}
-
- stringify-entities@4.0.4:
- resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==}
-
- superjson@2.2.2:
- resolution: {integrity: sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==}
- engines: {node: '>=16'}
-
- tabbable@6.2.0:
- resolution: {integrity: sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==}
-
- trim-lines@3.0.1:
- resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==}
-
- unist-util-is@6.0.0:
- resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
-
- unist-util-position@5.0.0:
- resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==}
-
- unist-util-stringify-position@4.0.0:
- resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
-
- unist-util-visit-parents@6.0.1:
- resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
-
- unist-util-visit@5.0.0:
- resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
-
- vfile-message@4.0.2:
- resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
-
- vfile@6.0.3:
- resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
-
- vite@5.4.19:
- resolution: {integrity: sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==}
- engines: {node: ^18.0.0 || >=20.0.0}
- hasBin: true
- peerDependencies:
- '@types/node': ^18.0.0 || >=20.0.0
- less: '*'
- lightningcss: ^1.21.0
- sass: '*'
- sass-embedded: '*'
- stylus: '*'
- sugarss: '*'
- terser: ^5.4.0
- peerDependenciesMeta:
- '@types/node':
- optional: true
- less:
- optional: true
- lightningcss:
- optional: true
- sass:
- optional: true
- sass-embedded:
- optional: true
- stylus:
- optional: true
- sugarss:
- optional: true
- terser:
- optional: true
-
- vitepress@1.6.4:
- resolution: {integrity: sha512-+2ym1/+0VVrbhNyRoFFesVvBvHAVMZMK0rw60E3X/5349M1GuVdKeazuksqopEdvkKwKGs21Q729jX81/bkBJg==}
- hasBin: true
- peerDependencies:
- markdown-it-mathjax3: ^4
- postcss: ^8
- peerDependenciesMeta:
- markdown-it-mathjax3:
- optional: true
- postcss:
- optional: true
-
- vue@3.5.18:
- resolution: {integrity: sha512-7W4Y4ZbMiQ3SEo+m9lnoNpV9xG7QVMLa+/0RFwwiAVkeYoyGXqWE85jabU4pllJNUzqfLShJ5YLptewhCWUgNA==}
- peerDependencies:
- typescript: '*'
- peerDependenciesMeta:
- typescript:
- optional: true
-
- zwitch@2.0.4:
- resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
-
-snapshots:
-
- '@algolia/abtesting@1.1.0':
- dependencies:
- '@algolia/client-common': 5.35.0
- '@algolia/requester-browser-xhr': 5.35.0
- '@algolia/requester-fetch': 5.35.0
- '@algolia/requester-node-http': 5.35.0
-
- '@algolia/autocomplete-core@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.2)':
- dependencies:
- '@algolia/autocomplete-plugin-algolia-insights': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.2)
- '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)
- transitivePeerDependencies:
- - '@algolia/client-search'
- - algoliasearch
- - search-insights
-
- '@algolia/autocomplete-plugin-algolia-insights@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.2)':
- dependencies:
- '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)
- search-insights: 2.17.2
- transitivePeerDependencies:
- - '@algolia/client-search'
- - algoliasearch
-
- '@algolia/autocomplete-preset-algolia@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)':
- dependencies:
- '@algolia/autocomplete-shared': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)
- '@algolia/client-search': 5.35.0
- algoliasearch: 5.35.0
-
- '@algolia/autocomplete-shared@1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)':
- dependencies:
- '@algolia/client-search': 5.35.0
- algoliasearch: 5.35.0
-
- '@algolia/client-abtesting@5.35.0':
- dependencies:
- '@algolia/client-common': 5.35.0
- '@algolia/requester-browser-xhr': 5.35.0
- '@algolia/requester-fetch': 5.35.0
- '@algolia/requester-node-http': 5.35.0
-
- '@algolia/client-analytics@5.35.0':
- dependencies:
- '@algolia/client-common': 5.35.0
- '@algolia/requester-browser-xhr': 5.35.0
- '@algolia/requester-fetch': 5.35.0
- '@algolia/requester-node-http': 5.35.0
-
- '@algolia/client-common@5.35.0': {}
-
- '@algolia/client-insights@5.35.0':
- dependencies:
- '@algolia/client-common': 5.35.0
- '@algolia/requester-browser-xhr': 5.35.0
- '@algolia/requester-fetch': 5.35.0
- '@algolia/requester-node-http': 5.35.0
-
- '@algolia/client-personalization@5.35.0':
- dependencies:
- '@algolia/client-common': 5.35.0
- '@algolia/requester-browser-xhr': 5.35.0
- '@algolia/requester-fetch': 5.35.0
- '@algolia/requester-node-http': 5.35.0
-
- '@algolia/client-query-suggestions@5.35.0':
- dependencies:
- '@algolia/client-common': 5.35.0
- '@algolia/requester-browser-xhr': 5.35.0
- '@algolia/requester-fetch': 5.35.0
- '@algolia/requester-node-http': 5.35.0
-
- '@algolia/client-search@5.35.0':
- dependencies:
- '@algolia/client-common': 5.35.0
- '@algolia/requester-browser-xhr': 5.35.0
- '@algolia/requester-fetch': 5.35.0
- '@algolia/requester-node-http': 5.35.0
-
- '@algolia/ingestion@1.35.0':
- dependencies:
- '@algolia/client-common': 5.35.0
- '@algolia/requester-browser-xhr': 5.35.0
- '@algolia/requester-fetch': 5.35.0
- '@algolia/requester-node-http': 5.35.0
-
- '@algolia/monitoring@1.35.0':
- dependencies:
- '@algolia/client-common': 5.35.0
- '@algolia/requester-browser-xhr': 5.35.0
- '@algolia/requester-fetch': 5.35.0
- '@algolia/requester-node-http': 5.35.0
-
- '@algolia/recommend@5.35.0':
- dependencies:
- '@algolia/client-common': 5.35.0
- '@algolia/requester-browser-xhr': 5.35.0
- '@algolia/requester-fetch': 5.35.0
- '@algolia/requester-node-http': 5.35.0
-
- '@algolia/requester-browser-xhr@5.35.0':
- dependencies:
- '@algolia/client-common': 5.35.0
-
- '@algolia/requester-fetch@5.35.0':
- dependencies:
- '@algolia/client-common': 5.35.0
-
- '@algolia/requester-node-http@5.35.0':
- dependencies:
- '@algolia/client-common': 5.35.0
-
- '@babel/helper-string-parser@7.27.1': {}
-
- '@babel/helper-validator-identifier@7.27.1': {}
-
- '@babel/parser@7.28.0':
- dependencies:
- '@babel/types': 7.28.2
-
- '@babel/types@7.28.2':
- dependencies:
- '@babel/helper-string-parser': 7.27.1
- '@babel/helper-validator-identifier': 7.27.1
-
- '@docsearch/css@3.8.2': {}
-
- '@docsearch/js@3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.2)':
- dependencies:
- '@docsearch/react': 3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.2)
- preact: 10.24.0
- transitivePeerDependencies:
- - '@algolia/client-search'
- - '@types/react'
- - react
- - react-dom
- - search-insights
-
- '@docsearch/react@3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.2)':
- dependencies:
- '@algolia/autocomplete-core': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)(search-insights@2.17.2)
- '@algolia/autocomplete-preset-algolia': 1.17.7(@algolia/client-search@5.35.0)(algoliasearch@5.35.0)
- '@docsearch/css': 3.8.2
- algoliasearch: 5.35.0
- optionalDependencies:
- search-insights: 2.17.2
- transitivePeerDependencies:
- - '@algolia/client-search'
-
- '@esbuild/aix-ppc64@0.21.5':
- optional: true
-
- '@esbuild/android-arm64@0.21.5':
- optional: true
-
- '@esbuild/android-arm@0.21.5':
- optional: true
-
- '@esbuild/android-x64@0.21.5':
- optional: true
-
- '@esbuild/darwin-arm64@0.21.5':
- optional: true
-
- '@esbuild/darwin-x64@0.21.5':
- optional: true
-
- '@esbuild/freebsd-arm64@0.21.5':
- optional: true
-
- '@esbuild/freebsd-x64@0.21.5':
- optional: true
-
- '@esbuild/linux-arm64@0.21.5':
- optional: true
-
- '@esbuild/linux-arm@0.21.5':
- optional: true
-
- '@esbuild/linux-ia32@0.21.5':
- optional: true
-
- '@esbuild/linux-loong64@0.21.5':
- optional: true
-
- '@esbuild/linux-mips64el@0.21.5':
- optional: true
-
- '@esbuild/linux-ppc64@0.21.5':
- optional: true
-
- '@esbuild/linux-riscv64@0.21.5':
- optional: true
-
- '@esbuild/linux-s390x@0.21.5':
- optional: true
-
- '@esbuild/linux-x64@0.21.5':
- optional: true
-
- '@esbuild/netbsd-x64@0.21.5':
- optional: true
-
- '@esbuild/openbsd-x64@0.21.5':
- optional: true
-
- '@esbuild/sunos-x64@0.21.5':
- optional: true
-
- '@esbuild/win32-arm64@0.21.5':
- optional: true
-
- '@esbuild/win32-ia32@0.21.5':
- optional: true
-
- '@esbuild/win32-x64@0.21.5':
- optional: true
-
- '@iconify-json/simple-icons@1.2.47':
- dependencies:
- '@iconify/types': 2.0.0
-
- '@iconify/types@2.0.0': {}
-
- '@jridgewell/sourcemap-codec@1.5.0': {}
-
- '@rollup/rollup-android-arm-eabi@4.22.4':
- optional: true
-
- '@rollup/rollup-android-arm64@4.22.4':
- optional: true
-
- '@rollup/rollup-darwin-arm64@4.22.4':
- optional: true
-
- '@rollup/rollup-darwin-x64@4.22.4':
- optional: true
-
- '@rollup/rollup-linux-arm-gnueabihf@4.22.4':
- optional: true
-
- '@rollup/rollup-linux-arm-musleabihf@4.22.4':
- optional: true
-
- '@rollup/rollup-linux-arm64-gnu@4.22.4':
- optional: true
-
- '@rollup/rollup-linux-arm64-musl@4.22.4':
- optional: true
-
- '@rollup/rollup-linux-powerpc64le-gnu@4.22.4':
- optional: true
-
- '@rollup/rollup-linux-riscv64-gnu@4.22.4':
- optional: true
-
- '@rollup/rollup-linux-s390x-gnu@4.22.4':
- optional: true
-
- '@rollup/rollup-linux-x64-gnu@4.22.4':
- optional: true
-
- '@rollup/rollup-linux-x64-musl@4.22.4':
- optional: true
-
- '@rollup/rollup-win32-arm64-msvc@4.22.4':
- optional: true
-
- '@rollup/rollup-win32-ia32-msvc@4.22.4':
- optional: true
-
- '@rollup/rollup-win32-x64-msvc@4.22.4':
- optional: true
-
- '@shikijs/core@2.5.0':
- dependencies:
- '@shikijs/engine-javascript': 2.5.0
- '@shikijs/engine-oniguruma': 2.5.0
- '@shikijs/types': 2.5.0
- '@shikijs/vscode-textmate': 10.0.2
- '@types/hast': 3.0.4
- hast-util-to-html: 9.0.5
-
- '@shikijs/engine-javascript@2.5.0':
- dependencies:
- '@shikijs/types': 2.5.0
- '@shikijs/vscode-textmate': 10.0.2
- oniguruma-to-es: 3.1.1
-
- '@shikijs/engine-oniguruma@2.5.0':
- dependencies:
- '@shikijs/types': 2.5.0
- '@shikijs/vscode-textmate': 10.0.2
-
- '@shikijs/langs@2.5.0':
- dependencies:
- '@shikijs/types': 2.5.0
-
- '@shikijs/themes@2.5.0':
- dependencies:
- '@shikijs/types': 2.5.0
-
- '@shikijs/transformers@2.5.0':
- dependencies:
- '@shikijs/core': 2.5.0
- '@shikijs/types': 2.5.0
-
- '@shikijs/types@2.5.0':
- dependencies:
- '@shikijs/vscode-textmate': 10.0.2
- '@types/hast': 3.0.4
-
- '@shikijs/vscode-textmate@10.0.2': {}
-
- '@types/estree@1.0.5': {}
-
- '@types/hast@3.0.4':
- dependencies:
- '@types/unist': 3.0.3
-
- '@types/linkify-it@5.0.0': {}
-
- '@types/markdown-it@14.1.2':
- dependencies:
- '@types/linkify-it': 5.0.0
- '@types/mdurl': 2.0.0
-
- '@types/mdast@4.0.4':
- dependencies:
- '@types/unist': 3.0.3
-
- '@types/mdurl@2.0.0': {}
-
- '@types/unist@3.0.3': {}
-
- '@types/web-bluetooth@0.0.21': {}
-
- '@ungap/structured-clone@1.2.0': {}
-
- '@vitejs/plugin-vue@5.2.4(vite@5.4.19)(vue@3.5.18)':
- dependencies:
- vite: 5.4.19
- vue: 3.5.18
-
- '@vue/compiler-core@3.5.18':
- dependencies:
- '@babel/parser': 7.28.0
- '@vue/shared': 3.5.18
- entities: 4.5.0
- estree-walker: 2.0.2
- source-map-js: 1.2.1
-
- '@vue/compiler-dom@3.5.18':
- dependencies:
- '@vue/compiler-core': 3.5.18
- '@vue/shared': 3.5.18
-
- '@vue/compiler-sfc@3.5.18':
- dependencies:
- '@babel/parser': 7.28.0
- '@vue/compiler-core': 3.5.18
- '@vue/compiler-dom': 3.5.18
- '@vue/compiler-ssr': 3.5.18
- '@vue/shared': 3.5.18
- estree-walker: 2.0.2
- magic-string: 0.30.17
- postcss: 8.5.6
- source-map-js: 1.2.1
-
- '@vue/compiler-ssr@3.5.18':
- dependencies:
- '@vue/compiler-dom': 3.5.18
- '@vue/shared': 3.5.18
-
- '@vue/devtools-api@7.7.7':
- dependencies:
- '@vue/devtools-kit': 7.7.7
-
- '@vue/devtools-kit@7.7.7':
- dependencies:
- '@vue/devtools-shared': 7.7.7
- birpc: 2.5.0
- hookable: 5.5.3
- mitt: 3.0.1
- perfect-debounce: 1.0.0
- speakingurl: 14.0.1
- superjson: 2.2.2
-
- '@vue/devtools-shared@7.7.7':
- dependencies:
- rfdc: 1.4.1
-
- '@vue/reactivity@3.5.18':
- dependencies:
- '@vue/shared': 3.5.18
-
- '@vue/runtime-core@3.5.18':
- dependencies:
- '@vue/reactivity': 3.5.18
- '@vue/shared': 3.5.18
-
- '@vue/runtime-dom@3.5.18':
- dependencies:
- '@vue/reactivity': 3.5.18
- '@vue/runtime-core': 3.5.18
- '@vue/shared': 3.5.18
- csstype: 3.1.3
-
- '@vue/server-renderer@3.5.18(vue@3.5.18)':
- dependencies:
- '@vue/compiler-ssr': 3.5.18
- '@vue/shared': 3.5.18
- vue: 3.5.18
-
- '@vue/shared@3.5.18': {}
-
- '@vueuse/core@12.8.2':
- dependencies:
- '@types/web-bluetooth': 0.0.21
- '@vueuse/metadata': 12.8.2
- '@vueuse/shared': 12.8.2
- vue: 3.5.18
- transitivePeerDependencies:
- - typescript
-
- '@vueuse/integrations@12.8.2(focus-trap@7.6.5)':
- dependencies:
- '@vueuse/core': 12.8.2
- '@vueuse/shared': 12.8.2
- vue: 3.5.18
- optionalDependencies:
- focus-trap: 7.6.5
- transitivePeerDependencies:
- - typescript
-
- '@vueuse/metadata@12.8.2': {}
-
- '@vueuse/shared@12.8.2':
- dependencies:
- vue: 3.5.18
- transitivePeerDependencies:
- - typescript
-
- algoliasearch@5.35.0:
- dependencies:
- '@algolia/abtesting': 1.1.0
- '@algolia/client-abtesting': 5.35.0
- '@algolia/client-analytics': 5.35.0
- '@algolia/client-common': 5.35.0
- '@algolia/client-insights': 5.35.0
- '@algolia/client-personalization': 5.35.0
- '@algolia/client-query-suggestions': 5.35.0
- '@algolia/client-search': 5.35.0
- '@algolia/ingestion': 1.35.0
- '@algolia/monitoring': 1.35.0
- '@algolia/recommend': 5.35.0
- '@algolia/requester-browser-xhr': 5.35.0
- '@algolia/requester-fetch': 5.35.0
- '@algolia/requester-node-http': 5.35.0
-
- birpc@2.5.0: {}
-
- ccount@2.0.1: {}
-
- character-entities-html4@2.1.0: {}
-
- character-entities-legacy@3.0.0: {}
-
- comma-separated-tokens@2.0.3: {}
-
- copy-anything@3.0.5:
- dependencies:
- is-what: 4.1.16
-
- csstype@3.1.3: {}
-
- dequal@2.0.3: {}
-
- devlop@1.1.0:
- dependencies:
- dequal: 2.0.3
-
- emoji-regex-xs@1.0.0: {}
-
- entities@4.5.0: {}
-
- esbuild@0.21.5:
- optionalDependencies:
- '@esbuild/aix-ppc64': 0.21.5
- '@esbuild/android-arm': 0.21.5
- '@esbuild/android-arm64': 0.21.5
- '@esbuild/android-x64': 0.21.5
- '@esbuild/darwin-arm64': 0.21.5
- '@esbuild/darwin-x64': 0.21.5
- '@esbuild/freebsd-arm64': 0.21.5
- '@esbuild/freebsd-x64': 0.21.5
- '@esbuild/linux-arm': 0.21.5
- '@esbuild/linux-arm64': 0.21.5
- '@esbuild/linux-ia32': 0.21.5
- '@esbuild/linux-loong64': 0.21.5
- '@esbuild/linux-mips64el': 0.21.5
- '@esbuild/linux-ppc64': 0.21.5
- '@esbuild/linux-riscv64': 0.21.5
- '@esbuild/linux-s390x': 0.21.5
- '@esbuild/linux-x64': 0.21.5
- '@esbuild/netbsd-x64': 0.21.5
- '@esbuild/openbsd-x64': 0.21.5
- '@esbuild/sunos-x64': 0.21.5
- '@esbuild/win32-arm64': 0.21.5
- '@esbuild/win32-ia32': 0.21.5
- '@esbuild/win32-x64': 0.21.5
-
- estree-walker@2.0.2: {}
-
- focus-trap@7.6.5:
- dependencies:
- tabbable: 6.2.0
-
- fsevents@2.3.3:
- optional: true
-
- hast-util-to-html@9.0.5:
- dependencies:
- '@types/hast': 3.0.4
- '@types/unist': 3.0.3
- ccount: 2.0.1
- comma-separated-tokens: 2.0.3
- hast-util-whitespace: 3.0.0
- html-void-elements: 3.0.0
- mdast-util-to-hast: 13.2.0
- property-information: 7.1.0
- space-separated-tokens: 2.0.2
- stringify-entities: 4.0.4
- zwitch: 2.0.4
-
- hast-util-whitespace@3.0.0:
- dependencies:
- '@types/hast': 3.0.4
-
- hookable@5.5.3: {}
-
- html-void-elements@3.0.0: {}
-
- is-what@4.1.16: {}
-
- magic-string@0.30.17:
- dependencies:
- '@jridgewell/sourcemap-codec': 1.5.0
-
- mark.js@8.11.1: {}
-
- mathflow@0.3.0: {}
-
- mdast-util-to-hast@13.2.0:
- dependencies:
- '@types/hast': 3.0.4
- '@types/mdast': 4.0.4
- '@ungap/structured-clone': 1.2.0
- devlop: 1.1.0
- micromark-util-sanitize-uri: 2.0.0
- trim-lines: 3.0.1
- unist-util-position: 5.0.0
- unist-util-visit: 5.0.0
- vfile: 6.0.3
-
- micromark-util-character@2.1.0:
- dependencies:
- micromark-util-symbol: 2.0.0
- micromark-util-types: 2.0.0
-
- micromark-util-encode@2.0.0: {}
-
- micromark-util-sanitize-uri@2.0.0:
- dependencies:
- micromark-util-character: 2.1.0
- micromark-util-encode: 2.0.0
- micromark-util-symbol: 2.0.0
-
- micromark-util-symbol@2.0.0: {}
-
- micromark-util-types@2.0.0: {}
-
- minisearch@7.1.2: {}
-
- mitt@3.0.1: {}
-
- nanoid@3.3.11: {}
-
- oniguruma-to-es@3.1.1:
- dependencies:
- emoji-regex-xs: 1.0.0
- regex: 6.0.1
- regex-recursion: 6.0.2
-
- perfect-debounce@1.0.0: {}
-
- picocolors@1.1.1: {}
-
- postcss@8.5.6:
- dependencies:
- nanoid: 3.3.11
- picocolors: 1.1.1
- source-map-js: 1.2.1
-
- preact@10.24.0: {}
-
- prettier@3.6.2: {}
-
- property-information@7.1.0: {}
-
- regex-recursion@6.0.2:
- dependencies:
- regex-utilities: 2.3.0
-
- regex-utilities@2.3.0: {}
-
- regex@6.0.1:
- dependencies:
- regex-utilities: 2.3.0
-
- rfdc@1.4.1: {}
-
- rollup@4.22.4:
- dependencies:
- '@types/estree': 1.0.5
- optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.22.4
- '@rollup/rollup-android-arm64': 4.22.4
- '@rollup/rollup-darwin-arm64': 4.22.4
- '@rollup/rollup-darwin-x64': 4.22.4
- '@rollup/rollup-linux-arm-gnueabihf': 4.22.4
- '@rollup/rollup-linux-arm-musleabihf': 4.22.4
- '@rollup/rollup-linux-arm64-gnu': 4.22.4
- '@rollup/rollup-linux-arm64-musl': 4.22.4
- '@rollup/rollup-linux-powerpc64le-gnu': 4.22.4
- '@rollup/rollup-linux-riscv64-gnu': 4.22.4
- '@rollup/rollup-linux-s390x-gnu': 4.22.4
- '@rollup/rollup-linux-x64-gnu': 4.22.4
- '@rollup/rollup-linux-x64-musl': 4.22.4
- '@rollup/rollup-win32-arm64-msvc': 4.22.4
- '@rollup/rollup-win32-ia32-msvc': 4.22.4
- '@rollup/rollup-win32-x64-msvc': 4.22.4
- fsevents: 2.3.3
-
- search-insights@2.17.2: {}
-
- shiki@2.5.0:
- dependencies:
- '@shikijs/core': 2.5.0
- '@shikijs/engine-javascript': 2.5.0
- '@shikijs/engine-oniguruma': 2.5.0
- '@shikijs/langs': 2.5.0
- '@shikijs/themes': 2.5.0
- '@shikijs/types': 2.5.0
- '@shikijs/vscode-textmate': 10.0.2
- '@types/hast': 3.0.4
-
- source-map-js@1.2.1: {}
-
- space-separated-tokens@2.0.2: {}
-
- speakingurl@14.0.1: {}
-
- stringify-entities@4.0.4:
- dependencies:
- character-entities-html4: 2.1.0
- character-entities-legacy: 3.0.0
-
- superjson@2.2.2:
- dependencies:
- copy-anything: 3.0.5
-
- tabbable@6.2.0: {}
-
- trim-lines@3.0.1: {}
-
- unist-util-is@6.0.0:
- dependencies:
- '@types/unist': 3.0.3
-
- unist-util-position@5.0.0:
- dependencies:
- '@types/unist': 3.0.3
-
- unist-util-stringify-position@4.0.0:
- dependencies:
- '@types/unist': 3.0.3
-
- unist-util-visit-parents@6.0.1:
- dependencies:
- '@types/unist': 3.0.3
- unist-util-is: 6.0.0
-
- unist-util-visit@5.0.0:
- dependencies:
- '@types/unist': 3.0.3
- unist-util-is: 6.0.0
- unist-util-visit-parents: 6.0.1
-
- vfile-message@4.0.2:
- dependencies:
- '@types/unist': 3.0.3
- unist-util-stringify-position: 4.0.0
-
- vfile@6.0.3:
- dependencies:
- '@types/unist': 3.0.3
- vfile-message: 4.0.2
-
- vite@5.4.19:
- dependencies:
- esbuild: 0.21.5
- postcss: 8.5.6
- rollup: 4.22.4
- optionalDependencies:
- fsevents: 2.3.3
-
- vitepress@1.6.4(@algolia/client-search@5.35.0)(postcss@8.5.6)(search-insights@2.17.2):
- dependencies:
- '@docsearch/css': 3.8.2
- '@docsearch/js': 3.8.2(@algolia/client-search@5.35.0)(search-insights@2.17.2)
- '@iconify-json/simple-icons': 1.2.47
- '@shikijs/core': 2.5.0
- '@shikijs/transformers': 2.5.0
- '@shikijs/types': 2.5.0
- '@types/markdown-it': 14.1.2
- '@vitejs/plugin-vue': 5.2.4(vite@5.4.19)(vue@3.5.18)
- '@vue/devtools-api': 7.7.7
- '@vue/shared': 3.5.18
- '@vueuse/core': 12.8.2
- '@vueuse/integrations': 12.8.2(focus-trap@7.6.5)
- focus-trap: 7.6.5
- mark.js: 8.11.1
- minisearch: 7.1.2
- shiki: 2.5.0
- vite: 5.4.19
- vue: 3.5.18
- optionalDependencies:
- postcss: 8.5.6
- transitivePeerDependencies:
- - '@algolia/client-search'
- - '@types/node'
- - '@types/react'
- - async-validator
- - axios
- - change-case
- - drauu
- - fuse.js
- - idb-keyval
- - jwt-decode
- - less
- - lightningcss
- - nprogress
- - qrcode
- - react
- - react-dom
- - sass
- - sass-embedded
- - search-insights
- - sortablejs
- - stylus
- - sugarss
- - terser
- - typescript
- - universal-cookie
-
- vue@3.5.18:
- dependencies:
- '@vue/compiler-dom': 3.5.18
- '@vue/compiler-sfc': 3.5.18
- '@vue/runtime-dom': 3.5.18
- '@vue/server-renderer': 3.5.18(vue@3.5.18)
- '@vue/shared': 3.5.18
-
- zwitch@2.0.4: {}