diff --git a/404.html b/404.html index 158a84d..e5916e9 100644 --- a/404.html +++ b/404.html @@ -8,15 +8,15 @@ - + -
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
- +
Skip to content

404

PAGE NOT FOUND

But if you don't change your direction, and if you keep looking, you may end up where you are heading.
+ \ No newline at end of file diff --git a/assets/a-record.C42okaqR.png b/assets/a-record.C42okaqR.png deleted file mode 100644 index d300a6b..0000000 Binary files a/assets/a-record.C42okaqR.png and /dev/null differ diff --git a/assets/app.1cVeb_h7.js b/assets/app.PQ90fudx.js similarity index 90% rename from assets/app.1cVeb_h7.js rename to assets/app.PQ90fudx.js index fd3632c..ab51734 100644 --- a/assets/app.1cVeb_h7.js +++ b/assets/app.PQ90fudx.js @@ -1 +1 @@ -import{V as o,a6 as p,a7 as u,a8 as l,a9 as c,aa as f,ab as d,ac as m,ad as h,ae as g,af as A,Y as P,d as _,u as v,k as y,y as R,ag as w,ah as C,ai as E,a4 as b}from"./chunks/framework.EN5ALL4V.js";import{R as T}from"./chunks/theme.B8uyWRoy.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(T),S=_({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{R(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&w(),C(),E(),s.setup&&s.setup(),()=>b(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=L(),a=V();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function V(){return h(S)}function L(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),[])),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{D as createApp}; +import{V as o,a6 as p,a7 as u,a8 as l,a9 as c,aa as f,ab as d,ac as m,ad as h,ae as g,af as A,Y as P,d as _,u as v,k as y,y as R,ag as w,ah as C,ai as E,a4 as b}from"./chunks/framework.-Zveb6AF.js";import{R as T}from"./chunks/theme.hDrnMMGo.js";function i(e){if(e.extends){const a=i(e.extends);return{...a,...e,async enhanceApp(t){a.enhanceApp&&await a.enhanceApp(t),e.enhanceApp&&await e.enhanceApp(t)}}}return e}const s=i(T),S=_({name:"VitePressApp",setup(){const{site:e,lang:a,dir:t}=v();return y(()=>{R(()=>{document.documentElement.lang=a.value,document.documentElement.dir=t.value})}),e.value.router.prefetchLinks&&w(),C(),E(),s.setup&&s.setup(),()=>b(s.Layout)}});async function D(){globalThis.__VITEPRESS__=!0;const e=L(),a=V();a.provide(u,e);const t=l(e.route);return a.provide(c,t),a.component("Content",f),a.component("ClientOnly",d),Object.defineProperties(a.config.globalProperties,{$frontmatter:{get(){return t.frontmatter.value}},$params:{get(){return t.page.value.params}}}),s.enhanceApp&&await s.enhanceApp({app:a,router:e,siteData:m}),{app:a,router:e,data:t}}function V(){return h(S)}function L(){let e=o,a;return g(t=>{let n=A(t),r=null;return n&&(e&&(a=n),(e||a===n)&&(n=n.replace(/\.js$/,".lean.js")),r=P(()=>import(n),[])),o&&(e=!1),r},s.NotFound)}o&&D().then(({app:e,router:a,data:t})=>{a.go().then(()=>{p(a.route,t.site),e.mount("#app")})});export{D as createApp}; diff --git a/assets/astria-architecture.B-nVTATW.png b/assets/astria-architecture.B-nVTATW.png new file mode 100644 index 0000000..c410b46 Binary files /dev/null and b/assets/astria-architecture.B-nVTATW.png differ diff --git a/assets/astria-architecture.CVwQwwJF.png b/assets/astria-architecture.CVwQwwJF.png deleted file mode 100644 index ff464b0..0000000 Binary files a/assets/astria-architecture.CVwQwwJF.png and /dev/null differ diff --git a/assets/astria-evm_overview.md.BopHGrUo.js b/assets/astria-evm_overview.md.BopHGrUo.js deleted file mode 100644 index 4c7190a..0000000 --- a/assets/astria-evm_overview.md.BopHGrUo.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as t,o as s,a5 as e}from"./chunks/framework.EN5ALL4V.js";const i="/assets/metamask-dusk2.W3LWBbKP.png",m=JSON.parse('{"title":"Astria EVM","description":"","frontmatter":{"sidebar_position":1},"headers":[],"relativePath":"astria-evm/overview.md","filePath":"astria-evm/overview.md","lastUpdated":1705703381000}'),r={name:"astria-evm/overview.md"},n=e('

Astria EVM

Network Information

PropertyValue
Network Namedusk-3
RPC URLhttps://rpc.evm.dusk-3.devnet.astria.org
Chain ID912559
Currency SymbolRIA
Dorahttps://www.ondora.xyz/network/astria-devnet
Faucethttps://faucet.evm.dusk-3.devnet.astria.org
Block Scouthttps://explorer.evm.dusk-3.devnet.astria.org/

Adding to Metamask

Follow Metamask's official documentation to manually add a custom network.

Your settings should look like the image below

Metamask

Using Cast

Set your ETH_RPC_URL:

bash
export ETH_RPC_URL=https://rpc-archive.evm.dusk-3.devnet.astria.org/
bash
export REC_ADDR=<SOME_ADDRESS>
bash
cast balance $REC_ADDR
bash
cast send $REC_ADDR --value 10000000000000000000 --private-key <PRIVATE-KEY>
bash
cast balance $REC_ADDR
',14),h=[n];function d(l,o,p,k,c,g){return s(),t("div",null,h)}const v=a(r,[["render",d]]);export{m as __pageData,v as default}; diff --git a/assets/astria-evm_overview.md.BopHGrUo.lean.js b/assets/astria-evm_overview.md.BopHGrUo.lean.js deleted file mode 100644 index bdbec80..0000000 --- a/assets/astria-evm_overview.md.BopHGrUo.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as t,o as s,a5 as e}from"./chunks/framework.EN5ALL4V.js";const i="/assets/metamask-dusk2.W3LWBbKP.png",m=JSON.parse('{"title":"Astria EVM","description":"","frontmatter":{"sidebar_position":1},"headers":[],"relativePath":"astria-evm/overview.md","filePath":"astria-evm/overview.md","lastUpdated":1705703381000}'),r={name:"astria-evm/overview.md"},n=e("",14),h=[n];function d(l,o,p,k,c,g){return s(),t("div",null,h)}const v=a(r,[["render",d]]);export{m as __pageData,v as default}; diff --git a/assets/astria-evm_overview.md.YzaiGDxe.js b/assets/astria-evm_overview.md.YzaiGDxe.js new file mode 100644 index 0000000..428477e --- /dev/null +++ b/assets/astria-evm_overview.md.YzaiGDxe.js @@ -0,0 +1 @@ +import{_ as a,c as t,o as s,a5 as e}from"./chunks/framework.-Zveb6AF.js";const u=JSON.parse('{"title":"Astria EVM","description":"","frontmatter":{"sidebar_position":1},"headers":[],"relativePath":"astria-evm/overview.md","filePath":"astria-evm/overview.md","lastUpdated":1717451255000}'),i={name:"astria-evm/overview.md"},r=e('

Astria EVM

Network Information

PropertyValue
Network Namedusk-7
RPC URLhttps://rpc.evm.dusk-7.devnet.astria.org
Chain ID912559
Currency SymbolRIA
Dorahttps://www.ondora.xyz/network/astria-devnet
Faucethttps://faucet.evm.dusk-7.devnet.astria.org
Block Scouthttps://explorer.evm.dusk-7.devnet.astria.org/

Adding to Metamask

Follow Metamask's official documentation to manually add a custom network.

Your settings should be the following:

Using Cast

Set your ETH_RPC_URL:

bash
export ETH_RPC_URL=https://rpc-archive.evm.dusk-7.devnet.astria.org/
bash
export REC_ADDR=<SOME_ADDRESS>
bash
cast balance $REC_ADDR
bash
cast send $REC_ADDR --value 10000000000000000000 --private-key <PRIVATE-KEY>
bash
cast balance $REC_ADDR
',14),n=[r];function h(d,l,o,p,k,c){return s(),t("div",null,n)}const v=a(i,[["render",h]]);export{u as __pageData,v as default}; diff --git a/assets/astria-evm_overview.md.YzaiGDxe.lean.js b/assets/astria-evm_overview.md.YzaiGDxe.lean.js new file mode 100644 index 0000000..a050f1a --- /dev/null +++ b/assets/astria-evm_overview.md.YzaiGDxe.lean.js @@ -0,0 +1 @@ +import{_ as a,c as t,o as s,a5 as e}from"./chunks/framework.-Zveb6AF.js";const u=JSON.parse('{"title":"Astria EVM","description":"","frontmatter":{"sidebar_position":1},"headers":[],"relativePath":"astria-evm/overview.md","filePath":"astria-evm/overview.md","lastUpdated":1717451255000}'),i={name:"astria-evm/overview.md"},r=e("",14),n=[r];function h(d,l,o,p,k,c){return s(),t("div",null,n)}const v=a(i,[["render",h]]);export{u as __pageData,v as default}; diff --git a/assets/chunks/@localSearchIndexroot.BEk6afHZ.js b/assets/chunks/@localSearchIndexroot.BEk6afHZ.js deleted file mode 100644 index 7b79aba..0000000 --- a/assets/chunks/@localSearchIndexroot.BEk6afHZ.js +++ /dev/null @@ -1 +0,0 @@ -const e='{"documentCount":163,"nextId":163,"documentIds":{"0":"/astria-evm/overview#astria-evm","1":"/astria-evm/overview#network-information","2":"/astria-evm/overview#adding-to-metamask","3":"/astria-evm/overview#using-cast","4":"/cloud-rollup/digital-ocean#digital-ocean","5":"/cloud-rollup/digital-ocean#local-dependencies","6":"/cloud-rollup/digital-ocean#install-the-latest-astria-cli","7":"/cloud-rollup/digital-ocean#dusknet-endpoints","8":"/cloud-rollup/digital-ocean#create-a-new-cluster","9":"/cloud-rollup/digital-ocean#configure-kubectl-with-doctl","10":"/cloud-rollup/digital-ocean#deploy-ingress-nginx-controller","11":"/cloud-rollup/digital-ocean#verify-loadbalancer-with-external-ip","12":"/cloud-rollup/digital-ocean#create-an-a-record","13":"/cloud-rollup/digital-ocean#create-your-rollup-genesis-account-s","14":"/cloud-rollup/digital-ocean#create-rollup-config","15":"/cloud-rollup/digital-ocean#create-new-sequencer-account","16":"/cloud-rollup/digital-ocean#fund-your-sequencer-account","17":"/cloud-rollup/digital-ocean#deploy-the-rollup-node","18":"/cloud-rollup/digital-ocean#watch-for-rollup-startup","19":"/cloud-rollup/digital-ocean#your-rollup-endpoints","20":"/cloud-rollup/digital-ocean#interact-with-your-rollup","21":"/community/1-overview#community-overview","22":"/components/_astria-rust-cli-install#install-the-latest-astria-cli","23":"/components/_cli-cloud#install-the-latest-astria-cli","24":"/components/_cli-local#install-the-latest-astria-cli","25":"/developer/references/astria-go/cli-commands#astria-go-cli-commands","26":"/developer/references/astria-go/cli-commands#global-flags","27":"/developer/references/astria-go/cli-commands#help","28":"/developer/references/astria-go/cli-commands#usage","29":"/developer/references/astria-go/cli-commands#version","30":"/developer/references/astria-go/cli-commands#usage-1","31":"/developer/references/astria-go/cli-commands#dev","32":"/developer/references/astria-go/cli-commands#usage-2","33":"/developer/references/astria-go/cli-commands#dev-init","34":"/developer/references/astria-go/cli-commands#usage-3","35":"/developer/references/astria-go/cli-commands#flags","36":"/developer/references/astria-go/cli-commands#dev-purge","37":"/developer/references/astria-go/cli-commands#usage-4","38":"/developer/references/astria-go/cli-commands#dev-purge-all","39":"/developer/references/astria-go/cli-commands#usage-5","40":"/developer/references/astria-go/cli-commands#flags-1","41":"/developer/references/astria-go/cli-commands#dev-purge-binaries","42":"/developer/references/astria-go/cli-commands#usage-6","43":"/developer/references/astria-go/cli-commands#flags-2","44":"/developer/references/astria-go/cli-commands#dev-reset","45":"/developer/references/astria-go/cli-commands#usage-7","46":"/developer/references/astria-go/cli-commands#dev-reset-config","47":"/developer/references/astria-go/cli-commands#usage-8","48":"/developer/references/astria-go/cli-commands#flags-3","49":"/developer/references/astria-go/cli-commands#dev-reset-networks","50":"/developer/references/astria-go/cli-commands#usage-9","51":"/developer/references/astria-go/cli-commands#flags-4","52":"/developer/references/astria-go/cli-commands#dev-reset-state","53":"/developer/references/astria-go/cli-commands#usage-10","54":"/developer/references/astria-go/cli-commands#flags-5","55":"/developer/references/astria-go/cli-commands#dev-run","56":"/developer/references/astria-go/cli-commands#usage-11","57":"/developer/references/astria-go/cli-commands#flags-6","58":"/developer/references/astria-go/cli-commands#sequencer","59":"/developer/references/astria-go/cli-commands#usage-12","60":"/developer/references/astria-go/cli-commands#sequencer-balances","61":"/developer/references/astria-go/cli-commands#usage-13","62":"/developer/references/astria-go/cli-commands#flags-7","63":"/developer/references/astria-go/cli-commands#sequencer-blockheight","64":"/developer/references/astria-go/cli-commands#usage-14","65":"/developer/references/astria-go/cli-commands#flags-8","66":"/developer/references/astria-go/cli-commands#sequencer-bridge","67":"/developer/references/astria-go/cli-commands#usage-15","68":"/developer/references/astria-go/cli-commands#sequencer-bridge-init","69":"/developer/references/astria-go/cli-commands#usage-16","70":"/developer/references/astria-go/cli-commands#flags-9","71":"/developer/references/astria-go/cli-commands#sequencer-bridge-lock","72":"/developer/references/astria-go/cli-commands#usage-17","73":"/developer/references/astria-go/cli-commands#flags-10","74":"/developer/references/astria-go/cli-commands#sequencer-createaccount","75":"/developer/references/astria-go/cli-commands#usage-18","76":"/developer/references/astria-go/cli-commands#flags-11","77":"/developer/references/astria-go/cli-commands#sequencer-getkey","78":"/developer/references/astria-go/cli-commands#usage-19","79":"/developer/references/astria-go/cli-commands#sequencer-nonce","80":"/developer/references/astria-go/cli-commands#usage-20","81":"/developer/references/astria-go/cli-commands#flags-12","82":"/developer/references/astria-go/cli-commands#sequencer-setkey","83":"/developer/references/astria-go/cli-commands#usage-21","84":"/developer/references/astria-go/cli-commands#sequencer-transfer","85":"/developer/references/astria-go/cli-commands#usage-22","86":"/developer/references/astria-go/cli-commands#flags-13","87":"/developer/references/astria-go/cli-installation#install-the-astria-cli","88":"/developer/references/astria-go/cli-installation#download-using-curl","89":"/developer/references/astria-go/cli-installation#build-from-source","90":"/developer/references/astria-go/cli-networks-configuration#astria-cli-networks-configuration","91":"/developer/references/astria-go/cli-networks-configuration#primary-use-case","92":"/developer/references/astria-go/cli-networks-configuration#what-the-networks-config-doesn-t-do","93":"/developer/references/endpoints#astria-endpoints","94":"/developer/tutorials/install-the-cli#install-the-astria-cli","95":"/developer/tutorials/install-the-cli#download-using-curl","96":"/developer/tutorials/install-the-cli#build-from-source","97":"/developer/tutorials/install-the-cli#commands-used-in-this-tutorial","98":"/developer/tutorials/run-local-rollup-against-remote-sequencer#run-a-local-rollup-against-a-remote-sequencer","99":"/developer/tutorials/run-local-rollup-against-remote-sequencer#setup-a-geth-rollup","100":"/developer/tutorials/run-local-rollup-against-remote-sequencer#build-geth","101":"/developer/tutorials/run-local-rollup-against-remote-sequencer#configure-the-geth-genesis-information","102":"/developer/tutorials/run-local-rollup-against-remote-sequencer#start-geth","103":"/developer/tutorials/run-local-rollup-against-remote-sequencer#configure-the-local-astria-components","104":"/developer/tutorials/run-local-rollup-against-remote-sequencer#run-the-local-astria-components-against-the-remote-sequencer","105":"/developer/tutorials/run-local-rollup-against-remote-sequencer#test-your-rollup","106":"/developer/tutorials/run-local-rollup-and-sequencer#run-a-local-rollup-and-sequencer","107":"/developer/tutorials/run-local-rollup-and-sequencer#setup-a-geth-rollup","108":"/developer/tutorials/run-local-rollup-and-sequencer#start-geth","109":"/developer/tutorials/run-local-rollup-and-sequencer#configure-and-start-the-local-astria-sequencer","110":"/developer/tutorials/run-local-rollup-and-sequencer#test-your-rollup","111":"/developer/tutorials/test-transactions#test-transactions","112":"/developer/tutorials/test-transactions#configure-the-testing-script","113":"/developer/tutorials/test-transactions#run-the-testing-script","114":"/developer/tutorials/test-transactions#common-issues","115":"/developer/tutorials/test-transactions#evmerror-outoffunds","116":"/developer/tutorials/test-transactions#test-script-hangs","117":"/developer/tutorials/test-transactions#chain-data-mismatch","118":"/dusk-faq/1-information#faq-and-debugging","119":"/dusk-faq/1-information#endpoints","120":"/dusk-faq/1-information#software-versions","121":"/dusk-faq/1-information#install-the-latest-astria-cli","122":"/dusk-faq/1-information#install-the-latest-astria-cli-1","123":"/dusk-faq/1-information#manually-fetch-sequencer-block-height","124":"/dusk-faq/1-information#sequencer-block-height","125":"/dusk-faq/1-information#loadbalancer-information","126":"/dusk-faq/1-information#ingress-information","127":"/local-rollup/1-introduction#overview","128":"/local-rollup/1-introduction#local-dependencies","129":"/local-rollup/1-introduction#clone-the-astria-dev-cluster","130":"/local-rollup/1-introduction#install-the-latest-astria-cli","131":"/local-rollup/1-introduction#dusknet-endpoints","132":"/local-rollup/1-introduction#setup-local-environment","133":"/local-rollup/1-introduction#create-your-rollup-genesis-account-s","134":"/local-rollup/1-introduction#create-rollup-config","135":"/local-rollup/1-introduction#create-a-new-sequencer-account","136":"/local-rollup/1-introduction#fund-your-sequencer-account","137":"/local-rollup/1-introduction#deploy-the-rollup-node","138":"/local-rollup/1-introduction#watch-for-rollup-startup","139":"/local-rollup/1-introduction#your-rollup-endpoints","140":"/local-rollup/1-introduction#interact-with-your-rollup","141":"/local-rollup/2-astria-cli-go#the-astria-cli","142":"/local-rollup/2-astria-cli-go#install-and-run-cli-from-github-release","143":"/local-rollup/2-astria-cli-go#locally-build-and-run-the-cli","144":"/local-rollup/2-astria-cli-go#development","145":"/local-rollup/2-astria-cli-go#available-commands","146":"/markdown-examples#markdown-extension-examples","147":"/markdown-examples#syntax-highlighting","148":"/markdown-examples#custom-containers","149":"/markdown-examples#more","150":"/overview/1-introduction#introduction","151":"/overview/1-introduction#what-should-i-read","152":"/overview/1-introduction#what-if-i-need-more-help","153":"/overview/2-why-decentralized-sequencers#why-decentralized-sequencers","154":"/overview/3-cross-rollup-composability#cross-rollup-composability","155":"/overview/architecture/1-overview#architecture-overview","156":"/overview/architecture/2-transaction-flow#transaction-flow","157":"/overview/architecture/3-rollup#rollups","158":"/overview/architecture/5-the-astria-sequencer#the-astria-sequencer","159":"/overview/architecture/4-composer#composer","160":"/overview/architecture/6-relayer#relayer","161":"/overview/architecture/7-conductor#conductor","162":"/overview/architecture/8-data-availability-layer#data-availability-layer"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,1],"1":[2,2,31],"2":[3,2,20],"3":[2,2,32],"4":[2,1,24],"5":[2,2,1],"6":[3,4,81],"7":[2,2,30],"8":[4,2,65],"9":[4,2,9],"10":[4,2,47],"11":[5,2,80],"12":[4,2,58],"13":[7,2,88],"14":[3,2,137],"15":[4,2,50],"16":[4,2,32],"17":[4,2,24],"18":[4,2,52],"19":[3,2,31],"20":[4,2,34],"21":[2,1,14],"22":[3,1,74],"23":[3,1,81],"24":[3,1,104],"25":[4,1,1],"26":[2,4,36],"27":[1,4,8],"28":[1,5,7],"29":[1,4,6],"30":[1,5,4],"31":[1,4,8],"32":[1,5,6],"33":[2,4,18],"34":[1,6,6],"35":[1,6,53],"36":[2,4,8],"37":[1,6,7],"38":[3,4,25],"39":[1,7,7],"40":[1,7,18],"41":[3,4,19],"42":[1,7,7],"43":[1,7,18],"44":[2,4,11],"45":[1,6,7],"46":[3,4,20],"47":[1,7,7],"48":[1,7,53],"49":[3,4,19],"50":[1,7,7],"51":[1,7,53],"52":[3,4,16],"53":[1,7,7],"54":[1,7,18],"55":[2,4,21],"56":[1,6,15],"57":[1,6,59],"58":[1,4,8],"59":[1,5,6],"60":[2,4,9],"61":[1,6,7],"62":[1,6,35],"63":[2,4,8],"64":[1,6,6],"65":[1,6,35],"66":[2,4,9],"67":[1,6,6],"68":[3,4,5],"69":[1,7,9],"70":[1,7,72],"71":[3,4,7],"72":[1,7,11],"73":[1,7,61],"74":[2,4,23],"75":[1,6,6],"76":[1,6,37],"77":[2,4,10],"78":[1,6,7],"79":[2,4,9],"80":[1,6,7],"81":[1,6,31],"82":[2,4,10],"83":[1,6,9],"84":[2,4,8],"85":[1,6,8],"86":[1,6,58],"87":[4,1,31],"88":[3,4,36],"89":[3,4,49],"90":[4,1,46],"91":[3,4,86],"92":[7,4,101],"93":[2,1,19],"94":[4,1,31],"95":[3,4,36],"96":[3,4,49],"97":[5,4,44],"98":[7,1,31],"99":[4,7,1],"100":[2,9,36],"101":[5,9,133],"102":[2,7,37],"103":[5,7,112],"104":[8,7,29],"105":[3,7,20],"106":[6,1,30],"107":[4,6,84],"108":[2,6,37],"109":[7,6,95],"110":[3,6,20],"111":[2,1,1],"112":[4,2,91],"113":[4,2,52],"114":[2,2,1],"115":[2,4,62],"116":[3,4,93],"117":[3,4,74],"118":[3,1,20],"119":[1,3,44],"120":[2,3,28],"121":[5,3,1],"122":[3,8,104],"123":[5,3,1],"124":[3,8,59],"125":[2,3,78],"126":[2,3,18],"127":[1,1,34],"128":[2,1,14],"129":[3,3,13],"130":[3,3,104],"131":[2,1,29],"132":[3,1,44],"133":[7,1,88],"134":[3,1,134],"135":[5,1,50],"136":[4,1,32],"137":[4,1,24],"138":[4,1,52],"139":[3,1,30],"140":[4,1,35],"141":[3,1,31],"142":[7,3,64],"143":[6,3,79],"144":[1,3,75],"145":[2,4,46],"146":[3,1,14],"147":[2,3,26],"148":[2,3,21],"149":[1,3,11],"150":[1,1,93],"151":[5,1,56],"152":[7,1,29],"153":[4,1,102],"154":[3,1,72],"155":[2,1,153],"156":[2,1,29],"157":[1,1,112],"158":[3,1,102],"159":[1,1,142],"160":[1,1,84],"161":[1,1,124],"162":[3,1,68]},"averageFieldLength":[2.6319018404907966,3.6503067484662606,39.43558282208589],"storedFields":{"0":{"title":"Astria EVM","titles":[]},"1":{"title":"Network Information","titles":["Astria EVM"]},"2":{"title":"Adding to Metamask","titles":["Astria EVM"]},"3":{"title":"Using Cast","titles":["Astria EVM"]},"4":{"title":"Digital Ocean","titles":[]},"5":{"title":"Local Dependencies","titles":["Digital Ocean"]},"6":{"title":"Install the latest","titles":["Digital Ocean","Local Dependencies"]},"7":{"title":"Dusknet Endpoints","titles":["Digital Ocean"]},"8":{"title":"Create a New Cluster","titles":["Digital Ocean"]},"9":{"title":"Configure kubectl with doctl","titles":["Digital Ocean"]},"10":{"title":"Deploy Ingress Nginx Controller","titles":["Digital Ocean"]},"11":{"title":"Verify Loadbalancer with external IP","titles":["Digital Ocean"]},"12":{"title":"Create an A Record","titles":["Digital Ocean"]},"13":{"title":"Create your Rollup Genesis Account(s)","titles":["Digital Ocean"]},"14":{"title":"Create Rollup Config","titles":["Digital Ocean"]},"15":{"title":"Create new sequencer account","titles":["Digital Ocean"]},"16":{"title":"Fund your Sequencer Account","titles":["Digital Ocean"]},"17":{"title":"Deploy the Rollup Node","titles":["Digital Ocean"]},"18":{"title":"Watch for rollup startup","titles":["Digital Ocean"]},"19":{"title":"Your Rollup Endpoints","titles":["Digital Ocean"]},"20":{"title":"Interact with your Rollup","titles":["Digital Ocean"]},"21":{"title":"Community overview","titles":[]},"22":{"title":"Install the latest","titles":[]},"23":{"title":"Install the latest","titles":[]},"24":{"title":"Install the latest","titles":[]},"25":{"title":"astria-go cli Commands","titles":[]},"26":{"title":"Global Flags","titles":["astria-go cli Commands"]},"27":{"title":"help","titles":["astria-go cli Commands"]},"28":{"title":"Usage","titles":["astria-go cli Commands","help"]},"29":{"title":"version","titles":["astria-go cli Commands"]},"30":{"title":"Usage","titles":["astria-go cli Commands","version"]},"31":{"title":"dev","titles":["astria-go cli Commands"]},"32":{"title":"Usage","titles":["astria-go cli Commands","dev"]},"33":{"title":"dev init","titles":["astria-go cli Commands"]},"34":{"title":"Usage","titles":["astria-go cli Commands","dev init"]},"35":{"title":"Flags","titles":["astria-go cli Commands","dev init"]},"36":{"title":"dev purge","titles":["astria-go cli Commands"]},"37":{"title":"Usage","titles":["astria-go cli Commands","dev purge"]},"38":{"title":"dev purge all","titles":["astria-go cli Commands"]},"39":{"title":"Usage","titles":["astria-go cli Commands","dev purge all"]},"40":{"title":"Flags","titles":["astria-go cli Commands","dev purge all"]},"41":{"title":"dev purge binaries","titles":["astria-go cli Commands"]},"42":{"title":"Usage","titles":["astria-go cli Commands","dev purge binaries"]},"43":{"title":"Flags","titles":["astria-go cli Commands","dev purge binaries"]},"44":{"title":"dev reset","titles":["astria-go cli Commands"]},"45":{"title":"Usage","titles":["astria-go cli Commands","dev reset"]},"46":{"title":"dev reset config","titles":["astria-go cli Commands"]},"47":{"title":"Usage","titles":["astria-go cli Commands","dev reset config"]},"48":{"title":"Flags","titles":["astria-go cli Commands","dev reset config"]},"49":{"title":"dev reset networks","titles":["astria-go cli Commands"]},"50":{"title":"Usage","titles":["astria-go cli Commands","dev reset networks"]},"51":{"title":"Flags","titles":["astria-go cli Commands","dev reset networks"]},"52":{"title":"dev reset state","titles":["astria-go cli Commands"]},"53":{"title":"Usage","titles":["astria-go cli Commands","dev reset state"]},"54":{"title":"Flags","titles":["astria-go cli Commands","dev reset state"]},"55":{"title":"dev run","titles":["astria-go cli Commands"]},"56":{"title":"Usage","titles":["astria-go cli Commands","dev run"]},"57":{"title":"Flags","titles":["astria-go cli Commands","dev run"]},"58":{"title":"sequencer","titles":["astria-go cli Commands"]},"59":{"title":"Usage","titles":["astria-go cli Commands","sequencer"]},"60":{"title":"sequencer balances","titles":["astria-go cli Commands"]},"61":{"title":"Usage","titles":["astria-go cli Commands","sequencer balances"]},"62":{"title":"Flags","titles":["astria-go cli Commands","sequencer balances"]},"63":{"title":"sequencer blockheight","titles":["astria-go cli Commands"]},"64":{"title":"Usage","titles":["astria-go cli Commands","sequencer blockheight"]},"65":{"title":"Flags","titles":["astria-go cli Commands","sequencer blockheight"]},"66":{"title":"sequencer bridge","titles":["astria-go cli Commands"]},"67":{"title":"Usage","titles":["astria-go cli Commands","sequencer bridge"]},"68":{"title":"sequencer bridge init","titles":["astria-go cli Commands"]},"69":{"title":"Usage","titles":["astria-go cli Commands","sequencer bridge init"]},"70":{"title":"Flags","titles":["astria-go cli Commands","sequencer bridge init"]},"71":{"title":"sequencer bridge lock","titles":["astria-go cli Commands"]},"72":{"title":"Usage","titles":["astria-go cli Commands","sequencer bridge lock"]},"73":{"title":"Flags","titles":["astria-go cli Commands","sequencer bridge lock"]},"74":{"title":"sequencer createaccount","titles":["astria-go cli Commands"]},"75":{"title":"Usage","titles":["astria-go cli Commands","sequencer createaccount"]},"76":{"title":"Flags","titles":["astria-go cli Commands","sequencer createaccount"]},"77":{"title":"sequencer getkey","titles":["astria-go cli Commands"]},"78":{"title":"Usage","titles":["astria-go cli Commands","sequencer getkey"]},"79":{"title":"sequencer nonce","titles":["astria-go cli Commands"]},"80":{"title":"Usage","titles":["astria-go cli Commands","sequencer nonce"]},"81":{"title":"Flags","titles":["astria-go cli Commands","sequencer nonce"]},"82":{"title":"sequencer setkey","titles":["astria-go cli Commands"]},"83":{"title":"Usage","titles":["astria-go cli Commands","sequencer setkey"]},"84":{"title":"sequencer transfer","titles":["astria-go cli Commands"]},"85":{"title":"Usage","titles":["astria-go cli Commands","sequencer transfer"]},"86":{"title":"Flags","titles":["astria-go cli Commands","sequencer transfer"]},"87":{"title":"Install the Astria CLI","titles":[]},"88":{"title":"Download using Curl","titles":["Install the Astria CLI"]},"89":{"title":"Build from Source","titles":["Install the Astria CLI"]},"90":{"title":"Astria Cli Networks Configuration","titles":[]},"91":{"title":"Primary Use Case","titles":["Astria Cli Networks Configuration"]},"92":{"title":"What the Networks Config Doesn\'t Do","titles":["Astria Cli Networks Configuration"]},"93":{"title":"Astria Endpoints","titles":[]},"94":{"title":"Install the Astria CLI","titles":[]},"95":{"title":"Download using Curl","titles":["Install the Astria CLI"]},"96":{"title":"Build from Source","titles":["Install the Astria CLI"]},"97":{"title":"Commands Used in this Tutorial","titles":["Install the Astria CLI"]},"98":{"title":"Run a Local Rollup against a Remote Sequencer","titles":[]},"99":{"title":"Setup a Geth Rollup","titles":["Run a Local Rollup against a Remote Sequencer"]},"100":{"title":"Build Geth","titles":["Run a Local Rollup against a Remote Sequencer","Setup a Geth Rollup"]},"101":{"title":"Configure the Geth Genesis Information","titles":["Run a Local Rollup against a Remote Sequencer","Setup a Geth Rollup"]},"102":{"title":"Start Geth","titles":["Run a Local Rollup against a Remote Sequencer"]},"103":{"title":"Configure the Local Astria components","titles":["Run a Local Rollup against a Remote Sequencer"]},"104":{"title":"Run the local Astria components against the Remote Sequencer","titles":["Run a Local Rollup against a Remote Sequencer"]},"105":{"title":"Test your Rollup","titles":["Run a Local Rollup against a Remote Sequencer"]},"106":{"title":"Run a Local Rollup and Sequencer","titles":[]},"107":{"title":"Setup a Geth Rollup","titles":["Run a Local Rollup and Sequencer"]},"108":{"title":"Start Geth","titles":["Run a Local Rollup and Sequencer"]},"109":{"title":"Configure and Start the Local Astria Sequencer","titles":["Run a Local Rollup and Sequencer"]},"110":{"title":"Test your Rollup","titles":["Run a Local Rollup and Sequencer"]},"111":{"title":"Test Transactions","titles":[]},"112":{"title":"Configure the Testing Script","titles":["Test Transactions"]},"113":{"title":"Run the Testing Script","titles":["Test Transactions"]},"114":{"title":"Common Issues","titles":["Test Transactions"]},"115":{"title":"EvmError: OutOfFunds","titles":["Test Transactions","Common Issues"]},"116":{"title":"Test script hangs","titles":["Test Transactions","Common Issues"]},"117":{"title":"Chain Data Mismatch","titles":["Test Transactions","Common Issues"]},"118":{"title":"FAQ and Debugging","titles":[]},"119":{"title":"Endpoints","titles":["FAQ and Debugging"]},"120":{"title":"Software Versions","titles":["FAQ and Debugging"]},"121":{"title":"Install the latest Astria cli","titles":["FAQ and Debugging"]},"122":{"title":"Install the latest","titles":["FAQ and Debugging","Install the latest Astria cli"]},"123":{"title":"Manually Fetch Sequencer Block Height","titles":["FAQ and Debugging"]},"124":{"title":"Sequencer Block Height","titles":["FAQ and Debugging","Manually Fetch Sequencer Block Height"]},"125":{"title":"Loadbalancer Information","titles":["FAQ and Debugging"]},"126":{"title":"Ingress Information","titles":["FAQ and Debugging"]},"127":{"title":"Overview","titles":[]},"128":{"title":"Local Dependencies","titles":["Overview"]},"129":{"title":"Clone the Astria","titles":["Overview","Local Dependencies"]},"130":{"title":"Install the latest","titles":["Overview","Local Dependencies"]},"131":{"title":"Dusknet Endpoints","titles":["Overview"]},"132":{"title":"Setup Local Environment","titles":["Overview"]},"133":{"title":"Create your Rollup Genesis Account(s)","titles":["Overview"]},"134":{"title":"Create Rollup Config","titles":["Overview"]},"135":{"title":"Create a New Sequencer Account","titles":["Overview"]},"136":{"title":"Fund your Sequencer Account","titles":["Overview"]},"137":{"title":"Deploy the Rollup Node","titles":["Overview"]},"138":{"title":"Watch for rollup startup","titles":["Overview"]},"139":{"title":"Your Rollup Endpoints","titles":["Overview"]},"140":{"title":"Interact with your Rollup","titles":["Overview"]},"141":{"title":"The Astria CLI","titles":[]},"142":{"title":"Install and Run CLI from GitHub release","titles":["The Astria CLI"]},"143":{"title":"Locally Build and Run the CLI","titles":["The Astria CLI"]},"144":{"title":"Development","titles":["The Astria CLI"]},"145":{"title":"Available Commands","titles":["The Astria CLI","Development"]},"146":{"title":"Markdown Extension Examples","titles":[]},"147":{"title":"Syntax Highlighting","titles":["Markdown Extension Examples"]},"148":{"title":"Custom Containers","titles":["Markdown Extension Examples"]},"149":{"title":"More","titles":["Markdown Extension Examples"]},"150":{"title":"Introduction","titles":[]},"151":{"title":"What should I read?","titles":["Introduction"]},"152":{"title":"What If I Need More Help?","titles":["Introduction"]},"153":{"title":"Why Decentralized Sequencers?","titles":[]},"154":{"title":"Cross-Rollup Composability","titles":[]},"155":{"title":"Architecture Overview","titles":[]},"156":{"title":"Transaction Flow","titles":[]},"157":{"title":"Rollups","titles":[]},"158":{"title":"The Astria Sequencer","titles":[]},"159":{"title":"Composer","titles":[]},"160":{"title":"Relayer","titles":[]},"161":{"title":"Conductor","titles":[]},"162":{"title":"Data Availability Layer","titles":[]}},"dirtCount":0,"index":[["`run`",{"2":{"144":1}}],["```",{"2":{"6":4,"22":4,"23":4,"24":4,"122":4,"130":4,"147":1}}],["```bash",{"2":{"6":4,"22":4,"23":4,"24":4,"122":4,"130":4}}],["=",{"2":{"91":5,"92":6,"103":5,"109":5}}],["~",{"2":{"38":1,"90":1,"103":3,"109":2,"116":1}}],["join",{"2":{"150":1}}],["jsexport",{"2":{"147":1}}],["json",{"2":{"35":2,"48":2,"51":2,"62":2,"65":2,"70":3,"73":3,"76":3,"81":2,"86":3,"101":4,"107":2,"112":1,"115":1,"119":1,"144":1}}],["just",{"2":{"24":2,"89":5,"91":1,"96":5,"100":4,"102":3,"103":2,"107":5,"108":3,"115":1,"117":2,"122":2,"130":2,"132":1,"143":4,"155":1}}],["queue",{"2":{"159":1,"160":1}}],["quot",{"2":{"35":6,"40":2,"43":2,"48":6,"51":6,"54":2,"57":4,"62":2,"65":2,"70":8,"73":4,"81":2,"86":4,"101":4,"103":2,"107":8,"109":2,"112":2,"115":2,"161":4}}],["quick",{"2":{"8":1,"24":1,"122":1,"130":1,"151":2}}],["0",{"2":{"18":3,"20":1,"35":1,"48":1,"51":1,"62":2,"65":2,"70":3,"73":2,"81":2,"86":2,"92":4,"93":2,"109":5,"120":1,"138":3,"140":1,"142":2,"143":3}}],["0x332e",{"2":{"13":1,"133":1}}],["0xffe9",{"2":{"13":1,"133":1}}],["71",{"2":{"125":1}}],["7",{"2":{"88":6,"95":6,"101":1,"103":3}}],["755cb8dd97",{"2":{"18":1,"138":1}}],["72s",{"2":{"18":4,"138":4}}],["73",{"2":{"7":1,"119":1,"131":1}}],["$sequencer",{"2":{"16":1,"17":1,"136":1,"137":1}}],["$rollup",{"2":{"14":1,"17":2,"20":3,"134":1,"137":2,"140":2}}],["$rec",{"2":{"3":3,"20":3,"140":3}}],["57s",{"2":{"125":2}}],["5",{"2":{"70":1,"73":1,"86":1,"91":3,"93":1,"120":1}}],["56s",{"2":{"18":2,"138":2}}],["5f68",{"2":{"15":2,"135":2}}],["5f8b",{"2":{"13":1,"133":1}}],["5562",{"2":{"15":1,"135":1}}],["50",{"2":{"11":1}}],["98",{"2":{"125":1}}],["9",{"2":{"120":1,"143":1}}],["99",{"2":{"11":1}}],["912559",{"2":{"1":1}}],["68667bd895",{"2":{"18":1,"138":1}}],["6",{"2":{"14":1,"18":2,"101":1,"107":1,"112":1,"138":2}}],["63",{"2":{"11":1}}],["647745c66d",{"2":{"18":1,"138":1}}],["64",{"2":{"6":6,"22":6,"23":6,"24":6,"88":2,"95":2,"122":6,"130":6,"142":1}}],["yet",{"2":{"153":1}}],["yaml",{"2":{"10":1,"14":1,"134":1}}],["you",{"2":{"4":1,"6":1,"8":2,"11":3,"12":3,"13":3,"14":1,"18":1,"19":1,"22":1,"23":1,"24":1,"55":1,"89":2,"91":4,"92":6,"96":2,"98":1,"101":4,"102":4,"103":8,"104":1,"105":1,"106":1,"107":3,"108":4,"109":4,"110":1,"112":3,"113":3,"115":1,"116":3,"117":5,"122":1,"124":3,"125":2,"126":1,"127":2,"130":1,"133":3,"134":3,"138":1,"142":2,"144":4,"151":6,"152":3,"157":1}}],["your",{"0":{"13":1,"16":1,"19":1,"20":1,"105":1,"110":1,"133":1,"136":1,"139":1,"140":1},"2":{"2":1,"3":1,"8":1,"9":1,"11":1,"12":2,"13":2,"14":15,"15":2,"16":3,"18":4,"19":7,"20":1,"89":2,"91":1,"92":4,"96":2,"98":1,"101":10,"102":1,"103":4,"105":1,"106":1,"107":6,"108":1,"109":2,"110":1,"112":1,"113":1,"115":2,"116":1,"117":4,"118":3,"125":1,"126":1,"133":2,"134":12,"135":2,"136":3,"138":4,"139":4,"140":1,"142":2,"144":4,"150":3,"153":3,"154":3,"155":3,"156":3,"157":3,"158":3,"159":3,"160":3,"161":3,"162":3}}],["20",{"2":{"144":1}}],["206",{"2":{"125":2}}],["229",{"2":{"125":1}}],["228",{"2":{"125":1}}],["22",{"2":{"119":1}}],["26657",{"2":{"62":1,"65":1,"70":1,"73":1,"81":1,"86":1,"92":1,"93":1,"109":1}}],["211",{"2":{"119":1}}],["214",{"2":{"119":1}}],["21",{"2":{"14":1}}],["2>",{"2":{"13":2,"133":2}}],["2579934",{"2":{"12":1}}],["240",{"2":{"11":1}}],["245",{"2":{"11":2}}],["28",{"2":{"11":1}}],["2",{"2":{"10":1,"18":2,"120":1,"138":2}}],["404",{"2":{"125":1}}],["42",{"2":{"125":2}}],["4252",{"2":{"6":1,"22":1,"23":1,"24":1,"122":1,"130":1}}],["4",{"2":{"18":1,"24":1,"119":1,"122":1,"130":1,"138":1,"143":2,"147":1}}],["44h",{"2":{"11":2}}],["443",{"2":{"11":2,"125":2}}],["4gb",{"2":{"8":2}}],["8a2f",{"2":{"15":1,"135":1}}],["8080",{"2":{"92":1,"109":1}}],["80",{"2":{"11":1,"125":1}}],["8",{"2":{"7":1,"10":1,"119":1,"120":1,"131":1}}],["historically",{"2":{"155":1}}],["high",{"2":{"155":1}}],["highlighted",{"2":{"147":2}}],["highlighting",{"0":{"147":1},"2":{"147":2}}],["highlight",{"2":{"21":1}}],["hr>",{"2":{"125":1}}],["h1>",{"2":{"125":1}}],["h1>404",{"2":{"125":1}}],["having",{"2":{"159":1}}],["have",{"2":{"91":1,"101":2,"103":1,"109":1,"116":1,"157":1}}],["hangs",{"0":{"116":1},"2":{"116":1}}],["handles",{"2":{"154":1}}],["hand",{"2":{"101":1}}],["has",{"2":{"8":2,"92":1,"128":1,"134":1,"161":2,"162":1}}],["h",{"2":{"26":1}}],["html>",{"2":{"125":2}}],["html",{"2":{"24":1,"122":1,"125":1,"130":1}}],["http",{"2":{"19":3,"62":1,"65":1,"70":1,"73":1,"81":1,"86":1,"92":2,"93":1,"109":2,"139":3}}],["https",{"2":{"1":4,"6":9,"8":1,"10":1,"11":1,"12":1,"14":1,"16":1,"22":7,"23":9,"24":13,"88":3,"89":2,"91":2,"93":1,"95":3,"96":2,"100":3,"101":1,"103":2,"107":3,"112":1,"122":13,"129":1,"130":13,"134":1,"136":1,"142":1}}],["hl=en",{"2":{"12":1}}],["house",{"2":{"159":1}}],["hostname>",{"2":{"14":2}}],["hostname=",{"2":{"14":1}}],["hostname",{"2":{"14":3,"19":3,"20":1,"134":1}}],["hosts",{"2":{"7":1,"119":1,"131":1}}],["however",{"2":{"153":1}}],["how",{"2":{"8":1,"12":1}}],["header",{"2":{"161":1}}],["headers",{"2":{"155":1}}],["head",{"2":{"153":1}}],["head>",{"2":{"125":2}}],["height=",{"2":{"124":1}}],["heights",{"2":{"101":1}}],["height",{"0":{"123":1,"124":1},"1":{"124":1},"2":{"63":1,"97":1,"101":3,"117":1,"124":2}}],["height>",{"2":{"14":1,"101":1,"124":2,"134":1}}],["help",{"0":{"27":1,"152":1},"1":{"28":1},"2":{"26":2,"27":1,"28":2,"97":2,"145":2}}],["helm",{"2":{"6":2,"23":2,"24":2,"122":2,"130":2,"132":1}}],["here",{"2":{"6":1,"10":1,"12":2,"22":1,"23":1,"24":1,"88":1,"95":1,"105":1,"110":1,"112":1,"118":2,"122":1,"127":1,"130":1,"134":1,"150":2,"151":1,"153":2,"154":2,"155":3,"156":2,"157":2,"158":3,"159":3,"160":3,"161":3,"162":2}}],["phase",{"2":{"159":2}}],["permission",{"2":{"157":1}}],["permissionless",{"2":{"150":1,"157":1}}],["persist",{"2":{"117":1}}],["place",{"2":{"143":1}}],["platform",{"2":{"142":1}}],["please",{"2":{"6":1,"22":1,"23":1,"24":1,"122":1,"127":1,"130":1,"152":1}}],["passed",{"2":{"161":2}}],["pass",{"2":{"160":1}}],["parties",{"2":{"159":1}}],["participates",{"2":{"158":1}}],["part",{"2":{"154":1}}],["parsing",{"2":{"144":1}}],["page",{"2":{"125":1,"142":1,"146":1}}],["packages",{"2":{"112":1}}],["path",{"2":{"57":12,"70":1,"73":1,"86":1,"89":1,"96":1,"142":1}}],["pulled",{"2":{"144":1,"160":1,"162":1}}],["purge",{"0":{"36":1,"38":1,"41":1},"1":{"37":1,"39":1,"40":1,"42":1,"43":1},"2":{"36":1,"37":1,"39":1,"42":1,"92":1}}],["public",{"2":{"15":1,"19":1,"74":1,"135":1}}],["pwqmz",{"2":{"18":1,"138":1}}],["pick",{"2":{"14":1}}],["polls",{"2":{"161":1}}],["point",{"2":{"159":1}}],["pointing",{"2":{"12":1}}],["potential",{"2":{"159":1}}],["potentially",{"2":{"101":1}}],["possibilities",{"2":{"154":1}}],["possible",{"2":{"87":1,"94":1,"141":1}}],["powered",{"2":{"147":1}}],["port",{"2":{"11":1,"125":1}}],["populated",{"2":{"11":1}}],["pods",{"2":{"18":2,"138":2}}],["pod",{"2":{"8":1}}],["pre",{"2":{"155":1}}],["previously",{"2":{"112":1}}],["previous",{"2":{"101":1,"155":1}}],["principle",{"2":{"155":1}}],["prints",{"2":{"29":1,"79":1,"97":1,"145":1}}],["print",{"2":{"27":1,"76":1}}],["primary",{"0":{"91":1}}],["privkey",{"2":{"70":2,"73":2,"86":2}}],["priv",{"2":{"13":1,"15":2,"17":2,"20":1,"103":2,"133":1,"135":2,"137":2,"140":1}}],["private",{"2":{"3":2,"13":5,"15":2,"17":2,"20":1,"70":2,"73":2,"74":1,"76":3,"77":1,"82":1,"83":1,"86":2,"101":1,"103":2,"107":1,"112":5,"115":2,"116":2,"133":5,"135":2,"137":2,"140":1}}],["profit",{"2":{"159":2}}],["proposer",{"2":{"159":3}}],["property",{"2":{"1":1}}],["progress",{"2":{"159":1}}],["programming",{"2":{"155":1}}],["program",{"2":{"102":1,"108":1}}],["production",{"2":{"158":1}}],["protos",{"2":{"157":1}}],["process",{"2":{"157":1}}],["providing",{"2":{"153":1}}],["provided",{"2":{"101":1,"146":1}}],["provides",{"2":{"87":1,"94":1,"141":1,"147":1,"150":1,"155":2}}],["provide",{"2":{"57":4,"153":1,"154":1,"155":1}}],["provider",{"2":{"10":1}}],[">",{"2":{"6":8,"7":1,"22":7,"23":7,"24":7,"88":4,"95":4,"122":7,"130":7}}],["184",{"2":{"125":2}}],["187",{"2":{"7":1,"119":1,"131":1}}],["118",{"2":{"125":2}}],["11",{"2":{"120":1}}],["111",{"2":{"7":1,"119":2,"131":1}}],["130",{"2":{"119":1}}],["12",{"2":{"143":1}}],["120",{"2":{"119":1}}],["127",{"2":{"62":1,"65":1,"70":1,"73":1,"81":1,"86":1,"92":2,"93":1,"109":2}}],["123456",{"2":{"14":1}}],["16",{"2":{"119":1}}],["167",{"2":{"119":1}}],["160",{"2":{"119":1}}],["1622",{"2":{"15":2,"135":2}}],["161",{"2":{"11":1}}],["1>",{"2":{"13":2,"133":2}}],["1vcpu",{"2":{"8":2}}],["106",{"2":{"11":1}}],["10",{"2":{"11":2}}],["102",{"2":{"7":1,"119":1,"131":1}}],["100000000000000000000",{"2":{"13":1,"133":1}}],["10000000000000000000",{"2":{"3":1,"20":1,"140":1}}],["1",{"2":{"6":8,"18":4,"22":8,"23":8,"24":8,"62":1,"65":1,"70":1,"73":1,"81":1,"86":1,"88":6,"92":2,"93":1,"95":6,"109":2,"120":3,"122":8,"130":8,"138":4,"144":1}}],["ve",{"2":{"144":1,"151":1}}],["verification",{"2":{"161":1}}],["verify",{"0":{"11":1},"2":{"14":1,"16":1,"134":1,"136":1}}],["versions",{"0":{"120":1},"2":{"120":1}}],["version",{"0":{"29":1},"1":{"30":1},"2":{"29":1,"30":1,"88":3,"89":2,"95":3,"96":2,"97":2,"142":2,"143":1,"144":1,"145":2}}],["vs",{"2":{"144":1}}],["vz4ks",{"2":{"18":1,"138":1}}],["vision",{"2":{"150":1}}],["vitepress",{"2":{"146":1,"147":1}}],["viable",{"2":{"143":1}}],["view",{"2":{"16":1,"88":1,"95":1,"134":1,"136":1}}],["virtual",{"2":{"12":1}}],["validated",{"2":{"160":1}}],["validator",{"2":{"158":1,"159":1}}],["valid",{"2":{"57":1}}],["values",{"2":{"14":1,"91":2,"134":1}}],["value",{"2":{"1":1,"3":1,"13":1,"20":1,"103":1,"109":1,"112":2,"124":1,"133":1,"140":1}}],["variable",{"2":{"103":1,"109":1,"116":1,"124":1}}],["variables",{"2":{"14":1,"15":1,"134":1,"135":1}}],["var",{"2":{"14":2,"26":1,"35":1,"40":1,"43":1,"48":1,"51":1,"54":1,"57":1,"62":1,"65":1,"70":1,"73":1,"76":1,"81":1,"86":1,"115":1,"134":2}}],["vars",{"2":{"14":2,"134":2}}],["v1",{"2":{"10":1}}],["v0",{"2":{"6":8,"22":8,"23":8,"24":8,"88":6,"95":6,"120":6,"122":8,"130":8,"142":2,"143":4}}],["gain",{"2":{"157":1}}],["guarantees",{"2":{"154":1}}],["guide",{"2":{"4":1,"8":2,"98":1,"106":1,"127":2,"128":1,"151":1}}],["g",{"2":{"142":1,"144":1}}],["grpc",{"2":{"91":3,"92":1,"103":2,"109":1,"157":1}}],["giving",{"2":{"155":1}}],["given",{"2":{"26":1,"27":1,"38":1,"41":1,"92":1,"155":1,"158":1,"161":1}}],["git",{"2":{"89":2,"96":2,"100":3,"107":3,"112":3,"129":1,"143":2}}],["git=https",{"2":{"6":2,"22":2,"23":2,"24":2,"122":2,"130":2}}],["githubusercontent",{"2":{"10":1}}],["github",{"0":{"142":1},"2":{"6":8,"22":8,"23":8,"24":8,"88":3,"89":2,"95":3,"96":2,"100":2,"107":2,"112":1,"122":8,"129":1,"130":8,"142":1,"143":1,"144":1}}],["global",{"0":{"26":1}}],["goal",{"2":{"159":1}}],["governance",{"2":{"157":1}}],["gossiped",{"2":{"155":1}}],["gone",{"2":{"151":1}}],["gopls",{"2":{"144":2}}],["going",{"2":{"113":1}}],["go",{"0":{"25":1},"1":{"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1},"2":{"26":1,"28":2,"30":1,"32":1,"34":1,"35":3,"37":1,"38":2,"39":1,"40":1,"41":2,"42":1,"43":1,"45":1,"47":1,"48":3,"50":1,"51":3,"53":1,"54":1,"56":3,"57":7,"59":1,"61":1,"62":2,"64":1,"65":2,"67":1,"69":1,"70":8,"72":1,"73":6,"75":1,"76":4,"78":1,"80":1,"81":2,"83":1,"85":1,"86":6,"87":1,"88":12,"89":7,"90":2,"91":1,"92":6,"94":1,"95":12,"96":7,"98":1,"100":3,"101":1,"103":2,"104":1,"106":1,"107":3,"109":4,"113":3,"115":1,"116":3,"117":3,"141":1,"142":5,"143":3,"144":2,"151":1,"157":1}}],["google",{"2":{"12":2}}],["generating",{"2":{"159":2}}],["generated",{"2":{"155":1}}],["generate",{"2":{"113":1,"145":1,"155":1}}],["general",{"2":{"91":1}}],["genesisaccounts",{"2":{"14":1,"134":1}}],["genesis",{"0":{"13":1,"101":1,"133":1},"2":{"13":10,"14":1,"35":2,"48":2,"51":2,"101":4,"107":2,"112":1,"115":2,"133":10,"134":1}}],["getkey",{"0":{"77":1},"1":{"78":1},"2":{"78":1}}],["getting",{"2":{"24":1,"100":1,"107":1,"112":1,"117":1,"122":1,"130":1}}],["getfoundry",{"2":{"24":1,"100":1,"107":1,"112":1,"122":1,"130":1}}],["geth",{"0":{"99":1,"100":1,"101":1,"102":1,"107":1,"108":1},"1":{"100":1,"101":1},"2":{"18":1,"98":1,"100":3,"101":4,"102":4,"103":1,"106":1,"107":6,"108":4,"109":1,"112":4,"115":2,"120":1,"138":1,"157":1}}],["get",{"2":{"11":1,"18":1,"24":1,"60":1,"63":1,"77":1,"97":1,"122":1,"124":1,"125":1,"126":1,"130":1,"138":1,"145":2,"151":1,"155":1}}],["gt",{"2":{"8":2,"13":2,"14":5,"16":1,"19":6,"90":1,"133":2,"134":3,"136":2,"139":3}}],["gnu",{"2":{"6":2,"22":2,"23":2,"24":2,"122":2,"130":2}}],["gz",{"2":{"6":18,"22":18,"23":18,"24":18,"88":9,"95":9,"122":18,"130":18,"142":3}}],["keep",{"2":{"101":1}}],["keyring",{"2":{"70":3,"73":3,"76":3,"77":1,"82":1,"86":3}}],["keyfile",{"2":{"70":3,"73":3,"76":3,"86":3}}],["key=5562",{"2":{"15":1,"135":1}}],["key=",{"2":{"13":1,"112":1,"133":1}}],["keypair",{"2":{"13":1,"133":1}}],["key>",{"2":{"3":1,"13":2,"15":1,"112":1,"133":2,"135":1}}],["key",{"2":{"3":1,"13":3,"15":3,"17":4,"20":2,"70":2,"73":2,"74":2,"76":3,"77":1,"82":1,"83":1,"86":2,"101":1,"103":4,"107":1,"112":3,"115":2,"116":2,"133":3,"135":3,"137":4,"140":2}}],["kind",{"2":{"24":2,"122":2,"130":2}}],["k5xp8",{"2":{"18":1,"138":1}}],["k8s",{"2":{"8":1,"9":1,"10":1,"24":1,"122":1,"130":1,"132":1}}],["kubectl",{"0":{"9":1},"2":{"6":1,"9":1,"23":1,"24":1,"122":1,"130":1}}],["kubernetes",{"2":{"4":1,"6":1,"8":1,"10":2,"18":1,"23":1,"24":1,"122":1,"125":1,"126":1,"127":2,"130":1,"132":1,"138":1,"151":1}}],["wrapping",{"2":{"160":1}}],["written",{"2":{"153":1,"162":1}}],["write",{"2":{"103":1,"157":1}}],["working",{"2":{"125":1,"159":1}}],["work",{"2":{"101":2,"113":1}}],["would",{"2":{"91":1,"127":1,"159":2}}],["wss",{"2":{"14":1,"134":1}}],["w",{"2":{"13":1,"18":1,"101":1,"107":1,"115":1,"133":1,"138":1}}],["why",{"0":{"153":1}}],["while",{"2":{"150":1,"152":1,"159":2}}],["which",{"2":{"4":1,"13":1,"90":1,"101":1,"127":1,"133":1,"151":2,"153":1}}],["whatever",{"2":{"117":1}}],["what",{"0":{"92":1,"151":1,"152":1},"2":{"112":1,"152":1}}],["whether",{"2":{"113":1}}],["when",{"2":{"90":1,"101":1,"103":2,"104":1,"109":3,"112":1,"115":1,"124":2,"161":1,"162":1}}],["where",{"2":{"12":1,"73":1,"91":1,"132":1,"150":1,"162":1}}],["were",{"2":{"117":1}}],["website",{"2":{"162":1}}],["websocket",{"2":{"14":2,"134":2}}],["web3",{"2":{"112":2}}],["well",{"2":{"101":1,"107":1,"159":1,"161":1}}],["weight",{"2":{"155":1}}],["wei",{"2":{"13":1,"133":1}}],["we",{"2":{"10":1,"13":1,"70":1,"132":2,"133":1,"150":1,"159":1}}],["windows",{"2":{"113":1,"128":1}}],["window",{"2":{"100":1,"102":1,"103":1,"107":1,"108":1,"109":1,"112":1}}],["wildcard",{"2":{"12":1}}],["will",{"2":{"4":1,"8":2,"10":1,"12":1,"13":2,"14":1,"19":1,"21":1,"46":1,"52":1,"74":2,"91":1,"92":3,"98":1,"101":7,"103":3,"104":1,"106":1,"107":1,"109":1,"112":1,"113":2,"116":1,"117":1,"127":1,"132":1,"133":2,"134":1,"139":1,"143":1,"144":1,"151":1,"159":5,"162":1}}],["without",{"2":{"153":1,"155":1,"157":1}}],["withing",{"2":{"161":1}}],["within",{"2":{"38":1,"158":1}}],["with",{"0":{"9":1,"11":1,"20":1,"140":1},"2":{"8":1,"11":1,"13":2,"14":1,"18":1,"19":1,"74":1,"87":1,"90":1,"92":6,"94":1,"101":3,"102":2,"103":1,"107":2,"108":2,"113":2,"115":2,"116":2,"117":5,"124":1,"125":1,"126":1,"132":1,"133":2,"134":1,"138":1,"139":1,"141":1,"143":2,"147":1,"153":2,"155":1,"159":2}}],["wait",{"2":{"155":1}}],["waiting",{"2":{"155":1}}],["want",{"2":{"70":1,"102":1,"108":1,"151":1}}],["watch",{"0":{"18":1,"138":1},"2":{"18":1,"138":1}}],["was",{"2":{"11":1,"115":1,"116":2,"117":1}}],["warning",{"2":{"6":1,"22":1,"23":1,"24":1,"103":1,"117":1,"122":1,"130":1,"148":6}}],["walk",{"2":{"4":1,"98":1,"106":1,"127":1,"151":1}}],["www",{"2":{"1":1}}],["xzvf",{"2":{"142":1}}],["x",{"2":{"120":1}}],["x86",{"2":{"6":4,"22":4,"23":4,"24":4,"122":4,"130":4,"142":1}}],["xvzf",{"2":{"6":6,"22":6,"23":6,"24":6,"88":3,"95":3,"122":6,"130":6}}],["x3c",{"2":{"3":2,"11":1,"13":9,"14":11,"15":2,"18":4,"20":1,"101":4,"103":1,"107":3,"109":1,"112":2,"124":2,"125":16,"133":9,"134":9,"135":2,"138":4,"140":1,"144":1}}],["xyz",{"2":{"1":1}}],["ultimate",{"2":{"162":1}}],["ultimately",{"2":{"160":1}}],["ux",{"2":{"153":1,"160":1}}],["unlocks",{"2":{"154":1}}],["unacceptable",{"2":{"153":1}}],["universally",{"2":{"153":1}}],["unique",{"2":{"150":1,"158":1}}],["under",{"2":{"115":1}}],["underlying",{"2":{"109":1}}],["unknown",{"2":{"6":2,"22":2,"23":2,"24":2,"122":2,"130":2}}],["up",{"2":{"103":1,"109":1,"112":1,"132":1,"162":1}}],["updating",{"2":{"101":1,"103":1,"107":1}}],["updates",{"2":{"161":1}}],["update",{"2":{"91":2,"92":1,"101":3,"103":2,"107":1,"109":2,"112":1,"115":1,"144":1,"161":1}}],["utilizing",{"2":{"158":1}}],["utility",{"2":{"19":1,"139":1}}],["utia",{"2":{"70":1}}],["u",{"2":{"62":1,"65":1,"70":1,"73":1,"81":1,"86":1}}],["u64",{"2":{"14":1,"134":1}}],["us",{"2":{"152":1}}],["usage",{"0":{"28":1,"30":1,"32":1,"34":1,"37":1,"39":1,"42":1,"45":1,"47":1,"50":1,"53":1,"56":1,"59":1,"61":1,"64":1,"67":1,"69":1,"72":1,"75":1,"78":1,"80":1,"83":1,"85":1}}],["users",{"2":{"154":1,"155":2,"158":1}}],["user",{"2":{"24":1,"91":1,"122":1,"130":1,"153":1}}],["usetty",{"2":{"14":1,"134":1}}],["used",{"0":{"97":1},"2":{"13":1,"26":1,"33":1,"35":2,"38":1,"41":1,"48":2,"51":2,"70":1,"74":1,"92":1,"103":1,"109":1,"112":3,"133":1,"160":2}}],["use",{"0":{"91":1},"2":{"10":1,"13":2,"14":1,"17":1,"20":1,"91":1,"92":1,"101":2,"102":1,"103":1,"107":1,"108":1,"109":1,"116":1,"124":1,"125":1,"132":1,"133":2,"134":1,"137":1,"140":1,"150":1,"155":1,"159":1}}],["uses",{"2":{"4":1,"12":1,"127":1,"151":1,"162":1}}],["usr",{"2":{"6":6,"22":6,"23":6,"24":6,"88":3,"89":1,"95":3,"96":1,"122":6,"130":6,"142":1}}],["using",{"0":{"3":1,"88":1,"95":1},"2":{"8":1,"13":2,"19":1,"55":1,"90":2,"98":1,"101":3,"103":2,"106":1,"109":2,"116":1,"117":2,"118":1,"133":2,"144":1,"150":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":2,"162":1}}],["url=http",{"2":{"20":1,"140":1}}],["url=https",{"2":{"3":1}}],["urls",{"2":{"14":1,"134":1}}],["url",{"2":{"1":1,"3":1,"19":1,"62":3,"65":3,"70":3,"73":3,"81":3,"86":3,"101":1,"139":1}}],["b",{"2":{"154":1}}],["breaks",{"2":{"155":1}}],["branch",{"2":{"129":1}}],["bridge",{"0":{"66":1,"68":1,"71":1},"1":{"67":1,"69":1,"70":1,"72":1,"73":1},"2":{"66":1,"67":1,"68":1,"69":1,"70":6,"71":1,"72":1,"73":5}}],["bundles",{"2":{"159":2}}],["bundle",{"2":{"154":1}}],["built",{"2":{"101":1,"144":1,"146":1}}],["builder",{"2":{"159":8}}],["buildflags",{"2":{"144":1}}],["build",{"0":{"89":1,"96":1,"100":1,"143":1},"2":{"89":1,"96":1,"100":2,"107":2,"143":1,"144":2}}],["but",{"2":{"92":1,"101":1,"103":1,"128":1,"144":1,"161":1}}],["bug",{"2":{"6":1,"22":1,"23":1,"24":1,"122":1,"130":1}}],["body>",{"2":{"125":2}}],["both",{"2":{"52":1,"113":1,"142":1,"157":1,"160":1}}],["bool",{"2":{"26":1,"62":1,"65":1,"70":1,"73":1,"76":4,"81":1,"86":1}}],["book",{"2":{"24":1,"100":1,"107":1,"112":1,"122":1,"130":1}}],["box",{"2":{"16":1,"136":1,"148":2,"150":1}}],["by",{"2":{"13":1,"55":1,"90":2,"92":1,"125":1,"133":1,"146":1,"147":1,"153":1,"154":1,"155":1,"159":1,"161":1,"162":1}}],["better",{"2":{"153":1}}],["benefits",{"2":{"153":1}}],["believe",{"2":{"150":1}}],["below",{"2":{"2":1,"14":1,"124":1,"134":1}}],["been",{"2":{"128":1,"134":1,"162":1}}],["best",{"2":{"101":1}}],["before",{"2":{"33":1,"38":1,"41":1,"132":1,"160":1}}],["because",{"2":{"12":1,"154":1,"160":1}}],["being",{"2":{"11":1,"157":1}}],["be",{"2":{"10":1,"11":1,"12":2,"13":3,"14":3,"19":1,"26":1,"33":2,"38":2,"41":2,"70":1,"73":1,"74":2,"86":1,"89":1,"90":2,"91":1,"92":2,"96":1,"101":2,"103":1,"112":2,"133":3,"134":2,"139":1,"150":1,"154":1,"155":2,"160":1,"161":1,"162":1}}],["binary",{"2":{"57":4,"89":1,"96":1,"142":4}}],["binaries",{"0":{"41":1},"1":{"42":1,"43":1},"2":{"33":1,"41":1,"42":1,"97":1,"142":2,"143":1,"145":2}}],["bin",{"2":{"6":6,"22":6,"23":6,"24":6,"88":3,"89":2,"95":3,"96":2,"122":6,"130":6,"142":1}}],["batches",{"2":{"158":1}}],["batching",{"2":{"153":1}}],["bargain",{"2":{"153":1}}],["bad",{"2":{"117":1}}],["back",{"2":{"115":1,"158":1}}],["base",{"2":{"35":1,"48":1,"51":1,"116":1,"153":1,"155":4}}],["based",{"2":{"12":1}}],["bashjust",{"2":{"102":1,"108":1,"113":1}}],["bashgit",{"2":{"89":1,"96":1,"100":1,"107":1,"112":1,"129":1,"143":1}}],["bashglobal",{"2":{"14":1,"134":1}}],["bash",{"2":{"56":1,"102":2,"108":2,"112":1,"124":1,"125":1,"142":1,"144":1}}],["bashastria",{"2":{"15":1,"16":1,"17":1,"28":1,"30":1,"32":1,"34":1,"37":1,"39":1,"42":1,"45":1,"47":1,"50":1,"53":1,"59":1,"61":1,"64":1,"67":1,"69":1,"72":1,"75":1,"78":1,"80":1,"83":1,"85":1,"91":1,"92":2,"101":1,"103":2,"104":1,"109":2,"124":1,"135":1,"136":1,"137":1}}],["bashsuccessfully",{"2":{"13":1,"133":1}}],["bashname",{"2":{"11":1,"18":1,"125":1,"138":1}}],["bashkubectl",{"2":{"10":1,"11":1,"18":1,"125":1,"126":1,"138":1}}],["bashcreate",{"2":{"15":1,"135":1}}],["bashcat",{"2":{"14":1,"134":1}}],["bashcargo",{"2":{"6":1,"22":1,"23":1,"24":1,"122":1,"130":1}}],["bashcast",{"2":{"3":3,"13":1,"20":4,"101":1,"107":1,"133":1,"140":4}}],["bashcurl",{"2":{"6":3,"22":3,"23":3,"24":3,"88":3,"95":3,"122":3,"130":3}}],["bashexport",{"2":{"3":2,"13":3,"14":2,"15":1,"20":2,"124":1,"133":3,"134":2,"135":1,"140":2}}],["balances",{"0":{"60":1},"1":{"61":1,"62":1},"2":{"60":1}}],["balance>",{"2":{"13":1,"14":1,"133":1,"134":1}}],["balancer",{"2":{"11":1}}],["balancers",{"2":{"11":1}}],["balance",{"2":{"3":2,"13":4,"14":1,"16":1,"20":2,"61":1,"62":1,"65":1,"101":1,"107":1,"133":4,"134":1,"136":1,"140":2,"145":2}}],["blockchains",{"2":{"155":1}}],["blockchain",{"2":{"153":1,"158":1}}],["blocks",{"2":{"74":1,"101":1,"155":2,"157":1,"158":1,"160":4,"161":6}}],["blockscout",{"2":{"18":1,"19":1,"138":1,"139":1}}],["blockheight",{"0":{"63":1},"1":{"64":1,"65":1},"2":{"64":1,"97":1,"101":1,"124":1}}],["block",{"0":{"123":1,"124":1},"1":{"124":1},"2":{"1":1,"13":1,"14":1,"19":1,"20":1,"63":1,"97":1,"101":5,"117":2,"119":1,"124":5,"133":1,"134":1,"139":1,"140":1,"148":2,"150":1,"153":1,"154":2,"155":2,"159":2,"160":1,"161":2}}],["twitter",{"2":{"152":1}}],["times",{"2":{"160":1}}],["title>",{"2":{"125":1}}],["title>404",{"2":{"125":1}}],["tip",{"2":{"8":1,"12":1,"101":1,"109":1,"113":1,"118":1,"127":1,"132":1,"148":4,"150":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1}}],["tui",{"2":{"104":1,"109":1,"116":1}}],["tutorial",{"0":{"97":1}}],["tuples",{"2":{"13":1,"133":1}}],["t",{"0":{"92":1},"2":{"152":1}}],["tracking",{"2":{"161":1}}],["transaction",{"0":{"156":1},"2":{"116":1,"153":1,"154":4,"155":1,"156":1,"157":1,"159":2,"162":1}}],["transactions",{"0":{"111":1},"1":{"112":1,"113":1,"114":1,"115":1,"116":1,"117":1},"2":{"15":1,"74":1,"101":2,"103":1,"105":1,"107":1,"110":1,"112":2,"113":4,"115":1,"116":2,"135":1,"153":3,"154":1,"155":3,"158":5,"159":3,"161":2}}],["transfers",{"2":{"158":1}}],["transfer",{"0":{"84":1},"1":{"85":1,"86":1},"2":{"70":1,"84":1,"85":1}}],["truth",{"2":{"160":1}}],["trusted",{"2":{"153":1}}],["trying",{"2":{"91":1,"92":1}}],["termed",{"2":{"155":1}}],["terminal",{"2":{"76":1,"100":1,"102":1,"103":1,"107":1,"108":1,"109":1,"112":1}}],["tested",{"2":{"128":1}}],["testing",{"0":{"112":1,"113":1},"2":{"115":2,"116":2,"143":1}}],["testdenom",{"2":{"92":3}}],["test",{"0":{"105":1,"110":1,"111":1,"116":1},"1":{"112":1,"113":1,"114":1,"115":1,"116":1,"117":1},"2":{"35":1,"48":1,"51":1,"91":2,"92":5,"101":2,"105":2,"107":1,"109":1,"110":2,"112":3,"113":1,"115":1,"116":1}}],["text",{"2":{"16":1,"136":1}}],["tcp",{"2":{"11":3,"125":3}}],["type",{"2":{"11":1,"14":1,"26":1,"35":1,"40":1,"43":1,"48":1,"51":1,"54":1,"57":1,"62":1,"65":1,"70":1,"73":1,"76":1,"81":1,"86":1,"125":1,"134":1}}],["tackles",{"2":{"153":1}}],["tailored",{"2":{"150":1}}],["tags=darwin",{"2":{"144":1}}],["tags",{"2":{"14":2,"134":2,"144":2}}],["tag=cli",{"2":{"6":2,"22":2,"23":2,"24":2,"122":2,"130":2}}],["takes",{"2":{"157":1}}],["take",{"2":{"11":1,"160":1}}],["tasks",{"2":{"6":1,"23":1,"24":1,"122":1,"130":1}}],["targeting",{"2":{"90":1}}],["targeted",{"2":{"90":1}}],["target",{"2":{"35":1,"40":1,"43":1,"48":1,"51":1,"54":1,"55":1,"57":1}}],["tar",{"2":{"6":24,"22":24,"23":24,"24":24,"88":12,"95":12,"122":24,"130":24,"142":4}}],["third",{"2":{"159":1}}],["this",{"0":{"97":1},"2":{"4":1,"8":1,"10":1,"11":1,"13":1,"14":2,"21":1,"33":1,"35":2,"38":1,"46":1,"48":2,"49":1,"51":2,"52":1,"89":1,"90":1,"92":1,"96":1,"98":1,"103":1,"106":1,"109":1,"112":1,"115":2,"116":2,"117":3,"124":1,"125":1,"127":1,"128":1,"132":1,"133":1,"134":2,"143":1,"144":1,"146":1,"148":10,"150":2,"152":1,"154":1,"155":7,"157":1,"158":1,"161":1}}],["thus",{"2":{"113":1}}],["thousands",{"2":{"150":1}}],["though",{"2":{"46":1}}],["those",{"2":{"8":1,"160":1}}],["than",{"2":{"14":1,"160":1}}],["that",{"2":{"8":1,"11":1,"26":1,"90":1,"92":1,"101":1,"103":1,"104":1,"105":1,"109":1,"110":1,"115":1,"116":3,"117":3,"125":1,"132":1,"134":1,"143":1,"150":2,"154":2,"155":4,"157":1,"158":3,"159":2,"161":5,"162":1}}],["through",{"2":{"4":1,"98":1,"106":1,"113":1,"127":1,"151":2,"156":1,"157":1,"159":1}}],["theory",{"2":{"155":1}}],["them",{"2":{"143":1,"153":1,"155":2,"159":2,"160":2}}],["these",{"2":{"143":1,"150":1,"153":2,"158":1,"161":1}}],["then",{"2":{"92":2,"101":1,"103":2,"117":1,"155":1}}],["they",{"2":{"91":1,"101":1,"155":2}}],["their",{"2":{"14":1,"46":1,"52":1,"91":1,"134":1,"143":1,"155":3,"157":1,"159":1}}],["there",{"2":{"6":1,"22":1,"23":1,"24":1,"122":1,"130":1,"142":1,"159":1}}],["the",{"0":{"6":1,"17":1,"22":1,"23":1,"24":1,"87":1,"92":1,"94":1,"101":1,"103":1,"104":2,"109":1,"112":1,"113":1,"121":1,"122":1,"129":1,"130":1,"137":1,"141":1,"143":1,"158":1},"1":{"88":1,"89":1,"95":1,"96":1,"97":1,"122":1,"142":1,"143":1,"144":1,"145":1},"2":{"2":1,"4":1,"6":3,"7":2,"8":4,"10":1,"11":2,"12":1,"13":6,"14":12,"15":1,"16":3,"17":2,"18":2,"19":1,"21":2,"22":3,"23":3,"24":3,"26":4,"27":2,"29":2,"31":1,"33":2,"35":9,"36":1,"38":1,"40":1,"43":1,"44":2,"46":1,"48":9,"49":4,"51":9,"52":1,"54":1,"55":1,"57":4,"58":1,"60":2,"62":3,"63":2,"65":3,"66":2,"70":13,"71":1,"73":10,"74":3,"76":5,"79":1,"81":2,"86":8,"87":3,"89":3,"90":6,"91":9,"92":12,"94":3,"96":3,"97":6,"98":3,"101":21,"102":6,"103":16,"104":5,"105":2,"106":4,"107":7,"108":6,"109":16,"110":2,"112":12,"113":7,"115":9,"116":14,"117":13,"118":4,"119":2,"120":2,"122":3,"124":5,"125":5,"126":1,"127":2,"130":3,"131":2,"132":2,"133":6,"134":11,"135":1,"136":3,"137":2,"138":2,"139":1,"141":3,"142":6,"143":4,"144":5,"145":9,"146":1,"149":2,"150":6,"151":4,"152":1,"153":6,"154":6,"155":15,"156":6,"157":8,"158":17,"159":20,"160":19,"161":30,"162":10}}],["total",{"2":{"157":1}}],["together",{"2":{"155":1}}],["today",{"2":{"153":1}}],["tool",{"2":{"87":1,"94":1,"141":1}}],["tools",{"2":{"6":2,"22":1,"23":2,"24":3,"122":3,"130":3}}],["tokens",{"2":{"71":1,"84":1,"158":1}}],["tomlsequencer",{"2":{"92":1}}],["toml",{"2":{"49":1,"90":1,"91":1,"92":1,"103":2,"109":2,"116":1}}],["to",{"0":{"2":1},"2":{"2":1,"6":1,"8":2,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":4,"17":1,"18":1,"22":1,"23":1,"24":1,"35":2,"46":1,"48":2,"51":2,"52":1,"55":1,"57":5,"62":1,"65":1,"70":3,"73":1,"74":1,"76":1,"84":1,"85":1,"86":1,"87":2,"89":2,"91":6,"92":8,"94":2,"96":2,"98":1,"101":6,"102":4,"103":5,"105":1,"106":1,"107":1,"108":4,"109":2,"110":1,"112":1,"113":1,"115":4,"116":3,"117":2,"118":2,"122":1,"124":2,"127":1,"130":1,"132":1,"133":1,"134":1,"135":1,"136":4,"137":1,"138":1,"141":2,"142":1,"143":1,"144":3,"150":6,"151":4,"152":1,"153":4,"154":4,"155":13,"156":2,"157":7,"158":4,"159":11,"160":9,"161":13,"162":3}}],["learn",{"2":{"151":1}}],["level",{"2":{"26":3,"57":3,"155":1}}],["lt",{"2":{"13":2,"14":4,"16":1,"19":6,"90":1,"133":2,"134":3,"136":2,"139":3}}],["language",{"2":{"155":1}}],["lazy",{"2":{"155":2,"157":1,"158":1}}],["layers",{"2":{"157":1}}],["layer",{"0":{"162":1},"2":{"153":1,"155":4,"160":3,"162":1}}],["launch",{"2":{"116":1}}],["later",{"2":{"101":2,"107":1}}],["latest",{"0":{"6":1,"22":1,"23":1,"24":1,"121":1,"122":1,"130":1},"1":{"122":1},"2":{"6":1,"22":1,"23":1,"24":1,"117":2,"120":1,"122":1,"130":1,"144":1}}],["labelprefix",{"2":{"14":1,"134":1}}],["larger",{"2":{"13":1,"133":1}}],["ll",{"2":{"6":1,"22":1,"23":1,"24":1,"122":1,"130":1}}],["l",{"2":{"6":6,"22":6,"23":6,"24":6,"88":3,"95":3,"122":6,"130":6,"142":1}}],["list",{"2":{"149":1}}],["line",{"2":{"147":1}}],["linux",{"2":{"6":2,"22":2,"23":2,"24":2,"88":2,"95":2,"122":2,"128":1,"130":2,"142":1,"144":1}}],["linuxfrom",{"2":{"6":1,"22":1,"23":1,"24":1,"122":1,"130":1}}],["light",{"2":{"18":1,"138":1,"155":1}}],["liveness",{"2":{"153":1}}],["live",{"2":{"13":1,"133":1}}],["likely",{"2":{"91":1,"116":1,"117":1}}],["like",{"2":{"2":1,"11":1,"89":1,"92":1,"96":1,"127":1,"142":1,"147":1}}],["lowercase",{"2":{"134":1}}],["logic",{"2":{"161":1}}],["logs",{"2":{"104":1,"109":1,"116":1}}],["log",{"2":{"26":3,"57":3,"113":1}}],["loglevel",{"2":{"14":1,"134":1}}],["load",{"2":{"11":2}}],["loadbalancer",{"0":{"11":1,"125":1},"2":{"10":1,"11":2,"125":3}}],["location",{"2":{"89":1,"96":1,"142":1}}],["localdev",{"2":{"134":1,"139":3,"140":1}}],["locally",{"0":{"143":1},"2":{"98":1,"106":1,"109":1,"113":1,"139":1}}],["local",{"0":{"5":1,"98":1,"103":1,"104":1,"106":1,"109":1,"128":1,"132":1},"1":{"6":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"107":1,"108":1,"109":1,"110":1,"129":1,"130":1},"2":{"6":6,"22":6,"23":6,"24":6,"33":1,"35":6,"44":1,"48":6,"51":6,"55":2,"56":3,"57":1,"87":1,"88":3,"89":1,"91":2,"92":13,"93":1,"94":1,"95":3,"96":1,"97":2,"98":1,"100":1,"101":2,"104":1,"106":1,"107":2,"109":5,"112":2,"113":2,"115":1,"117":2,"118":1,"122":6,"127":1,"130":6,"132":3,"141":1,"142":1,"143":1,"145":4,"150":1,"151":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1}}],["locks",{"2":{"71":1}}],["lock",{"0":{"71":1},"1":{"72":1,"73":1},"2":{"72":1}}],["locked",{"2":{"6":2,"22":2,"23":2,"24":2,"122":2,"130":2,"157":1}}],["looking",{"2":{"152":1}}],["look",{"2":{"2":1,"92":1,"116":1}}],["md",{"2":{"148":1}}],["md```js",{"2":{"147":1}}],["msg",{"2":{"147":2}}],["middleware",{"2":{"153":1}}],["mismatched",{"2":{"117":1}}],["mismatch",{"0":{"117":1}}],["millions",{"2":{"101":1}}],["minimal",{"2":{"55":1,"97":1,"145":1}}],["minimum",{"2":{"8":1,"143":1}}],["minutes",{"2":{"11":1}}],["modular",{"2":{"155":1}}],["monolithic",{"2":{"155":1}}],["most",{"2":{"91":2,"101":1}}],["moves",{"2":{"159":1}}],["move",{"2":{"89":1,"96":1,"142":1,"151":1}}],["mocha",{"2":{"18":1,"138":1}}],["more",{"0":{"149":1,"152":1},"2":{"6":1,"12":1,"14":1,"22":1,"23":1,"24":1,"97":1,"122":1,"130":1,"151":1,"157":1,"162":1}}],["much",{"2":{"160":1}}],["multiple",{"2":{"13":1,"133":1,"153":1,"154":1}}],["must",{"2":{"12":1,"14":2,"33":1,"38":1,"41":1,"134":2}}],["message",{"2":{"161":1}}],["mentioned",{"2":{"161":1}}],["mempool",{"2":{"159":1}}],["mev",{"2":{"159":2}}],["meaning",{"2":{"158":1}}],["means",{"2":{"115":1,"116":1,"117":1,"157":1}}],["me",{"2":{"134":1,"139":3,"140":1}}],["meet",{"2":{"8":1,"150":1}}],["metamask",{"0":{"2":1},"2":{"2":1}}],["mv",{"2":{"6":6,"22":6,"23":6,"24":6,"88":3,"89":1,"95":3,"96":1,"122":6,"130":6,"142":1}}],["marked",{"2":{"161":1}}],["markdown",{"0":{"146":1},"1":{"147":1,"148":1,"149":1},"2":{"146":1,"149":1}}],["making",{"2":{"125":1}}],["make",{"2":{"87":1,"94":1,"116":1,"132":1,"141":1}}],["match",{"2":{"112":1}}],["mainnet",{"2":{"57":1}}],["many",{"2":{"150":1}}],["man",{"2":{"24":1,"122":1,"130":1}}],["manifest",{"2":{"14":1,"134":1}}],["manage",{"2":{"12":1}}],["manually",{"0":{"123":1},"1":{"124":1},"2":{"2":1,"124":2}}],["may",{"2":{"11":1,"144":1}}],["machine",{"2":{"98":1,"106":1,"113":1,"118":1,"150":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1}}],["macos",{"2":{"6":1,"22":1,"23":1,"24":1,"122":1,"128":1,"130":1,"142":2}}],["macx86",{"2":{"6":2,"22":2,"23":2,"24":2,"88":2,"95":2,"122":2,"130":2}}],["flow",{"0":{"156":1},"2":{"156":1}}],["flourish",{"2":{"150":1}}],["flag",{"2":{"26":1,"35":1,"40":1,"43":1,"48":1,"51":1,"54":1,"55":1,"57":1,"62":1,"65":1,"70":1,"73":1,"76":1,"81":1,"86":1,"90":1,"124":1}}],["flags",{"0":{"26":1,"35":1,"40":1,"43":1,"48":1,"51":1,"54":1,"57":1,"62":1,"65":1,"70":1,"73":1,"76":1,"81":1,"86":1},"2":{"26":1,"32":1,"34":1,"37":1,"39":1,"42":1,"45":1,"47":1,"50":1,"53":1,"56":3,"59":1,"61":1,"64":1,"69":1,"72":1,"75":1,"78":1,"80":1,"83":1,"85":1,"92":1}}],["free",{"2":{"87":1,"94":1,"141":1}}],["from",{"0":{"89":1,"96":1,"142":1},"2":{"62":1,"65":1,"84":1,"101":2,"103":1,"115":1,"117":3,"125":1,"142":1,"153":1,"155":4,"157":1,"158":1,"159":1,"160":2,"161":3,"162":1}}],["fear",{"2":{"157":1}}],["feature",{"2":{"155":1,"158":1}}],["features",{"2":{"97":1,"147":1}}],["fetched",{"2":{"124":1}}],["fetch",{"0":{"123":1},"1":{"124":1}}],["fees",{"2":{"70":1}}],["fee",{"2":{"35":1,"48":1,"51":1,"70":3}}],["few",{"2":{"11":1}}],["f613",{"2":{"15":1,"135":1}}],["facilitate",{"2":{"158":1}}],["faustian",{"2":{"153":1}}],["faucet",{"2":{"1":2,"7":2,"13":2,"16":2,"17":2,"18":1,"19":2,"20":1,"103":1,"116":1,"119":4,"131":2,"133":2,"136":2,"137":2,"138":1,"139":2,"140":1}}],["faster",{"2":{"160":1}}],["fast",{"2":{"150":1,"153":1,"155":2,"160":1}}],["faq",{"0":{"118":1},"1":{"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1},"2":{"151":1}}],["failed",{"2":{"117":1}}],["false",{"2":{"14":1,"134":1}}],["fifo",{"2":{"159":1}}],["filtered",{"2":{"161":1}}],["filters",{"2":{"161":1}}],["filter",{"2":{"155":1}}],["files",{"2":{"46":2,"49":1,"143":1,"145":1}}],["file=$rollup",{"2":{"14":1,"134":1}}],["file",{"2":{"14":2,"17":1,"35":2,"48":2,"49":1,"51":2,"90":2,"101":2,"103":2,"107":1,"109":1,"112":2,"134":2,"137":1}}],["firm",{"2":{"155":1,"160":1,"161":2}}],["first",{"2":{"101":1,"117":1}}],["finalized",{"2":{"161":1}}],["finalization",{"2":{"158":1}}],["finality",{"2":{"155":1,"160":2}}],["final",{"2":{"155":1,"162":1}}],["find",{"2":{"103":1,"109":1,"151":1,"152":1}}],["fit",{"2":{"155":1}}],["fix",{"2":{"115":1,"116":1,"117":1}}],["field",{"2":{"11":1}}],["fulfill",{"2":{"159":1}}],["full",{"2":{"4":1,"127":1,"149":1,"151":1,"155":1,"156":1}}],["future",{"2":{"150":1,"157":1}}],["function",{"2":{"159":1}}],["functionality",{"2":{"87":1,"94":1,"141":1,"145":1}}],["funds",{"2":{"16":2,"116":1,"136":2}}],["fund",{"0":{"16":1,"136":1},"2":{"103":1,"116":1}}],["funded",{"2":{"13":2,"116":2,"133":2}}],["f",{"2":{"10":1}}],["foundry",{"2":{"24":1,"100":2,"107":2,"112":2,"122":1,"130":1}}],["found",{"2":{"10":1,"12":1,"90":1,"125":2,"155":1}}],["forcing",{"2":{"159":1}}],["fork",{"2":{"155":1,"157":1}}],["format",{"2":{"76":1,"86":1}}],["forge",{"2":{"24":1,"112":1,"113":1,"122":1,"130":1}}],["for",{"0":{"18":1,"138":1},"2":{"6":2,"7":1,"11":1,"12":1,"14":3,"15":1,"18":1,"21":1,"22":2,"23":2,"24":2,"26":2,"27":1,"31":1,"35":2,"36":1,"38":1,"41":1,"44":1,"48":2,"49":2,"51":2,"57":1,"58":1,"66":1,"70":2,"73":1,"74":1,"77":1,"82":1,"86":1,"90":2,"91":2,"92":2,"97":1,"101":5,"107":2,"109":1,"112":2,"116":4,"117":1,"119":1,"122":2,"125":1,"126":1,"130":2,"131":1,"134":2,"135":1,"138":1,"142":4,"143":3,"144":4,"145":4,"149":1,"152":1,"153":2,"154":1,"155":2,"157":5,"158":1,"159":1,"160":4,"161":4,"162":1}}],["follows",{"2":{"14":1,"91":1,"134":1,"144":1,"156":1}}],["following",{"2":{"6":2,"22":2,"23":2,"24":2,"92":2,"101":1,"102":1,"108":1,"119":1,"120":1,"122":2,"124":1,"130":2,"143":1,"157":1}}],["follow",{"2":{"2":1,"8":1,"105":1,"110":1}}],["away",{"2":{"161":1}}],["auction",{"2":{"159":1}}],["automatically",{"2":{"19":1,"124":1,"139":1}}],["after",{"2":{"155":1}}],["affected",{"2":{"49":1}}],["api",{"2":{"161":1}}],["apis",{"2":{"143":1}}],["approach",{"2":{"159":1}}],["app",{"2":{"143":1}}],["applications",{"2":{"143":1,"150":1}}],["apply",{"2":{"10":1,"155":1}}],["apple",{"2":{"6":4,"22":4,"23":4,"24":4,"122":4,"130":4}}],["availability",{"0":{"162":1},"2":{"162":1}}],["available",{"0":{"145":1},"2":{"142":2}}],["avaliable",{"2":{"97":1}}],["abstracts",{"2":{"161":1}}],["abstractions",{"2":{"159":1}}],["abstraction",{"2":{"159":1}}],["about",{"2":{"151":1,"161":1}}],["above",{"2":{"91":1,"103":1,"109":1,"112":1,"125":1,"158":2}}],["able",{"2":{"103":1,"154":1}}],["amd64",{"2":{"88":2,"95":2,"144":1}}],["amount",{"2":{"72":1,"85":1}}],["acting",{"2":{"159":1}}],["actively",{"2":{"158":1}}],["activities",{"2":{"21":1}}],["act",{"2":{"158":1,"160":1}}],["actors",{"2":{"159":1}}],["actor",{"2":{"153":1}}],["achieve",{"2":{"150":1}}],["access",{"2":{"157":1}}],["accessible",{"2":{"139":1}}],["accepts",{"2":{"153":1}}],["accounts=",{"2":{"13":2,"133":2}}],["accounts",{"2":{"13":2,"133":2}}],["account",{"0":{"13":1,"15":1,"16":1,"133":1,"135":1,"136":1},"2":{"13":1,"15":6,"16":5,"60":1,"68":1,"70":5,"71":1,"73":5,"74":3,"76":4,"79":1,"84":1,"97":1,"101":3,"103":4,"107":3,"112":2,"115":3,"116":5,"133":1,"135":6,"136":5,"145":3}}],["against",{"0":{"98":1,"104":1},"1":{"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1},"2":{"56":1,"57":1,"91":2,"98":1,"103":1,"104":2,"106":1,"113":1,"116":1,"143":1,"155":1}}],["ago",{"2":{"18":2,"138":2}}],["age",{"2":{"11":1,"18":1,"125":1,"138":1}}],["alternatively",{"2":{"155":1}}],["almost",{"2":{"153":1}}],["along",{"2":{"143":1,"160":1,"161":1}}],["alongside",{"2":{"13":1,"133":1,"161":1}}],["already",{"2":{"116":1,"134":1,"161":1}}],["alias",{"2":{"109":1}}],["always",{"2":{"101":2}}],["alloc",{"2":{"101":2,"107":2,"115":1}}],["allowing",{"2":{"143":1}}],["allow",{"2":{"117":1,"144":1}}],["allows",{"2":{"90":1,"150":1,"154":1,"155":2}}],["allowed",{"2":{"14":1,"35":1,"48":1,"51":1,"134":1}}],["all",{"0":{"38":1},"1":{"39":1,"40":1},"2":{"14":1,"21":1,"31":1,"36":1,"38":1,"39":1,"41":1,"46":1,"58":1,"88":1,"92":1,"95":1,"134":1,"145":1,"150":1,"155":2,"159":1,"162":2}}],["alphanumeric",{"2":{"14":1,"134":1}}],["also",{"2":{"6":1,"11":1,"22":1,"23":1,"24":1,"101":2,"102":1,"103":1,"108":1,"122":1,"130":1,"144":1,"154":1,"159":1,"160":2,"161":1}}],["a8fb",{"2":{"13":1,"133":1}}],["atomic",{"2":{"150":1,"154":2}}],["at",{"2":{"13":2,"92":1,"116":1,"133":2,"153":1,"155":2}}],["antithetical",{"2":{"153":1}}],["another",{"2":{"84":1,"158":1}}],["any",{"2":{"26":1,"158":1,"161":1}}],["answer",{"2":{"12":1}}],["an",{"0":{"12":1},"2":{"12":2,"13":1,"14":1,"15":1,"20":1,"57":4,"60":1,"74":1,"77":1,"79":1,"82":1,"109":2,"115":1,"116":2,"124":2,"133":1,"134":2,"135":1,"140":1,"145":2,"148":2,"150":1,"153":2,"154":1,"155":1,"157":1,"158":1,"159":3,"160":1}}],["and",{"0":{"106":1,"109":1,"118":1,"142":1,"143":1},"1":{"107":1,"108":1,"109":1,"110":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1},"2":{"8":4,"10":1,"14":1,"15":1,"21":1,"24":1,"33":1,"35":1,"48":1,"51":1,"52":1,"74":2,"79":1,"87":2,"89":1,"92":3,"94":2,"96":1,"97":2,"100":3,"101":4,"102":3,"103":3,"104":1,"105":2,"107":6,"108":3,"109":3,"110":2,"112":3,"113":1,"116":3,"117":6,"122":1,"124":1,"128":1,"130":1,"134":1,"135":1,"141":2,"142":3,"143":2,"144":1,"145":2,"150":4,"151":1,"153":6,"154":1,"155":2,"157":4,"158":4,"159":5,"160":4,"161":7,"162":2}}],["advantage",{"2":{"157":1}}],["admission",{"2":{"11":1,"125":1}}],["additional",{"2":{"101":1,"147":1,"155":1}}],["adding",{"0":{"2":1}}],["address=8a2f",{"2":{"15":1,"135":1}}],["address",{"2":{"7":1,"13":5,"14":1,"15":2,"16":2,"20":1,"61":1,"70":3,"72":2,"73":3,"74":1,"77":1,"78":1,"80":1,"82":1,"83":1,"86":3,"103":1,"107":1,"115":1,"119":1,"131":1,"133":5,"134":1,"135":2,"136":2,"140":1}}],["address>",{"2":{"3":1,"13":2,"14":1,"15":1,"20":1,"101":1,"107":1,"133":2,"134":1,"135":1,"140":1}}],["addr",{"2":{"3":3,"20":3,"140":3}}],["addr=",{"2":{"3":1,"20":1,"140":1}}],["add",{"2":{"2":1,"115":1,"144":4,"159":1}}],["ask",{"2":{"157":1}}],["astira",{"2":{"101":1}}],["astriasequencerinitialheight",{"2":{"101":3}}],["astriarollupname",{"2":{"101":3,"103":1,"107":2,"109":1}}],["astriaorg",{"2":{"6":8,"22":8,"23":8,"24":8,"88":3,"89":1,"95":3,"96":1,"100":1,"107":1,"112":1,"122":8,"129":1,"130":8,"142":1,"143":1}}],["astria",{"0":{"0":1,"25":1,"87":1,"90":1,"93":1,"94":1,"103":1,"104":1,"109":1,"121":1,"129":1,"141":1,"158":1},"1":{"1":1,"2":1,"3":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"88":1,"89":1,"91":1,"92":1,"95":1,"96":1,"97":1,"122":1,"142":1,"143":1,"144":1,"145":1},"2":{"1":4,"3":1,"4":1,"6":34,"7":2,"14":4,"15":1,"16":1,"17":1,"18":1,"21":1,"22":34,"23":34,"24":34,"26":1,"28":1,"35":3,"38":3,"40":1,"41":2,"43":1,"48":3,"51":3,"54":1,"55":1,"56":3,"57":7,"62":2,"65":2,"70":9,"73":7,"76":4,"81":2,"86":7,"87":2,"88":18,"89":4,"90":3,"91":4,"92":6,"93":1,"94":2,"95":18,"96":4,"97":1,"98":3,"100":2,"101":3,"102":2,"103":7,"104":2,"106":3,"107":2,"108":2,"109":10,"112":3,"113":3,"115":1,"116":5,"117":3,"118":2,"119":5,"122":34,"124":2,"126":1,"127":1,"130":34,"131":2,"132":1,"134":3,"135":1,"136":1,"137":1,"138":1,"141":2,"142":6,"143":8,"145":3,"150":4,"151":2,"152":1,"153":4,"154":4,"155":9,"156":3,"157":5,"158":3,"159":5,"160":2,"161":2,"162":2}}],["assets",{"2":{"35":1,"48":1,"51":1}}],["asset",{"2":{"35":1,"48":1,"51":1,"70":8,"116":1}}],["assumes",{"2":{"8":1}}],["as",{"2":{"13":1,"14":2,"15":1,"46":1,"70":1,"73":1,"87":2,"91":1,"94":2,"101":3,"107":2,"112":1,"124":1,"133":1,"134":2,"135":1,"141":2,"144":1,"150":2,"154":2,"156":1,"157":1,"158":2,"159":5,"160":3,"161":5,"162":1}}],["aarch64",{"2":{"6":2,"22":2,"23":2,"24":2,"122":2,"130":2}}],["arbitrage",{"2":{"154":1}}],["architecture",{"0":{"155":1},"2":{"155":1,"159":1}}],["architectures",{"2":{"142":1}}],["archive",{"2":{"3":1}}],["arg",{"2":{"26":1,"35":1,"40":1,"43":1,"48":1,"51":1,"54":1,"57":1,"62":1,"65":1,"70":1,"73":1,"76":1,"81":1,"86":1}}],["are",{"2":{"7":1,"49":1,"57":1,"91":1,"92":2,"105":1,"110":1,"113":2,"116":1,"117":3,"119":1,"131":1,"142":2,"150":1,"153":1,"154":1,"155":3,"157":1,"158":5,"159":1,"160":4,"161":4}}],["arm64",{"2":{"88":1,"95":1,"142":2,"144":1}}],["arm",{"2":{"6":1,"22":1,"23":1,"24":1,"88":1,"95":1,"122":1,"130":1}}],["a",{"0":{"8":1,"12":1,"98":2,"99":1,"106":1,"107":1,"135":1},"1":{"99":2,"100":3,"101":3,"102":2,"103":2,"104":2,"105":2,"107":1,"108":1,"109":1,"110":1},"2":{"2":1,"4":2,"6":1,"8":3,"10":1,"11":2,"12":4,"13":3,"14":1,"22":1,"23":1,"24":1,"26":1,"38":1,"41":1,"55":3,"56":3,"57":4,"62":1,"65":1,"68":1,"74":1,"76":1,"81":1,"87":1,"89":1,"90":1,"91":2,"92":7,"94":1,"96":1,"97":2,"98":2,"100":1,"101":2,"103":3,"104":1,"106":1,"107":2,"109":4,"112":1,"113":1,"115":2,"116":2,"117":1,"122":1,"124":1,"125":1,"127":4,"130":1,"132":2,"133":3,"141":1,"142":1,"143":2,"145":1,"148":8,"150":4,"151":3,"153":5,"154":4,"155":6,"157":3,"158":4,"159":13,"160":2,"161":2,"162":2}}],["ephemerally",{"2":{"161":1}}],["economic",{"2":{"155":1}}],["economically",{"2":{"150":1,"159":1}}],["ecosystem",{"2":{"155":1}}],["ec20",{"2":{"15":1,"135":1}}],["editor",{"2":{"144":1}}],["e",{"2":{"142":1,"144":1}}],["effectively",{"2":{"109":1,"161":1}}],["either",{"2":{"92":1,"116":1,"117":1,"155":1}}],["eager",{"2":{"151":1}}],["easy",{"2":{"150":1}}],["easily",{"2":{"87":1,"94":1,"141":1}}],["each",{"2":{"90":1,"150":2}}],["errors",{"2":{"117":1}}],["error",{"2":{"57":1,"115":1,"116":1}}],["eg",{"2":{"14":2}}],["enable",{"2":{"160":1}}],["enabling",{"2":{"154":1}}],["engine",{"2":{"158":1}}],["end",{"2":{"155":1}}],["endpoints",{"0":{"7":1,"19":1,"93":1,"119":1,"131":1,"139":1},"2":{"7":1,"19":1,"91":1,"119":1,"131":1,"139":1,"151":1}}],["entire",{"2":{"38":1}}],["enter",{"2":{"16":1,"136":1}}],["en",{"2":{"24":1,"122":1,"130":1}}],["envisions",{"2":{"150":1}}],["environment",{"0":{"132":1},"2":{"14":1,"15":1,"33":1,"97":1,"124":1,"132":1,"134":1,"135":1,"145":1}}],["env",{"2":{"14":2,"26":1,"35":1,"40":1,"43":1,"48":1,"51":1,"54":1,"57":1,"62":1,"65":1,"70":1,"73":1,"76":1,"81":1,"86":1,"112":3,"115":1,"134":2}}],["evaluation",{"2":{"155":1}}],["every",{"2":{"159":1}}],["everything",{"2":{"113":1,"143":1,"152":1}}],["even",{"2":{"92":1,"153":1}}],["eventually",{"2":{"11":1}}],["evmerror",{"0":{"115":1}}],["evm",{"0":{"0":1},"1":{"1":1,"2":1,"3":1},"2":{"1":3,"3":1,"13":1,"112":4,"119":6,"120":1,"133":1,"157":1}}],["excludes",{"2":{"158":1}}],["exciting",{"2":{"154":1}}],["executed",{"2":{"158":2,"161":1}}],["execution",{"2":{"157":1,"158":1,"160":1,"161":5}}],["executing",{"2":{"153":1}}],["executor",{"2":{"19":1,"20":1,"139":1,"140":1}}],["extensions",{"2":{"146":1,"149":1}}],["extension",{"0":{"146":1},"1":{"147":1,"148":1,"149":1}}],["external",{"0":{"11":1},"2":{"11":2,"12":1,"125":2}}],["extract",{"2":{"142":1}}],["existing",{"2":{"116":1}}],["expose",{"2":{"157":1}}],["export",{"2":{"13":2,"14":3,"15":2,"133":2,"134":2,"135":2,"147":1}}],["explicit",{"2":{"159":1}}],["explained",{"2":{"157":1}}],["explorer",{"2":{"1":1,"19":1,"119":2,"139":1}}],["experience",{"2":{"153":1}}],["examples",{"0":{"146":1},"1":{"147":1,"148":1,"149":1},"2":{"159":1}}],["example",{"2":{"12":1,"91":1,"92":1,"112":1,"159":1}}],["eth",{"2":{"3":2,"20":1,"140":1}}],["swap",{"2":{"155":1,"157":1}}],["smart",{"2":{"150":1}}],["spun",{"2":{"162":1}}],["speed",{"2":{"155":1}}],["specified",{"2":{"124":1}}],["specific",{"2":{"57":4,"155":1,"157":1}}],["specify",{"2":{"13":2,"133":2,"154":1}}],["spf13",{"2":{"144":1}}],["safe",{"2":{"161":1}}],["satisfy",{"2":{"157":1}}],["sacrificing",{"2":{"153":1}}],["say",{"2":{"117":2}}],["same",{"2":{"103":1,"109":1,"112":1,"154":1,"161":1}}],["script",{"0":{"112":1,"113":1,"116":1},"2":{"112":1,"113":2,"115":2,"116":2}}],["scout",{"2":{"1":1}}],["skip",{"2":{"103":1}}],["side",{"2":{"161":1}}],["similarly",{"2":{"159":1}}],["simply",{"2":{"157":1,"159":2}}],["simplified",{"2":{"90":1}}],["simple",{"2":{"87":1,"94":1,"141":1,"150":1}}],["single",{"2":{"150":1,"153":3}}],["silicon",{"2":{"142":1}}],["situations",{"2":{"91":1}}],["sign",{"2":{"74":1}}],["sigs",{"2":{"24":1,"122":1,"130":1}}],["syntax",{"0":{"147":1},"2":{"147":1}}],["sync",{"2":{"101":1}}],["syncing",{"2":{"101":1}}],["system",{"2":{"76":1,"77":1,"82":1,"89":1,"96":1}}],["systems",{"2":{"24":1,"122":1,"130":1}}],["symbol",{"2":{"1":1}}],["supply",{"2":{"159":2}}],["support",{"2":{"12":1}}],["subset",{"2":{"155":1}}],["submission",{"2":{"160":1}}],["submissions",{"2":{"157":1}}],["submitted",{"2":{"159":1}}],["submits",{"2":{"159":2}}],["submit",{"2":{"15":1,"135":1,"159":1}}],["submodules",{"2":{"112":1}}],["such",{"2":{"154":2,"158":1}}],["sure",{"2":{"116":1,"132":1}}],["suit",{"2":{"91":1}}],["stubbing",{"2":{"159":1}}],["style",{"2":{"155":1}}],["strongest",{"2":{"155":1}}],["straight",{"2":{"151":1}}],["string",{"2":{"14":2,"26":1,"35":3,"40":1,"43":1,"48":3,"51":3,"54":1,"57":7,"62":1,"65":1,"70":7,"73":5,"81":1,"86":5,"134":1}}],["stop",{"2":{"102":1,"108":1,"116":1,"117":2}}],["store",{"2":{"76":2,"161":2}}],["stored",{"2":{"70":1,"73":1,"86":1}}],["storing",{"2":{"76":1}}],["still",{"2":{"92":1,"103":1,"117":1,"155":1,"159":1}}],["stack",{"2":{"55":2,"87":1,"92":2,"94":1,"97":1,"98":1,"106":1,"109":1,"141":1,"143":1,"145":3,"156":1}}],["stateless",{"2":{"161":1}}],["state",{"0":{"52":1},"1":{"53":1,"54":1},"2":{"46":1,"52":2,"53":1,"102":1,"108":1,"155":3,"157":1}}],["status",{"2":{"18":1,"138":1}}],["static",{"2":{"10":1}}],["starting",{"2":{"101":1,"159":1}}],["started",{"2":{"24":1,"92":1,"100":1,"107":1,"112":1,"122":1,"130":1,"151":1}}],["startup",{"0":{"18":1,"138":1}}],["start",{"0":{"102":1,"108":1,"109":1},"2":{"8":2,"18":1,"24":1,"101":1,"103":1,"117":1,"122":1,"130":1,"138":1,"151":2}}],["svc",{"2":{"11":1,"125":1}}],["soft",{"2":{"155":1,"160":1,"161":2}}],["software",{"0":{"120":1},"2":{"120":1}}],["sovereignty",{"2":{"150":1,"157":1}}],["source",{"0":{"89":1,"96":1},"2":{"6":1,"22":1,"23":1,"24":1,"122":1,"130":1,"160":1}}],["something",{"2":{"11":1,"101":1,"107":1}}],["some",{"2":{"3":1,"20":1,"101":1,"140":1,"146":1,"161":1}}],["shiki",{"2":{"147":1}}],["shjust",{"2":{"132":1}}],["shown",{"2":{"103":1,"109":1,"158":2}}],["show",{"2":{"97":1,"145":1}}],["should",{"0":{"151":1},"2":{"2":1,"11":2,"91":1,"103":1,"109":1,"112":3,"125":1,"150":1,"151":1,"152":1}}],["shapes",{"2":{"161":1}}],["share",{"2":{"150":1}}],["shared",{"2":{"4":1,"7":1,"15":1,"127":1,"131":1,"135":1,"150":2,"151":1,"153":1,"157":2,"158":1}}],["shastria",{"2":{"14":1,"134":1}}],["sh",{"2":{"6":1,"23":1,"24":2,"100":1,"107":1,"112":1,"122":2,"130":2}}],["sent",{"2":{"160":2}}],["sending",{"2":{"161":1}}],["sends",{"2":{"113":1,"161":1}}],["sender",{"2":{"86":3}}],["send",{"2":{"3":1,"16":1,"20":1,"136":1,"140":1}}],["server",{"2":{"161":1}}],["serves",{"2":{"159":1}}],["services",{"2":{"57":2,"92":2,"103":1}}],["service",{"2":{"8":1,"33":1,"57":2,"125":1}}],["separation",{"2":{"159":2}}],["searcher",{"2":{"159":3}}],["sequencing",{"2":{"150":1,"157":2,"158":1}}],["sequencers",{"0":{"153":1},"2":{"150":3,"153":1}}],["sequencer",{"0":{"15":1,"16":1,"58":1,"60":1,"63":1,"66":1,"68":1,"71":1,"74":1,"77":1,"79":1,"82":1,"84":1,"98":1,"104":1,"106":1,"109":1,"123":1,"124":1,"135":1,"136":1,"158":1},"1":{"59":1,"61":1,"62":1,"64":1,"65":1,"67":1,"69":1,"70":1,"72":1,"73":1,"75":1,"76":1,"78":1,"80":1,"81":1,"83":1,"85":1,"86":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"107":1,"108":1,"109":1,"110":1,"124":1},"2":{"4":1,"7":5,"14":4,"15":8,"16":4,"17":1,"35":1,"48":1,"51":1,"52":2,"55":1,"56":2,"57":3,"58":1,"59":1,"60":1,"61":1,"62":3,"63":1,"64":1,"65":3,"66":1,"67":1,"69":1,"70":6,"72":1,"73":6,"74":1,"75":1,"78":1,"80":1,"81":3,"83":1,"85":1,"86":6,"87":1,"90":1,"91":6,"92":15,"93":2,"94":1,"97":4,"98":1,"101":8,"103":11,"104":2,"105":1,"106":1,"109":7,"110":1,"113":1,"116":7,"117":5,"119":4,"120":2,"124":6,"127":1,"131":5,"134":4,"135":8,"136":4,"137":1,"141":1,"143":1,"145":4,"150":1,"151":2,"153":4,"155":1,"157":1,"158":7,"159":4,"160":4,"161":3,"162":1}}],["securely",{"2":{"76":1}}],["secure",{"2":{"70":1,"73":1,"86":1,"150":1}}],["sections",{"2":{"103":1,"109":1,"157":1}}],["section",{"2":{"21":1,"151":1,"161":1}}],["selecting",{"2":{"90":1}}],["select",{"2":{"57":1,"134":1}}],["several",{"2":{"10":1,"19":1,"139":1,"143":1}}],["sees",{"2":{"161":1}}],["seeing",{"2":{"117":1}}],["seen",{"2":{"12":1,"161":2}}],["see",{"2":{"6":1,"11":2,"22":1,"23":1,"24":1,"97":1,"104":1,"109":1,"113":1,"115":1,"116":1,"122":1,"127":1,"130":1,"155":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1}}],["sets",{"2":{"132":1}}],["setting",{"2":{"103":1,"109":2,"112":1}}],["settings",{"2":{"2":1,"144":2}}],["setup",{"0":{"99":1,"107":1,"132":1},"1":{"100":1,"101":1},"2":{"132":1}}],["setkey",{"0":{"82":1},"1":{"83":1},"2":{"83":1}}],["set",{"2":{"3":1,"14":1,"26":1,"35":4,"48":4,"51":4,"57":1,"82":1,"91":1,"92":1,"116":1,"124":3,"134":1,"153":1,"155":1,"158":1}}],["s",{"0":{"13":1,"133":1},"2":{"2":1,"8":2,"11":1,"101":1,"125":1,"134":1,"143":1,"150":1,"153":2,"154":1,"155":3,"159":4,"160":2,"161":2}}],["optionally",{"2":{"158":1}}],["open",{"2":{"100":1,"101":1,"103":3,"107":2,"109":2,"112":1,"144":1}}],["own",{"2":{"118":2,"150":2,"153":3,"154":2,"155":2,"156":2,"157":3,"158":2,"159":3,"160":2,"161":2,"162":2}}],["older",{"2":{"101":1}}],["out",{"2":{"118":2,"149":1,"150":3,"151":1,"152":1,"153":2,"154":2,"155":5,"156":2,"157":3,"158":2,"159":3,"160":2,"161":3,"162":2}}],["outoffunds",{"0":{"115":1},"2":{"115":1}}],["output",{"2":{"70":1,"73":1,"76":1,"86":1,"142":1,"147":1,"148":1}}],["our",{"2":{"12":1,"132":2,"151":2,"159":2}}],["other",{"2":{"49":1,"97":1,"143":1,"155":1,"159":1}}],["over",{"2":{"157":1,"159":1}}],["override",{"2":{"26":1,"35":1,"40":1,"43":1,"48":1,"51":1,"54":1,"57":5,"62":1,"65":1,"70":1,"73":1,"76":1,"81":1,"86":1}}],["overview",{"0":{"21":1,"127":1,"155":1},"1":{"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1},"2":{"151":1}}],["order",{"2":{"155":1,"162":1}}],["ordering",{"2":{"154":1}}],["ordered",{"2":{"153":1,"158":2,"160":1,"162":1}}],["or",{"2":{"13":1,"28":1,"55":1,"89":1,"92":1,"96":1,"113":1,"116":2,"117":2,"124":1,"133":1,"144":1,"152":1,"155":1,"157":1}}],["org",{"2":{"1":3,"3":1,"7":2,"14":3,"16":1,"91":2,"93":1,"101":1,"103":2,"119":5,"131":2,"134":2,"136":1}}],["of",{"2":{"8":2,"12":1,"13":3,"14":2,"18":1,"20":1,"29":1,"60":1,"62":1,"63":1,"65":1,"70":6,"73":4,"76":1,"79":1,"81":1,"86":4,"90":1,"92":3,"97":1,"98":1,"101":4,"104":1,"106":1,"107":1,"109":1,"113":1,"133":3,"134":2,"138":1,"140":1,"143":1,"144":1,"145":1,"146":1,"149":1,"150":4,"153":1,"154":1,"155":5,"157":3,"158":6,"159":6,"160":4,"161":3,"162":1}}],["official",{"2":{"2":1}}],["one",{"2":{"84":1,"101":1,"116":1,"150":1}}],["only",{"2":{"49":1,"92":1,"143":1,"154":2,"158":1,"161":1}}],["once",{"2":{"9":1,"101":1,"144":1,"151":1,"159":1,"162":1}}],["on",{"2":{"4":2,"12":1,"13":1,"15":1,"26":1,"60":1,"71":1,"89":1,"96":1,"97":1,"98":1,"101":3,"106":1,"107":1,"113":1,"117":1,"118":3,"127":2,"128":1,"133":1,"135":1,"144":1,"145":1,"150":3,"151":3,"152":1,"153":6,"154":5,"155":3,"156":3,"157":3,"158":5,"159":4,"160":3,"161":5,"162":3}}],["ondora",{"2":{"1":1}}],["ocean",{"0":{"4":1},"1":{"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"4":1,"8":2,"10":1,"11":2,"118":1,"150":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1}}],["rule",{"2":{"155":1}}],["runtime",{"2":{"92":1}}],["runs",{"2":{"55":1,"97":1,"120":1,"143":1,"145":1,"161":1}}],["running",{"2":{"18":4,"92":2,"98":1,"101":1,"103":1,"104":1,"105":1,"106":1,"109":2,"110":1,"113":3,"115":1,"116":1,"117":1,"124":1,"132":1,"138":4,"151":1,"161":1}}],["run",{"0":{"55":1,"98":1,"104":1,"106":1,"113":1,"142":1,"143":1},"1":{"56":1,"57":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"107":1,"108":1,"109":1,"110":1},"2":{"10":1,"14":1,"33":2,"38":2,"41":2,"55":1,"56":6,"57":1,"87":1,"89":2,"90":1,"91":2,"92":4,"94":1,"96":2,"97":1,"98":1,"101":1,"102":4,"103":1,"104":2,"106":1,"108":4,"109":5,"112":1,"113":2,"115":1,"116":1,"117":3,"132":1,"134":1,"141":1,"142":1,"143":4,"145":1,"159":2}}],["rolllups",{"2":{"160":1}}],["rollups",{"0":{"157":1},"2":{"150":2,"153":3,"154":1,"155":7,"161":1}}],["rollup",{"0":{"13":1,"14":1,"17":1,"18":1,"19":1,"20":1,"98":1,"99":1,"105":1,"106":1,"107":1,"110":1,"133":1,"134":1,"137":1,"138":1,"139":1,"140":1,"154":1},"1":{"99":1,"100":2,"101":2,"102":1,"103":1,"104":1,"105":1,"107":1,"108":1,"109":1,"110":1},"2":{"4":1,"13":5,"14":15,"15":1,"17":2,"18":5,"19":4,"69":1,"87":1,"91":1,"92":1,"94":1,"98":1,"101":8,"102":3,"103":4,"105":1,"106":1,"107":2,"108":3,"109":4,"110":1,"113":1,"115":3,"117":7,"118":2,"124":3,"126":1,"127":2,"132":1,"133":5,"134":15,"135":1,"137":2,"138":5,"139":4,"141":1,"143":2,"150":5,"151":1,"153":2,"154":5,"155":3,"156":2,"157":8,"158":4,"159":4,"160":2,"161":9,"162":3}}],["roles",{"2":{"159":1}}],["role",{"2":{"159":2,"161":1}}],["root",{"2":{"31":1,"36":1,"44":1,"58":1,"66":1,"145":1,"155":2}}],["routing",{"2":{"12":1}}],["raw",{"2":{"10":1}}],["ram",{"2":{"8":2}}],["reduce",{"2":{"153":1}}],["real",{"2":{"159":2}}],["reach",{"2":{"152":1}}],["read",{"0":{"151":1},"2":{"157":1,"161":1}}],["ready",{"2":{"18":1,"138":1}}],["requiring",{"2":{"159":1}}],["required",{"2":{"98":1,"106":1,"143":1,"161":1}}],["requires",{"2":{"70":1,"73":1,"86":1,"89":1,"96":1,"100":1,"107":1,"144":1}}],["requirements",{"2":{"8":1,"150":1}}],["requirement",{"2":{"8":1}}],["request",{"2":{"125":1}}],["relying",{"2":{"153":1}}],["relayer",{"0":{"160":1},"2":{"120":1,"158":1,"160":3,"161":3}}],["relevant",{"2":{"101":1,"161":2}}],["release",{"0":{"142":1},"2":{"6":3,"22":3,"23":3,"24":3,"122":3,"130":3}}],["releases",{"2":{"6":6,"22":6,"23":6,"24":6,"88":4,"95":4,"122":6,"130":6,"142":2}}],["rejected",{"2":{"116":1}}],["rerun",{"2":{"115":1,"116":1}}],["regularly",{"2":{"161":1}}],["regardless",{"2":{"113":1}}],["region",{"2":{"8":1}}],["revert",{"2":{"92":1}}],["replacing",{"2":{"150":1}}],["replace",{"2":{"14":2,"103":1,"134":2}}],["repository",{"2":{"152":1}}],["repo",{"2":{"89":1,"96":1,"107":1,"112":2,"115":2,"132":1,"144":1,"155":1,"157":1}}],["retaining",{"2":{"150":1}}],["retrieves",{"2":{"79":1}}],["retrieve",{"2":{"62":1,"65":1,"124":1,"125":1,"155":2}}],["return",{"2":{"46":1,"125":1,"147":2}}],["responsibility",{"2":{"160":1}}],["respectively",{"2":{"92":1}}],["resistant",{"2":{"150":1}}],["resistance",{"2":{"150":1,"153":1}}],["resides",{"2":{"73":1}}],["resource",{"2":{"126":1}}],["resources",{"2":{"10":1,"21":1,"97":1}}],["resultant",{"2":{"155":1}}],["results",{"2":{"155":1}}],["result",{"2":{"125":1}}],["resync",{"2":{"117":1}}],["restart",{"2":{"102":4,"108":4,"115":2,"117":6}}],["restarts",{"2":{"18":1,"138":1}}],["resets",{"2":{"49":1}}],["resetting",{"2":{"44":1}}],["reset",{"0":{"44":1,"46":1,"49":1,"52":1},"1":{"45":1,"47":1,"48":1,"50":1,"51":1,"53":1,"54":1},"2":{"45":1,"46":1,"47":1,"49":1,"50":1,"52":2,"53":1}}],["reference",{"2":{"8":1,"159":1}}],["re",{"2":{"8":1,"92":1,"116":1,"151":1,"152":1,"155":1}}],["remote",{"0":{"98":1,"104":1},"1":{"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1},"2":{"7":1,"55":1,"56":1,"98":1,"101":2,"103":1,"104":2,"113":1,"116":1,"117":1,"119":1,"127":2,"131":1}}],["recurse",{"2":{"112":1}}],["receives",{"2":{"159":2}}],["received",{"2":{"16":1,"136":1,"161":1}}],["receiving",{"2":{"157":1}}],["recent",{"2":{"101":1}}],["recommend",{"2":{"13":1,"133":1}}],["record",{"0":{"12":1},"2":{"12":3}}],["rec",{"2":{"3":1,"20":1,"140":1}}],["ria",{"2":{"1":1}}],["rpc",{"2":{"1":2,"3":3,"7":2,"14":3,"19":1,"20":1,"91":3,"92":1,"93":2,"101":1,"103":2,"109":1,"119":4,"131":2,"134":3,"139":1,"140":1}}],["crypto",{"2":{"153":1}}],["cross",{"0":{"154":1},"2":{"150":1,"154":1}}],["creating",{"2":{"124":1}}],["creation",{"2":{"14":1,"92":1,"134":1}}],["createaccount",{"0":{"74":1},"1":{"75":1,"76":1},"2":{"75":1,"97":1,"103":1,"116":1}}],["created",{"2":{"9":1,"11":2,"13":1,"46":1,"74":1,"90":1,"103":2,"107":1,"116":1,"133":1,"155":1}}],["create",{"0":{"8":1,"12":1,"13":1,"14":1,"15":1,"133":1,"134":1,"135":1},"2":{"8":1,"10":1,"12":2,"13":1,"14":3,"15":2,"17":1,"74":1,"97":1,"101":1,"103":1,"107":1,"115":1,"116":1,"124":1,"132":1,"133":1,"134":3,"135":2,"137":1,"145":1,"159":1}}],["censorship",{"2":{"150":2,"153":1}}],["centralization",{"2":{"153":2}}],["centralized",{"2":{"150":1,"153":1}}],["center>nginx",{"2":{"125":1}}],["center>",{"2":{"125":3}}],["celestia",{"2":{"8":1,"14":1,"18":1,"134":1,"138":1,"161":2,"162":3}}],["cp",{"2":{"112":1}}],["ctrl+c",{"2":{"102":1,"108":1}}],["cd",{"2":{"89":1,"96":1,"100":1,"107":1,"112":2,"143":1}}],["c",{"2":{"70":1,"73":1,"86":1}}],["chose",{"2":{"101":1,"107":1}}],["chosen",{"2":{"14":1}}],["choose",{"2":{"35":1,"40":1,"43":1,"48":1,"51":1,"54":1,"55":1,"57":1,"101":1,"155":1}}],["choosing",{"2":{"8":1,"101":1,"107":1}}],["choice",{"2":{"20":1,"140":1,"155":1}}],["charts",{"2":{"132":1}}],["characters",{"2":{"14":1}}],["changed",{"2":{"91":1}}],["channel",{"2":{"70":1}}],["chapter",{"2":{"24":1,"122":1,"130":1}}],["chainid",{"2":{"14":1,"101":3,"107":3,"112":1,"134":1}}],["chain",{"0":{"117":1},"2":{"1":1,"14":1,"35":2,"48":2,"51":2,"70":3,"72":1,"73":3,"86":3,"91":1,"92":16,"103":1,"109":2,"112":3,"134":2,"158":1,"159":2}}],["checkout",{"2":{"100":1,"107":1,"112":1}}],["check",{"2":{"11":1,"118":2,"125":1,"126":1,"142":1,"149":1,"150":2,"151":1,"152":1,"153":2,"154":2,"155":3,"156":2,"157":2,"158":2,"159":2,"160":2,"161":2,"162":2}}],["collections",{"2":{"160":1}}],["collects",{"2":{"160":1}}],["cost",{"2":{"153":1}}],["costs",{"2":{"153":1}}],["cobra",{"2":{"144":5}}],["code",{"2":{"144":2,"158":1,"159":1,"160":1,"161":1}}],["correctly",{"2":{"103":1,"105":1,"110":1,"115":1,"116":1,"143":1}}],["correct",{"2":{"92":1,"144":1}}],["corresponding",{"2":{"14":1,"134":1}}],["considered",{"2":{"161":1,"162":1}}],["consensus",{"2":{"158":1}}],["console",{"2":{"11":1}}],["conditional",{"2":{"154":1}}],["conditions",{"2":{"117":1}}],["conductor",{"0":{"161":1},"2":{"57":3,"101":1,"104":1,"109":1,"117":1,"120":1,"143":1,"157":3,"158":1,"159":1,"160":2,"161":6}}],["contract",{"2":{"150":1}}],["control",{"2":{"92":1}}],["controlled",{"2":{"90":1}}],["controller",{"0":{"10":1},"2":{"10":2,"11":2,"12":1,"125":2,"132":1}}],["containers",{"0":{"148":1}}],["contains",{"2":{"116":1,"159":1}}],["continuing",{"2":{"132":1}}],["confidence",{"2":{"155":1}}],["confirmations",{"2":{"150":1,"153":1,"155":2}}],["confirm",{"2":{"143":1}}],["configs",{"2":{"91":1}}],["config",{"0":{"14":1,"46":1,"92":1,"134":1},"1":{"47":1,"48":1},"2":{"14":7,"17":1,"46":2,"47":1,"49":3,"90":1,"91":1,"92":2,"101":1,"103":2,"107":1,"109":1,"116":2,"124":2,"134":7,"137":1,"145":1}}],["configuring",{"2":{"92":1,"101":1,"112":1}}],["configurations",{"2":{"90":1}}],["configuration",{"0":{"90":1},"1":{"91":1,"92":1},"2":{"12":1,"14":2,"91":2,"134":2,"143":1}}],["configured",{"2":{"19":2,"105":1,"110":1,"115":1,"139":1}}],["configure",{"0":{"9":1,"101":1,"103":1,"109":1,"112":1},"2":{"8":1,"9":1,"12":1,"112":1,"116":1,"143":1}}],["conf",{"2":{"14":3,"17":1,"134":3,"137":1}}],["combined",{"2":{"155":1}}],["come",{"2":{"153":1,"158":1}}],["cometbft",{"2":{"35":2,"48":2,"51":2,"52":1,"57":3,"109":1,"120":1,"143":1,"158":1,"159":1}}],["compressing",{"2":{"153":1}}],["completely",{"2":{"150":1}}],["compatible",{"2":{"132":1}}],["composability",{"0":{"154":1},"2":{"150":1}}],["composer",{"0":{"159":1},"2":{"57":3,"101":1,"103":2,"104":1,"109":1,"116":2,"117":1,"120":1,"143":1,"157":3,"158":1,"159":4}}],["components",{"0":{"103":1,"104":1},"2":{"91":2,"98":1,"104":1,"106":1,"143":1,"155":3,"158":2,"159":1}}],["coming",{"2":{"117":1}}],["commit",{"2":{"161":2}}],["commits",{"2":{"158":1,"160":2}}],["commitments",{"2":{"161":1}}],["commitment",{"2":{"155":2,"161":1}}],["common",{"0":{"114":1},"1":{"115":1,"116":1,"117":1}}],["communicate",{"2":{"92":2}}],["community",{"0":{"21":1},"2":{"21":1}}],["command>",{"2":{"144":1}}],["command",{"2":{"14":1,"26":2,"27":1,"28":1,"31":1,"32":1,"33":2,"36":1,"37":1,"44":1,"45":1,"49":1,"58":1,"59":1,"66":1,"67":1,"90":1,"91":1,"92":2,"97":1,"101":1,"124":1,"134":1,"144":1,"145":2}}],["commands",{"0":{"25":1,"97":1,"145":1},"1":{"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1},"2":{"14":1,"31":1,"36":1,"58":1,"66":1,"92":1,"97":1,"103":1,"109":1,"134":1,"144":1}}],["comma",{"2":{"13":1,"133":1}}],["com",{"2":{"6":9,"8":1,"10":1,"11":1,"12":1,"22":9,"23":9,"24":10,"88":3,"89":2,"95":3,"96":2,"100":2,"107":2,"112":1,"122":10,"129":1,"130":10,"142":1,"143":1,"144":1}}],["cause",{"2":{"101":1}}],["cases",{"2":{"150":1}}],["case",{"0":{"91":1},"2":{"91":1}}],["casey",{"2":{"89":1,"96":1,"100":1,"107":1}}],["cast",{"0":{"3":1},"2":{"24":1,"115":1,"122":1,"130":1}}],["can",{"2":{"10":1,"11":1,"12":2,"13":2,"14":1,"18":1,"26":1,"33":1,"38":1,"41":1,"55":1,"89":1,"90":3,"91":1,"96":1,"102":2,"103":1,"105":1,"108":2,"110":1,"117":1,"124":2,"125":2,"126":1,"133":2,"134":2,"138":1,"142":1,"144":2,"151":2,"152":1,"154":1,"155":3,"157":1,"158":1,"159":1}}],["cargo",{"2":{"6":1,"22":1,"23":1,"24":1,"122":1,"130":1}}],["claimed",{"2":{"134":2}}],["clean",{"2":{"102":1,"108":1,"115":1,"117":5,"145":2}}],["clear",{"2":{"102":1,"108":1}}],["clone",{"0":{"129":1},"2":{"89":1,"96":1,"100":2,"107":2,"112":2,"129":1,"143":1}}],["cloud",{"2":{"11":1,"151":1}}],["clients",{"2":{"155":1}}],["cli",{"0":{"25":1,"87":1,"90":1,"94":1,"121":1,"141":1,"142":1,"143":1},"1":{"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"88":1,"89":1,"91":1,"92":1,"95":1,"96":1,"97":1,"122":1,"142":1,"143":1,"144":1,"145":1},"2":{"6":32,"14":1,"15":1,"16":1,"17":2,"22":32,"23":32,"24":32,"26":2,"29":1,"49":1,"87":1,"88":9,"89":3,"90":3,"92":1,"94":1,"95":9,"96":3,"97":3,"98":1,"101":1,"103":1,"106":1,"109":3,"113":1,"116":3,"117":5,"122":32,"124":3,"130":32,"134":1,"135":1,"136":1,"137":2,"141":1,"142":3,"143":3,"144":5,"145":2}}],["clusterip",{"2":{"11":1,"125":1}}],["cluster",{"0":{"8":1},"2":{"4":1,"8":2,"9":1,"11":1,"14":1,"18":1,"119":1,"125":1,"126":1,"127":2,"129":1,"132":4,"134":1,"138":1,"151":1,"162":1}}],["currently",{"2":{"157":1,"159":2}}],["current",{"2":{"63":1,"97":1}}],["currency",{"2":{"1":1}}],["curl",{"0":{"88":1,"95":1},"2":{"6":3,"22":3,"23":3,"24":3,"122":3,"125":2,"130":3,"142":1}}],["custom",{"0":{"148":1},"2":{"2":1}}],["ie",{"2":{"158":2}}],["i",{"0":{"151":1,"152":1}}],["implements",{"2":{"161":1}}],["implementations",{"2":{"159":2}}],["implementation",{"2":{"157":1,"159":8}}],["improved",{"2":{"153":1,"160":1}}],["improperly",{"2":{"116":1}}],["immediately",{"2":{"155":1,"160":1}}],["image",{"2":{"2":1}}],["ip",{"0":{"11":1},"2":{"11":3,"12":1,"125":3}}],["its",{"2":{"153":1,"159":2}}],["it",{"2":{"10":1,"11":1,"87":1,"92":1,"94":1,"101":1,"117":1,"124":2,"141":1,"154":1,"155":2,"158":3,"159":5,"161":8,"162":1}}],["if",{"0":{"152":1},"2":{"8":1,"89":1,"91":2,"92":4,"96":1,"102":2,"103":2,"108":2,"109":1,"113":1,"115":1,"116":2,"117":3,"124":2,"127":1,"142":1,"151":1,"152":1,"154":2,"155":1}}],["io",{"2":{"6":1,"23":1,"24":2,"122":2,"130":2}}],["issue",{"2":{"115":1,"116":1,"117":1}}],["issues",{"0":{"114":1},"1":{"115":1,"116":1,"117":1},"2":{"117":1}}],["is",{"2":{"6":1,"9":1,"14":1,"22":1,"23":1,"24":1,"35":2,"48":2,"51":2,"87":1,"90":1,"91":2,"92":1,"94":1,"101":1,"109":2,"116":1,"122":1,"124":1,"125":1,"130":1,"132":1,"134":1,"141":1,"144":1,"148":10,"150":1,"153":3,"154":1,"155":1,"156":1,"157":1,"158":3,"159":3,"160":1,"161":6,"162":4}}],["incentivized",{"2":{"159":1}}],["inclusion",{"2":{"154":1}}],["includes",{"2":{"158":1}}],["include",{"2":{"152":1,"155":1,"159":2}}],["included",{"2":{"13":1,"14":1,"133":1,"134":1,"154":3,"155":1}}],["individual",{"2":{"155":1,"160":1}}],["industries",{"2":{"150":1}}],["input",{"2":{"147":1,"148":1}}],["insufficient",{"2":{"116":1}}],["insecure",{"2":{"76":2,"103":1}}],["instead",{"2":{"76":1,"91":1}}],["instance",{"2":{"35":5,"38":2,"40":3,"41":1,"43":3,"44":1,"46":1,"48":5,"49":1,"51":5,"54":3,"57":3,"90":2}}],["installed",{"2":{"89":1,"96":1}}],["installation",{"2":{"24":2,"100":1,"107":1,"112":1,"122":2,"130":2}}],["install",{"0":{"6":1,"22":1,"23":1,"24":1,"87":1,"94":1,"121":1,"122":1,"130":1,"142":1},"1":{"88":1,"89":1,"95":1,"96":1,"97":1,"122":1},"2":{"6":5,"8":2,"10":1,"22":4,"23":5,"24":5,"89":1,"96":1,"100":1,"107":1,"112":1,"122":5,"130":5,"144":3}}],["instructions",{"2":{"8":1,"105":1,"110":1,"118":2,"150":2,"153":2,"154":2,"155":2,"156":2,"157":2,"158":2,"159":2,"160":2,"161":2,"162":2}}],["init",{"0":{"33":1,"68":1},"1":{"34":1,"35":1,"69":1,"70":1},"2":{"34":1,"38":1,"41":1,"69":1,"70":1,"92":3,"97":1,"102":1,"103":1,"108":1,"109":1,"117":1,"143":1,"145":1}}],["initialize",{"2":{"68":1,"92":2,"102":1,"103":1,"108":1,"109":1}}],["initializes",{"2":{"33":1,"97":1,"145":1}}],["initially",{"2":{"46":1}}],["initialblockheight",{"2":{"14":1,"134":1}}],["initial",{"2":{"13":1,"14":1,"52":1,"101":1,"124":5,"133":1,"134":1}}],["intention",{"2":{"159":1}}],["interface",{"2":{"157":2,"159":1}}],["interfaces",{"2":{"157":2}}],["interacts",{"2":{"143":1}}],["interacting",{"2":{"92":1}}],["interact",{"0":{"20":1,"140":1},"2":{"87":1,"94":1,"141":1,"159":1}}],["integration",{"2":{"157":1}}],["into",{"2":{"16":1,"136":1,"153":1,"155":1,"159":1}}],["introduction",{"0":{"150":1},"1":{"151":1,"152":1},"2":{"162":1}}],["intro",{"2":{"6":1,"23":1,"24":1,"122":1,"130":1}}],["info",{"2":{"12":1,"57":2,"128":1,"148":4}}],["information",{"0":{"1":1,"101":1,"125":1,"126":1},"2":{"26":1,"27":1,"76":1,"101":1,"161":1}}],["ingress",{"0":{"10":1,"126":1},"2":{"10":2,"11":3,"12":2,"14":1,"125":3,"126":2,"132":1,"134":1}}],["in",{"0":{"97":1},"2":{"6":1,"8":2,"11":1,"13":1,"14":2,"22":1,"23":1,"24":1,"26":1,"35":2,"46":1,"48":2,"51":2,"70":1,"73":1,"76":3,"77":1,"82":1,"86":2,"89":2,"90":1,"91":2,"96":2,"101":2,"102":3,"103":2,"107":1,"108":3,"109":1,"112":3,"113":2,"115":1,"116":1,"117":2,"122":1,"130":1,"132":1,"133":1,"134":2,"142":1,"143":1,"144":2,"146":1,"154":2,"155":3,"157":3,"158":2,"159":4,"160":1,"161":2,"162":1}}],["ide",{"2":{"144":1}}],["ids",{"2":{"134":1}}],["id>",{"2":{"14":2,"134":2}}],["id=",{"2":{"14":1,"112":1,"134":1}}],["id",{"2":{"1":1,"14":2,"35":1,"48":1,"51":1,"69":1,"70":9,"73":3,"86":3,"91":1,"92":8,"103":1,"109":1,"112":2,"134":3}}],["drive",{"2":{"161":2}}],["d",{"2":{"89":1,"96":1,"142":1}}],["diagram",{"2":{"158":1}}],["directly",{"2":{"113":1,"159":1,"161":1}}],["directory",{"2":{"38":1,"46":1,"89":1,"90":1,"96":1,"103":2,"109":2,"143":1}}],["dir",{"2":{"102":2,"108":2}}],["displays",{"2":{"104":1,"109":1}}],["display",{"2":{"26":1}}],["different",{"2":{"21":1,"90":1,"91":2,"92":3,"124":1,"150":1,"154":1,"158":1}}],["digit",{"2":{"14":1,"101":1,"107":1,"112":1}}],["digitalocean",{"2":{"8":1,"11":1}}],["digital",{"0":{"4":1},"1":{"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1},"2":{"4":1,"8":2,"10":1,"11":2,"118":1,"150":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1}}],["da",{"2":{"160":5,"161":1}}],["dawn",{"2":{"57":1}}],["data",{"0":{"117":1,"162":1},"2":{"38":1,"44":1,"52":1,"101":1,"102":1,"108":1,"112":1,"117":4,"145":2,"147":2,"161":6,"162":3}}],["dangerous",{"2":{"148":2}}],["danger",{"2":{"13":1,"133":1,"148":2}}],["darwin",{"2":{"6":4,"22":4,"23":4,"24":4,"88":2,"95":2,"122":4,"130":4,"142":1}}],["dns",{"2":{"12":1,"19":1}}],["deterministic",{"2":{"161":2}}],["detail",{"2":{"157":1}}],["details",{"2":{"6":1,"22":1,"23":1,"24":1,"97":1,"122":1,"130":1,"148":4,"157":1}}],["decentralization",{"2":{"153":1}}],["decentralized",{"0":{"153":1},"2":{"150":3,"153":2,"155":1,"158":1}}],["demonstrates",{"2":{"146":1}}],["delivery",{"2":{"158":1}}],["deliminated",{"2":{"13":1,"133":1}}],["deletes",{"2":{"38":1,"145":2}}],["delete",{"2":{"38":1,"41":1}}],["denomination",{"2":{"35":1,"48":1,"51":1}}],["denom",{"2":{"35":3,"48":3,"51":3,"91":1,"92":5,"103":1,"109":1}}],["default",{"2":{"35":4,"40":2,"43":2,"46":1,"48":4,"51":4,"54":2,"57":3,"62":1,"65":1,"70":4,"73":2,"81":1,"86":2,"91":3,"92":5,"103":4,"109":4,"116":1,"147":2}}],["debugging",{"0":{"118":1},"1":{"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1}}],["debug",{"2":{"14":1,"57":1,"134":1}}],["developer",{"2":{"151":1}}],["developers",{"2":{"143":1,"157":1}}],["development",{"0":{"144":1},"1":{"145":1},"2":{"31":1,"44":1,"87":1,"91":1,"94":1,"141":1,"143":1,"144":1,"145":1}}],["dev",{"0":{"31":1,"33":1,"36":1,"38":1,"41":1,"44":1,"46":1,"49":1,"52":1,"55":1},"1":{"32":1,"34":1,"35":1,"37":1,"39":1,"40":1,"42":1,"43":1,"45":1,"47":1,"48":1,"50":1,"51":1,"53":1,"54":1,"56":1,"57":1},"2":{"14":1,"18":1,"32":1,"33":1,"34":1,"37":1,"38":2,"39":1,"41":2,"42":1,"45":1,"47":1,"50":1,"53":1,"56":4,"89":1,"90":1,"91":2,"92":5,"96":1,"97":2,"100":2,"103":3,"104":1,"107":2,"109":4,"113":2,"116":1,"117":3,"126":1,"129":1,"132":2,"134":1,"138":1,"143":3,"145":5,"162":1}}],["devnet",{"2":{"1":4,"3":1,"7":2,"14":2,"16":1,"91":2,"93":1,"101":1,"103":2,"118":2,"119":5,"120":1,"131":2,"134":2,"136":1,"150":2,"153":2,"154":2,"155":2,"156":2,"157":2,"158":2,"159":2,"160":2,"161":2,"162":2}}],["destined",{"2":{"158":1}}],["destination",{"2":{"72":1,"162":1}}],["design",{"2":{"159":4}}],["designed",{"2":{"87":1,"94":1,"141":1,"157":1}}],["desired",{"2":{"13":1,"133":1}}],["description",{"2":{"14":1,"26":1,"35":1,"40":1,"43":1,"48":1,"51":1,"54":1,"57":1,"62":1,"65":1,"70":1,"73":1,"76":1,"81":1,"86":1,"97":1,"134":1,"145":1}}],["desktop",{"2":{"6":2,"22":2,"23":2,"24":2,"122":2,"130":2}}],["depth",{"2":{"162":1}}],["dependency",{"2":{"87":1,"94":1,"141":1}}],["dependencies",{"0":{"5":1,"128":1},"1":{"6":1,"129":1,"130":1},"2":{"143":1}}],["depend",{"2":{"12":1,"144":1,"153":1}}],["deploys",{"2":{"157":1}}],["deployment",{"2":{"17":1,"127":1,"137":1}}],["deploy",{"0":{"10":1,"17":1,"137":1},"2":{"10":2,"17":1,"118":2,"127":1,"132":2,"137":1,"150":2,"153":2,"154":2,"155":2,"156":2,"157":2,"158":2,"159":2,"160":2,"161":2,"162":2}}],["deploying",{"2":{"4":1,"127":1,"150":2,"151":1}}],["does",{"2":{"92":1,"161":2}}],["doesn",{"0":{"92":1}}],["domains",{"2":{"12":1}}],["domain",{"2":{"12":1}}],["do",{"0":{"92":1},"2":{"10":1,"157":1}}],["doc",{"2":{"89":1,"96":1,"100":1,"107":1}}],["doctl",{"0":{"9":1},"2":{"8":2}}],["docs",{"2":{"6":3,"8":1,"22":1,"23":3,"24":5,"122":5,"130":5}}],["docker",{"2":{"6":2,"22":2,"23":2,"24":5,"122":5,"130":5,"132":1}}],["documentation",{"2":{"2":1,"10":1,"149":1,"152":1}}],["downloaded",{"2":{"41":1,"145":1}}],["downloads",{"2":{"33":1,"97":1,"145":1}}],["download",{"0":{"88":1,"95":1},"2":{"6":6,"22":6,"23":6,"24":6,"88":3,"95":3,"122":6,"130":6,"142":3,"143":1}}],["dora",{"2":{"1":1}}],["dusknet",{"0":{"7":1,"131":1}}],["dusk",{"2":{"1":4,"3":1,"7":2,"14":2,"16":1,"56":1,"57":1,"70":1,"73":1,"86":1,"91":7,"93":2,"101":1,"103":5,"104":1,"113":1,"116":1,"119":5,"120":1,"129":1,"131":2,"134":2,"136":1}}],["31357",{"2":{"125":1}}],["31623",{"2":{"125":1}}],["37",{"2":{"120":1,"143":1}}],["300000000000000000000",{"2":{"101":1,"107":1}}],["30158",{"2":{"11":1}}],["32656",{"2":{"11":1}}],["35",{"2":{"11":1}}],["36",{"2":{"7":1,"119":1,"131":1}}],["34",{"2":{"7":2,"119":4,"125":4,"131":2}}],["3",{"2":{"1":4,"3":1,"6":8,"7":2,"14":2,"16":1,"18":2,"22":8,"23":8,"24":8,"119":5,"120":2,"122":8,"129":1,"130":8,"131":2,"134":2,"136":1,"138":2,"142":2}}],["nria",{"2":{"35":1,"48":1,"51":1,"70":1,"91":1,"103":1,"109":1}}],["naive",{"2":{"159":2}}],["native",{"2":{"35":4,"48":4,"51":4,"158":1}}],["navigate",{"2":{"16":1,"103":1,"109":1,"116":1,"136":1}}],["namespace",{"2":{"14":1,"134":1,"161":1}}],["name>",{"2":{"14":4,"18":4,"101":1,"103":1,"107":1,"109":1,"134":4,"138":4}}],["name=",{"2":{"14":1,"134":1}}],["name",{"2":{"1":1,"7":1,"12":1,"14":6,"19":3,"20":1,"35":3,"48":3,"51":3,"91":1,"92":4,"103":2,"109":2,"119":1,"131":1,"134":6,"139":3,"140":1}}],["number>",{"2":{"101":1,"107":1,"112":1}}],["number",{"2":{"14":1}}],["n",{"2":{"11":1,"18":1,"62":1,"65":1,"81":1,"125":1,"126":1,"138":1}}],["nginx",{"0":{"10":1},"2":{"10":2,"11":3,"12":1,"125":4}}],["nod",{"2":{"155":1}}],["nodes",{"2":{"8":1,"155":1,"158":1,"159":1}}],["node",{"0":{"17":1,"137":1},"2":{"4":1,"8":1,"14":1,"17":1,"18":1,"101":1,"109":1,"127":1,"134":1,"137":1,"138":1,"151":1,"162":1}}],["nonce",{"0":{"79":1},"1":{"80":1,"81":1},"2":{"79":1,"80":1,"117":1}}],["none",{"2":{"26":1}}],["none>",{"2":{"11":1,"125":1}}],["no",{"2":{"8":1,"49":1,"101":1,"159":1}}],["note",{"2":{"158":1}}],["notes",{"2":{"6":1,"22":1,"23":1,"24":1,"122":1,"130":1}}],["not",{"2":{"8":1,"14":1,"91":1,"92":1,"103":1,"115":1,"116":1,"124":1,"125":2,"128":1,"134":1,"157":1,"158":3}}],["net",{"2":{"56":1,"91":1}}],["networks",{"0":{"49":1,"90":1,"92":1},"1":{"50":1,"51":1,"91":1,"92":1},"2":{"49":2,"50":1,"57":1,"90":2,"91":1,"92":2,"103":1,"109":1}}],["networkid",{"2":{"14":1,"134":1}}],["networking",{"2":{"11":1}}],["network",{"0":{"1":1},"2":{"1":2,"2":1,"4":1,"13":1,"14":6,"15":1,"35":3,"48":3,"51":3,"55":2,"56":2,"57":3,"90":2,"91":1,"92":5,"93":1,"104":1,"109":2,"113":2,"116":1,"127":1,"133":1,"134":5,"135":1,"150":3,"151":1,"153":1,"157":1,"158":1,"162":1}}],["never",{"2":{"13":1,"133":1}}],["newer",{"2":{"144":1}}],["new",{"0":{"8":1,"15":1,"135":1},"2":{"8":1,"11":1,"13":2,"92":1,"97":1,"100":1,"101":7,"103":2,"107":6,"109":1,"112":1,"115":4,"116":1,"133":2,"144":3,"155":1,"158":1,"161":1,"162":1}}],["needs",{"2":{"91":1,"155":1,"157":1}}],["needed",{"2":{"91":1,"101":1}}],["need",{"0":{"152":1},"2":{"6":1,"8":1,"22":1,"23":1,"24":1,"91":2,"92":2,"101":1,"102":2,"103":1,"108":2,"112":1,"122":1,"124":1,"130":1,"144":1,"152":1,"157":1}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/@localSearchIndexroot.Dl4-Xp9d.js b/assets/chunks/@localSearchIndexroot.Dl4-Xp9d.js new file mode 100644 index 0000000..a662f19 --- /dev/null +++ b/assets/chunks/@localSearchIndexroot.Dl4-Xp9d.js @@ -0,0 +1 @@ +const e='{"documentCount":135,"nextId":135,"documentIds":{"0":"/astria-evm/overview#astria-evm","1":"/astria-evm/overview#network-information","2":"/astria-evm/overview#adding-to-metamask","3":"/astria-evm/overview#using-cast","4":"/community/1-overview#community-overview","5":"/developer/references/astria-go/cli-commands#astria-go-cli-commands","6":"/developer/references/astria-go/cli-commands#global-flags","7":"/developer/references/astria-go/cli-commands#help","8":"/developer/references/astria-go/cli-commands#usage","9":"/developer/references/astria-go/cli-commands#version","10":"/developer/references/astria-go/cli-commands#usage-1","11":"/developer/references/astria-go/cli-commands#dev","12":"/developer/references/astria-go/cli-commands#usage-2","13":"/developer/references/astria-go/cli-commands#dev-init","14":"/developer/references/astria-go/cli-commands#usage-3","15":"/developer/references/astria-go/cli-commands#flags","16":"/developer/references/astria-go/cli-commands#dev-purge","17":"/developer/references/astria-go/cli-commands#usage-4","18":"/developer/references/astria-go/cli-commands#dev-purge-all","19":"/developer/references/astria-go/cli-commands#usage-5","20":"/developer/references/astria-go/cli-commands#flags-1","21":"/developer/references/astria-go/cli-commands#dev-purge-binaries","22":"/developer/references/astria-go/cli-commands#usage-6","23":"/developer/references/astria-go/cli-commands#flags-2","24":"/developer/references/astria-go/cli-commands#dev-reset","25":"/developer/references/astria-go/cli-commands#usage-7","26":"/developer/references/astria-go/cli-commands#dev-reset-config","27":"/developer/references/astria-go/cli-commands#usage-8","28":"/developer/references/astria-go/cli-commands#flags-3","29":"/developer/references/astria-go/cli-commands#dev-reset-networks","30":"/developer/references/astria-go/cli-commands#usage-9","31":"/developer/references/astria-go/cli-commands#flags-4","32":"/developer/references/astria-go/cli-commands#dev-reset-state","33":"/developer/references/astria-go/cli-commands#usage-10","34":"/developer/references/astria-go/cli-commands#flags-5","35":"/developer/references/astria-go/cli-commands#dev-run","36":"/developer/references/astria-go/cli-commands#usage-11","37":"/developer/references/astria-go/cli-commands#flags-6","38":"/developer/references/astria-go/cli-commands#sequencer","39":"/developer/references/astria-go/cli-commands#usage-12","40":"/developer/references/astria-go/cli-commands#sequencer-balances","41":"/developer/references/astria-go/cli-commands#usage-13","42":"/developer/references/astria-go/cli-commands#flags-7","43":"/developer/references/astria-go/cli-commands#sequencer-blockheight","44":"/developer/references/astria-go/cli-commands#usage-14","45":"/developer/references/astria-go/cli-commands#flags-8","46":"/developer/references/astria-go/cli-commands#sequencer-bridge","47":"/developer/references/astria-go/cli-commands#usage-15","48":"/developer/references/astria-go/cli-commands#sequencer-bridge-init","49":"/developer/references/astria-go/cli-commands#usage-16","50":"/developer/references/astria-go/cli-commands#flags-9","51":"/developer/references/astria-go/cli-commands#sequencer-bridge-lock","52":"/developer/references/astria-go/cli-commands#usage-17","53":"/developer/references/astria-go/cli-commands#flags-10","54":"/developer/references/astria-go/cli-commands#sequencer-createaccount","55":"/developer/references/astria-go/cli-commands#usage-18","56":"/developer/references/astria-go/cli-commands#flags-11","57":"/developer/references/astria-go/cli-commands#sequencer-getkey","58":"/developer/references/astria-go/cli-commands#usage-19","59":"/developer/references/astria-go/cli-commands#sequencer-nonce","60":"/developer/references/astria-go/cli-commands#usage-20","61":"/developer/references/astria-go/cli-commands#flags-12","62":"/developer/references/astria-go/cli-commands#sequencer-setkey","63":"/developer/references/astria-go/cli-commands#usage-21","64":"/developer/references/astria-go/cli-commands#sequencer-transfer","65":"/developer/references/astria-go/cli-commands#usage-22","66":"/developer/references/astria-go/cli-commands#flags-13","67":"/developer/references/astria-go/cli-installation#install-the-astria-cli","68":"/developer/references/astria-go/cli-installation#download-using-curl","69":"/developer/references/astria-go/cli-installation#build-from-source","70":"/developer/references/astria-go/cli-networks-configuration#astria-cli-networks-configuration","71":"/developer/references/astria-go/cli-networks-configuration#primary-use-case","72":"/developer/references/astria-go/cli-networks-configuration#what-the-networks-config-doesn-t-do","73":"/developer/references/endpoints#astria-endpoints","74":"/developer/tutorials/install-the-cli#install-the-astria-cli","75":"/developer/tutorials/install-the-cli#download-using-curl","76":"/developer/tutorials/install-the-cli#build-from-source","77":"/developer/tutorials/install-the-cli#commands-used-in-this-tutorial","78":"/developer/tutorials/run-local-rollup-against-remote-sequencer#run-a-local-rollup-against-a-remote-sequencer","79":"/developer/tutorials/run-local-rollup-against-remote-sequencer#setup-a-geth-rollup","80":"/developer/tutorials/run-local-rollup-against-remote-sequencer#build-geth","81":"/developer/tutorials/run-local-rollup-against-remote-sequencer#configure-the-geth-genesis-information","82":"/developer/tutorials/run-local-rollup-against-remote-sequencer#start-geth","83":"/developer/tutorials/run-local-rollup-against-remote-sequencer#configure-the-local-astria-components","84":"/developer/tutorials/run-local-rollup-against-remote-sequencer#run-the-local-astria-components-against-the-remote-sequencer","85":"/developer/tutorials/run-local-rollup-against-remote-sequencer#test-your-rollup","86":"/developer/tutorials/run-local-rollup-and-sequencer#run-a-local-rollup-and-sequencer","87":"/developer/tutorials/run-local-rollup-and-sequencer#setup-a-geth-rollup","88":"/developer/tutorials/run-local-rollup-and-sequencer#start-geth","89":"/developer/tutorials/run-local-rollup-and-sequencer#configure-and-start-the-local-astria-sequencer","90":"/developer/tutorials/run-local-rollup-and-sequencer#test-your-rollup","91":"/developer/tutorials/test-transactions#test-transactions","92":"/developer/tutorials/test-transactions#configure-the-testing-script","93":"/developer/tutorials/test-transactions#run-the-testing-script","94":"/developer/tutorials/test-transactions#common-issues","95":"/developer/tutorials/test-transactions#evmerror-outoffunds","96":"/developer/tutorials/test-transactions#test-script-hangs","97":"/developer/tutorials/test-transactions#chain-data-mismatch","98":"/dusk-faq/1-information#faq-and-debugging","99":"/dusk-faq/1-information#endpoints","100":"/dusk-faq/1-information#software-versions","101":"/dusk-faq/1-information#install-the-latest-astria-cli","102":"/dusk-faq/1-information#manually-fetch-sequencer-block-height","103":"/dusk-faq/1-information#sequencer-block-height","104":"/dusk-faq/1-information#loadbalancer-information","105":"/dusk-faq/1-information#ingress-information","106":"/markdown-examples#markdown-extension-examples","107":"/markdown-examples#syntax-highlighting","108":"/markdown-examples#custom-containers","109":"/markdown-examples#more","110":"/overview/bridging#bridging-on-astria","111":"/overview/bridging#fee-payments","112":"/overview/bridging#rollup-bridging","113":"/overview/bridging#ibc","114":"/overview/components/composer#the-astria-composer","115":"/overview/components/composer#the-composer-as-a-ux-solution","116":"/overview/components/composer#heterogenous-order-flow-support","117":"/overview/components/composer#naive-ordering-preferences","118":"/overview/components/conductor#the-astria-conductor","119":"/overview/components/conductor#data-verification","120":"/overview/components/conductor#soft-and-firm-commitments","121":"/overview/components/data-availability-layer#data-availability-layer","122":"/overview/components/relayer#relayer","123":"/overview/components/the-astria-sequencer#the-astria-sequencing-layer","124":"/overview/how-rollups-work#how-rollups-work","125":"/overview/how-rollups-work#rollup-full-node-architecture","126":"/overview/how-rollups-work#rollup-sequencers","127":"/overview/how-rollups-work#decentralized-sequencers","128":"/overview/how-rollups-work#sequencing-layers","129":"/overview/how-rollups-work#rollup-light-nodes","130":"/overview/introduction#introduction","131":"/overview/introduction#what-should-i-read","132":"/overview/introduction#what-if-i-need-more-help","133":"/overview/the-astria-sequencer-network#the-astria-sequencer-network","134":"/overview/transaction-flow#transaction-flow"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[2,1,1],"1":[2,2,31],"2":[3,2,42],"3":[2,2,32],"4":[2,1,14],"5":[4,1,1],"6":[2,4,36],"7":[1,4,8],"8":[1,5,7],"9":[1,4,6],"10":[1,5,4],"11":[1,4,8],"12":[1,5,6],"13":[2,4,18],"14":[1,6,6],"15":[1,6,53],"16":[2,4,8],"17":[1,6,7],"18":[3,4,25],"19":[1,7,7],"20":[1,7,18],"21":[3,4,19],"22":[1,7,7],"23":[1,7,18],"24":[2,4,11],"25":[1,6,7],"26":[3,4,20],"27":[1,7,7],"28":[1,7,53],"29":[3,4,19],"30":[1,7,7],"31":[1,7,53],"32":[3,4,16],"33":[1,7,7],"34":[1,7,18],"35":[2,4,21],"36":[1,6,15],"37":[1,6,59],"38":[1,4,8],"39":[1,5,6],"40":[2,4,9],"41":[1,6,7],"42":[1,6,35],"43":[2,4,8],"44":[1,6,6],"45":[1,6,35],"46":[2,4,9],"47":[1,6,6],"48":[3,4,5],"49":[1,7,9],"50":[1,7,72],"51":[3,4,7],"52":[1,7,11],"53":[1,7,61],"54":[2,4,23],"55":[1,6,6],"56":[1,6,37],"57":[2,4,10],"58":[1,6,7],"59":[2,4,9],"60":[1,6,7],"61":[1,6,31],"62":[2,4,10],"63":[1,6,9],"64":[2,4,8],"65":[1,6,8],"66":[1,6,58],"67":[4,1,31],"68":[3,4,36],"69":[3,4,49],"70":[4,1,46],"71":[3,4,86],"72":[7,4,101],"73":[2,1,19],"74":[4,1,31],"75":[3,4,36],"76":[3,4,49],"77":[5,4,44],"78":[7,1,31],"79":[4,7,1],"80":[2,9,36],"81":[5,9,133],"82":[2,7,37],"83":[5,7,112],"84":[8,7,29],"85":[3,7,20],"86":[6,1,30],"87":[4,6,84],"88":[2,6,37],"89":[7,6,95],"90":[3,6,20],"91":[2,1,1],"92":[4,2,91],"93":[4,2,52],"94":[2,2,1],"95":[2,4,62],"96":[3,4,93],"97":[3,4,74],"98":[3,1,20],"99":[1,3,44],"100":[2,3,28],"101":[5,3,1],"102":[5,3,1],"103":[3,8,59],"104":[2,3,78],"105":[2,3,18],"106":[3,1,14],"107":[2,3,26],"108":[2,3,21],"109":[1,3,11],"110":[3,1,1],"111":[2,3,97],"112":[2,3,113],"113":[1,3,48],"114":[3,1,82],"115":[6,3,99],"116":[4,3,64],"117":[3,3,36],"118":[3,1,107],"119":[2,3,129],"120":[4,3,66],"121":[3,1,49],"122":[1,1,69],"123":[4,1,86],"124":[3,1,32],"125":[4,3,109],"126":[2,3,137],"127":[2,3,101],"128":[2,3,129],"129":[3,3,101],"130":[1,1,157],"131":[5,1,52],"132":[7,1,29],"133":[4,1,166],"134":[2,1,12]},"averageFieldLength":[2.4370370370370367,4.111111111111111,38.303703703703704],"storedFields":{"0":{"title":"Astria EVM","titles":[]},"1":{"title":"Network Information","titles":["Astria EVM"]},"2":{"title":"Adding to Metamask","titles":["Astria EVM"]},"3":{"title":"Using Cast","titles":["Astria EVM"]},"4":{"title":"Community overview","titles":[]},"5":{"title":"astria-go cli Commands","titles":[]},"6":{"title":"Global Flags","titles":["astria-go cli Commands"]},"7":{"title":"help","titles":["astria-go cli Commands"]},"8":{"title":"Usage","titles":["astria-go cli Commands","help"]},"9":{"title":"version","titles":["astria-go cli Commands"]},"10":{"title":"Usage","titles":["astria-go cli Commands","version"]},"11":{"title":"dev","titles":["astria-go cli Commands"]},"12":{"title":"Usage","titles":["astria-go cli Commands","dev"]},"13":{"title":"dev init","titles":["astria-go cli Commands"]},"14":{"title":"Usage","titles":["astria-go cli Commands","dev init"]},"15":{"title":"Flags","titles":["astria-go cli Commands","dev init"]},"16":{"title":"dev purge","titles":["astria-go cli Commands"]},"17":{"title":"Usage","titles":["astria-go cli Commands","dev purge"]},"18":{"title":"dev purge all","titles":["astria-go cli Commands"]},"19":{"title":"Usage","titles":["astria-go cli Commands","dev purge all"]},"20":{"title":"Flags","titles":["astria-go cli Commands","dev purge all"]},"21":{"title":"dev purge binaries","titles":["astria-go cli Commands"]},"22":{"title":"Usage","titles":["astria-go cli Commands","dev purge binaries"]},"23":{"title":"Flags","titles":["astria-go cli Commands","dev purge binaries"]},"24":{"title":"dev reset","titles":["astria-go cli Commands"]},"25":{"title":"Usage","titles":["astria-go cli Commands","dev reset"]},"26":{"title":"dev reset config","titles":["astria-go cli Commands"]},"27":{"title":"Usage","titles":["astria-go cli Commands","dev reset config"]},"28":{"title":"Flags","titles":["astria-go cli Commands","dev reset config"]},"29":{"title":"dev reset networks","titles":["astria-go cli Commands"]},"30":{"title":"Usage","titles":["astria-go cli Commands","dev reset networks"]},"31":{"title":"Flags","titles":["astria-go cli Commands","dev reset networks"]},"32":{"title":"dev reset state","titles":["astria-go cli Commands"]},"33":{"title":"Usage","titles":["astria-go cli Commands","dev reset state"]},"34":{"title":"Flags","titles":["astria-go cli Commands","dev reset state"]},"35":{"title":"dev run","titles":["astria-go cli Commands"]},"36":{"title":"Usage","titles":["astria-go cli Commands","dev run"]},"37":{"title":"Flags","titles":["astria-go cli Commands","dev run"]},"38":{"title":"sequencer","titles":["astria-go cli Commands"]},"39":{"title":"Usage","titles":["astria-go cli Commands","sequencer"]},"40":{"title":"sequencer balances","titles":["astria-go cli Commands"]},"41":{"title":"Usage","titles":["astria-go cli Commands","sequencer balances"]},"42":{"title":"Flags","titles":["astria-go cli Commands","sequencer balances"]},"43":{"title":"sequencer blockheight","titles":["astria-go cli Commands"]},"44":{"title":"Usage","titles":["astria-go cli Commands","sequencer blockheight"]},"45":{"title":"Flags","titles":["astria-go cli Commands","sequencer blockheight"]},"46":{"title":"sequencer bridge","titles":["astria-go cli Commands"]},"47":{"title":"Usage","titles":["astria-go cli Commands","sequencer bridge"]},"48":{"title":"sequencer bridge init","titles":["astria-go cli Commands"]},"49":{"title":"Usage","titles":["astria-go cli Commands","sequencer bridge init"]},"50":{"title":"Flags","titles":["astria-go cli Commands","sequencer bridge init"]},"51":{"title":"sequencer bridge lock","titles":["astria-go cli Commands"]},"52":{"title":"Usage","titles":["astria-go cli Commands","sequencer bridge lock"]},"53":{"title":"Flags","titles":["astria-go cli Commands","sequencer bridge lock"]},"54":{"title":"sequencer createaccount","titles":["astria-go cli Commands"]},"55":{"title":"Usage","titles":["astria-go cli Commands","sequencer createaccount"]},"56":{"title":"Flags","titles":["astria-go cli Commands","sequencer createaccount"]},"57":{"title":"sequencer getkey","titles":["astria-go cli Commands"]},"58":{"title":"Usage","titles":["astria-go cli Commands","sequencer getkey"]},"59":{"title":"sequencer nonce","titles":["astria-go cli Commands"]},"60":{"title":"Usage","titles":["astria-go cli Commands","sequencer nonce"]},"61":{"title":"Flags","titles":["astria-go cli Commands","sequencer nonce"]},"62":{"title":"sequencer setkey","titles":["astria-go cli Commands"]},"63":{"title":"Usage","titles":["astria-go cli Commands","sequencer setkey"]},"64":{"title":"sequencer transfer","titles":["astria-go cli Commands"]},"65":{"title":"Usage","titles":["astria-go cli Commands","sequencer transfer"]},"66":{"title":"Flags","titles":["astria-go cli Commands","sequencer transfer"]},"67":{"title":"Install the Astria CLI","titles":[]},"68":{"title":"Download using Curl","titles":["Install the Astria CLI"]},"69":{"title":"Build from Source","titles":["Install the Astria CLI"]},"70":{"title":"Astria Cli Networks Configuration","titles":[]},"71":{"title":"Primary Use Case","titles":["Astria Cli Networks Configuration"]},"72":{"title":"What the Networks Config Doesn\'t Do","titles":["Astria Cli Networks Configuration"]},"73":{"title":"Astria Endpoints","titles":[]},"74":{"title":"Install the Astria CLI","titles":[]},"75":{"title":"Download using Curl","titles":["Install the Astria CLI"]},"76":{"title":"Build from Source","titles":["Install the Astria CLI"]},"77":{"title":"Commands Used in this Tutorial","titles":["Install the Astria CLI"]},"78":{"title":"Run a Local Rollup against a Remote Sequencer","titles":[]},"79":{"title":"Setup a Geth Rollup","titles":["Run a Local Rollup against a Remote Sequencer"]},"80":{"title":"Build Geth","titles":["Run a Local Rollup against a Remote Sequencer","Setup a Geth Rollup"]},"81":{"title":"Configure the Geth Genesis Information","titles":["Run a Local Rollup against a Remote Sequencer","Setup a Geth Rollup"]},"82":{"title":"Start Geth","titles":["Run a Local Rollup against a Remote Sequencer"]},"83":{"title":"Configure the Local Astria components","titles":["Run a Local Rollup against a Remote Sequencer"]},"84":{"title":"Run the local Astria components against the Remote Sequencer","titles":["Run a Local Rollup against a Remote Sequencer"]},"85":{"title":"Test your Rollup","titles":["Run a Local Rollup against a Remote Sequencer"]},"86":{"title":"Run a Local Rollup and Sequencer","titles":[]},"87":{"title":"Setup a Geth Rollup","titles":["Run a Local Rollup and Sequencer"]},"88":{"title":"Start Geth","titles":["Run a Local Rollup and Sequencer"]},"89":{"title":"Configure and Start the Local Astria Sequencer","titles":["Run a Local Rollup and Sequencer"]},"90":{"title":"Test your Rollup","titles":["Run a Local Rollup and Sequencer"]},"91":{"title":"Test Transactions","titles":[]},"92":{"title":"Configure the Testing Script","titles":["Test Transactions"]},"93":{"title":"Run the Testing Script","titles":["Test Transactions"]},"94":{"title":"Common Issues","titles":["Test Transactions"]},"95":{"title":"EvmError: OutOfFunds","titles":["Test Transactions","Common Issues"]},"96":{"title":"Test script hangs","titles":["Test Transactions","Common Issues"]},"97":{"title":"Chain Data Mismatch","titles":["Test Transactions","Common Issues"]},"98":{"title":"FAQ and Debugging","titles":[]},"99":{"title":"Endpoints","titles":["FAQ and Debugging"]},"100":{"title":"Software Versions","titles":["FAQ and Debugging"]},"101":{"title":"Install the latest Astria cli","titles":["FAQ and Debugging"]},"102":{"title":"Manually Fetch Sequencer Block Height","titles":["FAQ and Debugging"]},"103":{"title":"Sequencer Block Height","titles":["FAQ and Debugging","Manually Fetch Sequencer Block Height"]},"104":{"title":"Loadbalancer Information","titles":["FAQ and Debugging"]},"105":{"title":"Ingress Information","titles":["FAQ and Debugging"]},"106":{"title":"Markdown Extension Examples","titles":[]},"107":{"title":"Syntax Highlighting","titles":["Markdown Extension Examples"]},"108":{"title":"Custom Containers","titles":["Markdown Extension Examples"]},"109":{"title":"More","titles":["Markdown Extension Examples"]},"110":{"title":"Bridging on Astria","titles":[]},"111":{"title":"Fee payments","titles":["Bridging on Astria"]},"112":{"title":"Rollup bridging","titles":["Bridging on Astria"]},"113":{"title":"IBC","titles":["Bridging on Astria"]},"114":{"title":"The Astria Composer","titles":[]},"115":{"title":"The Composer as a UX solution","titles":["The Astria Composer"]},"116":{"title":"Heterogenous order flow support","titles":["The Astria Composer"]},"117":{"title":"Naive ordering preferences","titles":["The Astria Composer"]},"118":{"title":"The Astria Conductor","titles":[]},"119":{"title":"Data verification","titles":["The Astria Conductor"]},"120":{"title":"Soft and Firm Commitments","titles":["The Astria Conductor"]},"121":{"title":"Data Availability Layer","titles":[]},"122":{"title":"Relayer","titles":[]},"123":{"title":"The Astria Sequencing Layer","titles":[]},"124":{"title":"How Rollups Work","titles":[]},"125":{"title":"Rollup full node architecture","titles":["How Rollups Work"]},"126":{"title":"Rollup sequencers","titles":["How Rollups Work"]},"127":{"title":"Decentralized sequencers","titles":["How Rollups Work"]},"128":{"title":"Sequencing Layers","titles":["How Rollups Work"]},"129":{"title":"Rollup light nodes","titles":["How Rollups Work"]},"130":{"title":"Introduction","titles":[]},"131":{"title":"What should I read?","titles":["Introduction"]},"132":{"title":"What If I Need More Help?","titles":["Introduction"]},"133":{"title":"The Astria Sequencer Network","titles":[]},"134":{"title":"Transaction Flow","titles":[]}},"dirtCount":0,"index":[["years",{"2":{"133":1}}],["y",{"2":{"129":1}}],["you",{"2":{"35":1,"69":2,"71":4,"72":6,"76":2,"78":1,"81":4,"82":4,"83":8,"84":1,"85":1,"86":1,"87":3,"88":4,"89":4,"90":1,"92":3,"93":3,"95":1,"96":3,"97":5,"103":3,"104":2,"105":1,"131":4,"132":3}}],["your",{"0":{"85":1,"90":1},"2":{"2":1,"3":1,"69":2,"71":1,"72":4,"76":2,"78":1,"81":10,"82":1,"83":4,"85":1,"86":1,"87":6,"88":1,"89":2,"90":1,"92":1,"93":1,"95":2,"96":1,"97":4,"98":3,"104":1,"105":1}}],["zk",{"2":{"112":1}}],["```",{"2":{"107":1}}],["knows",{"2":{"129":1}}],["known",{"2":{"128":1}}],["know",{"2":{"126":1}}],["kubernetes",{"2":{"104":1,"105":1,"131":1}}],["keeps",{"2":{"115":1}}],["keep",{"2":{"81":1}}],["key=",{"2":{"92":1}}],["keyring",{"2":{"50":3,"53":3,"56":3,"57":1,"62":1,"66":3}}],["keyfile",{"2":{"50":3,"53":3,"56":3,"66":3}}],["key>",{"2":{"3":1,"92":1}}],["key",{"2":{"3":1,"50":2,"53":2,"54":2,"56":3,"57":1,"62":1,"63":1,"66":2,"81":1,"83":4,"87":1,"92":3,"95":2,"96":2,"127":1}}],["98",{"2":{"104":1}}],["9",{"2":{"100":1}}],["912559",{"2":{"1":1,"2":1}}],["80",{"2":{"104":1}}],["8080",{"2":{"72":1,"89":1}}],["8",{"2":{"99":1,"100":1}}],["404",{"2":{"104":1}}],["443",{"2":{"104":2}}],["42",{"2":{"104":2}}],["4",{"2":{"99":1,"107":1}}],["206",{"2":{"104":2}}],["2",{"2":{"100":1,"130":1}}],["211",{"2":{"99":1}}],["214",{"2":{"99":1}}],["229",{"2":{"104":1}}],["228",{"2":{"104":1}}],["22",{"2":{"99":1}}],["26657",{"2":{"42":1,"45":1,"50":1,"53":1,"61":1,"66":1,"72":1,"73":1,"89":1}}],["31357",{"2":{"104":1}}],["31623",{"2":{"104":1}}],["37",{"2":{"100":1}}],["36",{"2":{"99":1}}],["34",{"2":{"99":4,"104":4}}],["3",{"2":{"99":5,"100":2}}],["300000000000000000000",{"2":{"81":1,"87":1}}],["6",{"2":{"81":1,"87":1,"92":1}}],["64",{"2":{"68":2,"75":2}}],["=",{"2":{"71":5,"72":6,"83":5,"89":5}}],["join",{"2":{"127":2}}],["jsexport",{"2":{"107":1}}],["json",{"2":{"15":2,"28":2,"31":2,"42":2,"45":2,"50":3,"53":3,"56":3,"61":2,"66":3,"81":4,"87":2,"92":1,"95":1,"99":1}}],["just",{"2":{"69":5,"71":1,"76":5,"80":4,"82":3,"83":2,"87":5,"88":3,"95":1,"97":2}}],[">",{"2":{"68":4,"75":4}}],["57s",{"2":{"104":2}}],["5",{"2":{"50":1,"53":1,"66":1,"71":3,"73":1,"100":1}}],["184",{"2":{"104":2}}],["187",{"2":{"99":1}}],["118",{"2":{"104":2}}],["11",{"2":{"100":1}}],["111",{"2":{"99":2}}],["102",{"2":{"99":1}}],["10000000000000000000",{"2":{"3":1}}],["120",{"2":{"99":1}}],["127",{"2":{"42":1,"45":1,"50":1,"53":1,"61":1,"66":1,"72":2,"73":1,"89":2}}],["130",{"2":{"99":1}}],["16",{"2":{"99":1}}],["167",{"2":{"99":1}}],["160",{"2":{"99":1}}],["1",{"2":{"42":1,"45":1,"50":1,"53":1,"61":1,"66":1,"68":6,"72":2,"73":1,"75":6,"89":2,"100":3,"130":1}}],["~",{"2":{"18":1,"70":1,"83":3,"89":2,"96":1}}],["phase",{"2":{"133":1}}],["please",{"2":{"132":1}}],["plus",{"2":{"126":1}}],["placing",{"2":{"119":1}}],["p2p",{"2":{"125":2}}],["per",{"2":{"130":2}}],["permissionless",{"2":{"127":1}}],["permissioned",{"2":{"127":1}}],["performs",{"2":{"130":1}}],["perform",{"2":{"125":1}}],["persist",{"2":{"97":1}}],["party",{"2":{"126":1}}],["part",{"2":{"125":1}}],["participates",{"2":{"123":1}}],["parts",{"2":{"112":1}}],["passes",{"2":{"130":1}}],["passed",{"2":{"118":1,"125":1}}],["passing",{"2":{"119":1,"120":1}}],["pass",{"2":{"113":1,"122":1}}],["pay",{"2":{"111":1,"115":2,"116":2,"126":1}}],["payment",{"2":{"111":3}}],["payments",{"0":{"111":1},"2":{"111":2,"113":1}}],["page",{"2":{"104":1,"106":1}}],["packages",{"2":{"92":1}}],["path",{"2":{"37":12,"50":1,"53":1,"66":1,"69":1,"76":1}}],["potential",{"2":{"126":1,"133":1}}],["potentially",{"2":{"81":1,"128":2}}],["points",{"2":{"125":1}}],["pos",{"2":{"130":1}}],["posts",{"2":{"126":1,"130":1}}],["post",{"2":{"126":2}}],["posted",{"2":{"125":1}}],["posting",{"2":{"119":1,"128":1}}],["possible",{"2":{"67":1,"74":1,"119":1}}],["powerful",{"2":{"114":1}}],["powered",{"2":{"107":1}}],["poor",{"2":{"111":1,"115":1,"126":1}}],["port",{"2":{"104":1}}],["putting",{"2":{"127":1}}],["publishing",{"2":{"130":1}}],["published",{"2":{"126":1,"129":2}}],["public",{"2":{"54":1}}],["pulled",{"2":{"121":1,"122":1}}],["pull",{"2":{"119":1,"133":2}}],["pulling",{"2":{"119":1}}],["purge",{"0":{"16":1,"18":1,"21":1},"1":{"17":1,"19":1,"20":1,"22":1,"23":1},"2":{"16":1,"17":1,"19":1,"22":1,"72":1}}],["pre",{"2":{"120":1,"126":1}}],["preferences",{"0":{"117":1},"2":{"116":1}}],["prevents",{"2":{"133":1}}],["prevention",{"2":{"111":1}}],["previously",{"2":{"92":1}}],["previous",{"2":{"81":1}}],["process",{"2":{"133":2}}],["processing",{"2":{"130":1}}],["proposing",{"2":{"127":1}}],["proposes",{"2":{"127":1}}],["proposers",{"2":{"133":1}}],["proposer",{"2":{"127":1,"133":1}}],["propose",{"2":{"127":1}}],["properly",{"2":{"118":1,"125":1}}],["property",{"2":{"1":1}}],["producers",{"2":{"126":1}}],["production",{"2":{"123":1,"133":1}}],["proof",{"2":{"119":1,"127":1,"129":1}}],["proving",{"2":{"112":1}}],["provided",{"2":{"81":1,"106":1,"125":1}}],["provides",{"2":{"67":1,"74":1,"107":1,"114":1,"117":1}}],["provide",{"2":{"37":4,"114":2,"115":1,"126":2,"133":2}}],["programmability",{"2":{"112":1}}],["program",{"2":{"82":1,"88":1}}],["primary",{"0":{"71":1}}],["privilege",{"2":{"126":1,"127":1}}],["priv",{"2":{"83":2}}],["privkey",{"2":{"50":2,"53":2,"66":2}}],["private",{"2":{"3":2,"50":2,"53":2,"54":1,"56":3,"57":1,"62":1,"63":1,"66":2,"81":1,"83":2,"87":1,"92":5,"95":2,"96":2}}],["prints",{"2":{"9":1,"59":1,"77":1}}],["print",{"2":{"7":1,"56":1}}],["0",{"2":{"15":1,"28":1,"31":1,"42":2,"45":2,"50":3,"53":2,"61":2,"66":2,"72":4,"73":2,"89":5,"100":1}}],["quot",{"2":{"15":6,"20":2,"23":2,"28":6,"31":6,"34":2,"37":4,"42":2,"45":2,"50":8,"53":4,"61":2,"66":4,"81":4,"83":2,"87":8,"89":2,"92":2,"95":2,"114":2,"115":2}}],["vote",{"2":{"133":1}}],["voted",{"2":{"119":1}}],["verified",{"2":{"120":2,"133":1}}],["verifies",{"2":{"119":1,"130":1}}],["verification",{"0":{"119":1},"2":{"112":1,"119":1}}],["verifying",{"2":{"118":3}}],["verify",{"2":{"112":1,"119":3,"129":5,"130":2,"133":1}}],["versions",{"0":{"100":1},"2":{"100":1}}],["version",{"0":{"9":1},"1":{"10":1},"2":{"9":1,"10":1,"68":3,"69":2,"75":3,"76":2,"77":2}}],["via",{"2":{"111":2,"114":1,"119":3,"120":1,"129":1,"130":1,"133":2}}],["vitepress",{"2":{"106":1,"107":1}}],["view",{"2":{"68":1,"75":1}}],["v0",{"2":{"68":6,"75":6,"100":6}}],["validating",{"2":{"119":1}}],["validators",{"2":{"128":1,"133":1}}],["validator",{"2":{"119":3,"123":1,"133":1}}],["validated",{"2":{"118":1,"120":1,"122":1}}],["validate",{"2":{"118":1}}],["valid",{"2":{"37":1}}],["values",{"2":{"71":2}}],["value",{"2":{"1":1,"3":1,"83":1,"89":1,"92":2,"103":1,"133":1}}],["variable",{"2":{"83":1,"89":1,"96":1,"103":1}}],["var",{"2":{"6":1,"15":1,"20":1,"23":1,"28":1,"31":1,"34":1,"37":1,"42":1,"45":1,"50":1,"53":1,"56":1,"61":1,"66":1,"95":1}}],["left",{"2":{"130":1}}],["leader",{"2":{"133":1}}],["leading",{"2":{"126":1}}],["learn",{"2":{"131":1}}],["leaf",{"2":{"119":1}}],["leverage",{"2":{"115":1}}],["level",{"2":{"6":3,"37":3,"115":1,"130":1}}],["l2",{"2":{"112":4,"126":1,"129":2}}],["l1s",{"2":{"128":1}}],["l1",{"2":{"112":4,"124":3,"125":6,"126":9,"128":1,"129":4}}],["lazily",{"2":{"130":1}}],["lazy",{"2":{"114":1,"123":1,"128":1,"130":1}}],["last",{"2":{"125":1,"130":1}}],["layers",{"0":{"128":1},"2":{"118":1}}],["layer",{"0":{"121":1,"123":1},"2":{"111":1,"114":2,"115":2,"116":1,"118":2,"119":1,"120":3,"121":1,"122":3,"123":1,"125":1,"127":1,"128":3,"129":1,"133":2}}],["latest",{"0":{"101":1},"2":{"97":2,"100":1}}],["later",{"2":{"81":2,"87":1}}],["launch",{"2":{"96":1}}],["light",{"0":{"129":1},"2":{"125":1,"129":11,"133":2}}],["list",{"2":{"109":1,"118":1,"119":1}}],["line",{"2":{"107":1}}],["linux",{"2":{"68":2,"75":2}}],["likely",{"2":{"71":1,"96":1,"97":1}}],["like",{"2":{"69":1,"72":1,"76":1,"107":1,"112":1,"114":1,"118":1,"125":1,"127":1,"129":1}}],["l",{"2":{"68":3,"75":3}}],["long",{"2":{"115":1}}],["loadbalancer",{"0":{"104":1},"2":{"104":3}}],["looking",{"2":{"132":1}}],["looks",{"2":{"125":1}}],["look",{"2":{"72":1,"96":1,"127":1}}],["location",{"2":{"69":1,"76":1}}],["locally",{"2":{"78":1,"86":1,"89":1,"93":1}}],["local",{"0":{"78":1,"83":1,"84":1,"86":1,"89":1},"1":{"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"87":1,"88":1,"89":1,"90":1},"2":{"13":1,"15":6,"24":1,"28":6,"31":6,"35":2,"36":3,"37":1,"67":1,"68":3,"69":1,"71":2,"72":13,"73":1,"74":1,"75":3,"76":1,"77":2,"78":1,"80":1,"81":2,"84":1,"86":1,"87":2,"89":5,"92":2,"93":2,"95":1,"97":2,"98":1,"131":1}}],["locks",{"2":{"51":1}}],["lock",{"0":{"51":1},"1":{"52":1,"53":1},"2":{"52":1}}],["logic",{"2":{"130":4,"133":4}}],["logs",{"2":{"84":1,"89":1,"96":1}}],["log",{"2":{"6":3,"37":3,"93":1}}],["lt",{"2":{"2":1,"70":1}}],["grows",{"2":{"128":1}}],["greater",{"2":{"128":1}}],["grpc",{"2":{"71":3,"72":1,"83":2,"89":1}}],["guarantees",{"2":{"115":1,"117":1}}],["guide",{"2":{"78":1,"86":1}}],["gas",{"2":{"114":1,"115":2}}],["gz",{"2":{"68":9,"75":9}}],["git",{"2":{"69":2,"76":2,"80":3,"87":3,"92":3}}],["github",{"2":{"68":3,"69":2,"75":3,"76":2,"80":2,"87":2,"92":1}}],["given",{"2":{"6":1,"7":1,"18":1,"21":1,"72":1,"123":1,"125":1}}],["generic",{"2":{"128":1}}],["generate",{"2":{"93":1}}],["generally",{"2":{"125":1,"126":1,"128":1}}],["general",{"2":{"71":1,"112":1}}],["genesis",{"0":{"81":1},"2":{"15":2,"28":2,"31":2,"81":4,"87":2,"92":1,"95":2}}],["gets",{"2":{"128":1}}],["getting",{"2":{"80":1,"87":1,"92":1,"97":1}}],["getfoundry",{"2":{"80":1,"87":1,"92":1}}],["geth",{"0":{"79":1,"80":1,"81":1,"82":1,"87":1,"88":1},"1":{"80":1,"81":1},"2":{"78":1,"80":3,"81":4,"82":4,"83":1,"86":1,"87":6,"88":4,"89":1,"92":4,"95":2,"100":1}}],["getkey",{"0":{"57":1},"1":{"58":1},"2":{"58":1}}],["get",{"2":{"40":1,"43":1,"57":1,"77":1,"103":1,"104":1,"105":1,"131":1}}],["global",{"0":{"6":1}}],["going",{"2":{"93":1}}],["go",{"0":{"5":1},"1":{"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1},"2":{"6":1,"8":2,"10":1,"12":1,"14":1,"15":3,"17":1,"18":2,"19":1,"20":1,"21":2,"22":1,"23":1,"25":1,"27":1,"28":3,"30":1,"31":3,"33":1,"34":1,"36":3,"37":7,"39":1,"41":1,"42":2,"44":1,"45":2,"47":1,"49":1,"50":8,"52":1,"53":6,"55":1,"56":4,"58":1,"60":1,"61":2,"63":1,"65":1,"66":6,"67":1,"68":12,"69":7,"70":2,"71":1,"72":6,"74":1,"75":12,"76":7,"78":1,"80":3,"81":1,"83":2,"84":1,"86":1,"87":3,"89":4,"93":3,"95":1,"96":3,"97":3,"131":2}}],["gt",{"2":{"2":1,"70":1}}],["high",{"2":{"130":1}}],["highlighted",{"2":{"107":2}}],["highlighting",{"0":{"107":1},"2":{"107":2}}],["highlight",{"2":{"4":1}}],["historical",{"2":{"120":1}}],["hopefully",{"2":{"132":1}}],["however",{"2":{"125":1,"126":1}}],["how",{"0":{"124":1},"1":{"125":1,"126":1,"127":1,"128":1,"129":1},"2":{"126":2,"131":1}}],["hold",{"2":{"115":1}}],["hosts",{"2":{"99":1}}],["hr>",{"2":{"104":1}}],["h1>",{"2":{"104":1}}],["h1>404",{"2":{"104":1}}],["html>",{"2":{"104":2}}],["html",{"2":{"104":1}}],["http",{"2":{"42":1,"45":1,"50":1,"53":1,"61":1,"66":1,"72":2,"73":1,"89":2}}],["https",{"2":{"1":4,"2":1,"68":3,"69":2,"71":2,"73":1,"75":3,"76":2,"80":3,"81":1,"83":2,"87":3,"92":1}}],["hatch",{"2":{"126":1}}],["having",{"2":{"119":1}}],["have",{"2":{"71":1,"81":2,"83":1,"89":1,"96":1,"112":1,"126":4,"127":3,"128":2,"130":1,"133":2}}],["had",{"2":{"119":2}}],["hangs",{"0":{"96":1},"2":{"96":1}}],["hand",{"2":{"81":1}}],["has",{"2":{"72":1,"118":1,"119":1,"121":1,"122":1,"125":1,"126":2,"133":1}}],["header",{"2":{"129":1}}],["headers",{"2":{"129":3}}],["head>",{"2":{"104":2}}],["heterogenous",{"0":{"116":1}}],["here",{"2":{"68":1,"75":1,"85":1,"90":1,"92":1,"98":2,"131":2}}],["height=",{"2":{"103":1}}],["heights",{"2":{"81":1}}],["height>",{"2":{"81":1,"103":2}}],["height",{"0":{"102":1,"103":1},"1":{"103":1},"2":{"43":1,"77":1,"81":3,"97":1,"103":2}}],["help",{"0":{"7":1,"132":1},"1":{"8":1},"2":{"6":2,"7":1,"8":2,"77":2}}],["h",{"2":{"6":1}}],["written",{"2":{"121":1,"133":1}}],["write",{"2":{"83":1}}],["w",{"2":{"81":1,"87":1,"95":1}}],["worse",{"2":{"128":1}}],["works",{"2":{"130":1}}],["working",{"2":{"104":1}}],["work",{"0":{"124":1},"1":{"125":1,"126":1,"127":1,"128":1,"129":1},"2":{"81":2,"93":1,"112":1,"131":1}}],["would",{"2":{"71":1,"112":3,"119":1,"127":1}}],["wait",{"2":{"126":1}}],["wallet",{"2":{"115":2}}],["walk",{"2":{"78":1,"86":1}}],["way",{"2":{"112":1,"113":1,"120":1,"128":1}}],["was",{"2":{"95":1,"96":2,"97":1,"118":2,"119":4,"126":1,"129":5,"133":2}}],["warning",{"2":{"83":1,"97":1,"108":6}}],["want",{"2":{"50":1,"82":1,"88":1,"116":1,"131":1}}],["who",{"2":{"116":1}}],["while",{"2":{"114":1,"115":1,"125":1,"126":1,"130":2,"132":1}}],["which",{"2":{"70":1,"81":1,"112":4,"114":1,"115":1,"116":2,"118":2,"119":1,"125":3,"126":1,"129":1,"130":2,"133":4}}],["whatever",{"2":{"97":1}}],["what",{"0":{"72":1,"131":1,"132":1},"2":{"92":1,"118":1,"119":3,"132":1,"133":1}}],["whether",{"2":{"93":1,"119":1}}],["when",{"2":{"70":1,"81":1,"83":2,"84":1,"89":3,"92":1,"95":1,"103":2,"119":1,"121":1,"128":1,"129":1}}],["where",{"2":{"53":1,"71":1,"119":1,"121":1,"127":2,"128":2,"129":1}}],["website",{"2":{"121":1}}],["web3",{"2":{"92":2}}],["were",{"2":{"97":1,"119":1}}],["well",{"2":{"81":1,"87":1,"111":1,"118":1,"126":1,"127":1,"128":1}}],["we",{"2":{"50":1,"111":2,"112":2,"113":1,"115":1,"126":1,"127":1,"128":1}}],["wish",{"2":{"125":1}}],["wishes",{"2":{"119":1}}],["wide",{"2":{"116":1}}],["wider",{"2":{"114":1}}],["widely",{"2":{"111":1,"120":1,"133":1}}],["windows",{"2":{"93":1}}],["window",{"2":{"80":1,"82":1,"83":1,"87":1,"88":1,"89":1,"92":1}}],["without",{"2":{"115":1,"119":1,"129":1,"133":1}}],["with",{"2":{"54":1,"67":1,"70":1,"72":6,"74":1,"81":3,"82":2,"83":1,"87":2,"88":2,"93":2,"95":2,"96":2,"97":5,"103":1,"104":1,"105":1,"107":1,"111":2,"114":1,"115":2,"116":2,"117":1,"125":1,"128":2}}],["within",{"2":{"18":1,"118":1,"123":1,"130":1}}],["will",{"2":{"4":1,"26":1,"32":1,"54":2,"71":1,"72":3,"78":1,"81":7,"83":3,"84":1,"86":1,"87":1,"89":1,"92":1,"93":2,"96":1,"97":1,"115":1,"116":1,"121":1,"125":1,"126":1}}],["www",{"2":{"1":1}}],["$rec",{"2":{"3":3}}],["x",{"2":{"100":1,"129":3}}],["xvzf",{"2":{"68":3,"75":3}}],["x3c",{"2":{"3":2,"81":4,"83":1,"87":3,"89":1,"92":2,"103":2,"104":16}}],["xyz",{"2":{"1":1}}],["utilizing",{"2":{"123":1}}],["utia",{"2":{"50":1}}],["ultimately",{"2":{"122":1}}],["ultimate",{"2":{"121":1}}],["until",{"2":{"130":1}}],["unlike",{"2":{"125":1}}],["unless",{"2":{"120":1}}],["unique",{"2":{"123":1}}],["underwrite",{"2":{"116":1}}],["underwriting",{"2":{"115":1}}],["under",{"2":{"95":1}}],["underlying",{"2":{"89":1,"127":1}}],["ux",{"0":{"115":1},"2":{"111":2,"122":1,"126":1}}],["upon",{"2":{"133":1}}],["up",{"2":{"83":1,"89":1,"92":1,"118":1,"121":1,"126":2,"127":1}}],["updating",{"2":{"81":1,"83":1,"87":1}}],["updates",{"2":{"125":1}}],["update",{"2":{"71":2,"72":1,"81":3,"83":2,"87":1,"89":2,"92":1,"95":1}}],["u",{"2":{"42":1,"45":1,"50":1,"53":1,"61":1,"66":1}}],["us",{"2":{"132":1}}],["usual",{"2":{"111":1}}],["uses",{"2":{"113":1,"121":1,"129":1,"133":1}}],["users",{"2":{"111":1,"114":3,"115":5,"116":3,"117":1,"123":1,"126":4}}],["user",{"2":{"71":1,"115":2,"126":1}}],["use",{"0":{"71":1},"2":{"71":1,"72":1,"81":2,"82":1,"83":1,"87":1,"88":1,"89":1,"96":1,"103":1,"104":1,"111":1,"114":1,"126":1,"127":1,"130":1,"133":2}}],["used",{"0":{"77":1},"2":{"6":1,"13":1,"15":2,"18":1,"21":1,"28":2,"31":2,"50":1,"54":1,"72":1,"83":1,"89":1,"92":3,"111":2,"112":1,"113":1,"122":2,"127":2,"130":1,"133":2}}],["usr",{"2":{"68":3,"69":1,"75":3,"76":1}}],["usage",{"0":{"8":1,"10":1,"12":1,"14":1,"17":1,"19":1,"22":1,"25":1,"27":1,"30":1,"33":1,"36":1,"39":1,"41":1,"44":1,"47":1,"49":1,"52":1,"55":1,"58":1,"60":1,"63":1,"65":1},"2":{"130":1}}],["using",{"0":{"3":1,"68":1,"75":1},"2":{"35":1,"70":2,"78":1,"81":3,"83":2,"86":1,"89":2,"96":1,"97":2,"98":1,"112":1,"115":1,"129":2,"131":1}}],["url=https",{"2":{"3":1}}],["url",{"2":{"1":1,"2":2,"3":1,"42":3,"45":3,"50":3,"53":3,"61":3,"66":3,"81":1}}],["twitter",{"2":{"132":1}}],["two",{"2":{"125":2,"130":1}}],["tx",{"2":{"130":1}}],["tagged",{"2":{"128":1}}],["tar",{"2":{"68":12,"75":12}}],["targeting",{"2":{"70":1}}],["targeted",{"2":{"70":1}}],["target",{"2":{"15":1,"20":1,"23":1,"28":1,"31":1,"34":1,"35":1,"37":1}}],["time",{"2":{"126":1,"128":2}}],["times",{"2":{"122":1}}],["timely",{"2":{"117":1}}],["tia",{"2":{"111":2,"113":1}}],["title>",{"2":{"104":1}}],["title>404",{"2":{"104":1}}],["tip",{"2":{"81":1,"89":1,"93":1,"98":1,"108":4}}],["tcp",{"2":{"104":3}}],["turned",{"2":{"125":1}}],["turn",{"2":{"125":1}}],["turns",{"2":{"118":1}}],["tui",{"2":{"84":1,"89":1,"96":1}}],["tutorials",{"2":{"131":1}}],["tutorial",{"0":{"77":1}}],["t",{"0":{"72":1},"2":{"118":1,"119":3,"120":1,"129":1,"132":1}}],["truth",{"2":{"122":1}}],["trusted",{"2":{"120":1}}],["trust",{"2":{"113":1}}],["tree",{"2":{"119":1}}],["treats",{"2":{"118":1}}],["trying",{"2":{"71":1,"72":1}}],["transition",{"2":{"124":2,"130":1}}],["transaction",{"0":{"134":1},"2":{"96":1,"111":1,"112":2,"114":1,"115":2,"116":1,"118":1,"121":1,"126":5,"127":6,"128":1,"129":6,"130":1,"134":1}}],["transactions",{"0":{"91":1},"1":{"92":1,"93":1,"94":1,"95":1,"96":1,"97":1},"2":{"54":1,"81":2,"83":1,"85":1,"87":1,"90":1,"92":2,"93":4,"95":1,"96":2,"112":3,"114":1,"115":2,"116":3,"117":1,"118":6,"123":5,"125":6,"126":4,"127":1,"128":5,"129":1,"130":3,"133":1}}],["transfers",{"2":{"123":1,"133":1}}],["transferred",{"2":{"112":1}}],["transfer",{"0":{"64":1},"1":{"65":1,"66":1},"2":{"50":1,"64":1,"65":1}}],["tendermint",{"2":{"133":1}}],["teams",{"2":{"126":1}}],["terminal",{"2":{"56":1,"80":1,"82":1,"83":1,"87":1,"88":1,"89":1,"92":1}}],["tested",{"2":{"133":1}}],["testing",{"0":{"92":1,"93":1},"2":{"95":2,"96":2}}],["testdenom",{"2":{"72":3}}],["test",{"0":{"85":1,"90":1,"91":1,"96":1},"1":{"92":1,"93":1,"94":1,"95":1,"96":1,"97":1},"2":{"15":1,"28":1,"31":1,"71":2,"72":5,"81":2,"85":2,"87":1,"89":1,"90":2,"92":3,"93":1,"95":1,"96":1}}],["type",{"2":{"6":1,"15":1,"20":1,"23":1,"28":1,"31":1,"34":1,"37":1,"42":1,"45":1,"50":1,"53":1,"56":1,"61":1,"66":1,"104":1,"112":1}}],["than",{"2":{"122":1,"129":1}}],["that",{"2":{"6":1,"70":1,"72":1,"81":1,"83":1,"84":1,"85":1,"89":1,"90":1,"95":1,"96":3,"97":3,"104":1,"114":3,"118":4,"119":10,"120":3,"121":1,"123":3,"124":1,"126":1,"128":3,"129":6,"130":3,"133":2}}],["third",{"2":{"130":1}}],["things",{"2":{"129":1}}],["think",{"2":{"119":1}}],["this",{"0":{"77":1},"2":{"4":1,"13":1,"15":2,"18":1,"26":1,"28":2,"29":1,"31":2,"32":1,"69":1,"70":1,"72":1,"76":1,"78":1,"83":1,"86":1,"89":1,"92":1,"95":2,"96":2,"97":3,"103":1,"104":1,"106":1,"108":10,"111":2,"112":3,"114":1,"115":3,"116":1,"118":2,"119":6,"120":1,"122":1,"123":1,"125":3,"126":3,"127":2,"128":3,"130":3,"132":1,"133":3}}],["those",{"2":{"116":2,"122":1}}],["thought",{"2":{"118":1}}],["though",{"2":{"26":1}}],["three",{"2":{"111":1,"133":1}}],["through",{"2":{"78":1,"86":1,"93":1,"112":2,"116":1,"127":1,"134":1}}],["thus",{"2":{"93":1,"119":1}}],["there",{"2":{"118":2,"119":4,"126":3,"127":1}}],["themselves",{"2":{"126":1}}],["them",{"2":{"112":1,"115":1,"118":1,"122":2,"126":4,"130":1}}],["these",{"2":{"111":1,"112":2,"115":1,"119":1,"123":1,"125":1,"130":1,"133":1}}],["then",{"2":{"72":2,"81":1,"83":2,"97":1,"111":1,"112":1,"115":1,"119":3,"127":1,"129":1,"130":1,"133":1}}],["they",{"2":{"71":1,"81":1,"116":1,"117":3,"125":1,"126":1,"133":3}}],["their",{"2":{"26":1,"32":1,"71":1,"115":1,"116":3,"126":4,"133":2}}],["the",{"0":{"67":1,"72":1,"74":1,"81":1,"83":1,"84":2,"89":1,"92":1,"93":1,"101":1,"114":1,"115":1,"118":1,"123":1,"133":1},"1":{"68":1,"69":1,"75":1,"76":1,"77":1,"115":1,"116":1,"117":1,"119":1,"120":1},"2":{"2":1,"4":2,"6":4,"7":2,"9":2,"11":1,"13":2,"15":9,"16":1,"18":1,"20":1,"23":1,"24":2,"26":1,"28":9,"29":4,"31":9,"32":1,"34":1,"35":1,"37":4,"38":1,"40":2,"42":3,"43":2,"45":3,"46":2,"50":13,"51":1,"53":10,"54":3,"56":5,"59":1,"61":2,"66":8,"67":3,"69":3,"70":6,"71":9,"72":12,"74":3,"76":3,"77":6,"78":3,"81":21,"82":6,"83":16,"84":5,"85":2,"86":4,"87":7,"88":6,"89":16,"90":2,"92":12,"93":7,"95":9,"96":14,"97":13,"98":4,"99":2,"100":2,"103":5,"104":5,"105":1,"106":1,"109":2,"111":11,"112":23,"113":1,"114":4,"115":12,"116":7,"117":4,"118":27,"119":34,"120":15,"121":5,"122":18,"123":12,"124":4,"125":18,"126":14,"127":15,"128":22,"129":20,"130":32,"131":3,"132":1,"133":26,"134":2}}],["together",{"2":{"118":1}}],["top",{"2":{"114":1}}],["token",{"2":{"111":6,"115":1}}],["tokens",{"2":{"51":1,"64":1,"112":2,"113":1,"115":1,"123":1}}],["touches",{"2":{"111":1}}],["tooling",{"2":{"114":1,"115":1}}],["tool",{"2":{"67":1,"74":1,"114":1}}],["tomlsequencer",{"2":{"72":1}}],["toml",{"2":{"29":1,"70":1,"71":1,"72":1,"83":2,"89":2,"96":1}}],["to",{"0":{"2":1},"2":{"2":1,"15":2,"26":1,"28":2,"31":2,"32":1,"35":1,"37":5,"42":1,"45":1,"50":3,"53":1,"54":1,"56":1,"64":1,"65":1,"66":1,"67":2,"69":2,"71":6,"72":8,"74":2,"76":2,"78":1,"81":6,"82":4,"83":5,"85":1,"86":1,"87":1,"88":4,"89":2,"90":1,"92":1,"93":1,"95":4,"96":3,"97":2,"98":2,"103":2,"111":9,"112":19,"113":5,"114":4,"115":8,"116":6,"117":3,"118":9,"119":14,"120":2,"121":1,"122":6,"123":2,"124":1,"125":6,"126":13,"127":12,"128":9,"129":7,"130":14,"131":3,"132":1,"133":16}}],["bloat",{"2":{"128":1}}],["blob",{"2":{"125":1}}],["blockchain",{"2":{"113":1,"123":1,"124":2,"129":1,"133":3}}],["blocks",{"2":{"54":1,"81":1,"122":3,"123":1,"126":2,"127":1,"130":2}}],["blockheight",{"0":{"43":1},"1":{"44":1,"45":1},"2":{"44":1,"77":1,"81":1,"103":1}}],["block",{"0":{"102":1,"103":1},"1":{"103":1},"2":{"1":1,"2":1,"43":1,"77":1,"81":5,"97":2,"99":1,"103":5,"108":2,"112":2,"117":2,"118":4,"119":9,"122":1,"125":3,"126":3,"129":6,"130":3,"133":5}}],["bridging",{"0":{"110":1,"112":1},"1":{"111":1,"112":1,"113":1},"2":{"111":2,"112":2,"124":1}}],["bridged",{"2":{"111":1}}],["bridge",{"0":{"46":1,"48":1,"51":1},"1":{"47":1,"49":1,"50":1,"52":1,"53":1},"2":{"46":1,"47":1,"48":1,"49":1,"50":6,"51":1,"52":1,"53":5,"111":2,"112":4,"113":2,"133":1}}],["bundling",{"2":{"117":1}}],["bundled",{"2":{"116":1}}],["bundles",{"2":{"115":1,"117":1}}],["bundle",{"2":{"114":1,"116":1}}],["built",{"2":{"81":1,"106":1,"111":1,"112":1,"114":1}}],["building",{"2":{"130":1}}],["build",{"0":{"69":1,"76":1,"80":1},"2":{"69":1,"76":1,"80":2,"87":2}}],["but",{"2":{"72":1,"81":1,"83":1,"116":1,"126":1,"128":1,"130":1}}],["bin",{"2":{"68":3,"69":2,"75":3,"76":2}}],["binary",{"2":{"37":4,"69":1,"76":1}}],["binaries",{"0":{"21":1},"1":{"22":1,"23":1},"2":{"13":1,"21":1,"22":1,"77":1}}],["byte",{"2":{"118":1}}],["bytes",{"2":{"114":1,"130":1}}],["by",{"2":{"35":1,"70":2,"72":1,"104":1,"106":1,"107":1,"112":1,"113":1,"114":1,"116":1,"117":1,"118":3,"119":8,"120":3,"121":1,"122":2,"124":2,"125":1,"126":2,"127":2,"128":2,"130":6,"133":2}}],["bottlenecks",{"2":{"130":1}}],["both",{"2":{"32":1,"93":1,"115":1,"133":1}}],["box",{"2":{"108":2}}],["body>",{"2":{"104":2}}],["book",{"2":{"80":1,"87":1,"92":1}}],["bool",{"2":{"6":1,"42":1,"45":1,"50":1,"53":1,"56":4,"61":1,"66":1}}],["battle",{"2":{"133":1}}],["batches",{"2":{"122":1,"123":1,"126":1,"127":2,"128":1,"130":2}}],["batch",{"2":{"118":2,"127":5,"128":2}}],["bad",{"2":{"97":1}}],["backing",{"2":{"119":1}}],["back",{"2":{"95":1,"112":3,"123":1}}],["based",{"2":{"116":1}}],["base",{"2":{"15":1,"28":1,"31":1,"96":1}}],["bashname",{"2":{"104":1}}],["bashkubectl",{"2":{"104":1,"105":1}}],["bashjust",{"2":{"82":1,"88":1,"93":1}}],["bashgit",{"2":{"69":1,"76":1,"80":1,"87":1,"92":1}}],["bashcurl",{"2":{"68":3,"75":3}}],["bashcast",{"2":{"3":3,"81":1,"87":1}}],["bash",{"2":{"36":1,"82":2,"88":2,"92":1,"103":1,"104":1}}],["bashastria",{"2":{"8":1,"10":1,"12":1,"14":1,"17":1,"19":1,"22":1,"25":1,"27":1,"30":1,"33":1,"39":1,"41":1,"44":1,"47":1,"49":1,"52":1,"55":1,"58":1,"60":1,"63":1,"65":1,"71":1,"72":2,"81":1,"83":2,"84":1,"89":2,"103":1}}],["bashexport",{"2":{"3":2,"103":1}}],["balances",{"0":{"40":1},"1":{"41":1,"42":1},"2":{"40":1}}],["balance",{"2":{"3":2,"41":1,"42":1,"45":1,"81":1,"87":1}}],["benefit",{"2":{"126":2}}],["been",{"2":{"121":1,"125":1,"126":2,"133":1}}],["because",{"2":{"120":1,"122":1,"126":1}}],["belonging",{"2":{"118":1}}],["below",{"2":{"103":1}}],["behalf",{"2":{"115":1}}],["better",{"2":{"115":1,"116":1,"128":1}}],["between",{"2":{"113":2,"133":2}}],["best",{"2":{"81":1}}],["before",{"2":{"13":1,"18":1,"21":1,"119":1,"120":1,"122":2,"126":1}}],["be",{"2":{"2":1,"6":1,"13":2,"18":2,"21":2,"50":1,"53":1,"54":2,"66":1,"69":1,"70":2,"71":1,"72":2,"76":1,"81":2,"83":1,"92":2,"111":2,"112":2,"115":2,"117":1,"118":2,"119":3,"120":2,"121":1,"122":2,"125":1,"127":2,"128":1,"129":1,"130":2,"133":1}}],["much",{"2":{"122":1,"126":1,"128":1}}],["multiple",{"2":{"114":1,"122":1,"127":1,"128":1,"130":1}}],["must",{"2":{"13":1,"18":1,"21":1}}],["md",{"2":{"108":1}}],["md```js",{"2":{"107":1}}],["msg",{"2":{"107":2}}],["merkle",{"2":{"119":2,"129":1}}],["mechanisms",{"2":{"114":1}}],["mev",{"2":{"114":1,"126":1}}],["messages",{"2":{"113":1}}],["meaning",{"2":{"123":1,"126":1,"133":3}}],["mean",{"2":{"112":1}}],["means",{"2":{"95":1,"96":1,"97":1,"111":1,"126":1,"130":1}}],["method",{"2":{"111":1}}],["metamask",{"0":{"2":1},"2":{"2":1}}],["missing",{"2":{"118":1,"119":1}}],["mismatched",{"2":{"97":1}}],["mismatch",{"0":{"97":1}}],["minimum",{"2":{"133":1}}],["minimized",{"2":{"113":1}}],["minimal",{"2":{"35":1,"77":1}}],["minting",{"2":{"112":1}}],["millions",{"2":{"81":1}}],["model",{"2":{"128":1}}],["monopoly",{"2":{"126":1}}],["more",{"0":{"109":1,"132":1},"2":{"77":1,"113":1,"114":1,"121":1,"126":1,"128":1,"129":1,"130":2,"131":2,"133":1}}],["most",{"2":{"71":2,"81":1,"111":1,"115":1}}],["move",{"2":{"69":1,"76":1}}],["mv",{"2":{"68":3,"69":1,"75":3,"76":1}}],["made",{"2":{"127":1,"128":1,"133":3}}],["may",{"2":{"125":1,"130":1}}],["majority",{"2":{"119":1,"133":1}}],["main",{"2":{"125":1,"129":1,"133":1}}],["maintain",{"2":{"115":2}}],["mainnet",{"2":{"37":1}}],["mandatory",{"2":{"130":1}}],["manner",{"2":{"117":1}}],["many",{"2":{"111":1,"128":3,"130":1,"133":2}}],["manually",{"0":{"102":1},"1":{"103":1},"2":{"2":1,"103":2}}],["markdown",{"0":{"106":1},"1":{"107":1,"108":1,"109":1},"2":{"106":1,"109":1}}],["making",{"2":{"104":1,"130":1}}],["makes",{"2":{"114":1,"130":1}}],["make",{"2":{"67":1,"74":1,"96":1,"118":1,"127":1,"133":1}}],["matches",{"2":{"118":1,"133":1}}],["match",{"2":{"92":1,"133":1}}],["machines",{"2":{"128":1}}],["machine",{"2":{"78":1,"86":1,"93":1,"98":1,"112":1,"128":1}}],["macx86",{"2":{"68":2,"75":2}}],["flexibility",{"2":{"130":1}}],["flow",{"0":{"116":1,"134":1},"2":{"114":2,"118":1,"127":1,"134":1}}],["flag",{"2":{"6":1,"15":1,"20":1,"23":1,"28":1,"31":1,"34":1,"35":1,"37":1,"42":1,"45":1,"50":1,"53":1,"56":1,"61":1,"66":1,"70":1,"103":1}}],["flags",{"0":{"6":1,"15":1,"20":1,"23":1,"28":1,"31":1,"34":1,"37":1,"42":1,"45":1,"50":1,"53":1,"56":1,"61":1,"66":1},"2":{"6":1,"12":1,"14":1,"17":1,"19":1,"22":1,"25":1,"27":1,"30":1,"33":1,"36":3,"39":1,"41":1,"44":1,"49":1,"52":1,"55":1,"58":1,"60":1,"63":1,"65":1,"72":1}}],["fully",{"2":{"120":1}}],["full",{"0":{"125":1},"2":{"109":1,"118":2,"129":1,"131":1,"134":1}}],["functions",{"2":{"130":1,"133":1}}],["functioning",{"2":{"125":1}}],["function",{"2":{"124":1,"125":1,"128":1,"129":1,"130":1}}],["functionality",{"2":{"67":1,"74":1,"112":1}}],["funded",{"2":{"96":2,"115":1}}],["funds",{"2":{"96":1,"112":1}}],["fund",{"2":{"83":1,"96":1}}],["facilitate",{"2":{"123":1}}],["faster",{"2":{"122":1}}],["fast",{"2":{"120":1,"122":1,"125":1,"126":1,"133":1}}],["faq",{"0":{"98":1},"1":{"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1},"2":{"131":1}}],["failed",{"2":{"97":1}}],["faucet",{"2":{"1":2,"83":1,"96":1,"99":4}}],["firm",{"0":{"120":1},"2":{"120":2,"122":1}}],["first",{"2":{"81":1,"97":1,"112":1,"125":1,"127":1,"129":1,"130":2}}],["finalization",{"2":{"123":1}}],["finalized",{"2":{"118":2,"120":1,"129":1,"133":2}}],["finality",{"2":{"122":2,"133":1}}],["final",{"2":{"121":1}}],["find",{"2":{"83":1,"89":1,"131":1,"132":1}}],["fit",{"2":{"117":1}}],["fixed",{"2":{"119":1}}],["fix",{"2":{"95":1,"96":1,"97":1}}],["files",{"2":{"26":2,"29":1}}],["file",{"2":{"15":2,"28":2,"29":1,"31":2,"70":2,"81":2,"83":2,"87":1,"89":1,"92":2}}],["few",{"2":{"127":1,"129":1}}],["feature",{"2":{"123":1}}],["features",{"2":{"77":1,"107":1,"114":1}}],["fetched",{"2":{"103":1,"122":1}}],["fetch",{"0":{"102":1},"1":{"103":1},"2":{"122":1,"130":2}}],["fees",{"2":{"50":1,"111":1,"116":1,"127":2}}],["fee",{"0":{"111":1},"2":{"15":1,"28":1,"31":1,"50":3,"111":5,"113":1}}],["free",{"2":{"67":1,"74":1}}],["from",{"0":{"69":1,"76":1},"2":{"42":1,"45":1,"64":1,"81":2,"83":1,"95":1,"97":3,"104":1,"112":5,"113":1,"116":1,"118":1,"120":5,"121":1,"122":3,"123":1,"124":1,"125":4,"127":1,"128":1,"129":1,"130":1,"133":1}}],["focus",{"2":{"130":1}}],["foundry",{"2":{"80":2,"87":2,"92":2}}],["found",{"2":{"70":1,"104":2}}],["forks",{"2":{"133":1}}],["forked",{"2":{"128":1}}],["formerly",{"2":{"133":1}}],["form",{"2":{"125":3,"130":1}}],["formats",{"2":{"114":1}}],["format",{"2":{"56":1,"66":1,"118":1,"130":1}}],["forwarding",{"2":{"118":1}}],["forge",{"2":{"92":1,"93":1}}],["for",{"2":{"4":1,"6":2,"7":1,"11":1,"15":2,"16":1,"18":1,"21":1,"24":1,"28":2,"29":2,"31":2,"37":1,"38":1,"46":1,"50":2,"53":1,"54":1,"57":1,"62":1,"66":1,"70":2,"71":2,"72":2,"77":1,"81":5,"87":2,"89":1,"92":2,"96":4,"97":1,"99":1,"104":1,"105":1,"109":1,"111":5,"113":1,"114":4,"115":3,"116":2,"118":1,"119":3,"120":1,"121":1,"122":3,"123":1,"125":6,"126":8,"127":3,"128":8,"129":2,"130":10,"131":1,"132":1,"133":8}}],["follows",{"2":{"71":1,"112":1,"118":1,"129":1,"134":1}}],["following",{"2":{"2":1,"72":2,"81":1,"82":1,"88":1,"99":1,"100":1,"103":1,"125":1,"130":1}}],["follow",{"2":{"2":1,"85":1,"90":1,"129":2}}],["applications",{"2":{"133":1}}],["application",{"2":{"130":1,"133":4}}],["aware",{"2":{"128":1}}],["away",{"2":{"115":1}}],["akin",{"2":{"126":1}}],["affects",{"2":{"128":1}}],["affected",{"2":{"29":1}}],["after",{"2":{"119":1,"125":2,"128":1,"133":1}}],["available",{"2":{"111":1,"120":1,"127":1,"130":2,"133":4}}],["availability",{"0":{"121":1},"2":{"111":2,"118":1,"119":1,"120":3,"121":1,"127":1,"129":1,"133":2}}],["avaliable",{"2":{"77":1}}],["advanced",{"2":{"131":1}}],["advertise",{"2":{"119":1}}],["admission",{"2":{"104":1}}],["added",{"2":{"119":1,"120":1}}],["additionally",{"2":{"128":1,"133":2}}],["additional",{"2":{"81":1,"107":1,"114":1,"119":3}}],["adding",{"0":{"2":1}}],["address",{"2":{"41":1,"50":3,"52":2,"53":3,"54":1,"57":1,"58":1,"60":1,"62":1,"63":1,"66":3,"83":1,"87":1,"95":1,"99":1}}],["address>",{"2":{"3":1,"81":1,"87":1}}],["addr",{"2":{"3":3}}],["addr=",{"2":{"3":1}}],["add",{"2":{"2":1,"95":1,"112":2,"128":1}}],["agreed",{"2":{"133":1}}],["agnostic",{"2":{"114":1,"115":1,"118":1,"130":1}}],["age",{"2":{"104":1}}],["against",{"0":{"78":1,"84":1},"1":{"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1},"2":{"36":1,"37":1,"71":2,"78":1,"83":1,"84":2,"86":1,"93":1,"96":1,"118":1,"119":1}}],["automatically",{"2":{"103":1,"120":1}}],["abci",{"2":{"133":1}}],["abstract",{"2":{"115":1}}],["abstracting",{"2":{"114":1}}],["about",{"2":{"113":1,"131":3}}],["above",{"2":{"71":1,"83":1,"89":1,"92":1,"104":1,"123":2,"126":1}}],["ability",{"2":{"112":1,"127":1,"133":1}}],["able",{"2":{"83":1,"113":1,"114":1,"116":1,"118":1,"133":3}}],["algorithm",{"2":{"133":2}}],["alternative",{"2":{"126":1,"127":1}}],["along",{"2":{"122":1}}],["already",{"2":{"96":1}}],["alias",{"2":{"89":1}}],["always",{"2":{"81":2,"126":1}}],["also",{"2":{"81":2,"82":1,"83":1,"88":1,"111":1,"113":1,"120":1,"122":1,"126":1,"129":1,"133":2}}],["alleviating",{"2":{"111":1}}],["alloc",{"2":{"81":2,"87":2,"95":1}}],["allowing",{"2":{"111":1,"128":1,"130":3,"133":1}}],["allow",{"2":{"97":1,"111":1,"127":1}}],["allows",{"2":{"70":1,"115":1,"116":1,"128":1,"130":1,"133":3}}],["allowed",{"2":{"15":1,"28":1,"31":1,"127":1}}],["all",{"0":{"18":1},"1":{"19":1,"20":1},"2":{"4":1,"11":1,"16":1,"18":1,"19":1,"21":1,"26":1,"38":1,"68":1,"72":1,"75":1,"119":3,"120":2,"121":2,"125":1,"128":1,"130":1,"133":1}}],["at",{"2":{"72":1,"96":1,"128":1,"130":1,"133":1}}],["amd64",{"2":{"68":2,"75":2}}],["amount",{"2":{"52":1,"65":1}}],["achieved",{"2":{"119":1,"130":2}}],["acts",{"2":{"129":1}}],["actively",{"2":{"123":1}}],["activities",{"2":{"4":1}}],["acting",{"2":{"122":1}}],["act",{"2":{"120":1,"123":1,"128":1}}],["actually",{"2":{"119":3,"126":1}}],["actors",{"2":{"128":1}}],["actor",{"2":{"112":1}}],["accept",{"2":{"111":1}}],["accessible",{"2":{"111":1}}],["account",{"2":{"40":1,"48":1,"50":5,"51":1,"53":5,"54":3,"56":4,"59":1,"64":1,"77":1,"81":3,"83":4,"87":3,"92":2,"95":3,"96":5,"112":2}}],["aspects",{"2":{"130":1}}],["assuming",{"2":{"111":1}}],["assets",{"2":{"15":1,"28":1,"31":1}}],["asset",{"2":{"15":1,"28":1,"31":1,"50":8,"96":1,"127":3}}],["astira",{"2":{"81":1}}],["astriasequencerinitialheight",{"2":{"81":3}}],["astriarollupname",{"2":{"81":3,"83":1,"87":2,"89":1}}],["astriaorg",{"2":{"68":3,"69":1,"75":3,"76":1,"80":1,"87":1,"92":1}}],["astria",{"0":{"0":1,"5":1,"67":1,"70":1,"73":1,"74":1,"83":1,"84":1,"89":1,"101":1,"110":1,"114":1,"118":1,"123":1,"133":1},"1":{"1":1,"2":1,"3":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"71":1,"72":1,"75":1,"76":1,"77":1,"111":1,"112":1,"113":1,"115":1,"116":1,"117":1,"119":1,"120":1},"2":{"1":4,"2":1,"3":1,"4":1,"6":1,"8":1,"15":3,"18":3,"20":1,"21":2,"23":1,"28":3,"31":3,"34":1,"35":1,"36":3,"37":7,"42":2,"45":2,"50":9,"53":7,"56":4,"61":2,"66":7,"67":2,"68":18,"69":4,"70":3,"71":4,"72":6,"73":1,"74":2,"75":18,"76":4,"77":1,"78":3,"80":2,"81":3,"82":2,"83":7,"84":2,"86":3,"87":2,"88":2,"89":10,"92":3,"93":3,"95":1,"96":5,"97":3,"98":2,"99":5,"103":2,"105":1,"111":1,"112":3,"113":2,"114":2,"115":1,"116":1,"121":1,"123":1,"130":7,"131":2,"132":1,"133":2,"134":1}}],["as",{"0":{"115":1},"2":{"26":1,"50":1,"53":1,"67":2,"71":1,"74":2,"81":3,"87":2,"92":1,"103":1,"111":4,"112":2,"114":1,"115":5,"116":1,"118":5,"119":2,"120":1,"121":1,"122":3,"123":2,"126":3,"127":4,"128":5,"129":2,"130":3,"133":4,"134":1}}],["architecture",{"0":{"125":1}}],["archive",{"2":{"3":1}}],["array",{"2":{"118":1}}],["arbitrary",{"2":{"118":1,"130":3}}],["arbitrageurs",{"2":{"115":1}}],["arm64",{"2":{"68":1,"75":1}}],["arm",{"2":{"68":1,"75":1}}],["are",{"2":{"29":1,"37":1,"71":1,"72":2,"85":1,"90":1,"93":2,"96":1,"97":3,"99":1,"112":1,"114":1,"116":2,"117":3,"118":3,"119":1,"120":4,"122":3,"123":5,"125":2,"126":1,"127":2,"128":2,"130":1}}],["arg",{"2":{"6":1,"15":1,"20":1,"23":1,"28":1,"31":1,"34":1,"37":1,"42":1,"45":1,"50":1,"53":1,"56":1,"61":1,"66":1}}],["another",{"2":{"64":1,"123":1,"124":1}}],["an",{"2":{"37":4,"40":1,"54":1,"57":1,"59":1,"62":1,"89":2,"95":1,"96":2,"103":2,"108":2,"118":1,"119":2,"122":1,"123":1,"125":1,"126":1,"127":2,"129":3}}],["anyone",{"2":{"127":2}}],["any",{"2":{"6":1,"112":1,"123":1,"128":1,"130":1}}],["and",{"0":{"86":1,"89":1,"98":1,"120":1},"1":{"87":1,"88":1,"89":1,"90":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1},"2":{"4":1,"13":1,"15":1,"28":1,"31":1,"32":1,"54":2,"59":1,"67":2,"69":1,"72":3,"74":2,"76":1,"77":2,"80":3,"81":4,"82":3,"83":3,"84":1,"85":2,"87":6,"88":3,"89":3,"90":2,"92":3,"93":1,"96":3,"97":6,"103":1,"111":4,"112":2,"113":2,"115":2,"116":1,"117":1,"118":4,"119":3,"120":4,"121":2,"122":3,"123":4,"125":5,"126":5,"127":2,"128":7,"129":4,"130":10,"131":1,"133":4}}],["a",{"0":{"78":2,"79":1,"86":1,"87":1,"115":1},"1":{"79":2,"80":3,"81":3,"82":2,"83":2,"84":2,"85":2,"87":1,"88":1,"89":1,"90":1},"2":{"2":1,"6":1,"18":1,"21":1,"35":3,"36":3,"37":4,"42":1,"45":1,"48":1,"54":1,"56":1,"61":1,"67":1,"69":1,"70":1,"71":2,"72":7,"74":1,"76":1,"77":2,"78":2,"80":1,"81":2,"83":3,"84":1,"86":1,"87":2,"89":4,"92":1,"93":1,"95":2,"96":2,"97":1,"103":1,"104":1,"108":8,"111":6,"112":5,"113":2,"114":4,"115":4,"116":2,"117":2,"118":3,"119":12,"120":2,"121":2,"122":1,"123":4,"124":3,"125":8,"126":10,"127":9,"128":3,"129":8,"130":6,"131":3,"133":6}}],["equivalent",{"2":{"129":1}}],["ecosystems",{"2":{"128":1}}],["economic",{"2":{"126":1}}],["eg",{"2":{"127":1}}],["effective",{"2":{"126":1}}],["effectively",{"2":{"89":1}}],["emitted",{"2":{"125":1}}],["empty",{"2":{"2":1}}],["e",{"2":{"119":1,"129":1}}],["escape",{"2":{"126":1}}],["escrow",{"2":{"112":1}}],["established",{"2":{"111":1}}],["either",{"2":{"72":1,"96":1,"97":1,"128":1}}],["every",{"2":{"119":3}}],["everything",{"2":{"93":1,"132":1}}],["events",{"2":{"125":1}}],["even",{"2":{"72":1,"128":1}}],["evmerror",{"0":{"95":1}}],["evm",{"0":{"0":1},"1":{"1":1,"2":1,"3":1},"2":{"1":3,"2":1,"3":1,"92":4,"99":6,"100":1}}],["excludes",{"2":{"123":1}}],["extraction",{"2":{"126":1}}],["extracting",{"2":{"118":1}}],["extracted",{"2":{"118":1,"125":1}}],["extract",{"2":{"118":1}}],["extensions",{"2":{"106":1,"109":1}}],["extension",{"0":{"106":1},"1":{"107":1,"108":1,"109":1}}],["external",{"2":{"104":2}}],["executing",{"2":{"128":2,"129":1}}],["execution",{"2":{"115":1,"118":5,"122":1,"123":1,"125":3,"126":1,"128":1,"130":5,"133":2}}],["execute",{"2":{"125":1,"128":3}}],["executed",{"2":{"114":1,"123":2,"124":1,"128":1,"130":1}}],["executes",{"2":{"112":1,"125":1}}],["explicitly",{"2":{"120":1}}],["explicit",{"2":{"116":1}}],["explorer",{"2":{"1":1,"2":1,"99":2}}],["experience",{"2":{"115":1,"130":1}}],["expect",{"2":{"113":1}}],["export",{"2":{"107":1}}],["existing",{"2":{"96":1,"130":1}}],["examples",{"0":{"106":1},"1":{"107":1,"108":1,"109":1}}],["example",{"2":{"71":1,"72":1,"92":1,"129":1,"130":1}}],["eager",{"2":{"131":1}}],["easier",{"2":{"114":1}}],["easily",{"2":{"67":1,"74":1,"111":1,"114":1,"130":2,"133":1}}],["each",{"2":{"70":1,"111":2,"113":1,"118":2,"119":2,"125":1,"126":1,"127":1,"128":2,"129":1,"133":1}}],["errors",{"2":{"97":1}}],["error",{"2":{"37":1,"95":1,"96":1}}],["end",{"2":{"126":2}}],["endpoints",{"0":{"73":1,"99":1},"2":{"71":1,"99":1,"131":1}}],["enables",{"2":{"122":1}}],["enabled",{"2":{"113":3,"133":1}}],["engine",{"2":{"118":3,"123":1}}],["enshrined",{"2":{"130":1}}],["enshrining",{"2":{"112":1,"124":1}}],["ensure",{"2":{"117":2,"129":1,"133":1}}],["entire",{"2":{"18":1,"119":5,"133":1}}],["environment",{"2":{"13":1,"77":1,"103":1}}],["env",{"2":{"6":1,"15":1,"20":1,"23":1,"28":1,"31":1,"34":1,"37":1,"42":1,"45":1,"50":1,"53":1,"56":1,"61":1,"66":1,"92":3,"95":1}}],["ethereum",{"2":{"111":1}}],["eth",{"2":{"3":2,"111":2}}],["slot",{"2":{"133":1}}],["slower",{"2":{"128":2}}],["spun",{"2":{"121":1}}],["spec",{"2":{"113":1}}],["specified",{"2":{"103":1}}],["specifically",{"2":{"115":1,"119":1}}],["specific",{"2":{"37":4,"114":2,"119":2,"126":1,"128":1,"130":2}}],["svc",{"2":{"104":1}}],["sampling",{"2":{"129":1,"133":1}}],["same",{"2":{"83":1,"89":1,"92":1,"125":2,"128":1}}],["savings",{"2":{"128":1}}],["say",{"2":{"97":2}}],["subsets",{"2":{"125":1}}],["subset",{"2":{"124":1}}],["submitting",{"2":{"122":1}}],["submitted",{"2":{"117":1,"122":1}}],["submit",{"2":{"116":1}}],["submits",{"2":{"115":1}}],["submodules",{"2":{"92":1}}],["such",{"2":{"115":1,"123":1,"130":2}}],["supply",{"2":{"114":1}}],["supports",{"2":{"133":1}}],["supporting",{"2":{"114":1}}],["support",{"0":{"116":1},"2":{"112":1,"114":2,"116":1,"133":1}}],["sure",{"2":{"96":1}}],["suit",{"2":{"71":1}}],["script",{"0":{"92":1,"93":1,"96":1},"2":{"92":1,"93":2,"95":2,"96":2}}],["scout",{"2":{"1":1}}],["skip",{"2":{"83":1}}],["shared",{"2":{"128":1,"130":1}}],["shiki",{"2":{"107":1}}],["sh",{"2":{"80":1,"87":1,"92":1}}],["shown",{"2":{"83":1,"89":1,"123":2}}],["show",{"2":{"77":1}}],["shouldn",{"2":{"118":1}}],["should",{"0":{"131":1},"2":{"2":1,"71":1,"83":1,"89":1,"92":3,"104":1,"129":1,"131":1}}],["so",{"2":{"126":1,"133":1}}],["sovereign",{"2":{"124":1}}],["soft",{"0":{"120":1},"2":{"120":3,"122":1}}],["software",{"0":{"100":1},"2":{"100":1,"115":1}}],["solution",{"0":{"115":1},"2":{"126":2,"127":1,"128":1}}],["sophisticated",{"2":{"114":1,"115":1,"116":1}}],["sort",{"2":{"112":2}}],["source",{"0":{"69":1,"76":1},"2":{"122":1}}],["something",{"2":{"81":1,"87":1,"111":1,"112":1}}],["some",{"2":{"3":1,"81":1,"106":1,"112":2,"124":1,"127":3,"129":2}}],["single",{"2":{"133":1}}],["since",{"2":{"112":1,"113":1,"119":1,"128":1,"129":1,"130":1}}],["size",{"2":{"117":1}}],["sidecar",{"2":{"116":1}}],["side",{"2":{"114":1,"115":1}}],["similarly",{"2":{"130":1}}],["similar",{"2":{"111":1,"118":1}}],["simply",{"2":{"115":1,"118":1,"119":1}}],["simplified",{"2":{"70":1,"133":1}}],["simple",{"2":{"67":1,"74":1,"126":1,"127":1}}],["situations",{"2":{"71":1}}],["signed",{"2":{"127":1}}],["signatures",{"2":{"119":1}}],["sign",{"2":{"54":1}}],["synthetic",{"2":{"112":1}}],["syntax",{"0":{"107":1},"2":{"107":1}}],["sync",{"2":{"81":1,"129":1}}],["syncing",{"2":{"81":1,"120":1}}],["system",{"2":{"56":1,"57":1,"62":1,"69":1,"76":1}}],["symbol",{"2":{"1":1,"2":1}}],["straight",{"2":{"131":1}}],["string",{"2":{"6":1,"15":3,"20":1,"23":1,"28":3,"31":3,"34":1,"37":7,"42":1,"45":1,"50":7,"53":5,"61":1,"66":5,"130":1}}],["step",{"2":{"119":1}}],["steps",{"2":{"119":1}}],["stop",{"2":{"82":1,"88":1,"96":1,"97":2}}],["store",{"2":{"56":2,"129":1}}],["stored",{"2":{"50":1,"53":1,"66":1}}],["storing",{"2":{"56":1}}],["still",{"2":{"72":1,"83":1,"97":1,"125":1}}],["staking",{"2":{"127":2}}],["stake",{"2":{"119":1,"127":3}}],["station",{"2":{"114":1,"115":1}}],["states",{"2":{"128":1}}],["state",{"0":{"32":1},"1":{"33":1,"34":1},"2":{"26":1,"32":2,"33":1,"82":1,"88":1,"112":4,"124":2,"125":4,"128":4,"129":1,"130":1}}],["standard",{"2":{"113":1}}],["start",{"0":{"82":1,"88":1,"89":1},"2":{"81":1,"83":1,"97":1}}],["starting",{"2":{"81":1}}],["started",{"2":{"72":1,"80":1,"87":1,"92":1,"131":1}}],["stack",{"2":{"35":2,"67":1,"72":2,"74":1,"77":1,"78":1,"86":1,"89":1,"118":1,"130":2,"134":1}}],["sent",{"2":{"122":1}}],["sends",{"2":{"93":1}}],["sender",{"2":{"66":3}}],["send",{"2":{"3":1}}],["sequence",{"2":{"128":1}}],["sequences",{"2":{"128":2,"130":1}}],["sequenced",{"2":{"119":9,"130":5}}],["sequencers",{"0":{"126":1,"127":1},"2":{"126":3,"128":1}}],["sequencer",{"0":{"38":1,"40":1,"43":1,"46":1,"48":1,"51":1,"54":1,"57":1,"59":1,"62":1,"64":1,"78":1,"84":1,"86":1,"89":1,"102":1,"103":1,"133":1},"1":{"39":1,"41":1,"42":1,"44":1,"45":1,"47":1,"49":1,"50":1,"52":1,"53":1,"55":1,"56":1,"58":1,"60":1,"61":1,"63":1,"65":1,"66":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"87":1,"88":1,"89":1,"90":1,"103":1},"2":{"15":1,"28":1,"31":1,"32":2,"35":1,"36":2,"37":3,"38":1,"39":1,"40":1,"41":1,"42":3,"43":1,"44":1,"45":3,"46":1,"47":1,"49":1,"50":6,"52":1,"53":6,"54":1,"55":1,"58":1,"60":1,"61":3,"63":1,"65":1,"66":6,"67":1,"70":1,"71":6,"72":15,"73":2,"74":1,"77":4,"78":1,"81":8,"83":11,"84":2,"85":1,"86":1,"89":7,"90":1,"93":1,"96":7,"97":5,"99":4,"100":2,"103":6,"111":3,"112":7,"114":2,"115":4,"117":3,"118":7,"119":7,"120":5,"121":1,"122":4,"123":5,"125":1,"126":3,"127":6,"128":8,"129":5,"130":7,"131":2,"133":7}}],["sequencing",{"0":{"123":1,"128":1},"2":{"111":1,"114":3,"115":3,"116":2,"123":2,"128":6,"129":1,"130":1,"133":1}}],["sees",{"2":{"112":1}}],["seeing",{"2":{"97":1}}],["see",{"2":{"77":1,"84":1,"89":1,"93":1,"95":1,"96":1,"113":2,"121":1}}],["second",{"2":{"127":1,"128":1,"130":1}}],["securely",{"2":{"56":1}}],["secure",{"2":{"50":1,"53":1,"66":1}}],["sections",{"2":{"83":1,"89":1}}],["section",{"2":{"4":1,"126":1}}],["selection",{"2":{"133":1}}],["selecting",{"2":{"70":1}}],["select",{"2":{"37":1}}],["services",{"2":{"37":2,"72":2,"83":1}}],["service",{"2":{"13":1,"37":2,"104":1,"126":1,"127":1}}],["setting",{"2":{"83":1,"89":2,"92":1}}],["settings",{"2":{"2":1}}],["setup",{"0":{"79":1,"87":1},"1":{"80":1,"81":1}}],["setkey",{"0":{"62":1},"1":{"63":1},"2":{"63":1}}],["set",{"2":{"3":1,"6":1,"15":4,"28":4,"31":4,"37":1,"62":1,"71":1,"72":1,"96":1,"103":3,"119":4,"123":1,"125":1,"126":1,"127":3,"133":1}}],["s",{"2":{"2":1,"81":1,"104":1,"111":1,"112":1,"114":1,"115":2,"118":2,"119":2,"122":2,"124":1,"125":1,"127":1,"128":5,"129":1,"130":2,"133":3}}],["occurring",{"2":{"133":1}}],["ocean",{"2":{"98":1}}],["opposed",{"2":{"130":1}}],["op",{"2":{"118":2,"130":2}}],["opaque",{"2":{"114":1}}],["operator",{"2":{"115":1}}],["operators",{"2":{"115":2}}],["operate",{"2":{"114":1}}],["open",{"2":{"80":1,"81":1,"83":3,"87":2,"89":2,"92":1}}],["options",{"2":{"127":1}}],["optionally",{"2":{"111":1,"123":1,"126":1}}],["optimistic",{"2":{"112":1}}],["our",{"2":{"111":1,"131":2}}],["out",{"2":{"98":2,"109":1,"131":1,"132":1}}],["outoffunds",{"0":{"95":1},"2":{"95":1}}],["output",{"2":{"50":1,"53":1,"56":1,"66":1,"107":1,"108":1}}],["obtains",{"2":{"130":1}}],["obtain",{"2":{"111":1}}],["own",{"2":{"98":2}}],["older",{"2":{"81":1}}],["other",{"2":{"29":1,"77":1,"113":2,"125":1,"130":1,"133":2}}],["of",{"2":{"9":1,"40":1,"42":1,"43":1,"45":1,"50":6,"53":4,"56":1,"59":1,"61":1,"66":4,"70":1,"72":3,"77":1,"78":1,"81":4,"84":1,"86":1,"87":1,"89":1,"93":1,"106":1,"109":1,"111":1,"112":3,"114":2,"115":2,"116":2,"118":5,"119":9,"120":1,"121":1,"122":3,"123":6,"124":2,"125":3,"126":4,"127":4,"128":4,"129":7,"130":5,"133":4}}],["official",{"2":{"2":1}}],["ordinary",{"2":{"114":1}}],["orders",{"2":{"128":1}}],["ordered",{"2":{"118":1,"121":1,"122":1,"123":2}}],["ordering",{"0":{"117":1},"2":{"115":1,"116":3,"117":1,"118":1,"126":2,"129":1,"130":1}}],["order",{"0":{"116":1},"2":{"114":2,"115":1,"116":1,"117":1,"119":1,"121":1}}],["or",{"2":{"8":1,"35":1,"69":1,"72":1,"76":1,"93":1,"96":2,"97":2,"103":1,"112":3,"115":1,"119":2,"125":3,"126":1,"127":1,"128":1,"130":1,"131":2,"132":1}}],["org",{"2":{"1":3,"2":1,"3":1,"71":2,"73":1,"81":1,"83":2,"99":5}}],["over",{"2":{"116":1,"119":1,"124":1,"127":1,"128":1}}],["override",{"2":{"6":1,"15":1,"20":1,"23":1,"28":1,"31":1,"34":1,"37":5,"42":1,"45":1,"50":1,"53":1,"56":1,"61":1,"66":1}}],["overview",{"0":{"4":1}}],["onto",{"2":{"120":1}}],["once",{"2":{"81":1,"118":1,"121":1}}],["one",{"2":{"64":1,"81":1,"96":1,"111":1,"119":1,"126":1,"128":1}}],["only",{"2":{"29":1,"72":1,"111":1,"112":1,"123":1,"127":1,"128":2,"130":2,"133":2}}],["on",{"0":{"110":1},"1":{"111":1,"112":1,"113":1},"2":{"6":1,"40":1,"51":1,"69":1,"76":1,"77":1,"78":1,"81":3,"86":1,"87":1,"93":1,"97":1,"98":3,"111":1,"112":8,"114":2,"115":1,"119":3,"123":2,"125":1,"126":4,"127":2,"128":1,"130":2,"132":1,"133":4}}],["ondora",{"2":{"1":1}}],["rust",{"2":{"133":1}}],["runtime",{"2":{"72":1}}],["running",{"2":{"72":2,"78":1,"81":1,"83":1,"84":1,"85":1,"86":1,"89":2,"90":1,"93":3,"95":1,"96":1,"97":1,"103":1}}],["runs",{"2":{"35":1,"77":1,"100":1}}],["run",{"0":{"35":1,"78":1,"84":1,"86":1,"93":1},"1":{"36":1,"37":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"87":1,"88":1,"89":1,"90":1},"2":{"13":2,"18":2,"21":2,"35":1,"36":6,"37":1,"67":1,"69":2,"70":1,"71":2,"72":4,"74":1,"76":2,"77":1,"78":1,"81":1,"82":4,"83":1,"84":2,"86":1,"88":4,"89":5,"92":1,"93":2,"95":1,"96":1,"97":3,"115":1,"116":1,"126":1}}],["range",{"2":{"114":1,"116":1}}],["rotates",{"2":{"133":1}}],["role",{"2":{"118":1}}],["rollups",{"0":{"124":1},"1":{"125":1,"126":1,"127":1,"128":1,"129":1},"2":{"111":1,"112":1,"114":3,"116":1,"120":1,"122":1,"124":1,"128":4,"130":3,"131":2,"133":2}}],["rollup",{"0":{"78":1,"79":1,"85":1,"86":1,"87":1,"90":1,"112":1,"125":1,"126":1,"129":1},"1":{"79":1,"80":2,"81":2,"82":1,"83":1,"84":1,"85":1,"87":1,"88":1,"89":1,"90":1},"2":{"49":1,"67":1,"71":1,"72":1,"74":1,"78":1,"81":8,"82":3,"83":4,"85":1,"86":1,"87":2,"88":3,"89":4,"90":1,"93":1,"95":3,"97":7,"98":2,"103":3,"105":1,"111":4,"112":11,"114":2,"115":4,"116":1,"118":13,"119":12,"120":1,"121":1,"123":2,"124":2,"125":16,"126":12,"127":3,"128":7,"129":10,"130":22,"131":2,"133":6}}],["route",{"2":{"116":1}}],["robust",{"2":{"114":1}}],["roots",{"2":{"112":1}}],["root",{"2":{"11":1,"16":1,"24":1,"38":1,"46":1,"112":1,"119":1,"125":1,"129":1}}],["reduced",{"2":{"128":1}}],["reducing",{"2":{"126":1}}],["reach",{"2":{"132":1}}],["reaches",{"2":{"127":1}}],["reasons",{"2":{"125":1}}],["read",{"0":{"131":1},"2":{"125":1,"131":1}}],["regarding",{"2":{"127":1}}],["regardless",{"2":{"93":1}}],["regular",{"2":{"116":1}}],["removing",{"2":{"130":1}}],["remote",{"0":{"78":1,"84":1},"1":{"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1},"2":{"35":1,"36":1,"78":1,"81":2,"83":1,"84":2,"93":1,"96":1,"97":1,"99":1}}],["remain",{"2":{"128":1}}],["remaining",{"2":{"114":1,"130":1}}],["request",{"2":{"104":1}}],["requirement",{"2":{"130":1}}],["require",{"2":{"115":1}}],["required",{"2":{"78":1,"86":1,"125":1}}],["requires",{"2":{"50":1,"53":1,"66":1,"69":1,"76":1,"80":1,"87":1,"111":2,"112":1,"114":2,"115":1}}],["relayer",{"0":{"122":1},"2":{"100":1,"122":4,"123":1}}],["relevant",{"2":{"81":1,"118":1,"125":1}}],["releases",{"2":{"68":4,"75":4}}],["rejected",{"2":{"96":1}}],["rerun",{"2":{"95":1,"96":1}}],["replace",{"2":{"83":1}}],["repository",{"2":{"132":1}}],["repo",{"2":{"69":1,"76":1,"87":1,"92":2,"95":2}}],["re",{"2":{"72":1,"96":1,"112":1,"131":1,"132":1}}],["revert",{"2":{"72":1}}],["retried",{"2":{"120":1}}],["retrieved",{"2":{"120":3}}],["retrieves",{"2":{"59":1,"120":1}}],["retrieve",{"2":{"42":1,"45":1,"103":1,"104":1}}],["return",{"2":{"26":1,"104":1,"107":2}}],["responsible",{"2":{"126":1}}],["responsibility",{"2":{"122":1}}],["respective",{"2":{"112":1}}],["respectively",{"2":{"72":1}}],["resource",{"2":{"105":1}}],["resources",{"2":{"4":1,"77":1}}],["result",{"2":{"104":1,"115":1}}],["resync",{"2":{"97":1}}],["restart",{"2":{"82":4,"88":4,"95":2,"97":6}}],["resides",{"2":{"53":1}}],["resets",{"2":{"29":1}}],["resetting",{"2":{"24":1}}],["reset",{"0":{"24":1,"26":1,"29":1,"32":1},"1":{"25":1,"27":1,"28":1,"30":1,"31":1,"33":1,"34":1},"2":{"25":1,"26":1,"27":1,"29":1,"30":1,"32":2,"33":1}}],["recalculating",{"2":{"119":1}}],["receives",{"2":{"119":3}}],["received",{"2":{"117":1,"119":1,"125":1}}],["recent",{"2":{"81":1}}],["recurse",{"2":{"92":1}}],["rec",{"2":{"3":1}}],["ria",{"2":{"1":1,"2":1}}],["rpc",{"2":{"1":2,"2":2,"3":3,"71":3,"72":1,"73":2,"81":1,"83":2,"89":1,"99":4}}],["censorship",{"2":{"126":1}}],["centralized",{"2":{"126":1,"127":1}}],["center>nginx",{"2":{"104":1}}],["center>",{"2":{"104":3}}],["certain",{"2":{"119":3}}],["celestia",{"2":{"111":1,"112":3,"113":2,"121":3,"129":1,"130":2,"133":1}}],["cp",{"2":{"92":1}}],["ctrl+c",{"2":{"82":1,"88":1}}],["creating",{"2":{"103":1}}],["creation",{"2":{"72":1}}],["creates",{"2":{"133":1}}],["create",{"2":{"54":1,"77":1,"81":1,"83":1,"87":1,"95":1,"96":1,"103":1,"127":1}}],["createaccount",{"0":{"54":1},"1":{"55":1,"56":1},"2":{"55":1,"77":1,"83":1,"96":1}}],["created",{"2":{"26":1,"54":1,"70":1,"83":2,"87":1,"96":1,"125":1}}],["cd",{"2":{"69":1,"76":1,"80":1,"87":1,"92":2}}],["clusterip",{"2":{"104":1}}],["cluster",{"2":{"99":1,"104":1,"105":1,"131":1}}],["clean",{"2":{"82":1,"88":1,"95":1,"97":5}}],["clear",{"2":{"82":1,"88":1}}],["clone",{"2":{"69":1,"76":1,"80":2,"87":2,"92":2}}],["client",{"2":{"129":2}}],["cli",{"0":{"5":1,"67":1,"70":1,"74":1,"101":1},"1":{"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"68":1,"69":1,"71":1,"72":1,"75":1,"76":1,"77":1},"2":{"6":2,"9":1,"29":1,"67":1,"68":9,"69":3,"70":3,"72":1,"74":1,"75":9,"76":3,"77":3,"78":1,"81":1,"83":1,"86":1,"89":3,"93":1,"96":3,"97":5,"103":3,"131":1}}],["c",{"2":{"50":1,"53":1,"66":1}}],["collects",{"2":{"126":1}}],["collections",{"2":{"122":1}}],["couples",{"2":{"130":1}}],["counterpart",{"2":{"118":1}}],["could",{"2":{"112":1}}],["cost",{"2":{"116":1,"126":2,"128":1}}],["costs",{"2":{"115":1}}],["cosmos",{"2":{"113":1}}],["corresponds",{"2":{"119":1}}],["corresponding",{"2":{"112":1,"118":1,"126":1}}],["correctly",{"2":{"83":1,"85":1,"90":1,"95":1,"96":1}}],["correct",{"2":{"72":1,"118":1,"119":2}}],["consists",{"2":{"124":1}}],["considered",{"2":{"120":3,"121":1}}],["consensus",{"2":{"112":1,"118":1,"119":1,"123":1,"125":4,"127":2,"129":5,"130":7,"133":5}}],["confirmations",{"2":{"120":1,"125":1,"126":2}}],["configured",{"2":{"85":1,"90":1,"95":1}}],["configure",{"0":{"81":1,"83":1,"89":1,"92":1},"2":{"92":1,"96":1}}],["configuring",{"2":{"72":1,"81":1,"92":1}}],["configurations",{"2":{"70":1}}],["configuration",{"0":{"70":1},"1":{"71":1,"72":1},"2":{"71":2}}],["configs",{"2":{"71":1}}],["config",{"0":{"26":1,"72":1},"1":{"27":1,"28":1},"2":{"26":2,"27":1,"29":3,"70":1,"71":1,"72":2,"81":1,"83":2,"87":1,"89":1,"96":2,"103":2}}],["connection",{"2":{"120":1}}],["connect",{"2":{"118":1}}],["concerns",{"2":{"111":1}}],["conditions",{"2":{"97":1}}],["conductor",{"0":{"118":1},"1":{"119":1,"120":1},"2":{"37":3,"81":1,"84":1,"89":1,"97":1,"100":1,"118":4,"119":7,"120":3,"122":1,"123":1,"130":2}}],["contrast",{"2":{"116":1}}],["contract",{"2":{"112":1,"125":1}}],["controlling",{"2":{"116":1}}],["controller",{"2":{"104":2}}],["controlled",{"2":{"70":1}}],["control",{"2":{"72":1,"115":1,"116":1}}],["contained",{"2":{"124":1}}],["containers",{"0":{"108":1}}],["contains",{"2":{"96":1}}],["comes",{"2":{"130":1}}],["come",{"2":{"123":1}}],["cometbft",{"2":{"15":2,"28":2,"31":2,"32":1,"37":3,"89":1,"100":1,"113":2,"123":1,"130":1,"133":5}}],["compression",{"2":{"126":1,"128":1}}],["compressing",{"2":{"122":1}}],["compresses",{"2":{"126":1}}],["complete",{"2":{"118":1}}],["complexity",{"2":{"115":1}}],["complex",{"2":{"114":1}}],["component",{"2":{"125":1}}],["components",{"0":{"83":1,"84":1},"2":{"71":2,"78":1,"84":1,"86":1,"123":2}}],["composer",{"0":{"114":1,"115":1},"1":{"115":1,"116":1,"117":1},"2":{"37":3,"81":1,"83":2,"84":1,"89":1,"96":2,"97":1,"100":1,"114":1,"115":5,"116":1,"117":1,"123":1}}],["coming",{"2":{"97":1}}],["com",{"2":{"68":3,"69":2,"75":3,"76":2,"80":2,"87":2,"92":1}}],["commits",{"2":{"122":2,"123":1,"128":1}}],["committed",{"2":{"119":1,"130":1}}],["commitments",{"0":{"120":1},"2":{"120":4,"133":2}}],["commitment",{"2":{"118":1,"119":10,"120":1,"126":1,"127":1,"133":2}}],["common",{"0":{"94":1},"1":{"95":1,"96":1,"97":1}}],["communication",{"2":{"113":1,"133":1}}],["communicate",{"2":{"72":2,"125":1}}],["community",{"0":{"4":1},"2":{"4":1}}],["command",{"2":{"6":2,"7":1,"8":1,"11":1,"12":1,"13":2,"16":1,"17":1,"24":1,"25":1,"29":1,"38":1,"39":1,"46":1,"47":1,"70":1,"71":1,"72":2,"77":1,"81":1,"103":1}}],["commands",{"0":{"5":1,"77":1},"1":{"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1},"2":{"11":1,"16":1,"38":1,"46":1,"72":1,"77":1,"83":1,"89":1}}],["checking",{"2":{"133":1}}],["checked",{"2":{"119":2}}],["check",{"2":{"98":2,"104":1,"105":1,"109":1,"129":1,"131":1,"132":1,"133":1}}],["checkout",{"2":{"80":1,"87":1,"92":1}}],["chosen",{"2":{"127":1}}],["chose",{"2":{"81":1,"87":1}}],["choosing",{"2":{"81":1,"87":1}}],["choose",{"2":{"15":1,"20":1,"23":1,"28":1,"31":1,"34":1,"35":1,"37":1,"81":1,"111":1,"130":1}}],["changes",{"2":{"133":1}}],["changed",{"2":{"71":1}}],["channel",{"2":{"50":1}}],["chains",{"2":{"111":1,"113":2,"133":3}}],["chainid",{"2":{"81":3,"87":3,"92":1}}],["chain",{"0":{"97":1},"2":{"1":1,"2":1,"15":2,"28":2,"31":2,"50":3,"52":1,"53":3,"66":3,"71":1,"72":16,"83":1,"89":2,"92":3,"111":4,"114":1,"118":1,"120":1,"123":1,"125":2,"129":5,"133":3}}],["calldata",{"2":{"125":1}}],["capped",{"2":{"117":1}}],["car",{"2":{"114":1,"115":1}}],["causes",{"2":{"111":1}}],["cause",{"2":{"81":1}}],["case",{"0":{"71":1},"2":{"71":1,"111":1,"133":1}}],["casey",{"2":{"69":1,"76":1,"80":1,"87":1}}],["cast",{"0":{"3":1},"2":{"95":1}}],["can",{"2":{"6":1,"13":1,"18":1,"21":1,"35":1,"69":1,"70":3,"71":1,"76":1,"82":2,"83":1,"85":1,"88":2,"90":1,"97":1,"103":2,"104":2,"105":1,"111":3,"115":2,"116":1,"117":1,"118":1,"119":2,"120":2,"122":1,"123":1,"125":1,"126":1,"127":1,"128":2,"129":1,"130":2,"131":2,"132":1,"133":1}}],["curl",{"0":{"68":1,"75":1},"2":{"104":2}}],["currently",{"2":{"128":1}}],["current",{"2":{"43":1,"77":1,"128":1}}],["currency",{"2":{"1":1,"2":1}}],["custom",{"0":{"108":1},"2":{"2":1}}],["ignorant",{"2":{"128":1}}],["ie",{"2":{"123":2,"133":1}}],["i",{"0":{"131":1,"132":1},"2":{"119":1,"129":1}}],["improved",{"2":{"122":1}}],["improperly",{"2":{"96":1}}],["implicitly",{"2":{"120":1}}],["implemented",{"2":{"124":1,"126":1,"128":1,"130":2,"133":1}}],["implementations",{"2":{"128":1}}],["implementation",{"2":{"118":1}}],["implement",{"2":{"112":2,"129":2,"133":2}}],["ibc",{"0":{"113":1},"2":{"111":2,"112":1,"113":5,"133":1}}],["ip",{"2":{"104":3}}],["if",{"0":{"132":1},"2":{"69":1,"71":2,"72":4,"76":1,"82":2,"83":2,"88":2,"89":1,"93":1,"95":1,"96":2,"97":3,"103":2,"111":1,"126":1,"129":2,"131":1,"132":1,"133":2}}],["its",{"2":{"118":1,"119":1,"126":1,"129":1,"133":2}}],["it",{"2":{"67":1,"72":1,"74":1,"81":1,"97":1,"103":2,"111":1,"112":1,"113":1,"114":2,"118":7,"119":11,"121":1,"122":2,"123":3,"128":8,"129":5,"130":3,"133":6}}],["issue",{"2":{"95":1,"96":1,"97":1}}],["issues",{"0":{"94":1},"1":{"95":1,"96":1,"97":1},"2":{"97":1}}],["is",{"2":{"15":2,"28":2,"31":2,"67":1,"70":1,"71":2,"72":1,"74":1,"81":1,"89":2,"96":1,"103":1,"104":1,"108":10,"111":1,"112":2,"113":3,"114":3,"118":6,"119":14,"120":3,"121":4,"122":1,"123":3,"124":2,"125":5,"126":7,"127":5,"128":6,"129":1,"130":12,"133":8,"134":1}}],["involved",{"2":{"128":1}}],["incentivizes",{"2":{"128":1}}],["included",{"2":{"117":1,"118":1,"119":2,"126":1,"129":3}}],["includes",{"2":{"112":1,"118":1,"123":1,"132":1}}],["inclusion",{"2":{"116":1,"119":1,"126":5,"129":1,"130":1}}],["individual",{"2":{"122":1}}],["introduction",{"0":{"130":1},"1":{"131":1,"132":1},"2":{"121":1}}],["into",{"2":{"118":1,"125":2,"127":1}}],["interface",{"2":{"133":1}}],["interested",{"2":{"115":1}}],["inter",{"2":{"113":1,"133":1}}],["interacting",{"2":{"72":1,"115":1}}],["interact",{"2":{"67":1,"74":1}}],["input",{"2":{"107":1,"108":1}}],["ingress",{"0":{"105":1},"2":{"104":3,"105":2}}],["inside",{"2":{"119":1}}],["insufficient",{"2":{"96":1}}],["instructions",{"2":{"85":1,"90":1,"98":2}}],["instantiated",{"2":{"112":1}}],["instance",{"2":{"15":5,"18":2,"20":3,"21":1,"23":3,"24":1,"26":1,"28":5,"29":1,"31":5,"34":3,"37":3,"70":2}}],["installation",{"2":{"80":1,"87":1,"92":1}}],["installed",{"2":{"69":1,"76":1}}],["install",{"0":{"67":1,"74":1,"101":1},"1":{"68":1,"69":1,"75":1,"76":1,"77":1},"2":{"69":1,"76":1,"80":1,"87":1,"92":1}}],["instead",{"2":{"56":1,"71":1,"115":1,"128":1}}],["insecure",{"2":{"56":2,"83":1}}],["info",{"2":{"37":2,"108":4}}],["information",{"0":{"1":1,"81":1,"104":1,"105":1},"2":{"6":1,"7":1,"56":1,"81":1}}],["initialize",{"2":{"48":1,"72":2,"82":1,"83":1,"88":1,"89":1}}],["initializes",{"2":{"13":1,"77":1}}],["initial",{"2":{"32":1,"81":1,"103":5}}],["initially",{"2":{"26":1}}],["init",{"0":{"13":1,"48":1},"1":{"14":1,"15":1,"49":1,"50":1},"2":{"14":1,"18":1,"21":1,"49":1,"50":1,"72":3,"77":1,"82":1,"83":1,"88":1,"89":1,"97":1}}],["in",{"0":{"77":1},"2":{"6":1,"15":2,"26":1,"28":2,"31":2,"50":1,"53":1,"56":3,"57":1,"62":1,"66":2,"69":2,"70":1,"71":2,"76":2,"81":2,"82":3,"83":2,"87":1,"88":3,"89":1,"92":3,"93":2,"95":1,"96":1,"97":2,"106":1,"111":1,"112":3,"113":1,"115":3,"116":1,"117":4,"118":2,"119":6,"120":1,"121":1,"122":1,"123":2,"124":2,"126":2,"128":1,"129":3,"130":1,"133":3}}],["ideally",{"2":{"133":1}}],["ideal",{"2":{"126":1}}],["ids",{"2":{"119":4}}],["id=",{"2":{"92":1}}],["id",{"2":{"1":1,"2":1,"15":1,"28":1,"31":1,"49":1,"50":9,"53":3,"66":3,"71":1,"72":8,"83":1,"89":1,"92":2,"119":1,"130":2,"133":1}}],["during",{"2":{"133":2}}],["dusk",{"2":{"1":4,"2":2,"3":1,"36":1,"37":1,"50":1,"53":1,"66":1,"71":7,"73":2,"81":1,"83":5,"84":1,"93":1,"96":1,"99":5,"100":1}}],["d",{"2":{"69":1,"76":1}}],["date",{"2":{"126":1}}],["data",{"0":{"97":1,"119":1,"121":1},"2":{"18":1,"24":1,"32":1,"81":1,"82":1,"88":1,"92":1,"97":4,"107":2,"111":3,"112":1,"118":7,"119":18,"120":7,"121":3,"122":2,"124":1,"125":6,"126":1,"127":2,"128":5,"129":5,"130":11,"133":12}}],["da",{"2":{"111":2,"112":4,"122":6,"133":1}}],["dangerous",{"2":{"108":2}}],["danger",{"2":{"108":2}}],["darwin",{"2":{"68":2,"75":2}}],["dawn",{"2":{"37":1}}],["difficult",{"2":{"128":1}}],["different",{"2":{"4":1,"70":1,"71":2,"72":3,"103":1,"111":2,"123":1}}],["diagram",{"2":{"123":1}}],["did",{"2":{"119":1}}],["discussed",{"2":{"126":1}}],["distinct",{"2":{"112":1}}],["displays",{"2":{"84":1,"89":1}}],["display",{"2":{"6":1}}],["directly",{"2":{"93":1,"115":2,"116":1,"126":2}}],["directory",{"2":{"18":1,"26":1,"69":1,"70":1,"76":1,"83":2,"89":2}}],["dir",{"2":{"82":2,"88":2}}],["digital",{"2":{"98":1}}],["digit",{"2":{"81":1,"87":1,"92":1}}],["decides",{"2":{"133":1}}],["decentralized",{"0":{"127":1},"2":{"123":1,"127":1,"128":1,"130":1,"133":1}}],["de",{"2":{"130":1}}],["determine",{"2":{"130":1}}],["determining",{"2":{"126":1}}],["deterministically",{"2":{"125":2}}],["details",{"2":{"77":1,"108":4,"113":1}}],["delayed",{"2":{"130":1}}],["delivery",{"2":{"123":1}}],["deletes",{"2":{"18":1}}],["delete",{"2":{"18":1,"21":1}}],["derived",{"2":{"125":1,"127":1,"129":1,"130":1}}],["derives",{"2":{"112":1,"125":1,"126":1,"130":1}}],["derive",{"2":{"112":1,"125":1}}],["derivation",{"2":{"111":1,"125":1,"129":1,"133":1}}],["demonstrates",{"2":{"106":1}}],["depth",{"2":{"121":1}}],["deposits",{"2":{"112":2}}],["deposit",{"2":{"111":1,"112":3}}],["deploying",{"2":{"131":1}}],["deploy",{"2":{"98":2}}],["dependency",{"2":{"67":1,"74":1}}],["destined",{"2":{"123":1,"128":1}}],["destination",{"2":{"52":1,"121":1}}],["described",{"2":{"115":1}}],["description",{"2":{"6":1,"15":1,"20":1,"23":1,"28":1,"31":1,"34":1,"37":1,"42":1,"45":1,"50":1,"53":1,"56":1,"61":1,"66":1,"77":1}}],["designed",{"2":{"67":1,"74":1,"114":1}}],["debugging",{"0":{"98":1},"1":{"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1}}],["debug",{"2":{"37":1}}],["denomination",{"2":{"15":1,"28":1,"31":1}}],["denom",{"2":{"15":3,"28":3,"31":3,"71":1,"72":5,"83":1,"89":1}}],["default",{"2":{"15":4,"20":2,"23":2,"26":1,"28":4,"31":4,"34":2,"37":3,"42":1,"45":1,"50":4,"53":2,"61":1,"66":2,"71":3,"72":5,"83":4,"89":4,"96":1,"107":2}}],["developers",{"2":{"130":2}}],["developer",{"2":{"130":1,"131":1}}],["development",{"2":{"11":1,"24":1,"67":1,"71":1,"74":1,"131":1}}],["dev",{"0":{"11":1,"13":1,"16":1,"18":1,"21":1,"24":1,"26":1,"29":1,"32":1,"35":1},"1":{"12":1,"14":1,"15":1,"17":1,"19":1,"20":1,"22":1,"23":1,"25":1,"27":1,"28":1,"30":1,"31":1,"33":1,"34":1,"36":1,"37":1},"2":{"12":1,"13":1,"14":1,"17":1,"18":2,"19":1,"21":2,"22":1,"25":1,"27":1,"30":1,"33":1,"36":4,"69":1,"70":1,"71":2,"72":5,"76":1,"77":2,"80":2,"83":3,"84":1,"87":2,"89":4,"93":2,"96":1,"97":3,"105":1}}],["devnet",{"2":{"1":4,"2":1,"3":1,"71":2,"73":1,"81":1,"83":2,"98":2,"99":5,"100":1}}],["don",{"2":{"129":1}}],["done",{"2":{"119":1}}],["downside",{"2":{"128":1}}],["download",{"0":{"68":1,"75":1},"2":{"68":3,"75":3}}],["downloaded",{"2":{"21":1}}],["downloads",{"2":{"13":1,"77":1}}],["dos",{"2":{"111":1}}],["does",{"2":{"72":1,"112":1,"126":1}}],["doesn",{"0":{"72":1},"2":{"119":3}}],["do",{"0":{"72":1},"2":{"111":1,"118":1,"119":1,"125":1,"126":1,"129":2}}],["doc",{"2":{"69":1,"76":1,"80":1,"87":1}}],["documentation",{"2":{"2":1,"109":1,"132":1}}],["dora",{"2":{"1":1}}],["71",{"2":{"104":1}}],["73",{"2":{"99":1}}],["7",{"2":{"1":4,"2":2,"3":1,"68":6,"75":6,"81":1,"83":3}}],["nginx",{"2":{"104":4}}],["number>",{"2":{"81":1,"87":1,"92":1}}],["n",{"2":{"42":1,"45":1,"61":1,"104":1,"105":1}}],["normal",{"2":{"129":1}}],["nodes",{"0":{"129":1},"2":{"115":1,"123":1,"125":5,"127":2,"128":1,"129":3,"130":7,"133":3}}],["node",{"0":{"125":1},"2":{"81":1,"89":1,"112":2,"116":1,"118":4,"119":2,"121":1,"123":1,"127":2,"129":6,"130":3,"133":1}}],["note",{"2":{"118":1,"123":1}}],["not",{"2":{"71":1,"72":1,"83":1,"95":1,"96":1,"103":1,"104":2,"112":1,"114":1,"115":1,"119":2,"123":3,"125":1,"126":2,"128":2,"130":1}}],["non",{"2":{"124":1}}],["nonce",{"0":{"59":1},"1":{"60":1,"61":1},"2":{"59":1,"60":1,"97":1}}],["none>",{"2":{"104":1}}],["none",{"2":{"6":1}}],["no",{"2":{"29":1,"81":1,"116":2,"117":1,"118":2,"119":3}}],["nria",{"2":{"15":1,"28":1,"31":1,"50":1,"71":1,"83":1,"89":1}}],["naive",{"0":{"117":1}}],["navigate",{"2":{"83":1,"89":1,"96":1}}],["native",{"2":{"15":4,"28":4,"31":4,"114":1,"115":1,"123":1,"127":1}}],["name>",{"2":{"81":1,"83":1,"87":1,"89":1}}],["name",{"2":{"1":1,"2":1,"15":3,"28":3,"31":3,"71":1,"72":4,"83":2,"89":2,"99":1}}],["necessary",{"2":{"130":1,"133":1}}],["necessarily",{"2":{"125":1}}],["next",{"2":{"112":1,"117":1}}],["needing",{"2":{"115":1,"133":1}}],["needs",{"2":{"71":1,"112":1,"118":1,"119":3,"125":1,"128":1,"129":6,"133":3}}],["needed",{"2":{"71":1,"81":1,"119":1}}],["need",{"0":{"132":1},"2":{"71":2,"72":2,"81":1,"82":2,"83":1,"88":2,"92":1,"103":1,"111":1,"112":1,"119":1,"125":1,"126":1,"127":1,"132":1,"133":1}}],["net",{"2":{"36":1,"71":1}}],["networks",{"0":{"29":1,"70":1,"72":1},"1":{"30":1,"31":1,"71":1,"72":1},"2":{"29":2,"30":1,"37":1,"70":2,"71":1,"72":2,"83":1,"89":1}}],["network",{"0":{"1":1,"133":1},"2":{"1":2,"2":2,"15":3,"28":3,"31":3,"35":2,"36":2,"37":3,"70":2,"71":1,"72":5,"73":1,"84":1,"89":2,"93":2,"96":1,"111":3,"112":2,"114":2,"115":1,"117":1,"119":2,"120":1,"121":1,"123":1,"125":2,"127":5,"128":2,"130":5,"131":1,"133":4}}],["new",{"2":{"2":1,"72":1,"77":1,"80":1,"81":7,"83":2,"87":6,"89":1,"92":1,"95":4,"96":1,"121":1,"123":1,"125":1,"128":2}}]],"serializationVersion":2}';export{e as default}; diff --git a/assets/chunks/VPLocalSearchBox.BPp8O5TV.js b/assets/chunks/VPLocalSearchBox.BQZq6Q21.js similarity index 99% rename from assets/chunks/VPLocalSearchBox.BPp8O5TV.js rename to assets/chunks/VPLocalSearchBox.BQZq6Q21.js index f634f2c..217101e 100644 --- a/assets/chunks/VPLocalSearchBox.BPp8O5TV.js +++ b/assets/chunks/VPLocalSearchBox.BQZq6Q21.js @@ -1,4 +1,4 @@ -var It=Object.defineProperty;var Dt=(o,e,t)=>e in o?It(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>(Dt(o,typeof e!="symbol"?e+"":e,t),t);import{Y as yt,j as oe,x as $e,aj as kt,ak as Ot,d as _t,G as xe,al as tt,h as Fe,am as Rt,an as Mt,y as Lt,ao as Pt,k as _e,S as de,R as Ee,ap as zt,aq as Vt,Z as Bt,V as $t,ar as Wt,o as ee,b as Kt,l as k,a2 as Jt,m as U,as as jt,at as Ut,au as Gt,c as re,n as rt,e as Se,E as at,F as nt,a as ve,t as pe,av as qt,p as Ht,q as Qt,aw as it,ax as Yt,a9 as Zt,af as Xt,ay as er,_ as tr}from"./framework.EN5ALL4V.js";import{u as rr,c as ar}from"./theme.B8uyWRoy.js";const nr={root:()=>yt(()=>import("./@localSearchIndexroot.BEk6afHZ.js"),[])};/*! +var It=Object.defineProperty;var Dt=(o,e,t)=>e in o?It(o,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):o[e]=t;var Oe=(o,e,t)=>(Dt(o,typeof e!="symbol"?e+"":e,t),t);import{Y as yt,j as oe,x as $e,aj as kt,ak as Ot,d as _t,G as xe,al as tt,h as Fe,am as Rt,an as Mt,y as Lt,ao as Pt,k as _e,S as de,R as Ee,ap as zt,aq as Vt,Z as Bt,V as $t,ar as Wt,o as ee,b as Kt,l as k,a2 as Jt,m as U,as as jt,at as Ut,au as Gt,c as re,n as rt,e as Se,E as at,F as nt,a as ve,t as pe,av as qt,p as Ht,q as Qt,aw as it,ax as Yt,a9 as Zt,af as Xt,ay as er,_ as tr}from"./framework.-Zveb6AF.js";import{u as rr,c as ar}from"./theme.hDrnMMGo.js";const nr={root:()=>yt(()=>import("./@localSearchIndexroot.Dl4-Xp9d.js"),[])};/*! * tabbable 6.2.0 * @license MIT, https://github.com/focus-trap/tabbable/blob/master/LICENSE */var mt=["input:not([inert])","select:not([inert])","textarea:not([inert])","a[href]:not([inert])","button:not([inert])","[tabindex]:not(slot):not([inert])","audio[controls]:not([inert])","video[controls]:not([inert])",'[contenteditable]:not([contenteditable="false"]):not([inert])',"details>summary:first-of-type:not([inert])","details:not([inert])"],Ce=mt.join(","),gt=typeof Element>"u",ue=gt?function(){}:Element.prototype.matches||Element.prototype.msMatchesSelector||Element.prototype.webkitMatchesSelector,Ne=!gt&&Element.prototype.getRootNode?function(o){var e;return o==null||(e=o.getRootNode)===null||e===void 0?void 0:e.call(o)}:function(o){return o==null?void 0:o.ownerDocument},Ie=function o(e,t){var r;t===void 0&&(t=!0);var n=e==null||(r=e.getAttribute)===null||r===void 0?void 0:r.call(e,"inert"),a=n===""||n==="true",i=a||t&&e&&o(e.parentNode);return i},ir=function(e){var t,r=e==null||(t=e.getAttribute)===null||t===void 0?void 0:t.call(e,"contenteditable");return r===""||r==="true"},bt=function(e,t,r){if(Ie(e))return[];var n=Array.prototype.slice.apply(e.querySelectorAll(Ce));return t&&ue.call(e,Ce)&&n.unshift(e),n=n.filter(r),n},wt=function o(e,t,r){for(var n=[],a=Array.from(e);a.length;){var i=a.shift();if(!Ie(i,!1))if(i.tagName==="SLOT"){var s=i.assignedElements(),u=s.length?s:i.children,l=o(u,!0,r);r.flatten?n.push.apply(n,l):n.push({scopeParent:i,candidates:l})}else{var h=ue.call(i,Ce);h&&r.filter(i)&&(t||!e.includes(i))&&n.push(i);var d=i.shadowRoot||typeof r.getShadowRoot=="function"&&r.getShadowRoot(i),v=!Ie(d,!1)&&(!r.shadowRootFilter||r.shadowRootFilter(i));if(d&&v){var y=o(d===!0?i.children:d.children,!0,r);r.flatten?n.push.apply(n,y):n.push({scopeParent:i,candidates:y})}else a.unshift.apply(a,i.children)}}return n},xt=function(e){return!isNaN(parseInt(e.getAttribute("tabindex"),10))},se=function(e){if(!e)throw new Error("No node provided");return e.tabIndex<0&&(/^(AUDIO|VIDEO|DETAILS)$/.test(e.tagName)||ir(e))&&!xt(e)?0:e.tabIndex},or=function(e,t){var r=se(e);return r<0&&t&&!xt(e)?0:r},sr=function(e,t){return e.tabIndex===t.tabIndex?e.documentOrder-t.documentOrder:e.tabIndex-t.tabIndex},Ft=function(e){return e.tagName==="INPUT"},ur=function(e){return Ft(e)&&e.type==="hidden"},lr=function(e){var t=e.tagName==="DETAILS"&&Array.prototype.slice.apply(e.children).some(function(r){return r.tagName==="SUMMARY"});return t},cr=function(e,t){for(var r=0;rsummary:first-of-type"),i=a?e.parentElement:e;if(ue.call(i,"details:not([open]) *"))return!0;if(!r||r==="full"||r==="legacy-full"){if(typeof n=="function"){for(var s=e;e;){var u=e.parentElement,l=Ne(e);if(u&&!u.shadowRoot&&n(u)===!0)return ot(e);e.assignedSlot?e=e.assignedSlot:!u&&l!==e.ownerDocument?e=l.host:e=u}e=s}if(vr(e))return!e.getClientRects().length;if(r!=="legacy-full")return!0}else if(r==="non-zero-area")return ot(e);return!1},yr=function(e){if(/^(INPUT|BUTTON|SELECT|TEXTAREA)$/.test(e.tagName))for(var t=e.parentElement;t;){if(t.tagName==="FIELDSET"&&t.disabled){for(var r=0;r=0)},gr=function o(e){var t=[],r=[];return e.forEach(function(n,a){var i=!!n.scopeParent,s=i?n.scopeParent:n,u=or(s,i),l=i?o(n.candidates):s;u===0?i?t.push.apply(t,l):t.push(s):r.push({documentOrder:a,tabIndex:u,item:n,isScope:i,content:l})}),r.sort(sr).reduce(function(n,a){return a.isScope?n.push.apply(n,a.content):n.push(a.content),n},[]).concat(t)},br=function(e,t){t=t||{};var r;return t.getShadowRoot?r=wt([e],t.includeContainer,{filter:We.bind(null,t),flatten:!1,getShadowRoot:t.getShadowRoot,shadowRootFilter:mr}):r=bt(e,t.includeContainer,We.bind(null,t)),gr(r)},wr=function(e,t){t=t||{};var r;return t.getShadowRoot?r=wt([e],t.includeContainer,{filter:De.bind(null,t),flatten:!0,getShadowRoot:t.getShadowRoot}):r=bt(e,t.includeContainer,De.bind(null,t)),r},le=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,Ce)===!1?!1:We(t,e)},xr=mt.concat("iframe").join(","),Re=function(e,t){if(t=t||{},!e)throw new Error("No node provided");return ue.call(e,xr)===!1?!1:De(t,e)};/*! diff --git a/assets/chunks/framework.-Zveb6AF.js b/assets/chunks/framework.-Zveb6AF.js new file mode 100644 index 0000000..103e037 --- /dev/null +++ b/assets/chunks/framework.-Zveb6AF.js @@ -0,0 +1,17 @@ +/** +* @vue/shared v3.4.23 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**//*! #__NO_SIDE_EFFECTS__ */function xr(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const ee={},vt=[],xe=()=>{},Ai=()=>!1,Kt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Sr=e=>e.startsWith("onUpdate:"),ce=Object.assign,Tr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ri=Object.prototype.hasOwnProperty,Y=(e,t)=>Ri.call(e,t),B=Array.isArray,bt=e=>Tn(e)==="[object Map]",Ys=e=>Tn(e)==="[object Set]",q=e=>typeof e=="function",se=e=>typeof e=="string",ht=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Js=e=>(Z(e)||q(e))&&q(e.then)&&q(e.catch),Qs=Object.prototype.toString,Tn=e=>Qs.call(e),Oi=e=>Tn(e).slice(8,-1),Zs=e=>Tn(e)==="[object Object]",Ar=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,wt=xr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),An=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Li=/-(\w)/g,$e=An(e=>e.replace(Li,(t,n)=>n?n.toUpperCase():"")),Ii=/\B([A-Z])/g,pt=An(e=>e.replace(Ii,"-$1").toLowerCase()),Rn=An(e=>e.charAt(0).toUpperCase()+e.slice(1)),dn=An(e=>e?`on${Rn(e)}`:""),Ze=(e,t)=>!Object.is(e,t),hn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},cr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Mi=e=>{const t=se(e)?Number(e):NaN;return isNaN(t)?e:t};let es;const to=()=>es||(es=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Rr(e){if(B(e)){const t={};for(let n=0;n{if(n){const r=n.split(Ni);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Or(e){let t="";if(se(e))t=e;else if(B(e))for(let n=0;nse(e)?e:e==null?"":B(e)||Z(e)&&(e.toString===Qs||!q(e.toString))?JSON.stringify(e,ro,2):String(e),ro=(e,t)=>t&&t.__v_isRef?ro(e,t.value):bt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[Kn(r,o)+" =>"]=s,n),{})}:Ys(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Kn(n))}:ht(t)?Kn(t):Z(t)&&!B(t)&&!Zs(t)?String(t):t,Kn=(e,t="")=>{var n;return ht(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** +* @vue/reactivity v3.4.23 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/let be;class Vi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=be,!t&&be&&(this.index=(be.scopes||(be.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=be;try{return be=this,t()}finally{be=n}}}on(){be=this}off(){be=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),nt()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ye,n=ut;try{return Ye=!0,ut=this,this._runnings++,ts(this),this.fn()}finally{ns(this),this._runnings--,ut=n,Ye=t}}stop(){var t;this.active&&(ts(this),ns(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Bi(e){return e.value}function ts(e){e._trackId++,e._depsLength=0}function ns(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},_n=new WeakMap,ft=Symbol(""),fr=Symbol("");function _e(e,t,n){if(Ye&&ut){let r=_n.get(e);r||_n.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=ao(()=>r.delete(n))),lo(ut,s)}}function Ve(e,t,n,r,s,o){const i=_n.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&B(e)){const c=Number(r);i.forEach((a,f)=>{(f==="length"||!ht(f)&&f>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":B(e)?Ar(n)&&l.push(i.get("length")):(l.push(i.get(ft)),bt(e)&&l.push(i.get(fr)));break;case"delete":B(e)||(l.push(i.get(ft)),bt(e)&&l.push(i.get(fr)));break;case"set":bt(e)&&l.push(i.get(ft));break}Ir();for(const c of l)c&&co(c,4);Mr()}function ki(e,t){var n;return(n=_n.get(e))==null?void 0:n.get(t)}const Ki=xr("__proto__,__v_isRef,__isVue"),uo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ht)),rs=Wi();function Wi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){tt(),Ir();const r=J(this)[t].apply(this,n);return Mr(),nt(),r}}),e}function qi(e){ht(e)||(e=String(e));const t=J(this);return _e(t,"has",e),t.hasOwnProperty(e)}class fo{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?ol:mo:o?go:po).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=B(t);if(!s){if(i&&Y(rs,n))return Reflect.get(rs,n,r);if(n==="hasOwnProperty")return qi}const l=Reflect.get(t,n,r);return(ht(n)?uo.has(n):Ki(n))||(s||_e(t,"get",n),o)?l:de(l)?i&&Ar(n)?l:l.value:Z(l)?s?In(l):Ln(l):l}}class ho extends fo{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const c=jt(o);if(!vn(r)&&!jt(r)&&(o=J(o),r=J(r)),!B(t)&&de(o)&&!de(r))return c?!1:(o.value=r,!0)}const i=B(t)&&Ar(n)?Number(n)e,On=e=>Reflect.getPrototypeOf(e);function Jt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(Ze(t,o)&&_e(s,"get",t),_e(s,"get",o));const{has:i}=On(s),l=r?Pr:n?$r:Vt;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Qt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(Ze(e,s)&&_e(r,"has",e),_e(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Zt(e,t=!1){return e=e.__v_raw,!t&&_e(J(e),"iterate",ft),Reflect.get(e,"size",e)}function ss(e){e=J(e);const t=J(this);return On(t).has.call(t,e)||(t.add(e),Ve(t,"add",e,e)),this}function os(e,t){t=J(t);const n=J(this),{has:r,get:s}=On(n);let o=r.call(n,e);o||(e=J(e),o=r.call(n,e));const i=s.call(n,e);return n.set(e,t),o?Ze(t,i)&&Ve(n,"set",e,t):Ve(n,"add",e,t),this}function is(e){const t=J(this),{has:n,get:r}=On(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&Ve(t,"delete",e,void 0),o}function ls(){const e=J(this),t=e.size!==0,n=e.clear();return t&&Ve(e,"clear",void 0,void 0),n}function en(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?Pr:e?$r:Vt;return!e&&_e(l,"iterate",ft),i.forEach((a,f)=>r.call(s,c(a),c(f),o))}}function tn(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=bt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=s[e](...r),f=n?Pr:t?$r:Vt;return!t&&_e(o,"iterate",c?fr:ft),{next(){const{value:h,done:p}=a.next();return p?{value:h,done:p}:{value:l?[f(h[0]),f(h[1])]:f(h),done:p}},[Symbol.iterator](){return this}}}}function Be(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Ji(){const e={get(o){return Jt(this,o)},get size(){return Zt(this)},has:Qt,add:ss,set:os,delete:is,clear:ls,forEach:en(!1,!1)},t={get(o){return Jt(this,o,!1,!0)},get size(){return Zt(this)},has:Qt,add:ss,set:os,delete:is,clear:ls,forEach:en(!1,!0)},n={get(o){return Jt(this,o,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:en(!0,!1)},r={get(o){return Jt(this,o,!0,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:en(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=tn(o,!1,!1),n[o]=tn(o,!0,!1),t[o]=tn(o,!1,!0),r[o]=tn(o,!0,!0)}),[e,n,t,r]}const[Qi,Zi,el,tl]=Ji();function Nr(e,t){const n=t?e?tl:el:e?Zi:Qi;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(Y(n,s)&&s in r?n:r,s,o)}const nl={get:Nr(!1,!1)},rl={get:Nr(!1,!0)},sl={get:Nr(!0,!1)},po=new WeakMap,go=new WeakMap,mo=new WeakMap,ol=new WeakMap;function il(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ll(e){return e.__v_skip||!Object.isExtensible(e)?0:il(Oi(e))}function Ln(e){return jt(e)?e:Fr(e,!1,zi,nl,po)}function cl(e){return Fr(e,!1,Yi,rl,go)}function In(e){return Fr(e,!0,Xi,sl,mo)}function Fr(e,t,n,r,s){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=ll(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function Lt(e){return jt(e)?Lt(e.__v_raw):!!(e&&e.__v_isReactive)}function jt(e){return!!(e&&e.__v_isReadonly)}function vn(e){return!!(e&&e.__v_isShallow)}function yo(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function pn(e){return Object.isExtensible(e)&&eo(e,"__v_skip",!0),e}const Vt=e=>Z(e)?Ln(e):e,$r=e=>Z(e)?In(e):e;class _o{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Lr(()=>t(this._value),()=>It(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Ze(t._value,t._value=t.effect.run())&&It(t,4),Hr(t),t.effect._dirtyLevel>=2&&It(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function al(e,t,n=!1){let r,s;const o=q(e);return o?(r=e,s=xe):(r=e.get,s=e.set),new _o(r,s,o||!s,n)}function Hr(e){var t;Ye&&ut&&(e=J(e),lo(ut,(t=e.dep)!=null?t:e.dep=ao(()=>e.dep=void 0,e instanceof _o?e:void 0)))}function It(e,t=4,n){e=J(e);const r=e.dep;r&&co(r,t)}function de(e){return!!(e&&e.__v_isRef===!0)}function re(e){return vo(e,!1)}function jr(e){return vo(e,!0)}function vo(e,t){return de(e)?e:new ul(e,t)}class ul{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Vt(t)}get value(){return Hr(this),this._value}set value(t){const n=this.__v_isShallow||vn(t)||jt(t);t=n?t:J(t),Ze(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Vt(t),It(this,4))}}function bo(e){return de(e)?e.value:e}const fl={get:(e,t,n)=>bo(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return de(s)&&!de(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function wo(e){return Lt(e)?e:new Proxy(e,fl)}class dl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Hr(this),()=>It(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function hl(e){return new dl(e)}class pl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return ki(J(this._object),this._key)}}class gl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function ml(e,t,n){return de(e)?e:q(e)?new gl(e):Z(e)&&arguments.length>1?yl(e,t,n):re(e)}function yl(e,t,n){const r=e[t];return de(r)?r:new pl(e,t,n)}/** +* @vue/runtime-core v3.4.23 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/function Je(e,t,n,r){try{return r?e(...r):e()}catch(s){Wt(s,t,n)}}function Se(e,t,n,r){if(q(e)){const s=Je(e,t,n,r);return s&&Js(s)&&s.catch(o=>{Wt(o,t,n)}),s}if(B(e)){const s=[];for(let o=0;o>>1,s=he[r],o=Ut(s);oPe&&he.splice(t,1)}function wl(e){B(e)?Et.push(...e):(!qe||!qe.includes(e,e.allowRecurse?lt+1:lt))&&Et.push(e),Co()}function cs(e,t,n=Dt?Pe+1:0){for(;nUt(n)-Ut(r));if(Et.length=0,qe){qe.push(...t);return}for(qe=t,lt=0;lte.id==null?1/0:e.id,El=(e,t)=>{const n=Ut(e)-Ut(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function xo(e){dr=!1,Dt=!0,he.sort(El);try{for(Pe=0;Pese(y)?y.trim():y)),h&&(s=n.map(cr))}let l,c=r[l=dn(t)]||r[l=dn($e(t))];!c&&o&&(c=r[l=dn(pt(t))]),c&&Se(c,e,6,s);const a=r[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Se(a,e,6,s)}}function So(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!q(e)){const c=a=>{const f=So(a,t,!0);f&&(l=!0,ce(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&r.set(e,null),null):(B(o)?o.forEach(c=>i[c]=null):ce(i,o),Z(e)&&r.set(e,i),i)}function Nn(e,t){return!e||!Kt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,pt(t))||Y(e,t))}let le=null,Fn=null;function wn(e){const t=le;return le=e,Fn=e&&e.type.__scopeId||null,t}function eu(e){Fn=e}function tu(){Fn=null}function xl(e,t=le,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&Es(-1);const o=wn(t);let i;try{i=e(...s)}finally{wn(o),r._d&&Es(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Wn(e){const{type:t,vnode:n,proxy:r,withProxy:s,props:o,propsOptions:[i],slots:l,attrs:c,emit:a,render:f,renderCache:h,data:p,setupState:y,ctx:w,inheritAttrs:I}=e;let N,K;const k=wn(e);try{if(n.shapeFlag&4){const _=s||r,M=_;N=Re(f.call(M,_,h,o,y,p,w)),K=c}else{const _=t;N=Re(_.length>1?_(o,{attrs:c,slots:l,emit:a}):_(o,null)),K=t.props?c:Sl(c)}}catch(_){$t.length=0,Wt(_,e,1),N=oe(we)}let g=N;if(K&&I!==!1){const _=Object.keys(K),{shapeFlag:M}=g;_.length&&M&7&&(i&&_.some(Sr)&&(K=Tl(K,i)),g=et(g,K))}return n.dirs&&(g=et(g),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&(g.transition=n.transition),N=g,wn(k),N}const Sl=e=>{let t;for(const n in e)(n==="class"||n==="style"||Kt(n))&&((t||(t={}))[n]=e[n]);return t},Tl=(e,t)=>{const n={};for(const r in e)(!Sr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Al(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?as(r,i,a):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function Oo(e,t){t&&t.pendingBranch?B(e)?t.effects.push(...e):t.effects.push(e):wl(e)}const Ll=Symbol.for("v-scx"),Il=()=>xt(Ll);function Dr(e,t){return $n(e,null,t)}function su(e,t){return $n(e,null,{flush:"post"})}const nn={};function Ne(e,t,n){return $n(e,t,n)}function $n(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=ee){if(t&&o){const O=t;t=(...F)=>{O(...F),M()}}const c=ue,a=O=>r===!0?O:at(O,r===!1?1:void 0);let f,h=!1,p=!1;if(de(e)?(f=()=>e.value,h=vn(e)):Lt(e)?(f=()=>a(e),h=!0):B(e)?(p=!0,h=e.some(O=>Lt(O)||vn(O)),f=()=>e.map(O=>{if(de(O))return O.value;if(Lt(O))return a(O);if(q(O))return Je(O,c,2)})):q(e)?t?f=()=>Je(e,c,2):f=()=>(y&&y(),Se(e,c,3,[w])):f=xe,t&&r){const O=f;f=()=>at(O())}let y,w=O=>{y=g.onStop=()=>{Je(O,c,4),y=g.onStop=void 0}},I;if(zt)if(w=xe,t?n&&Se(t,c,3,[f(),p?[]:void 0,w]):f(),s==="sync"){const O=Il();I=O.__watcherHandles||(O.__watcherHandles=[])}else return xe;let N=p?new Array(e.length).fill(nn):nn;const K=()=>{if(!(!g.active||!g.dirty))if(t){const O=g.run();(r||h||(p?O.some((F,T)=>Ze(F,N[T])):Ze(O,N)))&&(y&&y(),Se(t,c,3,[O,N===nn?void 0:p&&N[0]===nn?[]:N,w]),N=O)}else g.run()};K.allowRecurse=!!t;let k;s==="sync"?k=K:s==="post"?k=()=>me(K,c&&c.suspense):(K.pre=!0,c&&(K.id=c.uid),k=()=>Pn(K));const g=new Lr(f,xe,k),_=so(),M=()=>{g.stop(),_&&Tr(_.effects,g)};return t?n?K():N=g.run():s==="post"?me(g.run.bind(g),c&&c.suspense):g.run(),I&&I.push(M),M}function Ml(e,t,n){const r=this.proxy,s=se(e)?e.includes(".")?Lo(r,e):()=>r[e]:e.bind(r,r);let o;q(t)?o=t:(o=t.handler,n=t);const i=Gt(this),l=$n(s,o.bind(r),n);return i(),l}function Lo(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s0){if(n>=t)return e;n++}if(r=r||new Set,r.has(e))return e;if(r.add(e),de(e))at(e.value,t,n,r);else if(B(e))for(let s=0;s{at(s,t,n,r)});else if(Zs(e))for(const s in e)at(e[s],t,n,r);return e}function ou(e,t){if(le===null)return e;const n=Dn(le)||le.proxy,r=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),Fo(()=>{e.isUnmounting=!0}),e}const Ee=[Function,Array],Io={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ee,onEnter:Ee,onAfterEnter:Ee,onEnterCancelled:Ee,onBeforeLeave:Ee,onLeave:Ee,onAfterLeave:Ee,onLeaveCancelled:Ee,onBeforeAppear:Ee,onAppear:Ee,onAfterAppear:Ee,onAppearCancelled:Ee},Nl={name:"BaseTransition",props:Io,setup(e,{slots:t}){const n=Vn(),r=Pl();return()=>{const s=t.default&&Po(t.default(),!0);if(!s||!s.length)return;let o=s[0];if(s.length>1){for(const p of s)if(p.type!==we){o=p;break}}const i=J(e),{mode:l}=i;if(r.isLeaving)return qn(o);const c=fs(o);if(!c)return qn(o);const a=hr(c,i,r,n);pr(c,a);const f=n.subTree,h=f&&fs(f);if(h&&h.type!==we&&!ct(c,h)){const p=hr(h,i,r,n);if(pr(h,p),l==="out-in")return r.isLeaving=!0,p.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},qn(o);l==="in-out"&&c.type!==we&&(p.delayLeave=(y,w,I)=>{const N=Mo(r,h);N[String(h.key)]=h,y[Ge]=()=>{w(),y[Ge]=void 0,delete a.delayedLeave},a.delayedLeave=I})}return o}}},Fl=Nl;function Mo(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function hr(e,t,n,r){const{appear:s,mode:o,persisted:i=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:a,onEnterCancelled:f,onBeforeLeave:h,onLeave:p,onAfterLeave:y,onLeaveCancelled:w,onBeforeAppear:I,onAppear:N,onAfterAppear:K,onAppearCancelled:k}=t,g=String(e.key),_=Mo(n,e),M=(T,$)=>{T&&Se(T,r,9,$)},O=(T,$)=>{const E=$[1];M(T,$),B(T)?T.every(j=>j.length<=1)&&E():T.length<=1&&E()},F={mode:o,persisted:i,beforeEnter(T){let $=l;if(!n.isMounted)if(s)$=I||l;else return;T[Ge]&&T[Ge](!0);const E=_[g];E&&ct(e,E)&&E.el[Ge]&&E.el[Ge](),M($,[T])},enter(T){let $=c,E=a,j=f;if(!n.isMounted)if(s)$=N||c,E=K||a,j=k||f;else return;let A=!1;const G=T[rn]=ie=>{A||(A=!0,ie?M(j,[T]):M(E,[T]),F.delayedLeave&&F.delayedLeave(),T[rn]=void 0)};$?O($,[T,G]):G()},leave(T,$){const E=String(e.key);if(T[rn]&&T[rn](!0),n.isUnmounting)return $();M(h,[T]);let j=!1;const A=T[Ge]=G=>{j||(j=!0,$(),G?M(w,[T]):M(y,[T]),T[Ge]=void 0,_[E]===e&&delete _[E])};_[E]=e,p?O(p,[T,A]):A()},clone(T){return hr(T,t,n,r)}};return F}function qn(e){if(qt(e))return e=et(e),e.children=null,e}function fs(e){return qt(e)?e.children?e.children[0]:void 0:e}function pr(e,t){e.shapeFlag&6&&e.component?pr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Po(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function iu(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,a,f=0;const h=()=>(f++,c=null,p()),p=()=>{let y;return c||(y=c=t().catch(w=>{if(w=w instanceof Error?w:new Error(String(w)),l)return new Promise((I,N)=>{l(w,()=>I(h()),()=>N(w),f+1)});throw w}).then(w=>y!==c&&c?c:(w&&(w.__esModule||w[Symbol.toStringTag]==="Module")&&(w=w.default),a=w,w)))};return Ur({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return a},setup(){const y=ue;if(a)return()=>Gn(a,y);const w=k=>{c=null,Wt(k,y,13,!r)};if(i&&y.suspense||zt)return p().then(k=>()=>Gn(k,y)).catch(k=>(w(k),()=>r?oe(r,{error:k}):null));const I=re(!1),N=re(),K=re(!!s);return s&&setTimeout(()=>{K.value=!1},s),o!=null&&setTimeout(()=>{if(!I.value&&!N.value){const k=new Error(`Async component timed out after ${o}ms.`);w(k),N.value=k}},o),p().then(()=>{I.value=!0,y.parent&&qt(y.parent.vnode)&&(y.parent.effect.dirty=!0,Pn(y.parent.update))}).catch(k=>{w(k),N.value=k}),()=>{if(I.value&&a)return Gn(a,y);if(N.value&&r)return oe(r,{error:N.value});if(n&&!K.value)return oe(n)}}})}function Gn(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=oe(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const qt=e=>e.type.__isKeepAlive;function $l(e,t){No(e,"a",t)}function Hl(e,t){No(e,"da",t)}function No(e,t,n=ue){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Hn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)qt(s.parent.vnode)&&jl(r,t,n,s),s=s.parent}}function jl(e,t,n,r){const s=Hn(t,e,r,!0);jn(()=>{Tr(r[t],s)},n)}function Hn(e,t,n=ue,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;tt();const l=Gt(n),c=Se(t,n,e,i);return l(),nt(),c});return r?s.unshift(o):s.push(o),o}}const Ue=e=>(t,n=ue)=>(!zt||e==="sp")&&Hn(e,(...r)=>t(...r),n),Vl=Ue("bm"),Tt=Ue("m"),Dl=Ue("bu"),Ul=Ue("u"),Fo=Ue("bum"),jn=Ue("um"),Bl=Ue("sp"),kl=Ue("rtg"),Kl=Ue("rtc");function Wl(e,t=ue){Hn("ec",e,t)}function lu(e,t,n,r){let s;const o=n;if(B(e)||se(e)){s=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;lxn(t)?!(t.type===we||t.type===ye&&!$o(t.children)):!0)?e:null}function au(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:dn(r)]=e[r];return n}const gr=e=>e?ni(e)?Dn(e)||e.proxy:gr(e.parent):null,Mt=ce(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>gr(e.parent),$root:e=>gr(e.root),$emit:e=>e.emit,$options:e=>Br(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Pn(e.update)}),$nextTick:e=>e.n||(e.n=Mn.bind(e.proxy)),$watch:e=>Ml.bind(e)}),zn=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),ql={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const y=i[t];if(y!==void 0)switch(y){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(zn(r,t))return i[t]=1,r[t];if(s!==ee&&Y(s,t))return i[t]=2,s[t];if((a=e.propsOptions[0])&&Y(a,t))return i[t]=3,o[t];if(n!==ee&&Y(n,t))return i[t]=4,n[t];mr&&(i[t]=0)}}const f=Mt[t];let h,p;if(f)return t==="$attrs"&&_e(e.attrs,"get",""),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ee&&Y(n,t))return i[t]=4,n[t];if(p=c.config.globalProperties,Y(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return zn(s,t)?(s[t]=n,!0):r!==ee&&Y(r,t)?(r[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==ee&&Y(e,i)||zn(t,i)||(l=o[0])&&Y(l,i)||Y(r,i)||Y(Mt,i)||Y(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function uu(){return Gl().slots}function Gl(){const e=Vn();return e.setupContext||(e.setupContext=si(e))}function ds(e){return B(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let mr=!0;function zl(e){const t=Br(e),n=e.proxy,r=e.ctx;mr=!1,t.beforeCreate&&hs(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:p,beforeUpdate:y,updated:w,activated:I,deactivated:N,beforeDestroy:K,beforeUnmount:k,destroyed:g,unmounted:_,render:M,renderTracked:O,renderTriggered:F,errorCaptured:T,serverPrefetch:$,expose:E,inheritAttrs:j,components:A,directives:G,filters:ie}=t;if(a&&Xl(a,r,null),i)for(const X in i){const V=i[X];q(V)&&(r[X]=V.bind(n))}if(s){const X=s.call(n,n);Z(X)&&(e.data=Ln(X))}if(mr=!0,o)for(const X in o){const V=o[X],He=q(V)?V.bind(n,n):q(V.get)?V.get.bind(n,n):xe,Xt=!q(V)&&q(V.set)?V.set.bind(n):xe,rt=ne({get:He,set:Xt});Object.defineProperty(r,X,{enumerable:!0,configurable:!0,get:()=>rt.value,set:Le=>rt.value=Le})}if(l)for(const X in l)Ho(l[X],r,n,X);if(c){const X=q(c)?c.call(n):c;Reflect.ownKeys(X).forEach(V=>{tc(V,X[V])})}f&&hs(f,e,"c");function D(X,V){B(V)?V.forEach(He=>X(He.bind(n))):V&&X(V.bind(n))}if(D(Vl,h),D(Tt,p),D(Dl,y),D(Ul,w),D($l,I),D(Hl,N),D(Wl,T),D(Kl,O),D(kl,F),D(Fo,k),D(jn,_),D(Bl,$),B(E))if(E.length){const X=e.exposed||(e.exposed={});E.forEach(V=>{Object.defineProperty(X,V,{get:()=>n[V],set:He=>n[V]=He})})}else e.exposed||(e.exposed={});M&&e.render===xe&&(e.render=M),j!=null&&(e.inheritAttrs=j),A&&(e.components=A),G&&(e.directives=G)}function Xl(e,t,n=xe){B(e)&&(e=yr(e));for(const r in e){const s=e[r];let o;Z(s)?"default"in s?o=xt(s.from||r,s.default,!0):o=xt(s.from||r):o=xt(s),de(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function hs(e,t,n){Se(B(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ho(e,t,n,r){const s=r.includes(".")?Lo(n,r):()=>n[r];if(se(e)){const o=t[e];q(o)&&Ne(s,o)}else if(q(e))Ne(s,e.bind(n));else if(Z(e))if(B(e))e.forEach(o=>Ho(o,t,n,r));else{const o=q(e.handler)?e.handler.bind(n):t[e.handler];q(o)&&Ne(s,o,e)}}function Br(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(a=>En(c,a,i,!0)),En(c,t,i)),Z(t)&&o.set(t,c),c}function En(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&En(e,o,n,!0),s&&s.forEach(i=>En(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Yl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Yl={data:ps,props:gs,emits:gs,methods:Ot,computed:Ot,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:Ot,directives:Ot,watch:Ql,provide:ps,inject:Jl};function ps(e,t){return t?e?function(){return ce(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function Jl(e,t){return Ot(yr(e),yr(t))}function yr(e){if(B(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(r&&r.proxy):t}}const Vo=Object.create(null),_r=()=>Object.create(Vo),Do=e=>Object.getPrototypeOf(e)===Vo;function nc(e,t,n,r=!1){const s={},o=_r();e.propsDefaults=Object.create(null),Uo(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:cl(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function rc(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let a=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[p,y]=Bo(h,t,!0);ce(i,p),y&&l.push(...y)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&r.set(e,vt),vt;if(B(o))for(let f=0;f-1,y[1]=I<0||w-1||Y(y,"default"))&&l.push(h)}}}const a=[i,l];return Z(e)&&r.set(e,a),a}function ms(e){return e[0]!=="$"&&!wt(e)}function ys(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function _s(e,t){return ys(e)===ys(t)}function vs(e,t){return B(t)?t.findIndex(n=>_s(n,e)):q(t)&&_s(t,e)?0:-1}const ko=e=>e[0]==="_"||e==="$stable",kr=e=>B(e)?e.map(Re):[Re(e)],sc=(e,t,n)=>{if(t._n)return t;const r=xl((...s)=>kr(t(...s)),n);return r._c=!1,r},Ko=(e,t,n)=>{const r=e._ctx;for(const s in e){if(ko(s))continue;const o=e[s];if(q(o))t[s]=sc(s,o,r);else if(o!=null){const i=kr(o);t[s]=()=>i}}},Wo=(e,t)=>{const n=kr(t);e.slots.default=()=>n},oc=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=J(t),eo(e.slots,"_",n)):Ko(t,e.slots=_r())}else e.slots=_r(),t&&Wo(e,t)},ic=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=ee;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(ce(s,t),!n&&l===1&&delete s._):(o=!t.$stable,Ko(t,s)),i=t}else t&&(Wo(e,t),i={default:1});if(o)for(const l in s)!ko(l)&&i[l]==null&&delete s[l]};function Cn(e,t,n,r,s=!1){if(B(e)){e.forEach((p,y)=>Cn(p,t&&(B(t)?t[y]:t),n,r,s));return}if(Ct(r)&&!s)return;const o=r.shapeFlag&4?Dn(r.component)||r.component.proxy:r.el,i=s?null:o,{i:l,r:c}=e,a=t&&t.r,f=l.refs===ee?l.refs={}:l.refs,h=l.setupState;if(a!=null&&a!==c&&(se(a)?(f[a]=null,Y(h,a)&&(h[a]=null)):de(a)&&(a.value=null)),q(c))Je(c,l,12,[i,f]);else{const p=se(c),y=de(c);if(p||y){const w=()=>{if(e.f){const I=p?Y(h,c)?h[c]:f[c]:c.value;s?B(I)&&Tr(I,o):B(I)?I.includes(o)||I.push(o):p?(f[c]=[o],Y(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else p?(f[c]=i,Y(h,c)&&(h[c]=i)):y&&(c.value=i,e.k&&(f[e.k]=i))};i?(w.id=-1,me(w,n)):w()}}}let ke=!1;const lc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",cc=e=>e.namespaceURI.includes("MathML"),sn=e=>{if(lc(e))return"svg";if(cc(e))return"mathml"},on=e=>e.nodeType===8;function ac(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:a}}=e,f=(g,_)=>{if(!_.hasChildNodes()){n(null,g,_),bn(),_._vnode=g;return}ke=!1,h(_.firstChild,g,null,null,null),bn(),_._vnode=g,ke&&console.error("Hydration completed but contains mismatches.")},h=(g,_,M,O,F,T=!1)=>{T=T||!!_.dynamicChildren;const $=on(g)&&g.data==="[",E=()=>I(g,_,M,O,F,$),{type:j,ref:A,shapeFlag:G,patchFlag:ie}=_;let fe=g.nodeType;_.el=g,ie===-2&&(T=!1,_.dynamicChildren=null);let D=null;switch(j){case St:fe!==3?_.children===""?(c(_.el=s(""),i(g),g),D=g):D=E():(g.data!==_.children&&(ke=!0,g.data=_.children),D=o(g));break;case we:k(g)?(D=o(g),K(_.el=g.content.firstChild,g,M)):fe!==8||$?D=E():D=o(g);break;case Ft:if($&&(g=o(g),fe=g.nodeType),fe===1||fe===3){D=g;const X=!_.children.length;for(let V=0;V<_.staticCount;V++)X&&(_.children+=D.nodeType===1?D.outerHTML:D.data),V===_.staticCount-1&&(_.anchor=D),D=o(D);return $?o(D):D}else E();break;case ye:$?D=w(g,_,M,O,F,T):D=E();break;default:if(G&1)(fe!==1||_.type.toLowerCase()!==g.tagName.toLowerCase())&&!k(g)?D=E():D=p(g,_,M,O,F,T);else if(G&6){_.slotScopeIds=F;const X=i(g);if($?D=N(g):on(g)&&g.data==="teleport start"?D=N(g,g.data,"teleport end"):D=o(g),t(_,X,null,M,O,sn(X),T),Ct(_)){let V;$?(V=oe(ye),V.anchor=D?D.previousSibling:X.lastChild):V=g.nodeType===3?ti(""):oe("div"),V.el=g,_.component.subTree=V}}else G&64?fe!==8?D=E():D=_.type.hydrate(g,_,M,O,F,T,e,y):G&128&&(D=_.type.hydrate(g,_,M,O,sn(i(g)),F,T,e,h))}return A!=null&&Cn(A,null,O,_),D},p=(g,_,M,O,F,T)=>{T=T||!!_.dynamicChildren;const{type:$,props:E,patchFlag:j,shapeFlag:A,dirs:G,transition:ie}=_,fe=$==="input"||$==="option";if(fe||j!==-1){G&&Me(_,null,M,"created");let D=!1;if(k(g)){D=Go(O,ie)&&M&&M.vnode.props&&M.vnode.props.appear;const V=g.content.firstChild;D&&ie.beforeEnter(V),K(V,g,M),_.el=g=V}if(A&16&&!(E&&(E.innerHTML||E.textContent))){let V=y(g.firstChild,_,g,M,O,F,T);for(;V;){ke=!0;const He=V;V=V.nextSibling,l(He)}}else A&8&&g.textContent!==_.children&&(ke=!0,g.textContent=_.children);if(E)if(fe||!T||j&48)for(const V in E)(fe&&(V.endsWith("value")||V==="indeterminate")||Kt(V)&&!wt(V)||V[0]===".")&&r(g,V,null,E[V],void 0,void 0,M);else E.onClick&&r(g,"onClick",null,E.onClick,void 0,void 0,M);let X;(X=E&&E.onVnodeBeforeMount)&&Ce(X,M,_),G&&Me(_,null,M,"beforeMount"),((X=E&&E.onVnodeMounted)||G||D)&&Oo(()=>{X&&Ce(X,M,_),D&&ie.enter(g),G&&Me(_,null,M,"mounted")},O)}return g.nextSibling},y=(g,_,M,O,F,T,$)=>{$=$||!!_.dynamicChildren;const E=_.children,j=E.length;for(let A=0;A{const{slotScopeIds:$}=_;$&&(F=F?F.concat($):$);const E=i(g),j=y(o(g),_,E,M,O,F,T);return j&&on(j)&&j.data==="]"?o(_.anchor=j):(ke=!0,c(_.anchor=a("]"),E,j),j)},I=(g,_,M,O,F,T)=>{if(ke=!0,_.el=null,T){const j=N(g);for(;;){const A=o(g);if(A&&A!==j)l(A);else break}}const $=o(g),E=i(g);return l(g),n(null,_,E,$,M,O,sn(E),F),$},N=(g,_="[",M="]")=>{let O=0;for(;g;)if(g=o(g),g&&on(g)&&(g.data===_&&O++,g.data===M)){if(O===0)return o(g);O--}return g},K=(g,_,M)=>{const O=_.parentNode;O&&O.replaceChild(g,_);let F=M;for(;F;)F.vnode.el===_&&(F.vnode.el=F.subTree.el=g),F=F.parent},k=g=>g.nodeType===1&&g.tagName.toLowerCase()==="template";return[f,h]}const me=Oo;function uc(e){return qo(e)}function fc(e){return qo(e,ac)}function qo(e,t){const n=to();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:p,setScopeId:y=xe,insertStaticContent:w}=e,I=(u,d,m,v=null,b=null,S=null,L=void 0,x=null,R=!!d.dynamicChildren)=>{if(u===d)return;u&&!ct(u,d)&&(v=Yt(u),Le(u,b,S,!0),u=null),d.patchFlag===-2&&(R=!1,d.dynamicChildren=null);const{type:C,ref:P,shapeFlag:U}=d;switch(C){case St:N(u,d,m,v);break;case we:K(u,d,m,v);break;case Ft:u==null&&k(d,m,v,L);break;case ye:A(u,d,m,v,b,S,L,x,R);break;default:U&1?M(u,d,m,v,b,S,L,x,R):U&6?G(u,d,m,v,b,S,L,x,R):(U&64||U&128)&&C.process(u,d,m,v,b,S,L,x,R,gt)}P!=null&&b&&Cn(P,u&&u.ref,S,d||u,!d)},N=(u,d,m,v)=>{if(u==null)r(d.el=l(d.children),m,v);else{const b=d.el=u.el;d.children!==u.children&&a(b,d.children)}},K=(u,d,m,v)=>{u==null?r(d.el=c(d.children||""),m,v):d.el=u.el},k=(u,d,m,v)=>{[u.el,u.anchor]=w(u.children,d,m,v,u.el,u.anchor)},g=({el:u,anchor:d},m,v)=>{let b;for(;u&&u!==d;)b=p(u),r(u,m,v),u=b;r(d,m,v)},_=({el:u,anchor:d})=>{let m;for(;u&&u!==d;)m=p(u),s(u),u=m;s(d)},M=(u,d,m,v,b,S,L,x,R)=>{d.type==="svg"?L="svg":d.type==="math"&&(L="mathml"),u==null?O(d,m,v,b,S,L,x,R):$(u,d,b,S,L,x,R)},O=(u,d,m,v,b,S,L,x)=>{let R,C;const{props:P,shapeFlag:U,transition:H,dirs:W}=u;if(R=u.el=i(u.type,S,P&&P.is,P),U&8?f(R,u.children):U&16&&T(u.children,R,null,v,b,Xn(u,S),L,x),W&&Me(u,null,v,"created"),F(R,u,u.scopeId,L,v),P){for(const Q in P)Q!=="value"&&!wt(Q)&&o(R,Q,null,P[Q],S,u.children,v,b,je);"value"in P&&o(R,"value",null,P.value,S),(C=P.onVnodeBeforeMount)&&Ce(C,v,u)}W&&Me(u,null,v,"beforeMount");const z=Go(b,H);z&&H.beforeEnter(R),r(R,d,m),((C=P&&P.onVnodeMounted)||z||W)&&me(()=>{C&&Ce(C,v,u),z&&H.enter(R),W&&Me(u,null,v,"mounted")},b)},F=(u,d,m,v,b)=>{if(m&&y(u,m),v)for(let S=0;S{for(let C=R;C{const x=d.el=u.el;let{patchFlag:R,dynamicChildren:C,dirs:P}=d;R|=u.patchFlag&16;const U=u.props||ee,H=d.props||ee;let W;if(m&&st(m,!1),(W=H.onVnodeBeforeUpdate)&&Ce(W,m,d,u),P&&Me(d,u,m,"beforeUpdate"),m&&st(m,!0),C?E(u.dynamicChildren,C,x,m,v,Xn(d,b),S):L||V(u,d,x,null,m,v,Xn(d,b),S,!1),R>0){if(R&16)j(x,d,U,H,m,v,b);else if(R&2&&U.class!==H.class&&o(x,"class",null,H.class,b),R&4&&o(x,"style",U.style,H.style,b),R&8){const z=d.dynamicProps;for(let Q=0;Q{W&&Ce(W,m,d,u),P&&Me(d,u,m,"updated")},v)},E=(u,d,m,v,b,S,L)=>{for(let x=0;x{if(m!==v){if(m!==ee)for(const x in m)!wt(x)&&!(x in v)&&o(u,x,m[x],null,L,d.children,b,S,je);for(const x in v){if(wt(x))continue;const R=v[x],C=m[x];R!==C&&x!=="value"&&o(u,x,C,R,L,d.children,b,S,je)}"value"in v&&o(u,"value",m.value,v.value,L)}},A=(u,d,m,v,b,S,L,x,R)=>{const C=d.el=u?u.el:l(""),P=d.anchor=u?u.anchor:l("");let{patchFlag:U,dynamicChildren:H,slotScopeIds:W}=d;W&&(x=x?x.concat(W):W),u==null?(r(C,m,v),r(P,m,v),T(d.children||[],m,P,b,S,L,x,R)):U>0&&U&64&&H&&u.dynamicChildren?(E(u.dynamicChildren,H,m,b,S,L,x),(d.key!=null||b&&d===b.subTree)&&Kr(u,d,!0)):V(u,d,m,P,b,S,L,x,R)},G=(u,d,m,v,b,S,L,x,R)=>{d.slotScopeIds=x,u==null?d.shapeFlag&512?b.ctx.activate(d,m,v,L,R):ie(d,m,v,b,S,L,R):fe(u,d,R)},ie=(u,d,m,v,b,S,L)=>{const x=u.component=Ec(u,v,b);if(qt(u)&&(x.ctx.renderer=gt),Cc(x),x.asyncDep){if(b&&b.registerDep(x,D),!u.el){const R=x.subTree=oe(we);K(null,R,d,m)}}else D(x,u,d,m,b,S,L)},fe=(u,d,m)=>{const v=d.component=u.component;if(Al(u,d,m))if(v.asyncDep&&!v.asyncResolved){X(v,d,m);return}else v.next=d,bl(v.update),v.effect.dirty=!0,v.update();else d.el=u.el,v.vnode=d},D=(u,d,m,v,b,S,L)=>{const x=()=>{if(u.isMounted){let{next:P,bu:U,u:H,parent:W,vnode:z}=u;{const mt=zo(u);if(mt){P&&(P.el=z.el,X(u,P,L)),mt.asyncDep.then(()=>{u.isUnmounted||x()});return}}let Q=P,te;st(u,!1),P?(P.el=z.el,X(u,P,L)):P=z,U&&hn(U),(te=P.props&&P.props.onVnodeBeforeUpdate)&&Ce(te,W,P,z),st(u,!0);const ae=Wn(u),Ae=u.subTree;u.subTree=ae,I(Ae,ae,h(Ae.el),Yt(Ae),u,b,S),P.el=ae.el,Q===null&&Rl(u,ae.el),H&&me(H,b),(te=P.props&&P.props.onVnodeUpdated)&&me(()=>Ce(te,W,P,z),b)}else{let P;const{el:U,props:H}=d,{bm:W,m:z,parent:Q}=u,te=Ct(d);if(st(u,!1),W&&hn(W),!te&&(P=H&&H.onVnodeBeforeMount)&&Ce(P,Q,d),st(u,!0),U&&kn){const ae=()=>{u.subTree=Wn(u),kn(U,u.subTree,u,b,null)};te?d.type.__asyncLoader().then(()=>!u.isUnmounted&&ae()):ae()}else{const ae=u.subTree=Wn(u);I(null,ae,m,v,u,b,S),d.el=ae.el}if(z&&me(z,b),!te&&(P=H&&H.onVnodeMounted)){const ae=d;me(()=>Ce(P,Q,ae),b)}(d.shapeFlag&256||Q&&Ct(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&me(u.a,b),u.isMounted=!0,d=m=v=null}},R=u.effect=new Lr(x,xe,()=>Pn(C),u.scope),C=u.update=()=>{R.dirty&&R.run()};C.id=u.uid,st(u,!0),C()},X=(u,d,m)=>{d.component=u;const v=u.vnode.props;u.vnode=d,u.next=null,rc(u,d.props,v,m),ic(u,d.children,m),tt(),cs(u),nt()},V=(u,d,m,v,b,S,L,x,R=!1)=>{const C=u&&u.children,P=u?u.shapeFlag:0,U=d.children,{patchFlag:H,shapeFlag:W}=d;if(H>0){if(H&128){Xt(C,U,m,v,b,S,L,x,R);return}else if(H&256){He(C,U,m,v,b,S,L,x,R);return}}W&8?(P&16&&je(C,b,S),U!==C&&f(m,U)):P&16?W&16?Xt(C,U,m,v,b,S,L,x,R):je(C,b,S,!0):(P&8&&f(m,""),W&16&&T(U,m,v,b,S,L,x,R))},He=(u,d,m,v,b,S,L,x,R)=>{u=u||vt,d=d||vt;const C=u.length,P=d.length,U=Math.min(C,P);let H;for(H=0;HP?je(u,b,S,!0,!1,U):T(d,m,v,b,S,L,x,R,U)},Xt=(u,d,m,v,b,S,L,x,R)=>{let C=0;const P=d.length;let U=u.length-1,H=P-1;for(;C<=U&&C<=H;){const W=u[C],z=d[C]=R?ze(d[C]):Re(d[C]);if(ct(W,z))I(W,z,m,null,b,S,L,x,R);else break;C++}for(;C<=U&&C<=H;){const W=u[U],z=d[H]=R?ze(d[H]):Re(d[H]);if(ct(W,z))I(W,z,m,null,b,S,L,x,R);else break;U--,H--}if(C>U){if(C<=H){const W=H+1,z=WH)for(;C<=U;)Le(u[C],b,S,!0),C++;else{const W=C,z=C,Q=new Map;for(C=z;C<=H;C++){const ve=d[C]=R?ze(d[C]):Re(d[C]);ve.key!=null&&Q.set(ve.key,C)}let te,ae=0;const Ae=H-z+1;let mt=!1,Jr=0;const At=new Array(Ae);for(C=0;C=Ae){Le(ve,b,S,!0);continue}let Ie;if(ve.key!=null)Ie=Q.get(ve.key);else for(te=z;te<=H;te++)if(At[te-z]===0&&ct(ve,d[te])){Ie=te;break}Ie===void 0?Le(ve,b,S,!0):(At[Ie-z]=C+1,Ie>=Jr?Jr=Ie:mt=!0,I(ve,d[Ie],m,null,b,S,L,x,R),ae++)}const Qr=mt?dc(At):vt;for(te=Qr.length-1,C=Ae-1;C>=0;C--){const ve=z+C,Ie=d[ve],Zr=ve+1{const{el:S,type:L,transition:x,children:R,shapeFlag:C}=u;if(C&6){rt(u.component.subTree,d,m,v);return}if(C&128){u.suspense.move(d,m,v);return}if(C&64){L.move(u,d,m,gt);return}if(L===ye){r(S,d,m);for(let U=0;Ux.enter(S),b);else{const{leave:U,delayLeave:H,afterLeave:W}=x,z=()=>r(S,d,m),Q=()=>{U(S,()=>{z(),W&&W()})};H?H(S,z,Q):Q()}else r(S,d,m)},Le=(u,d,m,v=!1,b=!1)=>{const{type:S,props:L,ref:x,children:R,dynamicChildren:C,shapeFlag:P,patchFlag:U,dirs:H}=u;if(x!=null&&Cn(x,null,m,u,!0),P&256){d.ctx.deactivate(u);return}const W=P&1&&H,z=!Ct(u);let Q;if(z&&(Q=L&&L.onVnodeBeforeUnmount)&&Ce(Q,d,u),P&6)Ti(u.component,m,v);else{if(P&128){u.suspense.unmount(m,v);return}W&&Me(u,null,d,"beforeUnmount"),P&64?u.type.remove(u,d,m,b,gt,v):C&&(S!==ye||U>0&&U&64)?je(C,d,m,!1,!0):(S===ye&&U&384||!b&&P&16)&&je(R,d,m),v&&Xr(u)}(z&&(Q=L&&L.onVnodeUnmounted)||W)&&me(()=>{Q&&Ce(Q,d,u),W&&Me(u,null,d,"unmounted")},m)},Xr=u=>{const{type:d,el:m,anchor:v,transition:b}=u;if(d===ye){Si(m,v);return}if(d===Ft){_(u);return}const S=()=>{s(m),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:L,delayLeave:x}=b,R=()=>L(m,S);x?x(u.el,S,R):R()}else S()},Si=(u,d)=>{let m;for(;u!==d;)m=p(u),s(u),u=m;s(d)},Ti=(u,d,m)=>{const{bum:v,scope:b,update:S,subTree:L,um:x}=u;v&&hn(v),b.stop(),S&&(S.active=!1,Le(L,u,d,m)),x&&me(x,d),me(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},je=(u,d,m,v=!1,b=!1,S=0)=>{for(let L=S;Lu.shapeFlag&6?Yt(u.component.subTree):u.shapeFlag&128?u.suspense.next():p(u.anchor||u.el);let Un=!1;const Yr=(u,d,m)=>{u==null?d._vnode&&Le(d._vnode,null,null,!0):I(d._vnode||null,u,d,null,null,null,m),Un||(Un=!0,cs(),bn(),Un=!1),d._vnode=u},gt={p:I,um:Le,m:rt,r:Xr,mt:ie,mc:T,pc:V,pbc:E,n:Yt,o:e};let Bn,kn;return t&&([Bn,kn]=t(gt)),{render:Yr,hydrate:Bn,createApp:ec(Yr,Bn)}}function Xn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function st({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Go(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Kr(e,t,n=!1){const r=e.children,s=t.children;if(B(r)&&B(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function zo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:zo(t)}const hc=e=>e.__isTeleport,Nt=e=>e&&(e.disabled||e.disabled===""),bs=e=>typeof SVGElement<"u"&&e instanceof SVGElement,ws=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,br=(e,t)=>{const n=e&&e.to;return se(n)?t?t(n):null:n},pc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,a){const{mc:f,pc:h,pbc:p,o:{insert:y,querySelector:w,createText:I,createComment:N}}=a,K=Nt(t.props);let{shapeFlag:k,children:g,dynamicChildren:_}=t;if(e==null){const M=t.el=I(""),O=t.anchor=I("");y(M,n,r),y(O,n,r);const F=t.target=br(t.props,w),T=t.targetAnchor=I("");F&&(y(T,F),i==="svg"||bs(F)?i="svg":(i==="mathml"||ws(F))&&(i="mathml"));const $=(E,j)=>{k&16&&f(g,E,j,s,o,i,l,c)};K?$(n,O):F&&$(F,T)}else{t.el=e.el;const M=t.anchor=e.anchor,O=t.target=e.target,F=t.targetAnchor=e.targetAnchor,T=Nt(e.props),$=T?n:O,E=T?M:F;if(i==="svg"||bs(O)?i="svg":(i==="mathml"||ws(O))&&(i="mathml"),_?(p(e.dynamicChildren,_,$,s,o,i,l),Kr(e,t,!0)):c||h(e,t,$,E,s,o,i,l,!1),K)T?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ln(t,n,M,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const j=t.target=br(t.props,w);j&&ln(t,j,null,a,0)}else T&&ln(t,O,F,a,1)}Xo(t)},remove(e,t,n,r,{um:s,o:{remove:o}},i){const{shapeFlag:l,children:c,anchor:a,targetAnchor:f,target:h,props:p}=e;if(h&&o(f),i&&o(a),l&16){const y=i||!Nt(p);for(let w=0;w0?Oe||vt:null,mc(),Bt>0&&Oe&&Oe.push(e),e}function du(e,t,n,r,s,o){return Jo(ei(e,t,n,r,s,o,!0))}function Qo(e,t,n,r,s){return Jo(oe(e,t,n,r,s,!0))}function xn(e){return e?e.__v_isVNode===!0:!1}function ct(e,t){return e.type===t.type&&e.key===t.key}const Zo=({key:e})=>e??null,gn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||de(e)||q(e)?{i:le,r:e,k:t,f:!!n}:e:null);function ei(e,t=null,n=null,r=0,s=null,o=e===ye?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Zo(t),ref:t&&gn(t),scopeId:Fn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:le};return l?(Wr(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=se(n)?8:16),Bt>0&&!i&&Oe&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Oe.push(c),c}const oe=yc;function yc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Ao)&&(e=we),xn(e)){const l=et(e,t,!0);return n&&Wr(l,n),Bt>0&&!o&&Oe&&(l.shapeFlag&6?Oe[Oe.indexOf(e)]=l:Oe.push(l)),l.patchFlag|=-2,l}if(Ac(e)&&(e=e.__vccOpts),t){t=_c(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=Or(l)),Z(c)&&(yo(c)&&!B(c)&&(c=ce({},c)),t.style=Rr(c))}const i=se(e)?1:Ol(e)?128:hc(e)?64:Z(e)?4:q(e)?2:0;return ei(e,t,n,r,s,i,o,!0)}function _c(e){return e?yo(e)||Do(e)?ce({},e):e:null}function et(e,t,n=!1){const{props:r,ref:s,patchFlag:o,children:i}=e,l=t?vc(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Zo(l),ref:t&&t.ref?n&&s?B(s)?s.concat(gn(t)):[s,gn(t)]:gn(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&et(e.ssContent),ssFallback:e.ssFallback&&et(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function ti(e=" ",t=0){return oe(St,null,e,t)}function hu(e,t){const n=oe(Ft,null,e);return n.staticCount=t,n}function pu(e="",t=!1){return t?(Yo(),Qo(we,null,e)):oe(we,null,e)}function Re(e){return e==null||typeof e=="boolean"?oe(we):B(e)?oe(ye,null,e.slice()):typeof e=="object"?ze(e):oe(St,null,String(e))}function ze(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:et(e)}function Wr(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(B(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),Wr(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Do(t)?t._ctx=le:s===3&&le&&(le.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:le},n=32):(t=String(t),r&64?(n=16,t=[ti(t)]):n=8);e.children=t,e.shapeFlag|=n}function vc(...e){const t={};for(let n=0;nue||le;let Sn,wr;{const e=to(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Sn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),wr=t("__VUE_SSR_SETTERS__",n=>zt=n)}const Gt=e=>{const t=ue;return Sn(e),e.scope.on(),()=>{e.scope.off(),Sn(t)}},Cs=()=>{ue&&ue.scope.off(),Sn(null)};function ni(e){return e.vnode.shapeFlag&4}let zt=!1;function Cc(e,t=!1){t&&wr(t);const{props:n,children:r}=e.vnode,s=ni(e);nc(e,n,s,t),oc(e,r);const o=s?xc(e,t):void 0;return t&&wr(!1),o}function xc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,ql);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?si(e):null,o=Gt(e);tt();const i=Je(r,e,0,[e.props,s]);if(nt(),o(),Js(i)){if(i.then(Cs,Cs),t)return i.then(l=>{xs(e,l,t)}).catch(l=>{Wt(l,e,0)});e.asyncDep=i}else xs(e,i,t)}else ri(e,t)}function xs(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=wo(t)),ri(e,n)}let Ss;function ri(e,t,n){const r=e.type;if(!e.render){if(!t&&Ss&&!r.render){const s=r.template||Br(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,a=ce(ce({isCustomElement:o,delimiters:l},i),c);r.render=Ss(s,a)}}e.render=r.render||xe}{const s=Gt(e);tt();try{zl(e)}finally{nt(),s()}}}const Sc={get(e,t){return _e(e,"get",""),e[t]}};function si(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Sc),slots:e.slots,emit:e.emit,expose:t}}function Dn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(wo(pn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Mt)return Mt[n](e)},has(t,n){return n in t||n in Mt}}))}function Tc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Ac(e){return q(e)&&"__vccOpts"in e}const ne=(e,t)=>al(e,t,zt);function Er(e,t,n){const r=arguments.length;return r===2?Z(t)&&!B(t)?xn(t)?oe(e,null,[t]):oe(e,t):oe(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&xn(n)&&(n=[n]),oe(e,t,n))}const Rc="3.4.23";/** +* @vue/runtime-dom v3.4.23 +* (c) 2018-present Yuxi (Evan) You and Vue contributors +* @license MIT +**/const Oc="http://www.w3.org/2000/svg",Lc="http://www.w3.org/1998/Math/MathML",Xe=typeof document<"u"?document:null,Ts=Xe&&Xe.createElement("template"),Ic={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Xe.createElementNS(Oc,e):t==="mathml"?Xe.createElementNS(Lc,e):Xe.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Xe.createTextNode(e),createComment:e=>Xe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{Ts.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=Ts.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ke="transition",Rt="animation",kt=Symbol("_vtc"),oi=(e,{slots:t})=>Er(Fl,Mc(e),t);oi.displayName="Transition";const ii={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};oi.props=ce({},Io,ii);const ot=(e,t=[])=>{B(e)?e.forEach(n=>n(...t)):e&&e(...t)},As=e=>e?B(e)?e.some(t=>t.length>1):e.length>1:!1;function Mc(e){const t={};for(const A in e)A in ii||(t[A]=e[A]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:y=`${n}-leave-to`}=e,w=Pc(s),I=w&&w[0],N=w&&w[1],{onBeforeEnter:K,onEnter:k,onEnterCancelled:g,onLeave:_,onLeaveCancelled:M,onBeforeAppear:O=K,onAppear:F=k,onAppearCancelled:T=g}=t,$=(A,G,ie)=>{it(A,G?f:l),it(A,G?a:i),ie&&ie()},E=(A,G)=>{A._isLeaving=!1,it(A,h),it(A,y),it(A,p),G&&G()},j=A=>(G,ie)=>{const fe=A?F:k,D=()=>$(G,A,ie);ot(fe,[G,D]),Rs(()=>{it(G,A?c:o),We(G,A?f:l),As(fe)||Os(G,r,I,D)})};return ce(t,{onBeforeEnter(A){ot(K,[A]),We(A,o),We(A,i)},onBeforeAppear(A){ot(O,[A]),We(A,c),We(A,a)},onEnter:j(!1),onAppear:j(!0),onLeave(A,G){A._isLeaving=!0;const ie=()=>E(A,G);We(A,h),$c(),We(A,p),Rs(()=>{A._isLeaving&&(it(A,h),We(A,y),As(_)||Os(A,r,N,ie))}),ot(_,[A,ie])},onEnterCancelled(A){$(A,!1),ot(g,[A])},onAppearCancelled(A){$(A,!0),ot(T,[A])},onLeaveCancelled(A){E(A),ot(M,[A])}})}function Pc(e){if(e==null)return null;if(Z(e))return[Yn(e.enter),Yn(e.leave)];{const t=Yn(e);return[t,t]}}function Yn(e){return Mi(e)}function We(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[kt]||(e[kt]=new Set)).add(t)}function it(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[kt];n&&(n.delete(t),n.size||(e[kt]=void 0))}function Rs(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Nc=0;function Os(e,t,n,r){const s=e._endId=++Nc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=Fc(e,t);if(!i)return r();const a=i+"end";let f=0;const h=()=>{e.removeEventListener(a,p),o()},p=y=>{y.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[w]||"").split(", "),s=r(`${Ke}Delay`),o=r(`${Ke}Duration`),i=Ls(s,o),l=r(`${Rt}Delay`),c=r(`${Rt}Duration`),a=Ls(l,c);let f=null,h=0,p=0;t===Ke?i>0&&(f=Ke,h=i,p=o.length):t===Rt?a>0&&(f=Rt,h=a,p=c.length):(h=Math.max(i,a),f=h>0?i>a?Ke:Rt:null,p=f?f===Ke?o.length:c.length:0);const y=f===Ke&&/\b(transform|all)(,|$)/.test(r(`${Ke}Property`).toString());return{type:f,timeout:h,propCount:p,hasTransform:y}}function Ls(e,t){for(;e.lengthIs(n)+Is(e[r])))}function Is(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function $c(){return document.body.offsetHeight}function Hc(e,t,n){const r=e[kt];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ms=Symbol("_vod"),jc=Symbol("_vsh"),Vc=Symbol(""),Dc=/(^|;)\s*display\s*:/;function Uc(e,t,n){const r=e.style,s=se(n);let o=!1;if(n&&!s){if(t)if(se(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&mn(r,l,"")}else for(const i in t)n[i]==null&&mn(r,i,"");for(const i in n)i==="display"&&(o=!0),mn(r,i,n[i])}else if(s){if(t!==n){const i=r[Vc];i&&(n+=";"+i),r.cssText=n,o=Dc.test(n)}}else t&&e.removeAttribute("style");Ms in e&&(e[Ms]=o?r.display:"",e[jc]&&(r.display="none"))}const Ps=/\s*!important$/;function mn(e,t,n){if(B(n))n.forEach(r=>mn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Bc(e,t);Ps.test(n)?e.setProperty(pt(r),n.replace(Ps,""),"important"):e[r]=n}}const Ns=["Webkit","Moz","ms"],Jn={};function Bc(e,t){const n=Jn[t];if(n)return n;let r=$e(t);if(r!=="filter"&&r in e)return Jn[t]=r;r=Rn(r);for(let s=0;sQn||(zc.then(()=>Qn=0),Qn=Date.now());function Yc(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Se(Jc(r,n.value),t,5,[r])};return n.value=e,n.attached=Xc(),n}function Jc(e,t){if(B(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const js=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Qc=(e,t,n,r,s,o,i,l,c)=>{const a=s==="svg";t==="class"?Hc(e,r,a):t==="style"?Uc(e,n,r):Kt(t)?Sr(t)||qc(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Zc(e,t,r,a))?Kc(e,t,r,o,i,l,c):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),kc(e,t,r,a))};function Zc(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&js(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return js(t)&&se(n)?!1:t in e}const Vs=e=>{const t=e.props["onUpdate:modelValue"]||!1;return B(t)?n=>hn(t,n):t};function ea(e){e.target.composing=!0}function Ds(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Zn=Symbol("_assign"),gu={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Zn]=Vs(s);const o=r||s.props&&s.props.type==="number";yt(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=cr(l)),e[Zn](l)}),n&&yt(e,"change",()=>{e.value=e.value.trim()}),t||(yt(e,"compositionstart",ea),yt(e,"compositionend",Ds),yt(e,"change",Ds))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:s}},o){if(e[Zn]=Vs(o),e.composing)return;const i=(s||e.type==="number")&&!/^0\d/.test(e.value)?cr(e.value):e.value,l=t??"";i!==l&&(document.activeElement===e&&e.type!=="range"&&(n||r&&e.value.trim()===l)||(e.value=l))}},ta=["ctrl","shift","alt","meta"],na={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ta.some(n=>e[`${n}Key`]&&!t.includes(n))},mu=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=pt(s.key);if(t.some(i=>i===o||ra[i]===o))return e(s)})},li=ce({patchProp:Qc},Ic);let Ht,Us=!1;function sa(){return Ht||(Ht=uc(li))}function oa(){return Ht=Us?Ht:fc(li),Us=!0,Ht}const _u=(...e)=>{const t=sa().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=ai(r);if(!s)return;const o=t._component;!q(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,ci(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},vu=(...e)=>{const t=oa().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=ai(r);if(s)return n(s,!0,ci(s))},t};function ci(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ai(e){return se(e)?document.querySelector(e):e}const bu=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},ia="modulepreload",la=function(e){return"/"+e},Bs={},wu=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),i=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));s=Promise.all(n.map(l=>{if(l=la(l),l in Bs)return;Bs[l]=!0;const c=l.endsWith(".css"),a=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${a}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":ia,c||(f.as="script",f.crossOrigin=""),f.href=l,i&&f.setAttribute("nonce",i),document.head.appendChild(f),c)return new Promise((h,p)=>{f.addEventListener("load",h),f.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},ca=window.__VP_SITE_DATA__;function qr(e){return so()?(Ui(e),!0):!1}function Fe(e){return typeof e=="function"?e():bo(e)}const ui=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const aa=Object.prototype.toString,ua=e=>aa.call(e)==="[object Object]",Qe=()=>{},Cr=fa();function fa(){var e,t;return ui&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function da(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const fi=e=>e();function ha(e,t={}){let n,r,s=Qe;const o=l=>{clearTimeout(l),s(),s=Qe};return l=>{const c=Fe(e),a=Fe(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,a&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},a)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function pa(e=fi){const t=re(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:In(t),pause:n,resume:r,eventFilter:s}}function ga(e){return Vn()}function di(...e){if(e.length!==1)return ml(...e);const t=e[0];return typeof t=="function"?In(hl(()=>({get:t,set:Qe}))):re(t)}function hi(e,t,n={}){const{eventFilter:r=fi,...s}=n;return Ne(e,da(r,t),s)}function ma(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=pa(r);return{stop:hi(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function Gr(e,t=!0,n){ga()?Tt(e,n):t?e():Mn(e)}function Eu(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return hi(e,t,{...o,eventFilter:ha(r,{maxWait:s})})}function Cu(e,t,n){let r;de(n)?r={evaluating:n}:r={};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=Qe}=r,c=re(!s),a=i?jr(t):re(t);let f=0;return Dr(async h=>{if(!c.value)return;f++;const p=f;let y=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const w=await e(I=>{h(()=>{o&&(o.value=!1),y||I()})});p===f&&(a.value=w)}catch(w){l(w)}finally{o&&p===f&&(o.value=!1),y=!0}}),s?ne(()=>(c.value=!0,a.value)):a}function _t(e){var t;const n=Fe(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Te=ui?window:void 0;function De(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Te):[t,n,r,s]=e,!t)return Qe;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,p,y)=>(f.addEventListener(h,p,y),()=>f.removeEventListener(h,p,y)),c=Ne(()=>[_t(t),Fe(s)],([f,h])=>{if(i(),!f)return;const p=ua(h)?{...h}:h;o.push(...n.flatMap(y=>r.map(w=>l(f,y,w,p))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return qr(a),a}let ks=!1;function xu(e,t,n={}){const{window:r=Te,ignore:s=[],capture:o=!0,detectIframe:i=!1}=n;if(!r)return Qe;Cr&&!ks&&(ks=!0,Array.from(r.document.body.children).forEach(p=>p.addEventListener("click",Qe)),r.document.documentElement.addEventListener("click",Qe));let l=!0;const c=p=>s.some(y=>{if(typeof y=="string")return Array.from(r.document.querySelectorAll(y)).some(w=>w===p.target||p.composedPath().includes(w));{const w=_t(y);return w&&(p.target===w||p.composedPath().includes(w))}}),f=[De(r,"click",p=>{const y=_t(e);if(!(!y||y===p.target||p.composedPath().includes(y))){if(p.detail===0&&(l=!c(p)),!l){l=!0;return}t(p)}},{passive:!0,capture:o}),De(r,"pointerdown",p=>{const y=_t(e);l=!c(p)&&!!(y&&!p.composedPath().includes(y))},{passive:!0}),i&&De(r,"blur",p=>{setTimeout(()=>{var y;const w=_t(e);((y=r.document.activeElement)==null?void 0:y.tagName)==="IFRAME"&&!(w!=null&&w.contains(r.document.activeElement))&&t(p)},0)})].filter(Boolean);return()=>f.forEach(p=>p())}function ya(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Su(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Te,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=ya(t);return De(s,o,f=>{f.repeat&&Fe(l)||c(f)&&n(f)},i)}function _a(){const e=re(!1),t=Vn();return t&&Tt(()=>{e.value=!0},t),e}function va(e){const t=_a();return ne(()=>(t.value,!!e()))}function pi(e,t={}){const{window:n=Te}=t,r=va(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=re(!1),i=a=>{o.value=a.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=Dr(()=>{r.value&&(l(),s=n.matchMedia(Fe(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return qr(()=>{c(),l(),s=void 0}),o}const cn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},an="__vueuse_ssr_handlers__",ba=wa();function wa(){return an in cn||(cn[an]=cn[an]||{}),cn[an]}function gi(e,t){return ba[e]||t}function Ea(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Ca={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ks="vueuse-storage";function zr(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:a=!1,shallow:f,window:h=Te,eventFilter:p,onError:y=E=>{console.error(E)},initOnMounted:w}=r,I=(f?jr:re)(typeof t=="function"?t():t);if(!n)try{n=gi("getDefaultStorage",()=>{var E;return(E=Te)==null?void 0:E.localStorage})()}catch(E){y(E)}if(!n)return I;const N=Fe(t),K=Ea(N),k=(s=r.serializer)!=null?s:Ca[K],{pause:g,resume:_}=ma(I,()=>O(I.value),{flush:o,deep:i,eventFilter:p});h&&l&&Gr(()=>{De(h,"storage",T),De(h,Ks,$),w&&T()}),w||T();function M(E,j){h&&h.dispatchEvent(new CustomEvent(Ks,{detail:{key:e,oldValue:E,newValue:j,storageArea:n}}))}function O(E){try{const j=n.getItem(e);if(E==null)M(j,null),n.removeItem(e);else{const A=k.write(E);j!==A&&(n.setItem(e,A),M(j,A))}}catch(j){y(j)}}function F(E){const j=E?E.newValue:n.getItem(e);if(j==null)return c&&N!=null&&n.setItem(e,k.write(N)),N;if(!E&&a){const A=k.read(j);return typeof a=="function"?a(A,N):K==="object"&&!Array.isArray(A)?{...N,...A}:A}else return typeof j!="string"?j:k.read(j)}function T(E){if(!(E&&E.storageArea!==n)){if(E&&E.key==null){I.value=N;return}if(!(E&&E.key!==e)){g();try{(E==null?void 0:E.newValue)!==k.write(I.value)&&(I.value=F(E))}catch(j){y(j)}finally{E?Mn(_):_()}}}}function $(E){T(E.detail)}return I}function mi(e){return pi("(prefers-color-scheme: dark)",e)}function xa(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Te,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:a,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},p=mi({window:s}),y=ne(()=>p.value?"dark":"light"),w=c||(i==null?di(r):zr(i,r,o,{window:s,listenToStorageChanges:l})),I=ne(()=>w.value==="auto"?y.value:w.value),N=gi("updateHTMLAttrs",(_,M,O)=>{const F=typeof _=="string"?s==null?void 0:s.document.querySelector(_):_t(_);if(!F)return;let T;if(f&&(T=s.document.createElement("style"),T.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(T)),M==="class"){const $=O.split(/\s/g);Object.values(h).flatMap(E=>(E||"").split(/\s/g)).filter(Boolean).forEach(E=>{$.includes(E)?F.classList.add(E):F.classList.remove(E)})}else F.setAttribute(M,O);f&&(s.getComputedStyle(T).opacity,document.head.removeChild(T))});function K(_){var M;N(t,n,(M=h[_])!=null?M:_)}function k(_){e.onChanged?e.onChanged(_,K):K(_)}Ne(I,k,{flush:"post",immediate:!0}),Gr(()=>k(I.value));const g=ne({get(){return a?w.value:I.value},set(_){w.value=_}});try{return Object.assign(g,{store:w,system:y,state:I})}catch{return g}}function Sa(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Te}=e,s=xa({...e,onChanged:(l,c)=>{var a;e.onChanged?(a=e.onChanged)==null||a.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=ne(()=>s.system?s.system.value:mi({window:r}).value?"dark":"light");return ne({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?s.value="auto":s.value=c}})}function er(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Tu(e,t,n={}){const{window:r=Te}=n;return zr(e,t,r==null?void 0:r.localStorage,n)}function yi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const un=new WeakMap;function Au(e,t=!1){const n=re(t);let r=null;Ne(di(e),i=>{const l=er(Fe(i));if(l){const c=l;un.get(c)||un.set(c,c.style.overflow),n.value&&(c.style.overflow="hidden")}},{immediate:!0});const s=()=>{const i=er(Fe(e));!i||n.value||(Cr&&(r=De(i,"touchmove",l=>{Ta(l)},{passive:!1})),i.style.overflow="hidden",n.value=!0)},o=()=>{var i;const l=er(Fe(e));!l||!n.value||(Cr&&(r==null||r()),l.style.overflow=(i=un.get(l))!=null?i:"",un.delete(l),n.value=!1)};return qr(o),ne({get(){return n.value},set(i){i?s():o()}})}function Ru(e,t,n={}){const{window:r=Te}=n;return zr(e,t,r==null?void 0:r.sessionStorage,n)}function Ou(e={}){const{window:t=Te,behavior:n="auto"}=e;if(!t)return{x:re(0),y:re(0)};const r=re(t.scrollX),s=re(t.scrollY),o=ne({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),i=ne({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return De(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function Lu(e={}){const{window:t=Te,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=e,i=re(n),l=re(r),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),Gr(c),De("resize",c,{passive:!0}),s){const a=pi("(orientation: portrait)");Ne(a,()=>c())}return{width:i,height:l}}var tr={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},nr={};const _i=/^(?:[a-z]+:|\/\/)/i,Aa="vitepress-theme-appearance",Ra=/#.*$/,Oa=/[?#].*$/,La=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",vi={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Ia(e,t,n=!1){if(t===void 0)return!1;if(e=Ws(`/${e}`),n)return new RegExp(t).test(e);if(Ws(t)!==e)return!1;const r=t.match(Ra);return r?(ge?location.hash:"")===r[0]:!0}function Ws(e){return decodeURI(e).replace(Oa,"").replace(La,"$1")}function Ma(e){return _i.test(e)}function Pa(e,t){var r,s,o,i,l,c,a;const n=Object.keys(e.locales).find(f=>f!=="root"&&!Ma(f)&&Ia(t,`/${f}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:wi(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function bi(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=Na(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function Na(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Fa(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function wi(e,t){return[...e.filter(n=>!Fa(t,n)),...t]}const $a=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Ha=/^[a-z]:/i;function qs(e){const t=Ha.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace($a,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const rr=new Set;function ja(e){if(rr.size===0){const n=typeof process=="object"&&(nr==null?void 0:nr.VITE_EXTRA_EXTENSIONS)||(tr==null?void 0:tr.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>rr.add(r))}const t=e.split(".").pop();return t==null||!rr.has(t.toLowerCase())}function Iu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const Va=Symbol(),dt=jr(ca);function Mu(e){const t=ne(()=>Pa(dt.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?re(!0):n?Sa({storageKey:Aa,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):re(!1),s=re(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{s.value=location.hash}),Ne(()=>e.data,()=>{s.value=ge?location.hash:""}),{site:t,theme:ne(()=>t.value.themeConfig),page:ne(()=>e.data),frontmatter:ne(()=>e.data.frontmatter),params:ne(()=>e.data.params),lang:ne(()=>t.value.lang),dir:ne(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ne(()=>t.value.localeIndex||"root"),title:ne(()=>bi(t.value,e.data)),description:ne(()=>e.data.description||t.value.description),isDark:r,hash:ne(()=>s.value)}}function Da(){const e=xt(Va);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Ua(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function Gs(e){return _i.test(e)||!e.startsWith("/")?e:Ua(dt.value.base,e)}function Ba(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/";t=qs(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${qs(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let yn=[];function Pu(e){yn.push(e),jn(()=>{yn=yn.filter(t=>t!==e)})}function ka(){let e=dt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=zs(e,n);else if(Array.isArray(e))for(const r of e){const s=zs(r,n);if(s){t=s;break}}return t}function zs(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const Ka=Symbol(),Ei="http://a.com",Wa=()=>({path:"/",component:null,data:vi});function Nu(e,t){const n=Ln(Wa()),r={route:n,go:s};async function s(l=ge?location.href:"/"){var c,a;l=sr(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(ge&&l!==sr(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await i(l),await((a=r.onAfterRouteChanged)==null?void 0:a.call(r,l)))}let o=null;async function i(l,c=0,a=!1){var p;if(await((p=r.onBeforePageLoad)==null?void 0:p.call(r,l))===!1)return;const f=new URL(l,Ei),h=o=f.pathname;try{let y=await e(h);if(!y)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:w,__pageData:I}=y;if(!w)throw new Error(`Invalid route component: ${w}`);n.path=ge?h:Gs(h),n.component=pn(w),n.data=pn(I),ge&&Mn(()=>{let N=dt.value.base+I.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!dt.value.cleanUrls&&!N.endsWith("/")&&(N+=".html"),N!==f.pathname&&(f.pathname=N,l=N+f.search+f.hash,history.replaceState({},"",l)),f.hash&&!c){let K=null;try{K=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(k){console.warn(k)}if(K){Xs(K,f.hash);return}}window.scrollTo(0,c)})}}catch(y){if(!/fetch|Page not found/.test(y.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(y),!a)try{const w=await fetch(dt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await w.json(),await i(l,c,!0);return}catch{}o===h&&(o=null,n.path=ge?h:Gs(h),n.component=t?pn(t):null,n.data=vi)}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.target.closest("button"))return;const a=l.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:f}=a,{href:h,origin:p,pathname:y,hash:w,search:I}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),N=new URL(location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!f&&p===N.origin&&ja(y)&&(l.preventDefault(),y===N.pathname&&I===N.search?(w!==N.hash&&(history.pushState({},"",h),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:N.href,newURL:h}))),w?Xs(a,w,a.classList.contains("header-anchor")):window.scrollTo(0,0)):s(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await i(sr(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function qa(){const e=xt(Ka);if(!e)throw new Error("useRouter() is called without provider.");return e}function Ci(){return qa().route}function Xs(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(r).paddingTop,10),i=window.scrollY+r.getBoundingClientRect().top-ka()+o;requestAnimationFrame(s)}}function sr(e){const t=new URL(e,Ei);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),dt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const or=()=>yn.forEach(e=>e()),Fu=Ur({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Ci(),{site:n}=Da();return()=>Er(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?Er(t.component,{onVnodeMounted:or,onVnodeUpdated:or,onVnodeUnmounted:or}):"404 Page Not Found"])}}),$u=Ur({setup(e,{slots:t}){const n=re(!1);return Tt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Hu(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=r.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(a=>a.classList.contains("active"));if(!i)return;const l=o.children[s];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function ju(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(f=>f.remove());let a=c.textContent||"";i&&(a=a.replace(/^ *(\$|>) /gm,"").trim()),Ga(a).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function Ga(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function Vu(e,t){let n=!0,r=[];const s=o=>{if(n){n=!1,o.forEach(l=>{const c=ir(l);for(const a of document.head.children)if(a.isEqualNode(c)){r.push(a);return}});return}const i=o.map(ir);r.forEach((l,c)=>{const a=i.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));a!==-1?delete i[a]:(l==null||l.remove(),delete r[c])}),i.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...i].filter(Boolean)};Dr(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],a=bi(i,o);a!==document.title&&(document.title=a);const f=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):ir(["meta",{name:"description",content:f}]),s(wi(i.head,Xa(c)))})}function ir([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function za(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Xa(e){return e.filter(t=>!za(t))}const lr=new Set,xi=()=>document.createElement("link"),Ya=e=>{const t=xi();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Ja=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let fn;const Qa=ge&&(fn=xi())&&fn.relList&&fn.relList.supports&&fn.relList.supports("prefetch")?Ya:Ja;function Du(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!lr.has(c)){lr.add(c);const a=Ba(c);a&&Qa(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):lr.add(l))})})};Tt(r);const s=Ci();Ne(()=>s.path,r),jn(()=>{n&&n.disconnect()})}export{tc as $,su as A,Ul as B,ka as C,nu as D,lu as E,ye as F,jr as G,Pu as H,oe as I,ru as J,_i as K,Ci as L,vc as M,xt as N,Lu as O,Rr as P,xu as Q,Su as R,Mn as S,oi as T,Ou as U,ge as V,In as W,iu as X,wu as Y,Au as Z,bu as _,ti as a,yu as a0,au as a1,mu as a2,uu as a3,Er as a4,hu as a5,Vu as a6,Ka as a7,Mu as a8,Va as a9,Fu as aa,$u as ab,dt as ac,vu as ad,Nu as ae,Ba as af,Du as ag,ju as ah,Hu as ai,_t as aj,qr as ak,Cu as al,Ru as am,Tu as an,Eu as ao,qa as ap,De as aq,Fo as ar,ou as as,gu as at,de as au,fu as av,pn as aw,_u as ax,Iu as ay,Qo as b,du as c,Ur as d,pu as e,ja as f,Gs as g,ne as h,Ma as i,re as j,Tt as k,ei as l,bo as m,Or as n,Yo as o,eu as p,tu as q,cu as r,Ia as s,Za as t,Da as u,pi as v,xl as w,Ne as x,Dr as y,jn as z}; diff --git a/assets/chunks/framework.EN5ALL4V.js b/assets/chunks/framework.EN5ALL4V.js deleted file mode 100644 index 83ce6c0..0000000 --- a/assets/chunks/framework.EN5ALL4V.js +++ /dev/null @@ -1,17 +0,0 @@ -/** -* @vue/shared v3.4.23 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**//*! #__NO_SIDE_EFFECTS__ */function xr(e,t){const n=new Set(e.split(","));return r=>n.has(r)}const ee={},vt=[],xe=()=>{},Ai=()=>!1,Kt=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Sr=e=>e.startsWith("onUpdate:"),ce=Object.assign,Tr=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},Ri=Object.prototype.hasOwnProperty,Y=(e,t)=>Ri.call(e,t),B=Array.isArray,bt=e=>Tn(e)==="[object Map]",Js=e=>Tn(e)==="[object Set]",q=e=>typeof e=="function",se=e=>typeof e=="string",ht=e=>typeof e=="symbol",Z=e=>e!==null&&typeof e=="object",Qs=e=>(Z(e)||q(e))&&q(e.then)&&q(e.catch),Zs=Object.prototype.toString,Tn=e=>Zs.call(e),Oi=e=>Tn(e).slice(8,-1),eo=e=>Tn(e)==="[object Object]",Ar=e=>se(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,wt=xr(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),An=e=>{const t=Object.create(null);return n=>t[n]||(t[n]=e(n))},Li=/-(\w)/g,$e=An(e=>e.replace(Li,(t,n)=>n?n.toUpperCase():"")),Ii=/\B([A-Z])/g,pt=An(e=>e.replace(Ii,"-$1").toLowerCase()),Rn=An(e=>e.charAt(0).toUpperCase()+e.slice(1)),dn=An(e=>e?`on${Rn(e)}`:""),Ze=(e,t)=>!Object.is(e,t),hn=(e,t)=>{for(let n=0;n{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,value:n})},cr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},Mi=e=>{const t=se(e)?Number(e):NaN;return isNaN(t)?e:t};let ts;const no=()=>ts||(ts=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function Rr(e){if(B(e)){const t={};for(let n=0;n{if(n){const r=n.split(Ni);r.length>1&&(t[r[0].trim()]=r[1].trim())}}),t}function Or(e){let t="";if(se(e))t=e;else if(B(e))for(let n=0;nse(e)?e:e==null?"":B(e)||Z(e)&&(e.toString===Zs||!q(e.toString))?JSON.stringify(e,so,2):String(e),so=(e,t)=>t&&t.__v_isRef?so(e,t.value):bt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[r,s],o)=>(n[Kn(r,o)+" =>"]=s,n),{})}:Js(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>Kn(n))}:ht(t)?Kn(t):Z(t)&&!B(t)&&!eo(t)?String(t):t,Kn=(e,t="")=>{var n;return ht(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};/** -* @vue/reactivity v3.4.23 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/let be;class Vi{constructor(t=!1){this.detached=t,this._active=!0,this.effects=[],this.cleanups=[],this.parent=be,!t&&be&&(this.index=(be.scopes||(be.scopes=[])).push(this)-1)}get active(){return this._active}run(t){if(this._active){const n=be;try{return be=this,t()}finally{be=n}}}on(){be=this}off(){be=this.parent}stop(t){if(this._active){let n,r;for(n=0,r=this.effects.length;n=4))break}this._dirtyLevel===1&&(this._dirtyLevel=0),nt()}return this._dirtyLevel>=4}set dirty(t){this._dirtyLevel=t?4:0}run(){if(this._dirtyLevel=0,!this.active)return this.fn();let t=Ye,n=ut;try{return Ye=!0,ut=this,this._runnings++,ns(this),this.fn()}finally{rs(this),this._runnings--,ut=n,Ye=t}}stop(){var t;this.active&&(ns(this),rs(this),(t=this.onStop)==null||t.call(this),this.active=!1)}}function Bi(e){return e.value}function ns(e){e._trackId++,e._depsLength=0}function rs(e){if(e.deps.length>e._depsLength){for(let t=e._depsLength;t{const n=new Map;return n.cleanup=e,n.computed=t,n},_n=new WeakMap,ft=Symbol(""),fr=Symbol("");function _e(e,t,n){if(Ye&&ut){let r=_n.get(e);r||_n.set(e,r=new Map);let s=r.get(n);s||r.set(n,s=uo(()=>r.delete(n))),co(ut,s)}}function Ve(e,t,n,r,s,o){const i=_n.get(e);if(!i)return;let l=[];if(t==="clear")l=[...i.values()];else if(n==="length"&&B(e)){const c=Number(r);i.forEach((a,f)=>{(f==="length"||!ht(f)&&f>=c)&&l.push(a)})}else switch(n!==void 0&&l.push(i.get(n)),t){case"add":B(e)?Ar(n)&&l.push(i.get("length")):(l.push(i.get(ft)),bt(e)&&l.push(i.get(fr)));break;case"delete":B(e)||(l.push(i.get(ft)),bt(e)&&l.push(i.get(fr)));break;case"set":bt(e)&&l.push(i.get(ft));break}Ir();for(const c of l)c&&ao(c,4);Mr()}function ki(e,t){var n;return(n=_n.get(e))==null?void 0:n.get(t)}const Ki=xr("__proto__,__v_isRef,__isVue"),fo=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(ht)),ss=Wi();function Wi(){const e={};return["includes","indexOf","lastIndexOf"].forEach(t=>{e[t]=function(...n){const r=J(this);for(let o=0,i=this.length;o{e[t]=function(...n){tt(),Ir();const r=J(this)[t].apply(this,n);return Mr(),nt(),r}}),e}function qi(e){ht(e)||(e=String(e));const t=J(this);return _e(t,"has",e),t.hasOwnProperty(e)}class ho{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,r){const s=this._isReadonly,o=this._isShallow;if(n==="__v_isReactive")return!s;if(n==="__v_isReadonly")return s;if(n==="__v_isShallow")return o;if(n==="__v_raw")return r===(s?o?ol:yo:o?mo:go).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(r)?t:void 0;const i=B(t);if(!s){if(i&&Y(ss,n))return Reflect.get(ss,n,r);if(n==="hasOwnProperty")return qi}const l=Reflect.get(t,n,r);return(ht(n)?fo.has(n):Ki(n))||(s||_e(t,"get",n),o)?l:de(l)?i&&Ar(n)?l:l.value:Z(l)?s?In(l):Ln(l):l}}class po extends ho{constructor(t=!1){super(!1,t)}set(t,n,r,s){let o=t[n];if(!this._isShallow){const c=jt(o);if(!vn(r)&&!jt(r)&&(o=J(o),r=J(r)),!B(t)&&de(o)&&!de(r))return c?!1:(o.value=r,!0)}const i=B(t)&&Ar(n)?Number(n)e,On=e=>Reflect.getPrototypeOf(e);function Jt(e,t,n=!1,r=!1){e=e.__v_raw;const s=J(e),o=J(t);n||(Ze(t,o)&&_e(s,"get",t),_e(s,"get",o));const{has:i}=On(s),l=r?Pr:n?$r:Vt;if(i.call(s,t))return l(e.get(t));if(i.call(s,o))return l(e.get(o));e!==s&&e.get(t)}function Qt(e,t=!1){const n=this.__v_raw,r=J(n),s=J(e);return t||(Ze(e,s)&&_e(r,"has",e),_e(r,"has",s)),e===s?n.has(e):n.has(e)||n.has(s)}function Zt(e,t=!1){return e=e.__v_raw,!t&&_e(J(e),"iterate",ft),Reflect.get(e,"size",e)}function os(e){e=J(e);const t=J(this);return On(t).has.call(t,e)||(t.add(e),Ve(t,"add",e,e)),this}function is(e,t){t=J(t);const n=J(this),{has:r,get:s}=On(n);let o=r.call(n,e);o||(e=J(e),o=r.call(n,e));const i=s.call(n,e);return n.set(e,t),o?Ze(t,i)&&Ve(n,"set",e,t):Ve(n,"add",e,t),this}function ls(e){const t=J(this),{has:n,get:r}=On(t);let s=n.call(t,e);s||(e=J(e),s=n.call(t,e)),r&&r.call(t,e);const o=t.delete(e);return s&&Ve(t,"delete",e,void 0),o}function cs(){const e=J(this),t=e.size!==0,n=e.clear();return t&&Ve(e,"clear",void 0,void 0),n}function en(e,t){return function(r,s){const o=this,i=o.__v_raw,l=J(i),c=t?Pr:e?$r:Vt;return!e&&_e(l,"iterate",ft),i.forEach((a,f)=>r.call(s,c(a),c(f),o))}}function tn(e,t,n){return function(...r){const s=this.__v_raw,o=J(s),i=bt(o),l=e==="entries"||e===Symbol.iterator&&i,c=e==="keys"&&i,a=s[e](...r),f=n?Pr:t?$r:Vt;return!t&&_e(o,"iterate",c?fr:ft),{next(){const{value:h,done:p}=a.next();return p?{value:h,done:p}:{value:l?[f(h[0]),f(h[1])]:f(h),done:p}},[Symbol.iterator](){return this}}}}function Be(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Ji(){const e={get(o){return Jt(this,o)},get size(){return Zt(this)},has:Qt,add:os,set:is,delete:ls,clear:cs,forEach:en(!1,!1)},t={get(o){return Jt(this,o,!1,!0)},get size(){return Zt(this)},has:Qt,add:os,set:is,delete:ls,clear:cs,forEach:en(!1,!0)},n={get(o){return Jt(this,o,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:en(!0,!1)},r={get(o){return Jt(this,o,!0,!0)},get size(){return Zt(this,!0)},has(o){return Qt.call(this,o,!0)},add:Be("add"),set:Be("set"),delete:Be("delete"),clear:Be("clear"),forEach:en(!0,!0)};return["keys","values","entries",Symbol.iterator].forEach(o=>{e[o]=tn(o,!1,!1),n[o]=tn(o,!0,!1),t[o]=tn(o,!1,!0),r[o]=tn(o,!0,!0)}),[e,n,t,r]}const[Qi,Zi,el,tl]=Ji();function Nr(e,t){const n=t?e?tl:el:e?Zi:Qi;return(r,s,o)=>s==="__v_isReactive"?!e:s==="__v_isReadonly"?e:s==="__v_raw"?r:Reflect.get(Y(n,s)&&s in r?n:r,s,o)}const nl={get:Nr(!1,!1)},rl={get:Nr(!1,!0)},sl={get:Nr(!0,!1)},go=new WeakMap,mo=new WeakMap,yo=new WeakMap,ol=new WeakMap;function il(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function ll(e){return e.__v_skip||!Object.isExtensible(e)?0:il(Oi(e))}function Ln(e){return jt(e)?e:Fr(e,!1,zi,nl,go)}function cl(e){return Fr(e,!1,Yi,rl,mo)}function In(e){return Fr(e,!0,Xi,sl,yo)}function Fr(e,t,n,r,s){if(!Z(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const o=s.get(e);if(o)return o;const i=ll(e);if(i===0)return e;const l=new Proxy(e,i===2?r:n);return s.set(e,l),l}function Lt(e){return jt(e)?Lt(e.__v_raw):!!(e&&e.__v_isReactive)}function jt(e){return!!(e&&e.__v_isReadonly)}function vn(e){return!!(e&&e.__v_isShallow)}function _o(e){return e?!!e.__v_raw:!1}function J(e){const t=e&&e.__v_raw;return t?J(t):e}function pn(e){return Object.isExtensible(e)&&to(e,"__v_skip",!0),e}const Vt=e=>Z(e)?Ln(e):e,$r=e=>Z(e)?In(e):e;class vo{constructor(t,n,r,s){this.getter=t,this._setter=n,this.dep=void 0,this.__v_isRef=!0,this.__v_isReadonly=!1,this.effect=new Lr(()=>t(this._value),()=>It(this,this.effect._dirtyLevel===2?2:3)),this.effect.computed=this,this.effect.active=this._cacheable=!s,this.__v_isReadonly=r}get value(){const t=J(this);return(!t._cacheable||t.effect.dirty)&&Ze(t._value,t._value=t.effect.run())&&It(t,4),Hr(t),t.effect._dirtyLevel>=2&&It(t,2),t._value}set value(t){this._setter(t)}get _dirty(){return this.effect.dirty}set _dirty(t){this.effect.dirty=t}}function al(e,t,n=!1){let r,s;const o=q(e);return o?(r=e,s=xe):(r=e.get,s=e.set),new vo(r,s,o||!s,n)}function Hr(e){var t;Ye&&ut&&(e=J(e),co(ut,(t=e.dep)!=null?t:e.dep=uo(()=>e.dep=void 0,e instanceof vo?e:void 0)))}function It(e,t=4,n){e=J(e);const r=e.dep;r&&ao(r,t)}function de(e){return!!(e&&e.__v_isRef===!0)}function re(e){return bo(e,!1)}function jr(e){return bo(e,!0)}function bo(e,t){return de(e)?e:new ul(e,t)}class ul{constructor(t,n){this.__v_isShallow=n,this.dep=void 0,this.__v_isRef=!0,this._rawValue=n?t:J(t),this._value=n?t:Vt(t)}get value(){return Hr(this),this._value}set value(t){const n=this.__v_isShallow||vn(t)||jt(t);t=n?t:J(t),Ze(t,this._rawValue)&&(this._rawValue=t,this._value=n?t:Vt(t),It(this,4))}}function wo(e){return de(e)?e.value:e}const fl={get:(e,t,n)=>wo(Reflect.get(e,t,n)),set:(e,t,n,r)=>{const s=e[t];return de(s)&&!de(n)?(s.value=n,!0):Reflect.set(e,t,n,r)}};function Eo(e){return Lt(e)?e:new Proxy(e,fl)}class dl{constructor(t){this.dep=void 0,this.__v_isRef=!0;const{get:n,set:r}=t(()=>Hr(this),()=>It(this));this._get=n,this._set=r}get value(){return this._get()}set value(t){this._set(t)}}function hl(e){return new dl(e)}class pl{constructor(t,n,r){this._object=t,this._key=n,this._defaultValue=r,this.__v_isRef=!0}get value(){const t=this._object[this._key];return t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return ki(J(this._object),this._key)}}class gl{constructor(t){this._getter=t,this.__v_isRef=!0,this.__v_isReadonly=!0}get value(){return this._getter()}}function ml(e,t,n){return de(e)?e:q(e)?new gl(e):Z(e)&&arguments.length>1?yl(e,t,n):re(e)}function yl(e,t,n){const r=e[t];return de(r)?r:new pl(e,t,n)}/** -* @vue/runtime-core v3.4.23 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/function Je(e,t,n,r){try{return r?e(...r):e()}catch(s){Wt(s,t,n)}}function Se(e,t,n,r){if(q(e)){const s=Je(e,t,n,r);return s&&Qs(s)&&s.catch(o=>{Wt(o,t,n)}),s}if(B(e)){const s=[];for(let o=0;o>>1,s=he[r],o=Ut(s);oPe&&he.splice(t,1)}function wl(e){B(e)?Et.push(...e):(!qe||!qe.includes(e,e.allowRecurse?lt+1:lt))&&Et.push(e),xo()}function as(e,t,n=Dt?Pe+1:0){for(;nUt(n)-Ut(r));if(Et.length=0,qe){qe.push(...t);return}for(qe=t,lt=0;lte.id==null?1/0:e.id,El=(e,t)=>{const n=Ut(e)-Ut(t);if(n===0){if(e.pre&&!t.pre)return-1;if(t.pre&&!e.pre)return 1}return n};function So(e){dr=!1,Dt=!0,he.sort(El);try{for(Pe=0;Pese(y)?y.trim():y)),h&&(s=n.map(cr))}let l,c=r[l=dn(t)]||r[l=dn($e(t))];!c&&o&&(c=r[l=dn(pt(t))]),c&&Se(c,e,6,s);const a=r[l+"Once"];if(a){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Se(a,e,6,s)}}function To(e,t,n=!1){const r=t.emitsCache,s=r.get(e);if(s!==void 0)return s;const o=e.emits;let i={},l=!1;if(!q(e)){const c=a=>{const f=To(a,t,!0);f&&(l=!0,ce(i,f))};!n&&t.mixins.length&&t.mixins.forEach(c),e.extends&&c(e.extends),e.mixins&&e.mixins.forEach(c)}return!o&&!l?(Z(e)&&r.set(e,null),null):(B(o)?o.forEach(c=>i[c]=null):ce(i,o),Z(e)&&r.set(e,i),i)}function Nn(e,t){return!e||!Kt(t)?!1:(t=t.slice(2).replace(/Once$/,""),Y(e,t[0].toLowerCase()+t.slice(1))||Y(e,pt(t))||Y(e,t))}let le=null,Fn=null;function wn(e){const t=le;return le=e,Fn=e&&e.type.__scopeId||null,t}function eu(e){Fn=e}function tu(){Fn=null}function xl(e,t=le,n){if(!t||e._n)return e;const r=(...s)=>{r._d&&Cs(-1);const o=wn(t);let i;try{i=e(...s)}finally{wn(o),r._d&&Cs(1)}return i};return r._n=!0,r._c=!0,r._d=!0,r}function Wn(e){const{type:t,vnode:n,proxy:r,withProxy:s,props:o,propsOptions:[i],slots:l,attrs:c,emit:a,render:f,renderCache:h,data:p,setupState:y,ctx:w,inheritAttrs:I}=e;let N,K;const k=wn(e);try{if(n.shapeFlag&4){const _=s||r,M=_;N=Re(f.call(M,_,h,o,y,p,w)),K=c}else{const _=t;N=Re(_.length>1?_(o,{attrs:c,slots:l,emit:a}):_(o,null)),K=t.props?c:Sl(c)}}catch(_){$t.length=0,Wt(_,e,1),N=oe(we)}let g=N;if(K&&I!==!1){const _=Object.keys(K),{shapeFlag:M}=g;_.length&&M&7&&(i&&_.some(Sr)&&(K=Tl(K,i)),g=et(g,K))}return n.dirs&&(g=et(g),g.dirs=g.dirs?g.dirs.concat(n.dirs):n.dirs),n.transition&&(g.transition=n.transition),N=g,wn(k),N}const Sl=e=>{let t;for(const n in e)(n==="class"||n==="style"||Kt(n))&&((t||(t={}))[n]=e[n]);return t},Tl=(e,t)=>{const n={};for(const r in e)(!Sr(r)||!(r.slice(9)in t))&&(n[r]=e[r]);return n};function Al(e,t,n){const{props:r,children:s,component:o}=e,{props:i,children:l,patchFlag:c}=t,a=o.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&c>=0){if(c&1024)return!0;if(c&16)return r?us(r,i,a):!!i;if(c&8){const f=t.dynamicProps;for(let h=0;he.__isSuspense;function Oo(e,t){t&&t.pendingBranch?B(e)?t.effects.push(...e):t.effects.push(e):wl(e)}const Ll=Symbol.for("v-scx"),Il=()=>xt(Ll);function Ur(e,t){return $n(e,null,t)}function su(e,t){return $n(e,null,{flush:"post"})}const nn={};function Ne(e,t,n){return $n(e,t,n)}function $n(e,t,{immediate:n,deep:r,flush:s,once:o,onTrack:i,onTrigger:l}=ee){if(t&&o){const O=t;t=(...F)=>{O(...F),M()}}const c=ue,a=O=>r===!0?O:at(O,r===!1?1:void 0);let f,h=!1,p=!1;if(de(e)?(f=()=>e.value,h=vn(e)):Lt(e)?(f=()=>a(e),h=!0):B(e)?(p=!0,h=e.some(O=>Lt(O)||vn(O)),f=()=>e.map(O=>{if(de(O))return O.value;if(Lt(O))return a(O);if(q(O))return Je(O,c,2)})):q(e)?t?f=()=>Je(e,c,2):f=()=>(y&&y(),Se(e,c,3,[w])):f=xe,t&&r){const O=f;f=()=>at(O())}let y,w=O=>{y=g.onStop=()=>{Je(O,c,4),y=g.onStop=void 0}},I;if(zt)if(w=xe,t?n&&Se(t,c,3,[f(),p?[]:void 0,w]):f(),s==="sync"){const O=Il();I=O.__watcherHandles||(O.__watcherHandles=[])}else return xe;let N=p?new Array(e.length).fill(nn):nn;const K=()=>{if(!(!g.active||!g.dirty))if(t){const O=g.run();(r||h||(p?O.some((F,T)=>Ze(F,N[T])):Ze(O,N)))&&(y&&y(),Se(t,c,3,[O,N===nn?void 0:p&&N[0]===nn?[]:N,w]),N=O)}else g.run()};K.allowRecurse=!!t;let k;s==="sync"?k=K:s==="post"?k=()=>me(K,c&&c.suspense):(K.pre=!0,c&&(K.id=c.uid),k=()=>Pn(K));const g=new Lr(f,xe,k),_=oo(),M=()=>{g.stop(),_&&Tr(_.effects,g)};return t?n?K():N=g.run():s==="post"?me(g.run.bind(g),c&&c.suspense):g.run(),I&&I.push(M),M}function Ml(e,t,n){const r=this.proxy,s=se(e)?e.includes(".")?Lo(r,e):()=>r[e]:e.bind(r,r);let o;q(t)?o=t:(o=t.handler,n=t);const i=Gt(this),l=$n(s,o.bind(r),n);return i(),l}function Lo(e,t){const n=t.split(".");return()=>{let r=e;for(let s=0;s0){if(n>=t)return e;n++}if(r=r||new Set,r.has(e))return e;if(r.add(e),de(e))at(e.value,t,n,r);else if(B(e))for(let s=0;s{at(s,t,n,r)});else if(eo(e))for(const s in e)at(e[s],t,n,r);return e}function ou(e,t){if(le===null)return e;const n=Dn(le)||le.proxy,r=e.dirs||(e.dirs=[]);for(let s=0;s{e.isMounted=!0}),Fo(()=>{e.isUnmounting=!0}),e}const Ee=[Function,Array],Io={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ee,onEnter:Ee,onAfterEnter:Ee,onEnterCancelled:Ee,onBeforeLeave:Ee,onLeave:Ee,onAfterLeave:Ee,onLeaveCancelled:Ee,onBeforeAppear:Ee,onAppear:Ee,onAfterAppear:Ee,onAppearCancelled:Ee},Nl={name:"BaseTransition",props:Io,setup(e,{slots:t}){const n=Vn(),r=Pl();return()=>{const s=t.default&&Po(t.default(),!0);if(!s||!s.length)return;let o=s[0];if(s.length>1){for(const p of s)if(p.type!==we){o=p;break}}const i=J(e),{mode:l}=i;if(r.isLeaving)return qn(o);const c=ds(o);if(!c)return qn(o);const a=hr(c,i,r,n);pr(c,a);const f=n.subTree,h=f&&ds(f);if(h&&h.type!==we&&!ct(c,h)){const p=hr(h,i,r,n);if(pr(h,p),l==="out-in")return r.isLeaving=!0,p.afterLeave=()=>{r.isLeaving=!1,n.update.active!==!1&&(n.effect.dirty=!0,n.update())},qn(o);l==="in-out"&&c.type!==we&&(p.delayLeave=(y,w,I)=>{const N=Mo(r,h);N[String(h.key)]=h,y[Ge]=()=>{w(),y[Ge]=void 0,delete a.delayedLeave},a.delayedLeave=I})}return o}}},Fl=Nl;function Mo(e,t){const{leavingVNodes:n}=e;let r=n.get(t.type);return r||(r=Object.create(null),n.set(t.type,r)),r}function hr(e,t,n,r){const{appear:s,mode:o,persisted:i=!1,onBeforeEnter:l,onEnter:c,onAfterEnter:a,onEnterCancelled:f,onBeforeLeave:h,onLeave:p,onAfterLeave:y,onLeaveCancelled:w,onBeforeAppear:I,onAppear:N,onAfterAppear:K,onAppearCancelled:k}=t,g=String(e.key),_=Mo(n,e),M=(T,$)=>{T&&Se(T,r,9,$)},O=(T,$)=>{const E=$[1];M(T,$),B(T)?T.every(j=>j.length<=1)&&E():T.length<=1&&E()},F={mode:o,persisted:i,beforeEnter(T){let $=l;if(!n.isMounted)if(s)$=I||l;else return;T[Ge]&&T[Ge](!0);const E=_[g];E&&ct(e,E)&&E.el[Ge]&&E.el[Ge](),M($,[T])},enter(T){let $=c,E=a,j=f;if(!n.isMounted)if(s)$=N||c,E=K||a,j=k||f;else return;let A=!1;const G=T[rn]=ie=>{A||(A=!0,ie?M(j,[T]):M(E,[T]),F.delayedLeave&&F.delayedLeave(),T[rn]=void 0)};$?O($,[T,G]):G()},leave(T,$){const E=String(e.key);if(T[rn]&&T[rn](!0),n.isUnmounting)return $();M(h,[T]);let j=!1;const A=T[Ge]=G=>{j||(j=!0,$(),G?M(w,[T]):M(y,[T]),T[Ge]=void 0,_[E]===e&&delete _[E])};_[E]=e,p?O(p,[T,A]):A()},clone(T){return hr(T,t,n,r)}};return F}function qn(e){if(qt(e))return e=et(e),e.children=null,e}function ds(e){return qt(e)?e.children?e.children[0]:void 0:e}function pr(e,t){e.shapeFlag&6&&e.component?pr(e.component.subTree,t):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function Po(e,t=!1,n){let r=[],s=0;for(let o=0;o1)for(let o=0;o!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function iu(e){q(e)&&(e={loader:e});const{loader:t,loadingComponent:n,errorComponent:r,delay:s=200,timeout:o,suspensible:i=!0,onError:l}=e;let c=null,a,f=0;const h=()=>(f++,c=null,p()),p=()=>{let y;return c||(y=c=t().catch(w=>{if(w=w instanceof Error?w:new Error(String(w)),l)return new Promise((I,N)=>{l(w,()=>I(h()),()=>N(w),f+1)});throw w}).then(w=>y!==c&&c?c:(w&&(w.__esModule||w[Symbol.toStringTag]==="Module")&&(w=w.default),a=w,w)))};return Br({name:"AsyncComponentWrapper",__asyncLoader:p,get __asyncResolved(){return a},setup(){const y=ue;if(a)return()=>Gn(a,y);const w=k=>{c=null,Wt(k,y,13,!r)};if(i&&y.suspense||zt)return p().then(k=>()=>Gn(k,y)).catch(k=>(w(k),()=>r?oe(r,{error:k}):null));const I=re(!1),N=re(),K=re(!!s);return s&&setTimeout(()=>{K.value=!1},s),o!=null&&setTimeout(()=>{if(!I.value&&!N.value){const k=new Error(`Async component timed out after ${o}ms.`);w(k),N.value=k}},o),p().then(()=>{I.value=!0,y.parent&&qt(y.parent.vnode)&&(y.parent.effect.dirty=!0,Pn(y.parent.update))}).catch(k=>{w(k),N.value=k}),()=>{if(I.value&&a)return Gn(a,y);if(N.value&&r)return oe(r,{error:N.value});if(n&&!K.value)return oe(n)}}})}function Gn(e,t){const{ref:n,props:r,children:s,ce:o}=t.vnode,i=oe(e,r,s);return i.ref=n,i.ce=o,delete t.vnode.ce,i}const qt=e=>e.type.__isKeepAlive;function $l(e,t){No(e,"a",t)}function Hl(e,t){No(e,"da",t)}function No(e,t,n=ue){const r=e.__wdc||(e.__wdc=()=>{let s=n;for(;s;){if(s.isDeactivated)return;s=s.parent}return e()});if(Hn(t,r,n),n){let s=n.parent;for(;s&&s.parent;)qt(s.parent.vnode)&&jl(r,t,n,s),s=s.parent}}function jl(e,t,n,r){const s=Hn(t,e,r,!0);jn(()=>{Tr(r[t],s)},n)}function Hn(e,t,n=ue,r=!1){if(n){const s=n[e]||(n[e]=[]),o=t.__weh||(t.__weh=(...i)=>{if(n.isUnmounted)return;tt();const l=Gt(n),c=Se(t,n,e,i);return l(),nt(),c});return r?s.unshift(o):s.push(o),o}}const Ue=e=>(t,n=ue)=>(!zt||e==="sp")&&Hn(e,(...r)=>t(...r),n),Vl=Ue("bm"),Tt=Ue("m"),Dl=Ue("bu"),Ul=Ue("u"),Fo=Ue("bum"),jn=Ue("um"),Bl=Ue("sp"),kl=Ue("rtg"),Kl=Ue("rtc");function Wl(e,t=ue){Hn("ec",e,t)}function lu(e,t,n,r){let s;const o=n;if(B(e)||se(e)){s=new Array(e.length);for(let i=0,l=e.length;it(i,l,void 0,o));else{const i=Object.keys(e);s=new Array(i.length);for(let l=0,c=i.length;lxn(t)?!(t.type===we||t.type===ye&&!$o(t.children)):!0)?e:null}function au(e,t){const n={};for(const r in e)n[/[A-Z]/.test(r)?`on:${r}`:dn(r)]=e[r];return n}const gr=e=>e?ni(e)?Dn(e)||e.proxy:gr(e.parent):null,Mt=ce(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>gr(e.parent),$root:e=>gr(e.root),$emit:e=>e.emit,$options:e=>kr(e),$forceUpdate:e=>e.f||(e.f=()=>{e.effect.dirty=!0,Pn(e.update)}),$nextTick:e=>e.n||(e.n=Mn.bind(e.proxy)),$watch:e=>Ml.bind(e)}),zn=(e,t)=>e!==ee&&!e.__isScriptSetup&&Y(e,t),ql={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:r,data:s,props:o,accessCache:i,type:l,appContext:c}=e;let a;if(t[0]!=="$"){const y=i[t];if(y!==void 0)switch(y){case 1:return r[t];case 2:return s[t];case 4:return n[t];case 3:return o[t]}else{if(zn(r,t))return i[t]=1,r[t];if(s!==ee&&Y(s,t))return i[t]=2,s[t];if((a=e.propsOptions[0])&&Y(a,t))return i[t]=3,o[t];if(n!==ee&&Y(n,t))return i[t]=4,n[t];mr&&(i[t]=0)}}const f=Mt[t];let h,p;if(f)return t==="$attrs"&&_e(e.attrs,"get",""),f(e);if((h=l.__cssModules)&&(h=h[t]))return h;if(n!==ee&&Y(n,t))return i[t]=4,n[t];if(p=c.config.globalProperties,Y(p,t))return p[t]},set({_:e},t,n){const{data:r,setupState:s,ctx:o}=e;return zn(s,t)?(s[t]=n,!0):r!==ee&&Y(r,t)?(r[t]=n,!0):Y(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(o[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:r,appContext:s,propsOptions:o}},i){let l;return!!n[i]||e!==ee&&Y(e,i)||zn(t,i)||(l=o[0])&&Y(l,i)||Y(r,i)||Y(Mt,i)||Y(s.config.globalProperties,i)},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:Y(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function uu(){return Gl().slots}function Gl(){const e=Vn();return e.setupContext||(e.setupContext=si(e))}function hs(e){return B(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let mr=!0;function zl(e){const t=kr(e),n=e.proxy,r=e.ctx;mr=!1,t.beforeCreate&&ps(t.beforeCreate,e,"bc");const{data:s,computed:o,methods:i,watch:l,provide:c,inject:a,created:f,beforeMount:h,mounted:p,beforeUpdate:y,updated:w,activated:I,deactivated:N,beforeDestroy:K,beforeUnmount:k,destroyed:g,unmounted:_,render:M,renderTracked:O,renderTriggered:F,errorCaptured:T,serverPrefetch:$,expose:E,inheritAttrs:j,components:A,directives:G,filters:ie}=t;if(a&&Xl(a,r,null),i)for(const X in i){const V=i[X];q(V)&&(r[X]=V.bind(n))}if(s){const X=s.call(n,n);Z(X)&&(e.data=Ln(X))}if(mr=!0,o)for(const X in o){const V=o[X],He=q(V)?V.bind(n,n):q(V.get)?V.get.bind(n,n):xe,Xt=!q(V)&&q(V.set)?V.set.bind(n):xe,rt=ne({get:He,set:Xt});Object.defineProperty(r,X,{enumerable:!0,configurable:!0,get:()=>rt.value,set:Le=>rt.value=Le})}if(l)for(const X in l)Ho(l[X],r,n,X);if(c){const X=q(c)?c.call(n):c;Reflect.ownKeys(X).forEach(V=>{tc(V,X[V])})}f&&ps(f,e,"c");function D(X,V){B(V)?V.forEach(He=>X(He.bind(n))):V&&X(V.bind(n))}if(D(Vl,h),D(Tt,p),D(Dl,y),D(Ul,w),D($l,I),D(Hl,N),D(Wl,T),D(Kl,O),D(kl,F),D(Fo,k),D(jn,_),D(Bl,$),B(E))if(E.length){const X=e.exposed||(e.exposed={});E.forEach(V=>{Object.defineProperty(X,V,{get:()=>n[V],set:He=>n[V]=He})})}else e.exposed||(e.exposed={});M&&e.render===xe&&(e.render=M),j!=null&&(e.inheritAttrs=j),A&&(e.components=A),G&&(e.directives=G)}function Xl(e,t,n=xe){B(e)&&(e=yr(e));for(const r in e){const s=e[r];let o;Z(s)?"default"in s?o=xt(s.from||r,s.default,!0):o=xt(s.from||r):o=xt(s),de(o)?Object.defineProperty(t,r,{enumerable:!0,configurable:!0,get:()=>o.value,set:i=>o.value=i}):t[r]=o}}function ps(e,t,n){Se(B(e)?e.map(r=>r.bind(t.proxy)):e.bind(t.proxy),t,n)}function Ho(e,t,n,r){const s=r.includes(".")?Lo(n,r):()=>n[r];if(se(e)){const o=t[e];q(o)&&Ne(s,o)}else if(q(e))Ne(s,e.bind(n));else if(Z(e))if(B(e))e.forEach(o=>Ho(o,t,n,r));else{const o=q(e.handler)?e.handler.bind(n):t[e.handler];q(o)&&Ne(s,o,e)}}function kr(e){const t=e.type,{mixins:n,extends:r}=t,{mixins:s,optionsCache:o,config:{optionMergeStrategies:i}}=e.appContext,l=o.get(t);let c;return l?c=l:!s.length&&!n&&!r?c=t:(c={},s.length&&s.forEach(a=>En(c,a,i,!0)),En(c,t,i)),Z(t)&&o.set(t,c),c}function En(e,t,n,r=!1){const{mixins:s,extends:o}=t;o&&En(e,o,n,!0),s&&s.forEach(i=>En(e,i,n,!0));for(const i in t)if(!(r&&i==="expose")){const l=Yl[i]||n&&n[i];e[i]=l?l(e[i],t[i]):t[i]}return e}const Yl={data:gs,props:ms,emits:ms,methods:Ot,computed:Ot,beforeCreate:pe,created:pe,beforeMount:pe,mounted:pe,beforeUpdate:pe,updated:pe,beforeDestroy:pe,beforeUnmount:pe,destroyed:pe,unmounted:pe,activated:pe,deactivated:pe,errorCaptured:pe,serverPrefetch:pe,components:Ot,directives:Ot,watch:Ql,provide:gs,inject:Jl};function gs(e,t){return t?e?function(){return ce(q(e)?e.call(this,this):e,q(t)?t.call(this,this):t)}:t:e}function Jl(e,t){return Ot(yr(e),yr(t))}function yr(e){if(B(e)){const t={};for(let n=0;n1)return n&&q(t)?t.call(r&&r.proxy):t}}const Vo=Object.create(null),_r=()=>Object.create(Vo),Do=e=>Object.getPrototypeOf(e)===Vo;function nc(e,t,n,r=!1){const s={},o=_r();e.propsDefaults=Object.create(null),Uo(e,t,s,o);for(const i in e.propsOptions[0])i in s||(s[i]=void 0);n?e.props=r?s:cl(s):e.type.props?e.props=s:e.props=o,e.attrs=o}function rc(e,t,n,r){const{props:s,attrs:o,vnode:{patchFlag:i}}=e,l=J(s),[c]=e.propsOptions;let a=!1;if((r||i>0)&&!(i&16)){if(i&8){const f=e.vnode.dynamicProps;for(let h=0;h{c=!0;const[p,y]=Bo(h,t,!0);ce(i,p),y&&l.push(...y)};!n&&t.mixins.length&&t.mixins.forEach(f),e.extends&&f(e.extends),e.mixins&&e.mixins.forEach(f)}if(!o&&!c)return Z(e)&&r.set(e,vt),vt;if(B(o))for(let f=0;f-1,y[1]=I<0||w-1||Y(y,"default"))&&l.push(h)}}}const a=[i,l];return Z(e)&&r.set(e,a),a}function ys(e){return e[0]!=="$"&&!wt(e)}function _s(e){return e===null?"null":typeof e=="function"?e.name||"":typeof e=="object"&&e.constructor&&e.constructor.name||""}function vs(e,t){return _s(e)===_s(t)}function bs(e,t){return B(t)?t.findIndex(n=>vs(n,e)):q(t)&&vs(t,e)?0:-1}const ko=e=>e[0]==="_"||e==="$stable",Kr=e=>B(e)?e.map(Re):[Re(e)],sc=(e,t,n)=>{if(t._n)return t;const r=xl((...s)=>Kr(t(...s)),n);return r._c=!1,r},Ko=(e,t,n)=>{const r=e._ctx;for(const s in e){if(ko(s))continue;const o=e[s];if(q(o))t[s]=sc(s,o,r);else if(o!=null){const i=Kr(o);t[s]=()=>i}}},Wo=(e,t)=>{const n=Kr(t);e.slots.default=()=>n},oc=(e,t)=>{if(e.vnode.shapeFlag&32){const n=t._;n?(e.slots=J(t),to(e.slots,"_",n)):Ko(t,e.slots=_r())}else e.slots=_r(),t&&Wo(e,t)},ic=(e,t,n)=>{const{vnode:r,slots:s}=e;let o=!0,i=ee;if(r.shapeFlag&32){const l=t._;l?n&&l===1?o=!1:(ce(s,t),!n&&l===1&&delete s._):(o=!t.$stable,Ko(t,s)),i=t}else t&&(Wo(e,t),i={default:1});if(o)for(const l in s)!ko(l)&&i[l]==null&&delete s[l]};function Cn(e,t,n,r,s=!1){if(B(e)){e.forEach((p,y)=>Cn(p,t&&(B(t)?t[y]:t),n,r,s));return}if(Ct(r)&&!s)return;const o=r.shapeFlag&4?Dn(r.component)||r.component.proxy:r.el,i=s?null:o,{i:l,r:c}=e,a=t&&t.r,f=l.refs===ee?l.refs={}:l.refs,h=l.setupState;if(a!=null&&a!==c&&(se(a)?(f[a]=null,Y(h,a)&&(h[a]=null)):de(a)&&(a.value=null)),q(c))Je(c,l,12,[i,f]);else{const p=se(c),y=de(c);if(p||y){const w=()=>{if(e.f){const I=p?Y(h,c)?h[c]:f[c]:c.value;s?B(I)&&Tr(I,o):B(I)?I.includes(o)||I.push(o):p?(f[c]=[o],Y(h,c)&&(h[c]=f[c])):(c.value=[o],e.k&&(f[e.k]=c.value))}else p?(f[c]=i,Y(h,c)&&(h[c]=i)):y&&(c.value=i,e.k&&(f[e.k]=i))};i?(w.id=-1,me(w,n)):w()}}}let ke=!1;const lc=e=>e.namespaceURI.includes("svg")&&e.tagName!=="foreignObject",cc=e=>e.namespaceURI.includes("MathML"),sn=e=>{if(lc(e))return"svg";if(cc(e))return"mathml"},on=e=>e.nodeType===8;function ac(e){const{mt:t,p:n,o:{patchProp:r,createText:s,nextSibling:o,parentNode:i,remove:l,insert:c,createComment:a}}=e,f=(g,_)=>{if(!_.hasChildNodes()){n(null,g,_),bn(),_._vnode=g;return}ke=!1,h(_.firstChild,g,null,null,null),bn(),_._vnode=g,ke&&console.error("Hydration completed but contains mismatches.")},h=(g,_,M,O,F,T=!1)=>{T=T||!!_.dynamicChildren;const $=on(g)&&g.data==="[",E=()=>I(g,_,M,O,F,$),{type:j,ref:A,shapeFlag:G,patchFlag:ie}=_;let fe=g.nodeType;_.el=g,ie===-2&&(T=!1,_.dynamicChildren=null);let D=null;switch(j){case St:fe!==3?_.children===""?(c(_.el=s(""),i(g),g),D=g):D=E():(g.data!==_.children&&(ke=!0,g.data=_.children),D=o(g));break;case we:k(g)?(D=o(g),K(_.el=g.content.firstChild,g,M)):fe!==8||$?D=E():D=o(g);break;case Ft:if($&&(g=o(g),fe=g.nodeType),fe===1||fe===3){D=g;const X=!_.children.length;for(let V=0;V<_.staticCount;V++)X&&(_.children+=D.nodeType===1?D.outerHTML:D.data),V===_.staticCount-1&&(_.anchor=D),D=o(D);return $?o(D):D}else E();break;case ye:$?D=w(g,_,M,O,F,T):D=E();break;default:if(G&1)(fe!==1||_.type.toLowerCase()!==g.tagName.toLowerCase())&&!k(g)?D=E():D=p(g,_,M,O,F,T);else if(G&6){_.slotScopeIds=F;const X=i(g);if($?D=N(g):on(g)&&g.data==="teleport start"?D=N(g,g.data,"teleport end"):D=o(g),t(_,X,null,M,O,sn(X),T),Ct(_)){let V;$?(V=oe(ye),V.anchor=D?D.previousSibling:X.lastChild):V=g.nodeType===3?ti(""):oe("div"),V.el=g,_.component.subTree=V}}else G&64?fe!==8?D=E():D=_.type.hydrate(g,_,M,O,F,T,e,y):G&128&&(D=_.type.hydrate(g,_,M,O,sn(i(g)),F,T,e,h))}return A!=null&&Cn(A,null,O,_),D},p=(g,_,M,O,F,T)=>{T=T||!!_.dynamicChildren;const{type:$,props:E,patchFlag:j,shapeFlag:A,dirs:G,transition:ie}=_,fe=$==="input"||$==="option";if(fe||j!==-1){G&&Me(_,null,M,"created");let D=!1;if(k(g)){D=Go(O,ie)&&M&&M.vnode.props&&M.vnode.props.appear;const V=g.content.firstChild;D&&ie.beforeEnter(V),K(V,g,M),_.el=g=V}if(A&16&&!(E&&(E.innerHTML||E.textContent))){let V=y(g.firstChild,_,g,M,O,F,T);for(;V;){ke=!0;const He=V;V=V.nextSibling,l(He)}}else A&8&&g.textContent!==_.children&&(ke=!0,g.textContent=_.children);if(E)if(fe||!T||j&48)for(const V in E)(fe&&(V.endsWith("value")||V==="indeterminate")||Kt(V)&&!wt(V)||V[0]===".")&&r(g,V,null,E[V],void 0,void 0,M);else E.onClick&&r(g,"onClick",null,E.onClick,void 0,void 0,M);let X;(X=E&&E.onVnodeBeforeMount)&&Ce(X,M,_),G&&Me(_,null,M,"beforeMount"),((X=E&&E.onVnodeMounted)||G||D)&&Oo(()=>{X&&Ce(X,M,_),D&&ie.enter(g),G&&Me(_,null,M,"mounted")},O)}return g.nextSibling},y=(g,_,M,O,F,T,$)=>{$=$||!!_.dynamicChildren;const E=_.children,j=E.length;for(let A=0;A{const{slotScopeIds:$}=_;$&&(F=F?F.concat($):$);const E=i(g),j=y(o(g),_,E,M,O,F,T);return j&&on(j)&&j.data==="]"?o(_.anchor=j):(ke=!0,c(_.anchor=a("]"),E,j),j)},I=(g,_,M,O,F,T)=>{if(ke=!0,_.el=null,T){const j=N(g);for(;;){const A=o(g);if(A&&A!==j)l(A);else break}}const $=o(g),E=i(g);return l(g),n(null,_,E,$,M,O,sn(E),F),$},N=(g,_="[",M="]")=>{let O=0;for(;g;)if(g=o(g),g&&on(g)&&(g.data===_&&O++,g.data===M)){if(O===0)return o(g);O--}return g},K=(g,_,M)=>{const O=_.parentNode;O&&O.replaceChild(g,_);let F=M;for(;F;)F.vnode.el===_&&(F.vnode.el=F.subTree.el=g),F=F.parent},k=g=>g.nodeType===1&&g.tagName.toLowerCase()==="template";return[f,h]}const me=Oo;function uc(e){return qo(e)}function fc(e){return qo(e,ac)}function qo(e,t){const n=no();n.__VUE__=!0;const{insert:r,remove:s,patchProp:o,createElement:i,createText:l,createComment:c,setText:a,setElementText:f,parentNode:h,nextSibling:p,setScopeId:y=xe,insertStaticContent:w}=e,I=(u,d,m,v=null,b=null,S=null,L=void 0,x=null,R=!!d.dynamicChildren)=>{if(u===d)return;u&&!ct(u,d)&&(v=Yt(u),Le(u,b,S,!0),u=null),d.patchFlag===-2&&(R=!1,d.dynamicChildren=null);const{type:C,ref:P,shapeFlag:U}=d;switch(C){case St:N(u,d,m,v);break;case we:K(u,d,m,v);break;case Ft:u==null&&k(d,m,v,L);break;case ye:A(u,d,m,v,b,S,L,x,R);break;default:U&1?M(u,d,m,v,b,S,L,x,R):U&6?G(u,d,m,v,b,S,L,x,R):(U&64||U&128)&&C.process(u,d,m,v,b,S,L,x,R,gt)}P!=null&&b&&Cn(P,u&&u.ref,S,d||u,!d)},N=(u,d,m,v)=>{if(u==null)r(d.el=l(d.children),m,v);else{const b=d.el=u.el;d.children!==u.children&&a(b,d.children)}},K=(u,d,m,v)=>{u==null?r(d.el=c(d.children||""),m,v):d.el=u.el},k=(u,d,m,v)=>{[u.el,u.anchor]=w(u.children,d,m,v,u.el,u.anchor)},g=({el:u,anchor:d},m,v)=>{let b;for(;u&&u!==d;)b=p(u),r(u,m,v),u=b;r(d,m,v)},_=({el:u,anchor:d})=>{let m;for(;u&&u!==d;)m=p(u),s(u),u=m;s(d)},M=(u,d,m,v,b,S,L,x,R)=>{d.type==="svg"?L="svg":d.type==="math"&&(L="mathml"),u==null?O(d,m,v,b,S,L,x,R):$(u,d,b,S,L,x,R)},O=(u,d,m,v,b,S,L,x)=>{let R,C;const{props:P,shapeFlag:U,transition:H,dirs:W}=u;if(R=u.el=i(u.type,S,P&&P.is,P),U&8?f(R,u.children):U&16&&T(u.children,R,null,v,b,Xn(u,S),L,x),W&&Me(u,null,v,"created"),F(R,u,u.scopeId,L,v),P){for(const Q in P)Q!=="value"&&!wt(Q)&&o(R,Q,null,P[Q],S,u.children,v,b,je);"value"in P&&o(R,"value",null,P.value,S),(C=P.onVnodeBeforeMount)&&Ce(C,v,u)}W&&Me(u,null,v,"beforeMount");const z=Go(b,H);z&&H.beforeEnter(R),r(R,d,m),((C=P&&P.onVnodeMounted)||z||W)&&me(()=>{C&&Ce(C,v,u),z&&H.enter(R),W&&Me(u,null,v,"mounted")},b)},F=(u,d,m,v,b)=>{if(m&&y(u,m),v)for(let S=0;S{for(let C=R;C{const x=d.el=u.el;let{patchFlag:R,dynamicChildren:C,dirs:P}=d;R|=u.patchFlag&16;const U=u.props||ee,H=d.props||ee;let W;if(m&&st(m,!1),(W=H.onVnodeBeforeUpdate)&&Ce(W,m,d,u),P&&Me(d,u,m,"beforeUpdate"),m&&st(m,!0),C?E(u.dynamicChildren,C,x,m,v,Xn(d,b),S):L||V(u,d,x,null,m,v,Xn(d,b),S,!1),R>0){if(R&16)j(x,d,U,H,m,v,b);else if(R&2&&U.class!==H.class&&o(x,"class",null,H.class,b),R&4&&o(x,"style",U.style,H.style,b),R&8){const z=d.dynamicProps;for(let Q=0;Q{W&&Ce(W,m,d,u),P&&Me(d,u,m,"updated")},v)},E=(u,d,m,v,b,S,L)=>{for(let x=0;x{if(m!==v){if(m!==ee)for(const x in m)!wt(x)&&!(x in v)&&o(u,x,m[x],null,L,d.children,b,S,je);for(const x in v){if(wt(x))continue;const R=v[x],C=m[x];R!==C&&x!=="value"&&o(u,x,C,R,L,d.children,b,S,je)}"value"in v&&o(u,"value",m.value,v.value,L)}},A=(u,d,m,v,b,S,L,x,R)=>{const C=d.el=u?u.el:l(""),P=d.anchor=u?u.anchor:l("");let{patchFlag:U,dynamicChildren:H,slotScopeIds:W}=d;W&&(x=x?x.concat(W):W),u==null?(r(C,m,v),r(P,m,v),T(d.children||[],m,P,b,S,L,x,R)):U>0&&U&64&&H&&u.dynamicChildren?(E(u.dynamicChildren,H,m,b,S,L,x),(d.key!=null||b&&d===b.subTree)&&Wr(u,d,!0)):V(u,d,m,P,b,S,L,x,R)},G=(u,d,m,v,b,S,L,x,R)=>{d.slotScopeIds=x,u==null?d.shapeFlag&512?b.ctx.activate(d,m,v,L,R):ie(d,m,v,b,S,L,R):fe(u,d,R)},ie=(u,d,m,v,b,S,L)=>{const x=u.component=Ec(u,v,b);if(qt(u)&&(x.ctx.renderer=gt),Cc(x),x.asyncDep){if(b&&b.registerDep(x,D),!u.el){const R=x.subTree=oe(we);K(null,R,d,m)}}else D(x,u,d,m,b,S,L)},fe=(u,d,m)=>{const v=d.component=u.component;if(Al(u,d,m))if(v.asyncDep&&!v.asyncResolved){X(v,d,m);return}else v.next=d,bl(v.update),v.effect.dirty=!0,v.update();else d.el=u.el,v.vnode=d},D=(u,d,m,v,b,S,L)=>{const x=()=>{if(u.isMounted){let{next:P,bu:U,u:H,parent:W,vnode:z}=u;{const mt=zo(u);if(mt){P&&(P.el=z.el,X(u,P,L)),mt.asyncDep.then(()=>{u.isUnmounted||x()});return}}let Q=P,te;st(u,!1),P?(P.el=z.el,X(u,P,L)):P=z,U&&hn(U),(te=P.props&&P.props.onVnodeBeforeUpdate)&&Ce(te,W,P,z),st(u,!0);const ae=Wn(u),Ae=u.subTree;u.subTree=ae,I(Ae,ae,h(Ae.el),Yt(Ae),u,b,S),P.el=ae.el,Q===null&&Rl(u,ae.el),H&&me(H,b),(te=P.props&&P.props.onVnodeUpdated)&&me(()=>Ce(te,W,P,z),b)}else{let P;const{el:U,props:H}=d,{bm:W,m:z,parent:Q}=u,te=Ct(d);if(st(u,!1),W&&hn(W),!te&&(P=H&&H.onVnodeBeforeMount)&&Ce(P,Q,d),st(u,!0),U&&kn){const ae=()=>{u.subTree=Wn(u),kn(U,u.subTree,u,b,null)};te?d.type.__asyncLoader().then(()=>!u.isUnmounted&&ae()):ae()}else{const ae=u.subTree=Wn(u);I(null,ae,m,v,u,b,S),d.el=ae.el}if(z&&me(z,b),!te&&(P=H&&H.onVnodeMounted)){const ae=d;me(()=>Ce(P,Q,ae),b)}(d.shapeFlag&256||Q&&Ct(Q.vnode)&&Q.vnode.shapeFlag&256)&&u.a&&me(u.a,b),u.isMounted=!0,d=m=v=null}},R=u.effect=new Lr(x,xe,()=>Pn(C),u.scope),C=u.update=()=>{R.dirty&&R.run()};C.id=u.uid,st(u,!0),C()},X=(u,d,m)=>{d.component=u;const v=u.vnode.props;u.vnode=d,u.next=null,rc(u,d.props,v,m),ic(u,d.children,m),tt(),as(u),nt()},V=(u,d,m,v,b,S,L,x,R=!1)=>{const C=u&&u.children,P=u?u.shapeFlag:0,U=d.children,{patchFlag:H,shapeFlag:W}=d;if(H>0){if(H&128){Xt(C,U,m,v,b,S,L,x,R);return}else if(H&256){He(C,U,m,v,b,S,L,x,R);return}}W&8?(P&16&&je(C,b,S),U!==C&&f(m,U)):P&16?W&16?Xt(C,U,m,v,b,S,L,x,R):je(C,b,S,!0):(P&8&&f(m,""),W&16&&T(U,m,v,b,S,L,x,R))},He=(u,d,m,v,b,S,L,x,R)=>{u=u||vt,d=d||vt;const C=u.length,P=d.length,U=Math.min(C,P);let H;for(H=0;HP?je(u,b,S,!0,!1,U):T(d,m,v,b,S,L,x,R,U)},Xt=(u,d,m,v,b,S,L,x,R)=>{let C=0;const P=d.length;let U=u.length-1,H=P-1;for(;C<=U&&C<=H;){const W=u[C],z=d[C]=R?ze(d[C]):Re(d[C]);if(ct(W,z))I(W,z,m,null,b,S,L,x,R);else break;C++}for(;C<=U&&C<=H;){const W=u[U],z=d[H]=R?ze(d[H]):Re(d[H]);if(ct(W,z))I(W,z,m,null,b,S,L,x,R);else break;U--,H--}if(C>U){if(C<=H){const W=H+1,z=WH)for(;C<=U;)Le(u[C],b,S,!0),C++;else{const W=C,z=C,Q=new Map;for(C=z;C<=H;C++){const ve=d[C]=R?ze(d[C]):Re(d[C]);ve.key!=null&&Q.set(ve.key,C)}let te,ae=0;const Ae=H-z+1;let mt=!1,Qr=0;const At=new Array(Ae);for(C=0;C=Ae){Le(ve,b,S,!0);continue}let Ie;if(ve.key!=null)Ie=Q.get(ve.key);else for(te=z;te<=H;te++)if(At[te-z]===0&&ct(ve,d[te])){Ie=te;break}Ie===void 0?Le(ve,b,S,!0):(At[Ie-z]=C+1,Ie>=Qr?Qr=Ie:mt=!0,I(ve,d[Ie],m,null,b,S,L,x,R),ae++)}const Zr=mt?dc(At):vt;for(te=Zr.length-1,C=Ae-1;C>=0;C--){const ve=z+C,Ie=d[ve],es=ve+1{const{el:S,type:L,transition:x,children:R,shapeFlag:C}=u;if(C&6){rt(u.component.subTree,d,m,v);return}if(C&128){u.suspense.move(d,m,v);return}if(C&64){L.move(u,d,m,gt);return}if(L===ye){r(S,d,m);for(let U=0;Ux.enter(S),b);else{const{leave:U,delayLeave:H,afterLeave:W}=x,z=()=>r(S,d,m),Q=()=>{U(S,()=>{z(),W&&W()})};H?H(S,z,Q):Q()}else r(S,d,m)},Le=(u,d,m,v=!1,b=!1)=>{const{type:S,props:L,ref:x,children:R,dynamicChildren:C,shapeFlag:P,patchFlag:U,dirs:H}=u;if(x!=null&&Cn(x,null,m,u,!0),P&256){d.ctx.deactivate(u);return}const W=P&1&&H,z=!Ct(u);let Q;if(z&&(Q=L&&L.onVnodeBeforeUnmount)&&Ce(Q,d,u),P&6)Ti(u.component,m,v);else{if(P&128){u.suspense.unmount(m,v);return}W&&Me(u,null,d,"beforeUnmount"),P&64?u.type.remove(u,d,m,b,gt,v):C&&(S!==ye||U>0&&U&64)?je(C,d,m,!1,!0):(S===ye&&U&384||!b&&P&16)&&je(R,d,m),v&&Yr(u)}(z&&(Q=L&&L.onVnodeUnmounted)||W)&&me(()=>{Q&&Ce(Q,d,u),W&&Me(u,null,d,"unmounted")},m)},Yr=u=>{const{type:d,el:m,anchor:v,transition:b}=u;if(d===ye){Si(m,v);return}if(d===Ft){_(u);return}const S=()=>{s(m),b&&!b.persisted&&b.afterLeave&&b.afterLeave()};if(u.shapeFlag&1&&b&&!b.persisted){const{leave:L,delayLeave:x}=b,R=()=>L(m,S);x?x(u.el,S,R):R()}else S()},Si=(u,d)=>{let m;for(;u!==d;)m=p(u),s(u),u=m;s(d)},Ti=(u,d,m)=>{const{bum:v,scope:b,update:S,subTree:L,um:x}=u;v&&hn(v),b.stop(),S&&(S.active=!1,Le(L,u,d,m)),x&&me(x,d),me(()=>{u.isUnmounted=!0},d),d&&d.pendingBranch&&!d.isUnmounted&&u.asyncDep&&!u.asyncResolved&&u.suspenseId===d.pendingId&&(d.deps--,d.deps===0&&d.resolve())},je=(u,d,m,v=!1,b=!1,S=0)=>{for(let L=S;Lu.shapeFlag&6?Yt(u.component.subTree):u.shapeFlag&128?u.suspense.next():p(u.anchor||u.el);let Un=!1;const Jr=(u,d,m)=>{u==null?d._vnode&&Le(d._vnode,null,null,!0):I(d._vnode||null,u,d,null,null,null,m),Un||(Un=!0,as(),bn(),Un=!1),d._vnode=u},gt={p:I,um:Le,m:rt,r:Yr,mt:ie,mc:T,pc:V,pbc:E,n:Yt,o:e};let Bn,kn;return t&&([Bn,kn]=t(gt)),{render:Jr,hydrate:Bn,createApp:ec(Jr,Bn)}}function Xn({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function st({effect:e,update:t},n){e.allowRecurse=t.allowRecurse=n}function Go(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Wr(e,t,n=!1){const r=e.children,s=t.children;if(B(r)&&B(s))for(let o=0;o>1,e[n[l]]0&&(t[r]=n[o-1]),n[o]=r)}}for(o=n.length,i=n[o-1];o-- >0;)n[o]=i,i=t[i];return n}function zo(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:zo(t)}const hc=e=>e.__isTeleport,Nt=e=>e&&(e.disabled||e.disabled===""),ws=e=>typeof SVGElement<"u"&&e instanceof SVGElement,Es=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,br=(e,t)=>{const n=e&&e.to;return se(n)?t?t(n):null:n},pc={name:"Teleport",__isTeleport:!0,process(e,t,n,r,s,o,i,l,c,a){const{mc:f,pc:h,pbc:p,o:{insert:y,querySelector:w,createText:I,createComment:N}}=a,K=Nt(t.props);let{shapeFlag:k,children:g,dynamicChildren:_}=t;if(e==null){const M=t.el=I(""),O=t.anchor=I("");y(M,n,r),y(O,n,r);const F=t.target=br(t.props,w),T=t.targetAnchor=I("");F&&(y(T,F),i==="svg"||ws(F)?i="svg":(i==="mathml"||Es(F))&&(i="mathml"));const $=(E,j)=>{k&16&&f(g,E,j,s,o,i,l,c)};K?$(n,O):F&&$(F,T)}else{t.el=e.el;const M=t.anchor=e.anchor,O=t.target=e.target,F=t.targetAnchor=e.targetAnchor,T=Nt(e.props),$=T?n:O,E=T?M:F;if(i==="svg"||ws(O)?i="svg":(i==="mathml"||Es(O))&&(i="mathml"),_?(p(e.dynamicChildren,_,$,s,o,i,l),Wr(e,t,!0)):c||h(e,t,$,E,s,o,i,l,!1),K)T?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):ln(t,n,M,a,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const j=t.target=br(t.props,w);j&&ln(t,j,null,a,0)}else T&&ln(t,O,F,a,1)}Xo(t)},remove(e,t,n,r,{um:s,o:{remove:o}},i){const{shapeFlag:l,children:c,anchor:a,targetAnchor:f,target:h,props:p}=e;if(h&&o(f),i&&o(a),l&16){const y=i||!Nt(p);for(let w=0;w0?Oe||vt:null,mc(),Bt>0&&Oe&&Oe.push(e),e}function du(e,t,n,r,s,o){return Jo(ei(e,t,n,r,s,o,!0))}function Qo(e,t,n,r,s){return Jo(oe(e,t,n,r,s,!0))}function xn(e){return e?e.__v_isVNode===!0:!1}function ct(e,t){return e.type===t.type&&e.key===t.key}const Zo=({key:e})=>e??null,gn=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?se(e)||de(e)||q(e)?{i:le,r:e,k:t,f:!!n}:e:null);function ei(e,t=null,n=null,r=0,s=null,o=e===ye?0:1,i=!1,l=!1){const c={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Zo(t),ref:t&&gn(t),scopeId:Fn,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetAnchor:null,staticCount:0,shapeFlag:o,patchFlag:r,dynamicProps:s,dynamicChildren:null,appContext:null,ctx:le};return l?(qr(c,n),o&128&&e.normalize(c)):n&&(c.shapeFlag|=se(n)?8:16),Bt>0&&!i&&Oe&&(c.patchFlag>0||o&6)&&c.patchFlag!==32&&Oe.push(c),c}const oe=yc;function yc(e,t=null,n=null,r=0,s=null,o=!1){if((!e||e===Ao)&&(e=we),xn(e)){const l=et(e,t,!0);return n&&qr(l,n),Bt>0&&!o&&Oe&&(l.shapeFlag&6?Oe[Oe.indexOf(e)]=l:Oe.push(l)),l.patchFlag|=-2,l}if(Ac(e)&&(e=e.__vccOpts),t){t=_c(t);let{class:l,style:c}=t;l&&!se(l)&&(t.class=Or(l)),Z(c)&&(_o(c)&&!B(c)&&(c=ce({},c)),t.style=Rr(c))}const i=se(e)?1:Ol(e)?128:hc(e)?64:Z(e)?4:q(e)?2:0;return ei(e,t,n,r,s,i,o,!0)}function _c(e){return e?_o(e)||Do(e)?ce({},e):e:null}function et(e,t,n=!1){const{props:r,ref:s,patchFlag:o,children:i}=e,l=t?vc(r||{},t):r;return{__v_isVNode:!0,__v_skip:!0,type:e.type,props:l,key:l&&Zo(l),ref:t&&t.ref?n&&s?B(s)?s.concat(gn(t)):[s,gn(t)]:gn(t):s,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:i,target:e.target,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?o===-1?16:o|16:o,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:e.transition,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&et(e.ssContent),ssFallback:e.ssFallback&&et(e.ssFallback),el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce}}function ti(e=" ",t=0){return oe(St,null,e,t)}function hu(e,t){const n=oe(Ft,null,e);return n.staticCount=t,n}function pu(e="",t=!1){return t?(Yo(),Qo(we,null,e)):oe(we,null,e)}function Re(e){return e==null||typeof e=="boolean"?oe(we):B(e)?oe(ye,null,e.slice()):typeof e=="object"?ze(e):oe(St,null,String(e))}function ze(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:et(e)}function qr(e,t){let n=0;const{shapeFlag:r}=e;if(t==null)t=null;else if(B(t))n=16;else if(typeof t=="object")if(r&65){const s=t.default;s&&(s._c&&(s._d=!1),qr(e,s()),s._c&&(s._d=!0));return}else{n=32;const s=t._;!s&&!Do(t)?t._ctx=le:s===3&&le&&(le.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else q(t)?(t={default:t,_ctx:le},n=32):(t=String(t),r&64?(n=16,t=[ti(t)]):n=8);e.children=t,e.shapeFlag|=n}function vc(...e){const t={};for(let n=0;nue||le;let Sn,wr;{const e=no(),t=(n,r)=>{let s;return(s=e[n])||(s=e[n]=[]),s.push(r),o=>{s.length>1?s.forEach(i=>i(o)):s[0](o)}};Sn=t("__VUE_INSTANCE_SETTERS__",n=>ue=n),wr=t("__VUE_SSR_SETTERS__",n=>zt=n)}const Gt=e=>{const t=ue;return Sn(e),e.scope.on(),()=>{e.scope.off(),Sn(t)}},xs=()=>{ue&&ue.scope.off(),Sn(null)};function ni(e){return e.vnode.shapeFlag&4}let zt=!1;function Cc(e,t=!1){t&&wr(t);const{props:n,children:r}=e.vnode,s=ni(e);nc(e,n,s,t),oc(e,r);const o=s?xc(e,t):void 0;return t&&wr(!1),o}function xc(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,ql);const{setup:r}=n;if(r){const s=e.setupContext=r.length>1?si(e):null,o=Gt(e);tt();const i=Je(r,e,0,[e.props,s]);if(nt(),o(),Qs(i)){if(i.then(xs,xs),t)return i.then(l=>{Ss(e,l,t)}).catch(l=>{Wt(l,e,0)});e.asyncDep=i}else Ss(e,i,t)}else ri(e,t)}function Ss(e,t,n){q(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Z(t)&&(e.setupState=Eo(t)),ri(e,n)}let Ts;function ri(e,t,n){const r=e.type;if(!e.render){if(!t&&Ts&&!r.render){const s=r.template||kr(e).template;if(s){const{isCustomElement:o,compilerOptions:i}=e.appContext.config,{delimiters:l,compilerOptions:c}=r,a=ce(ce({isCustomElement:o,delimiters:l},i),c);r.render=Ts(s,a)}}e.render=r.render||xe}{const s=Gt(e);tt();try{zl(e)}finally{nt(),s()}}}const Sc={get(e,t){return _e(e,"get",""),e[t]}};function si(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Sc),slots:e.slots,emit:e.emit,expose:t}}function Dn(e){if(e.exposed)return e.exposeProxy||(e.exposeProxy=new Proxy(Eo(pn(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Mt)return Mt[n](e)},has(t,n){return n in t||n in Mt}}))}function Tc(e,t=!0){return q(e)?e.displayName||e.name:e.name||t&&e.__name}function Ac(e){return q(e)&&"__vccOpts"in e}const ne=(e,t)=>al(e,t,zt);function Er(e,t,n){const r=arguments.length;return r===2?Z(t)&&!B(t)?xn(t)?oe(e,null,[t]):oe(e,t):oe(e,null,t):(r>3?n=Array.prototype.slice.call(arguments,2):r===3&&xn(n)&&(n=[n]),oe(e,t,n))}const Rc="3.4.23";/** -* @vue/runtime-dom v3.4.23 -* (c) 2018-present Yuxi (Evan) You and Vue contributors -* @license MIT -**/const Oc="http://www.w3.org/2000/svg",Lc="http://www.w3.org/1998/Math/MathML",Xe=typeof document<"u"?document:null,As=Xe&&Xe.createElement("template"),Ic={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,r)=>{const s=t==="svg"?Xe.createElementNS(Oc,e):t==="mathml"?Xe.createElementNS(Lc,e):Xe.createElement(e,n?{is:n}:void 0);return e==="select"&&r&&r.multiple!=null&&s.setAttribute("multiple",r.multiple),s},createText:e=>Xe.createTextNode(e),createComment:e=>Xe.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xe.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,r,s,o){const i=n?n.previousSibling:t.lastChild;if(s&&(s===o||s.nextSibling))for(;t.insertBefore(s.cloneNode(!0),n),!(s===o||!(s=s.nextSibling)););else{As.innerHTML=r==="svg"?`${e}`:r==="mathml"?`${e}`:e;const l=As.content;if(r==="svg"||r==="mathml"){const c=l.firstChild;for(;c.firstChild;)l.appendChild(c.firstChild);l.removeChild(c)}t.insertBefore(l,n)}return[i?i.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},Ke="transition",Rt="animation",kt=Symbol("_vtc"),oi=(e,{slots:t})=>Er(Fl,Mc(e),t);oi.displayName="Transition";const ii={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String};oi.props=ce({},Io,ii);const ot=(e,t=[])=>{B(e)?e.forEach(n=>n(...t)):e&&e(...t)},Rs=e=>e?B(e)?e.some(t=>t.length>1):e.length>1:!1;function Mc(e){const t={};for(const A in e)A in ii||(t[A]=e[A]);if(e.css===!1)return t;const{name:n="v",type:r,duration:s,enterFromClass:o=`${n}-enter-from`,enterActiveClass:i=`${n}-enter-active`,enterToClass:l=`${n}-enter-to`,appearFromClass:c=o,appearActiveClass:a=i,appearToClass:f=l,leaveFromClass:h=`${n}-leave-from`,leaveActiveClass:p=`${n}-leave-active`,leaveToClass:y=`${n}-leave-to`}=e,w=Pc(s),I=w&&w[0],N=w&&w[1],{onBeforeEnter:K,onEnter:k,onEnterCancelled:g,onLeave:_,onLeaveCancelled:M,onBeforeAppear:O=K,onAppear:F=k,onAppearCancelled:T=g}=t,$=(A,G,ie)=>{it(A,G?f:l),it(A,G?a:i),ie&&ie()},E=(A,G)=>{A._isLeaving=!1,it(A,h),it(A,y),it(A,p),G&&G()},j=A=>(G,ie)=>{const fe=A?F:k,D=()=>$(G,A,ie);ot(fe,[G,D]),Os(()=>{it(G,A?c:o),We(G,A?f:l),Rs(fe)||Ls(G,r,I,D)})};return ce(t,{onBeforeEnter(A){ot(K,[A]),We(A,o),We(A,i)},onBeforeAppear(A){ot(O,[A]),We(A,c),We(A,a)},onEnter:j(!1),onAppear:j(!0),onLeave(A,G){A._isLeaving=!0;const ie=()=>E(A,G);We(A,h),$c(),We(A,p),Os(()=>{A._isLeaving&&(it(A,h),We(A,y),Rs(_)||Ls(A,r,N,ie))}),ot(_,[A,ie])},onEnterCancelled(A){$(A,!1),ot(g,[A])},onAppearCancelled(A){$(A,!0),ot(T,[A])},onLeaveCancelled(A){E(A),ot(M,[A])}})}function Pc(e){if(e==null)return null;if(Z(e))return[Yn(e.enter),Yn(e.leave)];{const t=Yn(e);return[t,t]}}function Yn(e){return Mi(e)}function We(e,t){t.split(/\s+/).forEach(n=>n&&e.classList.add(n)),(e[kt]||(e[kt]=new Set)).add(t)}function it(e,t){t.split(/\s+/).forEach(r=>r&&e.classList.remove(r));const n=e[kt];n&&(n.delete(t),n.size||(e[kt]=void 0))}function Os(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let Nc=0;function Ls(e,t,n,r){const s=e._endId=++Nc,o=()=>{s===e._endId&&r()};if(n)return setTimeout(o,n);const{type:i,timeout:l,propCount:c}=Fc(e,t);if(!i)return r();const a=i+"end";let f=0;const h=()=>{e.removeEventListener(a,p),o()},p=y=>{y.target===e&&++f>=c&&h()};setTimeout(()=>{f(n[w]||"").split(", "),s=r(`${Ke}Delay`),o=r(`${Ke}Duration`),i=Is(s,o),l=r(`${Rt}Delay`),c=r(`${Rt}Duration`),a=Is(l,c);let f=null,h=0,p=0;t===Ke?i>0&&(f=Ke,h=i,p=o.length):t===Rt?a>0&&(f=Rt,h=a,p=c.length):(h=Math.max(i,a),f=h>0?i>a?Ke:Rt:null,p=f?f===Ke?o.length:c.length:0);const y=f===Ke&&/\b(transform|all)(,|$)/.test(r(`${Ke}Property`).toString());return{type:f,timeout:h,propCount:p,hasTransform:y}}function Is(e,t){for(;e.lengthMs(n)+Ms(e[r])))}function Ms(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function $c(){return document.body.offsetHeight}function Hc(e,t,n){const r=e[kt];r&&(t=(t?[t,...r]:[...r]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const Ps=Symbol("_vod"),jc=Symbol("_vsh"),Vc=Symbol(""),Dc=/(^|;)\s*display\s*:/;function Uc(e,t,n){const r=e.style,s=se(n);let o=!1;if(n&&!s){if(t)if(se(t))for(const i of t.split(";")){const l=i.slice(0,i.indexOf(":")).trim();n[l]==null&&mn(r,l,"")}else for(const i in t)n[i]==null&&mn(r,i,"");for(const i in n)i==="display"&&(o=!0),mn(r,i,n[i])}else if(s){if(t!==n){const i=r[Vc];i&&(n+=";"+i),r.cssText=n,o=Dc.test(n)}}else t&&e.removeAttribute("style");Ps in e&&(e[Ps]=o?r.display:"",e[jc]&&(r.display="none"))}const Ns=/\s*!important$/;function mn(e,t,n){if(B(n))n.forEach(r=>mn(e,t,r));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const r=Bc(e,t);Ns.test(n)?e.setProperty(pt(r),n.replace(Ns,""),"important"):e[r]=n}}const Fs=["Webkit","Moz","ms"],Jn={};function Bc(e,t){const n=Jn[t];if(n)return n;let r=$e(t);if(r!=="filter"&&r in e)return Jn[t]=r;r=Rn(r);for(let s=0;sQn||(zc.then(()=>Qn=0),Qn=Date.now());function Yc(e,t){const n=r=>{if(!r._vts)r._vts=Date.now();else if(r._vts<=n.attached)return;Se(Jc(r,n.value),t,5,[r])};return n.value=e,n.attached=Xc(),n}function Jc(e,t){if(B(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(r=>s=>!s._stopped&&r&&r(s))}else return t}const Vs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Qc=(e,t,n,r,s,o,i,l,c)=>{const a=s==="svg";t==="class"?Hc(e,r,a):t==="style"?Uc(e,n,r):Kt(t)?Sr(t)||qc(e,t,n,r,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Zc(e,t,r,a))?Kc(e,t,r,o,i,l,c):(t==="true-value"?e._trueValue=r:t==="false-value"&&(e._falseValue=r),kc(e,t,r,a))};function Zc(e,t,n,r){if(r)return!!(t==="innerHTML"||t==="textContent"||t in e&&Vs(t)&&q(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const s=e.tagName;if(s==="IMG"||s==="VIDEO"||s==="CANVAS"||s==="SOURCE")return!1}return Vs(t)&&se(n)?!1:t in e}const Ds=e=>{const t=e.props["onUpdate:modelValue"]||!1;return B(t)?n=>hn(t,n):t};function ea(e){e.target.composing=!0}function Us(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Zn=Symbol("_assign"),gu={created(e,{modifiers:{lazy:t,trim:n,number:r}},s){e[Zn]=Ds(s);const o=r||s.props&&s.props.type==="number";yt(e,t?"change":"input",i=>{if(i.target.composing)return;let l=e.value;n&&(l=l.trim()),o&&(l=cr(l)),e[Zn](l)}),n&&yt(e,"change",()=>{e.value=e.value.trim()}),t||(yt(e,"compositionstart",ea),yt(e,"compositionend",Us),yt(e,"change",Us))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,modifiers:{lazy:n,trim:r,number:s}},o){if(e[Zn]=Ds(o),e.composing)return;const i=(s||e.type==="number")&&!/^0\d/.test(e.value)?cr(e.value):e.value,l=t??"";i!==l&&(document.activeElement===e&&e.type!=="range"&&(n||r&&e.value.trim()===l)||(e.value=l))}},ta=["ctrl","shift","alt","meta"],na={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>ta.some(n=>e[`${n}Key`]&&!t.includes(n))},mu=(e,t)=>{const n=e._withMods||(e._withMods={}),r=t.join(".");return n[r]||(n[r]=(s,...o)=>{for(let i=0;i{const n=e._withKeys||(e._withKeys={}),r=t.join(".");return n[r]||(n[r]=s=>{if(!("key"in s))return;const o=pt(s.key);if(t.some(i=>i===o||ra[i]===o))return e(s)})},li=ce({patchProp:Qc},Ic);let Ht,Bs=!1;function sa(){return Ht||(Ht=uc(li))}function oa(){return Ht=Bs?Ht:fc(li),Bs=!0,Ht}const _u=(...e)=>{const t=sa().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=ai(r);if(!s)return;const o=t._component;!q(o)&&!o.render&&!o.template&&(o.template=s.innerHTML),s.innerHTML="";const i=n(s,!1,ci(s));return s instanceof Element&&(s.removeAttribute("v-cloak"),s.setAttribute("data-v-app","")),i},t},vu=(...e)=>{const t=oa().createApp(...e),{mount:n}=t;return t.mount=r=>{const s=ai(r);if(s)return n(s,!0,ci(s))},t};function ci(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function ai(e){return se(e)?document.querySelector(e):e}const bu=(e,t)=>{const n=e.__vccOpts||e;for(const[r,s]of t)n[r]=s;return n},ia="modulepreload",la=function(e){return"/"+e},ks={},wu=function(t,n,r){let s=Promise.resolve();if(n&&n.length>0){document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),i=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));s=Promise.all(n.map(l=>{if(l=la(l),l in ks)return;ks[l]=!0;const c=l.endsWith(".css"),a=c?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${l}"]${a}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":ia,c||(f.as="script",f.crossOrigin=""),f.href=l,i&&f.setAttribute("nonce",i),document.head.appendChild(f),c)return new Promise((h,p)=>{f.addEventListener("load",h),f.addEventListener("error",()=>p(new Error(`Unable to preload CSS for ${l}`)))})}))}return s.then(()=>t()).catch(o=>{const i=new Event("vite:preloadError",{cancelable:!0});if(i.payload=o,window.dispatchEvent(i),!i.defaultPrevented)throw o})},ca=window.__VP_SITE_DATA__;function Gr(e){return oo()?(Ui(e),!0):!1}function Fe(e){return typeof e=="function"?e():wo(e)}const ui=typeof window<"u"&&typeof document<"u";typeof WorkerGlobalScope<"u"&&globalThis instanceof WorkerGlobalScope;const aa=Object.prototype.toString,ua=e=>aa.call(e)==="[object Object]",Qe=()=>{},Cr=fa();function fa(){var e,t;return ui&&((e=window==null?void 0:window.navigator)==null?void 0:e.userAgent)&&(/iP(ad|hone|od)/.test(window.navigator.userAgent)||((t=window==null?void 0:window.navigator)==null?void 0:t.maxTouchPoints)>2&&/iPad|Macintosh/.test(window==null?void 0:window.navigator.userAgent))}function da(e,t){function n(...r){return new Promise((s,o)=>{Promise.resolve(e(()=>t.apply(this,r),{fn:t,thisArg:this,args:r})).then(s).catch(o)})}return n}const fi=e=>e();function ha(e,t={}){let n,r,s=Qe;const o=l=>{clearTimeout(l),s(),s=Qe};return l=>{const c=Fe(e),a=Fe(t.maxWait);return n&&o(n),c<=0||a!==void 0&&a<=0?(r&&(o(r),r=null),Promise.resolve(l())):new Promise((f,h)=>{s=t.rejectOnCancel?h:f,a&&!r&&(r=setTimeout(()=>{n&&o(n),r=null,f(l())},a)),n=setTimeout(()=>{r&&o(r),r=null,f(l())},c)})}}function pa(e=fi){const t=re(!0);function n(){t.value=!1}function r(){t.value=!0}const s=(...o)=>{t.value&&e(...o)};return{isActive:In(t),pause:n,resume:r,eventFilter:s}}function ga(e){return Vn()}function di(...e){if(e.length!==1)return ml(...e);const t=e[0];return typeof t=="function"?In(hl(()=>({get:t,set:Qe}))):re(t)}function hi(e,t,n={}){const{eventFilter:r=fi,...s}=n;return Ne(e,da(r,t),s)}function ma(e,t,n={}){const{eventFilter:r,...s}=n,{eventFilter:o,pause:i,resume:l,isActive:c}=pa(r);return{stop:hi(e,t,{...s,eventFilter:o}),pause:i,resume:l,isActive:c}}function zr(e,t=!0,n){ga()?Tt(e,n):t?e():Mn(e)}function Eu(e,t,n={}){const{debounce:r=0,maxWait:s=void 0,...o}=n;return hi(e,t,{...o,eventFilter:ha(r,{maxWait:s})})}function Cu(e,t,n){let r;de(n)?r={evaluating:n}:r={};const{lazy:s=!1,evaluating:o=void 0,shallow:i=!0,onError:l=Qe}=r,c=re(!s),a=i?jr(t):re(t);let f=0;return Ur(async h=>{if(!c.value)return;f++;const p=f;let y=!1;o&&Promise.resolve().then(()=>{o.value=!0});try{const w=await e(I=>{h(()=>{o&&(o.value=!1),y||I()})});p===f&&(a.value=w)}catch(w){l(w)}finally{o&&p===f&&(o.value=!1),y=!0}}),s?ne(()=>(c.value=!0,a.value)):a}function _t(e){var t;const n=Fe(e);return(t=n==null?void 0:n.$el)!=null?t:n}const Te=ui?window:void 0;function De(...e){let t,n,r,s;if(typeof e[0]=="string"||Array.isArray(e[0])?([n,r,s]=e,t=Te):[t,n,r,s]=e,!t)return Qe;Array.isArray(n)||(n=[n]),Array.isArray(r)||(r=[r]);const o=[],i=()=>{o.forEach(f=>f()),o.length=0},l=(f,h,p,y)=>(f.addEventListener(h,p,y),()=>f.removeEventListener(h,p,y)),c=Ne(()=>[_t(t),Fe(s)],([f,h])=>{if(i(),!f)return;const p=ua(h)?{...h}:h;o.push(...n.flatMap(y=>r.map(w=>l(f,y,w,p))))},{immediate:!0,flush:"post"}),a=()=>{c(),i()};return Gr(a),a}let Ks=!1;function xu(e,t,n={}){const{window:r=Te,ignore:s=[],capture:o=!0,detectIframe:i=!1}=n;if(!r)return Qe;Cr&&!Ks&&(Ks=!0,Array.from(r.document.body.children).forEach(p=>p.addEventListener("click",Qe)),r.document.documentElement.addEventListener("click",Qe));let l=!0;const c=p=>s.some(y=>{if(typeof y=="string")return Array.from(r.document.querySelectorAll(y)).some(w=>w===p.target||p.composedPath().includes(w));{const w=_t(y);return w&&(p.target===w||p.composedPath().includes(w))}}),f=[De(r,"click",p=>{const y=_t(e);if(!(!y||y===p.target||p.composedPath().includes(y))){if(p.detail===0&&(l=!c(p)),!l){l=!0;return}t(p)}},{passive:!0,capture:o}),De(r,"pointerdown",p=>{const y=_t(e);l=!c(p)&&!!(y&&!p.composedPath().includes(y))},{passive:!0}),i&&De(r,"blur",p=>{setTimeout(()=>{var y;const w=_t(e);((y=r.document.activeElement)==null?void 0:y.tagName)==="IFRAME"&&!(w!=null&&w.contains(r.document.activeElement))&&t(p)},0)})].filter(Boolean);return()=>f.forEach(p=>p())}function ya(e){return typeof e=="function"?e:typeof e=="string"?t=>t.key===e:Array.isArray(e)?t=>e.includes(t.key):()=>!0}function Su(...e){let t,n,r={};e.length===3?(t=e[0],n=e[1],r=e[2]):e.length===2?typeof e[1]=="object"?(t=!0,n=e[0],r=e[1]):(t=e[0],n=e[1]):(t=!0,n=e[0]);const{target:s=Te,eventName:o="keydown",passive:i=!1,dedupe:l=!1}=r,c=ya(t);return De(s,o,f=>{f.repeat&&Fe(l)||c(f)&&n(f)},i)}function _a(){const e=re(!1),t=Vn();return t&&Tt(()=>{e.value=!0},t),e}function va(e){const t=_a();return ne(()=>(t.value,!!e()))}function pi(e,t={}){const{window:n=Te}=t,r=va(()=>n&&"matchMedia"in n&&typeof n.matchMedia=="function");let s;const o=re(!1),i=a=>{o.value=a.matches},l=()=>{s&&("removeEventListener"in s?s.removeEventListener("change",i):s.removeListener(i))},c=Ur(()=>{r.value&&(l(),s=n.matchMedia(Fe(e)),"addEventListener"in s?s.addEventListener("change",i):s.addListener(i),o.value=s.matches)});return Gr(()=>{c(),l(),s=void 0}),o}const cn=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{},an="__vueuse_ssr_handlers__",ba=wa();function wa(){return an in cn||(cn[an]=cn[an]||{}),cn[an]}function gi(e,t){return ba[e]||t}function Ea(e){return e==null?"any":e instanceof Set?"set":e instanceof Map?"map":e instanceof Date?"date":typeof e=="boolean"?"boolean":typeof e=="string"?"string":typeof e=="object"?"object":Number.isNaN(e)?"any":"number"}const Ca={boolean:{read:e=>e==="true",write:e=>String(e)},object:{read:e=>JSON.parse(e),write:e=>JSON.stringify(e)},number:{read:e=>Number.parseFloat(e),write:e=>String(e)},any:{read:e=>e,write:e=>String(e)},string:{read:e=>e,write:e=>String(e)},map:{read:e=>new Map(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e.entries()))},set:{read:e=>new Set(JSON.parse(e)),write:e=>JSON.stringify(Array.from(e))},date:{read:e=>new Date(e),write:e=>e.toISOString()}},Ws="vueuse-storage";function Xr(e,t,n,r={}){var s;const{flush:o="pre",deep:i=!0,listenToStorageChanges:l=!0,writeDefaults:c=!0,mergeDefaults:a=!1,shallow:f,window:h=Te,eventFilter:p,onError:y=E=>{console.error(E)},initOnMounted:w}=r,I=(f?jr:re)(typeof t=="function"?t():t);if(!n)try{n=gi("getDefaultStorage",()=>{var E;return(E=Te)==null?void 0:E.localStorage})()}catch(E){y(E)}if(!n)return I;const N=Fe(t),K=Ea(N),k=(s=r.serializer)!=null?s:Ca[K],{pause:g,resume:_}=ma(I,()=>O(I.value),{flush:o,deep:i,eventFilter:p});h&&l&&zr(()=>{De(h,"storage",T),De(h,Ws,$),w&&T()}),w||T();function M(E,j){h&&h.dispatchEvent(new CustomEvent(Ws,{detail:{key:e,oldValue:E,newValue:j,storageArea:n}}))}function O(E){try{const j=n.getItem(e);if(E==null)M(j,null),n.removeItem(e);else{const A=k.write(E);j!==A&&(n.setItem(e,A),M(j,A))}}catch(j){y(j)}}function F(E){const j=E?E.newValue:n.getItem(e);if(j==null)return c&&N!=null&&n.setItem(e,k.write(N)),N;if(!E&&a){const A=k.read(j);return typeof a=="function"?a(A,N):K==="object"&&!Array.isArray(A)?{...N,...A}:A}else return typeof j!="string"?j:k.read(j)}function T(E){if(!(E&&E.storageArea!==n)){if(E&&E.key==null){I.value=N;return}if(!(E&&E.key!==e)){g();try{(E==null?void 0:E.newValue)!==k.write(I.value)&&(I.value=F(E))}catch(j){y(j)}finally{E?Mn(_):_()}}}}function $(E){T(E.detail)}return I}function mi(e){return pi("(prefers-color-scheme: dark)",e)}function xa(e={}){const{selector:t="html",attribute:n="class",initialValue:r="auto",window:s=Te,storage:o,storageKey:i="vueuse-color-scheme",listenToStorageChanges:l=!0,storageRef:c,emitAuto:a,disableTransition:f=!0}=e,h={auto:"",light:"light",dark:"dark",...e.modes||{}},p=mi({window:s}),y=ne(()=>p.value?"dark":"light"),w=c||(i==null?di(r):Xr(i,r,o,{window:s,listenToStorageChanges:l})),I=ne(()=>w.value==="auto"?y.value:w.value),N=gi("updateHTMLAttrs",(_,M,O)=>{const F=typeof _=="string"?s==null?void 0:s.document.querySelector(_):_t(_);if(!F)return;let T;if(f&&(T=s.document.createElement("style"),T.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),s.document.head.appendChild(T)),M==="class"){const $=O.split(/\s/g);Object.values(h).flatMap(E=>(E||"").split(/\s/g)).filter(Boolean).forEach(E=>{$.includes(E)?F.classList.add(E):F.classList.remove(E)})}else F.setAttribute(M,O);f&&(s.getComputedStyle(T).opacity,document.head.removeChild(T))});function K(_){var M;N(t,n,(M=h[_])!=null?M:_)}function k(_){e.onChanged?e.onChanged(_,K):K(_)}Ne(I,k,{flush:"post",immediate:!0}),zr(()=>k(I.value));const g=ne({get(){return a?w.value:I.value},set(_){w.value=_}});try{return Object.assign(g,{store:w,system:y,state:I})}catch{return g}}function Sa(e={}){const{valueDark:t="dark",valueLight:n="",window:r=Te}=e,s=xa({...e,onChanged:(l,c)=>{var a;e.onChanged?(a=e.onChanged)==null||a.call(e,l==="dark",c,l):c(l)},modes:{dark:t,light:n}}),o=ne(()=>s.system?s.system.value:mi({window:r}).value?"dark":"light");return ne({get(){return s.value==="dark"},set(l){const c=l?"dark":"light";o.value===c?s.value="auto":s.value=c}})}function er(e){return typeof Window<"u"&&e instanceof Window?e.document.documentElement:typeof Document<"u"&&e instanceof Document?e.documentElement:e}function Tu(e,t,n={}){const{window:r=Te}=n;return Xr(e,t,r==null?void 0:r.localStorage,n)}function yi(e){const t=window.getComputedStyle(e);if(t.overflowX==="scroll"||t.overflowY==="scroll"||t.overflowX==="auto"&&e.clientWidth1?!0:(t.preventDefault&&t.preventDefault(),!1)}const un=new WeakMap;function Au(e,t=!1){const n=re(t);let r=null;Ne(di(e),i=>{const l=er(Fe(i));if(l){const c=l;un.get(c)||un.set(c,c.style.overflow),n.value&&(c.style.overflow="hidden")}},{immediate:!0});const s=()=>{const i=er(Fe(e));!i||n.value||(Cr&&(r=De(i,"touchmove",l=>{Ta(l)},{passive:!1})),i.style.overflow="hidden",n.value=!0)},o=()=>{var i;const l=er(Fe(e));!l||!n.value||(Cr&&(r==null||r()),l.style.overflow=(i=un.get(l))!=null?i:"",un.delete(l),n.value=!1)};return Gr(o),ne({get(){return n.value},set(i){i?s():o()}})}function Ru(e,t,n={}){const{window:r=Te}=n;return Xr(e,t,r==null?void 0:r.sessionStorage,n)}function Ou(e={}){const{window:t=Te,behavior:n="auto"}=e;if(!t)return{x:re(0),y:re(0)};const r=re(t.scrollX),s=re(t.scrollY),o=ne({get(){return r.value},set(l){scrollTo({left:l,behavior:n})}}),i=ne({get(){return s.value},set(l){scrollTo({top:l,behavior:n})}});return De(t,"scroll",()=>{r.value=t.scrollX,s.value=t.scrollY},{capture:!1,passive:!0}),{x:o,y:i}}function Lu(e={}){const{window:t=Te,initialWidth:n=Number.POSITIVE_INFINITY,initialHeight:r=Number.POSITIVE_INFINITY,listenOrientation:s=!0,includeScrollbar:o=!0}=e,i=re(n),l=re(r),c=()=>{t&&(o?(i.value=t.innerWidth,l.value=t.innerHeight):(i.value=t.document.documentElement.clientWidth,l.value=t.document.documentElement.clientHeight))};if(c(),zr(c),De("resize",c,{passive:!0}),s){const a=pi("(orientation: portrait)");Ne(a,()=>c())}return{width:i,height:l}}var tr={BASE_URL:"/",MODE:"production",DEV:!1,PROD:!0,SSR:!1},nr={};const _i=/^(?:[a-z]+:|\/\/)/i,Aa="vitepress-theme-appearance",Ra=/#.*$/,Oa=/[?#].*$/,La=/(?:(^|\/)index)?\.(?:md|html)$/,ge=typeof document<"u",vi={relativePath:"",filePath:"",title:"404",description:"Not Found",headers:[],frontmatter:{sidebar:!1,layout:"page"},lastUpdated:0,isNotFound:!0};function Ia(e,t,n=!1){if(t===void 0)return!1;if(e=qs(`/${e}`),n)return new RegExp(t).test(e);if(qs(t)!==e)return!1;const r=t.match(Ra);return r?(ge?location.hash:"")===r[0]:!0}function qs(e){return decodeURI(e).replace(Oa,"").replace(La,"$1")}function Ma(e){return _i.test(e)}function Pa(e,t){var r,s,o,i,l,c,a;const n=Object.keys(e.locales).find(f=>f!=="root"&&!Ma(f)&&Ia(t,`/${f}/`,!0))||"root";return Object.assign({},e,{localeIndex:n,lang:((r=e.locales[n])==null?void 0:r.lang)??e.lang,dir:((s=e.locales[n])==null?void 0:s.dir)??e.dir,title:((o=e.locales[n])==null?void 0:o.title)??e.title,titleTemplate:((i=e.locales[n])==null?void 0:i.titleTemplate)??e.titleTemplate,description:((l=e.locales[n])==null?void 0:l.description)??e.description,head:wi(e.head,((c=e.locales[n])==null?void 0:c.head)??[]),themeConfig:{...e.themeConfig,...(a=e.locales[n])==null?void 0:a.themeConfig}})}function bi(e,t){const n=t.title||e.title,r=t.titleTemplate??e.titleTemplate;if(typeof r=="string"&&r.includes(":title"))return r.replace(/:title/g,n);const s=Na(e.title,r);return n===s.slice(3)?n:`${n}${s}`}function Na(e,t){return t===!1?"":t===!0||t===void 0?` | ${e}`:e===t?"":` | ${t}`}function Fa(e,t){const[n,r]=t;if(n!=="meta")return!1;const s=Object.entries(r)[0];return s==null?!1:e.some(([o,i])=>o===n&&i[s[0]]===s[1])}function wi(e,t){return[...e.filter(n=>!Fa(t,n)),...t]}const $a=/[\u0000-\u001F"#$&*+,:;<=>?[\]^`{|}\u007F]/g,Ha=/^[a-z]:/i;function Gs(e){const t=Ha.exec(e),n=t?t[0]:"";return n+e.slice(n.length).replace($a,"_").replace(/(^|\/)_+(?=[^/]*$)/,"$1")}const rr=new Set;function ja(e){if(rr.size===0){const n=typeof process=="object"&&(nr==null?void 0:nr.VITE_EXTRA_EXTENSIONS)||(tr==null?void 0:tr.VITE_EXTRA_EXTENSIONS)||"";("3g2,3gp,aac,ai,apng,au,avif,bin,bmp,cer,class,conf,crl,css,csv,dll,doc,eps,epub,exe,gif,gz,ics,ief,jar,jpe,jpeg,jpg,js,json,jsonld,m4a,man,mid,midi,mjs,mov,mp2,mp3,mp4,mpe,mpeg,mpg,mpp,oga,ogg,ogv,ogx,opus,otf,p10,p7c,p7m,p7s,pdf,png,ps,qt,roff,rtf,rtx,ser,svg,t,tif,tiff,tr,ts,tsv,ttf,txt,vtt,wav,weba,webm,webp,woff,woff2,xhtml,xml,yaml,yml,zip"+(n&&typeof n=="string"?","+n:"")).split(",").forEach(r=>rr.add(r))}const t=e.split(".").pop();return t==null||!rr.has(t.toLowerCase())}function Iu(e){return e.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")}const Va=Symbol(),dt=jr(ca);function Mu(e){const t=ne(()=>Pa(dt.value,e.data.relativePath)),n=t.value.appearance,r=n==="force-dark"?re(!0):n?Sa({storageKey:Aa,initialValue:()=>typeof n=="string"?n:"auto",...typeof n=="object"?n:{}}):re(!1),s=re(ge?location.hash:"");return ge&&window.addEventListener("hashchange",()=>{s.value=location.hash}),Ne(()=>e.data,()=>{s.value=ge?location.hash:""}),{site:t,theme:ne(()=>t.value.themeConfig),page:ne(()=>e.data),frontmatter:ne(()=>e.data.frontmatter),params:ne(()=>e.data.params),lang:ne(()=>t.value.lang),dir:ne(()=>e.data.frontmatter.dir||t.value.dir),localeIndex:ne(()=>t.value.localeIndex||"root"),title:ne(()=>bi(t.value,e.data)),description:ne(()=>e.data.description||t.value.description),isDark:r,hash:ne(()=>s.value)}}function Da(){const e=xt(Va);if(!e)throw new Error("vitepress data not properly injected in app");return e}function Ua(e,t){return`${e}${t}`.replace(/\/+/g,"/")}function zs(e){return _i.test(e)||!e.startsWith("/")?e:Ua(dt.value.base,e)}function Ba(e){let t=e.replace(/\.html$/,"");if(t=decodeURIComponent(t),t=t.replace(/\/$/,"/index"),ge){const n="/";t=Gs(t.slice(n.length).replace(/\//g,"_")||"index")+".md";let r=__VP_HASH_MAP__[t.toLowerCase()];if(r||(t=t.endsWith("_index.md")?t.slice(0,-9)+".md":t.slice(0,-3)+"_index.md",r=__VP_HASH_MAP__[t.toLowerCase()]),!r)return null;t=`${n}assets/${t}.${r}.js`}else t=`./${Gs(t.slice(1).replace(/\//g,"_"))}.md.js`;return t}let yn=[];function Pu(e){yn.push(e),jn(()=>{yn=yn.filter(t=>t!==e)})}function ka(){let e=dt.value.scrollOffset,t=0,n=24;if(typeof e=="object"&&"padding"in e&&(n=e.padding,e=e.selector),typeof e=="number")t=e;else if(typeof e=="string")t=Xs(e,n);else if(Array.isArray(e))for(const r of e){const s=Xs(r,n);if(s){t=s;break}}return t}function Xs(e,t){const n=document.querySelector(e);if(!n)return 0;const r=n.getBoundingClientRect().bottom;return r<0?0:r+t}const Ka=Symbol(),Ei="http://a.com",Wa=()=>({path:"/",component:null,data:vi});function Nu(e,t){const n=Ln(Wa()),r={route:n,go:s};async function s(l=ge?location.href:"/"){var c,a;l=sr(l),await((c=r.onBeforeRouteChange)==null?void 0:c.call(r,l))!==!1&&(ge&&l!==sr(location.href)&&(history.replaceState({scrollPosition:window.scrollY},""),history.pushState({},"",l)),await i(l),await((a=r.onAfterRouteChanged)==null?void 0:a.call(r,l)))}let o=null;async function i(l,c=0,a=!1){var p;if(await((p=r.onBeforePageLoad)==null?void 0:p.call(r,l))===!1)return;const f=new URL(l,Ei),h=o=f.pathname;try{let y=await e(h);if(!y)throw new Error(`Page not found: ${h}`);if(o===h){o=null;const{default:w,__pageData:I}=y;if(!w)throw new Error(`Invalid route component: ${w}`);n.path=ge?h:zs(h),n.component=pn(w),n.data=pn(I),ge&&Mn(()=>{let N=dt.value.base+I.relativePath.replace(/(?:(^|\/)index)?\.md$/,"$1");if(!dt.value.cleanUrls&&!N.endsWith("/")&&(N+=".html"),N!==f.pathname&&(f.pathname=N,l=N+f.search+f.hash,history.replaceState({},"",l)),f.hash&&!c){let K=null;try{K=document.getElementById(decodeURIComponent(f.hash).slice(1))}catch(k){console.warn(k)}if(K){Ys(K,f.hash);return}}window.scrollTo(0,c)})}}catch(y){if(!/fetch|Page not found/.test(y.message)&&!/^\/404(\.html|\/)?$/.test(l)&&console.error(y),!a)try{const w=await fetch(dt.value.base+"hashmap.json");window.__VP_HASH_MAP__=await w.json(),await i(l,c,!0);return}catch{}o===h&&(o=null,n.path=ge?h:zs(h),n.component=t?pn(t):null,n.data=vi)}}return ge&&(history.state===null&&history.replaceState({},""),window.addEventListener("click",l=>{if(l.target.closest("button"))return;const a=l.target.closest("a");if(a&&!a.closest(".vp-raw")&&(a instanceof SVGElement||!a.download)){const{target:f}=a,{href:h,origin:p,pathname:y,hash:w,search:I}=new URL(a.href instanceof SVGAnimatedString?a.href.animVal:a.href,a.baseURI),N=new URL(location.href);!l.ctrlKey&&!l.shiftKey&&!l.altKey&&!l.metaKey&&!f&&p===N.origin&&ja(y)&&(l.preventDefault(),y===N.pathname&&I===N.search?(w!==N.hash&&(history.pushState({},"",h),window.dispatchEvent(new HashChangeEvent("hashchange",{oldURL:N.href,newURL:h}))),w?Ys(a,w,a.classList.contains("header-anchor")):window.scrollTo(0,0)):s(h))}},{capture:!0}),window.addEventListener("popstate",async l=>{var c;l.state!==null&&(await i(sr(location.href),l.state&&l.state.scrollPosition||0),(c=r.onAfterRouteChanged)==null||c.call(r,location.href))}),window.addEventListener("hashchange",l=>{l.preventDefault()})),r}function qa(){const e=xt(Ka);if(!e)throw new Error("useRouter() is called without provider.");return e}function Ci(){return qa().route}function Ys(e,t,n=!1){let r=null;try{r=e.classList.contains("header-anchor")?e:document.getElementById(decodeURIComponent(t).slice(1))}catch(s){console.warn(s)}if(r){let s=function(){!n||Math.abs(i-window.scrollY)>window.innerHeight?window.scrollTo(0,i):window.scrollTo({left:0,top:i,behavior:"smooth"})};const o=parseInt(window.getComputedStyle(r).paddingTop,10),i=window.scrollY+r.getBoundingClientRect().top-ka()+o;requestAnimationFrame(s)}}function sr(e){const t=new URL(e,Ei);return t.pathname=t.pathname.replace(/(^|\/)index(\.html)?$/,"$1"),dt.value.cleanUrls?t.pathname=t.pathname.replace(/\.html$/,""):!t.pathname.endsWith("/")&&!t.pathname.endsWith(".html")&&(t.pathname+=".html"),t.pathname+t.search+t.hash}const or=()=>yn.forEach(e=>e()),Fu=Br({name:"VitePressContent",props:{as:{type:[Object,String],default:"div"}},setup(e){const t=Ci(),{site:n}=Da();return()=>Er(e.as,n.value.contentProps??{style:{position:"relative"}},[t.component?Er(t.component,{onVnodeMounted:or,onVnodeUpdated:or,onVnodeUnmounted:or}):"404 Page Not Found"])}}),$u=Br({setup(e,{slots:t}){const n=re(!1);return Tt(()=>{n.value=!0}),()=>n.value&&t.default?t.default():null}});function Hu(){ge&&window.addEventListener("click",e=>{var n;const t=e.target;if(t.matches(".vp-code-group input")){const r=(n=t.parentElement)==null?void 0:n.parentElement;if(!r)return;const s=Array.from(r.querySelectorAll("input")).indexOf(t);if(s<0)return;const o=r.querySelector(".blocks");if(!o)return;const i=Array.from(o.children).find(a=>a.classList.contains("active"));if(!i)return;const l=o.children[s];if(!l||i===l)return;i.classList.remove("active"),l.classList.add("active");const c=r==null?void 0:r.querySelector(`label[for="${t.id}"]`);c==null||c.scrollIntoView({block:"nearest"})}})}function ju(){if(ge){const e=new WeakMap;window.addEventListener("click",t=>{var r;const n=t.target;if(n.matches('div[class*="language-"] > button.copy')){const s=n.parentElement,o=(r=n.nextElementSibling)==null?void 0:r.nextElementSibling;if(!s||!o)return;const i=/language-(shellscript|shell|bash|sh|zsh)/.test(s.className),l=[".vp-copy-ignore",".diff.remove"],c=o.cloneNode(!0);c.querySelectorAll(l.join(",")).forEach(f=>f.remove());let a=c.textContent||"";i&&(a=a.replace(/^ *(\$|>) /gm,"").trim()),Ga(a).then(()=>{n.classList.add("copied"),clearTimeout(e.get(n));const f=setTimeout(()=>{n.classList.remove("copied"),n.blur(),e.delete(n)},2e3);e.set(n,f)})}})}}async function Ga(e){try{return navigator.clipboard.writeText(e)}catch{const t=document.createElement("textarea"),n=document.activeElement;t.value=e,t.setAttribute("readonly",""),t.style.contain="strict",t.style.position="absolute",t.style.left="-9999px",t.style.fontSize="12pt";const r=document.getSelection(),s=r?r.rangeCount>0&&r.getRangeAt(0):null;document.body.appendChild(t),t.select(),t.selectionStart=0,t.selectionEnd=e.length,document.execCommand("copy"),document.body.removeChild(t),s&&(r.removeAllRanges(),r.addRange(s)),n&&n.focus()}}function Vu(e,t){let n=!0,r=[];const s=o=>{if(n){n=!1,o.forEach(l=>{const c=ir(l);for(const a of document.head.children)if(a.isEqualNode(c)){r.push(a);return}});return}const i=o.map(ir);r.forEach((l,c)=>{const a=i.findIndex(f=>f==null?void 0:f.isEqualNode(l??null));a!==-1?delete i[a]:(l==null||l.remove(),delete r[c])}),i.forEach(l=>l&&document.head.appendChild(l)),r=[...r,...i].filter(Boolean)};Ur(()=>{const o=e.data,i=t.value,l=o&&o.description,c=o&&o.frontmatter.head||[],a=bi(i,o);a!==document.title&&(document.title=a);const f=l||i.description;let h=document.querySelector("meta[name=description]");h?h.getAttribute("content")!==f&&h.setAttribute("content",f):ir(["meta",{name:"description",content:f}]),s(wi(i.head,Xa(c)))})}function ir([e,t,n]){const r=document.createElement(e);for(const s in t)r.setAttribute(s,t[s]);return n&&(r.innerHTML=n),e==="script"&&!t.async&&(r.async=!1),r}function za(e){return e[0]==="meta"&&e[1]&&e[1].name==="description"}function Xa(e){return e.filter(t=>!za(t))}const lr=new Set,xi=()=>document.createElement("link"),Ya=e=>{const t=xi();t.rel="prefetch",t.href=e,document.head.appendChild(t)},Ja=e=>{const t=new XMLHttpRequest;t.open("GET",e,t.withCredentials=!0),t.send()};let fn;const Qa=ge&&(fn=xi())&&fn.relList&&fn.relList.supports&&fn.relList.supports("prefetch")?Ya:Ja;function Du(){if(!ge||!window.IntersectionObserver)return;let e;if((e=navigator.connection)&&(e.saveData||/2g/.test(e.effectiveType)))return;const t=window.requestIdleCallback||setTimeout;let n=null;const r=()=>{n&&n.disconnect(),n=new IntersectionObserver(o=>{o.forEach(i=>{if(i.isIntersecting){const l=i.target;n.unobserve(l);const{pathname:c}=l;if(!lr.has(c)){lr.add(c);const a=Ba(c);a&&Qa(a)}}})}),t(()=>{document.querySelectorAll("#app a").forEach(o=>{const{hostname:i,pathname:l}=new URL(o.href instanceof SVGAnimatedString?o.href.animVal:o.href,o.baseURI),c=l.match(/\.\w+$/);c&&c[0]!==".html"||o.target!=="_blank"&&i===location.hostname&&(l!==location.pathname?n.observe(o):lr.add(l))})})};Tt(r);const s=Ci();Ne(()=>s.path,r),jn(()=>{n&&n.disconnect()})}export{tc as $,su as A,Ul as B,ka as C,nu as D,lu as E,ye as F,jr as G,Pu as H,oe as I,ru as J,_i as K,Ci as L,vc as M,xt as N,Lu as O,Rr as P,xu as Q,Su as R,Mn as S,oi as T,Ou as U,ge as V,In as W,iu as X,wu as Y,Au as Z,bu as _,ti as a,yu as a0,au as a1,mu as a2,uu as a3,Er as a4,hu as a5,Vu as a6,Ka as a7,Mu as a8,Va as a9,Fu as aa,$u as ab,dt as ac,vu as ad,Nu as ae,Ba as af,Du as ag,ju as ah,Hu as ai,_t as aj,Gr as ak,Cu as al,Ru as am,Tu as an,Eu as ao,qa as ap,De as aq,Fo as ar,ou as as,gu as at,de as au,fu as av,pn as aw,_u as ax,Iu as ay,Qo as b,du as c,Br as d,pu as e,ja as f,zs as g,ne as h,Ma as i,re as j,Tt as k,ei as l,wo as m,Or as n,Yo as o,eu as p,tu as q,cu as r,Ia as s,Za as t,Da as u,pi as v,xl as w,Ne as x,Ur as y,jn as z}; diff --git a/assets/chunks/theme.B8uyWRoy.js b/assets/chunks/theme.hDrnMMGo.js similarity index 99% rename from assets/chunks/theme.B8uyWRoy.js rename to assets/chunks/theme.hDrnMMGo.js index 22bb3e1..501e296 100644 --- a/assets/chunks/theme.B8uyWRoy.js +++ b/assets/chunks/theme.hDrnMMGo.js @@ -1,2 +1,2 @@ -const __vite__fileDeps=["assets/chunks/VPLocalSearchBox.BPp8O5TV.js","assets/chunks/framework.EN5ALL4V.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); -import{d as _,o as a,c,r as l,n as N,a as F,t as I,b,w as v,T as ve,e as f,_ as $,u as Ue,i as Ge,f as je,g as pe,h as y,j as w,k as z,l as d,m as r,p as B,q as H,s as j,v as ie,x as q,y as Z,z as he,A as Pe,B as ze,C as qe,D as K,F as M,E,G as Le,H as x,I as m,J as W,K as Ve,L as ee,M as Y,N as te,O as Ke,P as Se,Q as Re,R as le,S as We,U as Te,V as oe,W as Je,X as Ye,Y as Qe,Z as Ie,$ as we,a0 as Xe,a1 as Ze,a2 as xe,a3 as et,a4 as tt}from"./framework.EN5ALL4V.js";const ot=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),c("span",{class:N(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[F(I(e.text),1)])],2))}}),st={key:0,class:"VPBackdrop"},nt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),b(ve,{name:"fade"},{default:v(()=>[e.show?(a(),c("div",st)):f("",!0)]),_:1}))}}),at=$(nt,[["__scopeId","data-v-c79a1216"]]),L=Ue;function rt(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function ce(o){return/^\//.test(o)?o:`/${o}`}function fe(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(Ge(o)||o.startsWith("#")||!n.startsWith("http")||!je(e))return o;const{site:i}=L(),u=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${s}`);return pe(u)}function J({removeCurrent:o=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:s,page:n,theme:i,hash:u}=L(),h=y(()=>{var g,k;return{label:(g=t.value.locales[s.value])==null?void 0:g.label,link:((k=t.value.locales[s.value])==null?void 0:k.link)||(s.value==="root"?"/":`/${s.value}/`)}});return{localeLinks:y(()=>Object.entries(t.value.locales).flatMap(([g,k])=>o&&h.value.label===k.label?[]:{text:k.label,link:it(k.link||(g==="root"?"/":`/${g}/`),i.value.i18nRouting!==!1&&e,n.value.relativePath.slice(h.value.link.length-1),!t.value.cleanUrls)+u.value})),currentLang:h}}function it(o,e,t,s){return e?o.replace(/\/$/,"")+ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const lt=o=>(B("data-v-f87ff6e4"),o=o(),H(),o),ct={class:"NotFound"},ut={class:"code"},dt={class:"title"},vt=lt(()=>d("div",{class:"divider"},null,-1)),pt={class:"quote"},ht={class:"action"},ft=["href","aria-label"],_t=_({__name:"NotFound",setup(o){const{site:e,theme:t}=L(),{localeLinks:s}=J({removeCurrent:!1}),n=w("/");return z(()=>{var u;const i=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");s.value.length&&(n.value=((u=s.value.find(({link:h})=>h.startsWith(i)))==null?void 0:u.link)||s.value[0].link)}),(i,u)=>{var h,p,g,k,P;return a(),c("div",ct,[d("p",ut,I(((h=r(t).notFound)==null?void 0:h.code)??"404"),1),d("h1",dt,I(((p=r(t).notFound)==null?void 0:p.title)??"PAGE NOT FOUND"),1),vt,d("blockquote",pt,I(((g=r(t).notFound)==null?void 0:g.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",ht,[d("a",{class:"link",href:r(pe)(n.value),"aria-label":((k=r(t).notFound)==null?void 0:k.linkLabel)??"go to home"},I(((P=r(t).notFound)==null?void 0:P.linkText)??"Take me home"),9,ft)])])}}}),mt=$(_t,[["__scopeId","data-v-f87ff6e4"]]);function Ne(o,e){if(Array.isArray(o))return Q(o);if(o==null)return[];e=ce(e);const t=Object.keys(o).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(ce(n))),s=t?o[t]:[];return Array.isArray(s)?Q(s):Q(s.items,s.base)}function kt(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function $t(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function ue(o,e){return Array.isArray(e)?e.some(t=>ue(o,t)):j(o,e.link)?!0:e.items?ue(o,e.items):!1}function Q(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=Q(s.items,n)),s})}function O(){const{frontmatter:o,page:e,theme:t}=L(),s=ie("(min-width: 960px)"),n=w(!1),i=y(()=>{const C=t.value.sidebar,S=e.value.relativePath;return C?Ne(C,S):[]}),u=w(i.value);q(i,(C,S)=>{JSON.stringify(C)!==JSON.stringify(S)&&(u.value=i.value)});const h=y(()=>o.value.sidebar!==!1&&u.value.length>0&&o.value.layout!=="home"),p=y(()=>g?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),g=y(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),k=y(()=>h.value&&s.value),P=y(()=>h.value?kt(u.value):[]);function V(){n.value=!0}function T(){n.value=!1}function A(){n.value?T():V()}return{isOpen:n,sidebar:u,sidebarGroups:P,hasSidebar:h,hasAside:g,leftAside:p,isSidebarEnabled:k,open:V,close:T,toggle:A}}function bt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),z(()=>{window.addEventListener("keyup",s)}),he(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function gt(o){const{page:e,hash:t}=L(),s=w(!1),n=y(()=>o.value.collapsed!=null),i=y(()=>!!o.value.link),u=w(!1),h=()=>{u.value=j(e.value.relativePath,o.value.link)};q([e,o,t],h),z(h);const p=y(()=>u.value?!0:o.value.items?ue(e.value.relativePath,o.value.items):!1),g=y(()=>!!(o.value.items&&o.value.items.length));Z(()=>{s.value=!!(n.value&&o.value.collapsed)}),Pe(()=>{(u.value||p.value)&&(s.value=!1)});function k(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:i,isActiveLink:u,hasActiveLink:p,hasChildren:g,toggle:k}}function yt(){const{hasSidebar:o}=O(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const de=[];function Me(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function _e(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:Pt(t),link:"#"+t.id,level:s}});return Lt(e,o)}function Pt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Lt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(u=>u.level>=s&&u.level<=n),de.length=0;for(const{element:u,link:h}of o)de.push({element:u,link:h});const i=[];e:for(let u=0;u=0;p--){const g=o[p];if(g.level{requestAnimationFrame(i),window.addEventListener("scroll",s)}),ze(()=>{u(location.hash)}),he(()=>{window.removeEventListener("scroll",s)});function i(){if(!t.value)return;const h=window.scrollY,p=window.innerHeight,g=document.body.offsetHeight,k=Math.abs(h+p-g)<1,P=de.map(({element:T,link:A})=>({link:A,top:St(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,A)=>T.top-A.top);if(!P.length){u(null);return}if(h<1){u(null);return}if(k){u(P[P.length-1].link);return}let V=null;for(const{link:T,top:A}of P){if(A>h+qe()+4)break;V=T}u(V)}function u(h){n&&n.classList.remove("active"),h==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(h)}"]`);const p=n;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function St(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const Tt=["href","title"],It=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const s=t.href.split("#")[1],n=document.getElementById(decodeURIComponent(s));n==null||n.focus({preventScroll:!0})}return(t,s)=>{const n=K("VPDocOutlineItem",!0);return a(),c("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),c(M,null,E(t.headers,({children:i,link:u,title:h})=>(a(),c("li",null,[d("a",{class:"outline-link",href:u,onClick:e,title:h},I(h),9,Tt),i!=null&&i.length?(a(),b(n,{key:0,headers:i},null,8,["headers"])):f("",!0)]))),256))],2)}}}),Ae=$(It,[["__scopeId","data-v-b933a997"]]),wt=o=>(B("data-v-935f8a84"),o=o(),H(),o),Nt={class:"content"},Mt={class:"outline-title",role:"heading","aria-level":"2"},At={"aria-labelledby":"doc-outline-aria-label"},Ct=wt(()=>d("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),Bt=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=L(),s=Le([]);x(()=>{s.value=_e(e.value.outline??t.value.outline)});const n=w(),i=w();return Vt(n,i),(u,h)=>(a(),c("div",{class:N(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n,role:"navigation"},[d("div",Nt,[d("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),d("div",Mt,I(r(Me)(r(t))),1),d("nav",At,[Ct,m(Ae,{headers:s.value,root:!0},null,8,["headers"])])])],2))}}),Ht=$(Bt,[["__scopeId","data-v-935f8a84"]]),Et={class:"VPDocAsideCarbonAds"},Dt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),c("div",Et,[m(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ft=o=>(B("data-v-3f215769"),o=o(),H(),o),Ot={class:"VPDocAside"},Ut=Ft(()=>d("div",{class:"spacer"},null,-1)),Gt=_({__name:"VPDocAside",setup(o){const{theme:e}=L();return(t,s)=>(a(),c("div",Ot,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),m(Ht),l(t.$slots,"aside-outline-after",{},void 0,!0),Ut,l(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),b(Dt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):f("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),jt=$(Gt,[["__scopeId","data-v-3f215769"]]);function zt(){const{theme:o,page:e}=L();return y(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function qt(){const{page:o,theme:e,frontmatter:t}=L();return y(()=>{var g,k,P,V,T,A,C,S;const s=Ne(e.value.sidebar,o.value.relativePath),n=$t(s),i=Kt(n,U=>U.link.replace(/[?#].*$/,"")),u=i.findIndex(U=>j(o.value.relativePath,U.link)),h=((g=e.value.docFooter)==null?void 0:g.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((k=e.value.docFooter)==null?void 0:k.next)===!1&&!t.value.next||t.value.next===!1;return{prev:h?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((P=i[u-1])==null?void 0:P.docFooterText)??((V=i[u-1])==null?void 0:V.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((T=i[u-1])==null?void 0:T.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[u+1])==null?void 0:A.docFooterText)??((C=i[u+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=i[u+1])==null?void 0:S.link)}}})}function Kt(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const D=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&Ve.test(e.href));return(n,i)=>(a(),b(W(t.value),{class:N(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?r(fe)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:v(()=>[l(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Rt={class:"VPLastUpdated"},Wt=["datetime"],Jt=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,frontmatter:s,lang:n}=L(),i=y(()=>new Date(s.value.lastUpdated??t.value.lastUpdated)),u=y(()=>i.value.toISOString()),h=w("");return z(()=>{Z(()=>{var p,g,k;h.value=new Intl.DateTimeFormat((g=(p=e.value.lastUpdated)==null?void 0:p.formatOptions)!=null&&g.forceLocale?n.value:void 0,((k=e.value.lastUpdated)==null?void 0:k.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(i.value)})}),(p,g)=>{var k;return a(),c("p",Rt,[F(I(((k=r(e).lastUpdated)==null?void 0:k.text)||r(e).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:u.value},I(h.value),9,Wt)])}}}),Yt=$(Jt,[["__scopeId","data-v-7e05ebdb"]]),Qt=o=>(B("data-v-09de1c0f"),o=o(),H(),o),Xt={key:0,class:"VPDocFooter"},Zt={key:0,class:"edit-info"},xt={key:0,class:"edit-link"},eo=Qt(()=>d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),to={key:1,class:"last-updated"},oo={key:1,class:"prev-next"},so={class:"pager"},no=["innerHTML"],ao=["innerHTML"],ro={class:"pager"},io=["innerHTML"],lo=["innerHTML"],co=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=L(),n=zt(),i=qt(),u=y(()=>e.value.editLink&&s.value.editLink!==!1),h=y(()=>t.value.lastUpdated&&s.value.lastUpdated!==!1),p=y(()=>u.value||h.value||i.value.prev||i.value.next);return(g,k)=>{var P,V,T,A;return p.value?(a(),c("footer",Xt,[l(g.$slots,"doc-footer-before",{},void 0,!0),u.value||h.value?(a(),c("div",Zt,[u.value?(a(),c("div",xt,[m(D,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:v(()=>[eo,F(" "+I(r(n).text),1)]),_:1},8,["href"])])):f("",!0),h.value?(a(),c("div",to,[m(Yt)])):f("",!0)])):f("",!0),(P=r(i).prev)!=null&&P.link||(V=r(i).next)!=null&&V.link?(a(),c("nav",oo,[d("div",so,[(T=r(i).prev)!=null&&T.link?(a(),b(D,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:v(()=>{var C;return[d("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,no),d("span",{class:"title",innerHTML:r(i).prev.text},null,8,ao)]}),_:1},8,["href"])):f("",!0)]),d("div",ro,[(A=r(i).next)!=null&&A.link?(a(),b(D,{key:0,class:"pager-link next",href:r(i).next.link},{default:v(()=>{var C;return[d("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,io),d("span",{class:"title",innerHTML:r(i).next.text},null,8,lo)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),uo=$(co,[["__scopeId","data-v-09de1c0f"]]),vo=o=>(B("data-v-39a288b8"),o=o(),H(),o),po={class:"container"},ho=vo(()=>d("div",{class:"aside-curtain"},null,-1)),fo={class:"aside-container"},_o={class:"aside-content"},mo={class:"content"},ko={class:"content-container"},$o={class:"main"},bo=_({__name:"VPDoc",setup(o){const{theme:e}=L(),t=ee(),{hasSidebar:s,hasAside:n,leftAside:i}=O(),u=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(h,p)=>{const g=K("Content");return a(),c("div",{class:N(["VPDoc",{"has-sidebar":r(s),"has-aside":r(n)}])},[l(h.$slots,"doc-top",{},void 0,!0),d("div",po,[r(n)?(a(),c("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[ho,d("div",fo,[d("div",_o,[m(jt,null,{"aside-top":v(()=>[l(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[l(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[l(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),d("div",mo,[d("div",ko,[l(h.$slots,"doc-before",{},void 0,!0),d("main",$o,[m(g,{class:N(["vp-doc",[u.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),m(uo,null,{"doc-footer-before":v(()=>[l(h.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(h.$slots,"doc-after",{},void 0,!0)])])]),l(h.$slots,"doc-bottom",{},void 0,!0)],2)}}}),go=$(bo,[["__scopeId","data-v-39a288b8"]]),yo=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.href&&Ve.test(e.href)),s=y(()=>e.tag||e.href?"a":"button");return(n,i)=>(a(),b(W(s.value),{class:N(["VPButton",[n.size,n.theme]]),href:n.href?r(fe)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[F(I(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),Po=$(yo,[["__scopeId","data-v-cad61b99"]]),Lo=["src","alt"],Vo=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=K("VPImage",!0);return e.image?(a(),c(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),c("img",Y({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(pe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Lo)):(a(),c(M,{key:1},[m(s,Y({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),m(s,Y({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),X=$(Vo,[["__scopeId","data-v-8426fc1a"]]),So=o=>(B("data-v-303bb580"),o=o(),H(),o),To={class:"container"},Io={class:"main"},wo={key:0,class:"name"},No=["innerHTML"],Mo=["innerHTML"],Ao=["innerHTML"],Co={key:0,class:"actions"},Bo={key:0,class:"image"},Ho={class:"image-container"},Eo=So(()=>d("div",{class:"image-bg"},null,-1)),Do=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=te("hero-image-slot-exists");return(t,s)=>(a(),c("div",{class:N(["VPHero",{"has-image":t.image||r(e)}])},[d("div",To,[d("div",Io,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(a(),c("h1",wo,[d("span",{innerHTML:t.name,class:"clip"},null,8,No)])):f("",!0),t.text?(a(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,Mo)):f("",!0),t.tagline?(a(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Ao)):f("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),c("div",Co,[(a(!0),c(M,null,E(t.actions,n=>(a(),c("div",{key:n.link,class:"action"},[m(Po,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),c("div",Bo,[d("div",Ho,[Eo,l(t.$slots,"home-hero-image",{},()=>[t.image?(a(),b(X,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Fo=$(Do,[["__scopeId","data-v-303bb580"]]),Oo=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=L();return(t,s)=>r(e).hero?(a(),b(Fo,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":v(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Uo=o=>(B("data-v-a3976bdc"),o=o(),H(),o),Go={class:"box"},jo={key:0,class:"icon"},zo=["innerHTML"],qo=["innerHTML"],Ko=["innerHTML"],Ro={key:4,class:"link-text"},Wo={class:"link-text-value"},Jo=Uo(()=>d("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),Yo=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),b(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[d("article",Go,[typeof e.icon=="object"&&e.icon.wrap?(a(),c("div",jo,[m(X,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),b(X,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,zo)):f("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,qo),e.details?(a(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,Ko)):f("",!0),e.linkText?(a(),c("div",Ro,[d("p",Wo,[F(I(e.linkText)+" ",1),Jo])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Qo=$(Yo,[["__scopeId","data-v-a3976bdc"]]),Xo={key:0,class:"VPFeatures"},Zo={class:"container"},xo={class:"items"},es=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),c("div",Xo,[d("div",Zo,[d("div",xo,[(a(!0),c(M,null,E(s.features,i=>(a(),c("div",{key:i.title,class:N(["item",[t.value]])},[m(Qo,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),ts=$(es,[["__scopeId","data-v-a6181336"]]),os=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=L();return(t,s)=>r(e).features?(a(),b(ts,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):f("",!0)}}),ss=_({__name:"VPHomeContent",setup(o){const{width:e}=Ke({includeScrollbar:!1});return(t,s)=>(a(),c("div",{class:"vp-doc container",style:Se(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),ns=$(ss,[["__scopeId","data-v-82d4af08"]]),as={class:"VPHome"},rs=_({__name:"VPHome",setup(o){const{frontmatter:e}=L();return(t,s)=>{const n=K("Content");return a(),c("div",as,[l(t.$slots,"home-hero-before",{},void 0,!0),m(Oo,null,{"home-hero-info-before":v(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),m(os),l(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),b(ns,{key:0},{default:v(()=>[m(n)]),_:1})):(a(),b(n,{key:1}))])}}}),is=$(rs,[["__scopeId","data-v-686f80a6"]]),ls={},cs={class:"VPPage"};function us(o,e){const t=K("Content");return a(),c("div",cs,[l(o.$slots,"page-top"),m(t),l(o.$slots,"page-bottom")])}const ds=$(ls,[["render",us]]),vs=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=L(),{hasSidebar:s}=O();return(n,i)=>(a(),c("div",{class:N(["VPContent",{"has-sidebar":r(s),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?l(n.$slots,"not-found",{key:0},()=>[m(mt)],!0):r(t).layout==="page"?(a(),b(ds,{key:1},{"page-top":v(()=>[l(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[l(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),b(is,{key:2},{"home-hero-before":v(()=>[l(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[l(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[l(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[l(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[l(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),b(W(r(t).layout),{key:3})):(a(),b(go,{key:4},{"doc-top":v(()=>[l(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[l(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[l(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[l(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[l(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[l(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[l(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[l(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ps=$(vs,[["__scopeId","data-v-1428d186"]]),hs={class:"container"},fs=["innerHTML"],_s=["innerHTML"],ms=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:s}=O();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),c("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(s)}])},[d("div",hs,[r(e).footer.message?(a(),c("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,fs)):f("",!0),r(e).footer.copyright?(a(),c("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,_s)):f("",!0)])],2)):f("",!0)}}),ks=$(ms,[["__scopeId","data-v-e315a0ad"]]);function $s(){const{theme:o,frontmatter:e}=L(),t=Le([]),s=y(()=>t.value.length>0);return x(()=>{t.value=_e(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const bs=o=>(B("data-v-267dd0ed"),o=o(),H(),o),gs={class:"menu-text"},ys=bs(()=>d("span",{class:"vpi-chevron-right icon"},null,-1)),Ps={class:"header"},Ls={class:"outline"},Vs=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=L(),s=w(!1),n=w(0),i=w(),u=w();Re(i,()=>{s.value=!1}),le("Escape",()=>{s.value=!1}),x(()=>{s.value=!1});function h(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function p(k){k.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),We(()=>{s.value=!1}))}function g(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(k,P)=>(a(),c("div",{class:"VPLocalNavOutlineDropdown",style:Se({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[k.headers.length>0?(a(),c("button",{key:0,onClick:h,class:N({open:s.value})},[d("span",gs,I(r(Me)(r(t))),1),ys],2)):(a(),c("button",{key:1,onClick:g},I(r(t).returnToTopLabel||"Return to top"),1)),m(ve,{name:"flyout"},{default:v(()=>[s.value?(a(),c("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:p},[d("div",Ps,[d("a",{class:"top-link",href:"#",onClick:g},I(r(t).returnToTopLabel||"Return to top"),1)]),d("div",Ls,[m(Ae,{headers:k.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),Ss=$(Vs,[["__scopeId","data-v-267dd0ed"]]),Ts=o=>(B("data-v-a6f0e41e"),o=o(),H(),o),Is={class:"container"},ws=["aria-expanded"],Ns=Ts(()=>d("span",{class:"vpi-align-left menu-icon"},null,-1)),Ms={class:"menu-text"},As=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:s}=O(),{headers:n}=$s(),{y:i}=Te(),u=w(0);z(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=_e(t.value.outline??e.value.outline)});const h=y(()=>n.value.length===0),p=y(()=>h.value&&!s.value),g=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:h.value,fixed:p.value}));return(k,P)=>r(t).layout!=="home"&&(!p.value||r(i)>=u.value)?(a(),c("div",{key:0,class:N(g.value)},[d("div",Is,[r(s)?(a(),c("button",{key:0,class:"menu","aria-expanded":k.open,"aria-controls":"VPSidebarNav",onClick:P[0]||(P[0]=V=>k.$emit("open-menu"))},[Ns,d("span",Ms,I(r(e).sidebarMenuLabel||"Menu"),1)],8,ws)):f("",!0),m(Ss,{headers:r(n),navHeight:u.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Cs=$(As,[["__scopeId","data-v-a6f0e41e"]]);function Bs(){const o=w(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=ee();return q(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const Hs={},Es={class:"VPSwitch",type:"button",role:"switch"},Ds={class:"check"},Fs={key:0,class:"icon"};function Os(o,e){return a(),c("button",Es,[d("span",Ds,[o.$slots.default?(a(),c("span",Fs,[l(o.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Us=$(Hs,[["render",Os],["__scopeId","data-v-1d5665e3"]]),Ce=o=>(B("data-v-d1f28634"),o=o(),H(),o),Gs=Ce(()=>d("span",{class:"vpi-sun sun"},null,-1)),js=Ce(()=>d("span",{class:"vpi-moon moon"},null,-1)),zs=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=L(),s=te("toggle-appearance",()=>{e.value=!e.value}),n=y(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(i,u)=>(a(),b(Us,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(s)},{default:v(()=>[Gs,js]),_:1},8,["title","aria-checked","onClick"]))}}),me=$(zs,[["__scopeId","data-v-d1f28634"]]),qs={key:0,class:"VPNavBarAppearance"},Ks=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=L();return(t,s)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",qs,[m(me)])):f("",!0)}}),Rs=$(Ks,[["__scopeId","data-v-e6aabb21"]]),ke=w();let Be=!1,re=0;function Ws(o){const e=w(!1);if(oe){!Be&&Js(),re++;const t=q(ke,s=>{var n,i,u;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(u=o.onBlur)==null||u.call(o))});he(()=>{t(),re--,re||Ys()})}return Je(e)}function Js(){document.addEventListener("focusin",He),Be=!0,ke.value=document.activeElement}function Ys(){document.removeEventListener("focusin",He)}function He(){ke.value=document.activeElement}const Qs={class:"VPMenuLink"},Xs=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,s)=>(a(),c("div",Qs,[m(D,{class:N({active:r(j)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[F(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),se=$(Xs,[["__scopeId","data-v-43f1e123"]]),Zs={class:"VPMenuGroup"},xs={key:0,class:"title"},en=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Zs,[e.text?(a(),c("p",xs,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,s=>(a(),c(M,null,["link"in s?(a(),b(se,{key:0,item:s},null,8,["item"])):f("",!0)],64))),256))]))}}),tn=$(en,[["__scopeId","data-v-69e747b5"]]),on={class:"VPMenu"},sn={key:0,class:"items"},nn=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),c("div",on,[e.items?(a(),c("div",sn,[(a(!0),c(M,null,E(e.items,s=>(a(),c(M,{key:s.text},["link"in s?(a(),b(se,{key:0,item:s},null,8,["item"])):(a(),b(tn,{key:1,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):f("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),an=$(nn,[["__scopeId","data-v-e7ea1737"]]),rn=o=>(B("data-v-b6c34ac9"),o=o(),H(),o),ln=["aria-expanded","aria-label"],cn={key:0,class:"text"},un=["innerHTML"],dn=rn(()=>d("span",{class:"vpi-chevron-down text-icon"},null,-1)),vn={key:1,class:"vpi-more-horizontal icon"},pn={class:"menu"},hn=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=w(!1),t=w();Ws({el:t,onBlur:s});function s(){e.value=!1}return(n,i)=>(a(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=u=>e.value=!0),onMouseleave:i[2]||(i[2]=u=>e.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=u=>e.value=!e.value)},[n.button||n.icon?(a(),c("span",cn,[n.icon?(a(),c("span",{key:0,class:N([n.icon,"option-icon"])},null,2)):f("",!0),n.button?(a(),c("span",{key:1,innerHTML:n.button},null,8,un)):f("",!0),dn])):(a(),c("span",vn))],8,ln),d("div",pn,[m(an,{items:n.items},{default:v(()=>[l(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=$(hn,[["__scopeId","data-v-b6c34ac9"]]),fn=["href","aria-label","innerHTML"],_n=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,n)=>(a(),c("a",{class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,fn))}}),mn=$(_n,[["__scopeId","data-v-eee4e7cb"]]),kn={class:"VPSocialLinks"},$n=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),c("div",kn,[(a(!0),c(M,null,E(e.links,({link:s,icon:n,ariaLabel:i})=>(a(),b(mn,{key:s,icon:n,link:s,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),be=$($n,[["__scopeId","data-v-7bc22406"]]),bn={key:0,class:"group translations"},gn={class:"trans-title"},yn={key:1,class:"group"},Pn={class:"item appearance"},Ln={class:"label"},Vn={class:"appearance-action"},Sn={key:2,class:"group"},Tn={class:"item social-links"},In=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=L(),{localeLinks:s,currentLang:n}=J({correspondingLink:!0}),i=y(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(u,h)=>i.value?(a(),b($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[r(s).length&&r(n).label?(a(),c("div",bn,[d("p",gn,I(r(n).label),1),(a(!0),c(M,null,E(r(s),p=>(a(),b(se,{key:p.link,item:p},null,8,["item"]))),128))])):f("",!0),r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",yn,[d("div",Pn,[d("p",Ln,I(r(t).darkModeSwitchLabel||"Appearance"),1),d("div",Vn,[m(me)])])])):f("",!0),r(t).socialLinks?(a(),c("div",Sn,[d("div",Tn,[m(be,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),wn=$(In,[["__scopeId","data-v-d0bd9dde"]]),Nn=o=>(B("data-v-e5dd9c1c"),o=o(),H(),o),Mn=["aria-expanded"],An=Nn(()=>d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)),Cn=[An],Bn=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),c("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},Cn,10,Mn))}}),Hn=$(Bn,[["__scopeId","data-v-e5dd9c1c"]]),En=["innerHTML"],Dn=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,s)=>(a(),b(D,{class:N({VPNavBarMenuLink:!0,active:r(j)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[d("span",{innerHTML:t.item.text},null,8,En)]),_:1},8,["class","href","noIcon","target","rel"]))}}),Fn=$(Dn,[["__scopeId","data-v-9c663999"]]),On=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=L(),s=i=>"link"in i?j(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(s),n=y(()=>s(e.item));return(i,u)=>(a(),b($e,{class:N({VPNavBarMenuGroup:!0,active:r(j)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Un=o=>(B("data-v-7f418b0f"),o=o(),H(),o),Gn={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},jn=Un(()=>d("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),zn=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=L();return(t,s)=>r(e).nav?(a(),c("nav",Gn,[jn,(a(!0),c(M,null,E(r(e).nav,n=>(a(),c(M,{key:n.text},["link"in n?(a(),b(Fn,{key:0,item:n},null,8,["item"])):(a(),b(On,{key:1,item:n},null,8,["item"]))],64))),128))])):f("",!0)}}),qn=$(zn,[["__scopeId","data-v-7f418b0f"]]);function Kn(o){const{localeIndex:e,theme:t}=L();function s(n){var A,C,S;const i=n.split("."),u=(A=t.value.search)==null?void 0:A.options,h=u&&typeof u=="object",p=h&&((S=(C=u.locales)==null?void 0:C[e.value])==null?void 0:S.translations)||null,g=h&&u.translations||null;let k=p,P=g,V=o;const T=i.pop();for(const U of i){let G=null;const R=V==null?void 0:V[U];R&&(G=V=R);const ne=P==null?void 0:P[U];ne&&(G=P=ne);const ae=k==null?void 0:k[U];ae&&(G=k=ae),R||(V=G),ne||(P=G),ae||(k=G)}return(k==null?void 0:k[T])??(P==null?void 0:P[T])??(V==null?void 0:V[T])??""}return s}const Rn=["aria-label"],Wn={class:"DocSearch-Button-Container"},Jn=d("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),Yn={class:"DocSearch-Button-Placeholder"},Qn=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1),ge=_({__name:"VPNavBarSearchButton",setup(o){const t=Kn({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[d("span",Wn,[Jn,d("span",Yn,I(r(t)("button.buttonText")),1)]),Qn],8,Rn))}}),Xn={class:"VPNavBarSearch"},Zn={id:"local-search"},xn={key:1,id:"docsearch"},ea=_({__name:"VPNavBarSearch",setup(o){const e=Ye(()=>Qe(()=>import("./VPLocalSearchBox.BPp8O5TV.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=L(),n=w(!1),i=w(!1);z(()=>{});function u(){n.value||(n.value=!0,setTimeout(h,16))}function h(){const P=new Event("keydown");P.key="k",P.metaKey=!0,window.dispatchEvent(P),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||h()},16)}function p(P){const V=P.target,T=V.tagName;return V.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const g=w(!1);le("k",P=>{(P.ctrlKey||P.metaKey)&&(P.preventDefault(),g.value=!0)}),le("/",P=>{p(P)||(P.preventDefault(),g.value=!0)});const k="local";return(P,V)=>{var T;return a(),c("div",Xn,[r(k)==="local"?(a(),c(M,{key:0},[g.value?(a(),b(r(e),{key:0,onClose:V[0]||(V[0]=A=>g.value=!1)})):f("",!0),d("div",Zn,[m(ge,{onClick:V[1]||(V[1]=A=>g.value=!0)})])],64)):r(k)==="algolia"?(a(),c(M,{key:1},[n.value?(a(),b(r(t),{key:0,algolia:((T=r(s).search)==null?void 0:T.options)??r(s).algolia,onVnodeBeforeMount:V[2]||(V[2]=A=>i.value=!0)},null,8,["algolia"])):f("",!0),i.value?f("",!0):(a(),c("div",xn,[m(ge,{onClick:u})]))],64)):f("",!0)])}}}),ta=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=L();return(t,s)=>r(e).socialLinks?(a(),b(be,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),oa=$(ta,[["__scopeId","data-v-0394ad82"]]),sa=["href","rel","target"],na={key:1},aa={key:2},ra=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=L(),{hasSidebar:s}=O(),{currentLang:n}=J(),i=y(()=>{var p;return typeof t.value.logoLink=="string"?t.value.logoLink:(p=t.value.logoLink)==null?void 0:p.link}),u=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.rel}),h=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.target});return(p,g)=>(a(),c("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(s)}])},[d("a",{class:"title",href:i.value??r(fe)(r(n).link),rel:u.value,target:h.value},[l(p.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),b(X,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):f("",!0),r(t).siteTitle?(a(),c("span",na,I(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),c("span",aa,I(r(e).title),1)):f("",!0),l(p.$slots,"nav-bar-title-after",{},void 0,!0)],8,sa)],2))}}),ia=$(ra,[["__scopeId","data-v-ab179fa1"]]),la={class:"items"},ca={class:"title"},ua=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=L(),{localeLinks:t,currentLang:s}=J({correspondingLink:!0});return(n,i)=>r(t).length&&r(s).label?(a(),b($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:v(()=>[d("div",la,[d("p",ca,I(r(s).label),1),(a(!0),c(M,null,E(r(t),u=>(a(),b(se,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),da=$(ua,[["__scopeId","data-v-88af2de4"]]),va=o=>(B("data-v-ccf7ddec"),o=o(),H(),o),pa={class:"wrapper"},ha={class:"container"},fa={class:"title"},_a={class:"content"},ma={class:"content-body"},ka=va(()=>d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1)),$a=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const{y:e}=Te(),{hasSidebar:t}=O(),{frontmatter:s}=L(),n=w({});return Pe(()=>{n.value={"has-sidebar":t.value,home:s.value.layout==="home",top:e.value===0}}),(i,u)=>(a(),c("div",{class:N(["VPNavBar",n.value])},[d("div",pa,[d("div",ha,[d("div",fa,[m(ia,null,{"nav-bar-title-before":v(()=>[l(i.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(i.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",_a,[d("div",ma,[l(i.$slots,"nav-bar-content-before",{},void 0,!0),m(ea,{class:"search"}),m(qn,{class:"menu"}),m(da,{class:"translations"}),m(Rs,{class:"appearance"}),m(oa,{class:"social-links"}),m(wn,{class:"extra"}),l(i.$slots,"nav-bar-content-after",{},void 0,!0),m(Hn,{class:"hamburger",active:i.isScreenOpen,onClick:u[0]||(u[0]=h=>i.$emit("toggle-screen"))},null,8,["active"])])])])]),ka],2))}}),ba=$($a,[["__scopeId","data-v-ccf7ddec"]]),ga={key:0,class:"VPNavScreenAppearance"},ya={class:"text"},Pa=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=L();return(s,n)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",ga,[d("p",ya,I(r(t).darkModeSwitchLabel||"Appearance"),1),m(me)])):f("",!0)}}),La=$(Pa,[["__scopeId","data-v-2d7af913"]]),Va=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,s)=>(a(),b(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),Sa=$(Va,[["__scopeId","data-v-7f31e1f6"]]),Ta=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,s)=>(a(),b(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:v(()=>[F(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ee=$(Ta,[["__scopeId","data-v-19976ae1"]]),Ia={class:"VPNavScreenMenuGroupSection"},wa={key:0,class:"title"},Na=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Ia,[e.text?(a(),c("p",wa,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,s=>(a(),b(Ee,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Ma=$(Na,[["__scopeId","data-v-8133b170"]]),Aa=o=>(B("data-v-ff6087d4"),o=o(),H(),o),Ca=["aria-controls","aria-expanded"],Ba=["innerHTML"],Ha=Aa(()=>d("span",{class:"vpi-plus button-icon"},null,-1)),Ea=["id"],Da={key:1,class:"group"},Fa=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=w(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,u)=>(a(),c("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[d("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[d("span",{class:"button-text",innerHTML:i.text},null,8,Ba),Ha],8,Ca),d("div",{id:s.value,class:"items"},[(a(!0),c(M,null,E(i.items,h=>(a(),c(M,{key:h.text},["link"in h?(a(),c("div",{key:h.text,class:"item"},[m(Ee,{item:h},null,8,["item"])])):(a(),c("div",Da,[m(Ma,{text:h.text,items:h.items},null,8,["text","items"])]))],64))),128))],8,Ea)],2))}}),Oa=$(Fa,[["__scopeId","data-v-ff6087d4"]]),Ua={key:0,class:"VPNavScreenMenu"},Ga=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=L();return(t,s)=>r(e).nav?(a(),c("nav",Ua,[(a(!0),c(M,null,E(r(e).nav,n=>(a(),c(M,{key:n.text},["link"in n?(a(),b(Sa,{key:0,item:n},null,8,["item"])):(a(),b(Oa,{key:1,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),ja=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=L();return(t,s)=>r(e).socialLinks?(a(),b(be,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),De=o=>(B("data-v-858fe1a4"),o=o(),H(),o),za=De(()=>d("span",{class:"vpi-languages icon lang"},null,-1)),qa=De(()=>d("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Ka={class:"list"},Ra=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=J({correspondingLink:!0}),s=w(!1);function n(){s.value=!s.value}return(i,u)=>r(e).length&&r(t).label?(a(),c("div",{key:0,class:N(["VPNavScreenTranslations",{open:s.value}])},[d("button",{class:"title",onClick:n},[za,F(" "+I(r(t).label)+" ",1),qa]),d("ul",Ka,[(a(!0),c(M,null,E(r(e),h=>(a(),c("li",{key:h.link,class:"item"},[m(D,{class:"link",href:h.link},{default:v(()=>[F(I(h.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),Wa=$(Ra,[["__scopeId","data-v-858fe1a4"]]),Ja={class:"container"},Ya=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=w(null),t=Ie(oe?document.body:null);return(s,n)=>(a(),b(ve,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:v(()=>[s.open?(a(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[d("div",Ja,[l(s.$slots,"nav-screen-content-before",{},void 0,!0),m(Ga,{class:"menu"}),m(Wa,{class:"translations"}),m(La,{class:"appearance"}),m(ja,{class:"social-links"}),l(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),Qa=$(Ya,[["__scopeId","data-v-cc5739dd"]]),Xa={key:0,class:"VPNav"},Za=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=Bs(),{frontmatter:n}=L(),i=y(()=>n.value.navbar!==!1);return we("close-screen",t),Z(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,h)=>i.value?(a(),c("header",Xa,[m(ba,{"is-screen-open":r(e),onToggleScreen:r(s)},{"nav-bar-title-before":v(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[l(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[l(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),m(Qa,{open:r(e)},{"nav-screen-content-before":v(()=>[l(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[l(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),xa=$(Za,[["__scopeId","data-v-ae24b3ad"]]),Fe=o=>(B("data-v-b8d55f3b"),o=o(),H(),o),er=["role","tabindex"],tr=Fe(()=>d("div",{class:"indicator"},null,-1)),or=Fe(()=>d("span",{class:"vpi-chevron-right caret-icon"},null,-1)),sr=[or],nr={key:1,class:"items"},ar=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:i,hasActiveLink:u,hasChildren:h,toggle:p}=gt(y(()=>e.item)),g=y(()=>h.value?"section":"div"),k=y(()=>n.value?"a":"div"),P=y(()=>h.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=y(()=>n.value?void 0:"button"),T=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":u.value}]);function A(S){"key"in S&&S.key!=="Enter"||!e.item.link&&p()}function C(){e.item.link&&p()}return(S,U)=>{const G=K("VPSidebarItem",!0);return a(),b(W(g.value),{class:N(["VPSidebarItem",T.value])},{default:v(()=>[S.item.text?(a(),c("div",Y({key:0,class:"item",role:V.value},Ze(S.item.items?{click:A,keydown:A}:{},!0),{tabindex:S.item.items&&0}),[tr,S.item.link?(a(),b(D,{key:0,tag:k.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:v(()=>[(a(),b(W(P.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),b(W(P.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null&&S.item.items&&S.item.items.length?(a(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Xe(C,["enter"]),tabindex:"0"},sr,32)):f("",!0)],16,er)):f("",!0),S.item.items&&S.item.items.length?(a(),c("div",nr,[S.depth<5?(a(!0),c(M,{key:0},E(S.item.items,R=>(a(),b(G,{key:R.text,item:R,depth:S.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),rr=$(ar,[["__scopeId","data-v-b8d55f3b"]]),Oe=o=>(B("data-v-575e6a36"),o=o(),H(),o),ir=Oe(()=>d("div",{class:"curtain"},null,-1)),lr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},cr=Oe(()=>d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),ur=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=O(),s=o,n=w(null),i=Ie(oe?document.body:null);return q([s,n],()=>{var u;s.open?(i.value=!0,(u=n.value)==null||u.focus()):i.value=!1},{immediate:!0,flush:"post"}),(u,h)=>r(t)?(a(),c("aside",{key:0,class:N(["VPSidebar",{open:u.open}]),ref_key:"navEl",ref:n,onClick:h[0]||(h[0]=xe(()=>{},["stop"]))},[ir,d("nav",lr,[cr,l(u.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),c(M,null,E(r(e),p=>(a(),c("div",{key:p.text,class:"group"},[m(rr,{item:p,depth:0},null,8,["item"])]))),128)),l(u.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),dr=$(ur,[["__scopeId","data-v-575e6a36"]]),vr=_({__name:"VPSkipLink",setup(o){const e=ee(),t=w();q(()=>e.path,()=>t.value.focus());function s({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),c(M,null,[d("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),pr=$(vr,[["__scopeId","data-v-0f60ec36"]]),hr=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=O(),n=ee();q(()=>n.path,s),bt(e,s);const{frontmatter:i}=L(),u=et(),h=y(()=>!!u["home-hero-image"]);return we("hero-image-slot-exists",h),(p,g)=>{const k=K("Content");return r(i).layout!==!1?(a(),c("div",{key:0,class:N(["Layout",r(i).pageClass])},[l(p.$slots,"layout-top",{},void 0,!0),m(pr),m(at,{class:"backdrop",show:r(e),onClick:r(s)},null,8,["show","onClick"]),m(xa,null,{"nav-bar-title-before":v(()=>[l(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[l(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[l(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[l(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[l(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),m(Cs,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),m(dr,{open:r(e)},{"sidebar-nav-before":v(()=>[l(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[l(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),m(ps,null,{"page-top":v(()=>[l(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[l(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[l(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[l(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[l(p.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(p.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(p.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[l(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[l(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[l(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[l(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[l(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[l(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[l(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[l(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[l(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[l(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[l(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),m(ks),l(p.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),b(k,{key:1}))}}}),fr=$(hr,[["__scopeId","data-v-5d98c3a5"]]),ye={Layout:fr,enhanceApp:({app:o})=>{o.component("Badge",ot)}},mr={extends:ye,Layout:()=>tt(ye.Layout,null,{}),enhanceApp({app:o,router:e,siteData:t}){}};export{mr as R,Kn as c,L as u}; +const __vite__fileDeps=["assets/chunks/VPLocalSearchBox.BQZq6Q21.js","assets/chunks/framework.-Zveb6AF.js"],__vite__mapDeps=i=>i.map(i=>__vite__fileDeps[i]); +import{d as _,o as a,c,r as l,n as N,a as F,t as I,b,w as v,T as ve,e as f,_ as $,u as Ue,i as Ge,f as je,g as pe,h as y,j as w,k as z,l as d,m as r,p as B,q as H,s as j,v as ie,x as q,y as Z,z as he,A as Pe,B as ze,C as qe,D as K,F as M,E,G as Le,H as x,I as m,J as W,K as Ve,L as ee,M as Y,N as te,O as Ke,P as Se,Q as Re,R as le,S as We,U as Te,V as oe,W as Je,X as Ye,Y as Qe,Z as Ie,$ as we,a0 as Xe,a1 as Ze,a2 as xe,a3 as et,a4 as tt}from"./framework.-Zveb6AF.js";const ot=_({__name:"VPBadge",props:{text:{},type:{default:"tip"}},setup(o){return(e,t)=>(a(),c("span",{class:N(["VPBadge",e.type])},[l(e.$slots,"default",{},()=>[F(I(e.text),1)])],2))}}),st={key:0,class:"VPBackdrop"},nt=_({__name:"VPBackdrop",props:{show:{type:Boolean}},setup(o){return(e,t)=>(a(),b(ve,{name:"fade"},{default:v(()=>[e.show?(a(),c("div",st)):f("",!0)]),_:1}))}}),at=$(nt,[["__scopeId","data-v-c79a1216"]]),L=Ue;function rt(o,e){let t,s=!1;return()=>{t&&clearTimeout(t),s?t=setTimeout(o,e):(o(),(s=!0)&&setTimeout(()=>s=!1,e))}}function ce(o){return/^\//.test(o)?o:`/${o}`}function fe(o){const{pathname:e,search:t,hash:s,protocol:n}=new URL(o,"http://a.com");if(Ge(o)||o.startsWith("#")||!n.startsWith("http")||!je(e))return o;const{site:i}=L(),u=e.endsWith("/")||e.endsWith(".html")?o:o.replace(/(?:(^\.+)\/)?.*$/,`$1${e.replace(/(\.md)?$/,i.value.cleanUrls?"":".html")}${t}${s}`);return pe(u)}function J({removeCurrent:o=!0,correspondingLink:e=!1}={}){const{site:t,localeIndex:s,page:n,theme:i,hash:u}=L(),h=y(()=>{var g,k;return{label:(g=t.value.locales[s.value])==null?void 0:g.label,link:((k=t.value.locales[s.value])==null?void 0:k.link)||(s.value==="root"?"/":`/${s.value}/`)}});return{localeLinks:y(()=>Object.entries(t.value.locales).flatMap(([g,k])=>o&&h.value.label===k.label?[]:{text:k.label,link:it(k.link||(g==="root"?"/":`/${g}/`),i.value.i18nRouting!==!1&&e,n.value.relativePath.slice(h.value.link.length-1),!t.value.cleanUrls)+u.value})),currentLang:h}}function it(o,e,t,s){return e?o.replace(/\/$/,"")+ce(t.replace(/(^|\/)index\.md$/,"$1").replace(/\.md$/,s?".html":"")):o}const lt=o=>(B("data-v-f87ff6e4"),o=o(),H(),o),ct={class:"NotFound"},ut={class:"code"},dt={class:"title"},vt=lt(()=>d("div",{class:"divider"},null,-1)),pt={class:"quote"},ht={class:"action"},ft=["href","aria-label"],_t=_({__name:"NotFound",setup(o){const{site:e,theme:t}=L(),{localeLinks:s}=J({removeCurrent:!1}),n=w("/");return z(()=>{var u;const i=window.location.pathname.replace(e.value.base,"").replace(/(^.*?\/).*$/,"/$1");s.value.length&&(n.value=((u=s.value.find(({link:h})=>h.startsWith(i)))==null?void 0:u.link)||s.value[0].link)}),(i,u)=>{var h,p,g,k,P;return a(),c("div",ct,[d("p",ut,I(((h=r(t).notFound)==null?void 0:h.code)??"404"),1),d("h1",dt,I(((p=r(t).notFound)==null?void 0:p.title)??"PAGE NOT FOUND"),1),vt,d("blockquote",pt,I(((g=r(t).notFound)==null?void 0:g.quote)??"But if you don't change your direction, and if you keep looking, you may end up where you are heading."),1),d("div",ht,[d("a",{class:"link",href:r(pe)(n.value),"aria-label":((k=r(t).notFound)==null?void 0:k.linkLabel)??"go to home"},I(((P=r(t).notFound)==null?void 0:P.linkText)??"Take me home"),9,ft)])])}}}),mt=$(_t,[["__scopeId","data-v-f87ff6e4"]]);function Ne(o,e){if(Array.isArray(o))return Q(o);if(o==null)return[];e=ce(e);const t=Object.keys(o).sort((n,i)=>i.split("/").length-n.split("/").length).find(n=>e.startsWith(ce(n))),s=t?o[t]:[];return Array.isArray(s)?Q(s):Q(s.items,s.base)}function kt(o){const e=[];let t=0;for(const s in o){const n=o[s];if(n.items){t=e.push(n);continue}e[t]||e.push({items:[]}),e[t].items.push(n)}return e}function $t(o){const e=[];function t(s){for(const n of s)n.text&&n.link&&e.push({text:n.text,link:n.link,docFooterText:n.docFooterText}),n.items&&t(n.items)}return t(o),e}function ue(o,e){return Array.isArray(e)?e.some(t=>ue(o,t)):j(o,e.link)?!0:e.items?ue(o,e.items):!1}function Q(o,e){return[...o].map(t=>{const s={...t},n=s.base||e;return n&&s.link&&(s.link=n+s.link),s.items&&(s.items=Q(s.items,n)),s})}function O(){const{frontmatter:o,page:e,theme:t}=L(),s=ie("(min-width: 960px)"),n=w(!1),i=y(()=>{const C=t.value.sidebar,S=e.value.relativePath;return C?Ne(C,S):[]}),u=w(i.value);q(i,(C,S)=>{JSON.stringify(C)!==JSON.stringify(S)&&(u.value=i.value)});const h=y(()=>o.value.sidebar!==!1&&u.value.length>0&&o.value.layout!=="home"),p=y(()=>g?o.value.aside==null?t.value.aside==="left":o.value.aside==="left":!1),g=y(()=>o.value.layout==="home"?!1:o.value.aside!=null?!!o.value.aside:t.value.aside!==!1),k=y(()=>h.value&&s.value),P=y(()=>h.value?kt(u.value):[]);function V(){n.value=!0}function T(){n.value=!1}function A(){n.value?T():V()}return{isOpen:n,sidebar:u,sidebarGroups:P,hasSidebar:h,hasAside:g,leftAside:p,isSidebarEnabled:k,open:V,close:T,toggle:A}}function bt(o,e){let t;Z(()=>{t=o.value?document.activeElement:void 0}),z(()=>{window.addEventListener("keyup",s)}),he(()=>{window.removeEventListener("keyup",s)});function s(n){n.key==="Escape"&&o.value&&(e(),t==null||t.focus())}}function gt(o){const{page:e,hash:t}=L(),s=w(!1),n=y(()=>o.value.collapsed!=null),i=y(()=>!!o.value.link),u=w(!1),h=()=>{u.value=j(e.value.relativePath,o.value.link)};q([e,o,t],h),z(h);const p=y(()=>u.value?!0:o.value.items?ue(e.value.relativePath,o.value.items):!1),g=y(()=>!!(o.value.items&&o.value.items.length));Z(()=>{s.value=!!(n.value&&o.value.collapsed)}),Pe(()=>{(u.value||p.value)&&(s.value=!1)});function k(){n.value&&(s.value=!s.value)}return{collapsed:s,collapsible:n,isLink:i,isActiveLink:u,hasActiveLink:p,hasChildren:g,toggle:k}}function yt(){const{hasSidebar:o}=O(),e=ie("(min-width: 960px)"),t=ie("(min-width: 1280px)");return{isAsideEnabled:y(()=>!t.value&&!e.value?!1:o.value?t.value:e.value)}}const de=[];function Me(o){return typeof o.outline=="object"&&!Array.isArray(o.outline)&&o.outline.label||o.outlineTitle||"On this page"}function _e(o){const e=[...document.querySelectorAll(".VPDoc :where(h1,h2,h3,h4,h5,h6)")].filter(t=>t.id&&t.hasChildNodes()).map(t=>{const s=Number(t.tagName[1]);return{element:t,title:Pt(t),link:"#"+t.id,level:s}});return Lt(e,o)}function Pt(o){let e="";for(const t of o.childNodes)if(t.nodeType===1){if(t.classList.contains("VPBadge")||t.classList.contains("header-anchor")||t.classList.contains("ignore-header"))continue;e+=t.textContent}else t.nodeType===3&&(e+=t.textContent);return e.trim()}function Lt(o,e){if(e===!1)return[];const t=(typeof e=="object"&&!Array.isArray(e)?e.level:e)||2,[s,n]=typeof t=="number"?[t,t]:t==="deep"?[2,6]:t;o=o.filter(u=>u.level>=s&&u.level<=n),de.length=0;for(const{element:u,link:h}of o)de.push({element:u,link:h});const i=[];e:for(let u=0;u=0;p--){const g=o[p];if(g.level{requestAnimationFrame(i),window.addEventListener("scroll",s)}),ze(()=>{u(location.hash)}),he(()=>{window.removeEventListener("scroll",s)});function i(){if(!t.value)return;const h=window.scrollY,p=window.innerHeight,g=document.body.offsetHeight,k=Math.abs(h+p-g)<1,P=de.map(({element:T,link:A})=>({link:A,top:St(T)})).filter(({top:T})=>!Number.isNaN(T)).sort((T,A)=>T.top-A.top);if(!P.length){u(null);return}if(h<1){u(null);return}if(k){u(P[P.length-1].link);return}let V=null;for(const{link:T,top:A}of P){if(A>h+qe()+4)break;V=T}u(V)}function u(h){n&&n.classList.remove("active"),h==null?n=null:n=o.value.querySelector(`a[href="${decodeURIComponent(h)}"]`);const p=n;p?(p.classList.add("active"),e.value.style.top=p.offsetTop+39+"px",e.value.style.opacity="1"):(e.value.style.top="33px",e.value.style.opacity="0")}}function St(o){let e=0;for(;o!==document.body;){if(o===null)return NaN;e+=o.offsetTop,o=o.offsetParent}return e}const Tt=["href","title"],It=_({__name:"VPDocOutlineItem",props:{headers:{},root:{type:Boolean}},setup(o){function e({target:t}){const s=t.href.split("#")[1],n=document.getElementById(decodeURIComponent(s));n==null||n.focus({preventScroll:!0})}return(t,s)=>{const n=K("VPDocOutlineItem",!0);return a(),c("ul",{class:N(["VPDocOutlineItem",t.root?"root":"nested"])},[(a(!0),c(M,null,E(t.headers,({children:i,link:u,title:h})=>(a(),c("li",null,[d("a",{class:"outline-link",href:u,onClick:e,title:h},I(h),9,Tt),i!=null&&i.length?(a(),b(n,{key:0,headers:i},null,8,["headers"])):f("",!0)]))),256))],2)}}}),Ae=$(It,[["__scopeId","data-v-b933a997"]]),wt=o=>(B("data-v-935f8a84"),o=o(),H(),o),Nt={class:"content"},Mt={class:"outline-title",role:"heading","aria-level":"2"},At={"aria-labelledby":"doc-outline-aria-label"},Ct=wt(()=>d("span",{class:"visually-hidden",id:"doc-outline-aria-label"}," Table of Contents for current page ",-1)),Bt=_({__name:"VPDocAsideOutline",setup(o){const{frontmatter:e,theme:t}=L(),s=Le([]);x(()=>{s.value=_e(e.value.outline??t.value.outline)});const n=w(),i=w();return Vt(n,i),(u,h)=>(a(),c("div",{class:N(["VPDocAsideOutline",{"has-outline":s.value.length>0}]),ref_key:"container",ref:n,role:"navigation"},[d("div",Nt,[d("div",{class:"outline-marker",ref_key:"marker",ref:i},null,512),d("div",Mt,I(r(Me)(r(t))),1),d("nav",At,[Ct,m(Ae,{headers:s.value,root:!0},null,8,["headers"])])])],2))}}),Ht=$(Bt,[["__scopeId","data-v-935f8a84"]]),Et={class:"VPDocAsideCarbonAds"},Dt=_({__name:"VPDocAsideCarbonAds",props:{carbonAds:{}},setup(o){const e=()=>null;return(t,s)=>(a(),c("div",Et,[m(r(e),{"carbon-ads":t.carbonAds},null,8,["carbon-ads"])]))}}),Ft=o=>(B("data-v-3f215769"),o=o(),H(),o),Ot={class:"VPDocAside"},Ut=Ft(()=>d("div",{class:"spacer"},null,-1)),Gt=_({__name:"VPDocAside",setup(o){const{theme:e}=L();return(t,s)=>(a(),c("div",Ot,[l(t.$slots,"aside-top",{},void 0,!0),l(t.$slots,"aside-outline-before",{},void 0,!0),m(Ht),l(t.$slots,"aside-outline-after",{},void 0,!0),Ut,l(t.$slots,"aside-ads-before",{},void 0,!0),r(e).carbonAds?(a(),b(Dt,{key:0,"carbon-ads":r(e).carbonAds},null,8,["carbon-ads"])):f("",!0),l(t.$slots,"aside-ads-after",{},void 0,!0),l(t.$slots,"aside-bottom",{},void 0,!0)]))}}),jt=$(Gt,[["__scopeId","data-v-3f215769"]]);function zt(){const{theme:o,page:e}=L();return y(()=>{const{text:t="Edit this page",pattern:s=""}=o.value.editLink||{};let n;return typeof s=="function"?n=s(e.value):n=s.replace(/:path/g,e.value.filePath),{url:n,text:t}})}function qt(){const{page:o,theme:e,frontmatter:t}=L();return y(()=>{var g,k,P,V,T,A,C,S;const s=Ne(e.value.sidebar,o.value.relativePath),n=$t(s),i=Kt(n,U=>U.link.replace(/[?#].*$/,"")),u=i.findIndex(U=>j(o.value.relativePath,U.link)),h=((g=e.value.docFooter)==null?void 0:g.prev)===!1&&!t.value.prev||t.value.prev===!1,p=((k=e.value.docFooter)==null?void 0:k.next)===!1&&!t.value.next||t.value.next===!1;return{prev:h?void 0:{text:(typeof t.value.prev=="string"?t.value.prev:typeof t.value.prev=="object"?t.value.prev.text:void 0)??((P=i[u-1])==null?void 0:P.docFooterText)??((V=i[u-1])==null?void 0:V.text),link:(typeof t.value.prev=="object"?t.value.prev.link:void 0)??((T=i[u-1])==null?void 0:T.link)},next:p?void 0:{text:(typeof t.value.next=="string"?t.value.next:typeof t.value.next=="object"?t.value.next.text:void 0)??((A=i[u+1])==null?void 0:A.docFooterText)??((C=i[u+1])==null?void 0:C.text),link:(typeof t.value.next=="object"?t.value.next.link:void 0)??((S=i[u+1])==null?void 0:S.link)}}})}function Kt(o,e){const t=new Set;return o.filter(s=>{const n=e(s);return t.has(n)?!1:t.add(n)})}const D=_({__name:"VPLink",props:{tag:{},href:{},noIcon:{type:Boolean},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.tag??(e.href?"a":"span")),s=y(()=>e.href&&Ve.test(e.href));return(n,i)=>(a(),b(W(t.value),{class:N(["VPLink",{link:n.href,"vp-external-link-icon":s.value,"no-icon":n.noIcon}]),href:n.href?r(fe)(n.href):void 0,target:n.target??(s.value?"_blank":void 0),rel:n.rel??(s.value?"noreferrer":void 0)},{default:v(()=>[l(n.$slots,"default")]),_:3},8,["class","href","target","rel"]))}}),Rt={class:"VPLastUpdated"},Wt=["datetime"],Jt=_({__name:"VPDocFooterLastUpdated",setup(o){const{theme:e,page:t,frontmatter:s,lang:n}=L(),i=y(()=>new Date(s.value.lastUpdated??t.value.lastUpdated)),u=y(()=>i.value.toISOString()),h=w("");return z(()=>{Z(()=>{var p,g,k;h.value=new Intl.DateTimeFormat((g=(p=e.value.lastUpdated)==null?void 0:p.formatOptions)!=null&&g.forceLocale?n.value:void 0,((k=e.value.lastUpdated)==null?void 0:k.formatOptions)??{dateStyle:"short",timeStyle:"short"}).format(i.value)})}),(p,g)=>{var k;return a(),c("p",Rt,[F(I(((k=r(e).lastUpdated)==null?void 0:k.text)||r(e).lastUpdatedText||"Last updated")+": ",1),d("time",{datetime:u.value},I(h.value),9,Wt)])}}}),Yt=$(Jt,[["__scopeId","data-v-7e05ebdb"]]),Qt=o=>(B("data-v-09de1c0f"),o=o(),H(),o),Xt={key:0,class:"VPDocFooter"},Zt={key:0,class:"edit-info"},xt={key:0,class:"edit-link"},eo=Qt(()=>d("span",{class:"vpi-square-pen edit-link-icon"},null,-1)),to={key:1,class:"last-updated"},oo={key:1,class:"prev-next"},so={class:"pager"},no=["innerHTML"],ao=["innerHTML"],ro={class:"pager"},io=["innerHTML"],lo=["innerHTML"],co=_({__name:"VPDocFooter",setup(o){const{theme:e,page:t,frontmatter:s}=L(),n=zt(),i=qt(),u=y(()=>e.value.editLink&&s.value.editLink!==!1),h=y(()=>t.value.lastUpdated&&s.value.lastUpdated!==!1),p=y(()=>u.value||h.value||i.value.prev||i.value.next);return(g,k)=>{var P,V,T,A;return p.value?(a(),c("footer",Xt,[l(g.$slots,"doc-footer-before",{},void 0,!0),u.value||h.value?(a(),c("div",Zt,[u.value?(a(),c("div",xt,[m(D,{class:"edit-link-button",href:r(n).url,"no-icon":!0},{default:v(()=>[eo,F(" "+I(r(n).text),1)]),_:1},8,["href"])])):f("",!0),h.value?(a(),c("div",to,[m(Yt)])):f("",!0)])):f("",!0),(P=r(i).prev)!=null&&P.link||(V=r(i).next)!=null&&V.link?(a(),c("nav",oo,[d("div",so,[(T=r(i).prev)!=null&&T.link?(a(),b(D,{key:0,class:"pager-link prev",href:r(i).prev.link},{default:v(()=>{var C;return[d("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.prev)||"Previous page"},null,8,no),d("span",{class:"title",innerHTML:r(i).prev.text},null,8,ao)]}),_:1},8,["href"])):f("",!0)]),d("div",ro,[(A=r(i).next)!=null&&A.link?(a(),b(D,{key:0,class:"pager-link next",href:r(i).next.link},{default:v(()=>{var C;return[d("span",{class:"desc",innerHTML:((C=r(e).docFooter)==null?void 0:C.next)||"Next page"},null,8,io),d("span",{class:"title",innerHTML:r(i).next.text},null,8,lo)]}),_:1},8,["href"])):f("",!0)])])):f("",!0)])):f("",!0)}}}),uo=$(co,[["__scopeId","data-v-09de1c0f"]]),vo=o=>(B("data-v-39a288b8"),o=o(),H(),o),po={class:"container"},ho=vo(()=>d("div",{class:"aside-curtain"},null,-1)),fo={class:"aside-container"},_o={class:"aside-content"},mo={class:"content"},ko={class:"content-container"},$o={class:"main"},bo=_({__name:"VPDoc",setup(o){const{theme:e}=L(),t=ee(),{hasSidebar:s,hasAside:n,leftAside:i}=O(),u=y(()=>t.path.replace(/[./]+/g,"_").replace(/_html$/,""));return(h,p)=>{const g=K("Content");return a(),c("div",{class:N(["VPDoc",{"has-sidebar":r(s),"has-aside":r(n)}])},[l(h.$slots,"doc-top",{},void 0,!0),d("div",po,[r(n)?(a(),c("div",{key:0,class:N(["aside",{"left-aside":r(i)}])},[ho,d("div",fo,[d("div",_o,[m(jt,null,{"aside-top":v(()=>[l(h.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[l(h.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[l(h.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(h.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(h.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(h.$slots,"aside-ads-after",{},void 0,!0)]),_:3})])])],2)):f("",!0),d("div",mo,[d("div",ko,[l(h.$slots,"doc-before",{},void 0,!0),d("main",$o,[m(g,{class:N(["vp-doc",[u.value,r(e).externalLinkIcon&&"external-link-icon-enabled"]])},null,8,["class"])]),m(uo,null,{"doc-footer-before":v(()=>[l(h.$slots,"doc-footer-before",{},void 0,!0)]),_:3}),l(h.$slots,"doc-after",{},void 0,!0)])])]),l(h.$slots,"doc-bottom",{},void 0,!0)],2)}}}),go=$(bo,[["__scopeId","data-v-39a288b8"]]),yo=_({__name:"VPButton",props:{tag:{},size:{default:"medium"},theme:{default:"brand"},text:{},href:{},target:{},rel:{}},setup(o){const e=o,t=y(()=>e.href&&Ve.test(e.href)),s=y(()=>e.tag||e.href?"a":"button");return(n,i)=>(a(),b(W(s.value),{class:N(["VPButton",[n.size,n.theme]]),href:n.href?r(fe)(n.href):void 0,target:e.target??(t.value?"_blank":void 0),rel:e.rel??(t.value?"noreferrer":void 0)},{default:v(()=>[F(I(n.text),1)]),_:1},8,["class","href","target","rel"]))}}),Po=$(yo,[["__scopeId","data-v-cad61b99"]]),Lo=["src","alt"],Vo=_({inheritAttrs:!1,__name:"VPImage",props:{image:{},alt:{}},setup(o){return(e,t)=>{const s=K("VPImage",!0);return e.image?(a(),c(M,{key:0},[typeof e.image=="string"||"src"in e.image?(a(),c("img",Y({key:0,class:"VPImage"},typeof e.image=="string"?e.$attrs:{...e.image,...e.$attrs},{src:r(pe)(typeof e.image=="string"?e.image:e.image.src),alt:e.alt??(typeof e.image=="string"?"":e.image.alt||"")}),null,16,Lo)):(a(),c(M,{key:1},[m(s,Y({class:"dark",image:e.image.dark,alt:e.image.alt},e.$attrs),null,16,["image","alt"]),m(s,Y({class:"light",image:e.image.light,alt:e.image.alt},e.$attrs),null,16,["image","alt"])],64))],64)):f("",!0)}}}),X=$(Vo,[["__scopeId","data-v-8426fc1a"]]),So=o=>(B("data-v-303bb580"),o=o(),H(),o),To={class:"container"},Io={class:"main"},wo={key:0,class:"name"},No=["innerHTML"],Mo=["innerHTML"],Ao=["innerHTML"],Co={key:0,class:"actions"},Bo={key:0,class:"image"},Ho={class:"image-container"},Eo=So(()=>d("div",{class:"image-bg"},null,-1)),Do=_({__name:"VPHero",props:{name:{},text:{},tagline:{},image:{},actions:{}},setup(o){const e=te("hero-image-slot-exists");return(t,s)=>(a(),c("div",{class:N(["VPHero",{"has-image":t.image||r(e)}])},[d("div",To,[d("div",Io,[l(t.$slots,"home-hero-info-before",{},void 0,!0),l(t.$slots,"home-hero-info",{},()=>[t.name?(a(),c("h1",wo,[d("span",{innerHTML:t.name,class:"clip"},null,8,No)])):f("",!0),t.text?(a(),c("p",{key:1,innerHTML:t.text,class:"text"},null,8,Mo)):f("",!0),t.tagline?(a(),c("p",{key:2,innerHTML:t.tagline,class:"tagline"},null,8,Ao)):f("",!0)],!0),l(t.$slots,"home-hero-info-after",{},void 0,!0),t.actions?(a(),c("div",Co,[(a(!0),c(M,null,E(t.actions,n=>(a(),c("div",{key:n.link,class:"action"},[m(Po,{tag:"a",size:"medium",theme:n.theme,text:n.text,href:n.link,target:n.target,rel:n.rel},null,8,["theme","text","href","target","rel"])]))),128))])):f("",!0),l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),t.image||r(e)?(a(),c("div",Bo,[d("div",Ho,[Eo,l(t.$slots,"home-hero-image",{},()=>[t.image?(a(),b(X,{key:0,class:"image-src",image:t.image},null,8,["image"])):f("",!0)],!0)])])):f("",!0)])],2))}}),Fo=$(Do,[["__scopeId","data-v-303bb580"]]),Oo=_({__name:"VPHomeHero",setup(o){const{frontmatter:e}=L();return(t,s)=>r(e).hero?(a(),b(Fo,{key:0,class:"VPHomeHero",name:r(e).hero.name,text:r(e).hero.text,tagline:r(e).hero.tagline,image:r(e).hero.image,actions:r(e).hero.actions},{"home-hero-info-before":v(()=>[l(t.$slots,"home-hero-info-before")]),"home-hero-info":v(()=>[l(t.$slots,"home-hero-info")]),"home-hero-info-after":v(()=>[l(t.$slots,"home-hero-info-after")]),"home-hero-actions-after":v(()=>[l(t.$slots,"home-hero-actions-after")]),"home-hero-image":v(()=>[l(t.$slots,"home-hero-image")]),_:3},8,["name","text","tagline","image","actions"])):f("",!0)}}),Uo=o=>(B("data-v-a3976bdc"),o=o(),H(),o),Go={class:"box"},jo={key:0,class:"icon"},zo=["innerHTML"],qo=["innerHTML"],Ko=["innerHTML"],Ro={key:4,class:"link-text"},Wo={class:"link-text-value"},Jo=Uo(()=>d("span",{class:"vpi-arrow-right link-text-icon"},null,-1)),Yo=_({__name:"VPFeature",props:{icon:{},title:{},details:{},link:{},linkText:{},rel:{},target:{}},setup(o){return(e,t)=>(a(),b(D,{class:"VPFeature",href:e.link,rel:e.rel,target:e.target,"no-icon":!0,tag:e.link?"a":"div"},{default:v(()=>[d("article",Go,[typeof e.icon=="object"&&e.icon.wrap?(a(),c("div",jo,[m(X,{image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])])):typeof e.icon=="object"?(a(),b(X,{key:1,image:e.icon,alt:e.icon.alt,height:e.icon.height||48,width:e.icon.width||48},null,8,["image","alt","height","width"])):e.icon?(a(),c("div",{key:2,class:"icon",innerHTML:e.icon},null,8,zo)):f("",!0),d("h2",{class:"title",innerHTML:e.title},null,8,qo),e.details?(a(),c("p",{key:3,class:"details",innerHTML:e.details},null,8,Ko)):f("",!0),e.linkText?(a(),c("div",Ro,[d("p",Wo,[F(I(e.linkText)+" ",1),Jo])])):f("",!0)])]),_:1},8,["href","rel","target","tag"]))}}),Qo=$(Yo,[["__scopeId","data-v-a3976bdc"]]),Xo={key:0,class:"VPFeatures"},Zo={class:"container"},xo={class:"items"},es=_({__name:"VPFeatures",props:{features:{}},setup(o){const e=o,t=y(()=>{const s=e.features.length;if(s){if(s===2)return"grid-2";if(s===3)return"grid-3";if(s%3===0)return"grid-6";if(s>3)return"grid-4"}else return});return(s,n)=>s.features?(a(),c("div",Xo,[d("div",Zo,[d("div",xo,[(a(!0),c(M,null,E(s.features,i=>(a(),c("div",{key:i.title,class:N(["item",[t.value]])},[m(Qo,{icon:i.icon,title:i.title,details:i.details,link:i.link,"link-text":i.linkText,rel:i.rel,target:i.target},null,8,["icon","title","details","link","link-text","rel","target"])],2))),128))])])])):f("",!0)}}),ts=$(es,[["__scopeId","data-v-a6181336"]]),os=_({__name:"VPHomeFeatures",setup(o){const{frontmatter:e}=L();return(t,s)=>r(e).features?(a(),b(ts,{key:0,class:"VPHomeFeatures",features:r(e).features},null,8,["features"])):f("",!0)}}),ss=_({__name:"VPHomeContent",setup(o){const{width:e}=Ke({includeScrollbar:!1});return(t,s)=>(a(),c("div",{class:"vp-doc container",style:Se(r(e)?{"--vp-offset":`calc(50% - ${r(e)/2}px)`}:{})},[l(t.$slots,"default",{},void 0,!0)],4))}}),ns=$(ss,[["__scopeId","data-v-82d4af08"]]),as={class:"VPHome"},rs=_({__name:"VPHome",setup(o){const{frontmatter:e}=L();return(t,s)=>{const n=K("Content");return a(),c("div",as,[l(t.$slots,"home-hero-before",{},void 0,!0),m(Oo,null,{"home-hero-info-before":v(()=>[l(t.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(t.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(t.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(t.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(t.$slots,"home-hero-image",{},void 0,!0)]),_:3}),l(t.$slots,"home-hero-after",{},void 0,!0),l(t.$slots,"home-features-before",{},void 0,!0),m(os),l(t.$slots,"home-features-after",{},void 0,!0),r(e).markdownStyles!==!1?(a(),b(ns,{key:0},{default:v(()=>[m(n)]),_:1})):(a(),b(n,{key:1}))])}}}),is=$(rs,[["__scopeId","data-v-686f80a6"]]),ls={},cs={class:"VPPage"};function us(o,e){const t=K("Content");return a(),c("div",cs,[l(o.$slots,"page-top"),m(t),l(o.$slots,"page-bottom")])}const ds=$(ls,[["render",us]]),vs=_({__name:"VPContent",setup(o){const{page:e,frontmatter:t}=L(),{hasSidebar:s}=O();return(n,i)=>(a(),c("div",{class:N(["VPContent",{"has-sidebar":r(s),"is-home":r(t).layout==="home"}]),id:"VPContent"},[r(e).isNotFound?l(n.$slots,"not-found",{key:0},()=>[m(mt)],!0):r(t).layout==="page"?(a(),b(ds,{key:1},{"page-top":v(()=>[l(n.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[l(n.$slots,"page-bottom",{},void 0,!0)]),_:3})):r(t).layout==="home"?(a(),b(is,{key:2},{"home-hero-before":v(()=>[l(n.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[l(n.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(n.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(n.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(n.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(n.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[l(n.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[l(n.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[l(n.$slots,"home-features-after",{},void 0,!0)]),_:3})):r(t).layout&&r(t).layout!=="doc"?(a(),b(W(r(t).layout),{key:3})):(a(),b(go,{key:4},{"doc-top":v(()=>[l(n.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[l(n.$slots,"doc-bottom",{},void 0,!0)]),"doc-footer-before":v(()=>[l(n.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[l(n.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[l(n.$slots,"doc-after",{},void 0,!0)]),"aside-top":v(()=>[l(n.$slots,"aside-top",{},void 0,!0)]),"aside-outline-before":v(()=>[l(n.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(n.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(n.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(n.$slots,"aside-ads-after",{},void 0,!0)]),"aside-bottom":v(()=>[l(n.$slots,"aside-bottom",{},void 0,!0)]),_:3}))],2))}}),ps=$(vs,[["__scopeId","data-v-1428d186"]]),hs={class:"container"},fs=["innerHTML"],_s=["innerHTML"],ms=_({__name:"VPFooter",setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:s}=O();return(n,i)=>r(e).footer&&r(t).footer!==!1?(a(),c("footer",{key:0,class:N(["VPFooter",{"has-sidebar":r(s)}])},[d("div",hs,[r(e).footer.message?(a(),c("p",{key:0,class:"message",innerHTML:r(e).footer.message},null,8,fs)):f("",!0),r(e).footer.copyright?(a(),c("p",{key:1,class:"copyright",innerHTML:r(e).footer.copyright},null,8,_s)):f("",!0)])],2)):f("",!0)}}),ks=$(ms,[["__scopeId","data-v-e315a0ad"]]);function $s(){const{theme:o,frontmatter:e}=L(),t=Le([]),s=y(()=>t.value.length>0);return x(()=>{t.value=_e(e.value.outline??o.value.outline)}),{headers:t,hasLocalNav:s}}const bs=o=>(B("data-v-267dd0ed"),o=o(),H(),o),gs={class:"menu-text"},ys=bs(()=>d("span",{class:"vpi-chevron-right icon"},null,-1)),Ps={class:"header"},Ls={class:"outline"},Vs=_({__name:"VPLocalNavOutlineDropdown",props:{headers:{},navHeight:{}},setup(o){const e=o,{theme:t}=L(),s=w(!1),n=w(0),i=w(),u=w();Re(i,()=>{s.value=!1}),le("Escape",()=>{s.value=!1}),x(()=>{s.value=!1});function h(){s.value=!s.value,n.value=window.innerHeight+Math.min(window.scrollY-e.navHeight,0)}function p(k){k.target.classList.contains("outline-link")&&(u.value&&(u.value.style.transition="none"),We(()=>{s.value=!1}))}function g(){s.value=!1,window.scrollTo({top:0,left:0,behavior:"smooth"})}return(k,P)=>(a(),c("div",{class:"VPLocalNavOutlineDropdown",style:Se({"--vp-vh":n.value+"px"}),ref_key:"main",ref:i},[k.headers.length>0?(a(),c("button",{key:0,onClick:h,class:N({open:s.value})},[d("span",gs,I(r(Me)(r(t))),1),ys],2)):(a(),c("button",{key:1,onClick:g},I(r(t).returnToTopLabel||"Return to top"),1)),m(ve,{name:"flyout"},{default:v(()=>[s.value?(a(),c("div",{key:0,ref_key:"items",ref:u,class:"items",onClick:p},[d("div",Ps,[d("a",{class:"top-link",href:"#",onClick:g},I(r(t).returnToTopLabel||"Return to top"),1)]),d("div",Ls,[m(Ae,{headers:k.headers},null,8,["headers"])])],512)):f("",!0)]),_:1})],4))}}),Ss=$(Vs,[["__scopeId","data-v-267dd0ed"]]),Ts=o=>(B("data-v-a6f0e41e"),o=o(),H(),o),Is={class:"container"},ws=["aria-expanded"],Ns=Ts(()=>d("span",{class:"vpi-align-left menu-icon"},null,-1)),Ms={class:"menu-text"},As=_({__name:"VPLocalNav",props:{open:{type:Boolean}},emits:["open-menu"],setup(o){const{theme:e,frontmatter:t}=L(),{hasSidebar:s}=O(),{headers:n}=$s(),{y:i}=Te(),u=w(0);z(()=>{u.value=parseInt(getComputedStyle(document.documentElement).getPropertyValue("--vp-nav-height"))}),x(()=>{n.value=_e(t.value.outline??e.value.outline)});const h=y(()=>n.value.length===0),p=y(()=>h.value&&!s.value),g=y(()=>({VPLocalNav:!0,"has-sidebar":s.value,empty:h.value,fixed:p.value}));return(k,P)=>r(t).layout!=="home"&&(!p.value||r(i)>=u.value)?(a(),c("div",{key:0,class:N(g.value)},[d("div",Is,[r(s)?(a(),c("button",{key:0,class:"menu","aria-expanded":k.open,"aria-controls":"VPSidebarNav",onClick:P[0]||(P[0]=V=>k.$emit("open-menu"))},[Ns,d("span",Ms,I(r(e).sidebarMenuLabel||"Menu"),1)],8,ws)):f("",!0),m(Ss,{headers:r(n),navHeight:u.value},null,8,["headers","navHeight"])])],2)):f("",!0)}}),Cs=$(As,[["__scopeId","data-v-a6f0e41e"]]);function Bs(){const o=w(!1);function e(){o.value=!0,window.addEventListener("resize",n)}function t(){o.value=!1,window.removeEventListener("resize",n)}function s(){o.value?t():e()}function n(){window.outerWidth>=768&&t()}const i=ee();return q(()=>i.path,t),{isScreenOpen:o,openScreen:e,closeScreen:t,toggleScreen:s}}const Hs={},Es={class:"VPSwitch",type:"button",role:"switch"},Ds={class:"check"},Fs={key:0,class:"icon"};function Os(o,e){return a(),c("button",Es,[d("span",Ds,[o.$slots.default?(a(),c("span",Fs,[l(o.$slots,"default",{},void 0,!0)])):f("",!0)])])}const Us=$(Hs,[["render",Os],["__scopeId","data-v-1d5665e3"]]),Ce=o=>(B("data-v-d1f28634"),o=o(),H(),o),Gs=Ce(()=>d("span",{class:"vpi-sun sun"},null,-1)),js=Ce(()=>d("span",{class:"vpi-moon moon"},null,-1)),zs=_({__name:"VPSwitchAppearance",setup(o){const{isDark:e,theme:t}=L(),s=te("toggle-appearance",()=>{e.value=!e.value}),n=y(()=>e.value?t.value.lightModeSwitchTitle||"Switch to light theme":t.value.darkModeSwitchTitle||"Switch to dark theme");return(i,u)=>(a(),b(Us,{title:n.value,class:"VPSwitchAppearance","aria-checked":r(e),onClick:r(s)},{default:v(()=>[Gs,js]),_:1},8,["title","aria-checked","onClick"]))}}),me=$(zs,[["__scopeId","data-v-d1f28634"]]),qs={key:0,class:"VPNavBarAppearance"},Ks=_({__name:"VPNavBarAppearance",setup(o){const{site:e}=L();return(t,s)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",qs,[m(me)])):f("",!0)}}),Rs=$(Ks,[["__scopeId","data-v-e6aabb21"]]),ke=w();let Be=!1,re=0;function Ws(o){const e=w(!1);if(oe){!Be&&Js(),re++;const t=q(ke,s=>{var n,i,u;s===o.el.value||(n=o.el.value)!=null&&n.contains(s)?(e.value=!0,(i=o.onFocus)==null||i.call(o)):(e.value=!1,(u=o.onBlur)==null||u.call(o))});he(()=>{t(),re--,re||Ys()})}return Je(e)}function Js(){document.addEventListener("focusin",He),Be=!0,ke.value=document.activeElement}function Ys(){document.removeEventListener("focusin",He)}function He(){ke.value=document.activeElement}const Qs={class:"VPMenuLink"},Xs=_({__name:"VPMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,s)=>(a(),c("div",Qs,[m(D,{class:N({active:r(j)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,target:t.item.target,rel:t.item.rel},{default:v(()=>[F(I(t.item.text),1)]),_:1},8,["class","href","target","rel"])]))}}),se=$(Xs,[["__scopeId","data-v-43f1e123"]]),Zs={class:"VPMenuGroup"},xs={key:0,class:"title"},en=_({__name:"VPMenuGroup",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Zs,[e.text?(a(),c("p",xs,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,s=>(a(),c(M,null,["link"in s?(a(),b(se,{key:0,item:s},null,8,["item"])):f("",!0)],64))),256))]))}}),tn=$(en,[["__scopeId","data-v-69e747b5"]]),on={class:"VPMenu"},sn={key:0,class:"items"},nn=_({__name:"VPMenu",props:{items:{}},setup(o){return(e,t)=>(a(),c("div",on,[e.items?(a(),c("div",sn,[(a(!0),c(M,null,E(e.items,s=>(a(),c(M,{key:s.text},["link"in s?(a(),b(se,{key:0,item:s},null,8,["item"])):(a(),b(tn,{key:1,text:s.text,items:s.items},null,8,["text","items"]))],64))),128))])):f("",!0),l(e.$slots,"default",{},void 0,!0)]))}}),an=$(nn,[["__scopeId","data-v-e7ea1737"]]),rn=o=>(B("data-v-b6c34ac9"),o=o(),H(),o),ln=["aria-expanded","aria-label"],cn={key:0,class:"text"},un=["innerHTML"],dn=rn(()=>d("span",{class:"vpi-chevron-down text-icon"},null,-1)),vn={key:1,class:"vpi-more-horizontal icon"},pn={class:"menu"},hn=_({__name:"VPFlyout",props:{icon:{},button:{},label:{},items:{}},setup(o){const e=w(!1),t=w();Ws({el:t,onBlur:s});function s(){e.value=!1}return(n,i)=>(a(),c("div",{class:"VPFlyout",ref_key:"el",ref:t,onMouseenter:i[1]||(i[1]=u=>e.value=!0),onMouseleave:i[2]||(i[2]=u=>e.value=!1)},[d("button",{type:"button",class:"button","aria-haspopup":"true","aria-expanded":e.value,"aria-label":n.label,onClick:i[0]||(i[0]=u=>e.value=!e.value)},[n.button||n.icon?(a(),c("span",cn,[n.icon?(a(),c("span",{key:0,class:N([n.icon,"option-icon"])},null,2)):f("",!0),n.button?(a(),c("span",{key:1,innerHTML:n.button},null,8,un)):f("",!0),dn])):(a(),c("span",vn))],8,ln),d("div",pn,[m(an,{items:n.items},{default:v(()=>[l(n.$slots,"default",{},void 0,!0)]),_:3},8,["items"])])],544))}}),$e=$(hn,[["__scopeId","data-v-b6c34ac9"]]),fn=["href","aria-label","innerHTML"],_n=_({__name:"VPSocialLink",props:{icon:{},link:{},ariaLabel:{}},setup(o){const e=o,t=y(()=>typeof e.icon=="object"?e.icon.svg:``);return(s,n)=>(a(),c("a",{class:"VPSocialLink no-icon",href:s.link,"aria-label":s.ariaLabel??(typeof s.icon=="string"?s.icon:""),target:"_blank",rel:"noopener",innerHTML:t.value},null,8,fn))}}),mn=$(_n,[["__scopeId","data-v-eee4e7cb"]]),kn={class:"VPSocialLinks"},$n=_({__name:"VPSocialLinks",props:{links:{}},setup(o){return(e,t)=>(a(),c("div",kn,[(a(!0),c(M,null,E(e.links,({link:s,icon:n,ariaLabel:i})=>(a(),b(mn,{key:s,icon:n,link:s,ariaLabel:i},null,8,["icon","link","ariaLabel"]))),128))]))}}),be=$($n,[["__scopeId","data-v-7bc22406"]]),bn={key:0,class:"group translations"},gn={class:"trans-title"},yn={key:1,class:"group"},Pn={class:"item appearance"},Ln={class:"label"},Vn={class:"appearance-action"},Sn={key:2,class:"group"},Tn={class:"item social-links"},In=_({__name:"VPNavBarExtra",setup(o){const{site:e,theme:t}=L(),{localeLinks:s,currentLang:n}=J({correspondingLink:!0}),i=y(()=>s.value.length&&n.value.label||e.value.appearance||t.value.socialLinks);return(u,h)=>i.value?(a(),b($e,{key:0,class:"VPNavBarExtra",label:"extra navigation"},{default:v(()=>[r(s).length&&r(n).label?(a(),c("div",bn,[d("p",gn,I(r(n).label),1),(a(!0),c(M,null,E(r(s),p=>(a(),b(se,{key:p.link,item:p},null,8,["item"]))),128))])):f("",!0),r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",yn,[d("div",Pn,[d("p",Ln,I(r(t).darkModeSwitchLabel||"Appearance"),1),d("div",Vn,[m(me)])])])):f("",!0),r(t).socialLinks?(a(),c("div",Sn,[d("div",Tn,[m(be,{class:"social-links-list",links:r(t).socialLinks},null,8,["links"])])])):f("",!0)]),_:1})):f("",!0)}}),wn=$(In,[["__scopeId","data-v-d0bd9dde"]]),Nn=o=>(B("data-v-e5dd9c1c"),o=o(),H(),o),Mn=["aria-expanded"],An=Nn(()=>d("span",{class:"container"},[d("span",{class:"top"}),d("span",{class:"middle"}),d("span",{class:"bottom"})],-1)),Cn=[An],Bn=_({__name:"VPNavBarHamburger",props:{active:{type:Boolean}},emits:["click"],setup(o){return(e,t)=>(a(),c("button",{type:"button",class:N(["VPNavBarHamburger",{active:e.active}]),"aria-label":"mobile navigation","aria-expanded":e.active,"aria-controls":"VPNavScreen",onClick:t[0]||(t[0]=s=>e.$emit("click"))},Cn,10,Mn))}}),Hn=$(Bn,[["__scopeId","data-v-e5dd9c1c"]]),En=["innerHTML"],Dn=_({__name:"VPNavBarMenuLink",props:{item:{}},setup(o){const{page:e}=L();return(t,s)=>(a(),b(D,{class:N({VPNavBarMenuLink:!0,active:r(j)(r(e).relativePath,t.item.activeMatch||t.item.link,!!t.item.activeMatch)}),href:t.item.link,noIcon:t.item.noIcon,target:t.item.target,rel:t.item.rel,tabindex:"0"},{default:v(()=>[d("span",{innerHTML:t.item.text},null,8,En)]),_:1},8,["class","href","noIcon","target","rel"]))}}),Fn=$(Dn,[["__scopeId","data-v-9c663999"]]),On=_({__name:"VPNavBarMenuGroup",props:{item:{}},setup(o){const e=o,{page:t}=L(),s=i=>"link"in i?j(t.value.relativePath,i.link,!!e.item.activeMatch):i.items.some(s),n=y(()=>s(e.item));return(i,u)=>(a(),b($e,{class:N({VPNavBarMenuGroup:!0,active:r(j)(r(t).relativePath,i.item.activeMatch,!!i.item.activeMatch)||n.value}),button:i.item.text,items:i.item.items},null,8,["class","button","items"]))}}),Un=o=>(B("data-v-7f418b0f"),o=o(),H(),o),Gn={key:0,"aria-labelledby":"main-nav-aria-label",class:"VPNavBarMenu"},jn=Un(()=>d("span",{id:"main-nav-aria-label",class:"visually-hidden"},"Main Navigation",-1)),zn=_({__name:"VPNavBarMenu",setup(o){const{theme:e}=L();return(t,s)=>r(e).nav?(a(),c("nav",Gn,[jn,(a(!0),c(M,null,E(r(e).nav,n=>(a(),c(M,{key:n.text},["link"in n?(a(),b(Fn,{key:0,item:n},null,8,["item"])):(a(),b(On,{key:1,item:n},null,8,["item"]))],64))),128))])):f("",!0)}}),qn=$(zn,[["__scopeId","data-v-7f418b0f"]]);function Kn(o){const{localeIndex:e,theme:t}=L();function s(n){var A,C,S;const i=n.split("."),u=(A=t.value.search)==null?void 0:A.options,h=u&&typeof u=="object",p=h&&((S=(C=u.locales)==null?void 0:C[e.value])==null?void 0:S.translations)||null,g=h&&u.translations||null;let k=p,P=g,V=o;const T=i.pop();for(const U of i){let G=null;const R=V==null?void 0:V[U];R&&(G=V=R);const ne=P==null?void 0:P[U];ne&&(G=P=ne);const ae=k==null?void 0:k[U];ae&&(G=k=ae),R||(V=G),ne||(P=G),ae||(k=G)}return(k==null?void 0:k[T])??(P==null?void 0:P[T])??(V==null?void 0:V[T])??""}return s}const Rn=["aria-label"],Wn={class:"DocSearch-Button-Container"},Jn=d("span",{class:"vp-icon DocSearch-Search-Icon"},null,-1),Yn={class:"DocSearch-Button-Placeholder"},Qn=d("span",{class:"DocSearch-Button-Keys"},[d("kbd",{class:"DocSearch-Button-Key"}),d("kbd",{class:"DocSearch-Button-Key"},"K")],-1),ge=_({__name:"VPNavBarSearchButton",setup(o){const t=Kn({button:{buttonText:"Search",buttonAriaLabel:"Search"}});return(s,n)=>(a(),c("button",{type:"button",class:"DocSearch DocSearch-Button","aria-label":r(t)("button.buttonAriaLabel")},[d("span",Wn,[Jn,d("span",Yn,I(r(t)("button.buttonText")),1)]),Qn],8,Rn))}}),Xn={class:"VPNavBarSearch"},Zn={id:"local-search"},xn={key:1,id:"docsearch"},ea=_({__name:"VPNavBarSearch",setup(o){const e=Ye(()=>Qe(()=>import("./VPLocalSearchBox.BQZq6Q21.js"),__vite__mapDeps([0,1]))),t=()=>null,{theme:s}=L(),n=w(!1),i=w(!1);z(()=>{});function u(){n.value||(n.value=!0,setTimeout(h,16))}function h(){const P=new Event("keydown");P.key="k",P.metaKey=!0,window.dispatchEvent(P),setTimeout(()=>{document.querySelector(".DocSearch-Modal")||h()},16)}function p(P){const V=P.target,T=V.tagName;return V.isContentEditable||T==="INPUT"||T==="SELECT"||T==="TEXTAREA"}const g=w(!1);le("k",P=>{(P.ctrlKey||P.metaKey)&&(P.preventDefault(),g.value=!0)}),le("/",P=>{p(P)||(P.preventDefault(),g.value=!0)});const k="local";return(P,V)=>{var T;return a(),c("div",Xn,[r(k)==="local"?(a(),c(M,{key:0},[g.value?(a(),b(r(e),{key:0,onClose:V[0]||(V[0]=A=>g.value=!1)})):f("",!0),d("div",Zn,[m(ge,{onClick:V[1]||(V[1]=A=>g.value=!0)})])],64)):r(k)==="algolia"?(a(),c(M,{key:1},[n.value?(a(),b(r(t),{key:0,algolia:((T=r(s).search)==null?void 0:T.options)??r(s).algolia,onVnodeBeforeMount:V[2]||(V[2]=A=>i.value=!0)},null,8,["algolia"])):f("",!0),i.value?f("",!0):(a(),c("div",xn,[m(ge,{onClick:u})]))],64)):f("",!0)])}}}),ta=_({__name:"VPNavBarSocialLinks",setup(o){const{theme:e}=L();return(t,s)=>r(e).socialLinks?(a(),b(be,{key:0,class:"VPNavBarSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),oa=$(ta,[["__scopeId","data-v-0394ad82"]]),sa=["href","rel","target"],na={key:1},aa={key:2},ra=_({__name:"VPNavBarTitle",setup(o){const{site:e,theme:t}=L(),{hasSidebar:s}=O(),{currentLang:n}=J(),i=y(()=>{var p;return typeof t.value.logoLink=="string"?t.value.logoLink:(p=t.value.logoLink)==null?void 0:p.link}),u=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.rel}),h=y(()=>{var p;return typeof t.value.logoLink=="string"||(p=t.value.logoLink)==null?void 0:p.target});return(p,g)=>(a(),c("div",{class:N(["VPNavBarTitle",{"has-sidebar":r(s)}])},[d("a",{class:"title",href:i.value??r(fe)(r(n).link),rel:u.value,target:h.value},[l(p.$slots,"nav-bar-title-before",{},void 0,!0),r(t).logo?(a(),b(X,{key:0,class:"logo",image:r(t).logo},null,8,["image"])):f("",!0),r(t).siteTitle?(a(),c("span",na,I(r(t).siteTitle),1)):r(t).siteTitle===void 0?(a(),c("span",aa,I(r(e).title),1)):f("",!0),l(p.$slots,"nav-bar-title-after",{},void 0,!0)],8,sa)],2))}}),ia=$(ra,[["__scopeId","data-v-ab179fa1"]]),la={class:"items"},ca={class:"title"},ua=_({__name:"VPNavBarTranslations",setup(o){const{theme:e}=L(),{localeLinks:t,currentLang:s}=J({correspondingLink:!0});return(n,i)=>r(t).length&&r(s).label?(a(),b($e,{key:0,class:"VPNavBarTranslations",icon:"vpi-languages",label:r(e).langMenuLabel||"Change language"},{default:v(()=>[d("div",la,[d("p",ca,I(r(s).label),1),(a(!0),c(M,null,E(r(t),u=>(a(),b(se,{key:u.link,item:u},null,8,["item"]))),128))])]),_:1},8,["label"])):f("",!0)}}),da=$(ua,[["__scopeId","data-v-88af2de4"]]),va=o=>(B("data-v-ccf7ddec"),o=o(),H(),o),pa={class:"wrapper"},ha={class:"container"},fa={class:"title"},_a={class:"content"},ma={class:"content-body"},ka=va(()=>d("div",{class:"divider"},[d("div",{class:"divider-line"})],-1)),$a=_({__name:"VPNavBar",props:{isScreenOpen:{type:Boolean}},emits:["toggle-screen"],setup(o){const{y:e}=Te(),{hasSidebar:t}=O(),{frontmatter:s}=L(),n=w({});return Pe(()=>{n.value={"has-sidebar":t.value,home:s.value.layout==="home",top:e.value===0}}),(i,u)=>(a(),c("div",{class:N(["VPNavBar",n.value])},[d("div",pa,[d("div",ha,[d("div",fa,[m(ia,null,{"nav-bar-title-before":v(()=>[l(i.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(i.$slots,"nav-bar-title-after",{},void 0,!0)]),_:3})]),d("div",_a,[d("div",ma,[l(i.$slots,"nav-bar-content-before",{},void 0,!0),m(ea,{class:"search"}),m(qn,{class:"menu"}),m(da,{class:"translations"}),m(Rs,{class:"appearance"}),m(oa,{class:"social-links"}),m(wn,{class:"extra"}),l(i.$slots,"nav-bar-content-after",{},void 0,!0),m(Hn,{class:"hamburger",active:i.isScreenOpen,onClick:u[0]||(u[0]=h=>i.$emit("toggle-screen"))},null,8,["active"])])])])]),ka],2))}}),ba=$($a,[["__scopeId","data-v-ccf7ddec"]]),ga={key:0,class:"VPNavScreenAppearance"},ya={class:"text"},Pa=_({__name:"VPNavScreenAppearance",setup(o){const{site:e,theme:t}=L();return(s,n)=>r(e).appearance&&r(e).appearance!=="force-dark"?(a(),c("div",ga,[d("p",ya,I(r(t).darkModeSwitchLabel||"Appearance"),1),m(me)])):f("",!0)}}),La=$(Pa,[["__scopeId","data-v-2d7af913"]]),Va=_({__name:"VPNavScreenMenuLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,s)=>(a(),b(D,{class:"VPNavScreenMenuLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e),innerHTML:t.item.text},null,8,["href","target","rel","onClick","innerHTML"]))}}),Sa=$(Va,[["__scopeId","data-v-7f31e1f6"]]),Ta=_({__name:"VPNavScreenMenuGroupLink",props:{item:{}},setup(o){const e=te("close-screen");return(t,s)=>(a(),b(D,{class:"VPNavScreenMenuGroupLink",href:t.item.link,target:t.item.target,rel:t.item.rel,onClick:r(e)},{default:v(()=>[F(I(t.item.text),1)]),_:1},8,["href","target","rel","onClick"]))}}),Ee=$(Ta,[["__scopeId","data-v-19976ae1"]]),Ia={class:"VPNavScreenMenuGroupSection"},wa={key:0,class:"title"},Na=_({__name:"VPNavScreenMenuGroupSection",props:{text:{},items:{}},setup(o){return(e,t)=>(a(),c("div",Ia,[e.text?(a(),c("p",wa,I(e.text),1)):f("",!0),(a(!0),c(M,null,E(e.items,s=>(a(),b(Ee,{key:s.text,item:s},null,8,["item"]))),128))]))}}),Ma=$(Na,[["__scopeId","data-v-8133b170"]]),Aa=o=>(B("data-v-ff6087d4"),o=o(),H(),o),Ca=["aria-controls","aria-expanded"],Ba=["innerHTML"],Ha=Aa(()=>d("span",{class:"vpi-plus button-icon"},null,-1)),Ea=["id"],Da={key:1,class:"group"},Fa=_({__name:"VPNavScreenMenuGroup",props:{text:{},items:{}},setup(o){const e=o,t=w(!1),s=y(()=>`NavScreenGroup-${e.text.replace(" ","-").toLowerCase()}`);function n(){t.value=!t.value}return(i,u)=>(a(),c("div",{class:N(["VPNavScreenMenuGroup",{open:t.value}])},[d("button",{class:"button","aria-controls":s.value,"aria-expanded":t.value,onClick:n},[d("span",{class:"button-text",innerHTML:i.text},null,8,Ba),Ha],8,Ca),d("div",{id:s.value,class:"items"},[(a(!0),c(M,null,E(i.items,h=>(a(),c(M,{key:h.text},["link"in h?(a(),c("div",{key:h.text,class:"item"},[m(Ee,{item:h},null,8,["item"])])):(a(),c("div",Da,[m(Ma,{text:h.text,items:h.items},null,8,["text","items"])]))],64))),128))],8,Ea)],2))}}),Oa=$(Fa,[["__scopeId","data-v-ff6087d4"]]),Ua={key:0,class:"VPNavScreenMenu"},Ga=_({__name:"VPNavScreenMenu",setup(o){const{theme:e}=L();return(t,s)=>r(e).nav?(a(),c("nav",Ua,[(a(!0),c(M,null,E(r(e).nav,n=>(a(),c(M,{key:n.text},["link"in n?(a(),b(Sa,{key:0,item:n},null,8,["item"])):(a(),b(Oa,{key:1,text:n.text||"",items:n.items},null,8,["text","items"]))],64))),128))])):f("",!0)}}),ja=_({__name:"VPNavScreenSocialLinks",setup(o){const{theme:e}=L();return(t,s)=>r(e).socialLinks?(a(),b(be,{key:0,class:"VPNavScreenSocialLinks",links:r(e).socialLinks},null,8,["links"])):f("",!0)}}),De=o=>(B("data-v-858fe1a4"),o=o(),H(),o),za=De(()=>d("span",{class:"vpi-languages icon lang"},null,-1)),qa=De(()=>d("span",{class:"vpi-chevron-down icon chevron"},null,-1)),Ka={class:"list"},Ra=_({__name:"VPNavScreenTranslations",setup(o){const{localeLinks:e,currentLang:t}=J({correspondingLink:!0}),s=w(!1);function n(){s.value=!s.value}return(i,u)=>r(e).length&&r(t).label?(a(),c("div",{key:0,class:N(["VPNavScreenTranslations",{open:s.value}])},[d("button",{class:"title",onClick:n},[za,F(" "+I(r(t).label)+" ",1),qa]),d("ul",Ka,[(a(!0),c(M,null,E(r(e),h=>(a(),c("li",{key:h.link,class:"item"},[m(D,{class:"link",href:h.link},{default:v(()=>[F(I(h.text),1)]),_:2},1032,["href"])]))),128))])],2)):f("",!0)}}),Wa=$(Ra,[["__scopeId","data-v-858fe1a4"]]),Ja={class:"container"},Ya=_({__name:"VPNavScreen",props:{open:{type:Boolean}},setup(o){const e=w(null),t=Ie(oe?document.body:null);return(s,n)=>(a(),b(ve,{name:"fade",onEnter:n[0]||(n[0]=i=>t.value=!0),onAfterLeave:n[1]||(n[1]=i=>t.value=!1)},{default:v(()=>[s.open?(a(),c("div",{key:0,class:"VPNavScreen",ref_key:"screen",ref:e,id:"VPNavScreen"},[d("div",Ja,[l(s.$slots,"nav-screen-content-before",{},void 0,!0),m(Ga,{class:"menu"}),m(Wa,{class:"translations"}),m(La,{class:"appearance"}),m(ja,{class:"social-links"}),l(s.$slots,"nav-screen-content-after",{},void 0,!0)])],512)):f("",!0)]),_:3}))}}),Qa=$(Ya,[["__scopeId","data-v-cc5739dd"]]),Xa={key:0,class:"VPNav"},Za=_({__name:"VPNav",setup(o){const{isScreenOpen:e,closeScreen:t,toggleScreen:s}=Bs(),{frontmatter:n}=L(),i=y(()=>n.value.navbar!==!1);return we("close-screen",t),Z(()=>{oe&&document.documentElement.classList.toggle("hide-nav",!i.value)}),(u,h)=>i.value?(a(),c("header",Xa,[m(ba,{"is-screen-open":r(e),onToggleScreen:r(s)},{"nav-bar-title-before":v(()=>[l(u.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(u.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[l(u.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[l(u.$slots,"nav-bar-content-after",{},void 0,!0)]),_:3},8,["is-screen-open","onToggleScreen"]),m(Qa,{open:r(e)},{"nav-screen-content-before":v(()=>[l(u.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[l(u.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3},8,["open"])])):f("",!0)}}),xa=$(Za,[["__scopeId","data-v-ae24b3ad"]]),Fe=o=>(B("data-v-b8d55f3b"),o=o(),H(),o),er=["role","tabindex"],tr=Fe(()=>d("div",{class:"indicator"},null,-1)),or=Fe(()=>d("span",{class:"vpi-chevron-right caret-icon"},null,-1)),sr=[or],nr={key:1,class:"items"},ar=_({__name:"VPSidebarItem",props:{item:{},depth:{}},setup(o){const e=o,{collapsed:t,collapsible:s,isLink:n,isActiveLink:i,hasActiveLink:u,hasChildren:h,toggle:p}=gt(y(()=>e.item)),g=y(()=>h.value?"section":"div"),k=y(()=>n.value?"a":"div"),P=y(()=>h.value?e.depth+2===7?"p":`h${e.depth+2}`:"p"),V=y(()=>n.value?void 0:"button"),T=y(()=>[[`level-${e.depth}`],{collapsible:s.value},{collapsed:t.value},{"is-link":n.value},{"is-active":i.value},{"has-active":u.value}]);function A(S){"key"in S&&S.key!=="Enter"||!e.item.link&&p()}function C(){e.item.link&&p()}return(S,U)=>{const G=K("VPSidebarItem",!0);return a(),b(W(g.value),{class:N(["VPSidebarItem",T.value])},{default:v(()=>[S.item.text?(a(),c("div",Y({key:0,class:"item",role:V.value},Ze(S.item.items?{click:A,keydown:A}:{},!0),{tabindex:S.item.items&&0}),[tr,S.item.link?(a(),b(D,{key:0,tag:k.value,class:"link",href:S.item.link,rel:S.item.rel,target:S.item.target},{default:v(()=>[(a(),b(W(P.value),{class:"text",innerHTML:S.item.text},null,8,["innerHTML"]))]),_:1},8,["tag","href","rel","target"])):(a(),b(W(P.value),{key:1,class:"text",innerHTML:S.item.text},null,8,["innerHTML"])),S.item.collapsed!=null&&S.item.items&&S.item.items.length?(a(),c("div",{key:2,class:"caret",role:"button","aria-label":"toggle section",onClick:C,onKeydown:Xe(C,["enter"]),tabindex:"0"},sr,32)):f("",!0)],16,er)):f("",!0),S.item.items&&S.item.items.length?(a(),c("div",nr,[S.depth<5?(a(!0),c(M,{key:0},E(S.item.items,R=>(a(),b(G,{key:R.text,item:R,depth:S.depth+1},null,8,["item","depth"]))),128)):f("",!0)])):f("",!0)]),_:1},8,["class"])}}}),rr=$(ar,[["__scopeId","data-v-b8d55f3b"]]),Oe=o=>(B("data-v-575e6a36"),o=o(),H(),o),ir=Oe(()=>d("div",{class:"curtain"},null,-1)),lr={class:"nav",id:"VPSidebarNav","aria-labelledby":"sidebar-aria-label",tabindex:"-1"},cr=Oe(()=>d("span",{class:"visually-hidden",id:"sidebar-aria-label"}," Sidebar Navigation ",-1)),ur=_({__name:"VPSidebar",props:{open:{type:Boolean}},setup(o){const{sidebarGroups:e,hasSidebar:t}=O(),s=o,n=w(null),i=Ie(oe?document.body:null);return q([s,n],()=>{var u;s.open?(i.value=!0,(u=n.value)==null||u.focus()):i.value=!1},{immediate:!0,flush:"post"}),(u,h)=>r(t)?(a(),c("aside",{key:0,class:N(["VPSidebar",{open:u.open}]),ref_key:"navEl",ref:n,onClick:h[0]||(h[0]=xe(()=>{},["stop"]))},[ir,d("nav",lr,[cr,l(u.$slots,"sidebar-nav-before",{},void 0,!0),(a(!0),c(M,null,E(r(e),p=>(a(),c("div",{key:p.text,class:"group"},[m(rr,{item:p,depth:0},null,8,["item"])]))),128)),l(u.$slots,"sidebar-nav-after",{},void 0,!0)])],2)):f("",!0)}}),dr=$(ur,[["__scopeId","data-v-575e6a36"]]),vr=_({__name:"VPSkipLink",setup(o){const e=ee(),t=w();q(()=>e.path,()=>t.value.focus());function s({target:n}){const i=document.getElementById(decodeURIComponent(n.hash).slice(1));if(i){const u=()=>{i.removeAttribute("tabindex"),i.removeEventListener("blur",u)};i.setAttribute("tabindex","-1"),i.addEventListener("blur",u),i.focus(),window.scrollTo(0,0)}}return(n,i)=>(a(),c(M,null,[d("span",{ref_key:"backToTop",ref:t,tabindex:"-1"},null,512),d("a",{href:"#VPContent",class:"VPSkipLink visually-hidden",onClick:s}," Skip to content ")],64))}}),pr=$(vr,[["__scopeId","data-v-0f60ec36"]]),hr=_({__name:"Layout",setup(o){const{isOpen:e,open:t,close:s}=O(),n=ee();q(()=>n.path,s),bt(e,s);const{frontmatter:i}=L(),u=et(),h=y(()=>!!u["home-hero-image"]);return we("hero-image-slot-exists",h),(p,g)=>{const k=K("Content");return r(i).layout!==!1?(a(),c("div",{key:0,class:N(["Layout",r(i).pageClass])},[l(p.$slots,"layout-top",{},void 0,!0),m(pr),m(at,{class:"backdrop",show:r(e),onClick:r(s)},null,8,["show","onClick"]),m(xa,null,{"nav-bar-title-before":v(()=>[l(p.$slots,"nav-bar-title-before",{},void 0,!0)]),"nav-bar-title-after":v(()=>[l(p.$slots,"nav-bar-title-after",{},void 0,!0)]),"nav-bar-content-before":v(()=>[l(p.$slots,"nav-bar-content-before",{},void 0,!0)]),"nav-bar-content-after":v(()=>[l(p.$slots,"nav-bar-content-after",{},void 0,!0)]),"nav-screen-content-before":v(()=>[l(p.$slots,"nav-screen-content-before",{},void 0,!0)]),"nav-screen-content-after":v(()=>[l(p.$slots,"nav-screen-content-after",{},void 0,!0)]),_:3}),m(Cs,{open:r(e),onOpenMenu:r(t)},null,8,["open","onOpenMenu"]),m(dr,{open:r(e)},{"sidebar-nav-before":v(()=>[l(p.$slots,"sidebar-nav-before",{},void 0,!0)]),"sidebar-nav-after":v(()=>[l(p.$slots,"sidebar-nav-after",{},void 0,!0)]),_:3},8,["open"]),m(ps,null,{"page-top":v(()=>[l(p.$slots,"page-top",{},void 0,!0)]),"page-bottom":v(()=>[l(p.$slots,"page-bottom",{},void 0,!0)]),"not-found":v(()=>[l(p.$slots,"not-found",{},void 0,!0)]),"home-hero-before":v(()=>[l(p.$slots,"home-hero-before",{},void 0,!0)]),"home-hero-info-before":v(()=>[l(p.$slots,"home-hero-info-before",{},void 0,!0)]),"home-hero-info":v(()=>[l(p.$slots,"home-hero-info",{},void 0,!0)]),"home-hero-info-after":v(()=>[l(p.$slots,"home-hero-info-after",{},void 0,!0)]),"home-hero-actions-after":v(()=>[l(p.$slots,"home-hero-actions-after",{},void 0,!0)]),"home-hero-image":v(()=>[l(p.$slots,"home-hero-image",{},void 0,!0)]),"home-hero-after":v(()=>[l(p.$slots,"home-hero-after",{},void 0,!0)]),"home-features-before":v(()=>[l(p.$slots,"home-features-before",{},void 0,!0)]),"home-features-after":v(()=>[l(p.$slots,"home-features-after",{},void 0,!0)]),"doc-footer-before":v(()=>[l(p.$slots,"doc-footer-before",{},void 0,!0)]),"doc-before":v(()=>[l(p.$slots,"doc-before",{},void 0,!0)]),"doc-after":v(()=>[l(p.$slots,"doc-after",{},void 0,!0)]),"doc-top":v(()=>[l(p.$slots,"doc-top",{},void 0,!0)]),"doc-bottom":v(()=>[l(p.$slots,"doc-bottom",{},void 0,!0)]),"aside-top":v(()=>[l(p.$slots,"aside-top",{},void 0,!0)]),"aside-bottom":v(()=>[l(p.$slots,"aside-bottom",{},void 0,!0)]),"aside-outline-before":v(()=>[l(p.$slots,"aside-outline-before",{},void 0,!0)]),"aside-outline-after":v(()=>[l(p.$slots,"aside-outline-after",{},void 0,!0)]),"aside-ads-before":v(()=>[l(p.$slots,"aside-ads-before",{},void 0,!0)]),"aside-ads-after":v(()=>[l(p.$slots,"aside-ads-after",{},void 0,!0)]),_:3}),m(ks),l(p.$slots,"layout-bottom",{},void 0,!0)],2)):(a(),b(k,{key:1}))}}}),fr=$(hr,[["__scopeId","data-v-5d98c3a5"]]),ye={Layout:fr,enhanceApp:({app:o})=>{o.component("Badge",ot)}},mr={extends:ye,Layout:()=>tt(ye.Layout,null,{}),enhanceApp({app:o,router:e,siteData:t}){}};export{mr as R,Kn as c,L as u}; diff --git a/assets/cloud-rollup_digital-ocean.md.CfDO4RJK.js b/assets/cloud-rollup_digital-ocean.md.CfDO4RJK.js deleted file mode 100644 index f60c40d..0000000 --- a/assets/cloud-rollup_digital-ocean.md.CfDO4RJK.js +++ /dev/null @@ -1,43 +0,0 @@ -import{_ as s,c as i,o as a,a5 as t}from"./chunks/framework.EN5ALL4V.js";const e="/assets/do-setup.Bh3liMJG.png",n="/assets/a-record.C42okaqR.png",l="/assets/sequencer-faucet.6UQ0f9HT.png",y=JSON.parse('{"title":"Digital Ocean","description":"","frontmatter":{"sidebar_position":1},"headers":[],"relativePath":"cloud-rollup/digital-ocean.md","filePath":"cloud-rollup/digital-ocean.md","lastUpdated":1713206801000}'),h={name:"cloud-rollup/digital-ocean.md"},p=t(`

Digital Ocean

This guide will walk you through deploying a rollup full node on a Kubernetes cluster on Digital Ocean which uses the Astria shared sequencer network.

Local Dependencies

Install the latest astria cli

bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-aarch64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-unknown-linux-gnu.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
cargo install astria-cli --git=https://github.com/astriaorg/astria --tag=cli-v0.3.1 --locked

You'll also need to install the following tools:

WARNING

There is a bug in the latest Docker desktop release for MacOS
Please install the following release: https://docs.docker.com/desktop/release-notes/#4252
For more details see here

Dusknet Endpoints

The endpoints for the remote shared sequencer are:

NAMEHOSTSADDRESS
Sequencer RPCrpc.sequencer.dusk-3.devnet.astria.org34.111.73.187
Sequencer Faucetfaucet.sequencer.dusk-3.devnet.astria.org34.36.8.102

Create a New Cluster

This guide assumes you're using Digital Ocean's Kubernetes (K8s) service.

Install and configure doctl: https://docs.digitalocean.com/reference/doctl/how-to/install/

Follow the instructions in Digital Ocean's Quick Start Guide to create a new cluster in the region of your choosing.

TIP

The celestia pod has a minimum requirement of 1vCPU and 4GB RAM and will not start if the cluster has no nodes that meet those requirements. You will need a node with >1vCPU and >4GB RAM.

Configure kubectl with doctl

Once your k8s cluster is created configure kubectl.

doctl screenshot

Deploy Ingress Nginx Controller

We use the Nginx Ingress Controller, documentation can be found here

To install it run:

bash
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/do/deploy.yaml

This will create several Kubernetes (k8s) resources and a Digital Ocean loadbalancer.

Verify Loadbalancer with external IP

You should see a new loadbalancer being created in the Digital Ocean console: https://cloud.digitalocean.com/networking/load_balancers

You can also check that your Digital Ocean load balancer was created with:

bash
kubectl get svc -n ingress-nginx

It may take a few minutes for the EXTERNAL-IP field to be populated, you should eventually see something like this:

bash
NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE\ningress-nginx-controller             LoadBalancer   10.245.63.28    161.35.240.50   80:32656/TCP,443:30158/TCP   44h\ningress-nginx-controller-admission   ClusterIP      10.245.106.99   <none>          443/TCP                      44h

Create an A Record

TIP

You must configure a DNS record because our ingress configuration uses name based virtual routing.

More info can be found here

How you create an A record will depend on where you manage your domain.

An example for Google domains can be seen here: https://support.google.com/a/answer/2579934?hl=en

Create a wildcard record * pointing to the EXTERNAL-IP of your ingress-nginx-controller:

a record screenshot

Create your Rollup Genesis Account(s)

DANGER

NEVER use a private key you use on a live network.

Specify the accounts which will be funded at the genesis block of your EVM rollup.

You can create an account using:

bash
cast w new
bash
Successfully created new keypair.
-Address:     0xfFe9...5f8b # <GENESIS_ADDRESS>
-Private key: 0x332e...a8fb # <GENESIS_PRIVATE_KEY>

Export the genesis private key, this will be used by the faucet included with the rollup:

bash
export ROLLUP_FAUCET_PRIV_KEY=<GENESIS_PRIVATE_KEY>

Export the genesis address alongside with your desired initial balance in Wei.
We recommend using a value of 100000000000000000000 or larger:

bash
export ROLLUP_GENESIS_ACCOUNTS=<GENESIS_ADDRESS>:<BALANCE>

You can specify multiple accounts to be funded at genesis as comma deliminated tuples of <ADDRESS>:<BALANCE>

bash
export ROLLUP_GENESIS_ACCOUNTS=<ADDRESS_1>:<BALANCE_1>,<ADDRESS_2>:<BALANCE_2>

Create Rollup Config

Create the configuration manifest for your rollup.

Replace the tags in the commands and env vars below, as follows:

Var NameVar TypeDescription
<YOUR_ROLLUP_NAME>StringThe name of your rollup. This must be alphanumeric, - is allowed, this will be included in URLs. Must not be more than 21 characters.
<YOUR_NETWORK_ID>u64The id of your network. Pick a > 6 digit number (eg. 123456)
<YOUR_HOSTNAME>StringThe chosen hostname for your network (eg. astria.org)

You can use environment variables to set the configuration for the rollup config creation. Replace all the <> tags with their corresponding values.

bash
export ROLLUP_NAME=<YOUR_ROLLUP_NAME>
-export ROLLUP_NETWORK_ID=<YOUR_NETWORK_ID>
-export ROLLUP_HOSTNAME=<YOUR_HOSTNAME>

Run the config create command:

sh
astria-cli rollup config create

Export the config file name as an env vars:

bash
export ROLLUP_CONF_FILE=$ROLLUP_NAME-rollup-conf.yaml

Verify the config

bash
cat $ROLLUP_CONF_FILE
bash
global:
-  namespace: astria-dev-cluster
-  useTTY: false
-  logLevel: debug
-config:
-  rollup:
-    name: <YOUR_ROLLUP_NAME>
-    chainId: <YOUR_ROLLUP_NAME>-chain
-    networkId: '<YOUR_NETWORK_ID>'
-    genesisAccounts:
-    - address: <GENESIS_ADDRESS>
-      balance: '<BALANCE>'
-  sequencer:
-    initialBlockHeight: <INITIAL_SEQUENCER_BLOCK_HEIGHT>
-    websocket: wss://rpc.sequencer.dusk-3.devnet.astria.org/websocket
-    rpc: https://rpc.sequencer.dusk-3.devnet.astria.org
-ingress:
-  hostname: <YOUR_HOSTNAME>
-celestia-node:
-  config:
-    labelPrefix: <YOUR_ROLLUP_NAME>

Create new sequencer account

Create an account on the Astria shared sequencer network for your rollup to submit transactions.

bash
astria-cli sequencer account create
bash
Create Sequencer Account
-
-Private Key: "5562...1622" # <SEQUENCER_ACCOUNT_PRIV_KEY>
-Public Key:  "ec20...f613" # 
-Address:     "8a2f...5f68" # <SEQUENCER_ACCOUNT_ADDRESS>

Export your sequencer private key and address as environment variables:

bash
export SEQUENCER_PRIV_KEY=5562...1622
-export SEQUENCER_ACCOUNT_ADDRESS=8a2f...5f68

Fund your Sequencer Account

Navigate to https://faucet.sequencer.dusk-3.devnet.astria.org/ to view the sequencer faucet.

Enter your <SEQUENCER_ACCOUNT_ADDRESS> into the text box to send funds to your account:

Sequencer Faucet

Verify your account received the funds

bash
astria-cli sequencer account balance $SEQUENCER_ACCOUNT_ADDRESS

Deploy the Rollup Node

Use the astria-cli to deploy the rollup node

bash
astria-cli rollup deployment create \\
-  --config $ROLLUP_CONF_FILE \\
-  --faucet-private-key $ROLLUP_FAUCET_PRIV_KEY \\
-  --sequencer-private-key $SEQUENCER_PRIV_KEY

Watch for rollup startup

You can watch for the Kubernetes pods of the rollup to start with:

bash
kubectl get pods -n astria-dev-cluster -w
bash
NAME                                               READY   STATUS    RESTARTS      AGE
-<YOUR_ROLLUP_NAME>-blockscout-647745c66d-vz4ks     6/6     Running   1 (56s ago)   72s
-<YOUR_ROLLUP_NAME>-celestia-node-light-mocha-4-0   2/2     Running   1 (56s ago)   72s
-<YOUR_ROLLUP_NAME>-faucet-68667bd895-pwqmz         1/1     Running   0             72s
-<YOUR_ROLLUP_NAME>-geth-755cb8dd97-k5xp8           3/3     Running   0             72s

Your Rollup Endpoints

Your rollup will automatically be configured with several public endpoints using the DNS you configured:

UtilityURL
Block Explorerhttp://blockscout.<YOUR_ROLLUP_NAME>.<YOUR_HOSTNAME>/
Faucethttp://faucet.<YOUR_ROLLUP_NAME>.<YOUR_HOSTNAME>/
RPChttp://executor.<YOUR_ROLLUP_NAME>.<YOUR_HOSTNAME>/

Interact with your Rollup

bash
export ETH_RPC_URL=http://executor.$ROLLUP_NAME.$ROLLUP_HOSTNAME/
bash
cast block 0

Use an address of your choice.

bash
export REC_ADDR=<SOME_ADDRESS>
bash
cast balance $REC_ADDR
bash
cast send $REC_ADDR --value 10000000000000000000 --private-key $ROLLUP_FAUCET_PRIV_KEY
bash
cast balance $REC_ADDR
`,91),r=[p];function k(d,o,c,g,u,F){return a(),i("div",null,r)}const b=s(h,[["render",k]]);export{y as __pageData,b as default}; diff --git a/assets/cloud-rollup_digital-ocean.md.CfDO4RJK.lean.js b/assets/cloud-rollup_digital-ocean.md.CfDO4RJK.lean.js deleted file mode 100644 index 8e97e80..0000000 --- a/assets/cloud-rollup_digital-ocean.md.CfDO4RJK.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as i,o as a,a5 as t}from"./chunks/framework.EN5ALL4V.js";const e="/assets/do-setup.Bh3liMJG.png",n="/assets/a-record.C42okaqR.png",l="/assets/sequencer-faucet.6UQ0f9HT.png",y=JSON.parse('{"title":"Digital Ocean","description":"","frontmatter":{"sidebar_position":1},"headers":[],"relativePath":"cloud-rollup/digital-ocean.md","filePath":"cloud-rollup/digital-ocean.md","lastUpdated":1713206801000}'),h={name:"cloud-rollup/digital-ocean.md"},p=t("",91),r=[p];function k(d,o,c,g,u,F){return a(),i("div",null,r)}const b=s(h,[["render",k]]);export{y as __pageData,b as default}; diff --git a/assets/community_1-overview.md.DW1nKyz0.js b/assets/community_1-overview.md.BVVC8E9V.js similarity index 82% rename from assets/community_1-overview.md.DW1nKyz0.js rename to assets/community_1-overview.md.BVVC8E9V.js index d963dc4..7d35845 100644 --- a/assets/community_1-overview.md.DW1nKyz0.js +++ b/assets/community_1-overview.md.BVVC8E9V.js @@ -1 +1 @@ -import{_ as t,c as o,o as i,l as e,a}from"./chunks/framework.EN5ALL4V.js";const f=JSON.parse('{"title":"Community overview","description":"","frontmatter":{},"headers":[],"relativePath":"community/1-overview.md","filePath":"community/1-overview.md","lastUpdated":1713206801000}'),r={name:"community/1-overview.md"},n=e("h1",{id:"community-overview",tabindex:"-1"},[a("Community overview "),e("a",{class:"header-anchor",href:"#community-overview","aria-label":'Permalink to "Community overview"'},"​")],-1),s=e("p",null,"This section will highlight all the different resources and activities for the Astria community.",-1),c=[n,s];function m(d,l,v,_,h,u){return i(),o("div",null,c)}const w=t(r,[["render",m]]);export{f as __pageData,w as default}; +import{_ as t,c as o,o as i,l as e,a}from"./chunks/framework.-Zveb6AF.js";const f=JSON.parse('{"title":"Community overview","description":"","frontmatter":{},"headers":[],"relativePath":"community/1-overview.md","filePath":"community/1-overview.md","lastUpdated":1713206801000}'),r={name:"community/1-overview.md"},n=e("h1",{id:"community-overview",tabindex:"-1"},[a("Community overview "),e("a",{class:"header-anchor",href:"#community-overview","aria-label":'Permalink to "Community overview"'},"​")],-1),s=e("p",null,"This section will highlight all the different resources and activities for the Astria community.",-1),c=[n,s];function m(d,l,v,_,h,u){return i(),o("div",null,c)}const w=t(r,[["render",m]]);export{f as __pageData,w as default}; diff --git a/assets/community_1-overview.md.DW1nKyz0.lean.js b/assets/community_1-overview.md.BVVC8E9V.lean.js similarity index 82% rename from assets/community_1-overview.md.DW1nKyz0.lean.js rename to assets/community_1-overview.md.BVVC8E9V.lean.js index d963dc4..7d35845 100644 --- a/assets/community_1-overview.md.DW1nKyz0.lean.js +++ b/assets/community_1-overview.md.BVVC8E9V.lean.js @@ -1 +1 @@ -import{_ as t,c as o,o as i,l as e,a}from"./chunks/framework.EN5ALL4V.js";const f=JSON.parse('{"title":"Community overview","description":"","frontmatter":{},"headers":[],"relativePath":"community/1-overview.md","filePath":"community/1-overview.md","lastUpdated":1713206801000}'),r={name:"community/1-overview.md"},n=e("h1",{id:"community-overview",tabindex:"-1"},[a("Community overview "),e("a",{class:"header-anchor",href:"#community-overview","aria-label":'Permalink to "Community overview"'},"​")],-1),s=e("p",null,"This section will highlight all the different resources and activities for the Astria community.",-1),c=[n,s];function m(d,l,v,_,h,u){return i(),o("div",null,c)}const w=t(r,[["render",m]]);export{f as __pageData,w as default}; +import{_ as t,c as o,o as i,l as e,a}from"./chunks/framework.-Zveb6AF.js";const f=JSON.parse('{"title":"Community overview","description":"","frontmatter":{},"headers":[],"relativePath":"community/1-overview.md","filePath":"community/1-overview.md","lastUpdated":1713206801000}'),r={name:"community/1-overview.md"},n=e("h1",{id:"community-overview",tabindex:"-1"},[a("Community overview "),e("a",{class:"header-anchor",href:"#community-overview","aria-label":'Permalink to "Community overview"'},"​")],-1),s=e("p",null,"This section will highlight all the different resources and activities for the Astria community.",-1),c=[n,s];function m(d,l,v,_,h,u){return i(),o("div",null,c)}const w=t(r,[["render",m]]);export{f as __pageData,w as default}; diff --git a/assets/components__astria-go-cli-install.md.BeODc5XQ.lean.js b/assets/components__astria-go-cli-install.md.BeODc5XQ.lean.js deleted file mode 100644 index 0b3c107..0000000 --- a/assets/components__astria-go-cli-install.md.BeODc5XQ.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_astria-go-cli-install.md","filePath":"components/_astria-go-cli-install.md","lastUpdated":1716595602000}'),n={name:"components/_astria-go-cli-install.md"},l=t("",1),p=[l];function h(e,r,k,d,o,g){return i(),a("div",null,p)}const C=s(n,[["render",h]]);export{c as __pageData,C as default}; diff --git a/assets/components__astria-go-cli-install.md.BeODc5XQ.js b/assets/components__astria-go-cli-install.md.CJ_IXRZk.js similarity index 85% rename from assets/components__astria-go-cli-install.md.BeODc5XQ.js rename to assets/components__astria-go-cli-install.md.CJ_IXRZk.js index 42d2d09..b9943c3 100644 --- a/assets/components__astria-go-cli-install.md.BeODc5XQ.js +++ b/assets/components__astria-go-cli-install.md.CJ_IXRZk.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_astria-go-cli-install.md","filePath":"components/_astria-go-cli-install.md","lastUpdated":1716595602000}'),n={name:"components/_astria-go-cli-install.md"},l=t(`
bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-arm64.tar.gz > astria-cli.tar.gz
+import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.-Zveb6AF.js";const c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_astria-go-cli-install.md","filePath":"components/_astria-go-cli-install.md","lastUpdated":1716595602000}'),l={name:"components/_astria-go-cli-install.md"},n=t(`
bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-arm64.tar.gz > astria-cli.tar.gz
 tar -xvzf astria-cli.tar.gz
 mv astria-go /usr/local/bin/
 astria-go version
bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-amd64.tar.gz > astria-cli.tar.gz
@@ -7,4 +7,4 @@ import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const c
 astria-go version
bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-linux-amd64.tar.gz > astria-cli.tar.gz
 tar -xvzf astria-cli.tar.gz
 mv astria-go /usr/local/bin/
-astria-go version
`,1),p=[l];function h(e,r,k,d,o,g){return i(),a("div",null,p)}const C=s(n,[["render",h]]);export{c as __pageData,C as default}; +astria-go version
`,1),e=[n];function p(h,r,k,d,g,o){return i(),a("div",null,e)}const C=s(l,[["render",p]]);export{c as __pageData,C as default}; diff --git a/assets/components__astria-go-cli-install.md.CJ_IXRZk.lean.js b/assets/components__astria-go-cli-install.md.CJ_IXRZk.lean.js new file mode 100644 index 0000000..fdd1026 --- /dev/null +++ b/assets/components__astria-go-cli-install.md.CJ_IXRZk.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.-Zveb6AF.js";const c=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_astria-go-cli-install.md","filePath":"components/_astria-go-cli-install.md","lastUpdated":1716595602000}'),l={name:"components/_astria-go-cli-install.md"},n=t("",1),e=[n];function p(h,r,k,d,g,o){return i(),a("div",null,e)}const C=s(l,[["render",p]]);export{c as __pageData,C as default}; diff --git a/assets/components__astria-rust-cli-install.md.B75Q7g_P.lean.js b/assets/components__astria-rust-cli-install.md.B75Q7g_P.lean.js deleted file mode 100644 index ecbde88..0000000 --- a/assets/components__astria-rust-cli-install.md.B75Q7g_P.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_astria-rust-cli-install.md","filePath":"components/_astria-rust-cli-install.md","lastUpdated":1716595602000}'),l={name:"components/_astria-rust-cli-install.md"},e=t("",4),n=[e];function r(h,p,k,o,c,d){return i(),a("div",null,n)}const u=s(l,[["render",r]]);export{F as __pageData,u as default}; diff --git a/assets/components__astria-rust-cli-install.md.B75Q7g_P.js b/assets/components__astria-rust-cli-install.md.CSqbfUuO.js similarity index 59% rename from assets/components__astria-rust-cli-install.md.B75Q7g_P.js rename to assets/components__astria-rust-cli-install.md.CSqbfUuO.js index 37f3cdf..6cde4b0 100644 --- a/assets/components__astria-rust-cli-install.md.B75Q7g_P.js +++ b/assets/components__astria-rust-cli-install.md.CSqbfUuO.js @@ -1,7 +1,7 @@ -import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_astria-rust-cli-install.md","filePath":"components/_astria-rust-cli-install.md","lastUpdated":1716595602000}'),l={name:"components/_astria-rust-cli-install.md"},e=t(`

Install the latest astria cli

bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-aarch64-apple-darwin.tar.gz > astria-cli.tar.gz
+import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.-Zveb6AF.js";const F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_astria-rust-cli-install.md","filePath":"components/_astria-rust-cli-install.md","lastUpdated":1717451255000}'),l={name:"components/_astria-rust-cli-install.md"},n=t(`
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-aarch64-apple-darwin.tar.gz > astria-cli.tar.gz
 tar -xvzf astria-cli.tar.gz
 mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-apple-darwin.tar.gz > astria-cli.tar.gz
 tar -xvzf astria-cli.tar.gz
 mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-unknown-linux-gnu.tar.gz > astria-cli.tar.gz
 tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
cargo install astria-cli --git=https://github.com/astriaorg/astria --tag=cli-v0.3.1 --locked

You'll also need to install the following tools:

WARNING

There is a bug in the latest Docker desktop release for MacOS
Please install the following release: https://docs.docker.com/desktop/release-notes/#4252
For more details see here

`,4),n=[e];function r(h,p,k,o,c,d){return i(),a("div",null,n)}const u=s(l,[["render",r]]);export{F as __pageData,u as default}; +mv astria-cli /usr/local/bin/
bash
cargo install astria-cli --git=https://github.com/astriaorg/astria --tag=cli-v0.3.1 --locked
`,1),p=[n];function e(h,r,k,d,c,o){return i(),a("div",null,p)}const C=s(l,[["render",e]]);export{F as __pageData,C as default}; diff --git a/assets/components__astria-rust-cli-install.md.CSqbfUuO.lean.js b/assets/components__astria-rust-cli-install.md.CSqbfUuO.lean.js new file mode 100644 index 0000000..7747cd0 --- /dev/null +++ b/assets/components__astria-rust-cli-install.md.CSqbfUuO.lean.js @@ -0,0 +1 @@ +import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.-Zveb6AF.js";const F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_astria-rust-cli-install.md","filePath":"components/_astria-rust-cli-install.md","lastUpdated":1717451255000}'),l={name:"components/_astria-rust-cli-install.md"},n=t("",1),p=[n];function e(h,r,k,d,c,o){return i(),a("div",null,p)}const C=s(l,[["render",e]]);export{F as __pageData,C as default}; diff --git a/assets/components__cli-cloud.md.Cqk--tfM.js b/assets/components__cli-cloud.md.Cqk--tfM.js deleted file mode 100644 index d21c3e1..0000000 --- a/assets/components__cli-cloud.md.Cqk--tfM.js +++ /dev/null @@ -1,7 +0,0 @@ -import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_cli-cloud.md","filePath":"components/_cli-cloud.md","lastUpdated":1716595602000}'),l={name:"components/_cli-cloud.md"},e=t(`

Install the latest astria cli

bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-aarch64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-unknown-linux-gnu.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
cargo install astria-cli --git=https://github.com/astriaorg/astria --tag=cli-v0.3.1 --locked

You'll also need to install the following tools:

WARNING

There is a bug in the latest Docker desktop release for MacOS
Please install the following release: https://docs.docker.com/desktop/release-notes/#4252
For more details see here

`,5),n=[e];function r(h,p,k,o,c,d){return i(),a("div",null,n)}const u=s(l,[["render",r]]);export{F as __pageData,u as default}; diff --git a/assets/components__cli-cloud.md.Cqk--tfM.lean.js b/assets/components__cli-cloud.md.Cqk--tfM.lean.js deleted file mode 100644 index 4606200..0000000 --- a/assets/components__cli-cloud.md.Cqk--tfM.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_cli-cloud.md","filePath":"components/_cli-cloud.md","lastUpdated":1716595602000}'),l={name:"components/_cli-cloud.md"},e=t("",5),n=[e];function r(h,p,k,o,c,d){return i(),a("div",null,n)}const u=s(l,[["render",r]]);export{F as __pageData,u as default}; diff --git a/assets/components__cli-local.md.Br3rY7vk.js b/assets/components__cli-local.md.Br3rY7vk.js deleted file mode 100644 index ea0da21..0000000 --- a/assets/components__cli-local.md.Br3rY7vk.js +++ /dev/null @@ -1,7 +0,0 @@ -import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_cli-local.md","filePath":"components/_cli-local.md","lastUpdated":1716595602000}'),e={name:"components/_cli-local.md"},l=t(`

Install the latest astria cli

bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-aarch64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-unknown-linux-gnu.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
cargo install astria-cli --git=https://github.com/astriaorg/astria --tag=cli-v0.3.1 --locked

You'll also need to install the following tools:

WARNING

There is a bug in the latest Docker desktop release for MacOS
Please install the following release: https://docs.docker.com/desktop/release-notes/#4252
For more details see here

`,5),r=[l];function n(h,p,o,k,c,d){return i(),a("div",null,r)}const b=s(e,[["render",n]]);export{F as __pageData,b as default}; diff --git a/assets/components__cli-local.md.Br3rY7vk.lean.js b/assets/components__cli-local.md.Br3rY7vk.lean.js deleted file mode 100644 index 01c82d3..0000000 --- a/assets/components__cli-local.md.Br3rY7vk.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const F=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_cli-local.md","filePath":"components/_cli-local.md","lastUpdated":1716595602000}'),e={name:"components/_cli-local.md"},l=t("",5),r=[l];function n(h,p,o,k,c,d){return i(),a("div",null,r)}const b=s(e,[["render",n]]);export{F as __pageData,b as default}; diff --git a/assets/components__deployment-instructions-redirect.md.C5O_qOhX.js b/assets/components__deployment-instructions-redirect.md.pLk86BSd.js similarity index 93% rename from assets/components__deployment-instructions-redirect.md.C5O_qOhX.js rename to assets/components__deployment-instructions-redirect.md.pLk86BSd.js index 5122485..37bbdf7 100644 --- a/assets/components__deployment-instructions-redirect.md.C5O_qOhX.js +++ b/assets/components__deployment-instructions-redirect.md.pLk86BSd.js @@ -1 +1 @@ -import{_ as o,c as n,o as c,l as e,a as t}from"./chunks/framework.EN5ALL4V.js";const f=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_deployment-instructions-redirect.md","filePath":"components/_deployment-instructions-redirect.md","lastUpdated":1713206801000}'),s={name:"components/_deployment-instructions-redirect.md"},r=e("div",{class:"tip custom-block"},[e("p",{class:"custom-block-title"},"TIP"),e("p",null,[t("To deploy your own rollup on the Astria Devnet on your local machine, check out the "),e("a",{href:"/local-rollup/1-introduction"},"instructions here"),t("!")]),e("p",null,[t("To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the "),e("a",{href:"/cloud-rollup/digital-ocean"},"instructions here"),t("!")])],-1),a=[r];function l(i,d,p,u,m,_){return c(),n("div",null,a)}const y=o(s,[["render",l]]);export{f as __pageData,y as default}; +import{_ as o,c as n,o as c,l as e,a as t}from"./chunks/framework.-Zveb6AF.js";const f=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_deployment-instructions-redirect.md","filePath":"components/_deployment-instructions-redirect.md","lastUpdated":1713206801000}'),s={name:"components/_deployment-instructions-redirect.md"},r=e("div",{class:"tip custom-block"},[e("p",{class:"custom-block-title"},"TIP"),e("p",null,[t("To deploy your own rollup on the Astria Devnet on your local machine, check out the "),e("a",{href:"/local-rollup/1-introduction"},"instructions here"),t("!")]),e("p",null,[t("To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the "),e("a",{href:"/cloud-rollup/digital-ocean"},"instructions here"),t("!")])],-1),a=[r];function l(i,d,p,u,m,_){return c(),n("div",null,a)}const y=o(s,[["render",l]]);export{f as __pageData,y as default}; diff --git a/assets/components__deployment-instructions-redirect.md.C5O_qOhX.lean.js b/assets/components__deployment-instructions-redirect.md.pLk86BSd.lean.js similarity index 93% rename from assets/components__deployment-instructions-redirect.md.C5O_qOhX.lean.js rename to assets/components__deployment-instructions-redirect.md.pLk86BSd.lean.js index 5122485..37bbdf7 100644 --- a/assets/components__deployment-instructions-redirect.md.C5O_qOhX.lean.js +++ b/assets/components__deployment-instructions-redirect.md.pLk86BSd.lean.js @@ -1 +1 @@ -import{_ as o,c as n,o as c,l as e,a as t}from"./chunks/framework.EN5ALL4V.js";const f=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_deployment-instructions-redirect.md","filePath":"components/_deployment-instructions-redirect.md","lastUpdated":1713206801000}'),s={name:"components/_deployment-instructions-redirect.md"},r=e("div",{class:"tip custom-block"},[e("p",{class:"custom-block-title"},"TIP"),e("p",null,[t("To deploy your own rollup on the Astria Devnet on your local machine, check out the "),e("a",{href:"/local-rollup/1-introduction"},"instructions here"),t("!")]),e("p",null,[t("To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the "),e("a",{href:"/cloud-rollup/digital-ocean"},"instructions here"),t("!")])],-1),a=[r];function l(i,d,p,u,m,_){return c(),n("div",null,a)}const y=o(s,[["render",l]]);export{f as __pageData,y as default}; +import{_ as o,c as n,o as c,l as e,a as t}from"./chunks/framework.-Zveb6AF.js";const f=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_deployment-instructions-redirect.md","filePath":"components/_deployment-instructions-redirect.md","lastUpdated":1713206801000}'),s={name:"components/_deployment-instructions-redirect.md"},r=e("div",{class:"tip custom-block"},[e("p",{class:"custom-block-title"},"TIP"),e("p",null,[t("To deploy your own rollup on the Astria Devnet on your local machine, check out the "),e("a",{href:"/local-rollup/1-introduction"},"instructions here"),t("!")]),e("p",null,[t("To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the "),e("a",{href:"/cloud-rollup/digital-ocean"},"instructions here"),t("!")])],-1),a=[r];function l(i,d,p,u,m,_){return c(),n("div",null,a)}const y=o(s,[["render",l]]);export{f as __pageData,y as default}; diff --git a/assets/components__remote-endpoints.md.CeXXFFgq.js b/assets/components__remote-endpoints.md.CeXXFFgq.js deleted file mode 100644 index ec872f0..0000000 --- a/assets/components__remote-endpoints.md.CeXXFFgq.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o,a5 as r}from"./chunks/framework.EN5ALL4V.js";const l=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_remote-endpoints.md","filePath":"components/_remote-endpoints.md","lastUpdated":1713206801000}'),d={name:"components/_remote-endpoints.md"},n=r("

The endpoints for the remote shared sequencer are:

NAMEHOSTSADDRESS
Sequencer RPCrpc.sequencer.dusk-3.devnet.astria.org34.111.73.187
Sequencer Faucetfaucet.sequencer.dusk-3.devnet.astria.org34.36.8.102
",2),a=[n];function s(_,c,p,i,h,m){return o(),e("div",null,a)}const S=t(d,[["render",s]]);export{l as __pageData,S as default}; diff --git a/assets/components__remote-endpoints.md.CeXXFFgq.lean.js b/assets/components__remote-endpoints.md.CeXXFFgq.lean.js deleted file mode 100644 index ffcc842..0000000 --- a/assets/components__remote-endpoints.md.CeXXFFgq.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,c as e,o,a5 as r}from"./chunks/framework.EN5ALL4V.js";const l=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_remote-endpoints.md","filePath":"components/_remote-endpoints.md","lastUpdated":1713206801000}'),d={name:"components/_remote-endpoints.md"},n=r("",2),a=[n];function s(_,c,p,i,h,m){return o(),e("div",null,a)}const S=t(d,[["render",s]]);export{l as __pageData,S as default}; diff --git a/assets/components__remote-endpoints.md.DpCbQmre.js b/assets/components__remote-endpoints.md.DpCbQmre.js new file mode 100644 index 0000000..760892f --- /dev/null +++ b/assets/components__remote-endpoints.md.DpCbQmre.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as r,a5 as a}from"./chunks/framework.-Zveb6AF.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_remote-endpoints.md","filePath":"components/_remote-endpoints.md","lastUpdated":1717451255000}'),n={name:"components/_remote-endpoints.md"},s=a('

The endpoints for the remote sequencer are:

NameEndpoint
Sequencer RPChttps://rpc.sequencer.dusk-7.devnet.astria.org
Sequencer gRPChttps://grpc.sequencer.dusk-7.devnet.astria.org
Sequencer Faucethttps://faucet.sequencer.dusk-7.devnet.astria.org
',2),o=[s];function d(c,_,p,i,u,h){return r(),t("div",null,o)}const f=e(n,[["render",d]]);export{m as __pageData,f as default}; diff --git a/assets/components__remote-endpoints.md.DpCbQmre.lean.js b/assets/components__remote-endpoints.md.DpCbQmre.lean.js new file mode 100644 index 0000000..823bf32 --- /dev/null +++ b/assets/components__remote-endpoints.md.DpCbQmre.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as r,a5 as a}from"./chunks/framework.-Zveb6AF.js";const m=JSON.parse('{"title":"","description":"","frontmatter":{},"headers":[],"relativePath":"components/_remote-endpoints.md","filePath":"components/_remote-endpoints.md","lastUpdated":1717451255000}'),n={name:"components/_remote-endpoints.md"},s=a("",2),o=[s];function d(c,_,p,i,u,h){return r(),t("div",null,o)}const f=e(n,[["render",d]]);export{m as __pageData,f as default}; diff --git a/assets/developer_references_astria-go_cli-commands.md.BwozoMC2.js b/assets/developer_references_astria-go_cli-commands.md.CdSC7Cpq.js similarity index 99% rename from assets/developer_references_astria-go_cli-commands.md.BwozoMC2.js rename to assets/developer_references_astria-go_cli-commands.md.CdSC7Cpq.js index f751ce6..6cbc064 100644 --- a/assets/developer_references_astria-go_cli-commands.md.BwozoMC2.js +++ b/assets/developer_references_astria-go_cli-commands.md.CdSC7Cpq.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,a5 as s}from"./chunks/framework.EN5ALL4V.js";const k=JSON.parse('{"title":"astria-go cli Commands","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/astria-go/cli-commands.md","filePath":"developer/references/astria-go/cli-commands.md","lastUpdated":1716595602000}'),i={name:"developer/references/astria-go/cli-commands.md"},d=s('

astria-go cli Commands

Global Flags

Flags that can be used on any command in the cli.

FlagArg TypeOverride Env VarDescription
-h, --helpboolNoneDisplay the help information for a given command
--log-levelstringASTRIA_GO_LOG_LEVELSet the log level for the cli.

help

Print the help information for the given command.

Usage

bash
astria-go help\n# or\nastria-go [command] help

version

Prints the version of the cli.

Usage

bash
astria-go version

dev

The root command for all development commands.

Usage

bash
astria-go dev [command] [flags]

dev init

Downloads service binaries and initializes the local environment. This command must be run before the dev run command can be used.

Usage

bash
astria-go dev init [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")
--local-native-denomstringASTRIA_GO_LOCAL_NATIVE_DENOMSet the native denom for the local instance. This is used to set the 'native_asset_base_denomination' and 'allowed_fee_assets' in the CometBFT genesis.json file. (default "nria")
--local-network-namestringASTRIA_GO_LOCAL_NETWORK_NAMESet the local network name for the instance. This is used to set the chain ID in the CometBFT genesis.json file. (default "sequencer-test-chain-0")

dev purge

The root command for all purge commands.

Usage

bash
astria-go dev purge [command] [flags]

dev purge all

Delete all data for a given instance. This deletes the entire instance directory within ~/.astria. astria-go dev init must be run before astria-go dev run can be used.

Usage

bash
astria-go dev purge all [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")

dev purge binaries

Delete all downloaded binaries for a given instance. astria-go dev init must be run before astria-go dev run can be used.

Usage

bash
astria-go dev purge binaries [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")

dev reset

The root command for resetting the local development instance data.

Usage

bash
astria-go dev reset [command] [flags]

dev reset config

Reset config files. This will return all files in the instance config directory to their default state as though initially created.

Usage

bash
astria-go dev reset config [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")
--local-native-denomstringASTRIA_GO_LOCAL_NATIVE_DENOMSet the native denom for the local instance. This is used to set the 'native_asset_base_denomination' and 'allowed_fee_assets' in the CometBFT genesis.json file. (default "nria")
--local-network-namestringASTRIA_GO_LOCAL_NETWORK_NAMESet the local network name for the instance. This is used to set the chain ID in the CometBFT genesis.json file. (default "sequencer-test-chain-0")

dev reset networks

Reset the networks config for the cli. This command only resets the networks-config.toml file for the instance. No other config files are affected.

Usage

bash
astria-go dev reset networks [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")
--local-native-denomstringASTRIA_GO_LOCAL_NATIVE_DENOMSet the native denom for the local instance. This is used to set the 'native_asset_base_denomination' and 'allowed_fee_assets' in the CometBFT genesis.json file. (default "nria")
--local-network-namestringASTRIA_GO_LOCAL_NETWORK_NAMESet the local network name for the instance. This is used to set the chain ID in the CometBFT genesis.json file. (default "sequencer-test-chain-0")

dev reset state

Reset Sequencer state. This will reset both the sequencer and Cometbft data to their initial state.

Usage

bash
astria-go dev reset state [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")

dev run

Runs a minimal, local Astria stack. You can choose to run a local sequencer stack or target a remote network by using the --network flag.

Usage

bash
# run a local sequencer\nastria-go dev run [flags]\n# run a local sequencer\nastria-go dev run --network local [flags]\n# run against a remote dev net\nastria-go dev run --network dusk [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")
--networkstringASTRIA_GO_NETWORKSelect the network to run the services against. Valid networks are: local, dusk, dawn, mainnet
--cometbft-pathstringASTRIA_GO_COMETBFT_PATHProvide an override path to a specific cometbft binary.
--composer-pathstringASTRIA_GO_COMPOSER_PATHProvide an override path to a specific composer binary.
--conductor-pathstringASTRIA_GO_CONDUCTOR_PATHProvide an override path to a specific conductor binary.
--sequencer-pathstringASTRIA_GO_SEQUENCER_PATHProvide an override path to a specific sequencer binary.
--service-log-levelstringASTRIA_GO_SERVICE_LOG_LEVELSet the log level for services (debug, info, error) (default "info")

sequencer

The root command for all sequencer commands.

Usage

bash
astria-go sequencer [command] [flags]

sequencer balances

Get the balances of an account on the Sequencer.

Usage

bash
astria-go sequencer balance [address] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonN/AboolASTRIA_GO_JSON
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer to retrieve the balance from. (default "http://127.0.0.1:26657")

sequencer blockheight

Get the current block height of the Sequencer.

Usage

bash
astria-go sequencer blockheight [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonN/AboolASTRIA_GO_JSON
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer to retrieve the balance from. (default "http://127.0.0.1:26657")

sequencer bridge

The root command for the sequencer bridge commands.

Usage

bash
astria-go sequencer bridge [command]

sequencer bridge init

Initialize a bridge account.

Usage

bash
astria-go sequencer bridge init [rollup-id] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--asset-idstringASTRIA_GO_ASSET_IDThe asset id of the asset we want to bridge (default "transfer/channel-0/utia")
--fee-asset-idstringASTRIA_GO_FEE_ASSET_IDThe fee asset id of the asset used for fees (default "nria")
--jsonboolASTRIA_GO_JSONOutput bridge account as JSON
--keyfilestringASTRIA_GO_KEYFILEPath to secure keyfile for the bridge account.
--keyring-addressstringASTRIA_GO_KEYRING_ADDRESSThe address of the bridge account. Requires private key be stored in keyring.
--privkeystringASTRIA_GO_PRIVKEYThe private key of the bridge account.
-c, --sequencer-chain-idstringASTRIA_GO_SEQUENCER_CHAIN_IDThe chain ID of the sequencer. (default "astria-dusk-5")
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer to init bridge account (default "http://127.0.0.1:26657")

sequencer bridge lock

Locks tokens on the bridge account.

Usage

bash
astria-go sequencer bridge lock [address] [amount] [destination-chain-address] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonboolASTRIA_GO_JSONOutput bridge account as JSON
--keyfilestringASTRIA_GO_KEYFILEPath to secure keyfile for the bridge account.
--keyring-addressstringASTRIA_GO_KEYRING_ADDRESSThe address of the bridge account. Requires private key be stored in keyring.
--privkeystringASTRIA_GO_PRIVKEYThe private key of the bridge account.
-c, --sequencer-chain-idstringASTRIA_GO_SEQUENCER_CHAIN_IDThe chain ID of the sequencer. (default "astria-dusk-5")
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer where the bridge account resides (default "http://127.0.0.1:26657")

sequencer createaccount

Create an account for the sequencer. The account will be used to sign transactions and blocks. The account will be created with a private key, public key, and address.

Usage

bash
astria-go sequencer createaccount [flags]

Flags

FlagArg TypeOverride Env VarDescription
--insecureboolASTRIA_GO_INSECUREPrint the account private key to terminal instead of storing securely.
--jsonboolASTRIA_GO_JSONOutput the account information in JSON format.
--keyfileboolASTRIA_GO_KEYFILEStore the account private key in a keyfile.
--keyringboolASTRIA_GO_KEYRINGStore the account private key in the system keyring.

sequencer getkey

Get private key for an address in system keyring.

Usage

bash
astria-go sequencer getkey [address] [flags]

sequencer nonce

Retrieves and prints the nonce of an account.

Usage

bash
astria-go sequencer nonce [address] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonN/AboolASTRIA_GO_JSON
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer. (default "http://127.0.0.1:26657")

sequencer setkey

Set private key for an address in system keyring.

Usage

bash
astria-go sequencer setkey [address] [private key] [flags]

sequencer transfer

Transfer tokens from one account to another.

Usage

bash
astria-go sequencer transfer [amount] [to] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonboolASTRIA_GO_JSONOutput in JSON format.
--keyfilestringASTRIA_GO_KEYFILEPath to secure keyfile for sender.
--keyring-addressstringASTRIA_GO_KEYRING_ADDRESSThe address of the sender. Requires private key be stored in keyring.
--privkeystringASTRIA_GO_PRIVKEYThe private key of the sender.
-c, --sequencer-chain-idstringASTRIA_GO_SEQUENCER_CHAIN_IDThe chain ID of the sequencer. (default "astria-dusk-5")
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer. (default "http://127.0.0.1:26657")
',124),r=[d];function o(n,h,l,c,p,g){return a(),t("div",null,r)}const b=e(i,[["render",o]]);export{k as __pageData,b as default}; +import{_ as e,c as t,o as a,a5 as s}from"./chunks/framework.-Zveb6AF.js";const k=JSON.parse('{"title":"astria-go cli Commands","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/astria-go/cli-commands.md","filePath":"developer/references/astria-go/cli-commands.md","lastUpdated":1716595602000}'),i={name:"developer/references/astria-go/cli-commands.md"},d=s('

astria-go cli Commands

Global Flags

Flags that can be used on any command in the cli.

FlagArg TypeOverride Env VarDescription
-h, --helpboolNoneDisplay the help information for a given command
--log-levelstringASTRIA_GO_LOG_LEVELSet the log level for the cli.

help

Print the help information for the given command.

Usage

bash
astria-go help\n# or\nastria-go [command] help

version

Prints the version of the cli.

Usage

bash
astria-go version

dev

The root command for all development commands.

Usage

bash
astria-go dev [command] [flags]

dev init

Downloads service binaries and initializes the local environment. This command must be run before the dev run command can be used.

Usage

bash
astria-go dev init [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")
--local-native-denomstringASTRIA_GO_LOCAL_NATIVE_DENOMSet the native denom for the local instance. This is used to set the 'native_asset_base_denomination' and 'allowed_fee_assets' in the CometBFT genesis.json file. (default "nria")
--local-network-namestringASTRIA_GO_LOCAL_NETWORK_NAMESet the local network name for the instance. This is used to set the chain ID in the CometBFT genesis.json file. (default "sequencer-test-chain-0")

dev purge

The root command for all purge commands.

Usage

bash
astria-go dev purge [command] [flags]

dev purge all

Delete all data for a given instance. This deletes the entire instance directory within ~/.astria. astria-go dev init must be run before astria-go dev run can be used.

Usage

bash
astria-go dev purge all [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")

dev purge binaries

Delete all downloaded binaries for a given instance. astria-go dev init must be run before astria-go dev run can be used.

Usage

bash
astria-go dev purge binaries [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")

dev reset

The root command for resetting the local development instance data.

Usage

bash
astria-go dev reset [command] [flags]

dev reset config

Reset config files. This will return all files in the instance config directory to their default state as though initially created.

Usage

bash
astria-go dev reset config [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")
--local-native-denomstringASTRIA_GO_LOCAL_NATIVE_DENOMSet the native denom for the local instance. This is used to set the 'native_asset_base_denomination' and 'allowed_fee_assets' in the CometBFT genesis.json file. (default "nria")
--local-network-namestringASTRIA_GO_LOCAL_NETWORK_NAMESet the local network name for the instance. This is used to set the chain ID in the CometBFT genesis.json file. (default "sequencer-test-chain-0")

dev reset networks

Reset the networks config for the cli. This command only resets the networks-config.toml file for the instance. No other config files are affected.

Usage

bash
astria-go dev reset networks [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")
--local-native-denomstringASTRIA_GO_LOCAL_NATIVE_DENOMSet the native denom for the local instance. This is used to set the 'native_asset_base_denomination' and 'allowed_fee_assets' in the CometBFT genesis.json file. (default "nria")
--local-network-namestringASTRIA_GO_LOCAL_NETWORK_NAMESet the local network name for the instance. This is used to set the chain ID in the CometBFT genesis.json file. (default "sequencer-test-chain-0")

dev reset state

Reset Sequencer state. This will reset both the sequencer and Cometbft data to their initial state.

Usage

bash
astria-go dev reset state [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")

dev run

Runs a minimal, local Astria stack. You can choose to run a local sequencer stack or target a remote network by using the --network flag.

Usage

bash
# run a local sequencer\nastria-go dev run [flags]\n# run a local sequencer\nastria-go dev run --network local [flags]\n# run against a remote dev net\nastria-go dev run --network dusk [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")
--networkstringASTRIA_GO_NETWORKSelect the network to run the services against. Valid networks are: local, dusk, dawn, mainnet
--cometbft-pathstringASTRIA_GO_COMETBFT_PATHProvide an override path to a specific cometbft binary.
--composer-pathstringASTRIA_GO_COMPOSER_PATHProvide an override path to a specific composer binary.
--conductor-pathstringASTRIA_GO_CONDUCTOR_PATHProvide an override path to a specific conductor binary.
--sequencer-pathstringASTRIA_GO_SEQUENCER_PATHProvide an override path to a specific sequencer binary.
--service-log-levelstringASTRIA_GO_SERVICE_LOG_LEVELSet the log level for services (debug, info, error) (default "info")

sequencer

The root command for all sequencer commands.

Usage

bash
astria-go sequencer [command] [flags]

sequencer balances

Get the balances of an account on the Sequencer.

Usage

bash
astria-go sequencer balance [address] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonN/AboolASTRIA_GO_JSON
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer to retrieve the balance from. (default "http://127.0.0.1:26657")

sequencer blockheight

Get the current block height of the Sequencer.

Usage

bash
astria-go sequencer blockheight [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonN/AboolASTRIA_GO_JSON
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer to retrieve the balance from. (default "http://127.0.0.1:26657")

sequencer bridge

The root command for the sequencer bridge commands.

Usage

bash
astria-go sequencer bridge [command]

sequencer bridge init

Initialize a bridge account.

Usage

bash
astria-go sequencer bridge init [rollup-id] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--asset-idstringASTRIA_GO_ASSET_IDThe asset id of the asset we want to bridge (default "transfer/channel-0/utia")
--fee-asset-idstringASTRIA_GO_FEE_ASSET_IDThe fee asset id of the asset used for fees (default "nria")
--jsonboolASTRIA_GO_JSONOutput bridge account as JSON
--keyfilestringASTRIA_GO_KEYFILEPath to secure keyfile for the bridge account.
--keyring-addressstringASTRIA_GO_KEYRING_ADDRESSThe address of the bridge account. Requires private key be stored in keyring.
--privkeystringASTRIA_GO_PRIVKEYThe private key of the bridge account.
-c, --sequencer-chain-idstringASTRIA_GO_SEQUENCER_CHAIN_IDThe chain ID of the sequencer. (default "astria-dusk-5")
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer to init bridge account (default "http://127.0.0.1:26657")

sequencer bridge lock

Locks tokens on the bridge account.

Usage

bash
astria-go sequencer bridge lock [address] [amount] [destination-chain-address] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonboolASTRIA_GO_JSONOutput bridge account as JSON
--keyfilestringASTRIA_GO_KEYFILEPath to secure keyfile for the bridge account.
--keyring-addressstringASTRIA_GO_KEYRING_ADDRESSThe address of the bridge account. Requires private key be stored in keyring.
--privkeystringASTRIA_GO_PRIVKEYThe private key of the bridge account.
-c, --sequencer-chain-idstringASTRIA_GO_SEQUENCER_CHAIN_IDThe chain ID of the sequencer. (default "astria-dusk-5")
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer where the bridge account resides (default "http://127.0.0.1:26657")

sequencer createaccount

Create an account for the sequencer. The account will be used to sign transactions and blocks. The account will be created with a private key, public key, and address.

Usage

bash
astria-go sequencer createaccount [flags]

Flags

FlagArg TypeOverride Env VarDescription
--insecureboolASTRIA_GO_INSECUREPrint the account private key to terminal instead of storing securely.
--jsonboolASTRIA_GO_JSONOutput the account information in JSON format.
--keyfileboolASTRIA_GO_KEYFILEStore the account private key in a keyfile.
--keyringboolASTRIA_GO_KEYRINGStore the account private key in the system keyring.

sequencer getkey

Get private key for an address in system keyring.

Usage

bash
astria-go sequencer getkey [address] [flags]

sequencer nonce

Retrieves and prints the nonce of an account.

Usage

bash
astria-go sequencer nonce [address] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonN/AboolASTRIA_GO_JSON
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer. (default "http://127.0.0.1:26657")

sequencer setkey

Set private key for an address in system keyring.

Usage

bash
astria-go sequencer setkey [address] [private key] [flags]

sequencer transfer

Transfer tokens from one account to another.

Usage

bash
astria-go sequencer transfer [amount] [to] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonboolASTRIA_GO_JSONOutput in JSON format.
--keyfilestringASTRIA_GO_KEYFILEPath to secure keyfile for sender.
--keyring-addressstringASTRIA_GO_KEYRING_ADDRESSThe address of the sender. Requires private key be stored in keyring.
--privkeystringASTRIA_GO_PRIVKEYThe private key of the sender.
-c, --sequencer-chain-idstringASTRIA_GO_SEQUENCER_CHAIN_IDThe chain ID of the sequencer. (default "astria-dusk-5")
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer. (default "http://127.0.0.1:26657")
',124),r=[d];function o(n,h,l,c,p,g){return a(),t("div",null,r)}const b=e(i,[["render",o]]);export{k as __pageData,b as default}; diff --git a/assets/developer_references_astria-go_cli-commands.md.BwozoMC2.lean.js b/assets/developer_references_astria-go_cli-commands.md.CdSC7Cpq.lean.js similarity index 75% rename from assets/developer_references_astria-go_cli-commands.md.BwozoMC2.lean.js rename to assets/developer_references_astria-go_cli-commands.md.CdSC7Cpq.lean.js index 43b57f2..8c0047f 100644 --- a/assets/developer_references_astria-go_cli-commands.md.BwozoMC2.lean.js +++ b/assets/developer_references_astria-go_cli-commands.md.CdSC7Cpq.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as a,a5 as s}from"./chunks/framework.EN5ALL4V.js";const k=JSON.parse('{"title":"astria-go cli Commands","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/astria-go/cli-commands.md","filePath":"developer/references/astria-go/cli-commands.md","lastUpdated":1716595602000}'),i={name:"developer/references/astria-go/cli-commands.md"},d=s("",124),r=[d];function o(n,h,l,c,p,g){return a(),t("div",null,r)}const b=e(i,[["render",o]]);export{k as __pageData,b as default}; +import{_ as e,c as t,o as a,a5 as s}from"./chunks/framework.-Zveb6AF.js";const k=JSON.parse('{"title":"astria-go cli Commands","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/astria-go/cli-commands.md","filePath":"developer/references/astria-go/cli-commands.md","lastUpdated":1716595602000}'),i={name:"developer/references/astria-go/cli-commands.md"},d=s("",124),r=[d];function o(n,h,l,c,p,g){return a(),t("div",null,r)}const b=e(i,[["render",o]]);export{k as __pageData,b as default}; diff --git a/assets/developer_references_astria-go_cli-installation.md.mgnYuJNv.js b/assets/developer_references_astria-go_cli-installation.md.LgRkaI8P.js similarity index 94% rename from assets/developer_references_astria-go_cli-installation.md.mgnYuJNv.js rename to assets/developer_references_astria-go_cli-installation.md.LgRkaI8P.js index 3a387a2..4a03945 100644 --- a/assets/developer_references_astria-go_cli-installation.md.mgnYuJNv.js +++ b/assets/developer_references_astria-go_cli-installation.md.LgRkaI8P.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const F=JSON.parse('{"title":"Install the Astria CLI","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/astria-go/cli-installation.md","filePath":"developer/references/astria-go/cli-installation.md","lastUpdated":1716595602000}'),l={name:"developer/references/astria-go/cli-installation.md"},n=t(`

Install the Astria CLI

The astria-go cli is a tool designed to make local rollup development as simple and dependency free as possible. It provides functionality to easily run the Astria stack and interact with the Sequencer.

Download using Curl

bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-arm64.tar.gz > astria-cli.tar.gz
+import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.-Zveb6AF.js";const F=JSON.parse('{"title":"Install the Astria CLI","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/astria-go/cli-installation.md","filePath":"developer/references/astria-go/cli-installation.md","lastUpdated":1716595602000}'),l={name:"developer/references/astria-go/cli-installation.md"},n=t(`

Install the Astria CLI

The astria-go cli is a tool designed to make local rollup development as simple and dependency free as possible. It provides functionality to easily run the Astria stack and interact with the Sequencer.

Download using Curl

bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-arm64.tar.gz > astria-cli.tar.gz
 tar -xvzf astria-cli.tar.gz
 mv astria-go /usr/local/bin/
 astria-go version
bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-amd64.tar.gz > astria-cli.tar.gz
diff --git a/assets/developer_references_astria-go_cli-installation.md.mgnYuJNv.lean.js b/assets/developer_references_astria-go_cli-installation.md.LgRkaI8P.lean.js
similarity index 75%
rename from assets/developer_references_astria-go_cli-installation.md.mgnYuJNv.lean.js
rename to assets/developer_references_astria-go_cli-installation.md.LgRkaI8P.lean.js
index 8aa6790..41f1931 100644
--- a/assets/developer_references_astria-go_cli-installation.md.mgnYuJNv.lean.js
+++ b/assets/developer_references_astria-go_cli-installation.md.LgRkaI8P.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const F=JSON.parse('{"title":"Install the Astria CLI","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/astria-go/cli-installation.md","filePath":"developer/references/astria-go/cli-installation.md","lastUpdated":1716595602000}'),l={name:"developer/references/astria-go/cli-installation.md"},n=t("",9),e=[n];function h(r,p,k,o,d,c){return i(),a("div",null,e)}const u=s(l,[["render",h]]);export{F as __pageData,u as default};
+import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.-Zveb6AF.js";const F=JSON.parse('{"title":"Install the Astria CLI","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/astria-go/cli-installation.md","filePath":"developer/references/astria-go/cli-installation.md","lastUpdated":1716595602000}'),l={name:"developer/references/astria-go/cli-installation.md"},n=t("",9),e=[n];function h(r,p,k,o,d,c){return i(),a("div",null,e)}const u=s(l,[["render",h]]);export{F as __pageData,u as default};
diff --git a/assets/developer_references_astria-go_cli-networks-configuration.md.D6ZrmUeV.js b/assets/developer_references_astria-go_cli-networks-configuration.md.CnldiT1_.js
similarity index 98%
rename from assets/developer_references_astria-go_cli-networks-configuration.md.D6ZrmUeV.js
rename to assets/developer_references_astria-go_cli-networks-configuration.md.CnldiT1_.js
index 8f2786e..2add223 100644
--- a/assets/developer_references_astria-go_cli-networks-configuration.md.D6ZrmUeV.js
+++ b/assets/developer_references_astria-go_cli-networks-configuration.md.CnldiT1_.js
@@ -1,4 +1,4 @@
-import{_ as s,c as i,o as e,a5 as a}from"./chunks/framework.EN5ALL4V.js";const u=JSON.parse('{"title":"Astria Cli Networks Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/astria-go/cli-networks-configuration.md","filePath":"developer/references/astria-go/cli-networks-configuration.md","lastUpdated":1716595602000}'),t={name:"developer/references/astria-go/cli-networks-configuration.md"},n=a(`

Astria Cli Networks Configuration

For each instance created with the astria-go cli, a networks-config.toml file can found in the ~/.astria/<instance>/ directory. This file allows for simplified configurations of different sequencer networks that can be targeted by the cli.

Selecting which network the cli is targeting can be controlled by using the --network flag when using the astria-go dev run command.

Primary Use Case

In general, the default values in the networks config should not need to be changed for most development situations. The most likely case where a user will need to update the configs is if they are trying to test their local components against a different sequencer rpc/grpc.

For example, the default Astria Dusk dev net configuration is as follows:

toml
[dusk]
+import{_ as s,c as i,o as e,a5 as a}from"./chunks/framework.-Zveb6AF.js";const u=JSON.parse('{"title":"Astria Cli Networks Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/astria-go/cli-networks-configuration.md","filePath":"developer/references/astria-go/cli-networks-configuration.md","lastUpdated":1716595602000}'),t={name:"developer/references/astria-go/cli-networks-configuration.md"},n=a(`

Astria Cli Networks Configuration

For each instance created with the astria-go cli, a networks-config.toml file can found in the ~/.astria/<instance>/ directory. This file allows for simplified configurations of different sequencer networks that can be targeted by the cli.

Selecting which network the cli is targeting can be controlled by using the --network flag when using the astria-go dev run command.

Primary Use Case

In general, the default values in the networks config should not need to be changed for most development situations. The most likely case where a user will need to update the configs is if they are trying to test their local components against a different sequencer rpc/grpc.

For example, the default Astria Dusk dev net configuration is as follows:

toml
[dusk]
 sequencer_chain_id = 'astria-dusk-5'
 sequencer_grpc = 'https://grpc.sequencer.dusk-5.devnet.astria.org/'
 sequencer_rpc = 'https://rpc.sequencer.dusk-5.devnet.astria.org/'
diff --git a/assets/developer_references_astria-go_cli-networks-configuration.md.D6ZrmUeV.lean.js b/assets/developer_references_astria-go_cli-networks-configuration.md.CnldiT1_.lean.js
similarity index 77%
rename from assets/developer_references_astria-go_cli-networks-configuration.md.D6ZrmUeV.lean.js
rename to assets/developer_references_astria-go_cli-networks-configuration.md.CnldiT1_.lean.js
index e2cae63..4002097 100644
--- a/assets/developer_references_astria-go_cli-networks-configuration.md.D6ZrmUeV.lean.js
+++ b/assets/developer_references_astria-go_cli-networks-configuration.md.CnldiT1_.lean.js
@@ -1 +1 @@
-import{_ as s,c as i,o as e,a5 as a}from"./chunks/framework.EN5ALL4V.js";const u=JSON.parse('{"title":"Astria Cli Networks Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/astria-go/cli-networks-configuration.md","filePath":"developer/references/astria-go/cli-networks-configuration.md","lastUpdated":1716595602000}'),t={name:"developer/references/astria-go/cli-networks-configuration.md"},n=a("",21),l=[n];function h(o,r,p,c,d,k){return e(),i("div",null,l)}const F=s(t,[["render",h]]);export{u as __pageData,F as default};
+import{_ as s,c as i,o as e,a5 as a}from"./chunks/framework.-Zveb6AF.js";const u=JSON.parse('{"title":"Astria Cli Networks Configuration","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/astria-go/cli-networks-configuration.md","filePath":"developer/references/astria-go/cli-networks-configuration.md","lastUpdated":1716595602000}'),t={name:"developer/references/astria-go/cli-networks-configuration.md"},n=a("",21),l=[n];function h(o,r,p,c,d,k){return e(),i("div",null,l)}const F=s(t,[["render",h]]);export{u as __pageData,F as default};
diff --git a/assets/developer_references_endpoints.md.DA5OjVvM.js b/assets/developer_references_endpoints.md.BGBzKPmH.js
similarity index 87%
rename from assets/developer_references_endpoints.md.DA5OjVvM.js
rename to assets/developer_references_endpoints.md.BGBzKPmH.js
index 3ef82d5..a2f006c 100644
--- a/assets/developer_references_endpoints.md.DA5OjVvM.js
+++ b/assets/developer_references_endpoints.md.BGBzKPmH.js
@@ -1 +1 @@
-import{_ as e,c as t,o as r,a5 as a}from"./chunks/framework.EN5ALL4V.js";const u=JSON.parse('{"title":"Astria Endpoints","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/endpoints.md","filePath":"developer/references/endpoints.md","lastUpdated":1716595602000}'),n={name:"developer/references/endpoints.md"},s=a('

Astria Endpoints

NetworkSequencer RPC
localhttp://127.0.0.1:26657
Duskhttps://rpc.sequencer.dusk-5.devnet.astria.org/
',2),d=[s];function o(i,c,p,_,l,h){return r(),t("div",null,d)}const m=e(n,[["render",o]]);export{u as __pageData,m as default}; +import{_ as e,c as t,o as r,a5 as a}from"./chunks/framework.-Zveb6AF.js";const u=JSON.parse('{"title":"Astria Endpoints","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/endpoints.md","filePath":"developer/references/endpoints.md","lastUpdated":1716595602000}'),n={name:"developer/references/endpoints.md"},s=a('

Astria Endpoints

NetworkSequencer RPC
localhttp://127.0.0.1:26657
Duskhttps://rpc.sequencer.dusk-5.devnet.astria.org/
',2),d=[s];function o(i,c,p,_,l,h){return r(),t("div",null,d)}const m=e(n,[["render",o]]);export{u as __pageData,m as default}; diff --git a/assets/developer_references_endpoints.md.DA5OjVvM.lean.js b/assets/developer_references_endpoints.md.BGBzKPmH.lean.js similarity index 73% rename from assets/developer_references_endpoints.md.DA5OjVvM.lean.js rename to assets/developer_references_endpoints.md.BGBzKPmH.lean.js index 99e3326..6abd7b3 100644 --- a/assets/developer_references_endpoints.md.DA5OjVvM.lean.js +++ b/assets/developer_references_endpoints.md.BGBzKPmH.lean.js @@ -1 +1 @@ -import{_ as e,c as t,o as r,a5 as a}from"./chunks/framework.EN5ALL4V.js";const u=JSON.parse('{"title":"Astria Endpoints","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/endpoints.md","filePath":"developer/references/endpoints.md","lastUpdated":1716595602000}'),n={name:"developer/references/endpoints.md"},s=a("",2),d=[s];function o(i,c,p,_,l,h){return r(),t("div",null,d)}const m=e(n,[["render",o]]);export{u as __pageData,m as default}; +import{_ as e,c as t,o as r,a5 as a}from"./chunks/framework.-Zveb6AF.js";const u=JSON.parse('{"title":"Astria Endpoints","description":"","frontmatter":{},"headers":[],"relativePath":"developer/references/endpoints.md","filePath":"developer/references/endpoints.md","lastUpdated":1716595602000}'),n={name:"developer/references/endpoints.md"},s=a("",2),d=[s];function o(i,c,p,_,l,h){return r(),t("div",null,d)}const m=e(n,[["render",o]]);export{u as __pageData,m as default}; diff --git a/assets/developer_tutorials_install-the-cli.md.CLBA3xA4.js b/assets/developer_tutorials_install-the-cli.md.Ka1S9HeO.js similarity index 95% rename from assets/developer_tutorials_install-the-cli.md.CLBA3xA4.js rename to assets/developer_tutorials_install-the-cli.md.Ka1S9HeO.js index 98161d5..cfcc56a 100644 --- a/assets/developer_tutorials_install-the-cli.md.CLBA3xA4.js +++ b/assets/developer_tutorials_install-the-cli.md.Ka1S9HeO.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const F=JSON.parse('{"title":"Install the Astria CLI","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/install-the-cli.md","filePath":"developer/tutorials/install-the-cli.md","lastUpdated":1716595602000}'),e={name:"developer/tutorials/install-the-cli.md"},l=t(`

Install the Astria CLI

The astria-go cli is a tool designed to make local rollup development as simple and dependency free as possible. It provides functionality to easily run the Astria stack and interact with the Sequencer.

Download using Curl

bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-arm64.tar.gz > astria-cli.tar.gz
+import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.-Zveb6AF.js";const F=JSON.parse('{"title":"Install the Astria CLI","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/install-the-cli.md","filePath":"developer/tutorials/install-the-cli.md","lastUpdated":1716595602000}'),e={name:"developer/tutorials/install-the-cli.md"},l=t(`

Install the Astria CLI

The astria-go cli is a tool designed to make local rollup development as simple and dependency free as possible. It provides functionality to easily run the Astria stack and interact with the Sequencer.

Download using Curl

bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-arm64.tar.gz > astria-cli.tar.gz
 tar -xvzf astria-cli.tar.gz
 mv astria-go /usr/local/bin/
 astria-go version
bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-amd64.tar.gz > astria-cli.tar.gz
diff --git a/assets/developer_tutorials_install-the-cli.md.CLBA3xA4.lean.js b/assets/developer_tutorials_install-the-cli.md.Ka1S9HeO.lean.js
similarity index 74%
rename from assets/developer_tutorials_install-the-cli.md.CLBA3xA4.lean.js
rename to assets/developer_tutorials_install-the-cli.md.Ka1S9HeO.lean.js
index 3726d91..891defc 100644
--- a/assets/developer_tutorials_install-the-cli.md.CLBA3xA4.lean.js
+++ b/assets/developer_tutorials_install-the-cli.md.Ka1S9HeO.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const F=JSON.parse('{"title":"Install the Astria CLI","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/install-the-cli.md","filePath":"developer/tutorials/install-the-cli.md","lastUpdated":1716595602000}'),e={name:"developer/tutorials/install-the-cli.md"},l=t("",12),n=[l];function h(r,p,d,o,k,c){return i(),a("div",null,n)}const u=s(e,[["render",h]]);export{F as __pageData,u as default};
+import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.-Zveb6AF.js";const F=JSON.parse('{"title":"Install the Astria CLI","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/install-the-cli.md","filePath":"developer/tutorials/install-the-cli.md","lastUpdated":1716595602000}'),e={name:"developer/tutorials/install-the-cli.md"},l=t("",12),n=[l];function h(r,p,d,o,k,c){return i(),a("div",null,n)}const u=s(e,[["render",h]]);export{F as __pageData,u as default};
diff --git a/assets/developer_tutorials_run-local-rollup-against-remote-sequencer.md.BTYD2h2y.js b/assets/developer_tutorials_run-local-rollup-against-remote-sequencer.md.HhKMkuDu.js
similarity index 99%
rename from assets/developer_tutorials_run-local-rollup-against-remote-sequencer.md.BTYD2h2y.js
rename to assets/developer_tutorials_run-local-rollup-against-remote-sequencer.md.HhKMkuDu.js
index 20d87dc..63a1743 100644
--- a/assets/developer_tutorials_run-local-rollup-against-remote-sequencer.md.BTYD2h2y.js
+++ b/assets/developer_tutorials_run-local-rollup-against-remote-sequencer.md.HhKMkuDu.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as i,a5 as e}from"./chunks/framework.EN5ALL4V.js";const t="/assets/go-cli-remote-sequencer.xFhfouJr.png",y=JSON.parse('{"title":"Run a Local Rollup against a Remote Sequencer","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/run-local-rollup-against-remote-sequencer.md","filePath":"developer/tutorials/run-local-rollup-against-remote-sequencer.md","lastUpdated":1716595602000}'),n={name:"developer/tutorials/run-local-rollup-against-remote-sequencer.md"},l=e(`

Run a Local Rollup against a Remote Sequencer

This guide will walk you through running a local Geth rollup against a remote Astria sequencer, using the astria-go cli to run the required components of the Astria stack locally on your machine.

Setup a Geth Rollup

Build Geth

Requires Go, just, and Foundry:

Open a new terminal window and clone and build Geth.

bash
git clone git@github.com:astriaorg/astria-geth.git
+import{_ as s,c as a,o as i,a5 as e}from"./chunks/framework.-Zveb6AF.js";const t="/assets/go-cli-remote-sequencer.xFhfouJr.png",y=JSON.parse('{"title":"Run a Local Rollup against a Remote Sequencer","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/run-local-rollup-against-remote-sequencer.md","filePath":"developer/tutorials/run-local-rollup-against-remote-sequencer.md","lastUpdated":1716595602000}'),n={name:"developer/tutorials/run-local-rollup-against-remote-sequencer.md"},l=e(`

Run a Local Rollup against a Remote Sequencer

This guide will walk you through running a local Geth rollup against a remote Astria sequencer, using the astria-go cli to run the required components of the Astria stack locally on your machine.

Setup a Geth Rollup

Build Geth

Requires Go, just, and Foundry:

Open a new terminal window and clone and build Geth.

bash
git clone git@github.com:astriaorg/astria-geth.git
 cd astria-geth
 git checkout local-dev
 just build

Configure the Geth Genesis Information

Once you have built the Geth node, you will need to update some additional genesis information to work with the remote sequencer.

Run the following using the Astira cli:

bash
astria-go sequencer blockheight --sequencer-url https://rpc.sequencer.dusk-7.devnet.astria.org

Then, open the geth-genesis-local.json file and update the chainId and astriaRollupName to something of your choosing, as well as updating astriaSequencerInitialHeight using the block height from the previous command to choose which sequencer block the first block of your rollup will be in:

json
    "config": {
diff --git a/assets/developer_tutorials_run-local-rollup-against-remote-sequencer.md.BTYD2h2y.lean.js b/assets/developer_tutorials_run-local-rollup-against-remote-sequencer.md.HhKMkuDu.lean.js
similarity index 80%
rename from assets/developer_tutorials_run-local-rollup-against-remote-sequencer.md.BTYD2h2y.lean.js
rename to assets/developer_tutorials_run-local-rollup-against-remote-sequencer.md.HhKMkuDu.lean.js
index 6d05a2d..d0f2000 100644
--- a/assets/developer_tutorials_run-local-rollup-against-remote-sequencer.md.BTYD2h2y.lean.js
+++ b/assets/developer_tutorials_run-local-rollup-against-remote-sequencer.md.HhKMkuDu.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as i,a5 as e}from"./chunks/framework.EN5ALL4V.js";const t="/assets/go-cli-remote-sequencer.xFhfouJr.png",y=JSON.parse('{"title":"Run a Local Rollup against a Remote Sequencer","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/run-local-rollup-against-remote-sequencer.md","filePath":"developer/tutorials/run-local-rollup-against-remote-sequencer.md","lastUpdated":1716595602000}'),n={name:"developer/tutorials/run-local-rollup-against-remote-sequencer.md"},l=e("",45),h=[l];function o(r,p,c,d,u,k){return i(),a("div",null,h)}const F=s(n,[["render",o]]);export{y as __pageData,F as default};
+import{_ as s,c as a,o as i,a5 as e}from"./chunks/framework.-Zveb6AF.js";const t="/assets/go-cli-remote-sequencer.xFhfouJr.png",y=JSON.parse('{"title":"Run a Local Rollup against a Remote Sequencer","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/run-local-rollup-against-remote-sequencer.md","filePath":"developer/tutorials/run-local-rollup-against-remote-sequencer.md","lastUpdated":1716595602000}'),n={name:"developer/tutorials/run-local-rollup-against-remote-sequencer.md"},l=e("",45),h=[l];function o(r,p,c,d,u,k){return i(),a("div",null,h)}const F=s(n,[["render",o]]);export{y as __pageData,F as default};
diff --git a/assets/developer_tutorials_run-local-rollup-and-sequencer.md.CVugc4XT.js b/assets/developer_tutorials_run-local-rollup-and-sequencer.md.DCDkS687.js
similarity index 99%
rename from assets/developer_tutorials_run-local-rollup-and-sequencer.md.CVugc4XT.js
rename to assets/developer_tutorials_run-local-rollup-and-sequencer.md.DCDkS687.js
index 33f0051..a20d44a 100644
--- a/assets/developer_tutorials_run-local-rollup-and-sequencer.md.CVugc4XT.js
+++ b/assets/developer_tutorials_run-local-rollup-and-sequencer.md.DCDkS687.js
@@ -1,4 +1,4 @@
-import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const e="/assets/go-cli-local-sequencer.SnoPVT9e.png",y=JSON.parse('{"title":"Run a Local Rollup and Sequencer","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/run-local-rollup-and-sequencer.md","filePath":"developer/tutorials/run-local-rollup-and-sequencer.md","lastUpdated":1716595602000}'),n={name:"developer/tutorials/run-local-rollup-and-sequencer.md"},l=t(`

Run a Local Rollup and Sequencer

This guide will walk you through running a local Geth rollup against the Astria sequencer, using the astria-go cli to run the required components of the Astria stack locally on your machine.

Setup a Geth Rollup

Requires Go, just, and Foundry:

Open a new terminal window and clone and build Geth:

bash
git clone git@github.com:astriaorg/astria-geth.git
+import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.-Zveb6AF.js";const e="/assets/go-cli-local-sequencer.SnoPVT9e.png",y=JSON.parse('{"title":"Run a Local Rollup and Sequencer","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/run-local-rollup-and-sequencer.md","filePath":"developer/tutorials/run-local-rollup-and-sequencer.md","lastUpdated":1716595602000}'),n={name:"developer/tutorials/run-local-rollup-and-sequencer.md"},l=t(`

Run a Local Rollup and Sequencer

This guide will walk you through running a local Geth rollup against the Astria sequencer, using the astria-go cli to run the required components of the Astria stack locally on your machine.

Setup a Geth Rollup

Requires Go, just, and Foundry:

Open a new terminal window and clone and build Geth:

bash
git clone git@github.com:astriaorg/astria-geth.git
 cd astria-geth
 git checkout local-dev
 just build

Create a new genesis account for your Geth rollup:

bash
cast w new

Open the geth-genesis-local.json file in your Geth repo and update the "alloc" account with the new address you just created, as well as updating the "chainId" and "astriaRollupName" to something of your choosing:

json
{
diff --git a/assets/developer_tutorials_run-local-rollup-and-sequencer.md.CVugc4XT.lean.js b/assets/developer_tutorials_run-local-rollup-and-sequencer.md.DCDkS687.lean.js
similarity index 78%
rename from assets/developer_tutorials_run-local-rollup-and-sequencer.md.CVugc4XT.lean.js
rename to assets/developer_tutorials_run-local-rollup-and-sequencer.md.DCDkS687.lean.js
index a4bd384..d7d7280 100644
--- a/assets/developer_tutorials_run-local-rollup-and-sequencer.md.CVugc4XT.lean.js
+++ b/assets/developer_tutorials_run-local-rollup-and-sequencer.md.DCDkS687.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const e="/assets/go-cli-local-sequencer.SnoPVT9e.png",y=JSON.parse('{"title":"Run a Local Rollup and Sequencer","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/run-local-rollup-and-sequencer.md","filePath":"developer/tutorials/run-local-rollup-and-sequencer.md","lastUpdated":1716595602000}'),n={name:"developer/tutorials/run-local-rollup-and-sequencer.md"},l=t("",31),h=[l];function p(o,r,d,c,k,u){return i(),a("div",null,h)}const F=s(n,[["render",p]]);export{y as __pageData,F as default};
+import{_ as s,c as a,o as i,a5 as t}from"./chunks/framework.-Zveb6AF.js";const e="/assets/go-cli-local-sequencer.SnoPVT9e.png",y=JSON.parse('{"title":"Run a Local Rollup and Sequencer","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/run-local-rollup-and-sequencer.md","filePath":"developer/tutorials/run-local-rollup-and-sequencer.md","lastUpdated":1716595602000}'),n={name:"developer/tutorials/run-local-rollup-and-sequencer.md"},l=t("",31),h=[l];function p(o,r,d,c,k,u){return i(),a("div",null,h)}const F=s(n,[["render",p]]);export{y as __pageData,F as default};
diff --git a/assets/developer_tutorials_test-transactions.md.CHUWCnhT.js b/assets/developer_tutorials_test-transactions.md.CsFseJpv.js
similarity index 98%
rename from assets/developer_tutorials_test-transactions.md.CHUWCnhT.js
rename to assets/developer_tutorials_test-transactions.md.CsFseJpv.js
index f8a3662..c693506 100644
--- a/assets/developer_tutorials_test-transactions.md.CHUWCnhT.js
+++ b/assets/developer_tutorials_test-transactions.md.CsFseJpv.js
@@ -1,4 +1,4 @@
-import{_ as e,c as t,o as s,a5 as a}from"./chunks/framework.EN5ALL4V.js";const g=JSON.parse('{"title":"Test Transactions","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/test-transactions.md","filePath":"developer/tutorials/test-transactions.md","lastUpdated":1716595602000}'),i={name:"developer/tutorials/test-transactions.md"},n=a(`

Test Transactions

Configure the Testing Script

To run the test transactions script you will need Foundry:

In a new terminal window, clone and configure the evm test transactions repo:

bash
git clone --recurse-submodules git@github.com:astriaorg/astria-web3.git
+import{_ as e,c as t,o as s,a5 as a}from"./chunks/framework.-Zveb6AF.js";const g=JSON.parse('{"title":"Test Transactions","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/test-transactions.md","filePath":"developer/tutorials/test-transactions.md","lastUpdated":1716595602000}'),i={name:"developer/tutorials/test-transactions.md"},n=a(`

Test Transactions

Configure the Testing Script

To run the test transactions script you will need Foundry:

In a new terminal window, clone and configure the evm test transactions repo:

bash
git clone --recurse-submodules git@github.com:astriaorg/astria-web3.git
 cd astria-web3
 git checkout local-evm
 cd packages/evm-test-data/
diff --git a/assets/developer_tutorials_test-transactions.md.CHUWCnhT.lean.js b/assets/developer_tutorials_test-transactions.md.CsFseJpv.lean.js
similarity index 74%
rename from assets/developer_tutorials_test-transactions.md.CHUWCnhT.lean.js
rename to assets/developer_tutorials_test-transactions.md.CsFseJpv.lean.js
index 6bfa93e..c74ba40 100644
--- a/assets/developer_tutorials_test-transactions.md.CHUWCnhT.lean.js
+++ b/assets/developer_tutorials_test-transactions.md.CsFseJpv.lean.js
@@ -1 +1 @@
-import{_ as e,c as t,o as s,a5 as a}from"./chunks/framework.EN5ALL4V.js";const g=JSON.parse('{"title":"Test Transactions","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/test-transactions.md","filePath":"developer/tutorials/test-transactions.md","lastUpdated":1716595602000}'),i={name:"developer/tutorials/test-transactions.md"},n=a("",25),o=[n];function r(l,h,c,d,p,u){return s(),t("div",null,o)}const y=e(i,[["render",r]]);export{g as __pageData,y as default};
+import{_ as e,c as t,o as s,a5 as a}from"./chunks/framework.-Zveb6AF.js";const g=JSON.parse('{"title":"Test Transactions","description":"","frontmatter":{},"headers":[],"relativePath":"developer/tutorials/test-transactions.md","filePath":"developer/tutorials/test-transactions.md","lastUpdated":1716595602000}'),i={name:"developer/tutorials/test-transactions.md"},n=a("",25),o=[n];function r(l,h,c,d,p,u){return s(),t("div",null,o)}const y=e(i,[["render",r]]);export{g as __pageData,y as default};
diff --git a/assets/do-setup.Bh3liMJG.png b/assets/do-setup.Bh3liMJG.png
deleted file mode 100644
index 0874855..0000000
Binary files a/assets/do-setup.Bh3liMJG.png and /dev/null differ
diff --git a/assets/dusk-faq_1-information.md.DuTqHZkG.js b/assets/dusk-faq_1-information.md.DuTqHZkG.js
new file mode 100644
index 0000000..b649ea3
--- /dev/null
+++ b/assets/dusk-faq_1-information.md.DuTqHZkG.js
@@ -0,0 +1,10 @@
+import{_ as s,c as i,o as a,a5 as t}from"./chunks/framework.-Zveb6AF.js";const E=JSON.parse('{"title":"FAQ and Debugging","description":"","frontmatter":{"sidebar_position":5},"headers":[],"relativePath":"dusk-faq/1-information.md","filePath":"dusk-faq/1-information.md","lastUpdated":1713794212000}'),e={name:"dusk-faq/1-information.md"},n=t(`

FAQ and Debugging

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

Endpoints

Endpoints for the remote cluster are the following:

NAMEHOSTSADDRESS
EVM JSON RPCrpc.evm.dusk-3.devnet.astria.org34.160.214.22
EVM Block Explorerexplorer.evm.dusk-3.devnet.astria.org34.111.167.16
EVM Faucetfaucet.evm.dusk-3.devnet.astria.org130.211.4.120
Sequencer RPCrpc.sequencer.dusk-3.devnet.astria.org34.111.73.187
Sequencer Faucetfaucet.sequencer.dusk-3.devnet.astria.org34.36.8.102

Software Versions

The latest Devnet (dusk-3) runs the following software versions:

Install the latest Astria cli

Manually Fetch Sequencer Block Height

Sequencer Block Height

The initial sequencer block height is automatically fetched and set (if not manually specified) when creating the rollup config.

You can manually retrieve it with the astria-cli:

bash
astria-cli sequencer blockheight get

If you need to set this to a different value you can set it as an an environment variable:

bash
export ROLLUP_SEQUENCER_INITIAL_BLOCK_HEIGHT=<INITIAL_SEQUENCER_BLOCK_HEIGHT>

Or use the following flag when running the astria-cli rollup config create command below:

bash
--sequencer.initial-block-height <INITIAL_SEQUENCER_BLOCK_HEIGHT>

Loadbalancer Information

You can retrieve the kubernetes service for your loadbalancer with

bash
kubectl get svc -n ingress-nginx
bash
NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
+ingress-nginx-controller             LoadBalancer   34.118.228.98   34.42.184.206   80:31623/TCP,443:31357/TCP   57s
+ingress-nginx-controller-admission   ClusterIP      34.118.229.71   <none>          443/TCP                      57s

You can check that the loadbalancer is working by making a curl request

bash
# use the EXTERNAL-IP from the result above
+curl 34.42.184.206

This should return the nginx 404 page

html
<html>
+<head><title>404 Not Found</title></head>
+<body>
+<center><h1>404 Not Found</h1></center>
+<hr><center>nginx</center>
+</body>
+</html>

Ingress Information

You can check the kubernetes ingress resource for your rollup with:

bash
kubectl get ingress -n astria-dev-cluster
`,29),l=[n];function h(r,p,k,o,d,c){return a(),i("div",null,l)}const u=s(e,[["render",h]]);export{E as __pageData,u as default}; diff --git a/assets/dusk-faq_1-information.md.DuTqHZkG.lean.js b/assets/dusk-faq_1-information.md.DuTqHZkG.lean.js new file mode 100644 index 0000000..c57cb42 --- /dev/null +++ b/assets/dusk-faq_1-information.md.DuTqHZkG.lean.js @@ -0,0 +1 @@ +import{_ as s,c as i,o as a,a5 as t}from"./chunks/framework.-Zveb6AF.js";const E=JSON.parse('{"title":"FAQ and Debugging","description":"","frontmatter":{"sidebar_position":5},"headers":[],"relativePath":"dusk-faq/1-information.md","filePath":"dusk-faq/1-information.md","lastUpdated":1713794212000}'),e={name:"dusk-faq/1-information.md"},n=t("",29),l=[n];function h(r,p,k,o,d,c){return a(),i("div",null,l)}const u=s(e,[["render",h]]);export{E as __pageData,u as default}; diff --git a/assets/dusk-faq_1-information.md.kCVNcAJO.js b/assets/dusk-faq_1-information.md.kCVNcAJO.js deleted file mode 100644 index 0e17dbe..0000000 --- a/assets/dusk-faq_1-information.md.kCVNcAJO.js +++ /dev/null @@ -1,16 +0,0 @@ -import{_ as s,c as i,o as a,a5 as t}from"./chunks/framework.EN5ALL4V.js";const u=JSON.parse('{"title":"FAQ and Debugging","description":"","frontmatter":{"sidebar_position":5},"headers":[],"relativePath":"dusk-faq/1-information.md","filePath":"dusk-faq/1-information.md","lastUpdated":1713794212000}'),e={name:"dusk-faq/1-information.md"},l=t(`

FAQ and Debugging

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

Endpoints

Endpoints for the remote cluster are the following:

NAMEHOSTSADDRESS
EVM JSON RPCrpc.evm.dusk-3.devnet.astria.org34.160.214.22
EVM Block Explorerexplorer.evm.dusk-3.devnet.astria.org34.111.167.16
EVM Faucetfaucet.evm.dusk-3.devnet.astria.org130.211.4.120
Sequencer RPCrpc.sequencer.dusk-3.devnet.astria.org34.111.73.187
Sequencer Faucetfaucet.sequencer.dusk-3.devnet.astria.org34.36.8.102

Software Versions

The latest Devnet (dusk-3) runs the following software versions:

Install the latest Astria cli

Install the latest astria cli

bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-aarch64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-unknown-linux-gnu.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
cargo install astria-cli --git=https://github.com/astriaorg/astria --tag=cli-v0.3.1 --locked

You'll also need to install the following tools:

WARNING

There is a bug in the latest Docker desktop release for MacOS
Please install the following release: https://docs.docker.com/desktop/release-notes/#4252
For more details see here

Manually Fetch Sequencer Block Height

Sequencer Block Height

The initial sequencer block height is automatically fetched and set (if not manually specified) when creating the rollup config.

You can manually retrieve it with the astria-cli:

bash
astria-cli sequencer blockheight get

If you need to set this to a different value you can set it as an an environment variable:

bash
export ROLLUP_SEQUENCER_INITIAL_BLOCK_HEIGHT=<INITIAL_SEQUENCER_BLOCK_HEIGHT>

Or use the following flag when running the astria-cli rollup config create command below:

bash
--sequencer.initial-block-height <INITIAL_SEQUENCER_BLOCK_HEIGHT>

Loadbalancer Information

You can retrieve the kubernetes service for your loadbalancer with

bash
kubectl get svc -n ingress-nginx
bash
NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
-ingress-nginx-controller             LoadBalancer   34.118.228.98   34.42.184.206   80:31623/TCP,443:31357/TCP   57s
-ingress-nginx-controller-admission   ClusterIP      34.118.229.71   <none>          443/TCP                      57s

You can check that the loadbalancer is working by making a curl request

bash
# use the EXTERNAL-IP from the result above
-curl 34.42.184.206

This should return the nginx 404 page

html
<html>
-<head><title>404 Not Found</title></head>
-<body>
-<center><h1>404 Not Found</h1></center>
-<hr><center>nginx</center>
-</body>
-</html>

Ingress Information

You can check the kubernetes ingress resource for your rollup with:

bash
kubectl get ingress -n astria-dev-cluster
`,34),n=[l];function h(r,p,k,o,d,c){return a(),i("div",null,n)}const F=s(e,[["render",h]]);export{u as __pageData,F as default}; diff --git a/assets/dusk-faq_1-information.md.kCVNcAJO.lean.js b/assets/dusk-faq_1-information.md.kCVNcAJO.lean.js deleted file mode 100644 index 2ab8102..0000000 --- a/assets/dusk-faq_1-information.md.kCVNcAJO.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as i,o as a,a5 as t}from"./chunks/framework.EN5ALL4V.js";const u=JSON.parse('{"title":"FAQ and Debugging","description":"","frontmatter":{"sidebar_position":5},"headers":[],"relativePath":"dusk-faq/1-information.md","filePath":"dusk-faq/1-information.md","lastUpdated":1713794212000}'),e={name:"dusk-faq/1-information.md"},l=t("",34),n=[l];function h(r,p,k,o,d,c){return a(),i("div",null,n)}const F=s(e,[["render",h]]);export{u as __pageData,F as default}; diff --git a/assets/index.md.CwgoGh1Y.js b/assets/index.md.CwgoGh1Y.js deleted file mode 100644 index 35d1096..0000000 --- a/assets/index.md.CwgoGh1Y.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as L,c as e,o as t}from"./chunks/framework.EN5ALL4V.js";const d=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Astria","text":"The Shared Sequencer Network","tagline":"The easiest way to deploy decentralized rollups.","image":{"src":"/hero-img.svg","alt":"Astria"},"actions":[{"theme":"brand","text":"Just Deploy","link":"/local-rollup/1-introduction"},{"theme":"alt","text":"Introduction","link":"/overview/1-introduction"}]},"features":[{"title":"Learn","details":"Astria is a shared sequencing network that allows many rollups to share a single decentralized network of sequencers.","link":"/overview/1-introduction","icon":""},{"title":"Developers","details":"Use the Astria stack to create, integrate and build your own modular rollups.","link":"/developer/tutorials/1-using-astria-go-cli","icon":""}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1713794212000}'),i={name:"index.md"};function r(o,a,n,s,l,M){return t(),e("div")}const V=L(i,[["render",r]]);export{d as __pageData,V as default}; diff --git a/assets/index.md.CwgoGh1Y.lean.js b/assets/index.md.CwgoGh1Y.lean.js deleted file mode 100644 index 35d1096..0000000 --- a/assets/index.md.CwgoGh1Y.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as L,c as e,o as t}from"./chunks/framework.EN5ALL4V.js";const d=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Astria","text":"The Shared Sequencer Network","tagline":"The easiest way to deploy decentralized rollups.","image":{"src":"/hero-img.svg","alt":"Astria"},"actions":[{"theme":"brand","text":"Just Deploy","link":"/local-rollup/1-introduction"},{"theme":"alt","text":"Introduction","link":"/overview/1-introduction"}]},"features":[{"title":"Learn","details":"Astria is a shared sequencing network that allows many rollups to share a single decentralized network of sequencers.","link":"/overview/1-introduction","icon":""},{"title":"Developers","details":"Use the Astria stack to create, integrate and build your own modular rollups.","link":"/developer/tutorials/1-using-astria-go-cli","icon":""}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1713794212000}'),i={name:"index.md"};function r(o,a,n,s,l,M){return t(),e("div")}const V=L(i,[["render",r]]);export{d as __pageData,V as default}; diff --git a/assets/index.md.gniyevlB.js b/assets/index.md.gniyevlB.js new file mode 100644 index 0000000..4fe76a4 --- /dev/null +++ b/assets/index.md.gniyevlB.js @@ -0,0 +1 @@ +import{_ as L,c as e,o as t}from"./chunks/framework.-Zveb6AF.js";const d=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Astria","text":"The Sequencing Layer Network","tagline":"The easiest way to deploy decentralized rollups.","image":{"src":"/hero-img.svg","alt":"Astria"},"actions":[{"theme":"brand","text":"Just Deploy","link":"/developer/tutorials/install-the-cli"},{"theme":"alt","text":"Introduction","link":"/overview/introduction"}]},"features":[{"title":"Learn","details":"Astria is a sequencing layer that allows many rollups to share a single decentralized network of sequencers.","link":"/overview/introduction","icon":""},{"title":"Developers","details":"Use the Astria stack to create, integrate and build your own modular rollups.","link":"/developer/tutorials/install-the-cli","icon":""}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1717451255000}'),i={name:"index.md"};function a(r,n,o,s,l,M){return t(),e("div")}const V=L(i,[["render",a]]);export{d as __pageData,V as default}; diff --git a/assets/index.md.gniyevlB.lean.js b/assets/index.md.gniyevlB.lean.js new file mode 100644 index 0000000..4fe76a4 --- /dev/null +++ b/assets/index.md.gniyevlB.lean.js @@ -0,0 +1 @@ +import{_ as L,c as e,o as t}from"./chunks/framework.-Zveb6AF.js";const d=JSON.parse('{"title":"","description":"","frontmatter":{"layout":"home","hero":{"name":"Astria","text":"The Sequencing Layer Network","tagline":"The easiest way to deploy decentralized rollups.","image":{"src":"/hero-img.svg","alt":"Astria"},"actions":[{"theme":"brand","text":"Just Deploy","link":"/developer/tutorials/install-the-cli"},{"theme":"alt","text":"Introduction","link":"/overview/introduction"}]},"features":[{"title":"Learn","details":"Astria is a sequencing layer that allows many rollups to share a single decentralized network of sequencers.","link":"/overview/introduction","icon":""},{"title":"Developers","details":"Use the Astria stack to create, integrate and build your own modular rollups.","link":"/developer/tutorials/install-the-cli","icon":""}]},"headers":[],"relativePath":"index.md","filePath":"index.md","lastUpdated":1717451255000}'),i={name:"index.md"};function a(r,n,o,s,l,M){return t(),e("div")}const V=L(i,[["render",a]]);export{d as __pageData,V as default}; diff --git a/assets/local-rollup_1-introduction.md.BcjOEsjg.js b/assets/local-rollup_1-introduction.md.BcjOEsjg.js deleted file mode 100644 index 4f25354..0000000 --- a/assets/local-rollup_1-introduction.md.BcjOEsjg.js +++ /dev/null @@ -1,43 +0,0 @@ -import{_ as s,c as i,o as a,a5 as t}from"./chunks/framework.EN5ALL4V.js";const e="/assets/sequencer-faucet.6UQ0f9HT.png",F=JSON.parse('{"title":"Overview","description":"","frontmatter":{"sidebar_position":1},"headers":[],"relativePath":"local-rollup/1-introduction.md","filePath":"local-rollup/1-introduction.md","lastUpdated":1713206801000}'),l={name:"local-rollup/1-introduction.md"},n=t(`

Overview

This guide will walk you through deploying a rollup full node on a local Kubernetes cluster which uses the Astria shared sequencer network.

TIP

If you would like to deploy a rollup on a remote Kubernetes cluster, please see the remote deployment guide here.

Local Dependencies

INFO

This guide has been tested on MacOS and Linux but not Windows

Clone the Astria dev-cluster

bash
git clone --branch dusk-3 https://github.com/astriaorg/dev-cluster.git

Install the latest astria cli

bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-aarch64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-unknown-linux-gnu.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
cargo install astria-cli --git=https://github.com/astriaorg/astria --tag=cli-v0.3.1 --locked

You'll also need to install the following tools:

WARNING

There is a bug in the latest Docker desktop release for MacOS
Please install the following release: https://docs.docker.com/desktop/release-notes/#4252
For more details see here

Dusknet Endpoints

The endpoints for the remote shared sequencer are:

NAMEHOSTSADDRESS
Sequencer RPCrpc.sequencer.dusk-3.devnet.astria.org34.111.73.187
Sequencer Faucetfaucet.sequencer.dusk-3.devnet.astria.org34.36.8.102

Setup Local Environment

We use the Astria dev-cluster to setup a local Kubernetes (k8s) cluster where we will deploy our local rollup.

TIP

Make sure that Docker is running before continuing.

In the dev-cluster repo, run:

sh
just create-cluster
-just deploy-ingress-controller

This sets up a local environment compatible with our helm charts.

Create your Rollup Genesis Account(s)

DANGER

NEVER use a private key you use on a live network.

Specify the accounts which will be funded at the genesis block of your EVM rollup.

You can create an account using:

bash
cast w new
bash
Successfully created new keypair.
-Address:     0xfFe9...5f8b # <GENESIS_ADDRESS>
-Private key: 0x332e...a8fb # <GENESIS_PRIVATE_KEY>

Export the genesis private key, this will be used by the faucet included with the rollup:

bash
export ROLLUP_FAUCET_PRIV_KEY=<GENESIS_PRIVATE_KEY>

Export the genesis address alongside with your desired initial balance in Wei.
We recommend using a value of 100000000000000000000 or larger:

bash
export ROLLUP_GENESIS_ACCOUNTS=<GENESIS_ADDRESS>:<BALANCE>

You can specify multiple accounts to be funded at genesis as comma deliminated tuples of <ADDRESS>:<BALANCE>

bash
export ROLLUP_GENESIS_ACCOUNTS=<ADDRESS_1>:<BALANCE_1>,<ADDRESS_2>:<BALANCE_2>

Create Rollup Config

Create the configuration manifest for your rollup.

Replace the tags in the commands and env vars below, as follows:

Var NameVar TypeDescription
<YOUR_ROLLUP_NAME>StringThe name of your rollup. This must be lowercase alphanumeric, - is allowed, this will be included in your rollup's URLs.
<YOUR_NETWORK_ID>u64The id of your network. You must select an id that has not already been claimed. You can view claimed chain IDs here.

You can use environment variables to set the configuration for the rollup config creation. Replace all the <> tags with their corresponding values.

bash
export ROLLUP_NAME=<YOUR_ROLLUP_NAME>
-export ROLLUP_NETWORK_ID=<YOUR_NETWORK_ID>

Run the config create command:

sh
astria-cli rollup config create

Export the config file name as an env vars:

bash
export ROLLUP_CONF_FILE=$ROLLUP_NAME-rollup-conf.yaml

Verify the config

bash
cat $ROLLUP_CONF_FILE
bash
global:
-  namespace: astria-dev-cluster
-  useTTY: false
-  logLevel: debug
-config:
-  rollup:
-    name: <YOUR_ROLLUP_NAME>
-    chainId: <YOUR_ROLLUP_NAME>-chain
-    networkId: '<YOUR_NETWORK_ID>'
-    genesisAccounts:
-    - address: <GENESIS_ADDRESS>
-      balance: '<BALANCE>'
-  sequencer:
-    initialBlockHeight: <INITIAL_SEQUENCER_BLOCK_HEIGHT>
-    websocket: wss://rpc.sequencer.dusk-3.devnet.astria.org/websocket
-    rpc: https://rpc.sequencer.dusk-3.devnet.astria.org
-ingress:
-  hostname: localdev.me
-celestia-node:
-  config:
-    labelPrefix: <YOUR_ROLLUP_NAME>

Create a New Sequencer Account

Create an account on the Astria shared sequencer network for your rollup to submit transactions.

bash
astria-cli sequencer account create
bash
Create Sequencer Account
-
-Private Key: "5562...1622" # <SEQUENCER_ACCOUNT_PRIV_KEY>
-Public Key:  "ec20...f613" # 
-Address:     "8a2f...5f68" # <SEQUENCER_ACCOUNT_ADDRESS>

Export your sequencer private key and address as environment variables:

bash
export SEQUENCER_PRIV_KEY=5562...1622
-export SEQUENCER_ACCOUNT_ADDRESS=8a2f...5f68

Fund your Sequencer Account

Navigate to < https://faucet.sequencer.dusk-3.devnet.astria.org/ > to view the sequencer faucet.

Enter your <SEQUENCER_ACCOUNT_ADDRESS> into the text box to send funds to your account:

Sequencer Faucet

Verify your account received the funds

bash
astria-cli sequencer account balance $SEQUENCER_ACCOUNT_ADDRESS

Deploy the Rollup Node

Use the astria-cli to deploy the rollup node

bash
astria-cli rollup deployment create \\
-  --config $ROLLUP_CONF_FILE \\
-  --faucet-private-key $ROLLUP_FAUCET_PRIV_KEY \\
-  --sequencer-private-key $SEQUENCER_PRIV_KEY

Watch for rollup startup

You can watch for the Kubernetes pods of the rollup to start with:

bash
kubectl get pods -n astria-dev-cluster -w
bash
NAME                                             READY   STATUS    RESTARTS      AGE
-<YOUR_ROLLUP_NAME>-blockscout-647745c66d-vz4ks     6/6     Running   1 (56s ago)   72s
-<YOUR_ROLLUP_NAME>-celestia-node-light-mocha-4-0   2/2     Running   1 (56s ago)   72s
-<YOUR_ROLLUP_NAME>-faucet-68667bd895-pwqmz         1/1     Running   0             72s
-<YOUR_ROLLUP_NAME>-geth-755cb8dd97-k5xp8           3/3     Running   0             72s

Your Rollup Endpoints

Your rollup will automatically be configured with the several locally accessible endpoints:

UtilityURL
Block Explorerhttp://blockscout.<YOUR_ROLLUP_NAME>.localdev.me/
Faucethttp://faucet.<YOUR_ROLLUP_NAME>.localdev.me/
RPChttp://executor.<YOUR_ROLLUP_NAME>.localdev.me/

Interact with your Rollup

bash
export ETH_RPC_URL=http://executor.$ROLLUP_NAME.localdev.me/
bash
cast block 0

Use an address of your choice.

bash
export REC_ADDR=<SOME_ADDRESS>
bash
cast balance $REC_ADDR
bash
cast send $REC_ADDR --value 10000000000000000000 --private-key $ROLLUP_FAUCET_PRIV_KEY
bash
cast balance $REC_ADDR
`,76),h=[n];function p(k,r,d,o,c,g){return a(),i("div",null,h)}const E=s(l,[["render",p]]);export{F as __pageData,E as default}; diff --git a/assets/local-rollup_1-introduction.md.BcjOEsjg.lean.js b/assets/local-rollup_1-introduction.md.BcjOEsjg.lean.js deleted file mode 100644 index 11d6f93..0000000 --- a/assets/local-rollup_1-introduction.md.BcjOEsjg.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as s,c as i,o as a,a5 as t}from"./chunks/framework.EN5ALL4V.js";const e="/assets/sequencer-faucet.6UQ0f9HT.png",F=JSON.parse('{"title":"Overview","description":"","frontmatter":{"sidebar_position":1},"headers":[],"relativePath":"local-rollup/1-introduction.md","filePath":"local-rollup/1-introduction.md","lastUpdated":1713206801000}'),l={name:"local-rollup/1-introduction.md"},n=t("",76),h=[n];function p(k,r,d,o,c,g){return a(),i("div",null,h)}const E=s(l,[["render",p]]);export{F as __pageData,E as default}; diff --git a/assets/local-rollup_2-astria-cli-go.md.BD3xHQWh.js b/assets/local-rollup_2-astria-cli-go.md.BD3xHQWh.js deleted file mode 100644 index 7e21b58..0000000 --- a/assets/local-rollup_2-astria-cli-go.md.BD3xHQWh.js +++ /dev/null @@ -1,21 +0,0 @@ -import{_ as a,c as s,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const u=JSON.parse('{"title":"The Astria CLI","description":"","frontmatter":{},"headers":[],"relativePath":"local-rollup/2-astria-cli-go.md","filePath":"local-rollup/2-astria-cli-go.md","lastUpdated":1713206801000}'),e={name:"local-rollup/2-astria-cli-go.md"},n=t(`

The Astria CLI

The astria-go cli is a tool designed to make local rollup development as simple and dependency free as possible. It provides functionality to easily run the Astria stack and interact with the Sequencer.

Install and Run CLI from GitHub release

The CLI binaries are available for download from the releases page. There are binaries available for macOS and Linux, for both x86_64 and arm64 architectures.

bash
# download the binary for your platform, e.g. macOS silicon
-curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.3.0/astria-cli-v0.3.0-darwin-arm64.tar.gz \\
-  --output astria-go.tar.gz
-# extract the binary
-tar -xzvf astria-go.tar.gz
-# run the binary and check version
-./astria-go version
-
-# you can move the binary to a location in your PATH if you'd like
-mv astria-go /usr/local/bin/

Locally Build and Run the CLI

Dependencies: (only required for development)

bash
git clone git@github.com:astriaorg/astria-cli-go.git
-cd astria-cli-go
-just build
-just run "dev init"
-just run "dev run"

This will download, configure, and run the following binaries of these applications:

AppVersion
Cometbftv0.37.4
Astria-Sequencerv0.9.0
Astria-Conductorv0.12.0
Astria-Composerv0.4.0

And place them in a local-dev-astria directory, along with several other configuration files for everything.

The cli runs the minimum viable components for testing a rollup against the Astria stack, allowing developers to confirm that their rollup interacts with Astria's apis correctly.

Development

Requires go version 1.20 or newer.

You may also need to update your gopls settings in your editor for build tags to allow for correct parsing of the build tags in the code. This will depend on your IDE, but for VS Code you can open your settings and add:

json
{
-  "gopls": {
-      "buildFlags": ["-tags=darwin arm64 amd64 linux"]
-  }
-}

The cli is built using Cobra. Once you've pulled the repo you can install the cobra-cli as follows to add new commands for development:

bash
# install cobra-cli
-go install github.com/spf13/cobra-cli@latest
-# add new command, e.g. \`run\`
-cobra-cli add <new-command>

Available Commands

CommandDescription
versionPrints the cli version.
helpShow help.
devRoot command for cli development functionality.
dev initDownloads binaries and initializes the local environment.
dev runRuns a minimal, local Astria stack.
dev cleanDeletes the local data for the Astria stack.
dev clean allDeletes the local data, downloaded binaries, and config files for the Astria stack.
sequencer create-accountGenerate an account for the Sequencer.
sequencer get-balanceGet the balance of an account on the Sequencer.
`,21),l=[n];function r(o,h,d,p,c,k){return i(),s("div",null,l)}const F=a(e,[["render",r]]);export{u as __pageData,F as default}; diff --git a/assets/local-rollup_2-astria-cli-go.md.BD3xHQWh.lean.js b/assets/local-rollup_2-astria-cli-go.md.BD3xHQWh.lean.js deleted file mode 100644 index 75fe96e..0000000 --- a/assets/local-rollup_2-astria-cli-go.md.BD3xHQWh.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,c as s,o as i,a5 as t}from"./chunks/framework.EN5ALL4V.js";const u=JSON.parse('{"title":"The Astria CLI","description":"","frontmatter":{},"headers":[],"relativePath":"local-rollup/2-astria-cli-go.md","filePath":"local-rollup/2-astria-cli-go.md","lastUpdated":1713206801000}'),e={name:"local-rollup/2-astria-cli-go.md"},n=t("",21),l=[n];function r(o,h,d,p,c,k){return i(),s("div",null,l)}const F=a(e,[["render",r]]);export{u as __pageData,F as default}; diff --git a/assets/markdown-examples.md.DZlBVjPh.js b/assets/markdown-examples.md.BbchBgv2.js similarity index 98% rename from assets/markdown-examples.md.DZlBVjPh.js rename to assets/markdown-examples.md.BbchBgv2.js index 75d9bf5..ce08d62 100644 --- a/assets/markdown-examples.md.DZlBVjPh.js +++ b/assets/markdown-examples.md.BbchBgv2.js @@ -1,4 +1,4 @@ -import{_ as s,c as a,o as i,a5 as n}from"./chunks/framework.EN5ALL4V.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"markdown-examples.md","filePath":"markdown-examples.md","lastUpdated":1713206801000}'),t={name:"markdown-examples.md"},e=n(`

Markdown Extension Examples

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

Syntax Highlighting

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

Input

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

Markdown Extension Examples

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

Syntax Highlighting

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

Input

md
\`\`\`js{4}
 export default {
   data () {
     return {
diff --git a/assets/markdown-examples.md.DZlBVjPh.lean.js b/assets/markdown-examples.md.BbchBgv2.lean.js
similarity index 71%
rename from assets/markdown-examples.md.DZlBVjPh.lean.js
rename to assets/markdown-examples.md.BbchBgv2.lean.js
index 1d769f0..07fdfb9 100644
--- a/assets/markdown-examples.md.DZlBVjPh.lean.js
+++ b/assets/markdown-examples.md.BbchBgv2.lean.js
@@ -1 +1 @@
-import{_ as s,c as a,o as i,a5 as n}from"./chunks/framework.EN5ALL4V.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"markdown-examples.md","filePath":"markdown-examples.md","lastUpdated":1713206801000}'),t={name:"markdown-examples.md"},e=n("",19),l=[e];function p(h,k,r,o,d,E){return i(),a("div",null,l)}const m=s(t,[["render",p]]);export{g as __pageData,m as default};
+import{_ as s,c as a,o as i,a5 as n}from"./chunks/framework.-Zveb6AF.js";const g=JSON.parse('{"title":"Markdown Extension Examples","description":"","frontmatter":{},"headers":[],"relativePath":"markdown-examples.md","filePath":"markdown-examples.md","lastUpdated":1713206801000}'),t={name:"markdown-examples.md"},e=n("",19),l=[e];function p(h,k,r,o,d,E){return i(),a("div",null,l)}const m=s(t,[["render",p]]);export{g as __pageData,m as default};
diff --git a/assets/metamask-dusk2.W3LWBbKP.png b/assets/metamask-dusk2.W3LWBbKP.png
deleted file mode 100644
index e4da557..0000000
Binary files a/assets/metamask-dusk2.W3LWBbKP.png and /dev/null differ
diff --git a/assets/overview_1-introduction.md.BbejfMNU.js b/assets/overview_1-introduction.md.BbejfMNU.js
deleted file mode 100644
index 7bb4a5c..0000000
--- a/assets/overview_1-introduction.md.BbejfMNU.js
+++ /dev/null
@@ -1 +0,0 @@
-import{_ as e,c as o,o as t,a5 as r}from"./chunks/framework.EN5ALL4V.js";const m=JSON.parse('{"title":"Introduction","description":"","frontmatter":{"sidebar_position":1},"headers":[],"relativePath":"overview/1-introduction.md","filePath":"overview/1-introduction.md","lastUpdated":1713206801000}'),a={name:"overview/1-introduction.md"},i=r('

Introduction

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

Astria is a shared sequencing network that allows many rollups to share a single decentralized network of sequencers. These sequencers are simple and permissionless to join, completely replacing centralized sequencers.

This shared sequencer network provides out-of-the-box censorship resistance, fast block confirmations, and atomic cross-rollup composability – all while retaining each rollup’s sovereignty. Astria envisions a future where thousands of decentralized rollups flourish, each one tailored to meet the unique requirements of different industries, applications, and use cases.

To achieve this vision, we believe that deploying an economically secure, decentralized, and censorship-resistant rollup should be as easy as deploying a smart contract.

What should I read?

Want to learn more about the sequencer? check out the Astria overview section If you're a developer eager to get started, you should go straight to our Quick Start guide, which will walk you through deploying a rollup full node on a local Kubernetes cluster which uses the Astria shared sequencer network. Once you've gone through the Quick Start, you can move on to running on cloud. You can find our endpoints and FAQ here

What If I Need More Help?

While this documentation should include everything you need, if you can't find what you're looking for, please reach out to us on Twitter or check the Astria repository.

',9),n=[i];function s(l,c,h,u,d,p){return t(),o("div",null,n)}const _=e(a,[["render",s]]);export{m as __pageData,_ as default}; diff --git a/assets/overview_1-introduction.md.BbejfMNU.lean.js b/assets/overview_1-introduction.md.BbejfMNU.lean.js deleted file mode 100644 index 38ccc6b..0000000 --- a/assets/overview_1-introduction.md.BbejfMNU.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as o,o as t,a5 as r}from"./chunks/framework.EN5ALL4V.js";const m=JSON.parse('{"title":"Introduction","description":"","frontmatter":{"sidebar_position":1},"headers":[],"relativePath":"overview/1-introduction.md","filePath":"overview/1-introduction.md","lastUpdated":1713206801000}'),a={name:"overview/1-introduction.md"},i=r("",9),n=[i];function s(l,c,h,u,d,p){return t(),o("div",null,n)}const _=e(a,[["render",s]]);export{m as __pageData,_ as default}; diff --git a/assets/overview_2-why-decentralized-sequencers.md.AXITeYPR.js b/assets/overview_2-why-decentralized-sequencers.md.AXITeYPR.js deleted file mode 100644 index 317d798..0000000 --- a/assets/overview_2-why-decentralized-sequencers.md.AXITeYPR.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as n,a5 as a}from"./chunks/framework.EN5ALL4V.js";const r="/assets/shared_sequencer.ZMpZ-hgk.png",y=JSON.parse('{"title":"Why Decentralized Sequencers?","description":"","frontmatter":{"sidebar_position":2},"headers":[],"relativePath":"overview/2-why-decentralized-sequencers.md","filePath":"overview/2-why-decentralized-sequencers.md","lastUpdated":1713206801000}'),s={name:"overview/2-why-decentralized-sequencers.md"},i=a('

Why Decentralized Sequencers?

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

Centralization is antithetical to crypto. And yet, today’s rollups almost universally depend on a single sequencer. Centralized sequencers provide fast transaction confirmations and reduce costs by batching and compressing transactions. However, these benefits come at the cost of relying on a single trusted actor for liveness and censorship resistance.

Sacrificing decentralization for an improved user experience is an unacceptable Faustian bargain.

Astria tackles centralization head-on, providing rollups with a decentralized sequencer and even better UX. Astria’s shared sequencer network is a middleware blockchain with its own decentralized sequencer set which accepts transactions from multiple rollups. These transactions are ordered into a single block and written to the base layer without executing them.

Shared Sequencers

',6),o=[i];function c(l,d,p,u,h,_){return n(),t("div",null,o)}const f=e(s,[["render",c]]);export{y as __pageData,f as default}; diff --git a/assets/overview_2-why-decentralized-sequencers.md.AXITeYPR.lean.js b/assets/overview_2-why-decentralized-sequencers.md.AXITeYPR.lean.js deleted file mode 100644 index c6aa697..0000000 --- a/assets/overview_2-why-decentralized-sequencers.md.AXITeYPR.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,c as t,o as n,a5 as a}from"./chunks/framework.EN5ALL4V.js";const r="/assets/shared_sequencer.ZMpZ-hgk.png",y=JSON.parse('{"title":"Why Decentralized Sequencers?","description":"","frontmatter":{"sidebar_position":2},"headers":[],"relativePath":"overview/2-why-decentralized-sequencers.md","filePath":"overview/2-why-decentralized-sequencers.md","lastUpdated":1713206801000}'),s={name:"overview/2-why-decentralized-sequencers.md"},i=a("",6),o=[i];function c(l,d,p,u,h,_){return n(),t("div",null,o)}const f=e(s,[["render",c]]);export{y as __pageData,f as default}; diff --git a/assets/overview_3-cross-rollup-composability.md.CBI7Un7v.js b/assets/overview_3-cross-rollup-composability.md.CBI7Un7v.js deleted file mode 100644 index f9469f9..0000000 --- a/assets/overview_3-cross-rollup-composability.md.CBI7Un7v.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,c as t,o as a,a5 as s}from"./chunks/framework.EN5ALL4V.js";const m=JSON.parse('{"title":"Cross-Rollup Composability","description":"","frontmatter":{"sidebar_position":3},"headers":[],"relativePath":"overview/3-cross-rollup-composability.md","filePath":"overview/3-cross-rollup-composability.md","lastUpdated":1713206801000}'),i={name:"overview/3-cross-rollup-composability.md"},e=s('

Cross-Rollup Composability

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

Because Astria handles the transaction ordering for multiple rollups, it’s able to provide guarantees that transactions are only included as part of an atomic bundle. This allows users to specify that a transaction on Rollup A can be included in a block if and only if a different transaction on Rollup B is also included in the same block. By enabling such conditional transaction inclusion, Astria unlocks exciting possibilities such as atomic cross-rollup arbitrage.

',3),l=[e];function r(n,c,p,u,d,h){return a(),t("div",null,l)}const b=o(i,[["render",r]]);export{m as __pageData,b as default}; diff --git a/assets/overview_3-cross-rollup-composability.md.CBI7Un7v.lean.js b/assets/overview_3-cross-rollup-composability.md.CBI7Un7v.lean.js deleted file mode 100644 index ec5b86e..0000000 --- a/assets/overview_3-cross-rollup-composability.md.CBI7Un7v.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,c as t,o as a,a5 as s}from"./chunks/framework.EN5ALL4V.js";const m=JSON.parse('{"title":"Cross-Rollup Composability","description":"","frontmatter":{"sidebar_position":3},"headers":[],"relativePath":"overview/3-cross-rollup-composability.md","filePath":"overview/3-cross-rollup-composability.md","lastUpdated":1713206801000}'),i={name:"overview/3-cross-rollup-composability.md"},e=s("",3),l=[e];function r(n,c,p,u,d,h){return a(),t("div",null,l)}const b=o(i,[["render",r]]);export{m as __pageData,b as default}; diff --git a/assets/overview_architecture_1-overview.md.B9LbivsM.js b/assets/overview_architecture_1-overview.md.B9LbivsM.js deleted file mode 100644 index 33613e9..0000000 --- a/assets/overview_architecture_1-overview.md.B9LbivsM.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as r,D as a,c as i,I as s,a5 as n,l as e,a as t,o as l}from"./chunks/framework.EN5ALL4V.js";const c="/assets/astria-architecture.CVwQwwJF.png",D=JSON.parse('{"title":"Architecture Overview","description":"","frontmatter":{"sidebar_position":1},"headers":[],"relativePath":"overview/architecture/1-overview.md","filePath":"overview/architecture/1-overview.md","lastUpdated":1713206801000}'),h={name:"overview/architecture/1-overview.md"},u=n('

Architecture Overview

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

',2),d=e("p",null,"At a high level, Astria breaks out all of the components that are historically combined together in monolithic blockchains into individual components. This results in a modular ecosystem that allows users to swap out components to fit their specific needs.",-1),p=e("p",null,[e("img",{src:c,alt:"Astria Architecture"})],-1),m=e("p",null,"Given this architecture, rollups can retrieve blocks from Astria immediately after they’re created, without waiting for the base layer to include them. The economic weight of Astria’s decentralized sequencer set provides confidence that this transaction order is final. This “soft commitment” allows rollups to provide their end users with fast block confirmations. Alternatively, rollups can wait for blocks to be included by the base layer, giving them the strongest finality. All transactions still get this “firm commitment” at the speed of the base layer, fast pre-confirmations are just an additional feature that Astria provides to rollups if they choose to use it.",-1),f=e("p",null,[t("To generate a new state root, a rollup’s full nodes retrieve a block from either Astria or the base layer, check it against Astria’s fork choice rule, filter out transactions from other rollups, and apply the resultant subset of transactions to their previous state. Headers can then be generated from this state root and gossiped to light clients. Rollups of this style are termed ‘Lazy Rollups’, a nod to the "),e("a",{href:"https://en.wikipedia.org/wiki/Lazy_evaluation?ref=blog.astria.org",target:"_blank",rel:"noreferrer"},"Lazy Evaluation"),t(" principle found in programming language theory.")],-1),v=e("p",null,[t("See the "),e("a",{href:"https://github.com/astriaorg/astria",target:"_blank",rel:"noreferrer"},"Astria repo here.")],-1);function _(g,w,y,b,A,k){const o=a("DeploymentsRedirect");return l(),i("div",null,[u,s(o),d,p,m,f,v])}const V=r(h,[["render",_]]);export{D as __pageData,V as default}; diff --git a/assets/overview_architecture_1-overview.md.B9LbivsM.lean.js b/assets/overview_architecture_1-overview.md.B9LbivsM.lean.js deleted file mode 100644 index c7afc7c..0000000 --- a/assets/overview_architecture_1-overview.md.B9LbivsM.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as r,D as a,c as i,I as s,a5 as n,l as e,a as t,o as l}from"./chunks/framework.EN5ALL4V.js";const c="/assets/astria-architecture.CVwQwwJF.png",D=JSON.parse('{"title":"Architecture Overview","description":"","frontmatter":{"sidebar_position":1},"headers":[],"relativePath":"overview/architecture/1-overview.md","filePath":"overview/architecture/1-overview.md","lastUpdated":1713206801000}'),h={name:"overview/architecture/1-overview.md"},u=n("",2),d=e("p",null,"At a high level, Astria breaks out all of the components that are historically combined together in monolithic blockchains into individual components. This results in a modular ecosystem that allows users to swap out components to fit their specific needs.",-1),p=e("p",null,[e("img",{src:c,alt:"Astria Architecture"})],-1),m=e("p",null,"Given this architecture, rollups can retrieve blocks from Astria immediately after they’re created, without waiting for the base layer to include them. The economic weight of Astria’s decentralized sequencer set provides confidence that this transaction order is final. This “soft commitment” allows rollups to provide their end users with fast block confirmations. Alternatively, rollups can wait for blocks to be included by the base layer, giving them the strongest finality. All transactions still get this “firm commitment” at the speed of the base layer, fast pre-confirmations are just an additional feature that Astria provides to rollups if they choose to use it.",-1),f=e("p",null,[t("To generate a new state root, a rollup’s full nodes retrieve a block from either Astria or the base layer, check it against Astria’s fork choice rule, filter out transactions from other rollups, and apply the resultant subset of transactions to their previous state. Headers can then be generated from this state root and gossiped to light clients. Rollups of this style are termed ‘Lazy Rollups’, a nod to the "),e("a",{href:"https://en.wikipedia.org/wiki/Lazy_evaluation?ref=blog.astria.org",target:"_blank",rel:"noreferrer"},"Lazy Evaluation"),t(" principle found in programming language theory.")],-1),v=e("p",null,[t("See the "),e("a",{href:"https://github.com/astriaorg/astria",target:"_blank",rel:"noreferrer"},"Astria repo here.")],-1);function _(g,w,y,b,A,k){const o=a("DeploymentsRedirect");return l(),i("div",null,[u,s(o),d,p,m,f,v])}const V=r(h,[["render",_]]);export{D as __pageData,V as default}; diff --git a/assets/overview_architecture_2-transaction-flow.md.Bz0-vY-p.js b/assets/overview_architecture_2-transaction-flow.md.Bz0-vY-p.js deleted file mode 100644 index 0cb5931..0000000 --- a/assets/overview_architecture_2-transaction-flow.md.Bz0-vY-p.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,D as a,c as n,I as s,a5 as r,l as t,o as c}from"./chunks/framework.EN5ALL4V.js";const i="/assets/transaction-flow.BpBwzXvD.png",k=JSON.parse('{"title":"Transaction Flow","description":"","frontmatter":{"sidebar_position":2},"headers":[],"relativePath":"overview/architecture/2-transaction-flow.md","filePath":"overview/architecture/2-transaction-flow.md","lastUpdated":1713206801000}'),l={name:"overview/architecture/2-transaction-flow.md"},p=r('

Transaction Flow

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

',2),_=t("p",null,"The full transaction flow through the Astria stack is as follows:",-1),d=t("p",null,[t("img",{src:i,alt:"Astria Transaction Flow"})],-1);function h(u,f,m,w,T,v){const o=a("DeploymentsRedirect");return c(),n("div",null,[p,s(o),_,d])}const g=e(l,[["render",h]]);export{k as __pageData,g as default}; diff --git a/assets/overview_architecture_2-transaction-flow.md.Bz0-vY-p.lean.js b/assets/overview_architecture_2-transaction-flow.md.Bz0-vY-p.lean.js deleted file mode 100644 index 7fc54f3..0000000 --- a/assets/overview_architecture_2-transaction-flow.md.Bz0-vY-p.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as e,D as a,c as n,I as s,a5 as r,l as t,o as c}from"./chunks/framework.EN5ALL4V.js";const i="/assets/transaction-flow.BpBwzXvD.png",k=JSON.parse('{"title":"Transaction Flow","description":"","frontmatter":{"sidebar_position":2},"headers":[],"relativePath":"overview/architecture/2-transaction-flow.md","filePath":"overview/architecture/2-transaction-flow.md","lastUpdated":1713206801000}'),l={name:"overview/architecture/2-transaction-flow.md"},p=r("",2),_=t("p",null,"The full transaction flow through the Astria stack is as follows:",-1),d=t("p",null,[t("img",{src:i,alt:"Astria Transaction Flow"})],-1);function h(u,f,m,w,T,v){const o=a("DeploymentsRedirect");return c(),n("div",null,[p,s(o),_,d])}const g=e(l,[["render",h]]);export{k as __pageData,g as default}; diff --git a/assets/overview_architecture_3-rollup.md.izaFfvak.js b/assets/overview_architecture_3-rollup.md.izaFfvak.js deleted file mode 100644 index 710c7f9..0000000 --- a/assets/overview_architecture_3-rollup.md.izaFfvak.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,D as r,c as a,I as s,a5 as e,o as i}from"./chunks/framework.EN5ALL4V.js";const l="/assets/single-rollup.BGW5Yt0b.png",k=JSON.parse('{"title":"Rollups","description":"","frontmatter":{"sidebar_position":3},"headers":[],"relativePath":"overview/architecture/3-rollup.md","filePath":"overview/architecture/3-rollup.md","lastUpdated":1716595602000}'),n={name:"overview/architecture/3-rollup.md"},p=e('

Rollups

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

',2),c=e('

Astria is designed for permissionless rollup integration and takes advantage of lazy shared sequencing. This means that rollup developers have total sovereignty over their own execution state and can swap out sequencing layers without fear of being locked in. You do not need to ask for permission or go through a governance process to gain access. A rollup simply needs to satisfy the following interfaces:

Write Interface (Rollup to Composer):

  • For transaction submissions.

Read Interface (Rollup to Conductor):

  • For receiving blocks from the shared sequencer network.

Single Rollup

The Composer and Conductor are explained in more detail in future sections.

Both composer and conductor expose gRPC interfaces. See the astria-protos repo for specific implementation details.

Astria currently deploys a fork of Geth as an EVM rollup.

',9);function u(d,h,_,f,g,m){const o=r("DeploymentsRedirect");return i(),a("div",null,[p,s(o),c])}const T=t(n,[["render",u]]);export{k as __pageData,T as default}; diff --git a/assets/overview_architecture_3-rollup.md.izaFfvak.lean.js b/assets/overview_architecture_3-rollup.md.izaFfvak.lean.js deleted file mode 100644 index 689fa98..0000000 --- a/assets/overview_architecture_3-rollup.md.izaFfvak.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as t,D as r,c as a,I as s,a5 as e,o as i}from"./chunks/framework.EN5ALL4V.js";const l="/assets/single-rollup.BGW5Yt0b.png",k=JSON.parse('{"title":"Rollups","description":"","frontmatter":{"sidebar_position":3},"headers":[],"relativePath":"overview/architecture/3-rollup.md","filePath":"overview/architecture/3-rollup.md","lastUpdated":1716595602000}'),n={name:"overview/architecture/3-rollup.md"},p=e("",2),c=e("",9);function u(d,h,_,f,g,m){const o=r("DeploymentsRedirect");return i(),a("div",null,[p,s(o),c])}const T=t(n,[["render",u]]);export{k as __pageData,T as default}; diff --git a/assets/overview_architecture_4-composer.md.D0xP4xn5.js b/assets/overview_architecture_4-composer.md.D0xP4xn5.js deleted file mode 100644 index af34e65..0000000 --- a/assets/overview_architecture_4-composer.md.D0xP4xn5.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,D as r,c as i,I as a,a5 as n,l as e,a as s,o as l}from"./chunks/framework.EN5ALL4V.js";const C=JSON.parse('{"title":"Composer","description":"","frontmatter":{"sidebar_position":4},"headers":[],"relativePath":"overview/architecture/4-composer.md","filePath":"overview/architecture/4-composer.md","lastUpdated":1713206801000}'),c={name:"overview/architecture/4-composer.md"},p=n('

Composer

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

',2),u=e("p",null,"The Composer is an in-house abstraction over the potential actors in Astria's MEV supply chain. It currently contains a naive implementations of the role a searcher will fulfill, with the intention of having working examples that economically incentivized third parties can use as a starting point for their own implementations. As we progress from design to implementation of Astria's proposer-builder separation it will also include an example implementation of a naive builder. The abstractions serves the goal of acting as a forcing function on our architecture design by stubbing out the roles and requiring other components to interact with them through an interface.",-1),h=e("p",null,"While a real searcher implementation would create profit-generating bundles of rollup transactions and submit them to a builder, the Composer implementation simply bundles every rollup transaction it receives into a sequencer transaction and submits it to the sequencer. As our approach to proposer-builder separation is still in its design phase, there is currently no explicit builder role in the MEV supply chain and transactions are submitted directly to validator nodes' CometBFT mempool.",-1),m=e("p",null,"Once Astria's block builder design moves to its implementation phase, the Composer will include a reference builder implementation as well. Similarly to the searcher, while a real builder implementation would run a profit-generating auction, the composer implementation will simply run a FIFO queue that will add all the sequencer transactions it receives and submits a block to the sequencer's proposer.",-1),d=e("p",null,[s("See the "),e("a",{href:"https://github.com/astriaorg/astria/tree/main/crates/astria-conductor",target:"_blank",rel:"noreferrer"},"Conductor code here.")],-1);function _(f,b,g,v,w,y){const t=r("DeploymentsRedirect");return l(),i("div",null,[p,a(t),u,h,m,d])}const k=o(c,[["render",_]]);export{C as __pageData,k as default}; diff --git a/assets/overview_architecture_4-composer.md.D0xP4xn5.lean.js b/assets/overview_architecture_4-composer.md.D0xP4xn5.lean.js deleted file mode 100644 index 9ed36f7..0000000 --- a/assets/overview_architecture_4-composer.md.D0xP4xn5.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,D as r,c as i,I as a,a5 as n,l as e,a as s,o as l}from"./chunks/framework.EN5ALL4V.js";const C=JSON.parse('{"title":"Composer","description":"","frontmatter":{"sidebar_position":4},"headers":[],"relativePath":"overview/architecture/4-composer.md","filePath":"overview/architecture/4-composer.md","lastUpdated":1713206801000}'),c={name:"overview/architecture/4-composer.md"},p=n("",2),u=e("p",null,"The Composer is an in-house abstraction over the potential actors in Astria's MEV supply chain. It currently contains a naive implementations of the role a searcher will fulfill, with the intention of having working examples that economically incentivized third parties can use as a starting point for their own implementations. As we progress from design to implementation of Astria's proposer-builder separation it will also include an example implementation of a naive builder. The abstractions serves the goal of acting as a forcing function on our architecture design by stubbing out the roles and requiring other components to interact with them through an interface.",-1),h=e("p",null,"While a real searcher implementation would create profit-generating bundles of rollup transactions and submit them to a builder, the Composer implementation simply bundles every rollup transaction it receives into a sequencer transaction and submits it to the sequencer. As our approach to proposer-builder separation is still in its design phase, there is currently no explicit builder role in the MEV supply chain and transactions are submitted directly to validator nodes' CometBFT mempool.",-1),m=e("p",null,"Once Astria's block builder design moves to its implementation phase, the Composer will include a reference builder implementation as well. Similarly to the searcher, while a real builder implementation would run a profit-generating auction, the composer implementation will simply run a FIFO queue that will add all the sequencer transactions it receives and submits a block to the sequencer's proposer.",-1),d=e("p",null,[s("See the "),e("a",{href:"https://github.com/astriaorg/astria/tree/main/crates/astria-conductor",target:"_blank",rel:"noreferrer"},"Conductor code here.")],-1);function _(f,b,g,v,w,y){const t=r("DeploymentsRedirect");return l(),i("div",null,[p,a(t),u,h,m,d])}const k=o(c,[["render",_]]);export{C as __pageData,k as default}; diff --git a/assets/overview_architecture_5-the-astria-sequencer.md.B14uww92.js b/assets/overview_architecture_5-the-astria-sequencer.md.B14uww92.js deleted file mode 100644 index 4a3829e..0000000 --- a/assets/overview_architecture_5-the-astria-sequencer.md.B14uww92.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,D as r,c as o,I as n,a5 as e,o as s}from"./chunks/framework.EN5ALL4V.js";const i="/assets/shared-sequencer-overview.KaalIjKb.png",q=JSON.parse('{"title":"The Astria Sequencer","description":"","frontmatter":{"sidebar_position":5},"headers":[],"relativePath":"overview/architecture/5-the-astria-sequencer.md","filePath":"overview/architecture/5-the-astria-sequencer.md","lastUpdated":1716595602000}'),c={name:"overview/architecture/5-the-astria-sequencer.md"},h=e('

The Astria Sequencer

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

',2),u=e('

The Astria Shared Sequencer is a decentralized network of nodes utilizing CometBFT that come to consensus on an ordered set of transactions (ie. it is a blockchain). The unique feature of the sequencer is that the transactions it includes are not executed (lazy sequencing), and are destined for another execution engine (ie. a rollup). This excludes “sequencer native” transactions, such as transfers of tokens within the sequencer chain. Transactions from any given rollup are only ordered on the sequencer, not executed.

The sequencer can optionally act as a “validator”, meaning it actively participates in the production and finalization of new blocks.

Astria Shared Sequencer

Components of note that are not shown in the above diagram are the Composer, Relayer, and Conductor.

These components facilitate the delivery transactions, batches, and different commits shown above, back to the users.

See the Sequencer code here.

',6);function l(d,p,_,m,f,v){const t=r("DeploymentsRedirect");return s(),o("div",null,[h,n(t),u])}const S=a(c,[["render",l]]);export{q as __pageData,S as default}; diff --git a/assets/overview_architecture_5-the-astria-sequencer.md.B14uww92.lean.js b/assets/overview_architecture_5-the-astria-sequencer.md.B14uww92.lean.js deleted file mode 100644 index a6b65b8..0000000 --- a/assets/overview_architecture_5-the-astria-sequencer.md.B14uww92.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,D as r,c as o,I as n,a5 as e,o as s}from"./chunks/framework.EN5ALL4V.js";const i="/assets/shared-sequencer-overview.KaalIjKb.png",q=JSON.parse('{"title":"The Astria Sequencer","description":"","frontmatter":{"sidebar_position":5},"headers":[],"relativePath":"overview/architecture/5-the-astria-sequencer.md","filePath":"overview/architecture/5-the-astria-sequencer.md","lastUpdated":1716595602000}'),c={name:"overview/architecture/5-the-astria-sequencer.md"},h=e("",2),u=e("",6);function l(d,p,_,m,f,v){const t=r("DeploymentsRedirect");return s(),o("div",null,[h,n(t),u])}const S=a(c,[["render",l]]);export{q as __pageData,S as default}; diff --git a/assets/overview_architecture_6-relayer.md.DSBF0QsU.js b/assets/overview_architecture_6-relayer.md.DSBF0QsU.js deleted file mode 100644 index c11fb80..0000000 --- a/assets/overview_architecture_6-relayer.md.DSBF0QsU.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,D as a,c as r,I as s,a5 as l,l as e,a as c,o as n}from"./chunks/framework.EN5ALL4V.js";const T=JSON.parse('{"title":"Relayer","description":"","frontmatter":{"sidebar_position":6},"headers":[],"relativePath":"overview/architecture/6-relayer.md","filePath":"overview/architecture/6-relayer.md","lastUpdated":1713206801000}'),i={name:"overview/architecture/6-relayer.md"},h=l('

Relayer

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

',2),d=e("p",null,"The Relayer's responsibility is to take validated blocks from the sequencer and pass them along to both the Conductor and the DA layer. Because the sequencer's block times are much faster than those of the DA, the relayer also collects a queue of ordered sequencer blocks before wrapping them for submission to DA.",-1),u=e("p",null,"The individual sequencer blocks are sent immediately to the Conductor to enable fast finality for an improved UX and also act as soft commits for the execution layer. The collections of blocks sent to the DA layer are used as a source of truth and are ultimately pulled from the DA to be used as firm commits for finality in the rolllups.",-1),p=e("p",null,[c("See the "),e("a",{href:"https://github.com/astriaorg/astria/tree/main/crates/astria-sequencer-relayer",target:"_blank",rel:"noreferrer"},"Relayer code here.")],-1);function _(m,f,y,b,v,k){const t=a("DeploymentsRedirect");return n(),r("div",null,[h,s(t),d,u,p])}const A=o(i,[["render",_]]);export{T as __pageData,A as default}; diff --git a/assets/overview_architecture_6-relayer.md.DSBF0QsU.lean.js b/assets/overview_architecture_6-relayer.md.DSBF0QsU.lean.js deleted file mode 100644 index df58c15..0000000 --- a/assets/overview_architecture_6-relayer.md.DSBF0QsU.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as o,D as a,c as r,I as s,a5 as l,l as e,a as c,o as n}from"./chunks/framework.EN5ALL4V.js";const T=JSON.parse('{"title":"Relayer","description":"","frontmatter":{"sidebar_position":6},"headers":[],"relativePath":"overview/architecture/6-relayer.md","filePath":"overview/architecture/6-relayer.md","lastUpdated":1713206801000}'),i={name:"overview/architecture/6-relayer.md"},h=l("",2),d=e("p",null,"The Relayer's responsibility is to take validated blocks from the sequencer and pass them along to both the Conductor and the DA layer. Because the sequencer's block times are much faster than those of the DA, the relayer also collects a queue of ordered sequencer blocks before wrapping them for submission to DA.",-1),u=e("p",null,"The individual sequencer blocks are sent immediately to the Conductor to enable fast finality for an improved UX and also act as soft commits for the execution layer. The collections of blocks sent to the DA layer are used as a source of truth and are ultimately pulled from the DA to be used as firm commits for finality in the rolllups.",-1),p=e("p",null,[c("See the "),e("a",{href:"https://github.com/astriaorg/astria/tree/main/crates/astria-sequencer-relayer",target:"_blank",rel:"noreferrer"},"Relayer code here.")],-1);function _(m,f,y,b,v,k){const t=a("DeploymentsRedirect");return n(),r("div",null,[h,s(t),d,u,p])}const A=o(i,[["render",_]]);export{T as __pageData,A as default}; diff --git a/assets/overview_architecture_7-conductor.md.C1cxTDBl.js b/assets/overview_architecture_7-conductor.md.C1cxTDBl.js deleted file mode 100644 index 3ff1eae..0000000 --- a/assets/overview_architecture_7-conductor.md.C1cxTDBl.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,D as r,c as s,I as n,a5 as i,l as e,a as t,o as c}from"./chunks/framework.EN5ALL4V.js";const x=JSON.parse('{"title":"Conductor","description":"","frontmatter":{"sidebar_position":7},"headers":[],"relativePath":"overview/architecture/7-conductor.md","filePath":"overview/architecture/7-conductor.md","lastUpdated":1716595602000}'),l={name:"overview/architecture/7-conductor.md"},d=i('

Conductor

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

',2),u=e("p",null,"Conductor's role is to drive the deterministic execution of sequencer blocks to rollups.",-1),h=e("p",null,"It abstracts away the logic required to read data from the DA and the Sequencer, tracking firm and soft commitments, block and header shapes, as well as verification of the data. The rollup implements the Execution API server, and runs the Conductor alongside to drive deterministic execution. The Conductor is effectively stateless but does ephemerally store some information about the blocks it has seen and passed on to be executed.",-1),p=e("p",null,"It filters the transactions that are relevant to the given rollup it is running along side, out of the sequencer blocks for execution. The data that it does store is for sending commitment updates to the rollup.",-1),m=e("p",null,[t("As mentioned in the "),e("a",{href:"/docs/overview/architecture/6-relayer.mdx"},"Relayer"),t(` section, any data received by the Conductor directly from the Relayer is considered a soft commit. This data is filtered using the rollup's namespace and only transactions that are relevant to the rollup are passed on as blocks for execution. These blocks are also marked as "safe" withing the rollup. The Conductor regularly polls Celestia for new data and when it sees the same blocks in Celestia that it has already seen from the Relayer, it sends a firm commit message to the rollup to update that block to "finalized."`)],-1),_=e("p",null,[t("See the "),e("a",{href:"https://github.com/astriaorg/astria/tree/main/crates/astria-conductor",target:"_blank",rel:"noreferrer"},"Conductor code here.")],-1);function f(v,b,y,g,k,T){const o=r("DeploymentsRedirect");return c(),s("div",null,[d,n(o),u,h,p,m,_])}const w=a(l,[["render",f]]);export{x as __pageData,w as default}; diff --git a/assets/overview_architecture_7-conductor.md.C1cxTDBl.lean.js b/assets/overview_architecture_7-conductor.md.C1cxTDBl.lean.js deleted file mode 100644 index d52d61b..0000000 --- a/assets/overview_architecture_7-conductor.md.C1cxTDBl.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as a,D as r,c as s,I as n,a5 as i,l as e,a as t,o as c}from"./chunks/framework.EN5ALL4V.js";const x=JSON.parse('{"title":"Conductor","description":"","frontmatter":{"sidebar_position":7},"headers":[],"relativePath":"overview/architecture/7-conductor.md","filePath":"overview/architecture/7-conductor.md","lastUpdated":1716595602000}'),l={name:"overview/architecture/7-conductor.md"},d=i("",2),u=e("p",null,"Conductor's role is to drive the deterministic execution of sequencer blocks to rollups.",-1),h=e("p",null,"It abstracts away the logic required to read data from the DA and the Sequencer, tracking firm and soft commitments, block and header shapes, as well as verification of the data. The rollup implements the Execution API server, and runs the Conductor alongside to drive deterministic execution. The Conductor is effectively stateless but does ephemerally store some information about the blocks it has seen and passed on to be executed.",-1),p=e("p",null,"It filters the transactions that are relevant to the given rollup it is running along side, out of the sequencer blocks for execution. The data that it does store is for sending commitment updates to the rollup.",-1),m=e("p",null,[t("As mentioned in the "),e("a",{href:"/docs/overview/architecture/6-relayer.mdx"},"Relayer"),t(` section, any data received by the Conductor directly from the Relayer is considered a soft commit. This data is filtered using the rollup's namespace and only transactions that are relevant to the rollup are passed on as blocks for execution. These blocks are also marked as "safe" withing the rollup. The Conductor regularly polls Celestia for new data and when it sees the same blocks in Celestia that it has already seen from the Relayer, it sends a firm commit message to the rollup to update that block to "finalized."`)],-1),_=e("p",null,[t("See the "),e("a",{href:"https://github.com/astriaorg/astria/tree/main/crates/astria-conductor",target:"_blank",rel:"noreferrer"},"Conductor code here.")],-1);function f(v,b,y,g,k,T){const o=r("DeploymentsRedirect");return c(),s("div",null,[d,n(o),u,h,p,m,_])}const w=a(l,[["render",f]]);export{x as __pageData,w as default}; diff --git a/assets/overview_architecture_8-data-availability-layer.md.CSyz_Ik_.js b/assets/overview_architecture_8-data-availability-layer.md.CSyz_Ik_.js deleted file mode 100644 index 4394063..0000000 --- a/assets/overview_architecture_8-data-availability-layer.md.CSyz_Ik_.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,D as r,c as o,I as l,a5 as s,l as e,a,o as n}from"./chunks/framework.EN5ALL4V.js";const D=JSON.parse('{"title":"Data Availability Layer","description":"","frontmatter":{"sidebar_position":8},"headers":[],"relativePath":"overview/architecture/8-data-availability-layer.md","filePath":"overview/architecture/8-data-availability-layer.md","lastUpdated":1713206801000}'),c={name:"overview/architecture/8-data-availability-layer.md"},d=s('

Data Availability Layer

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

',2),h=e("p",null,[a("The dev-cluster uses "),e("a",{href:"https://github.com/celestiaorg",target:"_blank",rel:"noreferrer"},"Celestia"),a(" as the data availability layer and is the ultimate destination of all data that has been ordered by the sequencer network. Once written to Celestia, the transaction order is considered final and it is where all data will be pulled from when a new rollup node is spun up.")],-1),p=e("p",null,[a("See the "),e("a",{href:"https://celestia.org/what-is-celestia/",target:"_blank",rel:"noreferrer"},"Celestia website"),a(" for a more in depth introduction.")],-1);function u(_,y,v,b,m,f){const t=r("DeploymentsRedirect");return n(),o("div",null,[d,l(t),h,p])}const T=i(c,[["render",u]]);export{D as __pageData,T as default}; diff --git a/assets/overview_architecture_8-data-availability-layer.md.CSyz_Ik_.lean.js b/assets/overview_architecture_8-data-availability-layer.md.CSyz_Ik_.lean.js deleted file mode 100644 index f1a7673..0000000 --- a/assets/overview_architecture_8-data-availability-layer.md.CSyz_Ik_.lean.js +++ /dev/null @@ -1 +0,0 @@ -import{_ as i,D as r,c as o,I as l,a5 as s,l as e,a,o as n}from"./chunks/framework.EN5ALL4V.js";const D=JSON.parse('{"title":"Data Availability Layer","description":"","frontmatter":{"sidebar_position":8},"headers":[],"relativePath":"overview/architecture/8-data-availability-layer.md","filePath":"overview/architecture/8-data-availability-layer.md","lastUpdated":1713206801000}'),c={name:"overview/architecture/8-data-availability-layer.md"},d=s("",2),h=e("p",null,[a("The dev-cluster uses "),e("a",{href:"https://github.com/celestiaorg",target:"_blank",rel:"noreferrer"},"Celestia"),a(" as the data availability layer and is the ultimate destination of all data that has been ordered by the sequencer network. Once written to Celestia, the transaction order is considered final and it is where all data will be pulled from when a new rollup node is spun up.")],-1),p=e("p",null,[a("See the "),e("a",{href:"https://celestia.org/what-is-celestia/",target:"_blank",rel:"noreferrer"},"Celestia website"),a(" for a more in depth introduction.")],-1);function u(_,y,v,b,m,f){const t=r("DeploymentsRedirect");return n(),o("div",null,[d,l(t),h,p])}const T=i(c,[["render",u]]);export{D as __pageData,T as default}; diff --git a/assets/overview_bridging.md.CjvxMxc-.js b/assets/overview_bridging.md.CjvxMxc-.js new file mode 100644 index 0000000..aaab7d3 --- /dev/null +++ b/assets/overview_bridging.md.CjvxMxc-.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a5 as o}from"./chunks/framework.-Zveb6AF.js";const g=JSON.parse('{"title":"Bridging on Astria","description":"","frontmatter":{},"headers":[],"relativePath":"overview/bridging.md","filePath":"overview/bridging.md","lastUpdated":1717451255000}'),i={name:"overview/bridging.md"},n=o('

Bridging on Astria

Fee payments

With a sequencing layer, transaction data touches three different chains: the sequencer chain, the data availability chain, and the rollup chain. Each of these requires a fee payment for DoS prevention. If each chain requires a different token for fee payment, this causes a poor UX. Many rollups built on Ethereum allow for bridged ETH to be used to pay fees, alleviating UX concerns, as users only need to obtain one, widely-available token (ETH).

We can do something similar with the sequencer network. Assuming the data availability network’s token is the most easily accessible and established, we can bridge the DA token to the sequencer network to use as fee payment, and also bridge the DA token to the rollup via the usual rollup bridging (deposit derivation) method. In our case, this means bridging TIA (Celestia) to Astria via IBC, and allowing it to be used for fee payments. Then, a rollup can optionally choose to accept (IBC-)TIA as a token for fee payments as well.

Rollup bridging

To bridge tokens to a rollup built on Astria, the rollup needs to add the ability to derive deposit transactions from the sequencer or DA network. In general, rollup deposits work as follows:

on the L1, tokens are transferred to some escrow account/contract. the rollup consensus node, which derives the L2 transactions from L1 data, sees these deposits, and includes a corresponding “deposit” transaction in the next L2 block, which is a distinct transaction type. the L2 node executes these deposit transactions, minting synthetic funds on the L2 to the respective account. A rollup on Astria would have to implement something like this to bridge from the sequencer/DA to it.

Bridging back to the L1 requires proving rollup block state roots on the L1. This is the “optimistic” or “ZK” parts of the rollup. To implement bridging from a rollup on Astria back to the sequencer or DA network, we need to add functionality to verify rollup state rollups on them. On the sequencer, this would mean enshrining some sort of state root verification actor in the sequencer’s state machine, which could be instantiated by the rollup and used to bridge to the sequencer. Since we’re using Celestia as DA, which does not support any sort of programmability, the only way to bridge from the rollup to Celestia would be first through the sequencer, then back to Celestia through IBC.

IBC

IBC (inter-blockchain communication) is a standard used by Cosmos/CometBFT chains to pass messages between each other in a trust-minimized way. Since Astria uses CometBFT, it is IBC-enabled and able to bridge tokens between other IBC-enabled chains. To see more details about IBC, see the spec.

Celestia is also IBC-enabled, and we expect to bridge TIA from Celestia to Astria for fee payments.

',11),s=[n];function r(l,d,h,c,p,u){return a(),t("div",null,s)}const m=e(i,[["render",r]]);export{g as __pageData,m as default}; diff --git a/assets/overview_bridging.md.CjvxMxc-.lean.js b/assets/overview_bridging.md.CjvxMxc-.lean.js new file mode 100644 index 0000000..4592450 --- /dev/null +++ b/assets/overview_bridging.md.CjvxMxc-.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a5 as o}from"./chunks/framework.-Zveb6AF.js";const g=JSON.parse('{"title":"Bridging on Astria","description":"","frontmatter":{},"headers":[],"relativePath":"overview/bridging.md","filePath":"overview/bridging.md","lastUpdated":1717451255000}'),i={name:"overview/bridging.md"},n=o("",11),s=[n];function r(l,d,h,c,p,u){return a(),t("div",null,s)}const m=e(i,[["render",r]]);export{g as __pageData,m as default}; diff --git a/assets/overview_components_composer.md.Bu4Epgvb.js b/assets/overview_components_composer.md.Bu4Epgvb.js new file mode 100644 index 0000000..86f895c --- /dev/null +++ b/assets/overview_components_composer.md.Bu4Epgvb.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as r,a5 as t}from"./chunks/framework.-Zveb6AF.js";const f=JSON.parse('{"title":"The Astria Composer","description":"","frontmatter":{},"headers":[],"relativePath":"overview/components/composer.md","filePath":"overview/components/composer.md","lastUpdated":1717451255000}'),s={name:"overview/components/composer.md"},a=t('

The Astria Composer

As a sequencing layer, Astria is designed to provide lazy sequencing for multiple rollups. This requires abstracting rollup-specific order flow via the sequencer network's transactions, which operate on opaque bytes that are not executed. By remaining agnostic to rollup-specific transaction formats, the sequencer network is able to provide a robust MEV supply chain for rollups built on top of it, with features like native bundle support.

While the sequencing layer provides a powerful tool for sophisticated users, supporting a wider range of users requires additional tooling. The Astria Composer is "gas station" side car that makes it easier for ordinary users to easily use rollups that support more complex order flow mechanisms.

The Composer as a UX solution

While sophisticated users, such as arbitrageurs, can leverage the sequencing layer directly to pay for better transaction ordering guarantees, most users will not require (or be interested) in this level of control. Specifically, interacting directly with the sequencing layer requires users to hold sequencer tokens and to maintain a sequencer wallet, both of which result in a poor user experience.

Instead, we provide rollup operators with tooling to abstract this complexity away using the Astria Composer. Rollup operators run the Composer as side-car software to their nodes. The Composer can be described as a "gas station", underwriting the sequencing costs for users' rollup transactions.

This allows order-agnostic users to simply pay for transaction execution in the rollup's native gas token without needing to maintain a sequencer wallet, as long as the operator keeps the Composer funded. The Composer then bundles these transactions and submits them to the sequencer network on the user's behalf.

Heterogenous order flow support

This allows Astria-based rollups to support a wide range of users, from those who want to pay for better transaction ordering to those with no explicit sequencing preferences.

Sophisticated users can submit their transactions directly to the sequencing layer, controlling the order by which their transactions are bundled and the fees they pay for bundle ordering.

In contrast, regular users are able to route their transactions through the rollup node, which will run the Composer as a sidecar to underwrite the cost of inclusion but with no control over the ordering.

Naive ordering preferences

The Composer provides users with no ordering guarantees, bundling transactions by the order they are received. Bundles are capped in size to ensure they fit in a sequencer block, and are submitted to the sequencer network in a timely manner to ensure they can be included in the next sequencer block.

',13),n=[a];function i(l,c,p,u,h,d){return r(),o("div",null,n)}const g=e(s,[["render",i]]);export{f as __pageData,g as default}; diff --git a/assets/overview_components_composer.md.Bu4Epgvb.lean.js b/assets/overview_components_composer.md.Bu4Epgvb.lean.js new file mode 100644 index 0000000..3084b35 --- /dev/null +++ b/assets/overview_components_composer.md.Bu4Epgvb.lean.js @@ -0,0 +1 @@ +import{_ as e,c as o,o as r,a5 as t}from"./chunks/framework.-Zveb6AF.js";const f=JSON.parse('{"title":"The Astria Composer","description":"","frontmatter":{},"headers":[],"relativePath":"overview/components/composer.md","filePath":"overview/components/composer.md","lastUpdated":1717451255000}'),s={name:"overview/components/composer.md"},a=t("",13),n=[a];function i(l,c,p,u,h,d){return r(),o("div",null,n)}const g=e(s,[["render",i]]);export{f as __pageData,g as default}; diff --git a/assets/overview_components_conductor.md.BU32nGR1.js b/assets/overview_components_conductor.md.BU32nGR1.js new file mode 100644 index 0000000..c392d39 --- /dev/null +++ b/assets/overview_components_conductor.md.BU32nGR1.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a5 as o}from"./chunks/framework.-Zveb6AF.js";const f=JSON.parse('{"title":"The Astria Conductor","description":"","frontmatter":{},"headers":[],"relativePath":"overview/components/conductor.md","filePath":"overview/components/conductor.md","lastUpdated":1717451255000}'),i={name:"overview/components/conductor.md"},n=o('

The Astria Conductor

The Conductor can be thought of as the consensus implementation of a rollup full node, similar to op-node within the OP Stack. Conductor is the counterpart to the execution engine, which together make up a full rollup node. Its role is to connect the sequencer and Data Availability layers to the rollup execution layer by extracting the transactions belonging to the rollup node from each sequencer block, and forwarding them to the execution layer.

The conductor’s flow is as follows:

  • For each sequencer block, extract the relevant rollup data it needs
  • validate the batch of rollup data; this includes verifying that the corresponding sequencer block was finalized, as well as verifying that the rollup data it extracted is complete (there are no rollup transactions missing), correct (there are no rollup transactions in the batch that shouldn’t be), and properly-ordered (the ordering of the rollup transactions matches what was finalized by the sequencer chain). It is able to do this by verifying the data against the rollup data commitment included in the sequencer block.
  • Once it has validated the rollup data, it turns it into a list of transactions, which are passed to the execution engine.

Note that the conductor, like the sequencer, is agnostic to the rollup’s transaction format and execution engine; it simply treats transactions as an arbitrary byte array.

Data verification

The conductor needs to verify the data it receives before passing it to the rollup. Specifically, it needs to verify that the data is actually what was sequenced by the sequencer in the correct order, that there is no data missing, and that there is no additional data added. The conductor wishes to do this without pulling the entire set of sequenced data or the entire sequencer block, as this is additional data it doesn’t need.

This is achieved by placing a commitment to the entire set of sequenced data in every sequencer block. This commitment is the Merkle root of a tree where each leaf is a commitment to the data for one specific rollup. This commitment is checked by every validator node on the sequencer network, thus has the majority of stake backing it. Then, the conductor can verify the rollup data received is correct by validating:

  • the commitment to the entire set of sequenced data was committed by the network, via the set of validator signatures on the block
  • the commitment to its specific rollup data is included in that, via a merkle proof of inclusion
  • the rollup data it receives corresponds to the commitment for that rollup data, via recalculating the commitment

After all of these steps are done, the conductor can be certain that the rollup data is actually what was sequenced.

There is an additional verification step needed: since the conductor doesn’t pull an entire block’s data, there needs to be consensus over what rollup IDs were sequenced in a sequencer block. It’s possible that a sequencer node doesn’t advertise that a rollup ID was included (i.e. by not posting it to the data availability layer). Then, the conductor would think that it simply had no sequenced data in a certain block when it actually did.

This is fixed by having a commitment to all the rollup IDs sequenced inside each sequencer block, which is checked and voted on by every validator. Then, the conductor receives a list of all the rollup IDs sequenced in a block and verifies that against the rollup IDs commitment to be certain as to whether a block had data for it or not.

Soft and Firm Commitments

The Conductor also retrieves the soft commitments from the sequencer, and firm commitments from the data availability layer.

The soft commitments act as fast pre-confirmations and are implicitly verified by the Conductor via a fully trusted connection to the sequencer. All data retried from the sequencer is automatically considered a soft commitment because that data can't be added to the sequencer chain unless validated by the sequencer network.

The firm commitments that are retrieved from the data availability layer are considered finalized, and are explicitly verified by the conductor before passing onto the rollup. Data that can be retrieved from the data availability layer is considered widely available and all historical syncing of data for rollups is retrieved in this way.

',16),r=[n];function s(c,l,d,h,u,m){return a(),t("div",null,r)}const b=e(i,[["render",s]]);export{f as __pageData,b as default}; diff --git a/assets/overview_components_conductor.md.BU32nGR1.lean.js b/assets/overview_components_conductor.md.BU32nGR1.lean.js new file mode 100644 index 0000000..bf8d8b0 --- /dev/null +++ b/assets/overview_components_conductor.md.BU32nGR1.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o as a,a5 as o}from"./chunks/framework.-Zveb6AF.js";const f=JSON.parse('{"title":"The Astria Conductor","description":"","frontmatter":{},"headers":[],"relativePath":"overview/components/conductor.md","filePath":"overview/components/conductor.md","lastUpdated":1717451255000}'),i={name:"overview/components/conductor.md"},n=o("",16),r=[n];function s(c,l,d,h,u,m){return a(),t("div",null,r)}const b=e(i,[["render",s]]);export{f as __pageData,b as default}; diff --git a/assets/overview_components_data-availability-layer.md.TunJ4qRL.js b/assets/overview_components_data-availability-layer.md.TunJ4qRL.js new file mode 100644 index 0000000..5d45b0f --- /dev/null +++ b/assets/overview_components_data-availability-layer.md.TunJ4qRL.js @@ -0,0 +1 @@ +import{_ as t,c as i,o as r,l as a,a as e}from"./chunks/framework.-Zveb6AF.js";const m=JSON.parse('{"title":"Data Availability Layer","description":"","frontmatter":{},"headers":[],"relativePath":"overview/components/data-availability-layer.md","filePath":"overview/components/data-availability-layer.md","lastUpdated":1717451255000}'),l={name:"overview/components/data-availability-layer.md"},o=a("h1",{id:"data-availability-layer",tabindex:"-1"},[e("Data Availability Layer "),a("a",{class:"header-anchor",href:"#data-availability-layer","aria-label":'Permalink to "Data Availability Layer"'},"​")],-1),s=a("p",null,[e("Astria uses "),a("a",{href:"https://github.com/celestiaorg",target:"_blank",rel:"noreferrer"},"Celestia"),e(" as the data availability layer and is the ultimate destination of all data that has been ordered by the sequencer network. Once written to Celestia, the transaction order is considered final and it is where all data will be pulled from when a new rollup node is spun up.")],-1),n=a("p",null,[e("See the "),a("a",{href:"https://celestia.org/what-is-celestia/",target:"_blank",rel:"noreferrer"},"Celestia website"),e(" for a more in depth introduction.")],-1),d=[o,s,n];function c(h,p,y,_,b,v){return r(),i("div",null,d)}const u=t(l,[["render",c]]);export{m as __pageData,u as default}; diff --git a/assets/overview_components_data-availability-layer.md.TunJ4qRL.lean.js b/assets/overview_components_data-availability-layer.md.TunJ4qRL.lean.js new file mode 100644 index 0000000..5d45b0f --- /dev/null +++ b/assets/overview_components_data-availability-layer.md.TunJ4qRL.lean.js @@ -0,0 +1 @@ +import{_ as t,c as i,o as r,l as a,a as e}from"./chunks/framework.-Zveb6AF.js";const m=JSON.parse('{"title":"Data Availability Layer","description":"","frontmatter":{},"headers":[],"relativePath":"overview/components/data-availability-layer.md","filePath":"overview/components/data-availability-layer.md","lastUpdated":1717451255000}'),l={name:"overview/components/data-availability-layer.md"},o=a("h1",{id:"data-availability-layer",tabindex:"-1"},[e("Data Availability Layer "),a("a",{class:"header-anchor",href:"#data-availability-layer","aria-label":'Permalink to "Data Availability Layer"'},"​")],-1),s=a("p",null,[e("Astria uses "),a("a",{href:"https://github.com/celestiaorg",target:"_blank",rel:"noreferrer"},"Celestia"),e(" as the data availability layer and is the ultimate destination of all data that has been ordered by the sequencer network. Once written to Celestia, the transaction order is considered final and it is where all data will be pulled from when a new rollup node is spun up.")],-1),n=a("p",null,[e("See the "),a("a",{href:"https://celestia.org/what-is-celestia/",target:"_blank",rel:"noreferrer"},"Celestia website"),e(" for a more in depth introduction.")],-1),d=[o,s,n];function c(h,p,y,_,b,v){return r(),i("div",null,d)}const u=t(l,[["render",c]]);export{m as __pageData,u as default}; diff --git a/assets/overview_components_relayer.md.CFDquIzF.js b/assets/overview_components_relayer.md.CFDquIzF.js new file mode 100644 index 0000000..7ea2297 --- /dev/null +++ b/assets/overview_components_relayer.md.CFDquIzF.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,l as e,a as o}from"./chunks/framework.-Zveb6AF.js";const b=JSON.parse('{"title":"Relayer","description":"","frontmatter":{},"headers":[],"relativePath":"overview/components/relayer.md","filePath":"overview/components/relayer.md","lastUpdated":1717451255000}'),s={name:"overview/components/relayer.md"},l=e("h1",{id:"relayer",tabindex:"-1"},[o("Relayer "),e("a",{class:"header-anchor",href:"#relayer","aria-label":'Permalink to "Relayer"'},"​")],-1),n=e("p",null,"The relayer's responsibility is to fetch validated blocks from the sequencer and pass them along to the DA layer. Because the sequencer's block times are much faster than those of the DA, the relayer batches the ordered data from multiple sequencer blocks before compressing it and submitting it to the DA.",-1),i=e("p",null,"The individual sequencer blocks can also be fetched by the Conductor before the relayer has submitted them to the DA. This enables fast finality for an improved UX, acting as soft commits for the execution layer. The collections of data sent to the DA layer by the relayer are used as a source of truth and are ultimately pulled from the DA to be used as firm commits for finality in the rollups.",-1),c=[l,n,i];function h(d,m,f,u,p,y){return r(),a("div",null,c)}const v=t(s,[["render",h]]);export{b as __pageData,v as default}; diff --git a/assets/overview_components_relayer.md.CFDquIzF.lean.js b/assets/overview_components_relayer.md.CFDquIzF.lean.js new file mode 100644 index 0000000..7ea2297 --- /dev/null +++ b/assets/overview_components_relayer.md.CFDquIzF.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o as r,l as e,a as o}from"./chunks/framework.-Zveb6AF.js";const b=JSON.parse('{"title":"Relayer","description":"","frontmatter":{},"headers":[],"relativePath":"overview/components/relayer.md","filePath":"overview/components/relayer.md","lastUpdated":1717451255000}'),s={name:"overview/components/relayer.md"},l=e("h1",{id:"relayer",tabindex:"-1"},[o("Relayer "),e("a",{class:"header-anchor",href:"#relayer","aria-label":'Permalink to "Relayer"'},"​")],-1),n=e("p",null,"The relayer's responsibility is to fetch validated blocks from the sequencer and pass them along to the DA layer. Because the sequencer's block times are much faster than those of the DA, the relayer batches the ordered data from multiple sequencer blocks before compressing it and submitting it to the DA.",-1),i=e("p",null,"The individual sequencer blocks can also be fetched by the Conductor before the relayer has submitted them to the DA. This enables fast finality for an improved UX, acting as soft commits for the execution layer. The collections of data sent to the DA layer by the relayer are used as a source of truth and are ultimately pulled from the DA to be used as firm commits for finality in the rollups.",-1),c=[l,n,i];function h(d,m,f,u,p,y){return r(),a("div",null,c)}const v=t(s,[["render",h]]);export{b as __pageData,v as default}; diff --git a/assets/overview_components_the-astria-sequencer.md.C7-kSyZK.js b/assets/overview_components_the-astria-sequencer.md.C7-kSyZK.js new file mode 100644 index 0000000..6b4c8c8 --- /dev/null +++ b/assets/overview_components_the-astria-sequencer.md.C7-kSyZK.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a5 as n}from"./chunks/framework.-Zveb6AF.js";const r="/assets/shared-sequencer-overview.KaalIjKb.png",m=JSON.parse('{"title":"The Astria Sequencing Layer","description":"","frontmatter":{},"headers":[],"relativePath":"overview/components/the-astria-sequencer.md","filePath":"overview/components/the-astria-sequencer.md","lastUpdated":1717451255000}'),o={name:"overview/components/the-astria-sequencer.md"},s=n('

The Astria Sequencing Layer

The Astria Sequencing Layer is a decentralized network of nodes utilizing CometBFT that come to consensus on an ordered set of transactions (ie. it is a blockchain). The unique feature of the sequencer is that the transactions it includes are not executed (lazy sequencing), and are destined for another execution engine (ie. a rollup). This excludes “sequencer native” transactions, such as transfers of tokens within the sequencer chain. Transactions from any given rollup are only ordered on the sequencer, not executed.

The sequencer node can optionally act as a “validator”, meaning it actively participates in the production and finalization of new blocks.

Astria Shared Sequencer

Components of note that are not shown in the above diagram are the Composer, Relayer, and Conductor.

These components facilitate the delivery transactions, batches, and different commits shown above, back to the users.

',6),i=[s];function c(h,d,u,l,p,_){return t(),a("div",null,i)}const q=e(o,[["render",c]]);export{m as __pageData,q as default}; diff --git a/assets/overview_components_the-astria-sequencer.md.C7-kSyZK.lean.js b/assets/overview_components_the-astria-sequencer.md.C7-kSyZK.lean.js new file mode 100644 index 0000000..4c34b28 --- /dev/null +++ b/assets/overview_components_the-astria-sequencer.md.C7-kSyZK.lean.js @@ -0,0 +1 @@ +import{_ as e,c as a,o as t,a5 as n}from"./chunks/framework.-Zveb6AF.js";const r="/assets/shared-sequencer-overview.KaalIjKb.png",m=JSON.parse('{"title":"The Astria Sequencing Layer","description":"","frontmatter":{},"headers":[],"relativePath":"overview/components/the-astria-sequencer.md","filePath":"overview/components/the-astria-sequencer.md","lastUpdated":1717451255000}'),o={name:"overview/components/the-astria-sequencer.md"},s=n("",6),i=[s];function c(h,d,u,l,p,_){return t(),a("div",null,i)}const q=e(o,[["render",c]]);export{m as __pageData,q as default}; diff --git a/assets/overview_how-rollups-work.md.CZwUJuFr.js b/assets/overview_how-rollups-work.md.CZwUJuFr.js new file mode 100644 index 0000000..c2bcd27 --- /dev/null +++ b/assets/overview_how-rollups-work.md.CZwUJuFr.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a5 as n}from"./chunks/framework.-Zveb6AF.js";const a="/assets/rollup-full-node-architecture.tT8VjLQv.png",s="/assets/rollups-with-a-decentralized-sequencer.BxJhqPk9.png",g=JSON.parse('{"title":"How Rollups Work","description":"","frontmatter":{},"headers":[],"relativePath":"overview/how-rollups-work.md","filePath":"overview/how-rollups-work.md","lastUpdated":1717451255000}'),r={name:"overview/how-rollups-work.md"},i=n('

How Rollups Work

A rollup is a blockchain that consists of a state transition function executed over some subset of data contained in another blockchain, the L1. Bridging to/from the L1 (by enshrining the rollup’s state transition in the L1) is implemented by non-sovereign rollups.

Rollup full node architecture

A rollup needs to perform the following:

  • read relevant subsets of data from the L1
  • turn this data into rollup transactions
  • execute these transactions to form a rollup block

The first two points are part of “rollup consensus” while the last is “rollup execution”.

Rollup Full Node Architecture

The main component required for rollup consensus is an L1 derivation function, which derives the transactions for a rollup block deterministically from the data on the L1. This data generally looks like calldata or blob data posted to the chain and/or events emitted from a contract. This data is extracted and turned into rollup transactions.

After the set of rollup transactions for a block has been derived, they are passed to the rollup execution layer, which executes the transactions and updates the rollup state. After execution, a new rollup state root is created.

Unlike L1 nodes, rollup nodes do not necessarily need to form a p2p network and communicate with each other for consensus. The chain’s consensus is provided by the L1, and all (properly-functioning) rollup nodes will deterministically derive the same state given the same L1 state.

However, rollup nodes may still wish to form a p2p network for two reasons: fast confirmations, which can be received from the sequencer, or for rollup light nodes.

Rollup sequencers

In the above section, we discussed how a rollup derives its transactions, but how does the rollup data end up on L1?

A simple solution is to have users post their rollup transactions to the L1 directly. However, this is not ideal because there is not as much of an economic benefit (users have to pay for L1 inclusion, plus L2 execution) for them to do so. As well, users need to wait for L1 blocks to know if their transaction was included.

A more cost- and time-effective solution is to use a sequencer. Rollup sequencers are akin to block producers on L1. They have the privilege of determining ordering and inclusion for rollup blocks. The sequencer collects a set of rollup transactions, batches them, optionally compresses them, and posts them to L1. Compression has the benefit of reducing the L1 inclusion cost for each rollup transaction. Sequencers also provide “pre-confirmations” or “fast confirmations”, meaning the sequencer can provide a commitment to the user that their transaction will end up in a specific rollup block before the corresponding L1 block has actually been published.

Sequencers to date have been implemented as a centralized service, generally run by rollup teams themselves. This means there is one party responsible for rollup transaction ordering and inclusion, leading to a monopoly on MEV extraction and the potential for transaction censorship. While there is always the “escape hatch” by which users post their rollup transactions directly to the L1 for inclusion on the rollup, this is a poor UX alternative.

Decentralized sequencers

A decentralized sequencer network is an alternative to the centralized service, where multiple sequencer nodes each have the ability to propose a batch of rollup transactions.

The flow would then look like:

  • a proposer proposes some transaction batch, or commitment to some transaction batch the network reaches consensus over this batch
  • the transaction batch data is made available to rollup nodes

A simple solution is to have a permissioned set, where only batches signed by a key from the chosen set are allowed to be derived into rollup blocks. To make this permissionless, we need to allow anyone to join the sequencer node set - eg. through proof-of-stake. By putting up some stake, anyone can join the sequencer network as a consensus node, and have the privilege of proposing transaction batches.

There are a few options regarding the asset(s) used as stake on the sequencer network. The first is to create a native asset on the sequencer network to be used for staking, as well as for transaction fees. The second is to use the asset of an underlying data availability layer for staking and transaction fees.

Sequencing Layers

Rollups with a decentralized sequencing layer

Currently, sequencers are implemented for one specific rollup. Instead of this, we can have a sequencer batch transactions for many rollups. With data compression, this allows for greater cost savings when posting data to L1. A sequencer network that is decentralized and shared incentivizes actors from multiple rollup ecosystems to potentially act as validators on the sequencer network.

Current sequencer implementations generally execute the transactions that it sequences as well. By allowing the sequencer to sequence many rollups, it can either execute the transactions for each rollup it sequences for, or have it not execute any transactions at all, and remain ignorant of the rollup state machines it’s sequencing for (known as lazy sequencing).

The downside to executing the transactions for each rollup is that it’s much more difficult to add new rollups to the sequencing layer, as the sequencer needs to be forked and made aware of a new state machine. Additionally, as the state of the rollups grows, the sequencer execution time gets slower and slower (the same way state bloat affects L1s), but it’s potentially even worse over time since many states are involved.

The better solution is the second, where the sequencing layer’s function is reduced to only sequencing and not executing. In this model, the sequencing layer batches and orders generic transaction data, where the data is tagged with the rollup it’s destined for, and only after the sequencer commits to the batch is the data executed by rollup nodes.

Rollup light nodes

Rollup light nodes, like normal L1 light nodes, follow the consensus of the main chain and verify and sync its headers, without executing the full transaction data of the chain. A rollup light node needs to do a few more things to verify headers than an L1 light node.

A rollup light node needs to:

  • implement an L1 consensus light client
  • implement an L2 consensus light client
  • ensure that the transaction data for each L2 block was published

A light node of a rollup that uses a sequencing layer needs to verify the consensus of the sequencer chain, as the sequencer acts as the equivalent of the L1 - i.e. it’s where transaction inclusion and ordering is finalized. It needs to follow the headers and verify consensus of the sequencer chain. Since light nodes don’t store the blockchain state, to verify if a rollup transaction was included in some rollup block X, the light node first needs a Merkle proof that the rollup transaction was included in the transactions/data root of some sequencer chain header. Then, if it follows that rollup block X was derived from sequencer block Y (using the rollup derivation function), it knows that the transaction should be included in rollup block X. The light node also needs to check that the block data was published, which it can do via data availability sampling (for example, when using Celestia).

',33),l=[i];function c(h,u,d,p,f,m){return o(),t("div",null,l)}const b=e(r,[["render",c]]);export{g as __pageData,b as default}; diff --git a/assets/overview_how-rollups-work.md.CZwUJuFr.lean.js b/assets/overview_how-rollups-work.md.CZwUJuFr.lean.js new file mode 100644 index 0000000..111b880 --- /dev/null +++ b/assets/overview_how-rollups-work.md.CZwUJuFr.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a5 as n}from"./chunks/framework.-Zveb6AF.js";const a="/assets/rollup-full-node-architecture.tT8VjLQv.png",s="/assets/rollups-with-a-decentralized-sequencer.BxJhqPk9.png",g=JSON.parse('{"title":"How Rollups Work","description":"","frontmatter":{},"headers":[],"relativePath":"overview/how-rollups-work.md","filePath":"overview/how-rollups-work.md","lastUpdated":1717451255000}'),r={name:"overview/how-rollups-work.md"},i=n("",33),l=[i];function c(h,u,d,p,f,m){return o(),t("div",null,l)}const b=e(r,[["render",c]]);export{g as __pageData,b as default}; diff --git a/assets/overview_introduction.md.BwhDZK9v.js b/assets/overview_introduction.md.BwhDZK9v.js new file mode 100644 index 0000000..3be30bb --- /dev/null +++ b/assets/overview_introduction.md.BwhDZK9v.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a5 as a}from"./chunks/framework.-Zveb6AF.js";const r="/assets/astria-architecture.B-nVTATW.png",b=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"overview/introduction.md","filePath":"overview/introduction.md","lastUpdated":1717451255000}'),i={name:"overview/introduction.md"},s=a('

Introduction

Astria Architecture

Astria is building a decentralized sequencer network that can be shared by many rollups.

At a high level, the Astria stack performs the following functions:

  • sequences arbitrary data for usage by multiple rollups
  • makes this data available to rollup nodes
  • allows rollup nodes to easily fetch and verify sequenced data
  • batches rollup blocks and posts these batches to Celestia

The first two are mandatory, while the last is implemented more for the developer experience, allowing rollup developers to focus only on the rollup-specific application logic, as opposed to the other aspects such as rollup consensus.

The first requirement (sequencing of arbitrary data for rollups) is implemented by the Astria sequencer network, a PoS network of sequencer nodes that use CometBFT for consensus. The sequencer network comes to consensus on the ordering and inclusion of rollup transactions of the form (rollup_id, tx_bytes). The rollup_id can be any arbitrary string; it’s used only by rollup nodes to determine which data is for them. The second (making data available to rollup nodes) is achieved by publishing the sequenced data via Celestia.

The third (allowing rollup nodes to easily fetch and verify sequenced data) is achieved by the Astria “Conductor”, which works similarly to existing rollup “consensus nodes”, such as op-node within the OP Stack. The conductor obtains the sequenced data, verifies it, and derives the transactions for a specific rollup, all while remaining agnostic to the transaction format and state transition function of the rollup execution node. It then passes the derived transactions to the rollup execution node for processing.

The Astria sequencer network is a lazy sequencer. This means that data is sequenced and committed, but execution is delayed until necessary, and is left to the rollup. This de-couples the execution logic from the consensus logic, removing consensus bottlenecks and allowing for more flexibility for rollup developers. For example, since the data is executed lazily, a rollup may choose to have 2 rollup blocks per Astria block, or 1 rollup block per Astria block. The rollup’s consensus and execution logic is not enshrined in the sequencer.

What should I read?

Want to learn more about about rollups or the sequencer? Check out the How Rollups Work or The Astria Sequencer Network.

If you're a rollup developer eager to get started, you should go straight to our astria-go cli tutorials.

For more advanced development, you can read about deploying a rollup full using a local Kubernetes cluster here.

You can find our endpoints and FAQ here

What If I Need More Help?

While this documentation hopefully includes everything you need, if you can't find what you're looking for, please reach out to us on Twitter or check the Astria repository.

',16),n=[s];function l(c,u,d,h,p,f){return o(),t("div",null,n)}const g=e(i,[["render",l]]);export{b as __pageData,g as default}; diff --git a/assets/overview_introduction.md.BwhDZK9v.lean.js b/assets/overview_introduction.md.BwhDZK9v.lean.js new file mode 100644 index 0000000..06e49c7 --- /dev/null +++ b/assets/overview_introduction.md.BwhDZK9v.lean.js @@ -0,0 +1 @@ +import{_ as e,c as t,o,a5 as a}from"./chunks/framework.-Zveb6AF.js";const r="/assets/astria-architecture.B-nVTATW.png",b=JSON.parse('{"title":"Introduction","description":"","frontmatter":{},"headers":[],"relativePath":"overview/introduction.md","filePath":"overview/introduction.md","lastUpdated":1717451255000}'),i={name:"overview/introduction.md"},s=a("",16),n=[s];function l(c,u,d,h,p,f){return o(),t("div",null,n)}const g=e(i,[["render",l]]);export{b as __pageData,g as default}; diff --git a/assets/overview_the-astria-sequencer-network.md.BjirIo9x.js b/assets/overview_the-astria-sequencer-network.md.BjirIo9x.js new file mode 100644 index 0000000..f877817 --- /dev/null +++ b/assets/overview_the-astria-sequencer-network.md.BjirIo9x.js @@ -0,0 +1 @@ +import{_ as t,c as a,o,l as e,a as i}from"./chunks/framework.-Zveb6AF.js";const y=JSON.parse('{"title":"The Astria Sequencer Network","description":"","frontmatter":{},"headers":[],"relativePath":"overview/the-astria-sequencer-network.md","filePath":"overview/the-astria-sequencer-network.md","lastUpdated":1717451255000}'),n={name:"overview/the-astria-sequencer-network.md"},s=e("h1",{id:"the-astria-sequencer-network",tabindex:"-1"},[i("The Astria Sequencer Network "),e("a",{class:"header-anchor",href:"#the-astria-sequencer-network","aria-label":'Permalink to "The Astria Sequencer Network"'},"​")],-1),r=e("p",null,"The Astria sequencer network uses CometBFT (formerly Tendermint) as its consensus algorithm. At a minimum, the sequencer network needs to implement a decentralized leader selection algorithm which rotates between proposers. Ideally, it is also able to provide single-slot (“fast”) finality, which prevents forks from occurring, allowing for simplified chain derivation logic on the rollups which use it. CometBFT is able to provide both of these. Additionally, CometBFT is battle-tested and has been used in production, on many chains, for years. It allows blockchain applications (application, in this case, meaning the chain’s execution logic) which implement ABCI (Application Blockchain Interface) to easily use it as their consensus layer. Additionally, CometBFT-enabled chains have the ability to support IBC (inter-blockchain communication), meaning they have the potential to bridge between many other chains.",-1),l=e("p",null,"Astria sequencer’s execution logic is implemented as a CometBFT application, written in Rust. The application logic allows for three main functions:",-1),c=e("ul",null,[e("li",null,"sequencing of rollup data"),e("li",null,"value transfers"),e("li",null,"validator set changes")],-1),h=e("p",null,"During the consensus phase of the sequencer network, the proposer decides on the transactions for the block and creates a commitment to the rollup data for each rollup_id. This is then verified and only finalized if agreed upon by the majority of other nodes. This allows for rollups to only pull the data necessary for their rollup, checking that the commitment to it matches what was finalized by the sequencer chain, without needing to pull the entire sequencer block’s data.",-1),d=e("p",null,"The sequencer network also needs to make its block data available to rollup nodes. During the consensus process, the block data needs to be made available to all validators, so that they can verify and vote on the rollup data commitments (ie. they need to ensure the commitments match the block data). After the consensus process, the data is made more widely available via a data availability layer. Celestia is used for DA, as it supports data availability sampling via light nodes, meaning a light node is able to check if data was made available.",-1),u=[s,r,l,c,h,d];function m(p,f,w,b,k,v){return o(),a("div",null,u)}const g=t(n,[["render",m]]);export{y as __pageData,g as default}; diff --git a/assets/overview_the-astria-sequencer-network.md.BjirIo9x.lean.js b/assets/overview_the-astria-sequencer-network.md.BjirIo9x.lean.js new file mode 100644 index 0000000..f877817 --- /dev/null +++ b/assets/overview_the-astria-sequencer-network.md.BjirIo9x.lean.js @@ -0,0 +1 @@ +import{_ as t,c as a,o,l as e,a as i}from"./chunks/framework.-Zveb6AF.js";const y=JSON.parse('{"title":"The Astria Sequencer Network","description":"","frontmatter":{},"headers":[],"relativePath":"overview/the-astria-sequencer-network.md","filePath":"overview/the-astria-sequencer-network.md","lastUpdated":1717451255000}'),n={name:"overview/the-astria-sequencer-network.md"},s=e("h1",{id:"the-astria-sequencer-network",tabindex:"-1"},[i("The Astria Sequencer Network "),e("a",{class:"header-anchor",href:"#the-astria-sequencer-network","aria-label":'Permalink to "The Astria Sequencer Network"'},"​")],-1),r=e("p",null,"The Astria sequencer network uses CometBFT (formerly Tendermint) as its consensus algorithm. At a minimum, the sequencer network needs to implement a decentralized leader selection algorithm which rotates between proposers. Ideally, it is also able to provide single-slot (“fast”) finality, which prevents forks from occurring, allowing for simplified chain derivation logic on the rollups which use it. CometBFT is able to provide both of these. Additionally, CometBFT is battle-tested and has been used in production, on many chains, for years. It allows blockchain applications (application, in this case, meaning the chain’s execution logic) which implement ABCI (Application Blockchain Interface) to easily use it as their consensus layer. Additionally, CometBFT-enabled chains have the ability to support IBC (inter-blockchain communication), meaning they have the potential to bridge between many other chains.",-1),l=e("p",null,"Astria sequencer’s execution logic is implemented as a CometBFT application, written in Rust. The application logic allows for three main functions:",-1),c=e("ul",null,[e("li",null,"sequencing of rollup data"),e("li",null,"value transfers"),e("li",null,"validator set changes")],-1),h=e("p",null,"During the consensus phase of the sequencer network, the proposer decides on the transactions for the block and creates a commitment to the rollup data for each rollup_id. This is then verified and only finalized if agreed upon by the majority of other nodes. This allows for rollups to only pull the data necessary for their rollup, checking that the commitment to it matches what was finalized by the sequencer chain, without needing to pull the entire sequencer block’s data.",-1),d=e("p",null,"The sequencer network also needs to make its block data available to rollup nodes. During the consensus process, the block data needs to be made available to all validators, so that they can verify and vote on the rollup data commitments (ie. they need to ensure the commitments match the block data). After the consensus process, the data is made more widely available via a data availability layer. Celestia is used for DA, as it supports data availability sampling via light nodes, meaning a light node is able to check if data was made available.",-1),u=[s,r,l,c,h,d];function m(p,f,w,b,k,v){return o(),a("div",null,u)}const g=t(n,[["render",m]]);export{y as __pageData,g as default}; diff --git a/assets/overview_transaction-flow.md.VqExVaSt.js b/assets/overview_transaction-flow.md.VqExVaSt.js new file mode 100644 index 0000000..af129d6 --- /dev/null +++ b/assets/overview_transaction-flow.md.VqExVaSt.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as e,l as t,a as s}from"./chunks/framework.-Zveb6AF.js";const n="/assets/transaction-flow.BpBwzXvD.png",T=JSON.parse('{"title":"Transaction Flow","description":"","frontmatter":{},"headers":[],"relativePath":"overview/transaction-flow.md","filePath":"overview/transaction-flow.md","lastUpdated":1717451255000}'),r={name:"overview/transaction-flow.md"},c=t("h1",{id:"transaction-flow",tabindex:"-1"},[s("Transaction Flow "),t("a",{class:"header-anchor",href:"#transaction-flow","aria-label":'Permalink to "Transaction Flow"'},"​")],-1),i=t("p",null,"The full transaction flow through the Astria stack is as follows:",-1),l=t("p",null,[t("img",{src:n,alt:"Astria Transaction Flow"})],-1),d=[c,i,l];function _(f,p,w,h,m,u){return e(),o("div",null,d)}const x=a(r,[["render",_]]);export{T as __pageData,x as default}; diff --git a/assets/overview_transaction-flow.md.VqExVaSt.lean.js b/assets/overview_transaction-flow.md.VqExVaSt.lean.js new file mode 100644 index 0000000..af129d6 --- /dev/null +++ b/assets/overview_transaction-flow.md.VqExVaSt.lean.js @@ -0,0 +1 @@ +import{_ as a,c as o,o as e,l as t,a as s}from"./chunks/framework.-Zveb6AF.js";const n="/assets/transaction-flow.BpBwzXvD.png",T=JSON.parse('{"title":"Transaction Flow","description":"","frontmatter":{},"headers":[],"relativePath":"overview/transaction-flow.md","filePath":"overview/transaction-flow.md","lastUpdated":1717451255000}'),r={name:"overview/transaction-flow.md"},c=t("h1",{id:"transaction-flow",tabindex:"-1"},[s("Transaction Flow "),t("a",{class:"header-anchor",href:"#transaction-flow","aria-label":'Permalink to "Transaction Flow"'},"​")],-1),i=t("p",null,"The full transaction flow through the Astria stack is as follows:",-1),l=t("p",null,[t("img",{src:n,alt:"Astria Transaction Flow"})],-1),d=[c,i,l];function _(f,p,w,h,m,u){return e(),o("div",null,d)}const x=a(r,[["render",_]]);export{T as __pageData,x as default}; diff --git a/assets/rollup-full-node-architecture.tT8VjLQv.png b/assets/rollup-full-node-architecture.tT8VjLQv.png new file mode 100644 index 0000000..6ebdf9b Binary files /dev/null and b/assets/rollup-full-node-architecture.tT8VjLQv.png differ diff --git a/assets/rollups-with-a-decentralized-sequencer.BxJhqPk9.png b/assets/rollups-with-a-decentralized-sequencer.BxJhqPk9.png new file mode 100644 index 0000000..491f4db Binary files /dev/null and b/assets/rollups-with-a-decentralized-sequencer.BxJhqPk9.png differ diff --git a/assets/sequencer-faucet.6UQ0f9HT.png b/assets/sequencer-faucet.6UQ0f9HT.png deleted file mode 100644 index 732c627..0000000 Binary files a/assets/sequencer-faucet.6UQ0f9HT.png and /dev/null differ diff --git a/assets/shared_sequencer.ZMpZ-hgk.png b/assets/shared_sequencer.ZMpZ-hgk.png deleted file mode 100644 index 223f161..0000000 Binary files a/assets/shared_sequencer.ZMpZ-hgk.png and /dev/null differ diff --git a/assets/single-rollup.BGW5Yt0b.png b/assets/single-rollup.BGW5Yt0b.png deleted file mode 100644 index 800d611..0000000 Binary files a/assets/single-rollup.BGW5Yt0b.png and /dev/null differ diff --git a/astria-evm/overview.html b/astria-evm/overview.html index 90d8e19..676d064 100644 --- a/astria-evm/overview.html +++ b/astria-evm/overview.html @@ -4,22 +4,22 @@ Astria EVM | Astria - + - + - - - + + + -
Skip to content

Astria EVM

Network Information

PropertyValue
Network Namedusk-3
RPC URLhttps://rpc.evm.dusk-3.devnet.astria.org
Chain ID912559
Currency SymbolRIA
Dorahttps://www.ondora.xyz/network/astria-devnet
Faucethttps://faucet.evm.dusk-3.devnet.astria.org
Block Scouthttps://explorer.evm.dusk-3.devnet.astria.org/

Adding to Metamask

Follow Metamask's official documentation to manually add a custom network.

Your settings should look like the image below

Metamask

Using Cast

Set your ETH_RPC_URL:

bash
export ETH_RPC_URL=https://rpc-archive.evm.dusk-3.devnet.astria.org/
bash
export REC_ADDR=<SOME_ADDRESS>
bash
cast balance $REC_ADDR
bash
cast send $REC_ADDR --value 10000000000000000000 --private-key <PRIVATE-KEY>
bash
cast balance $REC_ADDR
- +
Skip to content

Astria EVM

Network Information

PropertyValue
Network Namedusk-7
RPC URLhttps://rpc.evm.dusk-7.devnet.astria.org
Chain ID912559
Currency SymbolRIA
Dorahttps://www.ondora.xyz/network/astria-devnet
Faucethttps://faucet.evm.dusk-7.devnet.astria.org
Block Scouthttps://explorer.evm.dusk-7.devnet.astria.org/

Adding to Metamask

Follow Metamask's official documentation to manually add a custom network.

Your settings should be the following:

  • Network Name: dusk-7
  • New RPC URL: https://rpc.evm.dusk-7.devnet.astria.org
  • Chain ID: 912559
  • Currency symbol: RIA
  • Block Explorer URL: <empty>

Using Cast

Set your ETH_RPC_URL:

bash
export ETH_RPC_URL=https://rpc-archive.evm.dusk-7.devnet.astria.org/
bash
export REC_ADDR=<SOME_ADDRESS>
bash
cast balance $REC_ADDR
bash
cast send $REC_ADDR --value 10000000000000000000 --private-key <PRIVATE-KEY>
bash
cast balance $REC_ADDR
+ \ No newline at end of file diff --git a/cloud-rollup/digital-ocean.html b/cloud-rollup/digital-ocean.html deleted file mode 100644 index a7676b8..0000000 --- a/cloud-rollup/digital-ocean.html +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - Digital Ocean | Astria - - - - - - - - - - - - - - -
Skip to content

Digital Ocean

This guide will walk you through deploying a rollup full node on a Kubernetes cluster on Digital Ocean which uses the Astria shared sequencer network.

Local Dependencies

Install the latest astria cli

bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-aarch64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-unknown-linux-gnu.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
cargo install astria-cli --git=https://github.com/astriaorg/astria --tag=cli-v0.3.1 --locked

You'll also need to install the following tools:

WARNING

There is a bug in the latest Docker desktop release for MacOS
Please install the following release: https://docs.docker.com/desktop/release-notes/#4252
For more details see here

Dusknet Endpoints

The endpoints for the remote shared sequencer are:

NAMEHOSTSADDRESS
Sequencer RPCrpc.sequencer.dusk-3.devnet.astria.org34.111.73.187
Sequencer Faucetfaucet.sequencer.dusk-3.devnet.astria.org34.36.8.102

Create a New Cluster

This guide assumes you're using Digital Ocean's Kubernetes (K8s) service.

Install and configure doctl: https://docs.digitalocean.com/reference/doctl/how-to/install/

Follow the instructions in Digital Ocean's Quick Start Guide to create a new cluster in the region of your choosing.

TIP

The celestia pod has a minimum requirement of 1vCPU and 4GB RAM and will not start if the cluster has no nodes that meet those requirements. You will need a node with >1vCPU and >4GB RAM.

Configure kubectl with doctl

Once your k8s cluster is created configure kubectl.

doctl screenshot

Deploy Ingress Nginx Controller

We use the Nginx Ingress Controller, documentation can be found here

To install it run:

bash
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.8.2/deploy/static/provider/do/deploy.yaml

This will create several Kubernetes (k8s) resources and a Digital Ocean loadbalancer.

Verify Loadbalancer with external IP

You should see a new loadbalancer being created in the Digital Ocean console: https://cloud.digitalocean.com/networking/load_balancers

You can also check that your Digital Ocean load balancer was created with:

bash
kubectl get svc -n ingress-nginx

It may take a few minutes for the EXTERNAL-IP field to be populated, you should eventually see something like this:

bash
NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
-ingress-nginx-controller             LoadBalancer   10.245.63.28    161.35.240.50   80:32656/TCP,443:30158/TCP   44h
-ingress-nginx-controller-admission   ClusterIP      10.245.106.99   <none>          443/TCP                      44h

Create an A Record

TIP

You must configure a DNS record because our ingress configuration uses name based virtual routing.

More info can be found here

How you create an A record will depend on where you manage your domain.

An example for Google domains can be seen here: https://support.google.com/a/answer/2579934?hl=en

Create a wildcard record * pointing to the EXTERNAL-IP of your ingress-nginx-controller:

a record screenshot

Create your Rollup Genesis Account(s)

DANGER

NEVER use a private key you use on a live network.

Specify the accounts which will be funded at the genesis block of your EVM rollup.

You can create an account using:

bash
cast w new
bash
Successfully created new keypair.
-Address:     0xfFe9...5f8b # <GENESIS_ADDRESS>
-Private key: 0x332e...a8fb # <GENESIS_PRIVATE_KEY>

Export the genesis private key, this will be used by the faucet included with the rollup:

bash
export ROLLUP_FAUCET_PRIV_KEY=<GENESIS_PRIVATE_KEY>

Export the genesis address alongside with your desired initial balance in Wei.
We recommend using a value of 100000000000000000000 or larger:

bash
export ROLLUP_GENESIS_ACCOUNTS=<GENESIS_ADDRESS>:<BALANCE>

You can specify multiple accounts to be funded at genesis as comma deliminated tuples of <ADDRESS>:<BALANCE>

bash
export ROLLUP_GENESIS_ACCOUNTS=<ADDRESS_1>:<BALANCE_1>,<ADDRESS_2>:<BALANCE_2>

Create Rollup Config

Create the configuration manifest for your rollup.

Replace the tags in the commands and env vars below, as follows:

Var NameVar TypeDescription
<YOUR_ROLLUP_NAME>StringThe name of your rollup. This must be alphanumeric, - is allowed, this will be included in URLs. Must not be more than 21 characters.
<YOUR_NETWORK_ID>u64The id of your network. Pick a > 6 digit number (eg. 123456)
<YOUR_HOSTNAME>StringThe chosen hostname for your network (eg. astria.org)

You can use environment variables to set the configuration for the rollup config creation. Replace all the <> tags with their corresponding values.

bash
export ROLLUP_NAME=<YOUR_ROLLUP_NAME>
-export ROLLUP_NETWORK_ID=<YOUR_NETWORK_ID>
-export ROLLUP_HOSTNAME=<YOUR_HOSTNAME>

Run the config create command:

sh
astria-cli rollup config create

Export the config file name as an env vars:

bash
export ROLLUP_CONF_FILE=$ROLLUP_NAME-rollup-conf.yaml

Verify the config

bash
cat $ROLLUP_CONF_FILE
bash
global:
-  namespace: astria-dev-cluster
-  useTTY: false
-  logLevel: debug
-config:
-  rollup:
-    name: <YOUR_ROLLUP_NAME>
-    chainId: <YOUR_ROLLUP_NAME>-chain
-    networkId: '<YOUR_NETWORK_ID>'
-    genesisAccounts:
-    - address: <GENESIS_ADDRESS>
-      balance: '<BALANCE>'
-  sequencer:
-    initialBlockHeight: <INITIAL_SEQUENCER_BLOCK_HEIGHT>
-    websocket: wss://rpc.sequencer.dusk-3.devnet.astria.org/websocket
-    rpc: https://rpc.sequencer.dusk-3.devnet.astria.org
-ingress:
-  hostname: <YOUR_HOSTNAME>
-celestia-node:
-  config:
-    labelPrefix: <YOUR_ROLLUP_NAME>

Create new sequencer account

Create an account on the Astria shared sequencer network for your rollup to submit transactions.

bash
astria-cli sequencer account create
bash
Create Sequencer Account
-
-Private Key: "5562...1622" # <SEQUENCER_ACCOUNT_PRIV_KEY>
-Public Key:  "ec20...f613" # 
-Address:     "8a2f...5f68" # <SEQUENCER_ACCOUNT_ADDRESS>

Export your sequencer private key and address as environment variables:

bash
export SEQUENCER_PRIV_KEY=5562...1622
-export SEQUENCER_ACCOUNT_ADDRESS=8a2f...5f68

Fund your Sequencer Account

Navigate to https://faucet.sequencer.dusk-3.devnet.astria.org/ to view the sequencer faucet.

Enter your <SEQUENCER_ACCOUNT_ADDRESS> into the text box to send funds to your account:

Sequencer Faucet

Verify your account received the funds

bash
astria-cli sequencer account balance $SEQUENCER_ACCOUNT_ADDRESS

Deploy the Rollup Node

Use the astria-cli to deploy the rollup node

bash
astria-cli rollup deployment create \
-  --config $ROLLUP_CONF_FILE \
-  --faucet-private-key $ROLLUP_FAUCET_PRIV_KEY \
-  --sequencer-private-key $SEQUENCER_PRIV_KEY

Watch for rollup startup

You can watch for the Kubernetes pods of the rollup to start with:

bash
kubectl get pods -n astria-dev-cluster -w
bash
NAME                                               READY   STATUS    RESTARTS      AGE
-<YOUR_ROLLUP_NAME>-blockscout-647745c66d-vz4ks     6/6     Running   1 (56s ago)   72s
-<YOUR_ROLLUP_NAME>-celestia-node-light-mocha-4-0   2/2     Running   1 (56s ago)   72s
-<YOUR_ROLLUP_NAME>-faucet-68667bd895-pwqmz         1/1     Running   0             72s
-<YOUR_ROLLUP_NAME>-geth-755cb8dd97-k5xp8           3/3     Running   0             72s

Your Rollup Endpoints

Your rollup will automatically be configured with several public endpoints using the DNS you configured:

UtilityURL
Block Explorerhttp://blockscout.<YOUR_ROLLUP_NAME>.<YOUR_HOSTNAME>/
Faucethttp://faucet.<YOUR_ROLLUP_NAME>.<YOUR_HOSTNAME>/
RPChttp://executor.<YOUR_ROLLUP_NAME>.<YOUR_HOSTNAME>/

Interact with your Rollup

bash
export ETH_RPC_URL=http://executor.$ROLLUP_NAME.$ROLLUP_HOSTNAME/
bash
cast block 0

Use an address of your choice.

bash
export REC_ADDR=<SOME_ADDRESS>
bash
cast balance $REC_ADDR
bash
cast send $REC_ADDR --value 10000000000000000000 --private-key $ROLLUP_FAUCET_PRIV_KEY
bash
cast balance $REC_ADDR
- - - - \ No newline at end of file diff --git a/community/1-overview.html b/community/1-overview.html index b602c53..58c31ed 100644 --- a/community/1-overview.html +++ b/community/1-overview.html @@ -4,22 +4,22 @@ Community overview | Astria - + - + - - - + + + -
Skip to content

Community overview

This section will highlight all the different resources and activities for the Astria community.

- +
Skip to content

Community overview

This section will highlight all the different resources and activities for the Astria community.

+ \ No newline at end of file diff --git a/components/_astria-go-cli-install.html b/components/_astria-go-cli-install.html index bca2d06..e729e7f 100644 --- a/components/_astria-go-cli-install.html +++ b/components/_astria-go-cli-install.html @@ -4,21 +4,21 @@ Astria - + - + - - - + + + -
Skip to content
bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-arm64.tar.gz > astria-cli.tar.gz
+    
Skip to content
bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-arm64.tar.gz > astria-cli.tar.gz
 tar -xvzf astria-cli.tar.gz
 mv astria-go /usr/local/bin/
 astria-go version
bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-amd64.tar.gz > astria-cli.tar.gz
@@ -27,8 +27,8 @@
 astria-go version
bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-linux-amd64.tar.gz > astria-cli.tar.gz
 tar -xvzf astria-cli.tar.gz
 mv astria-go /usr/local/bin/
-astria-go version
- +astria-go version
+ \ No newline at end of file diff --git a/components/_astria-rust-cli-install.html b/components/_astria-rust-cli-install.html index dd20dc6..3ff9a3d 100644 --- a/components/_astria-rust-cli-install.html +++ b/components/_astria-rust-cli-install.html @@ -4,28 +4,28 @@ Astria - + - + - - - + + + -
Skip to content

Install the latest astria cli

bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-aarch64-apple-darwin.tar.gz > astria-cli.tar.gz
+    
Skip to content
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-aarch64-apple-darwin.tar.gz > astria-cli.tar.gz
 tar -xvzf astria-cli.tar.gz
 mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-apple-darwin.tar.gz > astria-cli.tar.gz
 tar -xvzf astria-cli.tar.gz
 mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-unknown-linux-gnu.tar.gz > astria-cli.tar.gz
 tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
cargo install astria-cli --git=https://github.com/astriaorg/astria --tag=cli-v0.3.1 --locked

You'll also need to install the following tools:

WARNING

There is a bug in the latest Docker desktop release for MacOS
Please install the following release: https://docs.docker.com/desktop/release-notes/#4252
For more details see here

- +mv astria-cli /usr/local/bin/
bash
cargo install astria-cli --git=https://github.com/astriaorg/astria --tag=cli-v0.3.1 --locked
+ \ No newline at end of file diff --git a/components/_cli-cloud.html b/components/_cli-cloud.html deleted file mode 100644 index 14a55f4..0000000 --- a/components/_cli-cloud.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - Astria - - - - - - - - - - - - - - -
Skip to content

Install the latest astria cli

bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-aarch64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-unknown-linux-gnu.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
cargo install astria-cli --git=https://github.com/astriaorg/astria --tag=cli-v0.3.1 --locked

You'll also need to install the following tools:

WARNING

There is a bug in the latest Docker desktop release for MacOS
Please install the following release: https://docs.docker.com/desktop/release-notes/#4252
For more details see here

- - - - \ No newline at end of file diff --git a/components/_cli-local.html b/components/_cli-local.html deleted file mode 100644 index 6a6b031..0000000 --- a/components/_cli-local.html +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - Astria - - - - - - - - - - - - - - -
Skip to content

Install the latest astria cli

bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-aarch64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-unknown-linux-gnu.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
cargo install astria-cli --git=https://github.com/astriaorg/astria --tag=cli-v0.3.1 --locked

You'll also need to install the following tools:

WARNING

There is a bug in the latest Docker desktop release for MacOS
Please install the following release: https://docs.docker.com/desktop/release-notes/#4252
For more details see here

- - - - \ No newline at end of file diff --git a/components/_deployment-instructions-redirect.html b/components/_deployment-instructions-redirect.html index 95a74ce..5a5f098 100644 --- a/components/_deployment-instructions-redirect.html +++ b/components/_deployment-instructions-redirect.html @@ -4,22 +4,22 @@ Astria - + - + - - - + + + -
Skip to content

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

- +
Skip to content

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

+ \ No newline at end of file diff --git a/components/_remote-endpoints.html b/components/_remote-endpoints.html index 4f254b3..e977610 100644 --- a/components/_remote-endpoints.html +++ b/components/_remote-endpoints.html @@ -4,22 +4,22 @@ Astria - + - + - - - + + + -
Skip to content

The endpoints for the remote shared sequencer are:

NAMEHOSTSADDRESS
Sequencer RPCrpc.sequencer.dusk-3.devnet.astria.org34.111.73.187
Sequencer Faucetfaucet.sequencer.dusk-3.devnet.astria.org34.36.8.102
- + + \ No newline at end of file diff --git a/developer/references/astria-go/cli-commands.html b/developer/references/astria-go/cli-commands.html index 3e719c2..d431fa6 100644 --- a/developer/references/astria-go/cli-commands.html +++ b/developer/references/astria-go/cli-commands.html @@ -4,21 +4,21 @@ astria-go cli Commands | Astria - + - + - - - + + + -
Skip to content

astria-go cli Commands

Global Flags

Flags that can be used on any command in the cli.

FlagArg TypeOverride Env VarDescription
-h, --helpboolNoneDisplay the help information for a given command
--log-levelstringASTRIA_GO_LOG_LEVELSet the log level for the cli.

help

Print the help information for the given command.

Usage

bash
astria-go help
+    
Skip to content

astria-go cli Commands

Global Flags

Flags that can be used on any command in the cli.

FlagArg TypeOverride Env VarDescription
-h, --helpboolNoneDisplay the help information for a given command
--log-levelstringASTRIA_GO_LOG_LEVELSet the log level for the cli.

help

Print the help information for the given command.

Usage

bash
astria-go help
 # or
 astria-go [command] help

version

Prints the version of the cli.

Usage

bash
astria-go version

dev

The root command for all development commands.

Usage

bash
astria-go dev [command] [flags]

dev init

Downloads service binaries and initializes the local environment. This command must be run before the dev run command can be used.

Usage

bash
astria-go dev init [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")
--local-native-denomstringASTRIA_GO_LOCAL_NATIVE_DENOMSet the native denom for the local instance. This is used to set the 'native_asset_base_denomination' and 'allowed_fee_assets' in the CometBFT genesis.json file. (default "nria")
--local-network-namestringASTRIA_GO_LOCAL_NETWORK_NAMESet the local network name for the instance. This is used to set the chain ID in the CometBFT genesis.json file. (default "sequencer-test-chain-0")

dev purge

The root command for all purge commands.

Usage

bash
astria-go dev purge [command] [flags]

dev purge all

Delete all data for a given instance. This deletes the entire instance directory within ~/.astria. astria-go dev init must be run before astria-go dev run can be used.

Usage

bash
astria-go dev purge all [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")

dev purge binaries

Delete all downloaded binaries for a given instance. astria-go dev init must be run before astria-go dev run can be used.

Usage

bash
astria-go dev purge binaries [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")

dev reset

The root command for resetting the local development instance data.

Usage

bash
astria-go dev reset [command] [flags]

dev reset config

Reset config files. This will return all files in the instance config directory to their default state as though initially created.

Usage

bash
astria-go dev reset config [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")
--local-native-denomstringASTRIA_GO_LOCAL_NATIVE_DENOMSet the native denom for the local instance. This is used to set the 'native_asset_base_denomination' and 'allowed_fee_assets' in the CometBFT genesis.json file. (default "nria")
--local-network-namestringASTRIA_GO_LOCAL_NETWORK_NAMESet the local network name for the instance. This is used to set the chain ID in the CometBFT genesis.json file. (default "sequencer-test-chain-0")

dev reset networks

Reset the networks config for the cli. This command only resets the networks-config.toml file for the instance. No other config files are affected.

Usage

bash
astria-go dev reset networks [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")
--local-native-denomstringASTRIA_GO_LOCAL_NATIVE_DENOMSet the native denom for the local instance. This is used to set the 'native_asset_base_denomination' and 'allowed_fee_assets' in the CometBFT genesis.json file. (default "nria")
--local-network-namestringASTRIA_GO_LOCAL_NETWORK_NAMESet the local network name for the instance. This is used to set the chain ID in the CometBFT genesis.json file. (default "sequencer-test-chain-0")

dev reset state

Reset Sequencer state. This will reset both the sequencer and Cometbft data to their initial state.

Usage

bash
astria-go dev reset state [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")

dev run

Runs a minimal, local Astria stack. You can choose to run a local sequencer stack or target a remote network by using the --network flag.

Usage

bash
# run a local sequencer
 astria-go dev run [flags]
@@ -26,7 +26,7 @@
 astria-go dev run --network local [flags]
 # run against a remote dev net
 astria-go dev run --network dusk [flags]

Flags

FlagArg TypeOverride Env VarDescription
--instancestringASTRIA_GO_INSTANCEChoose the target instance. (default "default")
--networkstringASTRIA_GO_NETWORKSelect the network to run the services against. Valid networks are: local, dusk, dawn, mainnet
--cometbft-pathstringASTRIA_GO_COMETBFT_PATHProvide an override path to a specific cometbft binary.
--composer-pathstringASTRIA_GO_COMPOSER_PATHProvide an override path to a specific composer binary.
--conductor-pathstringASTRIA_GO_CONDUCTOR_PATHProvide an override path to a specific conductor binary.
--sequencer-pathstringASTRIA_GO_SEQUENCER_PATHProvide an override path to a specific sequencer binary.
--service-log-levelstringASTRIA_GO_SERVICE_LOG_LEVELSet the log level for services (debug, info, error) (default "info")

sequencer

The root command for all sequencer commands.

Usage

bash
astria-go sequencer [command] [flags]

sequencer balances

Get the balances of an account on the Sequencer.

Usage

bash
astria-go sequencer balance [address] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonN/AboolASTRIA_GO_JSON
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer to retrieve the balance from. (default "http://127.0.0.1:26657")

sequencer blockheight

Get the current block height of the Sequencer.

Usage

bash
astria-go sequencer blockheight [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonN/AboolASTRIA_GO_JSON
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer to retrieve the balance from. (default "http://127.0.0.1:26657")

sequencer bridge

The root command for the sequencer bridge commands.

Usage

bash
astria-go sequencer bridge [command]

sequencer bridge init

Initialize a bridge account.

Usage

bash
astria-go sequencer bridge init [rollup-id] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--asset-idstringASTRIA_GO_ASSET_IDThe asset id of the asset we want to bridge (default "transfer/channel-0/utia")
--fee-asset-idstringASTRIA_GO_FEE_ASSET_IDThe fee asset id of the asset used for fees (default "nria")
--jsonboolASTRIA_GO_JSONOutput bridge account as JSON
--keyfilestringASTRIA_GO_KEYFILEPath to secure keyfile for the bridge account.
--keyring-addressstringASTRIA_GO_KEYRING_ADDRESSThe address of the bridge account. Requires private key be stored in keyring.
--privkeystringASTRIA_GO_PRIVKEYThe private key of the bridge account.
-c, --sequencer-chain-idstringASTRIA_GO_SEQUENCER_CHAIN_IDThe chain ID of the sequencer. (default "astria-dusk-5")
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer to init bridge account (default "http://127.0.0.1:26657")

sequencer bridge lock

Locks tokens on the bridge account.

Usage

bash
astria-go sequencer bridge lock [address] [amount] [destination-chain-address] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonboolASTRIA_GO_JSONOutput bridge account as JSON
--keyfilestringASTRIA_GO_KEYFILEPath to secure keyfile for the bridge account.
--keyring-addressstringASTRIA_GO_KEYRING_ADDRESSThe address of the bridge account. Requires private key be stored in keyring.
--privkeystringASTRIA_GO_PRIVKEYThe private key of the bridge account.
-c, --sequencer-chain-idstringASTRIA_GO_SEQUENCER_CHAIN_IDThe chain ID of the sequencer. (default "astria-dusk-5")
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer where the bridge account resides (default "http://127.0.0.1:26657")

sequencer createaccount

Create an account for the sequencer. The account will be used to sign transactions and blocks. The account will be created with a private key, public key, and address.

Usage

bash
astria-go sequencer createaccount [flags]

Flags

FlagArg TypeOverride Env VarDescription
--insecureboolASTRIA_GO_INSECUREPrint the account private key to terminal instead of storing securely.
--jsonboolASTRIA_GO_JSONOutput the account information in JSON format.
--keyfileboolASTRIA_GO_KEYFILEStore the account private key in a keyfile.
--keyringboolASTRIA_GO_KEYRINGStore the account private key in the system keyring.

sequencer getkey

Get private key for an address in system keyring.

Usage

bash
astria-go sequencer getkey [address] [flags]

sequencer nonce

Retrieves and prints the nonce of an account.

Usage

bash
astria-go sequencer nonce [address] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonN/AboolASTRIA_GO_JSON
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer. (default "http://127.0.0.1:26657")

sequencer setkey

Set private key for an address in system keyring.

Usage

bash
astria-go sequencer setkey [address] [private key] [flags]

sequencer transfer

Transfer tokens from one account to another.

Usage

bash
astria-go sequencer transfer [amount] [to] [flags]

Flags

FlagArg TypeOverride Env VarDescription
--jsonboolASTRIA_GO_JSONOutput in JSON format.
--keyfilestringASTRIA_GO_KEYFILEPath to secure keyfile for sender.
--keyring-addressstringASTRIA_GO_KEYRING_ADDRESSThe address of the sender. Requires private key be stored in keyring.
--privkeystringASTRIA_GO_PRIVKEYThe private key of the sender.
-c, --sequencer-chain-idstringASTRIA_GO_SEQUENCER_CHAIN_IDThe chain ID of the sequencer. (default "astria-dusk-5")
-u, --sequencer-urlstringASTRIA_GO_SEQUENCER_URLThe URL of the sequencer. (default "http://127.0.0.1:26657")
- + \ No newline at end of file diff --git a/developer/references/astria-go/cli-installation.html b/developer/references/astria-go/cli-installation.html index 8a4bc80..5801aa6 100644 --- a/developer/references/astria-go/cli-installation.html +++ b/developer/references/astria-go/cli-installation.html @@ -4,21 +4,21 @@ Install the Astria CLI | Astria - + - + - - - + + + -
Skip to content

Install the Astria CLI

The astria-go cli is a tool designed to make local rollup development as simple and dependency free as possible. It provides functionality to easily run the Astria stack and interact with the Sequencer.

Download using Curl

bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-arm64.tar.gz > astria-cli.tar.gz
+    
Skip to content

Install the Astria CLI

The astria-go cli is a tool designed to make local rollup development as simple and dependency free as possible. It provides functionality to easily run the Astria stack and interact with the Sequencer.

Download using Curl

bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-arm64.tar.gz > astria-cli.tar.gz
 tar -xvzf astria-cli.tar.gz
 mv astria-go /usr/local/bin/
 astria-go version
bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-amd64.tar.gz > astria-cli.tar.gz
@@ -37,7 +37,7 @@
 # OR you can move the binary to a location in your PATH if you'd like
 mv ./bin/astria-go /usr/local/bin/
 astria-go version
- + \ No newline at end of file diff --git a/developer/references/astria-go/cli-networks-configuration.html b/developer/references/astria-go/cli-networks-configuration.html index 77f06af..18cd4f6 100644 --- a/developer/references/astria-go/cli-networks-configuration.html +++ b/developer/references/astria-go/cli-networks-configuration.html @@ -4,21 +4,21 @@ Astria Cli Networks Configuration | Astria - + - + - - - + + + -
Skip to content

Astria Cli Networks Configuration

For each instance created with the astria-go cli, a networks-config.toml file can found in the ~/.astria/<instance>/ directory. This file allows for simplified configurations of different sequencer networks that can be targeted by the cli.

Selecting which network the cli is targeting can be controlled by using the --network flag when using the astria-go dev run command.

Primary Use Case

In general, the default values in the networks config should not need to be changed for most development situations. The most likely case where a user will need to update the configs is if they are trying to test their local components against a different sequencer rpc/grpc.

For example, the default Astria Dusk dev net configuration is as follows:

toml
[dusk]
+    
Skip to content

Astria Cli Networks Configuration

For each instance created with the astria-go cli, a networks-config.toml file can found in the ~/.astria/<instance>/ directory. This file allows for simplified configurations of different sequencer networks that can be targeted by the cli.

Selecting which network the cli is targeting can be controlled by using the --network flag when using the astria-go dev run command.

Primary Use Case

In general, the default values in the networks config should not need to be changed for most development situations. The most likely case where a user will need to update the configs is if they are trying to test their local components against a different sequencer rpc/grpc.

For example, the default Astria Dusk dev net configuration is as follows:

toml
[dusk]
 sequencer_chain_id = 'astria-dusk-5'
 sequencer_grpc = 'https://grpc.sequencer.dusk-5.devnet.astria.org/'
 sequencer_rpc = 'https://rpc.sequencer.dusk-5.devnet.astria.org/'
@@ -34,7 +34,7 @@
 astria-go dev init \
     --local-network-name different-chain \
     --local-default-denom testdenom
- + \ No newline at end of file diff --git a/developer/references/endpoints.html b/developer/references/endpoints.html index 78ae45d..d0d9f9b 100644 --- a/developer/references/endpoints.html +++ b/developer/references/endpoints.html @@ -4,22 +4,22 @@ Astria Endpoints | Astria - + - + - - - + + + - - + + \ No newline at end of file diff --git a/developer/tutorials/install-the-cli.html b/developer/tutorials/install-the-cli.html index a760956..35ac1de 100644 --- a/developer/tutorials/install-the-cli.html +++ b/developer/tutorials/install-the-cli.html @@ -4,21 +4,21 @@ Install the Astria CLI | Astria - + - + - - - + + + -
Skip to content

Install the Astria CLI

The astria-go cli is a tool designed to make local rollup development as simple and dependency free as possible. It provides functionality to easily run the Astria stack and interact with the Sequencer.

Download using Curl

bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-arm64.tar.gz > astria-cli.tar.gz
+    
Skip to content

Install the Astria CLI

The astria-go cli is a tool designed to make local rollup development as simple and dependency free as possible. It provides functionality to easily run the Astria stack and interact with the Sequencer.

Download using Curl

bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-arm64.tar.gz > astria-cli.tar.gz
 tar -xvzf astria-cli.tar.gz
 mv astria-go /usr/local/bin/
 astria-go version
bash
curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.7.1/astria-go-v0.7.1-darwin-amd64.tar.gz > astria-cli.tar.gz
@@ -36,8 +36,8 @@
 
 # OR you can move the binary to a location in your PATH if you'd like
 mv ./bin/astria-go /usr/local/bin/
-astria-go version

Commands Used in this Tutorial

For more details on the avaliable commands and other cli features, see the cli resources.

CommandDescription
versionPrints the cli version.
helpShow help.
dev initDownloads binaries and initializes the local environment.
dev runRuns a minimal, local Astria stack.
sequencer blockheightGet the current block height of the sequencer.
sequencer createaccountCreate a new sequencer account.
- +astria-go version

Commands Used in this Tutorial

For more details on the avaliable commands and other cli features, see the cli resources.

CommandDescription
versionPrints the cli version.
helpShow help.
dev initDownloads binaries and initializes the local environment.
dev runRuns a minimal, local Astria stack.
sequencer blockheightGet the current block height of the sequencer.
sequencer createaccountCreate a new sequencer account.
+ \ No newline at end of file diff --git a/developer/tutorials/run-local-rollup-against-remote-sequencer.html b/developer/tutorials/run-local-rollup-against-remote-sequencer.html index b4034cd..2147f36 100644 --- a/developer/tutorials/run-local-rollup-against-remote-sequencer.html +++ b/developer/tutorials/run-local-rollup-against-remote-sequencer.html @@ -4,21 +4,21 @@ Run a Local Rollup against a Remote Sequencer | Astria - + - + - - - + + + -
Skip to content

Run a Local Rollup against a Remote Sequencer

This guide will walk you through running a local Geth rollup against a remote Astria sequencer, using the astria-go cli to run the required components of the Astria stack locally on your machine.

Setup a Geth Rollup

Build Geth

Requires Go, just, and Foundry:

Open a new terminal window and clone and build Geth.

bash
git clone git@github.com:astriaorg/astria-geth.git
+    
Skip to content

Run a Local Rollup against a Remote Sequencer

This guide will walk you through running a local Geth rollup against a remote Astria sequencer, using the astria-go cli to run the required components of the Astria stack locally on your machine.

Setup a Geth Rollup

Build Geth

Requires Go, just, and Foundry:

Open a new terminal window and clone and build Geth.

bash
git clone git@github.com:astriaorg/astria-geth.git
 cd astria-geth
 git checkout local-dev
 just build

Configure the Geth Genesis Information

Once you have built the Geth node, you will need to update some additional genesis information to work with the remote sequencer.

Run the following using the Astira cli:

bash
astria-go sequencer blockheight --sequencer-url https://rpc.sequencer.dusk-7.devnet.astria.org

Then, open the geth-genesis-local.json file and update the chainId and astriaRollupName to something of your choosing, as well as updating astriaSequencerInitialHeight using the block height from the previous command to choose which sequencer block the first block of your rollup will be in:

json
    "config": {
@@ -39,7 +39,7 @@
 rollup_name = '<your rollup name>' # update this value
 default_denom = 'nria'

Then open the ~/.astria/default/config/composer_dev_priv_key and replace dev private key in that file with your private key from the sequencer account you just created.

WARNING

If you skip updating the priv key the Astria services will still start correctly but your Composer will not be able to write transactions to the sequencer.

You can then use the Sequencer Faucet to fund the account you just created using the account address.

Run the local Astria components against the Remote Sequencer

Run the local Astria components against the remote sequencer:

bash
astria-go dev run --network dusk

When running against the remote sequencer, you will see a TUI that displays the logs of the Astria Conductor and Composer: Running against a remote sequencer using the Astria
 cli

Test your Rollup

To test that your rollup and the sequencer are configured and running correctly, you can follow the Test Transactions instructions here.

- + \ No newline at end of file diff --git a/developer/tutorials/run-local-rollup-and-sequencer.html b/developer/tutorials/run-local-rollup-and-sequencer.html index 1660702..fb8d4bc 100644 --- a/developer/tutorials/run-local-rollup-and-sequencer.html +++ b/developer/tutorials/run-local-rollup-and-sequencer.html @@ -4,21 +4,21 @@ Run a Local Rollup and Sequencer | Astria - + - + - - - + + + -
Skip to content

Run a Local Rollup and Sequencer

This guide will walk you through running a local Geth rollup against the Astria sequencer, using the astria-go cli to run the required components of the Astria stack locally on your machine.

Setup a Geth Rollup

Requires Go, just, and Foundry:

Open a new terminal window and clone and build Geth:

bash
git clone git@github.com:astriaorg/astria-geth.git
+    
Skip to content

Run a Local Rollup and Sequencer

This guide will walk you through running a local Geth rollup against the Astria sequencer, using the astria-go cli to run the required components of the Astria stack locally on your machine.

Setup a Geth Rollup

Requires Go, just, and Foundry:

Open a new terminal window and clone and build Geth:

bash
git clone git@github.com:astriaorg/astria-geth.git
 cd astria-geth
 git checkout local-dev
 just build

Create a new genesis account for your Geth rollup:

bash
cast w new

Open the geth-genesis-local.json file in your Geth repo and update the "alloc" account with the new address you just created, as well as updating the "chainId" and "astriaRollupName" to something of your choosing:

json
{
@@ -41,7 +41,7 @@
 rollup_name = '<your rollup name>' # update this value
 default_denom = 'nria'

Use the cli to run a local Astria Sequencer.

bash
astria-go dev run

TIP

When running an Astria sequencer using the cli, the --network local setting is the default. astria-go dev run is effectively an alias for astria-go dev run --network local.

When running the Astria stack locally, you will see a TUI that displays the logs of the Astria Sequencer, the underlying Cometbft node, the Astria Conductor, and Astria Composer: Running a local sequencer in the Astria
 cli

Test your Rollup

To test that your rollup and the sequencer are configured and running correctly, you can follow the Test Transactions instructions here.

- + \ No newline at end of file diff --git a/developer/tutorials/test-transactions.html b/developer/tutorials/test-transactions.html index 0803e5e..6b240d7 100644 --- a/developer/tutorials/test-transactions.html +++ b/developer/tutorials/test-transactions.html @@ -4,21 +4,21 @@ Test Transactions | Astria - + - + - - - + + + -
Skip to content

Test Transactions

Configure the Testing Script

To run the test transactions script you will need Foundry:

In a new terminal window, clone and configure the evm test transactions repo:

bash
git clone --recurse-submodules git@github.com:astriaorg/astria-web3.git
+    
Skip to content

Test Transactions

Configure the Testing Script

To run the test transactions script you will need Foundry:

In a new terminal window, clone and configure the evm test transactions repo:

bash
git clone --recurse-submodules git@github.com:astriaorg/astria-web3.git
 cd astria-web3
 git checkout local-evm
 cd packages/evm-test-data/
@@ -26,7 +26,7 @@
 cp .env.example .env

Open the .env file and update the chain id and private key. The chain id should match the "chainId" value in the geth-genesis-local.json file in the astria-geth repo. The private key used here should be the private key for the account you used when setting up Geth previously:

bash
# this value should be the same as what you used for configuring Geth above
 CHAIN_ID=<6 digit number>
 PRIVATE_KEY=<your evm account private key>

Run the Testing Script

bash
just generate-transactions

You will see the transactions going through in both the forge script and the log windows in the astria-go cli.

TIP

The test script sends transactions directly to the local rollup running on your machine. Thus, the transactions will work regardless of whether you are running everything locally with astria-go dev run --network local or if you are running against a remote sequencer with astria-go dev run --network dusk.

Common Issues

EvmError: OutOfFunds

If you see a an OutOfFunds error when running the testing script, this means that your rollup genesis account was not configured correctly. To fix this issue:

  1. Go back to the astria-geth repo.
  2. Run cast w new to create a new rollup account.
  3. Add the new address to the geth-genesis-local.json under "alloc".
  4. Restart your rollup with just clean-restart.
  5. Update the PRIVATE_KEY env var in the test transactions repo with the private key from the new account.
  6. Rerun the testing script.

Test script hangs

If you are running against a remote sequencer and the transactions test script hangs, navigate to the cli TUI and look at the logs for the Composer. You will likely see an error that contains sequencer rejected the transaction ... insufficient funds for asset. This means that the sequencer account that was created was either improperly configure or not funded correctly. To fix this issue:

  1. Stop the astria-go cli.
  2. Create a new sequencer account with astria-go sequencer createaccount or use an existing account if you already have one for testing, and fund the account using the Sequencer Faucet.
  3. Make sure the astria_composer_private_key variable in the ~/.astria/default/config/base-config.toml is set to the private key for your funded sequencer account.
  4. Re-launch the cli with astria-go dev run --network dusk.
  5. Rerun the transactions testing script.

Chain Data Mismatch

If you start seeing warning in Composer that say failed getting latest nonce from sequencer or errors in Conductor that say first latest height from sequencer was bad, this likely means that block data on your rollup and the block data coming from whatever sequencer you are using (either local or remote) are mismatched. To fix this issue:

  1. Stop your rollup and the cli.
  2. Restart the rollup with just clean-restart and restart the cli with the run conditions you were using.

This will clean the data your rollup and allow it to resync.

If issues still persist, you can clean the data for the rollup and the sequencer (if you are running a local sequencer):

  1. Stop your rollup and the cli.
  2. With the cli run astria-go dev clean then astria-go dev init.
  3. Restart the rollup with just clean-restart.
  4. Restart the cli with astria-go dev run.
- + \ No newline at end of file diff --git a/dusk-faq/1-information.html b/dusk-faq/1-information.html index 3de27f3..76d6a8f 100644 --- a/dusk-faq/1-information.html +++ b/dusk-faq/1-information.html @@ -4,27 +4,21 @@ FAQ and Debugging | Astria - + - + - - - + + + -
Skip to content

FAQ and Debugging

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

Endpoints

Endpoints for the remote cluster are the following:

NAMEHOSTSADDRESS
EVM JSON RPCrpc.evm.dusk-3.devnet.astria.org34.160.214.22
EVM Block Explorerexplorer.evm.dusk-3.devnet.astria.org34.111.167.16
EVM Faucetfaucet.evm.dusk-3.devnet.astria.org130.211.4.120
Sequencer RPCrpc.sequencer.dusk-3.devnet.astria.org34.111.73.187
Sequencer Faucetfaucet.sequencer.dusk-3.devnet.astria.org34.36.8.102

Software Versions

The latest Devnet (dusk-3) runs the following software versions:

Install the latest Astria cli

Install the latest astria cli

bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-aarch64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-unknown-linux-gnu.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
cargo install astria-cli --git=https://github.com/astriaorg/astria --tag=cli-v0.3.1 --locked

You'll also need to install the following tools:

WARNING

There is a bug in the latest Docker desktop release for MacOS
Please install the following release: https://docs.docker.com/desktop/release-notes/#4252
For more details see here

Manually Fetch Sequencer Block Height

Sequencer Block Height

The initial sequencer block height is automatically fetched and set (if not manually specified) when creating the rollup config.

You can manually retrieve it with the astria-cli:

bash
astria-cli sequencer blockheight get

If you need to set this to a different value you can set it as an an environment variable:

bash
export ROLLUP_SEQUENCER_INITIAL_BLOCK_HEIGHT=<INITIAL_SEQUENCER_BLOCK_HEIGHT>

Or use the following flag when running the astria-cli rollup config create command below:

bash
--sequencer.initial-block-height <INITIAL_SEQUENCER_BLOCK_HEIGHT>

Loadbalancer Information

You can retrieve the kubernetes service for your loadbalancer with

bash
kubectl get svc -n ingress-nginx
bash
NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
+    
Skip to content

FAQ and Debugging

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

Endpoints

Endpoints for the remote cluster are the following:

NAMEHOSTSADDRESS
EVM JSON RPCrpc.evm.dusk-3.devnet.astria.org34.160.214.22
EVM Block Explorerexplorer.evm.dusk-3.devnet.astria.org34.111.167.16
EVM Faucetfaucet.evm.dusk-3.devnet.astria.org130.211.4.120
Sequencer RPCrpc.sequencer.dusk-3.devnet.astria.org34.111.73.187
Sequencer Faucetfaucet.sequencer.dusk-3.devnet.astria.org34.36.8.102

Software Versions

The latest Devnet (dusk-3) runs the following software versions:

Install the latest Astria cli

Manually Fetch Sequencer Block Height

Sequencer Block Height

The initial sequencer block height is automatically fetched and set (if not manually specified) when creating the rollup config.

You can manually retrieve it with the astria-cli:

bash
astria-cli sequencer blockheight get

If you need to set this to a different value you can set it as an an environment variable:

bash
export ROLLUP_SEQUENCER_INITIAL_BLOCK_HEIGHT=<INITIAL_SEQUENCER_BLOCK_HEIGHT>

Or use the following flag when running the astria-cli rollup config create command below:

bash
--sequencer.initial-block-height <INITIAL_SEQUENCER_BLOCK_HEIGHT>

Loadbalancer Information

You can retrieve the kubernetes service for your loadbalancer with

bash
kubectl get svc -n ingress-nginx
bash
NAME                                 TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                      AGE
 ingress-nginx-controller             LoadBalancer   34.118.228.98   34.42.184.206   80:31623/TCP,443:31357/TCP   57s
 ingress-nginx-controller-admission   ClusterIP      34.118.229.71   <none>          443/TCP                      57s

You can check that the loadbalancer is working by making a curl request

bash
# use the EXTERNAL-IP from the result above
 curl 34.42.184.206

This should return the nginx 404 page

html
<html>
@@ -34,7 +28,7 @@
 <hr><center>nginx</center>
 </body>
 </html>

Ingress Information

You can check the kubernetes ingress resource for your rollup with:

bash
kubectl get ingress -n astria-dev-cluster
- + \ No newline at end of file diff --git a/hashmap.json b/hashmap.json index a67fc00..11db2e9 100644 --- a/hashmap.json +++ b/hashmap.json @@ -1 +1 @@ -{"index.md":"CwgoGh1Y","developer_references_astria-go_cli-installation.md":"mgnYuJNv","local-rollup_2-astria-cli-go.md":"BD3xHQWh","overview_architecture_1-overview.md":"B9LbivsM","overview_architecture_7-conductor.md":"C1cxTDBl","developer_references_astria-go_cli-commands.md":"BwozoMC2","astria-evm_overview.md":"BopHGrUo","overview_architecture_5-the-astria-sequencer.md":"B14uww92","components__astria-rust-cli-install.md":"B75Q7g_P","overview_architecture_4-composer.md":"D0xP4xn5","cloud-rollup_digital-ocean.md":"CfDO4RJK","overview_architecture_3-rollup.md":"izaFfvak","developer_references_astria-go_cli-networks-configuration.md":"D6ZrmUeV","components__cli-cloud.md":"Cqk--tfM","community_1-overview.md":"DW1nKyz0","components__remote-endpoints.md":"CeXXFFgq","components__deployment-instructions-redirect.md":"C5O_qOhX","overview_3-cross-rollup-composability.md":"CBI7Un7v","overview_architecture_2-transaction-flow.md":"Bz0-vY-p","overview_2-why-decentralized-sequencers.md":"AXITeYPR","dusk-faq_1-information.md":"kCVNcAJO","developer_references_endpoints.md":"DA5OjVvM","components__astria-go-cli-install.md":"BeODc5XQ","overview_1-introduction.md":"BbejfMNU","developer_tutorials_run-local-rollup-against-remote-sequencer.md":"BTYD2h2y","overview_architecture_6-relayer.md":"DSBF0QsU","developer_tutorials_run-local-rollup-and-sequencer.md":"CVugc4XT","local-rollup_1-introduction.md":"BcjOEsjg","components__cli-local.md":"Br3rY7vk","markdown-examples.md":"DZlBVjPh","overview_architecture_8-data-availability-layer.md":"CSyz_Ik_","developer_tutorials_test-transactions.md":"CHUWCnhT","developer_tutorials_install-the-cli.md":"CLBA3xA4"} +{"components__astria-go-cli-install.md":"CJ_IXRZk","overview_introduction.md":"BwhDZK9v","components__deployment-instructions-redirect.md":"pLk86BSd","community_1-overview.md":"BVVC8E9V","overview_transaction-flow.md":"VqExVaSt","developer_references_astria-go_cli-networks-configuration.md":"CnldiT1_","developer_references_endpoints.md":"BGBzKPmH","markdown-examples.md":"BbchBgv2","overview_bridging.md":"CjvxMxc-","index.md":"gniyevlB","overview_components_relayer.md":"CFDquIzF","overview_components_the-astria-sequencer.md":"C7-kSyZK","overview_components_data-availability-layer.md":"TunJ4qRL","developer_tutorials_install-the-cli.md":"Ka1S9HeO","dusk-faq_1-information.md":"DuTqHZkG","overview_how-rollups-work.md":"CZwUJuFr","developer_references_astria-go_cli-commands.md":"CdSC7Cpq","overview_the-astria-sequencer-network.md":"BjirIo9x","components__remote-endpoints.md":"DpCbQmre","overview_components_conductor.md":"BU32nGR1","developer_tutorials_run-local-rollup-and-sequencer.md":"DCDkS687","overview_components_composer.md":"Bu4Epgvb","developer_tutorials_run-local-rollup-against-remote-sequencer.md":"HhKMkuDu","developer_tutorials_test-transactions.md":"CsFseJpv","developer_references_astria-go_cli-installation.md":"LgRkaI8P","astria-evm_overview.md":"YzaiGDxe","components__astria-rust-cli-install.md":"CSqbfUuO"} diff --git a/index.html b/index.html index dec0b93..816d4cd 100644 --- a/index.html +++ b/index.html @@ -4,22 +4,22 @@ Astria - + - + - - - + + + - - + + \ No newline at end of file diff --git a/local-rollup/1-introduction.html b/local-rollup/1-introduction.html deleted file mode 100644 index 0f21128..0000000 --- a/local-rollup/1-introduction.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - Overview | Astria - - - - - - - - - - - - - - -
Skip to content

Overview

This guide will walk you through deploying a rollup full node on a local Kubernetes cluster which uses the Astria shared sequencer network.

TIP

If you would like to deploy a rollup on a remote Kubernetes cluster, please see the remote deployment guide here.

Local Dependencies

INFO

This guide has been tested on MacOS and Linux but not Windows

Clone the Astria dev-cluster

bash
git clone --branch dusk-3 https://github.com/astriaorg/dev-cluster.git

Install the latest astria cli

bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-aarch64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-apple-darwin.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
curl -L https://github.com/astriaorg/astria/releases/download/cli-v0.3.1/astria-cli-x86_64-unknown-linux-gnu.tar.gz > astria-cli.tar.gz
-tar -xvzf astria-cli.tar.gz
-mv astria-cli /usr/local/bin/
bash
cargo install astria-cli --git=https://github.com/astriaorg/astria --tag=cli-v0.3.1 --locked

You'll also need to install the following tools:

WARNING

There is a bug in the latest Docker desktop release for MacOS
Please install the following release: https://docs.docker.com/desktop/release-notes/#4252
For more details see here

Dusknet Endpoints

The endpoints for the remote shared sequencer are:

NAMEHOSTSADDRESS
Sequencer RPCrpc.sequencer.dusk-3.devnet.astria.org34.111.73.187
Sequencer Faucetfaucet.sequencer.dusk-3.devnet.astria.org34.36.8.102

Setup Local Environment

We use the Astria dev-cluster to setup a local Kubernetes (k8s) cluster where we will deploy our local rollup.

TIP

Make sure that Docker is running before continuing.

In the dev-cluster repo, run:

sh
just create-cluster
-just deploy-ingress-controller

This sets up a local environment compatible with our helm charts.

Create your Rollup Genesis Account(s)

DANGER

NEVER use a private key you use on a live network.

Specify the accounts which will be funded at the genesis block of your EVM rollup.

You can create an account using:

bash
cast w new
bash
Successfully created new keypair.
-Address:     0xfFe9...5f8b # <GENESIS_ADDRESS>
-Private key: 0x332e...a8fb # <GENESIS_PRIVATE_KEY>

Export the genesis private key, this will be used by the faucet included with the rollup:

bash
export ROLLUP_FAUCET_PRIV_KEY=<GENESIS_PRIVATE_KEY>

Export the genesis address alongside with your desired initial balance in Wei.
We recommend using a value of 100000000000000000000 or larger:

bash
export ROLLUP_GENESIS_ACCOUNTS=<GENESIS_ADDRESS>:<BALANCE>

You can specify multiple accounts to be funded at genesis as comma deliminated tuples of <ADDRESS>:<BALANCE>

bash
export ROLLUP_GENESIS_ACCOUNTS=<ADDRESS_1>:<BALANCE_1>,<ADDRESS_2>:<BALANCE_2>

Create Rollup Config

Create the configuration manifest for your rollup.

Replace the tags in the commands and env vars below, as follows:

Var NameVar TypeDescription
<YOUR_ROLLUP_NAME>StringThe name of your rollup. This must be lowercase alphanumeric, - is allowed, this will be included in your rollup's URLs.
<YOUR_NETWORK_ID>u64The id of your network. You must select an id that has not already been claimed. You can view claimed chain IDs here.

You can use environment variables to set the configuration for the rollup config creation. Replace all the <> tags with their corresponding values.

bash
export ROLLUP_NAME=<YOUR_ROLLUP_NAME>
-export ROLLUP_NETWORK_ID=<YOUR_NETWORK_ID>

Run the config create command:

sh
astria-cli rollup config create

Export the config file name as an env vars:

bash
export ROLLUP_CONF_FILE=$ROLLUP_NAME-rollup-conf.yaml

Verify the config

bash
cat $ROLLUP_CONF_FILE
bash
global:
-  namespace: astria-dev-cluster
-  useTTY: false
-  logLevel: debug
-config:
-  rollup:
-    name: <YOUR_ROLLUP_NAME>
-    chainId: <YOUR_ROLLUP_NAME>-chain
-    networkId: '<YOUR_NETWORK_ID>'
-    genesisAccounts:
-    - address: <GENESIS_ADDRESS>
-      balance: '<BALANCE>'
-  sequencer:
-    initialBlockHeight: <INITIAL_SEQUENCER_BLOCK_HEIGHT>
-    websocket: wss://rpc.sequencer.dusk-3.devnet.astria.org/websocket
-    rpc: https://rpc.sequencer.dusk-3.devnet.astria.org
-ingress:
-  hostname: localdev.me
-celestia-node:
-  config:
-    labelPrefix: <YOUR_ROLLUP_NAME>

Create a New Sequencer Account

Create an account on the Astria shared sequencer network for your rollup to submit transactions.

bash
astria-cli sequencer account create
bash
Create Sequencer Account
-
-Private Key: "5562...1622" # <SEQUENCER_ACCOUNT_PRIV_KEY>
-Public Key:  "ec20...f613" # 
-Address:     "8a2f...5f68" # <SEQUENCER_ACCOUNT_ADDRESS>

Export your sequencer private key and address as environment variables:

bash
export SEQUENCER_PRIV_KEY=5562...1622
-export SEQUENCER_ACCOUNT_ADDRESS=8a2f...5f68

Fund your Sequencer Account

Navigate to < https://faucet.sequencer.dusk-3.devnet.astria.org/ > to view the sequencer faucet.

Enter your <SEQUENCER_ACCOUNT_ADDRESS> into the text box to send funds to your account:

Sequencer Faucet

Verify your account received the funds

bash
astria-cli sequencer account balance $SEQUENCER_ACCOUNT_ADDRESS

Deploy the Rollup Node

Use the astria-cli to deploy the rollup node

bash
astria-cli rollup deployment create \
-  --config $ROLLUP_CONF_FILE \
-  --faucet-private-key $ROLLUP_FAUCET_PRIV_KEY \
-  --sequencer-private-key $SEQUENCER_PRIV_KEY

Watch for rollup startup

You can watch for the Kubernetes pods of the rollup to start with:

bash
kubectl get pods -n astria-dev-cluster -w
bash
NAME                                             READY   STATUS    RESTARTS      AGE
-<YOUR_ROLLUP_NAME>-blockscout-647745c66d-vz4ks     6/6     Running   1 (56s ago)   72s
-<YOUR_ROLLUP_NAME>-celestia-node-light-mocha-4-0   2/2     Running   1 (56s ago)   72s
-<YOUR_ROLLUP_NAME>-faucet-68667bd895-pwqmz         1/1     Running   0             72s
-<YOUR_ROLLUP_NAME>-geth-755cb8dd97-k5xp8           3/3     Running   0             72s

Your Rollup Endpoints

Your rollup will automatically be configured with the several locally accessible endpoints:

UtilityURL
Block Explorerhttp://blockscout.<YOUR_ROLLUP_NAME>.localdev.me/
Faucethttp://faucet.<YOUR_ROLLUP_NAME>.localdev.me/
RPChttp://executor.<YOUR_ROLLUP_NAME>.localdev.me/

Interact with your Rollup

bash
export ETH_RPC_URL=http://executor.$ROLLUP_NAME.localdev.me/
bash
cast block 0

Use an address of your choice.

bash
export REC_ADDR=<SOME_ADDRESS>
bash
cast balance $REC_ADDR
bash
cast send $REC_ADDR --value 10000000000000000000 --private-key $ROLLUP_FAUCET_PRIV_KEY
bash
cast balance $REC_ADDR
- - - - \ No newline at end of file diff --git a/local-rollup/2-astria-cli-go.html b/local-rollup/2-astria-cli-go.html deleted file mode 100644 index 5550930..0000000 --- a/local-rollup/2-astria-cli-go.html +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - The Astria CLI | Astria - - - - - - - - - - - - - - -
Skip to content

The Astria CLI

The astria-go cli is a tool designed to make local rollup development as simple and dependency free as possible. It provides functionality to easily run the Astria stack and interact with the Sequencer.

Install and Run CLI from GitHub release

The CLI binaries are available for download from the releases page. There are binaries available for macOS and Linux, for both x86_64 and arm64 architectures.

bash
# download the binary for your platform, e.g. macOS silicon
-curl -L https://github.com/astriaorg/astria-cli-go/releases/download/v0.3.0/astria-cli-v0.3.0-darwin-arm64.tar.gz \
-  --output astria-go.tar.gz
-# extract the binary
-tar -xzvf astria-go.tar.gz
-# run the binary and check version
-./astria-go version
-
-# you can move the binary to a location in your PATH if you'd like
-mv astria-go /usr/local/bin/

Locally Build and Run the CLI

Dependencies: (only required for development)

bash
git clone git@github.com:astriaorg/astria-cli-go.git
-cd astria-cli-go
-just build
-just run "dev init"
-just run "dev run"

This will download, configure, and run the following binaries of these applications:

AppVersion
Cometbftv0.37.4
Astria-Sequencerv0.9.0
Astria-Conductorv0.12.0
Astria-Composerv0.4.0

And place them in a local-dev-astria directory, along with several other configuration files for everything.

The cli runs the minimum viable components for testing a rollup against the Astria stack, allowing developers to confirm that their rollup interacts with Astria's apis correctly.

Development

Requires go version 1.20 or newer.

You may also need to update your gopls settings in your editor for build tags to allow for correct parsing of the build tags in the code. This will depend on your IDE, but for VS Code you can open your settings and add:

json
{
-  "gopls": {
-      "buildFlags": ["-tags=darwin arm64 amd64 linux"]
-  }
-}

The cli is built using Cobra. Once you've pulled the repo you can install the cobra-cli as follows to add new commands for development:

bash
# install cobra-cli
-go install github.com/spf13/cobra-cli@latest
-# add new command, e.g. `run`
-cobra-cli add <new-command>

Available Commands

CommandDescription
versionPrints the cli version.
helpShow help.
devRoot command for cli development functionality.
dev initDownloads binaries and initializes the local environment.
dev runRuns a minimal, local Astria stack.
dev cleanDeletes the local data for the Astria stack.
dev clean allDeletes the local data, downloaded binaries, and config files for the Astria stack.
sequencer create-accountGenerate an account for the Sequencer.
sequencer get-balanceGet the balance of an account on the Sequencer.
- - - - \ No newline at end of file diff --git a/markdown-examples.html b/markdown-examples.html index f4e8fb5..7402f2a 100644 --- a/markdown-examples.html +++ b/markdown-examples.html @@ -4,21 +4,21 @@ Markdown Extension Examples | Astria - + - + - - - + + + -
Skip to content

Markdown Extension Examples

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

Syntax Highlighting

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

Input

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

Markdown Extension Examples

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

Syntax Highlighting

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

Input

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

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

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

- +:::

Output

INFO

This is an info box.

TIP

This is a tip.

WARNING

This is a warning.

DANGER

This is a dangerous warning.

Details

This is a details block.

More

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

+ \ No newline at end of file diff --git a/overview/1-introduction.html b/overview/1-introduction.html deleted file mode 100644 index 4deef41..0000000 --- a/overview/1-introduction.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - Introduction | Astria - - - - - - - - - - - - - - -
Skip to content

Introduction

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

Astria is a shared sequencing network that allows many rollups to share a single decentralized network of sequencers. These sequencers are simple and permissionless to join, completely replacing centralized sequencers.

This shared sequencer network provides out-of-the-box censorship resistance, fast block confirmations, and atomic cross-rollup composability – all while retaining each rollup’s sovereignty. Astria envisions a future where thousands of decentralized rollups flourish, each one tailored to meet the unique requirements of different industries, applications, and use cases.

To achieve this vision, we believe that deploying an economically secure, decentralized, and censorship-resistant rollup should be as easy as deploying a smart contract.

What should I read?

Want to learn more about the sequencer? check out the Astria overview section If you're a developer eager to get started, you should go straight to our Quick Start guide, which will walk you through deploying a rollup full node on a local Kubernetes cluster which uses the Astria shared sequencer network. Once you've gone through the Quick Start, you can move on to running on cloud. You can find our endpoints and FAQ here

What If I Need More Help?

While this documentation should include everything you need, if you can't find what you're looking for, please reach out to us on Twitter or check the Astria repository.

- - - - \ No newline at end of file diff --git a/overview/2-why-decentralized-sequencers.html b/overview/2-why-decentralized-sequencers.html deleted file mode 100644 index fe4cafa..0000000 --- a/overview/2-why-decentralized-sequencers.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - Why Decentralized Sequencers? | Astria - - - - - - - - - - - - - - -
Skip to content

Why Decentralized Sequencers?

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

Centralization is antithetical to crypto. And yet, today’s rollups almost universally depend on a single sequencer. Centralized sequencers provide fast transaction confirmations and reduce costs by batching and compressing transactions. However, these benefits come at the cost of relying on a single trusted actor for liveness and censorship resistance.

Sacrificing decentralization for an improved user experience is an unacceptable Faustian bargain.

Astria tackles centralization head-on, providing rollups with a decentralized sequencer and even better UX. Astria’s shared sequencer network is a middleware blockchain with its own decentralized sequencer set which accepts transactions from multiple rollups. These transactions are ordered into a single block and written to the base layer without executing them.

Shared Sequencers

- - - - \ No newline at end of file diff --git a/overview/3-cross-rollup-composability.html b/overview/3-cross-rollup-composability.html deleted file mode 100644 index 5b3591b..0000000 --- a/overview/3-cross-rollup-composability.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - Cross-Rollup Composability | Astria - - - - - - - - - - - - - - -
Skip to content

Cross-Rollup Composability

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

Because Astria handles the transaction ordering for multiple rollups, it’s able to provide guarantees that transactions are only included as part of an atomic bundle. This allows users to specify that a transaction on Rollup A can be included in a block if and only if a different transaction on Rollup B is also included in the same block. By enabling such conditional transaction inclusion, Astria unlocks exciting possibilities such as atomic cross-rollup arbitrage.

- - - - \ No newline at end of file diff --git a/overview/architecture/1-overview.html b/overview/architecture/1-overview.html deleted file mode 100644 index 7da04a8..0000000 --- a/overview/architecture/1-overview.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - Architecture Overview | Astria - - - - - - - - - - - - - - -
Skip to content

Architecture Overview

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

At a high level, Astria breaks out all of the components that are historically combined together in monolithic blockchains into individual components. This results in a modular ecosystem that allows users to swap out components to fit their specific needs.

Astria Architecture

Given this architecture, rollups can retrieve blocks from Astria immediately after they’re created, without waiting for the base layer to include them. The economic weight of Astria’s decentralized sequencer set provides confidence that this transaction order is final. This “soft commitment” allows rollups to provide their end users with fast block confirmations. Alternatively, rollups can wait for blocks to be included by the base layer, giving them the strongest finality. All transactions still get this “firm commitment” at the speed of the base layer, fast pre-confirmations are just an additional feature that Astria provides to rollups if they choose to use it.

To generate a new state root, a rollup’s full nodes retrieve a block from either Astria or the base layer, check it against Astria’s fork choice rule, filter out transactions from other rollups, and apply the resultant subset of transactions to their previous state. Headers can then be generated from this state root and gossiped to light clients. Rollups of this style are termed ‘Lazy Rollups’, a nod to the Lazy Evaluation principle found in programming language theory.

See the Astria repo here.

- - - - \ No newline at end of file diff --git a/overview/architecture/2-transaction-flow.html b/overview/architecture/2-transaction-flow.html deleted file mode 100644 index 6affd81..0000000 --- a/overview/architecture/2-transaction-flow.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - Transaction Flow | Astria - - - - - - - - - - - - - - -
Skip to content

Transaction Flow

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

The full transaction flow through the Astria stack is as follows:

Astria Transaction Flow

- - - - \ No newline at end of file diff --git a/overview/architecture/3-rollup.html b/overview/architecture/3-rollup.html deleted file mode 100644 index 918903a..0000000 --- a/overview/architecture/3-rollup.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - Rollups | Astria - - - - - - - - - - - - - - -
Skip to content

Rollups

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

Astria is designed for permissionless rollup integration and takes advantage of lazy shared sequencing. This means that rollup developers have total sovereignty over their own execution state and can swap out sequencing layers without fear of being locked in. You do not need to ask for permission or go through a governance process to gain access. A rollup simply needs to satisfy the following interfaces:

Write Interface (Rollup to Composer):

  • For transaction submissions.

Read Interface (Rollup to Conductor):

  • For receiving blocks from the shared sequencer network.

Single Rollup

The Composer and Conductor are explained in more detail in future sections.

Both composer and conductor expose gRPC interfaces. See the astria-protos repo for specific implementation details.

Astria currently deploys a fork of Geth as an EVM rollup.

- - - - \ No newline at end of file diff --git a/overview/architecture/4-composer.html b/overview/architecture/4-composer.html deleted file mode 100644 index be78a43..0000000 --- a/overview/architecture/4-composer.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - Composer | Astria - - - - - - - - - - - - - - -
Skip to content

Composer

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

The Composer is an in-house abstraction over the potential actors in Astria's MEV supply chain. It currently contains a naive implementations of the role a searcher will fulfill, with the intention of having working examples that economically incentivized third parties can use as a starting point for their own implementations. As we progress from design to implementation of Astria's proposer-builder separation it will also include an example implementation of a naive builder. The abstractions serves the goal of acting as a forcing function on our architecture design by stubbing out the roles and requiring other components to interact with them through an interface.

While a real searcher implementation would create profit-generating bundles of rollup transactions and submit them to a builder, the Composer implementation simply bundles every rollup transaction it receives into a sequencer transaction and submits it to the sequencer. As our approach to proposer-builder separation is still in its design phase, there is currently no explicit builder role in the MEV supply chain and transactions are submitted directly to validator nodes' CometBFT mempool.

Once Astria's block builder design moves to its implementation phase, the Composer will include a reference builder implementation as well. Similarly to the searcher, while a real builder implementation would run a profit-generating auction, the composer implementation will simply run a FIFO queue that will add all the sequencer transactions it receives and submits a block to the sequencer's proposer.

See the Conductor code here.

- - - - \ No newline at end of file diff --git a/overview/architecture/5-the-astria-sequencer.html b/overview/architecture/5-the-astria-sequencer.html deleted file mode 100644 index 9c3f898..0000000 --- a/overview/architecture/5-the-astria-sequencer.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - The Astria Sequencer | Astria - - - - - - - - - - - - - - -
Skip to content

The Astria Sequencer

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

The Astria Shared Sequencer is a decentralized network of nodes utilizing CometBFT that come to consensus on an ordered set of transactions (ie. it is a blockchain). The unique feature of the sequencer is that the transactions it includes are not executed (lazy sequencing), and are destined for another execution engine (ie. a rollup). This excludes “sequencer native” transactions, such as transfers of tokens within the sequencer chain. Transactions from any given rollup are only ordered on the sequencer, not executed.

The sequencer can optionally act as a “validator”, meaning it actively participates in the production and finalization of new blocks.

Astria Shared Sequencer

Components of note that are not shown in the above diagram are the Composer, Relayer, and Conductor.

These components facilitate the delivery transactions, batches, and different commits shown above, back to the users.

See the Sequencer code here.

- - - - \ No newline at end of file diff --git a/overview/architecture/6-relayer.html b/overview/architecture/6-relayer.html deleted file mode 100644 index 5c320be..0000000 --- a/overview/architecture/6-relayer.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - Relayer | Astria - - - - - - - - - - - - - - -
Skip to content

Relayer

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

The Relayer's responsibility is to take validated blocks from the sequencer and pass them along to both the Conductor and the DA layer. Because the sequencer's block times are much faster than those of the DA, the relayer also collects a queue of ordered sequencer blocks before wrapping them for submission to DA.

The individual sequencer blocks are sent immediately to the Conductor to enable fast finality for an improved UX and also act as soft commits for the execution layer. The collections of blocks sent to the DA layer are used as a source of truth and are ultimately pulled from the DA to be used as firm commits for finality in the rolllups.

See the Relayer code here.

- - - - \ No newline at end of file diff --git a/overview/architecture/7-conductor.html b/overview/architecture/7-conductor.html deleted file mode 100644 index 756d67e..0000000 --- a/overview/architecture/7-conductor.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - Conductor | Astria - - - - - - - - - - - - - - -
Skip to content

Conductor

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

Conductor's role is to drive the deterministic execution of sequencer blocks to rollups.

It abstracts away the logic required to read data from the DA and the Sequencer, tracking firm and soft commitments, block and header shapes, as well as verification of the data. The rollup implements the Execution API server, and runs the Conductor alongside to drive deterministic execution. The Conductor is effectively stateless but does ephemerally store some information about the blocks it has seen and passed on to be executed.

It filters the transactions that are relevant to the given rollup it is running along side, out of the sequencer blocks for execution. The data that it does store is for sending commitment updates to the rollup.

As mentioned in the Relayer section, any data received by the Conductor directly from the Relayer is considered a soft commit. This data is filtered using the rollup's namespace and only transactions that are relevant to the rollup are passed on as blocks for execution. These blocks are also marked as "safe" withing the rollup. The Conductor regularly polls Celestia for new data and when it sees the same blocks in Celestia that it has already seen from the Relayer, it sends a firm commit message to the rollup to update that block to "finalized."

See the Conductor code here.

- - - - \ No newline at end of file diff --git a/overview/architecture/8-data-availability-layer.html b/overview/architecture/8-data-availability-layer.html deleted file mode 100644 index fe81efc..0000000 --- a/overview/architecture/8-data-availability-layer.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - Data Availability Layer | Astria - - - - - - - - - - - - - - -
Skip to content

Data Availability Layer

TIP

To deploy your own rollup on the Astria Devnet on your local machine, check out the instructions here!

To deploy your own rollup on the Astria Devnet using Digital Ocean, check out the instructions here!

The dev-cluster uses Celestia as the data availability layer and is the ultimate destination of all data that has been ordered by the sequencer network. Once written to Celestia, the transaction order is considered final and it is where all data will be pulled from when a new rollup node is spun up.

See the Celestia website for a more in depth introduction.

- - - - \ No newline at end of file diff --git a/overview/bridging.html b/overview/bridging.html new file mode 100644 index 0000000..cd67fdc --- /dev/null +++ b/overview/bridging.html @@ -0,0 +1,25 @@ + + + + + + Bridging on Astria | Astria + + + + + + + + + + + + + + +
Skip to content

Bridging on Astria

Fee payments

With a sequencing layer, transaction data touches three different chains: the sequencer chain, the data availability chain, and the rollup chain. Each of these requires a fee payment for DoS prevention. If each chain requires a different token for fee payment, this causes a poor UX. Many rollups built on Ethereum allow for bridged ETH to be used to pay fees, alleviating UX concerns, as users only need to obtain one, widely-available token (ETH).

We can do something similar with the sequencer network. Assuming the data availability network’s token is the most easily accessible and established, we can bridge the DA token to the sequencer network to use as fee payment, and also bridge the DA token to the rollup via the usual rollup bridging (deposit derivation) method. In our case, this means bridging TIA (Celestia) to Astria via IBC, and allowing it to be used for fee payments. Then, a rollup can optionally choose to accept (IBC-)TIA as a token for fee payments as well.

Rollup bridging

To bridge tokens to a rollup built on Astria, the rollup needs to add the ability to derive deposit transactions from the sequencer or DA network. In general, rollup deposits work as follows:

on the L1, tokens are transferred to some escrow account/contract. the rollup consensus node, which derives the L2 transactions from L1 data, sees these deposits, and includes a corresponding “deposit” transaction in the next L2 block, which is a distinct transaction type. the L2 node executes these deposit transactions, minting synthetic funds on the L2 to the respective account. A rollup on Astria would have to implement something like this to bridge from the sequencer/DA to it.

Bridging back to the L1 requires proving rollup block state roots on the L1. This is the “optimistic” or “ZK” parts of the rollup. To implement bridging from a rollup on Astria back to the sequencer or DA network, we need to add functionality to verify rollup state rollups on them. On the sequencer, this would mean enshrining some sort of state root verification actor in the sequencer’s state machine, which could be instantiated by the rollup and used to bridge to the sequencer. Since we’re using Celestia as DA, which does not support any sort of programmability, the only way to bridge from the rollup to Celestia would be first through the sequencer, then back to Celestia through IBC.

IBC

IBC (inter-blockchain communication) is a standard used by Cosmos/CometBFT chains to pass messages between each other in a trust-minimized way. Since Astria uses CometBFT, it is IBC-enabled and able to bridge tokens between other IBC-enabled chains. To see more details about IBC, see the spec.

Celestia is also IBC-enabled, and we expect to bridge TIA from Celestia to Astria for fee payments.

+ + + + \ No newline at end of file diff --git a/overview/components/composer.html b/overview/components/composer.html new file mode 100644 index 0000000..5215a4c --- /dev/null +++ b/overview/components/composer.html @@ -0,0 +1,25 @@ + + + + + + The Astria Composer | Astria + + + + + + + + + + + + + + +
Skip to content

The Astria Composer

As a sequencing layer, Astria is designed to provide lazy sequencing for multiple rollups. This requires abstracting rollup-specific order flow via the sequencer network's transactions, which operate on opaque bytes that are not executed. By remaining agnostic to rollup-specific transaction formats, the sequencer network is able to provide a robust MEV supply chain for rollups built on top of it, with features like native bundle support.

While the sequencing layer provides a powerful tool for sophisticated users, supporting a wider range of users requires additional tooling. The Astria Composer is "gas station" side car that makes it easier for ordinary users to easily use rollups that support more complex order flow mechanisms.

The Composer as a UX solution

While sophisticated users, such as arbitrageurs, can leverage the sequencing layer directly to pay for better transaction ordering guarantees, most users will not require (or be interested) in this level of control. Specifically, interacting directly with the sequencing layer requires users to hold sequencer tokens and to maintain a sequencer wallet, both of which result in a poor user experience.

Instead, we provide rollup operators with tooling to abstract this complexity away using the Astria Composer. Rollup operators run the Composer as side-car software to their nodes. The Composer can be described as a "gas station", underwriting the sequencing costs for users' rollup transactions.

This allows order-agnostic users to simply pay for transaction execution in the rollup's native gas token without needing to maintain a sequencer wallet, as long as the operator keeps the Composer funded. The Composer then bundles these transactions and submits them to the sequencer network on the user's behalf.

Heterogenous order flow support

This allows Astria-based rollups to support a wide range of users, from those who want to pay for better transaction ordering to those with no explicit sequencing preferences.

Sophisticated users can submit their transactions directly to the sequencing layer, controlling the order by which their transactions are bundled and the fees they pay for bundle ordering.

In contrast, regular users are able to route their transactions through the rollup node, which will run the Composer as a sidecar to underwrite the cost of inclusion but with no control over the ordering.

Naive ordering preferences

The Composer provides users with no ordering guarantees, bundling transactions by the order they are received. Bundles are capped in size to ensure they fit in a sequencer block, and are submitted to the sequencer network in a timely manner to ensure they can be included in the next sequencer block.

+ + + + \ No newline at end of file diff --git a/overview/components/conductor.html b/overview/components/conductor.html new file mode 100644 index 0000000..ce7bc2d --- /dev/null +++ b/overview/components/conductor.html @@ -0,0 +1,25 @@ + + + + + + The Astria Conductor | Astria + + + + + + + + + + + + + + +
Skip to content

The Astria Conductor

The Conductor can be thought of as the consensus implementation of a rollup full node, similar to op-node within the OP Stack. Conductor is the counterpart to the execution engine, which together make up a full rollup node. Its role is to connect the sequencer and Data Availability layers to the rollup execution layer by extracting the transactions belonging to the rollup node from each sequencer block, and forwarding them to the execution layer.

The conductor’s flow is as follows:

  • For each sequencer block, extract the relevant rollup data it needs
  • validate the batch of rollup data; this includes verifying that the corresponding sequencer block was finalized, as well as verifying that the rollup data it extracted is complete (there are no rollup transactions missing), correct (there are no rollup transactions in the batch that shouldn’t be), and properly-ordered (the ordering of the rollup transactions matches what was finalized by the sequencer chain). It is able to do this by verifying the data against the rollup data commitment included in the sequencer block.
  • Once it has validated the rollup data, it turns it into a list of transactions, which are passed to the execution engine.

Note that the conductor, like the sequencer, is agnostic to the rollup’s transaction format and execution engine; it simply treats transactions as an arbitrary byte array.

Data verification

The conductor needs to verify the data it receives before passing it to the rollup. Specifically, it needs to verify that the data is actually what was sequenced by the sequencer in the correct order, that there is no data missing, and that there is no additional data added. The conductor wishes to do this without pulling the entire set of sequenced data or the entire sequencer block, as this is additional data it doesn’t need.

This is achieved by placing a commitment to the entire set of sequenced data in every sequencer block. This commitment is the Merkle root of a tree where each leaf is a commitment to the data for one specific rollup. This commitment is checked by every validator node on the sequencer network, thus has the majority of stake backing it. Then, the conductor can verify the rollup data received is correct by validating:

  • the commitment to the entire set of sequenced data was committed by the network, via the set of validator signatures on the block
  • the commitment to its specific rollup data is included in that, via a merkle proof of inclusion
  • the rollup data it receives corresponds to the commitment for that rollup data, via recalculating the commitment

After all of these steps are done, the conductor can be certain that the rollup data is actually what was sequenced.

There is an additional verification step needed: since the conductor doesn’t pull an entire block’s data, there needs to be consensus over what rollup IDs were sequenced in a sequencer block. It’s possible that a sequencer node doesn’t advertise that a rollup ID was included (i.e. by not posting it to the data availability layer). Then, the conductor would think that it simply had no sequenced data in a certain block when it actually did.

This is fixed by having a commitment to all the rollup IDs sequenced inside each sequencer block, which is checked and voted on by every validator. Then, the conductor receives a list of all the rollup IDs sequenced in a block and verifies that against the rollup IDs commitment to be certain as to whether a block had data for it or not.

Soft and Firm Commitments

The Conductor also retrieves the soft commitments from the sequencer, and firm commitments from the data availability layer.

The soft commitments act as fast pre-confirmations and are implicitly verified by the Conductor via a fully trusted connection to the sequencer. All data retried from the sequencer is automatically considered a soft commitment because that data can't be added to the sequencer chain unless validated by the sequencer network.

The firm commitments that are retrieved from the data availability layer are considered finalized, and are explicitly verified by the conductor before passing onto the rollup. Data that can be retrieved from the data availability layer is considered widely available and all historical syncing of data for rollups is retrieved in this way.

+ + + + \ No newline at end of file diff --git a/overview/components/data-availability-layer.html b/overview/components/data-availability-layer.html new file mode 100644 index 0000000..069f8c7 --- /dev/null +++ b/overview/components/data-availability-layer.html @@ -0,0 +1,25 @@ + + + + + + Data Availability Layer | Astria + + + + + + + + + + + + + + +
Skip to content

Data Availability Layer

Astria uses Celestia as the data availability layer and is the ultimate destination of all data that has been ordered by the sequencer network. Once written to Celestia, the transaction order is considered final and it is where all data will be pulled from when a new rollup node is spun up.

See the Celestia website for a more in depth introduction.

+ + + + \ No newline at end of file diff --git a/overview/components/relayer.html b/overview/components/relayer.html new file mode 100644 index 0000000..ec467c3 --- /dev/null +++ b/overview/components/relayer.html @@ -0,0 +1,25 @@ + + + + + + Relayer | Astria + + + + + + + + + + + + + + +
Skip to content

Relayer

The relayer's responsibility is to fetch validated blocks from the sequencer and pass them along to the DA layer. Because the sequencer's block times are much faster than those of the DA, the relayer batches the ordered data from multiple sequencer blocks before compressing it and submitting it to the DA.

The individual sequencer blocks can also be fetched by the Conductor before the relayer has submitted them to the DA. This enables fast finality for an improved UX, acting as soft commits for the execution layer. The collections of data sent to the DA layer by the relayer are used as a source of truth and are ultimately pulled from the DA to be used as firm commits for finality in the rollups.

+ + + + \ No newline at end of file diff --git a/overview/components/the-astria-sequencer.html b/overview/components/the-astria-sequencer.html new file mode 100644 index 0000000..17ef66c --- /dev/null +++ b/overview/components/the-astria-sequencer.html @@ -0,0 +1,25 @@ + + + + + + The Astria Sequencing Layer | Astria + + + + + + + + + + + + + + +
Skip to content

The Astria Sequencing Layer

The Astria Sequencing Layer is a decentralized network of nodes utilizing CometBFT that come to consensus on an ordered set of transactions (ie. it is a blockchain). The unique feature of the sequencer is that the transactions it includes are not executed (lazy sequencing), and are destined for another execution engine (ie. a rollup). This excludes “sequencer native” transactions, such as transfers of tokens within the sequencer chain. Transactions from any given rollup are only ordered on the sequencer, not executed.

The sequencer node can optionally act as a “validator”, meaning it actively participates in the production and finalization of new blocks.

Astria Shared Sequencer

Components of note that are not shown in the above diagram are the Composer, Relayer, and Conductor.

These components facilitate the delivery transactions, batches, and different commits shown above, back to the users.

+ + + + \ No newline at end of file diff --git a/overview/how-rollups-work.html b/overview/how-rollups-work.html new file mode 100644 index 0000000..370a2a1 --- /dev/null +++ b/overview/how-rollups-work.html @@ -0,0 +1,25 @@ + + + + + + How Rollups Work | Astria + + + + + + + + + + + + + + +
Skip to content

How Rollups Work

A rollup is a blockchain that consists of a state transition function executed over some subset of data contained in another blockchain, the L1. Bridging to/from the L1 (by enshrining the rollup’s state transition in the L1) is implemented by non-sovereign rollups.

Rollup full node architecture

A rollup needs to perform the following:

  • read relevant subsets of data from the L1
  • turn this data into rollup transactions
  • execute these transactions to form a rollup block

The first two points are part of “rollup consensus” while the last is “rollup execution”.

Rollup Full Node Architecture

The main component required for rollup consensus is an L1 derivation function, which derives the transactions for a rollup block deterministically from the data on the L1. This data generally looks like calldata or blob data posted to the chain and/or events emitted from a contract. This data is extracted and turned into rollup transactions.

After the set of rollup transactions for a block has been derived, they are passed to the rollup execution layer, which executes the transactions and updates the rollup state. After execution, a new rollup state root is created.

Unlike L1 nodes, rollup nodes do not necessarily need to form a p2p network and communicate with each other for consensus. The chain’s consensus is provided by the L1, and all (properly-functioning) rollup nodes will deterministically derive the same state given the same L1 state.

However, rollup nodes may still wish to form a p2p network for two reasons: fast confirmations, which can be received from the sequencer, or for rollup light nodes.

Rollup sequencers

In the above section, we discussed how a rollup derives its transactions, but how does the rollup data end up on L1?

A simple solution is to have users post their rollup transactions to the L1 directly. However, this is not ideal because there is not as much of an economic benefit (users have to pay for L1 inclusion, plus L2 execution) for them to do so. As well, users need to wait for L1 blocks to know if their transaction was included.

A more cost- and time-effective solution is to use a sequencer. Rollup sequencers are akin to block producers on L1. They have the privilege of determining ordering and inclusion for rollup blocks. The sequencer collects a set of rollup transactions, batches them, optionally compresses them, and posts them to L1. Compression has the benefit of reducing the L1 inclusion cost for each rollup transaction. Sequencers also provide “pre-confirmations” or “fast confirmations”, meaning the sequencer can provide a commitment to the user that their transaction will end up in a specific rollup block before the corresponding L1 block has actually been published.

Sequencers to date have been implemented as a centralized service, generally run by rollup teams themselves. This means there is one party responsible for rollup transaction ordering and inclusion, leading to a monopoly on MEV extraction and the potential for transaction censorship. While there is always the “escape hatch” by which users post their rollup transactions directly to the L1 for inclusion on the rollup, this is a poor UX alternative.

Decentralized sequencers

A decentralized sequencer network is an alternative to the centralized service, where multiple sequencer nodes each have the ability to propose a batch of rollup transactions.

The flow would then look like:

  • a proposer proposes some transaction batch, or commitment to some transaction batch the network reaches consensus over this batch
  • the transaction batch data is made available to rollup nodes

A simple solution is to have a permissioned set, where only batches signed by a key from the chosen set are allowed to be derived into rollup blocks. To make this permissionless, we need to allow anyone to join the sequencer node set - eg. through proof-of-stake. By putting up some stake, anyone can join the sequencer network as a consensus node, and have the privilege of proposing transaction batches.

There are a few options regarding the asset(s) used as stake on the sequencer network. The first is to create a native asset on the sequencer network to be used for staking, as well as for transaction fees. The second is to use the asset of an underlying data availability layer for staking and transaction fees.

Sequencing Layers

Rollups with a decentralized sequencing layer

Currently, sequencers are implemented for one specific rollup. Instead of this, we can have a sequencer batch transactions for many rollups. With data compression, this allows for greater cost savings when posting data to L1. A sequencer network that is decentralized and shared incentivizes actors from multiple rollup ecosystems to potentially act as validators on the sequencer network.

Current sequencer implementations generally execute the transactions that it sequences as well. By allowing the sequencer to sequence many rollups, it can either execute the transactions for each rollup it sequences for, or have it not execute any transactions at all, and remain ignorant of the rollup state machines it’s sequencing for (known as lazy sequencing).

The downside to executing the transactions for each rollup is that it’s much more difficult to add new rollups to the sequencing layer, as the sequencer needs to be forked and made aware of a new state machine. Additionally, as the state of the rollups grows, the sequencer execution time gets slower and slower (the same way state bloat affects L1s), but it’s potentially even worse over time since many states are involved.

The better solution is the second, where the sequencing layer’s function is reduced to only sequencing and not executing. In this model, the sequencing layer batches and orders generic transaction data, where the data is tagged with the rollup it’s destined for, and only after the sequencer commits to the batch is the data executed by rollup nodes.

Rollup light nodes

Rollup light nodes, like normal L1 light nodes, follow the consensus of the main chain and verify and sync its headers, without executing the full transaction data of the chain. A rollup light node needs to do a few more things to verify headers than an L1 light node.

A rollup light node needs to:

  • implement an L1 consensus light client
  • implement an L2 consensus light client
  • ensure that the transaction data for each L2 block was published

A light node of a rollup that uses a sequencing layer needs to verify the consensus of the sequencer chain, as the sequencer acts as the equivalent of the L1 - i.e. it’s where transaction inclusion and ordering is finalized. It needs to follow the headers and verify consensus of the sequencer chain. Since light nodes don’t store the blockchain state, to verify if a rollup transaction was included in some rollup block X, the light node first needs a Merkle proof that the rollup transaction was included in the transactions/data root of some sequencer chain header. Then, if it follows that rollup block X was derived from sequencer block Y (using the rollup derivation function), it knows that the transaction should be included in rollup block X. The light node also needs to check that the block data was published, which it can do via data availability sampling (for example, when using Celestia).

+ + + + \ No newline at end of file diff --git a/overview/introduction.html b/overview/introduction.html new file mode 100644 index 0000000..98dcb08 --- /dev/null +++ b/overview/introduction.html @@ -0,0 +1,25 @@ + + + + + + Introduction | Astria + + + + + + + + + + + + + + +
Skip to content

Introduction

Astria Architecture

Astria is building a decentralized sequencer network that can be shared by many rollups.

At a high level, the Astria stack performs the following functions:

  • sequences arbitrary data for usage by multiple rollups
  • makes this data available to rollup nodes
  • allows rollup nodes to easily fetch and verify sequenced data
  • batches rollup blocks and posts these batches to Celestia

The first two are mandatory, while the last is implemented more for the developer experience, allowing rollup developers to focus only on the rollup-specific application logic, as opposed to the other aspects such as rollup consensus.

The first requirement (sequencing of arbitrary data for rollups) is implemented by the Astria sequencer network, a PoS network of sequencer nodes that use CometBFT for consensus. The sequencer network comes to consensus on the ordering and inclusion of rollup transactions of the form (rollup_id, tx_bytes). The rollup_id can be any arbitrary string; it’s used only by rollup nodes to determine which data is for them. The second (making data available to rollup nodes) is achieved by publishing the sequenced data via Celestia.

The third (allowing rollup nodes to easily fetch and verify sequenced data) is achieved by the Astria “Conductor”, which works similarly to existing rollup “consensus nodes”, such as op-node within the OP Stack. The conductor obtains the sequenced data, verifies it, and derives the transactions for a specific rollup, all while remaining agnostic to the transaction format and state transition function of the rollup execution node. It then passes the derived transactions to the rollup execution node for processing.

The Astria sequencer network is a lazy sequencer. This means that data is sequenced and committed, but execution is delayed until necessary, and is left to the rollup. This de-couples the execution logic from the consensus logic, removing consensus bottlenecks and allowing for more flexibility for rollup developers. For example, since the data is executed lazily, a rollup may choose to have 2 rollup blocks per Astria block, or 1 rollup block per Astria block. The rollup’s consensus and execution logic is not enshrined in the sequencer.

What should I read?

Want to learn more about about rollups or the sequencer? Check out the How Rollups Work or The Astria Sequencer Network.

If you're a rollup developer eager to get started, you should go straight to our astria-go cli tutorials.

For more advanced development, you can read about deploying a rollup full using a local Kubernetes cluster here.

You can find our endpoints and FAQ here

What If I Need More Help?

While this documentation hopefully includes everything you need, if you can't find what you're looking for, please reach out to us on Twitter or check the Astria repository.

+ + + + \ No newline at end of file diff --git a/overview/the-astria-sequencer-network.html b/overview/the-astria-sequencer-network.html new file mode 100644 index 0000000..fca6c35 --- /dev/null +++ b/overview/the-astria-sequencer-network.html @@ -0,0 +1,25 @@ + + + + + + The Astria Sequencer Network | Astria + + + + + + + + + + + + + + +
Skip to content

The Astria Sequencer Network

The Astria sequencer network uses CometBFT (formerly Tendermint) as its consensus algorithm. At a minimum, the sequencer network needs to implement a decentralized leader selection algorithm which rotates between proposers. Ideally, it is also able to provide single-slot (“fast”) finality, which prevents forks from occurring, allowing for simplified chain derivation logic on the rollups which use it. CometBFT is able to provide both of these. Additionally, CometBFT is battle-tested and has been used in production, on many chains, for years. It allows blockchain applications (application, in this case, meaning the chain’s execution logic) which implement ABCI (Application Blockchain Interface) to easily use it as their consensus layer. Additionally, CometBFT-enabled chains have the ability to support IBC (inter-blockchain communication), meaning they have the potential to bridge between many other chains.

Astria sequencer’s execution logic is implemented as a CometBFT application, written in Rust. The application logic allows for three main functions:

  • sequencing of rollup data
  • value transfers
  • validator set changes

During the consensus phase of the sequencer network, the proposer decides on the transactions for the block and creates a commitment to the rollup data for each rollup_id. This is then verified and only finalized if agreed upon by the majority of other nodes. This allows for rollups to only pull the data necessary for their rollup, checking that the commitment to it matches what was finalized by the sequencer chain, without needing to pull the entire sequencer block’s data.

The sequencer network also needs to make its block data available to rollup nodes. During the consensus process, the block data needs to be made available to all validators, so that they can verify and vote on the rollup data commitments (ie. they need to ensure the commitments match the block data). After the consensus process, the data is made more widely available via a data availability layer. Celestia is used for DA, as it supports data availability sampling via light nodes, meaning a light node is able to check if data was made available.

+ + + + \ No newline at end of file diff --git a/overview/transaction-flow.html b/overview/transaction-flow.html new file mode 100644 index 0000000..5eed99f --- /dev/null +++ b/overview/transaction-flow.html @@ -0,0 +1,25 @@ + + + + + + Transaction Flow | Astria + + + + + + + + + + + + + + +
Skip to content

Transaction Flow

The full transaction flow through the Astria stack is as follows:

Astria Transaction Flow

+ + + + \ No newline at end of file