diff --git a/404.html b/404.html index 1e5ac4bd4..a11ca1e30 100644 --- a/404.html +++ b/404.html @@ -5,8 +5,8 @@ Page Not Found | Dappnode - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

diff --git a/assets/images/lido-csm-brain-import-931b025593e1e791ae472dce17b4a2f6.png b/assets/images/lido-csm-brain-import-931b025593e1e791ae472dce17b4a2f6.png new file mode 100644 index 000000000..d5cb23639 Binary files /dev/null and b/assets/images/lido-csm-brain-import-931b025593e1e791ae472dce17b4a2f6.png differ diff --git a/assets/images/lido-csm-ensure-notifications-24da5f8905ac0e8f88c02b3aa2ccc18e.png b/assets/images/lido-csm-ensure-notifications-24da5f8905ac0e8f88c02b3aa2ccc18e.png new file mode 100644 index 000000000..a0741de01 Binary files /dev/null and b/assets/images/lido-csm-ensure-notifications-24da5f8905ac0e8f88c02b3aa2ccc18e.png differ diff --git a/assets/images/lido-csm-log-in-already-NO-73d10878dc29bca9157afc26ca1bb611.png b/assets/images/lido-csm-log-in-already-NO-73d10878dc29bca9157afc26ca1bb611.png new file mode 100644 index 000000000..e88ed80eb Binary files /dev/null and b/assets/images/lido-csm-log-in-already-NO-73d10878dc29bca9157afc26ca1bb611.png differ diff --git a/assets/images/lido-csm-notifications-modal-90a669424cf7b7048bd3ce55a2417279.png b/assets/images/lido-csm-notifications-modal-90a669424cf7b7048bd3ce55a2417279.png new file mode 100644 index 000000000..8a5d169fc Binary files /dev/null and b/assets/images/lido-csm-notifications-modal-90a669424cf7b7048bd3ce55a2417279.png differ diff --git a/assets/images/lido-csm-setup-notifications-6b2635b85b84d6d5def3534b1d8552e3.png b/assets/images/lido-csm-setup-notifications-6b2635b85b84d6d5def3534b1d8552e3.png new file mode 100644 index 000000000..2f154a5f5 Binary files /dev/null and b/assets/images/lido-csm-setup-notifications-6b2635b85b84d6d5def3534b1d8552e3.png differ diff --git a/assets/images/lido-csm-wallet-connected-113b5e31772ef307fb762443fa5cac15.png b/assets/images/lido-csm-wallet-connected-113b5e31772ef307fb762443fa5cac15.png new file mode 100644 index 000000000..5d212b009 Binary files /dev/null and b/assets/images/lido-csm-wallet-connected-113b5e31772ef307fb762443fa5cac15.png differ diff --git a/assets/images/lido-infra-a00927b2b6ee742595c755da57c36fc8.png b/assets/images/lido-infra-a00927b2b6ee742595c755da57c36fc8.png new file mode 100644 index 000000000..57bec0c15 Binary files /dev/null and b/assets/images/lido-infra-a00927b2b6ee742595c755da57c36fc8.png differ diff --git a/assets/images/lido-keystore-not-imported-ba70b9757a3c033322075d7fa85858f0.png b/assets/images/lido-keystore-not-imported-ba70b9757a3c033322075d7fa85858f0.png new file mode 100644 index 000000000..354c5cd37 Binary files /dev/null and b/assets/images/lido-keystore-not-imported-ba70b9757a3c033322075d7fa85858f0.png differ diff --git a/assets/images/lido-notification-ejector-e74dca0b48d81e4b543f11a305324477.png b/assets/images/lido-notification-ejector-e74dca0b48d81e4b543f11a305324477.png new file mode 100644 index 000000000..9e89836c4 Binary files /dev/null and b/assets/images/lido-notification-ejector-e74dca0b48d81e4b543f11a305324477.png differ diff --git a/assets/images/lido-notifications-onboarding-3d96ec618e91c274e34e062cd9f639e1.png b/assets/images/lido-notifications-onboarding-3d96ec618e91c274e34e062cd9f639e1.png new file mode 100644 index 000000000..ef4b7de1d Binary files /dev/null and b/assets/images/lido-notifications-onboarding-3d96ec618e91c274e34e062cd9f639e1.png differ diff --git a/assets/js/14c20d3a.a7616fe6.js b/assets/js/14c20d3a.a7616fe6.js deleted file mode 100644 index 274bc5b61..000000000 --- a/assets/js/14c20d3a.a7616fe6.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkd_app_node_docs=self.webpackChunkd_app_node_docs||[]).push([[903],{8377:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var s=n(5893),o=n(1151);const i={},r="Holesky Testnet",a={id:"user/staking/ethereum/solo/holesky",title:"Holesky Testnet",description:"The Holesky testnet is a testnet for the Ethereum ecosystem, serving as a sandbox for users and developers alike.",source:"@site/docs/user/staking/ethereum/solo/holesky.md",sourceDirName:"user/staking/ethereum/solo",slug:"/user/staking/ethereum/solo/holesky",permalink:"/docs/user/staking/ethereum/solo/holesky",draft:!1,unlisted:!1,editUrl:"https://github.com/dappnode/DappnodeDocs/edit/master/docs/user/staking/ethereum/solo/holesky.md",tags:[],version:"current",frontMatter:{},sidebar:"userSidebar",previous:{title:"Ethereum mainnet",permalink:"/docs/user/staking/ethereum/solo/mainnet"},next:{title:"Lido Community Staking Module (CSM)",permalink:"/docs/user/staking/ethereum/lsd-pools/lido"}},l={},d=[{value:"Navigating to Holesky in Dappnode",id:"navigating-to-holesky-in-dappnode",level:2},{value:"Why Run a Holesky Testnet Node?",id:"why-run-a-holesky-testnet-node",level:2},{value:"Holesky Faucet",id:"holesky-faucet",level:2}];function h(e){const t={a:"a",admonition:"admonition",h1:"h1",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"holesky-testnet",children:"Holesky Testnet"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"Holesky testnet"})," is a testnet for the Ethereum ecosystem, serving as a sandbox for users and developers alike."]}),"\n",(0,s.jsx)(t.p,{children:"Dappnode paves an easy pathway for enthusiasts to operate a node on the Holesky testnet, ensuring practical experience without the risks associated with the mainnet."}),"\n",(0,s.jsx)(t.h2,{id:"navigating-to-holesky-in-dappnode",children:"Navigating to Holesky in Dappnode"}),"\n",(0,s.jsxs)(t.p,{children:["You can locate the Holesky testnet under the ",(0,s.jsxs)(t.a,{href:"http://my.dappnode/stakers/holesky",children:[(0,s.jsx)(t.strong,{children:"Holesky"})," tab"]})," in the ",(0,s.jsx)(t.strong,{children:"Stakers Menu"}),". If you want to run Holesky testnet validators, you'll also need to select Web3Signer Holesky."]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Holesky - Stakers Menu",src:n(7849).Z+"",width:"2554",height:"1302"})}),"\n",(0,s.jsx)(t.h2,{id:"why-run-a-holesky-testnet-node",children:"Why Run a Holesky Testnet Node?"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Hands-on Experience"}),": Running a validator on the Holesky testnet offers invaluable practical knowledge. It mimics the mainnet processes, providing a comprehensive understanding of node operation."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Risk-free Exploration"}),": As it's a testnet, you're not staking real ETH. This provides an opportunity for experimentation without the financial stakes of the main Ethereum network."]}),"\n"]}),"\n",(0,s.jsx)(t.admonition,{type:"tip",children:(0,s.jsx)(t.p,{children:"If you're new to Ethereum or wish to familiarize yourself with node operation intricacies, starting with the Holesky testnet is highly recommended. It's the perfect platform for hands-on learning in a risk-free environment."})}),"\n",(0,s.jsx)(t.h2,{id:"holesky-faucet",children:"Holesky Faucet"}),"\n",(0,s.jsxs)(t.p,{children:["If you're interested in getting 32 HolETH for running a test validator, you can get it in the ",(0,s.jsx)(t.a,{href:"https://holesky-faucet.pk910.de/",children:"Holesky PoW Faucet"}),". Make sure you understand how the faucet works before doing your request, as it will temporarily impact your computer's performance in the claiming process."]})]})}function c(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},7849:(e,t,n)=>{n.d(t,{Z:()=>s});const s=n.p+"assets/images/holesky-stakers-9a7c0d4739b3ee492f436d006562126e.png"},1151:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>r});var s=n(7294);const o={},i=s.createContext(o);function r(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/14c20d3a.f8ccaef2.js b/assets/js/14c20d3a.f8ccaef2.js new file mode 100644 index 000000000..62b95e19e --- /dev/null +++ b/assets/js/14c20d3a.f8ccaef2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkd_app_node_docs=self.webpackChunkd_app_node_docs||[]).push([[903],{8377:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>l,contentTitle:()=>r,default:()=>c,frontMatter:()=>i,metadata:()=>a,toc:()=>d});var s=n(5893),o=n(1151);const i={},r="Holesky Testnet",a={id:"user/staking/ethereum/solo/holesky",title:"Holesky Testnet",description:"The Holesky testnet is a testnet for the Ethereum ecosystem, serving as a sandbox for users and developers alike.",source:"@site/docs/user/staking/ethereum/solo/holesky.md",sourceDirName:"user/staking/ethereum/solo",slug:"/user/staking/ethereum/solo/holesky",permalink:"/docs/user/staking/ethereum/solo/holesky",draft:!1,unlisted:!1,editUrl:"https://github.com/dappnode/DappnodeDocs/edit/master/docs/user/staking/ethereum/solo/holesky.md",tags:[],version:"current",frontMatter:{},sidebar:"userSidebar",previous:{title:"Ethereum mainnet",permalink:"/docs/user/staking/ethereum/solo/mainnet"},next:{title:"Lido Community Staking Module (CSM)",permalink:"/docs/user/staking/ethereum/lsd-pools/lido/overview"}},l={},d=[{value:"Navigating to Holesky in Dappnode",id:"navigating-to-holesky-in-dappnode",level:2},{value:"Why Run a Holesky Testnet Node?",id:"why-run-a-holesky-testnet-node",level:2},{value:"Holesky Faucet",id:"holesky-faucet",level:2}];function h(e){const t={a:"a",admonition:"admonition",h1:"h1",h2:"h2",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",...(0,o.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"holesky-testnet",children:"Holesky Testnet"}),"\n",(0,s.jsxs)(t.p,{children:["The ",(0,s.jsx)(t.strong,{children:"Holesky testnet"})," is a testnet for the Ethereum ecosystem, serving as a sandbox for users and developers alike."]}),"\n",(0,s.jsx)(t.p,{children:"Dappnode paves an easy pathway for enthusiasts to operate a node on the Holesky testnet, ensuring practical experience without the risks associated with the mainnet."}),"\n",(0,s.jsx)(t.h2,{id:"navigating-to-holesky-in-dappnode",children:"Navigating to Holesky in Dappnode"}),"\n",(0,s.jsxs)(t.p,{children:["You can locate the Holesky testnet under the ",(0,s.jsxs)(t.a,{href:"http://my.dappnode/stakers/holesky",children:[(0,s.jsx)(t.strong,{children:"Holesky"})," tab"]})," in the ",(0,s.jsx)(t.strong,{children:"Stakers Menu"}),". If you want to run Holesky testnet validators, you'll also need to select Web3Signer Holesky."]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Holesky - Stakers Menu",src:n(7849).Z+"",width:"2554",height:"1302"})}),"\n",(0,s.jsx)(t.h2,{id:"why-run-a-holesky-testnet-node",children:"Why Run a Holesky Testnet Node?"}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Hands-on Experience"}),": Running a validator on the Holesky testnet offers invaluable practical knowledge. It mimics the mainnet processes, providing a comprehensive understanding of node operation."]}),"\n",(0,s.jsxs)(t.li,{children:[(0,s.jsx)(t.strong,{children:"Risk-free Exploration"}),": As it's a testnet, you're not staking real ETH. This provides an opportunity for experimentation without the financial stakes of the main Ethereum network."]}),"\n"]}),"\n",(0,s.jsx)(t.admonition,{type:"tip",children:(0,s.jsx)(t.p,{children:"If you're new to Ethereum or wish to familiarize yourself with node operation intricacies, starting with the Holesky testnet is highly recommended. It's the perfect platform for hands-on learning in a risk-free environment."})}),"\n",(0,s.jsx)(t.h2,{id:"holesky-faucet",children:"Holesky Faucet"}),"\n",(0,s.jsxs)(t.p,{children:["If you're interested in getting 32 HolETH for running a test validator, you can get it in the ",(0,s.jsx)(t.a,{href:"https://holesky-faucet.pk910.de/",children:"Holesky PoW Faucet"}),". Make sure you understand how the faucet works before doing your request, as it will temporarily impact your computer's performance in the claiming process."]})]})}function c(e={}){const{wrapper:t}={...(0,o.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},7849:(e,t,n)=>{n.d(t,{Z:()=>s});const s=n.p+"assets/images/holesky-stakers-9a7c0d4739b3ee492f436d006562126e.png"},1151:(e,t,n)=>{n.d(t,{Z:()=>a,a:()=>r});var s=n(7294);const o={},i=s.createContext(o);function r(e){const t=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),s.createElement(i.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/342f5eb1.4afe5915.js b/assets/js/342f5eb1.4afe5915.js new file mode 100644 index 000000000..24bda741f --- /dev/null +++ b/assets/js/342f5eb1.4afe5915.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkd_app_node_docs=self.webpackChunkd_app_node_docs||[]).push([[4350],{2808:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>h,frontMatter:()=>r,metadata:()=>a,toc:()=>d});var i=o(5893),n=o(1151);const r={},s="Lido Community Staking Module (CSM)",a={id:"user/staking/ethereum/lsd-pools/lido/overview",title:"Lido Community Staking Module (CSM)",description:"---",source:"@site/docs/user/staking/ethereum/lsd-pools/lido/overview.md",sourceDirName:"user/staking/ethereum/lsd-pools/lido",slug:"/user/staking/ethereum/lsd-pools/lido/overview",permalink:"/docs/user/staking/ethereum/lsd-pools/lido/overview",draft:!1,unlisted:!1,editUrl:"https://github.com/dappnode/DappnodeDocs/edit/master/docs/user/staking/ethereum/lsd-pools/lido/overview.md",tags:[],version:"current",frontMatter:{},sidebar:"userSidebar",previous:{title:"Holesky Testnet",permalink:"/docs/user/staking/ethereum/solo/holesky"},next:{title:"**Become a Lido Node Operator with Dappnode**",permalink:"/docs/user/staking/ethereum/lsd-pools/lido/register"}},l={},d=[{value:"Lido CSM Overview",id:"lido-csm-overview",level:2},{value:"Lido CSM in dappnode",id:"lido-csm-in-dappnode",level:2},{value:"Telegram Notifications",id:"telegram-notifications",level:3},{value:"Ejector",id:"ejector",level:3},{value:"Track multiple Node Operators",id:"track-multiple-node-operators",level:3},{value:"Import keystores directly from the Lido CSM",id:"import-keystores-directly-from-the-lido-csm",level:3},{value:"Infraestructure monitoring",id:"infraestructure-monitoring",level:3},{value:"Performance",id:"performance",level:3},{value:"MEV boost relays",id:"mev-boost-relays",level:3},{value:"Testnet",id:"testnet",level:2}];function c(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,n.a)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(t.h1,{id:"lido-community-staking-module-csm",children:"Lido Community Staking Module (CSM)"}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsx)(t.h2,{id:"lido-csm-overview",children:(0,i.jsx)(t.strong,{children:"Lido CSM Overview"})}),"\n",(0,i.jsxs)(t.p,{children:["Lido is a ",(0,i.jsx)(t.strong,{children:"liquid staking"})," solution for Ethereum that addresses the liquidity issues of traditional staking. Instead of locking up assets and losing access to them, users can stake through Lido and receive liquid tokens. These tokens retain the value of the staked assets and can be used elsewhere while still earning staking rewards."]}),"\n",(0,i.jsxs)(t.p,{children:["Lido, with over ",(0,i.jsx)(t.a,{href:"https://lido.fi/ethereum",children:"9,8 million ETH"})," staked on its platform, is a significant contributor in the Ethereum ecosystem. To broaden and diversify its network of node operators, Lido recently introduced the ",(0,i.jsxs)(t.a,{href:"https://csm.lido.fi/?ref=dappnode",children:[(0,i.jsx)(t.strong,{children:"Community Staking Module"})," (CSM)"]}),", the first Lido module with a ",(0,i.jsx)(t.strong,{children:"permissionless entry"})," for Ethereum staking. By first providing an ETH-based bond, anyone can now become a node operator by running validators in the Lido protocol. Designed with solo stakers in mind, the CSM lowers the barrier to becoming an Ethereum validator with 2.4 ETH, requiring far less than the standard 32 ETH, and offers a user-friendly experience. While tailored for smaller stakers, it is open to all, including professional operators."]}),"\n",(0,i.jsx)(t.admonition,{type:"info",children:(0,i.jsxs)(t.p,{children:["Becoming a Lido Node Operator is recommended for users with some experience in running validators. The process requires a basic understanding of the Ethereum network and the Lido protocol. If you are new to staking, we recommend setting up a validator on the Testnet first to familiarize yourself with the process, see ",(0,i.jsx)(t.a,{href:"/docs/user/staking/ethereum/solo/holesky",children:"Staking on the Ethereum Testnet"}),"."]})}),"\n",(0,i.jsx)(t.h2,{id:"lido-csm-in-dappnode",children:(0,i.jsx)(t.strong,{children:"Lido CSM in dappnode"})}),"\n",(0,i.jsx)(t.p,{children:"Dappnode provides an easy-to-use and intuitive interface for most of the infrastructure needed to become a Lido Node Operator. The process is straightforward and requires only a few steps to set up a node operator and start earning rewards."}),"\n",(0,i.jsx)(t.p,{children:"Steps to become Node Operator"}),"\n",(0,i.jsxs)(t.ol,{children:["\n",(0,i.jsxs)(t.li,{children:["Go to Dappnode platform ",(0,i.jsx)(t.a,{href:"https://my.dappnode/",children:"https://my.dappnode/"})]}),"\n",(0,i.jsx)(t.li,{children:"Go to Dappstore tab in the left menu"}),"\n",(0,i.jsx)(t.li,{children:"Search and install Lido CSM package"}),"\n",(0,i.jsx)(t.li,{children:"Once it is installed, go to packages tab and click on the name of the Lido CSM package and find the section Ui below the version title."}),"\n",(0,i.jsx)(t.li,{children:"You will be in the Lido interface, connect your wallet and start the staking process."}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"Dappnode takes care of the Lido protocol requirements, such as exiting validator when needed, and provides a user-friendly interface to manage the node operator."}),"\n",(0,i.jsx)(t.p,{children:"The main functionalities covered by Dappnode in the Lido CSM package are:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Telegram Notifications"}),": you can setup notifications for your Node Operator to be informed about any event. You need to configure the user ID and Telegram token to received your notifications."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Ejector"}),": whenever any of your validator requires to be exited, it will be done automatically sending you the corresponding notification."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Track multiple Node Operators"}),": you can track multiple Node Operators from the same DAppNodePackage-lido-csm."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Performance"}),": your validators attestations performance will be tracked and you will be notified if they are not performing as expected according to the Lido tresholds."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"MEV boost relays"}),": you will receive notifications whenever your validators are using relays blocklisted in the Lido CSM or not using any relay at all."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Import keystores directly from the Lido CSM"}),": you can import your keystores directly from the Lido CSM to your DAppNodePackage-lido-csm and they will be automatically tagged as Lido."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Infraestructure monitoring"}),": you will be able to visualize the status of your infraestructure (EC - CC - Signer - MEV Boost)."]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"telegram-notifications",children:(0,i.jsx)(t.strong,{children:"Telegram Notifications"})}),"\n",(0,i.jsxs)(t.p,{children:["You will be able to setup your notifications either during the onboarding process if you are registering as a new Node Operator and from the UI navigating to ",(0,i.jsx)(t.code,{children:"/notifications"}),". You must provide:"]}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Bot token: this is the secret token from a bot that you must create. You can get it from the Telegram BotFather. See the ",(0,i.jsx)(t.a,{href:"https://core.telegram.org/bots/tutorial#obtain-your-bot-token",children:"obtain your bot token"})," section."]}),"\n",(0,i.jsxs)(t.li,{children:["User ID: this is your Telegram user ID. You can get it from the ",(0,i.jsx)(t.a,{href:"https://t.me/userinfobot",children:"userinfobot"})," typing ",(0,i.jsx)(t.code,{children:"/start"}),"."]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:"Once your notifications are setup, you will receive notificatios for the following events:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:["Lido Smart Contract events:","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://docs.lido.fi/staking-modules/csm/guides/events/#contract-vebo",children:"Lido VEVO events"}),": the most important event to remark is the validator exit request event, that will trigger the Ejector to exit the validator."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://docs.lido.fi/staking-modules/csm/guides/events/#contract-csm",children:"Lido CSM events"}),": check the Lido documentation for more details."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.a,{href:"https://docs.lido.fi/staking-modules/csm/guides/events/#contract-csfeedistributor",children:"Lido CSFeeDistributor"}),": check the Lido documentation for more details."]}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["Validator exit:","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Successful exit: you will receive a notification when the validator has been successfully exited."}),"\n",(0,i.jsx)(t.li,{children:"Failed exit: you will receive a notification when the validator exit has failed, letting you know that a manual exit is required."}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["Relays (comming soon):","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Blocklisted relay: you will receive a notification when your validator is using a blocklisted relay."}),"\n",(0,i.jsx)(t.li,{children:"No relay: you will receive a notification when your validator is not using any relay."}),"\n"]}),"\n"]}),"\n",(0,i.jsxs)(t.li,{children:["Performance (comming soon):","\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:"Attestations performance: you will receive a notification when your validator is not performing as expected according to the Lido tresholds."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,i.jsx)(t.h3,{id:"ejector",children:(0,i.jsx)(t.strong,{children:"Ejector"})}),"\n",(0,i.jsx)(t.p,{children:"The Ejector is a service that will automatically exit your validator when needed. You will receive a notification when the validator has been successfully exited and when the exit has failed, letting you know that a manual exit is required. The ejector has the following characteristics:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Automatic exit"}),": the Ejector will automatically exit your validator when needed."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Ejector Notifications"}),": you will receive a notification when the validator has been successfully exited and when the exit has failed, letting you know that a manual exit is required."]}),"\n",(0,i.jsxs)(t.li,{children:[(0,i.jsx)(t.strong,{children:"Retry mechanism"}),": the Ejector will retry the exit process if it fails, ensuring that the validator is exited successfully."]}),"\n"]}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"lido-notification-ejector",src:o(6145).Z+"",width:"531",height:"111"})}),"\n",(0,i.jsx)(t.h3,{id:"track-multiple-node-operators",children:(0,i.jsx)(t.strong,{children:"Track multiple Node Operators"})}),"\n",(0,i.jsx)(t.p,{children:"The DAppNodePackage-lido-csm allows you to track multiple Node Operators from the same package. This feature is useful if you are managing multiple Node Operators and want to keep track of their performance and status in one place. To make the package to track a new Node Operator, you must sign in with the new Node Operator's wallet and import the keystores."}),"\n",(0,i.jsx)(t.admonition,{type:"warning",children:(0,i.jsx)(t.p,{children:"Make sure to import the correct keystores for each Node Operator. Importing the wrong keystores can result in penalties."})}),"\n",(0,i.jsx)(t.h3,{id:"import-keystores-directly-from-the-lido-csm",children:(0,i.jsx)(t.strong,{children:"Import keystores directly from the Lido CSM"})}),"\n",(0,i.jsxs)(t.p,{children:["You can import your keystores directly from the DAppNodePackage-lido-csm UI during the onboarding process or from the ",(0,i.jsx)(t.code,{children:"/keystores"})," section (comming soon). The keystores will be automatically tagged as Lido, and you will be able to use them to run validators in the Lido protocol. These keystores will be located in the web3signer package, for further editing or deleting them you must go to the web3signer UI."]}),"\n",(0,i.jsx)(t.p,{children:"Whenever there are 1 or more keystores that belongs to your Node Operator and are not imported you will be able to see the following message in the DAppNodePackage-lido-csm UI:"}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"lido-keystore-not-imported",src:o(3130).Z+"",width:"1901",height:"648"})}),"\n",(0,i.jsx)(t.h3,{id:"infraestructure-monitoring",children:(0,i.jsx)(t.strong,{children:"Infraestructure monitoring"})}),"\n",(0,i.jsx)(t.p,{children:"You will be able to visualize the status of your infraestructure (EC - CC - Signer - MEV Boost) from the DAppNodePackage-lido-csm UI. This feature is useful to monitor the status of your infraestructure and ensure that everything is running smoothly."}),"\n",(0,i.jsx)(t.p,{children:(0,i.jsx)(t.img,{alt:"lido-infra",src:o(8184).Z+"",width:"1901",height:"516"})}),"\n",(0,i.jsx)(t.h3,{id:"performance",children:(0,i.jsx)(t.strong,{children:"Performance"})}),"\n",(0,i.jsx)(t.p,{children:"\ud83d\ude80 Cooming soon"}),"\n",(0,i.jsx)(t.h3,{id:"mev-boost-relays",children:(0,i.jsx)(t.strong,{children:"MEV boost relays"})}),"\n",(0,i.jsx)(t.p,{children:"\ud83d\ude80 Cooming soon"}),"\n",(0,i.jsx)(t.h2,{id:"testnet",children:"Testnet"}),"\n",(0,i.jsxs)(t.p,{children:["The Lido Community Staking Module is available on the Ethereum Mainnet. If you are new to staking, we recommend setting up a validator on the Testnet first to familiarize yourself with the process. The process is the same, the dappnode package for Lido CSM in testnet is ",(0,i.jsx)(t.strong,{children:"lido-csm-holesky.dnp.dappnode.eth"}),"."]}),"\n",(0,i.jsx)(t.hr,{}),"\n",(0,i.jsx)(t.p,{children:"Refer to the Lido Community Staking Module documentation for more details:"}),"\n",(0,i.jsxs)(t.ul,{children:["\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://blog.lido.fi/lido-community-staking-an-overview/",children:"Lido Community Staking Overview"})}),"\n",(0,i.jsx)(t.li,{children:(0,i.jsx)(t.a,{href:"https://operatorportal.lido.fi/modules/community-staking-module",children:"Lido Community Staking Module"})}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,i.jsx)(t,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},8184:(e,t,o)=>{o.d(t,{Z:()=>i});const i=o.p+"assets/images/lido-infra-a00927b2b6ee742595c755da57c36fc8.png"},3130:(e,t,o)=>{o.d(t,{Z:()=>i});const i=o.p+"assets/images/lido-keystore-not-imported-ba70b9757a3c033322075d7fa85858f0.png"},6145:(e,t,o)=>{o.d(t,{Z:()=>i});const i=o.p+"assets/images/lido-notification-ejector-e74dca0b48d81e4b543f11a305324477.png"},1151:(e,t,o)=>{o.d(t,{Z:()=>a,a:()=>s});var i=o(7294);const n={},r=i.createContext(n);function s(e){const t=i.useContext(r);return i.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:s(e.components),i.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/51a190f1.cc7ad2a2.js b/assets/js/51a190f1.cc7ad2a2.js new file mode 100644 index 000000000..424e9f41d --- /dev/null +++ b/assets/js/51a190f1.cc7ad2a2.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkd_app_node_docs=self.webpackChunkd_app_node_docs||[]).push([[8636],{2243:(e,n,i)=>{i.r(n),i.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>s,metadata:()=>a,toc:()=>d});var t=i(5893),o=i(1151);const s={},r="Already a node operator",a={id:"user/staking/ethereum/lsd-pools/lido/already-node-operator",title:"Already a node operator",description:"This document provides detailed instructions for existing Node Operators on integrating their setup with the Lido Community Staking Module (CSM) via Dappnode. By following these steps, you can efficiently manage your validators and ensure proper functionality within the Lido protocol.",source:"@site/docs/user/staking/ethereum/lsd-pools/lido/already-node-operator.md",sourceDirName:"user/staking/ethereum/lsd-pools/lido",slug:"/user/staking/ethereum/lsd-pools/lido/already-node-operator",permalink:"/docs/user/staking/ethereum/lsd-pools/lido/already-node-operator",draft:!1,unlisted:!1,editUrl:"https://github.com/dappnode/DappnodeDocs/edit/master/docs/user/staking/ethereum/lsd-pools/lido/already-node-operator.md",tags:[],version:"current",frontMatter:{},sidebar:"userSidebar",previous:{title:"**Become a Lido Node Operator with Dappnode**",permalink:"/docs/user/staking/ethereum/lsd-pools/lido/register"},next:{title:"Rocketpool",permalink:"/docs/user/staking/ethereum/lsd-pools/rocketpool"}},l={},d=[{value:"1. Importing Keystores into the Brain UI",id:"1-importing-keystores-into-the-brain-ui",level:2},{value:"Steps to Import Keystores",id:"steps-to-import-keystores",level:3},{value:"2. Opening the Lido CSM UI and Wallet Connection",id:"2-opening-the-lido-csm-ui-and-wallet-connection",level:2},{value:"3. Configuring Telegram Notifications",id:"3-configuring-telegram-notifications",level:2},{value:"4. Monitoring Infrastructure",id:"4-monitoring-infrastructure",level:2}];function c(e){const n={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",h3:"h3",img:"img",li:"li",mdxAdmonitionTitle:"mdxAdmonitionTitle",ol:"ol",p:"p",ul:"ul",...(0,o.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"already-a-node-operator",children:"Already a node operator"}),"\n",(0,t.jsx)(n.p,{children:"This document provides detailed instructions for existing Node Operators on integrating their setup with the Lido Community Staking Module (CSM) via Dappnode. By following these steps, you can efficiently manage your validators and ensure proper functionality within the Lido protocol."}),"\n",(0,t.jsx)(n.h2,{id:"1-importing-keystores-into-the-brain-ui",children:"1. Importing Keystores into the Brain UI"}),"\n",(0,t.jsx)(n.p,{children:"Keystore files contain critical information for managing your validators. When you becamo a Node Operator you lido deposists the necessary amount of ETH to the validator to start staking. These keys files must be imported into the Staking Brain (Brain UI) with the appropriate configuration for the Lido protocol."}),"\n",(0,t.jsx)(n.h3,{id:"steps-to-import-keystores",children:"Steps to Import Keystores"}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Ensure your keys are not already uploaded in any node."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Access the ",(0,t.jsx)(n.code,{children:"/import"})," tab in Brain UI:"]}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Mainnet ",(0,t.jsx)(n.a,{href:"http://brain.web3signer.dappnode/import",children:"Staking Brain"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Holesky ",(0,t.jsx)(n.a,{href:"http://brain.web3signer-holesky.dappnode/import",children:"Staking Brain"})]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Select the \u201cLido\u201d Tag:\nWhile uploading your keystore files, make sure to tag them with \u201cLido\u201d to designate automatically the required fee recipient from the Lido protocol:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Mainnet: ",(0,t.jsx)(n.code,{children:"0x388C818CA8B9251b393131C08a736A67ccB19297"})]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Holesky: ",(0,t.jsx)(n.code,{children:"0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.admonition,{type:"danger",children:(0,t.jsx)(n.p,{children:"Do not edit the fee recipient address. Doing so will result in penalties."})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Provide the password"}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Import keystores to Staking Brain",src:i(5063).Z+"",width:"1919",height:"956"})}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.admonition,{type:"tip",children:[(0,t.jsx)(n.mdxAdmonitionTitle,{}),(0,t.jsxs)(n.p,{children:["For keys that have not yet been uploaded to the Lido protocol, you can import them to the Staking Brain through the Lido CSM UI while simultaneously submitting them to the Lido protocol via the ",(0,t.jsx)(n.code,{children:"/keys/submit"})," path."]})]}),"\n",(0,t.jsx)(n.h2,{id:"2-opening-the-lido-csm-ui-and-wallet-connection",children:"2. Opening the Lido CSM UI and Wallet Connection"}),"\n",(0,t.jsx)(n.p,{children:"The Lido CSM UI serves as the central interface for managing validator keys and monitoring validator and infrastucture status. Before proceeding with any validator operations, ensure your wallet is connected."}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsx)(n.li,{children:"Access the Lido CSM UI:"}),"\n"]}),"\n",(0,t.jsxs)(n.p,{children:["Navigate to the Lido CSM package UI. - ",(0,t.jsx)(n.a,{href:"http://ui.lido-csm-mainnet.dappnode/",children:"Mainnet UI"})," - ",(0,t.jsx)(n.a,{href:"http://ui.lido-csm-holesky.dappnode/",children:"Holesky UI"})]}),"\n",(0,t.jsxs)(n.ol,{start:"2",children:["\n",(0,t.jsx)(n.li,{children:"Connect Your Wallet:"}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"Use the \u201cI am a Node Operator\u201d button and choose your wallet provider."}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Log In as already Node Operator",src:i(3559).Z+"",width:"1460",height:"737"})}),"\n",(0,t.jsxs)(n.ol,{start:"3",children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Authorize the Connection:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Follow the on-screen prompts to grant the necessary permissions."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Ensure the wallet\u2019s network matches the intended environment (e.g., Mainnet or Holesky)."}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Verify Connection:"}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:"Once connected, your wallet address will appear in the top-right corner of the interface."}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Ensure wallet is connected",src:i(4079).Z+"",width:"664",height:"72"})}),"\n",(0,t.jsx)(n.h2,{id:"3-configuring-telegram-notifications",children:"3. Configuring Telegram Notifications"}),"\n",(0,t.jsx)(n.p,{children:"To receive critical updates and alerts regarding your validator operations, it is essential to configure Telegram notifications."}),"\n",(0,t.jsx)(n.p,{children:"This provides alerts about validator penalties, slashing incidents, exit requests, key deposits and smart contract events."}),"\n",(0,t.jsx)(n.p,{children:"Staying informed helps safeguard your assets, reduce risks, and maintain transparency and control over your activities in the protocol, ensuring smooth and efficient participation."}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Initial Setup:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"When accessing the Lido CSM UI for the first time, a modal will appear prompting you to configure Telegram notifications."}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Click \u201cNavigate\u201d to go to ",(0,t.jsx)(n.code,{children:"/notifications"}),"."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.img,{alt:"Notifications Modal",src:i(8228).Z+"",width:"1905",height:"1046"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Generate a Telegram Bot Token:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Open Telegram and search for ",(0,t.jsx)(n.a,{href:"https://web.telegram.org/a/#93372553",children:(0,t.jsx)(n.code,{children:"@BotFather"})}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Start a chat with BotFather and type ",(0,t.jsx)(n.code,{children:"/newbot"}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:'Follow the instructions to name your bot and choose a username (must end with "bot").'}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Once created, BotFather will send you the bot token."}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Example: ",(0,t.jsx)(n.code,{children:"123456789:ABCDefghIJKLMNOPQRSTuvwxYZ"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Obtain Your User ID:"}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Open ",(0,t.jsx)(n.a,{href:"https://web.telegram.org/a/",children:"Telegram"})," and search for ",(0,t.jsx)(n.a,{href:"https://web.telegram.org/a/#52504489",children:(0,t.jsx)(n.code,{children:"@userinfobot"})})," or ",(0,t.jsx)(n.a,{href:"https://web.telegram.org/a/#1533228735",children:(0,t.jsx)(n.code,{children:"@raw_data_bot"})}),"."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:["Start a chat with the bot by clicking ",(0,t.jsx)(n.code,{children:"Start"})," button."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"The bot will reply with your Telegram ID"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Input the Bot Token and User ID:"}),"\n",(0,t.jsxs)(n.p,{children:["Enter the bot token and your user ID in the Lido CSM package UI and click ",(0,t.jsx)(n.code,{children:"Update Telegram Data"}),".\n",(0,t.jsx)(n.img,{alt:"Set up Notifications",src:i(627).Z+"",width:"1905",height:"1046"})]}),"\n",(0,t.jsx)(n.admonition,{type:"caution",children:(0,t.jsx)(n.p,{children:"To receive the notifications, is mandatory to fill both inputs, otherwise the notification system won't work"})}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:"Verify Notifications:"}),"\n",(0,t.jsxs)(n.p,{children:["Ensure that test alert was sent to your Telegram to confirm that notifiactions are properly configured.\n",(0,t.jsx)(n.img,{alt:"Ensure Notifications are set",src:i(731).Z+"",width:"770",height:"255"})]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.h2,{id:"4-monitoring-infrastructure",children:"4. Monitoring Infrastructure"}),"\n",(0,t.jsx)(n.p,{children:"The dashboard provides an at-a-glance view of your infrastructure\u2019s health and status, including execution clients, consensus clients, web3 signer, and subscribed relays."})]})}function h(e={}){const{wrapper:n}={...(0,o.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(c,{...e})}):c(e)}},5063:(e,n,i)=>{i.d(n,{Z:()=>t});const t=i.p+"assets/images/lido-csm-brain-import-931b025593e1e791ae472dce17b4a2f6.png"},731:(e,n,i)=>{i.d(n,{Z:()=>t});const t=i.p+"assets/images/lido-csm-ensure-notifications-24da5f8905ac0e8f88c02b3aa2ccc18e.png"},3559:(e,n,i)=>{i.d(n,{Z:()=>t});const t=i.p+"assets/images/lido-csm-log-in-already-NO-73d10878dc29bca9157afc26ca1bb611.png"},8228:(e,n,i)=>{i.d(n,{Z:()=>t});const t=i.p+"assets/images/lido-csm-notifications-modal-90a669424cf7b7048bd3ce55a2417279.png"},627:(e,n,i)=>{i.d(n,{Z:()=>t});const t=i.p+"assets/images/lido-csm-setup-notifications-6b2635b85b84d6d5def3534b1d8552e3.png"},4079:(e,n,i)=>{i.d(n,{Z:()=>t});const t=i.p+"assets/images/lido-csm-wallet-connected-113b5e31772ef307fb762443fa5cac15.png"},1151:(e,n,i)=>{i.d(n,{Z:()=>a,a:()=>r});var t=i(7294);const o={},s=t.createContext(o);function r(e){const n=t.useContext(s);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function a(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:r(e.components),t.createElement(s.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.1a7e00d9.js b/assets/js/935f2afb.1a7e00d9.js deleted file mode 100644 index e16fc8599..000000000 --- a/assets/js/935f2afb.1a7e00d9.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkd_app_node_docs=self.webpackChunkd_app_node_docs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"userSidebar":[{"type":"category","label":"Getting started","items":[{"type":"link","label":"Choose your path","href":"/docs/user/getting-started/choose-your-path","docId":"user/getting-started/choose-your-path","unlisted":false},{"type":"link","label":"Connect your Dappnode to the router","href":"/docs/user/getting-started/connect-dappnode-to-the-router","docId":"user/getting-started/connect-dappnode-to-the-router","unlisted":false},{"type":"link","label":"Access your Dappnode via WiFi","href":"/docs/user/getting-started/access-dappnode-via-wifi","docId":"user/getting-started/access-dappnode-via-wifi","unlisted":false},{"type":"link","label":"Register","href":"/docs/user/getting-started/register","docId":"user/getting-started/register","unlisted":false},{"type":"link","label":"Setup","href":"/docs/user/getting-started/setup","docId":"user/getting-started/setup","unlisted":false},{"type":"link","label":"Next steps","href":"/docs/user/getting-started/next-steps","docId":"user/getting-started/next-steps","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Access your dappnode","items":[{"type":"link","label":"Overview","href":"/docs/user/access-your-dappnode/overview","docId":"user/access-your-dappnode/overview","unlisted":false},{"type":"link","label":"Wi-Fi","href":"/docs/user/access-your-dappnode/wifi","docId":"user/access-your-dappnode/wifi","unlisted":false},{"type":"category","label":"VPN","items":[{"type":"link","label":"Overview","href":"/docs/user/access-your-dappnode/vpn/overview","docId":"user/access-your-dappnode/vpn/overview","unlisted":false},{"type":"link","label":"Wireguard","href":"/docs/user/access-your-dappnode/vpn/wireguard","docId":"user/access-your-dappnode/vpn/wireguard","unlisted":false},{"type":"link","label":"OpenVPN","href":"/docs/user/access-your-dappnode/vpn/openvpn","docId":"user/access-your-dappnode/vpn/openvpn","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Terminal (Advanced)","href":"/docs/user/access-your-dappnode/terminal","docId":"user/access-your-dappnode/terminal","unlisted":false},{"type":"link","label":"Local Proxy (Recovery)","href":"/docs/user/access-your-dappnode/local","docId":"user/access-your-dappnode/local","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Hardware","items":[{"type":"link","label":"Overview","href":"/docs/user/hardware/overview","docId":"user/hardware/overview","unlisted":false},{"type":"link","label":"Maintenance","href":"/docs/user/hardware/maintenance","docId":"user/hardware/maintenance","unlisted":false},{"type":"link","label":"Temperature","href":"/docs/user/hardware/temperature","docId":"user/hardware/temperature","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Staking","items":[{"type":"link","label":"Earn with Staking","href":"/docs/user/staking/overview","docId":"user/staking/overview","unlisted":false},{"type":"category","label":"Ethereum","items":[{"type":"category","label":"Solo Staking","items":[{"type":"link","label":"Mainnet","href":"/docs/user/staking/ethereum/solo/mainnet","docId":"user/staking/ethereum/solo/mainnet","unlisted":false},{"type":"link","label":"Testnet","href":"/docs/user/staking/ethereum/solo/holesky","docId":"user/staking/ethereum/solo/holesky","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"LSD Pools","items":[{"type":"link","label":"Lido","href":"/docs/user/staking/ethereum/lsd-pools/lido","docId":"user/staking/ethereum/lsd-pools/lido","unlisted":false},{"type":"link","label":"Rocketpool","href":"/docs/user/staking/ethereum/lsd-pools/rocketpool","docId":"user/staking/ethereum/lsd-pools/rocketpool","unlisted":false},{"type":"link","label":"Stakewise","href":"/docs/user/staking/ethereum/lsd-pools/stakewise","docId":"user/staking/ethereum/lsd-pools/stakewise","unlisted":false},{"type":"link","label":"Stakehouse","href":"/docs/user/staking/ethereum/lsd-pools/stakehouse","docId":"user/staking/ethereum/lsd-pools/stakehouse","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"DVT Technologies","items":[{"type":"link","label":"Obol","href":"/docs/user/staking/ethereum/dvt-technologies/obol-network","docId":"user/staking/ethereum/dvt-technologies/obol-network","unlisted":false},{"type":"link","label":"SSV","href":"/docs/user/staking/ethereum/dvt-technologies/ssv-network","docId":"user/staking/ethereum/dvt-technologies/ssv-network","unlisted":false},{"type":"link","label":"Diva","href":"/docs/user/staking/ethereum/dvt-technologies/diva","docId":"user/staking/ethereum/dvt-technologies/diva","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Gnosis Chain","items":[{"type":"link","label":"Gnosis Solo Staking","href":"/docs/user/staking/gnosis-chain/solo","docId":"user/staking/gnosis-chain/solo","unlisted":false},{"type":"link","label":"Gnosis Incentive Program","href":"/docs/user/staking/gnosis-chain/incentive-program","docId":"user/staking/gnosis-chain/incentive-program","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"LUKSO","items":[{"type":"link","label":"LUKSO Solo Staking","href":"/docs/user/staking/lukso/solo","docId":"user/staking/lukso/solo","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Rollups","items":[{"type":"link","label":"Overview","href":"/docs/user/rollups/overview","docId":"user/rollups/overview","unlisted":false},{"type":"link","label":"Optimism","href":"/docs/user/rollups/optimism","docId":"user/rollups/optimism","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Packages","items":[{"type":"category","label":"Understanding Dappnode Packages","items":[{"type":"link","label":"Overview","href":"/docs/user/packages/understanding-dappnode-packages/overview","docId":"user/packages/understanding-dappnode-packages/overview","unlisted":false},{"type":"link","label":"Info","href":"/docs/user/packages/understanding-dappnode-packages/info","docId":"user/packages/understanding-dappnode-packages/info","unlisted":false},{"type":"link","label":"Config","href":"/docs/user/packages/understanding-dappnode-packages/config","docId":"user/packages/understanding-dappnode-packages/config","unlisted":false},{"type":"link","label":"Network","href":"/docs/user/packages/understanding-dappnode-packages/network","docId":"user/packages/understanding-dappnode-packages/network","unlisted":false},{"type":"link","label":"Logs","href":"/docs/user/packages/understanding-dappnode-packages/logs","docId":"user/packages/understanding-dappnode-packages/logs","unlisted":false},{"type":"link","label":"Backup","href":"/docs/user/packages/understanding-dappnode-packages/backup","docId":"user/packages/understanding-dappnode-packages/backup","unlisted":false},{"type":"link","label":"File manager","href":"/docs/user/packages/understanding-dappnode-packages/file-manager","docId":"user/packages/understanding-dappnode-packages/file-manager","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Packages\' signature","href":"/docs/user/packages/signature","docId":"user/packages/signature","unlisted":false},{"type":"link","label":"DMS","href":"/docs/user/packages/dms","docId":"user/packages/dms","unlisted":false},{"type":"link","label":"Bitcoin","href":"/docs/user/packages/bitcoin","docId":"user/packages/bitcoin","unlisted":false},{"type":"link","label":"Eth Classic","href":"/docs/user/packages/ethclassic","docId":"user/packages/ethclassic","unlisted":false},{"type":"link","label":"Avalanche","href":"/docs/user/packages/avalanche","docId":"user/packages/avalanche","unlisted":false},{"type":"link","label":"Monero","href":"/docs/user/packages/monero","docId":"user/packages/monero","unlisted":false},{"type":"link","label":"Swarm","href":"/docs/user/packages/swarm","docId":"user/packages/swarm","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Repository","items":[{"type":"link","label":"Ethereum","href":"/docs/user/repository/ethereum","docId":"user/repository/ethereum","unlisted":false},{"type":"link","label":"IPFS","href":"/docs/user/repository/ipfs","docId":"user/repository/ipfs","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Install","items":[{"type":"link","label":"Overview","href":"/docs/user/install/overview","docId":"user/install/overview","unlisted":false},{"type":"link","label":"ISO","href":"/docs/user/install/iso","docId":"user/install/iso","unlisted":false},{"type":"link","label":"Script","href":"/docs/user/install/script","docId":"user/install/script","unlisted":false},{"type":"link","label":"ARM","href":"/docs/user/install/arm","docId":"user/install/arm","unlisted":false},{"type":"link","label":"Dappnode commands","href":"/docs/user/install/dappnode-commands","docId":"user/install/dappnode-commands","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Ethical metrics","items":[{"type":"link","label":"Overview","href":"/docs/user/ethical-metrics/overview","docId":"user/ethical-metrics/overview","unlisted":false},{"type":"link","label":"Setting up Notifications","href":"/docs/user/ethical-metrics/setup","docId":"user/ethical-metrics/setup","unlisted":false},{"type":"link","label":"Metrics collected","href":"/docs/user/ethical-metrics/metrics","docId":"user/ethical-metrics/metrics","unlisted":false},{"type":"link","label":"Troubleshooting","href":"/docs/user/ethical-metrics/troubleshooting","docId":"user/ethical-metrics/troubleshooting","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Dappnode Cloud","items":[{"type":"link","label":"Overview","href":"/docs/user/dappnode-cloud/overview","docId":"user/dappnode-cloud/overview","unlisted":false},{"type":"category","label":"Cloud Providers","items":[{"type":"category","label":"AWS","items":[{"type":"link","label":"AWS Overview","href":"/docs/user/dappnode-cloud/providers/aws/overview","docId":"user/dappnode-cloud/providers/aws/overview","unlisted":false},{"type":"link","label":"How to set up an Instance","href":"/docs/user/dappnode-cloud/providers/aws/set-up-instance","docId":"user/dappnode-cloud/providers/aws/set-up-instance","unlisted":false},{"type":"link","label":"FAQs & Troubleshooting","href":"/docs/user/dappnode-cloud/providers/aws/faqs","docId":"user/dappnode-cloud/providers/aws/faqs","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"More coming soon","href":"/docs/user/dappnode-cloud/providers/coming-soon","docId":"user/dappnode-cloud/providers/coming-soon","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Videos and tutorials","items":[{"type":"category","label":"Driving School","items":[{"type":"link","label":"Initial setup","href":"/docs/user/videos-and-tutorials/driving-school/initial-setup","docId":"user/videos-and-tutorials/driving-school/initial-setup","unlisted":false},{"type":"link","label":"Configuration","href":"/docs/user/videos-and-tutorials/driving-school/configuration","docId":"user/videos-and-tutorials/driving-school/configuration","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Crash Course","href":"/docs/user/videos-and-tutorials/crash-course","docId":"user/videos-and-tutorials/crash-course","unlisted":false},{"type":"category","label":"Guides","items":[{"type":"link","label":"How to connect a wallet to my node","href":"/docs/user/videos-and-tutorials/guides/connect-node","docId":"user/videos-and-tutorials/guides/connect-node","unlisted":false},{"type":"link","label":"Migrating from Avado","href":"/docs/user/videos-and-tutorials/guides/migrating-from-avado","docId":"user/videos-and-tutorials/guides/migrating-from-avado","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"link","label":"FAQs","href":"/docs/user/faqs","docId":"user/faqs","unlisted":false}],"devSidebar":[{"type":"link","label":"Introduction","href":"/docs/dev","docId":"dev","unlisted":false},{"type":"category","label":"DappnodeSDK","items":[{"type":"link","label":"Overview","href":"/docs/dev/sdk/overview","docId":"dev/sdk/overview","unlisted":false},{"type":"link","label":"Commands","href":"/docs/dev/sdk/commands","docId":"dev/sdk/commands","unlisted":false},{"type":"link","label":"SDK-Publish","href":"/docs/dev/sdk/sdk-publish","docId":"dev/sdk/sdk-publish","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"File references","items":[{"type":"link","label":"Docker Compose","href":"/docs/dev/references/docker-compose","docId":"dev/references/docker-compose","unlisted":false},{"type":"link","label":"Dappnode Manifest","href":"/docs/dev/references/manifest","docId":"dev/references/manifest","unlisted":false},{"type":"link","label":"Setup Wizard","href":"/docs/dev/references/setup-wizard","docId":"dev/references/setup-wizard","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Package Development","items":[{"type":"link","label":"Overview","href":"/docs/dev/package-development/overview","docId":"dev/package-development/overview","unlisted":false},{"type":"link","label":"Single Configuration","href":"/docs/dev/package-development/single-configuration","docId":"dev/package-development/single-configuration","unlisted":false},{"type":"link","label":"Multi-Configuration","href":"/docs/dev/package-development/multi-configuration","docId":"dev/package-development/multi-configuration","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Github Actions","href":"/docs/dev/github-actions","docId":"dev/github-actions","unlisted":false}],"smoothSidebar":[{"type":"link","label":"Smooth","href":"/docs/smooth","docId":"smooth","unlisted":false},{"type":"category","label":"Deep dive into Smooth","items":[{"type":"link","label":"Overview","href":"/docs/smooth/deep-dive-into-smooth/overview","docId":"smooth/deep-dive-into-smooth/overview","unlisted":false},{"type":"link","label":"Rewards","href":"/docs/smooth/deep-dive-into-smooth/rewards","docId":"smooth/deep-dive-into-smooth/rewards","unlisted":false},{"type":"link","label":"Validator States","href":"/docs/smooth/deep-dive-into-smooth/states","docId":"smooth/deep-dive-into-smooth/states","unlisted":false},{"type":"link","label":"Oracle & Smart Contract","href":"/docs/smooth/deep-dive-into-smooth/oracle-sm","docId":"smooth/deep-dive-into-smooth/oracle-sm","unlisted":false},{"type":"link","label":"Avoid proposing Vanilla Blocks","href":"/docs/smooth/deep-dive-into-smooth/vanilla-blocks","docId":"smooth/deep-dive-into-smooth/vanilla-blocks","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Subscribe to Smooth!","items":[{"type":"link","label":"Overview","href":"/docs/smooth/subscribe-to-smooth/overview","docId":"smooth/subscribe-to-smooth/overview","unlisted":false},{"type":"link","label":"Automatic subscription","href":"/docs/smooth/subscribe-to-smooth/automatic","docId":"smooth/subscribe-to-smooth/automatic","unlisted":false},{"type":"link","label":"Manual subscription","href":"/docs/smooth/subscribe-to-smooth/manual","docId":"smooth/subscribe-to-smooth/manual","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Unsubscribe from Smooth","href":"/docs/smooth/unsubscribe-from-smooth","docId":"smooth/unsubscribe-from-smooth","unlisted":false},{"type":"link","label":"FAQ / Glossary","href":"/docs/smooth/faq-glossary","docId":"smooth/faq-glossary","unlisted":false}],"daoSidebar":[{"type":"link","label":"DAO","href":"/docs/dao","docId":"dao","unlisted":false},{"type":"link","label":"The NODE Economy","href":"/docs/dao/node-basics","docId":"dao/node-basics","unlisted":false},{"type":"link","label":"Liquidity Mining","href":"/docs/dao/liquidity-mining","docId":"dao/liquidity-mining","unlisted":false},{"type":"link","label":"Dappnode DAO FAQ","href":"/docs/dao/faq","docId":"dao/faq","unlisted":false}]},"docs":{"dao":{"id":"dao","title":"DAO","description":"DAO information","sidebar":"daoSidebar"},"dao/faq":{"id":"dao/faq","title":"Dappnode DAO FAQ","description":"What is a DAO?","sidebar":"daoSidebar"},"dao/liquidity-mining":{"id":"dao/liquidity-mining","title":"Liquidity Mining","description":"Liquidity Mining (LM) launched on Jul 17 2021, 2000 GMT. 5.5% of the total token supply, 5.5 Million NODE, has been allocated to the first LM round of 6 months. NODE reward distribution for the 4 pools available is as follows:","sidebar":"daoSidebar"},"dao/node-basics":{"id":"dao/node-basics","title":"The NODE Economy","description":"NODE Basics","sidebar":"daoSidebar"},"dao/node-drop":{"id":"dao/node-drop","title":"NODEdrop","description":"\\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\\""},"dao/node-stream":{"id":"dao/node-stream","title":"NODEstream","description":"\\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\\""},"dev":{"id":"dev","title":"Welcome to the Developer Documentation!","description":"Welcome to the Dappnode\'s developer docs! This documentation is your comprehensive guide to using the tools and resources that enable you to create, deploy, and manage your own custom dappnode packages (DNP). Whether you\'re new to the project or an experienced developer, this documentation will help you navigate the intricacies of developing in the dappnode environment.","sidebar":"devSidebar"},"dev/github-actions":{"id":"dev/github-actions","title":"GitHub Actions for Dappnode Packages","description":"GitHub Actions help automate workflows around your projects on GitHub. For Dappnode packages, we utilize specific GitHub Actions to manage updates and releases.","sidebar":"devSidebar"},"dev/package-development/multi-configuration":{"id":"dev/package-development/multi-configuration","title":"Multi-Config Package Development","description":"This guide will walk you through the steps to develop a multi-config Dappnode package, allowing you to create multiple package configurations from a single source. We\'ll use the Lodestar Generic package as a reference, which builds multiple variants for different networks like Mainnet, Holesky, and Gnosis.","sidebar":"devSidebar"},"dev/package-development/overview":{"id":"dev/package-development/overview","title":"Package Development","description":"Welcome to the Package Development section! This guide will help you create your own Dappnode packages. In Dappnode, packages are applications that you can download and install on your Dappnode machine, allowing you to enhance its functionality.","sidebar":"devSidebar"},"dev/package-development/single-configuration":{"id":"dev/package-development/single-configuration","title":"Single-Variant Package Development","description":"This guide will walk you through the steps to develop a single-variant Dappnode package using a simple example. We\'ll start with initializing a basic package and progress to a more complex setup, using the Holesky Geth package as a reference.","sidebar":"devSidebar"},"dev/references/docker-compose":{"id":"dev/references/docker-compose","title":"Docker compose file","description":"Dappnode packages are built upon Docker containers. The heart of defining how these containers run and interact lies in the docker-compose.yml file. In this guide, we will explain the typical structure of the docker-compose.yml file for a Dappnode package.","sidebar":"devSidebar"},"dev/references/manifest":{"id":"dev/references/manifest","title":"Dappnode Package (DNP) manifest","description":"The Dappnode Package manifest defines all the necessary information for a Dappnode to understand this package:","sidebar":"devSidebar"},"dev/references/setup-wizard":{"id":"dev/references/setup-wizard","title":"Wizard Reference","description":"The setup wizard for Dappnode packages helps automate the package customization and improve its user experience. You can allow users to conveniently edit environment variables, port mappings, and upload files while interacting with a simple web form, right before installing the package.","sidebar":"devSidebar"},"dev/sdk/commands":{"id":"dev/sdk/commands","title":"Main commands","description":"This page covers the top three functionalities of DappnodeSDK: init, build, and publish. Each command plays a crucial role in the development and deployment process of dappnode packages (DNPs).","sidebar":"devSidebar"},"dev/sdk/overview":{"id":"dev/sdk/overview","title":"DappnodeSDK","description":"The DappnodeSDK dappnodesdk is a tool that makes creating and publishing new Dappnode packages as simple as possible. It helps to initialize, build, test, and publish the new package/repo to an APM tracked on the Ethereum Mainnet.","sidebar":"devSidebar"},"dev/sdk/sdk-publish":{"id":"dev/sdk/sdk-publish","title":"SDK-Publish","description":"The SDK-Publish tool is a component of the Dappnode Software Development Kit (dappnodesdk). This tool simplifies the process of signing and publishing Dappnode package releases, utilizing your wallet for secure and efficient transaction management.","sidebar":"devSidebar"},"smooth":{"id":"smooth","title":"Smooth","description":"Smooth introduction","sidebar":"smoothSidebar"},"smooth/deep-dive-into-smooth/oracle-sm":{"id":"smooth/deep-dive-into-smooth/oracle-sm","title":"Smooth\'s architecture","description":"Smooth is composed of two main components: the Oracle and the Smart Contract. These two components work together to track validators and distribute rewards fairly. Both are open source and indispensable to the functioning of Smooth. While the Smart Contract serves to track all the events related to the pool onchain (subscriptions, unsubscriptions, block proposals, etc.), the Oracle is responsible for computing the rewards of each validator.","sidebar":"smoothSidebar"},"smooth/deep-dive-into-smooth/overview":{"id":"smooth/deep-dive-into-smooth/overview","title":"Deep Dive into Smooth!","description":"In this section, you will find an in-depth explanation on how Smooth works. This includes its different components, all states possible of a subscribed validator, and much more!","sidebar":"smoothSidebar"},"smooth/deep-dive-into-smooth/rewards":{"id":"smooth/deep-dive-into-smooth/rewards","title":"Rewards","description":"Receiving and distributing rewards is one of the core functionalities of Smooth. In this section we will explain how rewards are handled by Smooth and how they are distributed to validators, as well as how users can claim their rewards.","sidebar":"smoothSidebar"},"smooth/deep-dive-into-smooth/states":{"id":"smooth/deep-dive-into-smooth/states","title":"Smooth Validator States","description":"A Smooth validator can be in multiple states depending on its behavior. In this section we will explain all possible states a validator can have, the consequences of being each state, and how a validator can transition from one state to another.","sidebar":"smoothSidebar"},"smooth/deep-dive-into-smooth/vanilla-blocks":{"id":"smooth/deep-dive-into-smooth/vanilla-blocks","title":"What is a vanilla block?","description":"What is a vanilla block?","sidebar":"smoothSidebar"},"smooth/faq-glossary":{"id":"smooth/faq-glossary","title":"FAQ & Glossary","description":"FAQ","sidebar":"smoothSidebar"},"smooth/subscribe-to-smooth/automatic":{"id":"smooth/subscribe-to-smooth/automatic","title":"Automatic Subscription","description":"This is the simplest way to subscribe to Smooth. It consists of changing the fee recipient of your validator to Smooth\'s address and subscribing automatically when proposing your next block.","sidebar":"smoothSidebar"},"smooth/subscribe-to-smooth/manual":{"id":"smooth/subscribe-to-smooth/manual","title":"Manual Subscription","description":"Would you rather not wait until your next proposed block to subscribe and begin earning rewards? You can take a proactive step and opt for manual subscription right away. During this process, you\'ll change your validator\'s fee recipient to Smooth\'s address, just like in the automatic subscription. However, instead of waiting for your next proposed block, you\'ll immediately start accumulating rewards from Smooth.","sidebar":"smoothSidebar"},"smooth/subscribe-to-smooth/overview":{"id":"smooth/subscribe-to-smooth/overview","title":"Subscribing to Smooth","description":"Hello! In this section you will find all the information on how to subscribe your Validators to Smooth. Even though the process is simple, it is important to follow the steps carefully.","sidebar":"smoothSidebar"},"smooth/unsubscribe-from-smooth":{"id":"smooth/unsubscribe-from-smooth","title":"Unsubscribing from Smooth.","description":"Unsubscribing from Smooth is as simple as subscribing to it. You can unsubscribe from Smooth at any time, it is done through Smooth\'s website and it only takes one simple transaction.","sidebar":"smoothSidebar"},"user/access-your-dappnode/local":{"id":"user/access-your-dappnode/local","title":"Local Proxy Access to Dappnode","description":"The local proxy method provides a way to access your Dappnode from within the same local network without any previous configuration required. However, it\'s essential to understand that due to certain network incompatibilities, this method might not work for all users.","sidebar":"userSidebar"},"user/access-your-dappnode/overview":{"id":"user/access-your-dappnode/overview","title":"\ud83c\udf10 Access your Dappnode","description":"Dappnode is made to work on a dedicated computer, and its main control panel, the Dappmanager, is accessed from another device via my.dappnode , as it is meant to be installed over an operating system that does not include a graphical interface.","sidebar":"userSidebar"},"user/access-your-dappnode/terminal":{"id":"user/access-your-dappnode/terminal","title":"Terminal Access to Dappnode","description":"Accessing the terminal of your Dappnode, often referred to as the command-line interface (CLI), provides deep control and management capabilities. However, this method is considered advanced and requires familiarity with command line interactions. Incorrect or misguided commands can lead to unintended changes or potential system damage.","sidebar":"userSidebar"},"user/access-your-dappnode/vpn/openvpn":{"id":"user/access-your-dappnode/vpn/openvpn","title":"OpenVPN Access to Dappnode","description":"OpenVPN is a widely-accepted VPN protocol known for its reliability and high-security standards. Here\'s how you can set it up with Dappnode.","sidebar":"userSidebar"},"user/access-your-dappnode/vpn/overview":{"id":"user/access-your-dappnode/vpn/overview","title":"VPN Access to Dappnode","description":"Virtual Private Network (VPN) is a robust method for accessing your Dappnode. It ensures a secure and encrypted connection between your device and the Dappnode, allowing you to manage your Dappnode from virtually anywhere. Depending on your needs and preferences, Dappnode offers support for two primary VPN technologies: WireGuard and OpenVPN.","sidebar":"userSidebar"},"user/access-your-dappnode/vpn/wireguard":{"id":"user/access-your-dappnode/vpn/wireguard","title":"WireGuard Access to Dappnode","description":"WireGuard is a modern, high-performance VPN protocol that offers a simple and streamlined approach for securely accessing your Dappnode. This guide will walk you through setting up WireGuard with your Dappnode.","sidebar":"userSidebar"},"user/access-your-dappnode/wifi":{"id":"user/access-your-dappnode/wifi","title":"Wi-Fi Access to Dappnode","description":"If you bought a Dappnode from our store, or installed Dappnode on a computer with a built-in Wi-Fi chip, you can easily connect to the Dappmanager (Dappnode web UI) using the Dappnode\'s Wi-Fi hotspot.","sidebar":"userSidebar"},"user/dappnode-cloud/overview":{"id":"user/dappnode-cloud/overview","title":"What is Dappnode Cloud?","description":"Dappnode Cloud is a service that allows users to deploy a Dappnode in a cloud provider so it can be tested without the need for physical hardware. We provide easy pre-configured instances for the main cloud providers (AWS for now, more to come later) to continue to make the deployment of web3 infrastructure accessible and hassle-free for everyone. It consists of a Dappnode image deployed on a machine instance from a cloud provider, eliminating the need to invest in hardware in order to test Dappnode.","sidebar":"userSidebar"},"user/dappnode-cloud/providers/aws/faqs":{"id":"user/dappnode-cloud/providers/aws/faqs","title":"FAQs & Troubleshooting","description":"Which machine should I choose?","sidebar":"userSidebar"},"user/dappnode-cloud/providers/aws/overview":{"id":"user/dappnode-cloud/providers/aws/overview","title":"AWS","description":"Amazon Web Services (AWS) is a cloud computing platform provided by Amazon. It offers a wide range of services, including computing power, storage options, and networking capabilities, enabling users to build and deploy applications and services efficiently.","sidebar":"userSidebar"},"user/dappnode-cloud/providers/aws/set-up-instance":{"id":"user/dappnode-cloud/providers/aws/set-up-instance","title":"How to Set Up an Instance","description":"To launch a Dappnode AMI instance, follow these steps:","sidebar":"userSidebar"},"user/dappnode-cloud/providers/coming-soon":{"id":"user/dappnode-cloud/providers/coming-soon","title":"More coming soon","description":"We are aiming to deploy Dappnode Images in more cloud providers in a nearly future.","sidebar":"userSidebar"},"user/ethical-metrics/metrics":{"id":"user/ethical-metrics/metrics","title":"Metrics Collected by Ethical Metrics","description":"Dappnode has absolutely no hidden telemetry and is completely private by design. We were reluctant of setting up a monitoring service because we did NOT want to collect any data from our users. Because of our community\'s continuous requests to offer alerts, we came up with a solution that doesn\'t compromise your privacy.","sidebar":"userSidebar"},"user/ethical-metrics/overview":{"id":"user/ethical-metrics/overview","title":"Ethical Metrics","description":"Ethical Metrics requires the Dappnode Monitoring Service (DMS) and Dappnode Exporter as dependencies.","sidebar":"userSidebar"},"user/ethical-metrics/setup":{"id":"user/ethical-metrics/setup","title":"Setting up Ethical Metrics","description":"We highly recommend utilizing the Telegram channel option in addition to or instead of relying solely on email notifications.","sidebar":"userSidebar"},"user/ethical-metrics/troubleshooting":{"id":"user/ethical-metrics/troubleshooting","title":"Troubleshooting","description":"Experiencing trouble when setting your notifications up? Check this FAQ. If your issue isn\'t listed, please pay us a visit in the Dappnode Discord and we\'ll be happy to assist you!","sidebar":"userSidebar"},"user/faqs":{"id":"user/faqs","title":"FAQs","description":"How can I start validating?","sidebar":"userSidebar"},"user/getting-started/access-dappnode-via-wifi":{"id":"user/getting-started/access-dappnode-via-wifi","title":"Access Dappnode via Wi-Fi","description":"After connecting your Dappnode to the router and power, and turning it on, it\'s time to connect to it.","sidebar":"userSidebar"},"user/getting-started/choose-your-path":{"id":"user/getting-started/choose-your-path","title":"Choose your path","description":"Regardless of how you wish to utilize Dappnode, taking the initiative to contribute to decentralization and earning rewards is commendable. Embark on your desired path and experience the full potential of Dappnode.","sidebar":"userSidebar"},"user/getting-started/connect-dappnode-to-the-router":{"id":"user/getting-started/connect-dappnode-to-the-router","title":"Connect your dappnode to the router and power","description":"Dappnode offers a seamless plug-and-play experience. For optimal performance and to ensure smooth operation, please connect your Dappnode to your router and enable UPnP settings within the router.","sidebar":"userSidebar"},"user/getting-started/next-steps":{"id":"user/getting-started/next-steps","title":"Next Steps","description":"Now that your DAppNode is set up and ready to go, it\'s time to explore further configurations and features to get the most out of your experience. Here are some of the most common next steps:","sidebar":"userSidebar"},"user/getting-started/register":{"id":"user/getting-started/register","title":"Register","description":"1. Register as New User","sidebar":"userSidebar"},"user/getting-started/setup":{"id":"user/getting-started/setup","title":"Setup","description":"Setting up Dappnode is a straightforward process. This guide will walk you through configuring your Dappnode for the first time.","sidebar":"userSidebar"},"user/hardware/maintenance":{"id":"user/hardware/maintenance","title":"Maintenance","description":"This section will cover four different approaches to servicing your hardware. The order is by level of difficulty from easiest to hardest. Remember that if you have any questions they\'re always welcome in our Discord server.","sidebar":"userSidebar"},"user/hardware/overview":{"id":"user/hardware/overview","title":"Hardware","description":"In this section you will find information related to the hardware of the Dappnode\'s host machine. If you had noticed any issue with it and have tried some steps provided by the Dappnode community and/or staff without success, this section of the Dappnode documentation will help you solving those that are on the hardware side of things.","sidebar":"userSidebar"},"user/hardware/temperature":{"id":"user/hardware/temperature","title":"Temperature","description":"Keeping a close eye to your Dappnode\'s temperature is part of the Node Runner\'s basic good practices. Dappnode provides you with metrics \ud83d\udcca in the main dashboard to do so.","sidebar":"userSidebar"},"user/install/arm":{"id":"user/install/arm","title":"Install - ARM","description":"Hardware Recommendations","sidebar":"userSidebar"},"user/install/dappnode-commands":{"id":"user/install/dappnode-commands","title":"Dappnode commands","description":"Dappnode comes with a set of commands that can be used to manage the system. These commands can be used directly from the command line.","sidebar":"userSidebar"},"user/install/iso":{"id":"user/install/iso","title":"ISO Installation","description":"When you want to perform a clean installation by installing the base operating system and Dappnode. Installing from an ISO will wipe the machine data and install Dappnode over Debian.","sidebar":"userSidebar"},"user/install/overview":{"id":"user/install/overview","title":"Installation Overview","description":"Specifications & Minimum Requirements","sidebar":"userSidebar"},"user/install/script":{"id":"user/install/script","title":"Script installation","description":"You can install Dappnode using the installation script. In this case, we recommend you use Ubuntu or Debian as your operating system.","sidebar":"userSidebar"},"user/packages/avalanche":{"id":"user/packages/avalanche","title":"Avalanche","description":"Avalanche: A Revolutionary Consensus Protocol","sidebar":"userSidebar"},"user/packages/bitcoin":{"id":"user/packages/bitcoin","title":"Bitcoin","description":"Exploring Bitcoin: The Pioneer of Cryptocurrency","sidebar":"userSidebar"},"user/packages/dms":{"id":"user/packages/dms","title":"Dappnode Monitoring Service (DMS)","description":"As a Dappnode user, there are times when having insights into the performance of your packages or your whole system can be incredibly beneficial. This means understanding the condition or \\"health\\" of your packages, the utilization of your computer resources such as CPU, RAM, and disk space, as well as monitoring network traffic flow. Yet, managing all of these aspects can become complex and tedious, even for those with experience. This is precisely where the Dappnode Monitoring Service (DMS) steps in to simplify matters.","sidebar":"userSidebar"},"user/packages/ethclassic":{"id":"user/packages/ethclassic","title":"Ethereum Classic","description":"Introducing Ethereum Classic: Preserving Blockchain Principles","sidebar":"userSidebar"},"user/packages/monero":{"id":"user/packages/monero","title":"Monero","description":"Introducing Monero: A Privacy-Centric Cryptocurrency","sidebar":"userSidebar"},"user/packages/signature":{"id":"user/packages/signature","title":"Packages\' Signature","description":"Dappnode\'s Packages Signatures","sidebar":"userSidebar"},"user/packages/swarm":{"id":"user/packages/swarm","title":"Guide to Installing Bee Node on Dappnode","description":"Introduction to Swarm","sidebar":"userSidebar"},"user/packages/understanding-dappnode-packages/backup":{"id":"user/packages/understanding-dappnode-packages/backup","title":"Backup","description":"This option will be available in packages that generate any kind of local database that includes sensitive information such as validator keystores. You\'ll have two very self-explanatory options: \\"Backup Now\\" and \\"Restore Backup\\".","sidebar":"userSidebar"},"user/packages/understanding-dappnode-packages/config":{"id":"user/packages/understanding-dappnode-packages/config","title":"Config","description":"The Config section provides access to the package\'s settings, available in both simple and advanced modes. You can switch to the advanced mode by clicking the option in the lower-right corner of the screen when it is available. This flexibility allows users to customize package parameters according to their needs, from basic adjustments to more detailed configurations.","sidebar":"userSidebar"},"user/packages/understanding-dappnode-packages/file-manager":{"id":"user/packages/understanding-dappnode-packages/file-manager","title":"File Manager","description":"Also handy whenever your package has a database you\'ll need to access or modify, but without going through a terminal. Download and upload files in an easy way with the File Manager.","sidebar":"userSidebar"},"user/packages/understanding-dappnode-packages/info":{"id":"user/packages/understanding-dappnode-packages/info","title":"Info","description":"The Info section provides a comprehensive overview of the package\'s status and essential details. This section is crucial for understanding the current state of the package and managing its basic operations. Below are the key features you\'ll find in the Info section:","sidebar":"userSidebar"},"user/packages/understanding-dappnode-packages/logs":{"id":"user/packages/understanding-dappnode-packages/logs","title":"Logs","description":"This is a great section for finding out something that is not working in your package or to look for both expected and unexpected behavior. Packages with multiple services will give you the option to switch logs in the top \\"Service\\" bar, something common for consensus clients for example, which usually run one service for the beacon-chain and another one for validator. Whenever you request for support in the Dappnode community, keep these handy!","sidebar":"userSidebar"},"user/packages/understanding-dappnode-packages/network":{"id":"user/packages/understanding-dappnode-packages/network","title":"Network","description":"The Network section allows you to manage and configure the network settings for your packages. This includes adjusting network settings for individual services, changing port mappings, and setting up domain mappings to expose your package to the internet.","sidebar":"userSidebar"},"user/packages/understanding-dappnode-packages/overview":{"id":"user/packages/understanding-dappnode-packages/overview","title":"Dappnode Packages","description":"What are Dappnode packages? What features do they offer? How are they managed?","sidebar":"userSidebar"},"user/repository/ethereum":{"id":"user/repository/ethereum","title":"Ethereum repository","description":"Dappnode uses smart contracts to distribute the dappnode packages available in the Dappstore. The smart contracts are deployed in the Ethereum blockchain and the Dappnode client interacts with them to get the list of available packages and to download them. Your dappnode will need a connection to an Ethereum node in order to read the smart contracts and download the packages. There are two ways to establish this connection:","sidebar":"userSidebar"},"user/repository/ipfs":{"id":"user/repository/ipfs","title":"IPFS repository","description":"Dappnode leverages IPFS for distributing packages available in the Dappstore. To download these packages, your Dappnode requires a connection to an IPFS node. When it comes to connecting to the IPFS network, you have two primary choices:","sidebar":"userSidebar"},"user/rollups/optimism":{"id":"user/rollups/optimism","title":"Optimism Rollup","description":"Optimism is Ethereum\'s Layer 2 solution, leveraging Optimistic Rollups to enhance transaction speeds and lower costs. It conducts transactions off-chain, reconciling final states on the main Ethereum chain, all while preserving compatibility with Ethereum smart contracts.","sidebar":"userSidebar"},"user/rollups/overview":{"id":"user/rollups/overview","title":"Ethereum Rollups: An Overview","description":"Rollups are advanced layer-2 scaling solutions designed to increase the throughput of the Ethereum network. By executing and storing transaction data off the main Ethereum chain while keeping a cryptographic commitment on-chain, Rollups enhance scalability and reduce fees. Rollups can be broadly categorized into two types: Optimistic Rollups and zk-Rollups, each with its unique approach and trade-offs.","sidebar":"userSidebar"},"user/staking/ethereum/dvt-technologies/diva":{"id":"user/staking/ethereum/dvt-technologies/diva","title":"Diva package for Dappnode","description":"---","sidebar":"userSidebar"},"user/staking/ethereum/dvt-technologies/obol-network":{"id":"user/staking/ethereum/dvt-technologies/obol-network","title":"Obol Distributed Validator package for Dappnode","description":"---","sidebar":"userSidebar"},"user/staking/ethereum/dvt-technologies/ssv-network":{"id":"user/staking/ethereum/dvt-technologies/ssv-network","title":"SSV Distributed Validator package for Dappnode","description":"---","sidebar":"userSidebar"},"user/staking/ethereum/lsd-pools/lido":{"id":"user/staking/ethereum/lsd-pools/lido","title":"Lido Community Staking Module (CSM)","description":"---","sidebar":"userSidebar"},"user/staking/ethereum/lsd-pools/rocketpool":{"id":"user/staking/ethereum/lsd-pools/rocketpool","title":"Rocketpool","description":"---","sidebar":"userSidebar"},"user/staking/ethereum/lsd-pools/stakehouse":{"id":"user/staking/ethereum/lsd-pools/stakehouse","title":"Stakehouse","description":"---","sidebar":"userSidebar"},"user/staking/ethereum/lsd-pools/stakewise":{"id":"user/staking/ethereum/lsd-pools/stakewise","title":"StakeWise","description":"---","sidebar":"userSidebar"},"user/staking/ethereum/solo/holesky":{"id":"user/staking/ethereum/solo/holesky","title":"Holesky Testnet","description":"The Holesky testnet is a testnet for the Ethereum ecosystem, serving as a sandbox for users and developers alike.","sidebar":"userSidebar"},"user/staking/ethereum/solo/mainnet":{"id":"user/staking/ethereum/solo/mainnet","title":"Ethereum mainnet","description":"Ethereum stands as a titan in the realm of smart contract platforms. Its monumental shift from Proof of Work (PoW) to Proof of Stake (PoS) has opened up opportunities for individuals to participate in Ethereum\'s block production by staking ETH.","sidebar":"userSidebar"},"user/staking/gnosis-chain/incentive-program":{"id":"user/staking/gnosis-chain/incentive-program","title":"Gnosis Chain Incentive Program","description":"Gnosis Chain is a Proof of Stake blockchain that uses the GNO token for staking. The Gnosis incentive program rewards validators for their work in the network. It is designed to incentivize validators to participate and secure the network.","sidebar":"userSidebar"},"user/staking/gnosis-chain/solo":{"id":"user/staking/gnosis-chain/solo","title":"Gnosis Chain","description":"Gnosis Chain stands as a sentinel, functioning as a canary chain for Ethereum. It\'s operated and nurtured by the GnosisDAO community. With over 10% of its validators being home stakers via Dappnode, it\'s a testament to its popularity and accessibility.","sidebar":"userSidebar"},"user/staking/lukso/solo":{"id":"user/staking/lukso/solo","title":"LUKSO","description":"LUKSO is the next-gen blockchain designed with creative industries in mind. Imagine a digital realm where the spirit of Ethereum meets the world of fashion, art, and design. That\'s LUKSO for you!","sidebar":"userSidebar"},"user/staking/overview":{"id":"user/staking/overview","title":"Earn with Staking in Dappnode","description":"Decentralize Proof-of-Stake chains and earn","sidebar":"userSidebar"},"user/videos-and-tutorials/crash-course":{"id":"user/videos-and-tutorials/crash-course","title":"Crash Course","description":"Want to learn more about Dappnode through video tutorials? Check out our Dappnode Driving School!","sidebar":"userSidebar"},"user/videos-and-tutorials/driving-school/configuration":{"id":"user/videos-and-tutorials/driving-school/configuration","title":"2. Configuring your Dappnode","description":"We recommend going through Initial Setup of Dappnode Driving School before watching these videos, as these videos expect you to have a basic understanding of how your Dappnode works and how to access it.","sidebar":"userSidebar"},"user/videos-and-tutorials/driving-school/initial-setup":{"id":"user/videos-and-tutorials/driving-school/initial-setup","title":"1. Initial Dappnode Setup","description":"Welcome to Dappnode Driving School! Here you\'ll find a series of videos that will guide you through the initial setup process. From booting Dappnode from ISO and accessing it through VPN, to setting up your Ethereum node, we\'ve got you covered.","sidebar":"userSidebar"},"user/videos-and-tutorials/guides/connect-node":{"id":"user/videos-and-tutorials/guides/connect-node","title":"How to Connect to My Blockchain Node","description":"When you\'ve set up your Dappnode, you might want to connect various applications to your blockchain node. This process can vary depending on which blockchain you\'ve selected. Below is a guide on how to do this:","sidebar":"userSidebar"},"user/videos-and-tutorials/guides/migrating-from-avado":{"id":"user/videos-and-tutorials/guides/migrating-from-avado","title":"Transitioning To Dappnode","description":"Important: Before following this guide to install DappnodeOS on your Avado device, make sure to first backup any data if you are running a validator or any other dApp.","sidebar":"userSidebar"},"user/videos-and-tutorials/overview":{"id":"user/videos-and-tutorials/overview","title":"Videos and Tutorials","description":"Welcome to the Videos and Tutorials section! Here, you\'ll find a curated list of videos and written tutorials designed to help you get the most out of Dappnode. Whether you\'re a beginner or an advanced user, there\'s something here for everyone."}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.b8490ed6.js b/assets/js/935f2afb.b8490ed6.js new file mode 100644 index 000000000..685bc5c50 --- /dev/null +++ b/assets/js/935f2afb.b8490ed6.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkd_app_node_docs=self.webpackChunkd_app_node_docs||[]).push([[53],{1109:e=>{e.exports=JSON.parse('{"pluginId":"default","version":"current","label":"Next","banner":null,"badge":false,"noIndex":false,"className":"docs-version-current","isLast":true,"docsSidebars":{"userSidebar":[{"type":"category","label":"Getting started","items":[{"type":"link","label":"Choose your path","href":"/docs/user/getting-started/choose-your-path","docId":"user/getting-started/choose-your-path","unlisted":false},{"type":"link","label":"Connect your Dappnode to the router","href":"/docs/user/getting-started/connect-dappnode-to-the-router","docId":"user/getting-started/connect-dappnode-to-the-router","unlisted":false},{"type":"link","label":"Access your Dappnode via WiFi","href":"/docs/user/getting-started/access-dappnode-via-wifi","docId":"user/getting-started/access-dappnode-via-wifi","unlisted":false},{"type":"link","label":"Register","href":"/docs/user/getting-started/register","docId":"user/getting-started/register","unlisted":false},{"type":"link","label":"Setup","href":"/docs/user/getting-started/setup","docId":"user/getting-started/setup","unlisted":false},{"type":"link","label":"Next steps","href":"/docs/user/getting-started/next-steps","docId":"user/getting-started/next-steps","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Access your dappnode","items":[{"type":"link","label":"Overview","href":"/docs/user/access-your-dappnode/overview","docId":"user/access-your-dappnode/overview","unlisted":false},{"type":"link","label":"Wi-Fi","href":"/docs/user/access-your-dappnode/wifi","docId":"user/access-your-dappnode/wifi","unlisted":false},{"type":"category","label":"VPN","items":[{"type":"link","label":"Overview","href":"/docs/user/access-your-dappnode/vpn/overview","docId":"user/access-your-dappnode/vpn/overview","unlisted":false},{"type":"link","label":"Wireguard","href":"/docs/user/access-your-dappnode/vpn/wireguard","docId":"user/access-your-dappnode/vpn/wireguard","unlisted":false},{"type":"link","label":"OpenVPN","href":"/docs/user/access-your-dappnode/vpn/openvpn","docId":"user/access-your-dappnode/vpn/openvpn","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Terminal (Advanced)","href":"/docs/user/access-your-dappnode/terminal","docId":"user/access-your-dappnode/terminal","unlisted":false},{"type":"link","label":"Local Proxy (Recovery)","href":"/docs/user/access-your-dappnode/local","docId":"user/access-your-dappnode/local","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Hardware","items":[{"type":"link","label":"Overview","href":"/docs/user/hardware/overview","docId":"user/hardware/overview","unlisted":false},{"type":"link","label":"Maintenance","href":"/docs/user/hardware/maintenance","docId":"user/hardware/maintenance","unlisted":false},{"type":"link","label":"Temperature","href":"/docs/user/hardware/temperature","docId":"user/hardware/temperature","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Staking","items":[{"type":"link","label":"Earn with Staking","href":"/docs/user/staking/overview","docId":"user/staking/overview","unlisted":false},{"type":"category","label":"Ethereum","items":[{"type":"category","label":"Solo Staking","items":[{"type":"link","label":"Mainnet","href":"/docs/user/staking/ethereum/solo/mainnet","docId":"user/staking/ethereum/solo/mainnet","unlisted":false},{"type":"link","label":"Testnet","href":"/docs/user/staking/ethereum/solo/holesky","docId":"user/staking/ethereum/solo/holesky","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"LSD Pools","items":[{"type":"category","label":"Lido CSM","items":[{"type":"link","label":"Overview","href":"/docs/user/staking/ethereum/lsd-pools/lido/overview","docId":"user/staking/ethereum/lsd-pools/lido/overview","unlisted":false},{"type":"link","label":"Register as a Node Operator","href":"/docs/user/staking/ethereum/lsd-pools/lido/register","docId":"user/staking/ethereum/lsd-pools/lido/register","unlisted":false},{"type":"link","label":"I am already a Node Operator","href":"/docs/user/staking/ethereum/lsd-pools/lido/already-node-operator","docId":"user/staking/ethereum/lsd-pools/lido/already-node-operator","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Rocketpool","href":"/docs/user/staking/ethereum/lsd-pools/rocketpool","docId":"user/staking/ethereum/lsd-pools/rocketpool","unlisted":false},{"type":"link","label":"Stakewise","href":"/docs/user/staking/ethereum/lsd-pools/stakewise","docId":"user/staking/ethereum/lsd-pools/stakewise","unlisted":false},{"type":"link","label":"Stakehouse","href":"/docs/user/staking/ethereum/lsd-pools/stakehouse","docId":"user/staking/ethereum/lsd-pools/stakehouse","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"DVT Technologies","items":[{"type":"link","label":"Obol","href":"/docs/user/staking/ethereum/dvt-technologies/obol-network","docId":"user/staking/ethereum/dvt-technologies/obol-network","unlisted":false},{"type":"link","label":"SSV","href":"/docs/user/staking/ethereum/dvt-technologies/ssv-network","docId":"user/staking/ethereum/dvt-technologies/ssv-network","unlisted":false},{"type":"link","label":"Diva","href":"/docs/user/staking/ethereum/dvt-technologies/diva","docId":"user/staking/ethereum/dvt-technologies/diva","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Gnosis Chain","items":[{"type":"link","label":"Gnosis Solo Staking","href":"/docs/user/staking/gnosis-chain/solo","docId":"user/staking/gnosis-chain/solo","unlisted":false},{"type":"link","label":"Gnosis Incentive Program","href":"/docs/user/staking/gnosis-chain/incentive-program","docId":"user/staking/gnosis-chain/incentive-program","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"LUKSO","items":[{"type":"link","label":"LUKSO Solo Staking","href":"/docs/user/staking/lukso/solo","docId":"user/staking/lukso/solo","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Rollups","items":[{"type":"link","label":"Overview","href":"/docs/user/rollups/overview","docId":"user/rollups/overview","unlisted":false},{"type":"link","label":"Optimism","href":"/docs/user/rollups/optimism","docId":"user/rollups/optimism","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Packages","items":[{"type":"category","label":"Understanding Dappnode Packages","items":[{"type":"link","label":"Overview","href":"/docs/user/packages/understanding-dappnode-packages/overview","docId":"user/packages/understanding-dappnode-packages/overview","unlisted":false},{"type":"link","label":"Info","href":"/docs/user/packages/understanding-dappnode-packages/info","docId":"user/packages/understanding-dappnode-packages/info","unlisted":false},{"type":"link","label":"Config","href":"/docs/user/packages/understanding-dappnode-packages/config","docId":"user/packages/understanding-dappnode-packages/config","unlisted":false},{"type":"link","label":"Network","href":"/docs/user/packages/understanding-dappnode-packages/network","docId":"user/packages/understanding-dappnode-packages/network","unlisted":false},{"type":"link","label":"Logs","href":"/docs/user/packages/understanding-dappnode-packages/logs","docId":"user/packages/understanding-dappnode-packages/logs","unlisted":false},{"type":"link","label":"Backup","href":"/docs/user/packages/understanding-dappnode-packages/backup","docId":"user/packages/understanding-dappnode-packages/backup","unlisted":false},{"type":"link","label":"File manager","href":"/docs/user/packages/understanding-dappnode-packages/file-manager","docId":"user/packages/understanding-dappnode-packages/file-manager","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Packages\' signature","href":"/docs/user/packages/signature","docId":"user/packages/signature","unlisted":false},{"type":"link","label":"DMS","href":"/docs/user/packages/dms","docId":"user/packages/dms","unlisted":false},{"type":"link","label":"Bitcoin","href":"/docs/user/packages/bitcoin","docId":"user/packages/bitcoin","unlisted":false},{"type":"link","label":"Eth Classic","href":"/docs/user/packages/ethclassic","docId":"user/packages/ethclassic","unlisted":false},{"type":"link","label":"Avalanche","href":"/docs/user/packages/avalanche","docId":"user/packages/avalanche","unlisted":false},{"type":"link","label":"Monero","href":"/docs/user/packages/monero","docId":"user/packages/monero","unlisted":false},{"type":"link","label":"Swarm","href":"/docs/user/packages/swarm","docId":"user/packages/swarm","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Repository","items":[{"type":"link","label":"Ethereum","href":"/docs/user/repository/ethereum","docId":"user/repository/ethereum","unlisted":false},{"type":"link","label":"IPFS","href":"/docs/user/repository/ipfs","docId":"user/repository/ipfs","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Install","items":[{"type":"link","label":"Overview","href":"/docs/user/install/overview","docId":"user/install/overview","unlisted":false},{"type":"link","label":"ISO","href":"/docs/user/install/iso","docId":"user/install/iso","unlisted":false},{"type":"link","label":"Script","href":"/docs/user/install/script","docId":"user/install/script","unlisted":false},{"type":"link","label":"ARM","href":"/docs/user/install/arm","docId":"user/install/arm","unlisted":false},{"type":"link","label":"Dappnode commands","href":"/docs/user/install/dappnode-commands","docId":"user/install/dappnode-commands","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Ethical metrics","items":[{"type":"link","label":"Overview","href":"/docs/user/ethical-metrics/overview","docId":"user/ethical-metrics/overview","unlisted":false},{"type":"link","label":"Setting up Notifications","href":"/docs/user/ethical-metrics/setup","docId":"user/ethical-metrics/setup","unlisted":false},{"type":"link","label":"Metrics collected","href":"/docs/user/ethical-metrics/metrics","docId":"user/ethical-metrics/metrics","unlisted":false},{"type":"link","label":"Troubleshooting","href":"/docs/user/ethical-metrics/troubleshooting","docId":"user/ethical-metrics/troubleshooting","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Dappnode Cloud","items":[{"type":"link","label":"Overview","href":"/docs/user/dappnode-cloud/overview","docId":"user/dappnode-cloud/overview","unlisted":false},{"type":"category","label":"Cloud Providers","items":[{"type":"category","label":"AWS","items":[{"type":"link","label":"AWS Overview","href":"/docs/user/dappnode-cloud/providers/aws/overview","docId":"user/dappnode-cloud/providers/aws/overview","unlisted":false},{"type":"link","label":"How to set up an Instance","href":"/docs/user/dappnode-cloud/providers/aws/set-up-instance","docId":"user/dappnode-cloud/providers/aws/set-up-instance","unlisted":false},{"type":"link","label":"FAQs & Troubleshooting","href":"/docs/user/dappnode-cloud/providers/aws/faqs","docId":"user/dappnode-cloud/providers/aws/faqs","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"More coming soon","href":"/docs/user/dappnode-cloud/providers/coming-soon","docId":"user/dappnode-cloud/providers/coming-soon","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"category","label":"Videos and tutorials","items":[{"type":"category","label":"Driving School","items":[{"type":"link","label":"Initial setup","href":"/docs/user/videos-and-tutorials/driving-school/initial-setup","docId":"user/videos-and-tutorials/driving-school/initial-setup","unlisted":false},{"type":"link","label":"Configuration","href":"/docs/user/videos-and-tutorials/driving-school/configuration","docId":"user/videos-and-tutorials/driving-school/configuration","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Crash Course","href":"/docs/user/videos-and-tutorials/crash-course","docId":"user/videos-and-tutorials/crash-course","unlisted":false},{"type":"category","label":"Guides","items":[{"type":"link","label":"How to connect a wallet to my node","href":"/docs/user/videos-and-tutorials/guides/connect-node","docId":"user/videos-and-tutorials/guides/connect-node","unlisted":false},{"type":"link","label":"Migrating from Avado","href":"/docs/user/videos-and-tutorials/guides/migrating-from-avado","docId":"user/videos-and-tutorials/guides/migrating-from-avado","unlisted":false}],"collapsed":true,"collapsible":true}],"collapsed":true,"collapsible":true},{"type":"link","label":"FAQs","href":"/docs/user/faqs","docId":"user/faqs","unlisted":false}],"devSidebar":[{"type":"link","label":"Introduction","href":"/docs/dev","docId":"dev","unlisted":false},{"type":"category","label":"DappnodeSDK","items":[{"type":"link","label":"Overview","href":"/docs/dev/sdk/overview","docId":"dev/sdk/overview","unlisted":false},{"type":"link","label":"Commands","href":"/docs/dev/sdk/commands","docId":"dev/sdk/commands","unlisted":false},{"type":"link","label":"SDK-Publish","href":"/docs/dev/sdk/sdk-publish","docId":"dev/sdk/sdk-publish","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"File references","items":[{"type":"link","label":"Docker Compose","href":"/docs/dev/references/docker-compose","docId":"dev/references/docker-compose","unlisted":false},{"type":"link","label":"Dappnode Manifest","href":"/docs/dev/references/manifest","docId":"dev/references/manifest","unlisted":false},{"type":"link","label":"Setup Wizard","href":"/docs/dev/references/setup-wizard","docId":"dev/references/setup-wizard","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Package Development","items":[{"type":"link","label":"Overview","href":"/docs/dev/package-development/overview","docId":"dev/package-development/overview","unlisted":false},{"type":"link","label":"Single Configuration","href":"/docs/dev/package-development/single-configuration","docId":"dev/package-development/single-configuration","unlisted":false},{"type":"link","label":"Multi-Configuration","href":"/docs/dev/package-development/multi-configuration","docId":"dev/package-development/multi-configuration","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Github Actions","href":"/docs/dev/github-actions","docId":"dev/github-actions","unlisted":false}],"smoothSidebar":[{"type":"link","label":"Smooth","href":"/docs/smooth","docId":"smooth","unlisted":false},{"type":"category","label":"Deep dive into Smooth","items":[{"type":"link","label":"Overview","href":"/docs/smooth/deep-dive-into-smooth/overview","docId":"smooth/deep-dive-into-smooth/overview","unlisted":false},{"type":"link","label":"Rewards","href":"/docs/smooth/deep-dive-into-smooth/rewards","docId":"smooth/deep-dive-into-smooth/rewards","unlisted":false},{"type":"link","label":"Validator States","href":"/docs/smooth/deep-dive-into-smooth/states","docId":"smooth/deep-dive-into-smooth/states","unlisted":false},{"type":"link","label":"Oracle & Smart Contract","href":"/docs/smooth/deep-dive-into-smooth/oracle-sm","docId":"smooth/deep-dive-into-smooth/oracle-sm","unlisted":false},{"type":"link","label":"Avoid proposing Vanilla Blocks","href":"/docs/smooth/deep-dive-into-smooth/vanilla-blocks","docId":"smooth/deep-dive-into-smooth/vanilla-blocks","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"category","label":"Subscribe to Smooth!","items":[{"type":"link","label":"Overview","href":"/docs/smooth/subscribe-to-smooth/overview","docId":"smooth/subscribe-to-smooth/overview","unlisted":false},{"type":"link","label":"Automatic subscription","href":"/docs/smooth/subscribe-to-smooth/automatic","docId":"smooth/subscribe-to-smooth/automatic","unlisted":false},{"type":"link","label":"Manual subscription","href":"/docs/smooth/subscribe-to-smooth/manual","docId":"smooth/subscribe-to-smooth/manual","unlisted":false}],"collapsed":true,"collapsible":true},{"type":"link","label":"Unsubscribe from Smooth","href":"/docs/smooth/unsubscribe-from-smooth","docId":"smooth/unsubscribe-from-smooth","unlisted":false},{"type":"link","label":"FAQ / Glossary","href":"/docs/smooth/faq-glossary","docId":"smooth/faq-glossary","unlisted":false}],"daoSidebar":[{"type":"link","label":"DAO","href":"/docs/dao","docId":"dao","unlisted":false},{"type":"link","label":"The NODE Economy","href":"/docs/dao/node-basics","docId":"dao/node-basics","unlisted":false},{"type":"link","label":"Liquidity Mining","href":"/docs/dao/liquidity-mining","docId":"dao/liquidity-mining","unlisted":false},{"type":"link","label":"Dappnode DAO FAQ","href":"/docs/dao/faq","docId":"dao/faq","unlisted":false}]},"docs":{"dao":{"id":"dao","title":"DAO","description":"DAO information","sidebar":"daoSidebar"},"dao/faq":{"id":"dao/faq","title":"Dappnode DAO FAQ","description":"What is a DAO?","sidebar":"daoSidebar"},"dao/liquidity-mining":{"id":"dao/liquidity-mining","title":"Liquidity Mining","description":"Liquidity Mining (LM) launched on Jul 17 2021, 2000 GMT. 5.5% of the total token supply, 5.5 Million NODE, has been allocated to the first LM round of 6 months. NODE reward distribution for the 4 pools available is as follows:","sidebar":"daoSidebar"},"dao/node-basics":{"id":"dao/node-basics","title":"The NODE Economy","description":"NODE Basics","sidebar":"daoSidebar"},"dao/node-drop":{"id":"dao/node-drop","title":"NODEdrop","description":"\\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\\""},"dao/node-stream":{"id":"dao/node-stream","title":"NODEstream","description":"\\"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.\\""},"dev":{"id":"dev","title":"Welcome to the Developer Documentation!","description":"Welcome to the Dappnode\'s developer docs! This documentation is your comprehensive guide to using the tools and resources that enable you to create, deploy, and manage your own custom dappnode packages (DNP). Whether you\'re new to the project or an experienced developer, this documentation will help you navigate the intricacies of developing in the dappnode environment.","sidebar":"devSidebar"},"dev/github-actions":{"id":"dev/github-actions","title":"GitHub Actions for Dappnode Packages","description":"GitHub Actions help automate workflows around your projects on GitHub. For Dappnode packages, we utilize specific GitHub Actions to manage updates and releases.","sidebar":"devSidebar"},"dev/package-development/multi-configuration":{"id":"dev/package-development/multi-configuration","title":"Multi-Config Package Development","description":"This guide will walk you through the steps to develop a multi-config Dappnode package, allowing you to create multiple package configurations from a single source. We\'ll use the Lodestar Generic package as a reference, which builds multiple variants for different networks like Mainnet, Holesky, and Gnosis.","sidebar":"devSidebar"},"dev/package-development/overview":{"id":"dev/package-development/overview","title":"Package Development","description":"Welcome to the Package Development section! This guide will help you create your own Dappnode packages. In Dappnode, packages are applications that you can download and install on your Dappnode machine, allowing you to enhance its functionality.","sidebar":"devSidebar"},"dev/package-development/single-configuration":{"id":"dev/package-development/single-configuration","title":"Single-Variant Package Development","description":"This guide will walk you through the steps to develop a single-variant Dappnode package using a simple example. We\'ll start with initializing a basic package and progress to a more complex setup, using the Holesky Geth package as a reference.","sidebar":"devSidebar"},"dev/references/docker-compose":{"id":"dev/references/docker-compose","title":"Docker compose file","description":"Dappnode packages are built upon Docker containers. The heart of defining how these containers run and interact lies in the docker-compose.yml file. In this guide, we will explain the typical structure of the docker-compose.yml file for a Dappnode package.","sidebar":"devSidebar"},"dev/references/manifest":{"id":"dev/references/manifest","title":"Dappnode Package (DNP) manifest","description":"The Dappnode Package manifest defines all the necessary information for a Dappnode to understand this package:","sidebar":"devSidebar"},"dev/references/setup-wizard":{"id":"dev/references/setup-wizard","title":"Wizard Reference","description":"The setup wizard for Dappnode packages helps automate the package customization and improve its user experience. You can allow users to conveniently edit environment variables, port mappings, and upload files while interacting with a simple web form, right before installing the package.","sidebar":"devSidebar"},"dev/sdk/commands":{"id":"dev/sdk/commands","title":"Main commands","description":"This page covers the top three functionalities of DappnodeSDK: init, build, and publish. Each command plays a crucial role in the development and deployment process of dappnode packages (DNPs).","sidebar":"devSidebar"},"dev/sdk/overview":{"id":"dev/sdk/overview","title":"DappnodeSDK","description":"The DappnodeSDK dappnodesdk is a tool that makes creating and publishing new Dappnode packages as simple as possible. It helps to initialize, build, test, and publish the new package/repo to an APM tracked on the Ethereum Mainnet.","sidebar":"devSidebar"},"dev/sdk/sdk-publish":{"id":"dev/sdk/sdk-publish","title":"SDK-Publish","description":"The SDK-Publish tool is a component of the Dappnode Software Development Kit (dappnodesdk). This tool simplifies the process of signing and publishing Dappnode package releases, utilizing your wallet for secure and efficient transaction management.","sidebar":"devSidebar"},"smooth":{"id":"smooth","title":"Smooth","description":"Smooth introduction","sidebar":"smoothSidebar"},"smooth/deep-dive-into-smooth/oracle-sm":{"id":"smooth/deep-dive-into-smooth/oracle-sm","title":"Smooth\'s architecture","description":"Smooth is composed of two main components: the Oracle and the Smart Contract. These two components work together to track validators and distribute rewards fairly. Both are open source and indispensable to the functioning of Smooth. While the Smart Contract serves to track all the events related to the pool onchain (subscriptions, unsubscriptions, block proposals, etc.), the Oracle is responsible for computing the rewards of each validator.","sidebar":"smoothSidebar"},"smooth/deep-dive-into-smooth/overview":{"id":"smooth/deep-dive-into-smooth/overview","title":"Deep Dive into Smooth!","description":"In this section, you will find an in-depth explanation on how Smooth works. This includes its different components, all states possible of a subscribed validator, and much more!","sidebar":"smoothSidebar"},"smooth/deep-dive-into-smooth/rewards":{"id":"smooth/deep-dive-into-smooth/rewards","title":"Rewards","description":"Receiving and distributing rewards is one of the core functionalities of Smooth. In this section we will explain how rewards are handled by Smooth and how they are distributed to validators, as well as how users can claim their rewards.","sidebar":"smoothSidebar"},"smooth/deep-dive-into-smooth/states":{"id":"smooth/deep-dive-into-smooth/states","title":"Smooth Validator States","description":"A Smooth validator can be in multiple states depending on its behavior. In this section we will explain all possible states a validator can have, the consequences of being each state, and how a validator can transition from one state to another.","sidebar":"smoothSidebar"},"smooth/deep-dive-into-smooth/vanilla-blocks":{"id":"smooth/deep-dive-into-smooth/vanilla-blocks","title":"What is a vanilla block?","description":"What is a vanilla block?","sidebar":"smoothSidebar"},"smooth/faq-glossary":{"id":"smooth/faq-glossary","title":"FAQ & Glossary","description":"FAQ","sidebar":"smoothSidebar"},"smooth/subscribe-to-smooth/automatic":{"id":"smooth/subscribe-to-smooth/automatic","title":"Automatic Subscription","description":"This is the simplest way to subscribe to Smooth. It consists of changing the fee recipient of your validator to Smooth\'s address and subscribing automatically when proposing your next block.","sidebar":"smoothSidebar"},"smooth/subscribe-to-smooth/manual":{"id":"smooth/subscribe-to-smooth/manual","title":"Manual Subscription","description":"Would you rather not wait until your next proposed block to subscribe and begin earning rewards? You can take a proactive step and opt for manual subscription right away. During this process, you\'ll change your validator\'s fee recipient to Smooth\'s address, just like in the automatic subscription. However, instead of waiting for your next proposed block, you\'ll immediately start accumulating rewards from Smooth.","sidebar":"smoothSidebar"},"smooth/subscribe-to-smooth/overview":{"id":"smooth/subscribe-to-smooth/overview","title":"Subscribing to Smooth","description":"Hello! In this section you will find all the information on how to subscribe your Validators to Smooth. Even though the process is simple, it is important to follow the steps carefully.","sidebar":"smoothSidebar"},"smooth/unsubscribe-from-smooth":{"id":"smooth/unsubscribe-from-smooth","title":"Unsubscribing from Smooth.","description":"Unsubscribing from Smooth is as simple as subscribing to it. You can unsubscribe from Smooth at any time, it is done through Smooth\'s website and it only takes one simple transaction.","sidebar":"smoothSidebar"},"user/access-your-dappnode/local":{"id":"user/access-your-dappnode/local","title":"Local Proxy Access to Dappnode","description":"The local proxy method provides a way to access your Dappnode from within the same local network without any previous configuration required. However, it\'s essential to understand that due to certain network incompatibilities, this method might not work for all users.","sidebar":"userSidebar"},"user/access-your-dappnode/overview":{"id":"user/access-your-dappnode/overview","title":"\ud83c\udf10 Access your Dappnode","description":"Dappnode is made to work on a dedicated computer, and its main control panel, the Dappmanager, is accessed from another device via my.dappnode , as it is meant to be installed over an operating system that does not include a graphical interface.","sidebar":"userSidebar"},"user/access-your-dappnode/terminal":{"id":"user/access-your-dappnode/terminal","title":"Terminal Access to Dappnode","description":"Accessing the terminal of your Dappnode, often referred to as the command-line interface (CLI), provides deep control and management capabilities. However, this method is considered advanced and requires familiarity with command line interactions. Incorrect or misguided commands can lead to unintended changes or potential system damage.","sidebar":"userSidebar"},"user/access-your-dappnode/vpn/openvpn":{"id":"user/access-your-dappnode/vpn/openvpn","title":"OpenVPN Access to Dappnode","description":"OpenVPN is a widely-accepted VPN protocol known for its reliability and high-security standards. Here\'s how you can set it up with Dappnode.","sidebar":"userSidebar"},"user/access-your-dappnode/vpn/overview":{"id":"user/access-your-dappnode/vpn/overview","title":"VPN Access to Dappnode","description":"Virtual Private Network (VPN) is a robust method for accessing your Dappnode. It ensures a secure and encrypted connection between your device and the Dappnode, allowing you to manage your Dappnode from virtually anywhere. Depending on your needs and preferences, Dappnode offers support for two primary VPN technologies: WireGuard and OpenVPN.","sidebar":"userSidebar"},"user/access-your-dappnode/vpn/wireguard":{"id":"user/access-your-dappnode/vpn/wireguard","title":"WireGuard Access to Dappnode","description":"WireGuard is a modern, high-performance VPN protocol that offers a simple and streamlined approach for securely accessing your Dappnode. This guide will walk you through setting up WireGuard with your Dappnode.","sidebar":"userSidebar"},"user/access-your-dappnode/wifi":{"id":"user/access-your-dappnode/wifi","title":"Wi-Fi Access to Dappnode","description":"If you bought a Dappnode from our store, or installed Dappnode on a computer with a built-in Wi-Fi chip, you can easily connect to the Dappmanager (Dappnode web UI) using the Dappnode\'s Wi-Fi hotspot.","sidebar":"userSidebar"},"user/dappnode-cloud/overview":{"id":"user/dappnode-cloud/overview","title":"What is Dappnode Cloud?","description":"Dappnode Cloud is a service that allows users to deploy a Dappnode in a cloud provider so it can be tested without the need for physical hardware. We provide easy pre-configured instances for the main cloud providers (AWS for now, more to come later) to continue to make the deployment of web3 infrastructure accessible and hassle-free for everyone. It consists of a Dappnode image deployed on a machine instance from a cloud provider, eliminating the need to invest in hardware in order to test Dappnode.","sidebar":"userSidebar"},"user/dappnode-cloud/providers/aws/faqs":{"id":"user/dappnode-cloud/providers/aws/faqs","title":"FAQs & Troubleshooting","description":"Which machine should I choose?","sidebar":"userSidebar"},"user/dappnode-cloud/providers/aws/overview":{"id":"user/dappnode-cloud/providers/aws/overview","title":"AWS","description":"Amazon Web Services (AWS) is a cloud computing platform provided by Amazon. It offers a wide range of services, including computing power, storage options, and networking capabilities, enabling users to build and deploy applications and services efficiently.","sidebar":"userSidebar"},"user/dappnode-cloud/providers/aws/set-up-instance":{"id":"user/dappnode-cloud/providers/aws/set-up-instance","title":"How to Set Up an Instance","description":"To launch a Dappnode AMI instance, follow these steps:","sidebar":"userSidebar"},"user/dappnode-cloud/providers/coming-soon":{"id":"user/dappnode-cloud/providers/coming-soon","title":"More coming soon","description":"We are aiming to deploy Dappnode Images in more cloud providers in a nearly future.","sidebar":"userSidebar"},"user/ethical-metrics/metrics":{"id":"user/ethical-metrics/metrics","title":"Metrics Collected by Ethical Metrics","description":"Dappnode has absolutely no hidden telemetry and is completely private by design. We were reluctant of setting up a monitoring service because we did NOT want to collect any data from our users. Because of our community\'s continuous requests to offer alerts, we came up with a solution that doesn\'t compromise your privacy.","sidebar":"userSidebar"},"user/ethical-metrics/overview":{"id":"user/ethical-metrics/overview","title":"Ethical Metrics","description":"Ethical Metrics requires the Dappnode Monitoring Service (DMS) and Dappnode Exporter as dependencies.","sidebar":"userSidebar"},"user/ethical-metrics/setup":{"id":"user/ethical-metrics/setup","title":"Setting up Ethical Metrics","description":"We highly recommend utilizing the Telegram channel option in addition to or instead of relying solely on email notifications.","sidebar":"userSidebar"},"user/ethical-metrics/troubleshooting":{"id":"user/ethical-metrics/troubleshooting","title":"Troubleshooting","description":"Experiencing trouble when setting your notifications up? Check this FAQ. If your issue isn\'t listed, please pay us a visit in the Dappnode Discord and we\'ll be happy to assist you!","sidebar":"userSidebar"},"user/faqs":{"id":"user/faqs","title":"FAQs","description":"How can I start validating?","sidebar":"userSidebar"},"user/getting-started/access-dappnode-via-wifi":{"id":"user/getting-started/access-dappnode-via-wifi","title":"Access Dappnode via Wi-Fi","description":"After connecting your Dappnode to the router and power, and turning it on, it\'s time to connect to it.","sidebar":"userSidebar"},"user/getting-started/choose-your-path":{"id":"user/getting-started/choose-your-path","title":"Choose your path","description":"Regardless of how you wish to utilize Dappnode, taking the initiative to contribute to decentralization and earning rewards is commendable. Embark on your desired path and experience the full potential of Dappnode.","sidebar":"userSidebar"},"user/getting-started/connect-dappnode-to-the-router":{"id":"user/getting-started/connect-dappnode-to-the-router","title":"Connect your dappnode to the router and power","description":"Dappnode offers a seamless plug-and-play experience. For optimal performance and to ensure smooth operation, please connect your Dappnode to your router and enable UPnP settings within the router.","sidebar":"userSidebar"},"user/getting-started/next-steps":{"id":"user/getting-started/next-steps","title":"Next Steps","description":"Now that your DAppNode is set up and ready to go, it\'s time to explore further configurations and features to get the most out of your experience. Here are some of the most common next steps:","sidebar":"userSidebar"},"user/getting-started/register":{"id":"user/getting-started/register","title":"Register","description":"1. Register as New User","sidebar":"userSidebar"},"user/getting-started/setup":{"id":"user/getting-started/setup","title":"Setup","description":"Setting up Dappnode is a straightforward process. This guide will walk you through configuring your Dappnode for the first time.","sidebar":"userSidebar"},"user/hardware/maintenance":{"id":"user/hardware/maintenance","title":"Maintenance","description":"This section will cover four different approaches to servicing your hardware. The order is by level of difficulty from easiest to hardest. Remember that if you have any questions they\'re always welcome in our Discord server.","sidebar":"userSidebar"},"user/hardware/overview":{"id":"user/hardware/overview","title":"Hardware","description":"In this section you will find information related to the hardware of the Dappnode\'s host machine. If you had noticed any issue with it and have tried some steps provided by the Dappnode community and/or staff without success, this section of the Dappnode documentation will help you solving those that are on the hardware side of things.","sidebar":"userSidebar"},"user/hardware/temperature":{"id":"user/hardware/temperature","title":"Temperature","description":"Keeping a close eye to your Dappnode\'s temperature is part of the Node Runner\'s basic good practices. Dappnode provides you with metrics \ud83d\udcca in the main dashboard to do so.","sidebar":"userSidebar"},"user/install/arm":{"id":"user/install/arm","title":"Install - ARM","description":"Hardware Recommendations","sidebar":"userSidebar"},"user/install/dappnode-commands":{"id":"user/install/dappnode-commands","title":"Dappnode commands","description":"Dappnode comes with a set of commands that can be used to manage the system. These commands can be used directly from the command line.","sidebar":"userSidebar"},"user/install/iso":{"id":"user/install/iso","title":"ISO Installation","description":"When you want to perform a clean installation by installing the base operating system and Dappnode. Installing from an ISO will wipe the machine data and install Dappnode over Debian.","sidebar":"userSidebar"},"user/install/overview":{"id":"user/install/overview","title":"Installation Overview","description":"Specifications & Minimum Requirements","sidebar":"userSidebar"},"user/install/script":{"id":"user/install/script","title":"Script installation","description":"You can install Dappnode using the installation script. In this case, we recommend you use Ubuntu or Debian as your operating system.","sidebar":"userSidebar"},"user/packages/avalanche":{"id":"user/packages/avalanche","title":"Avalanche","description":"Avalanche: A Revolutionary Consensus Protocol","sidebar":"userSidebar"},"user/packages/bitcoin":{"id":"user/packages/bitcoin","title":"Bitcoin","description":"Exploring Bitcoin: The Pioneer of Cryptocurrency","sidebar":"userSidebar"},"user/packages/dms":{"id":"user/packages/dms","title":"Dappnode Monitoring Service (DMS)","description":"As a Dappnode user, there are times when having insights into the performance of your packages or your whole system can be incredibly beneficial. This means understanding the condition or \\"health\\" of your packages, the utilization of your computer resources such as CPU, RAM, and disk space, as well as monitoring network traffic flow. Yet, managing all of these aspects can become complex and tedious, even for those with experience. This is precisely where the Dappnode Monitoring Service (DMS) steps in to simplify matters.","sidebar":"userSidebar"},"user/packages/ethclassic":{"id":"user/packages/ethclassic","title":"Ethereum Classic","description":"Introducing Ethereum Classic: Preserving Blockchain Principles","sidebar":"userSidebar"},"user/packages/monero":{"id":"user/packages/monero","title":"Monero","description":"Introducing Monero: A Privacy-Centric Cryptocurrency","sidebar":"userSidebar"},"user/packages/signature":{"id":"user/packages/signature","title":"Packages\' Signature","description":"Dappnode\'s Packages Signatures","sidebar":"userSidebar"},"user/packages/swarm":{"id":"user/packages/swarm","title":"Guide to Installing Bee Node on Dappnode","description":"Introduction to Swarm","sidebar":"userSidebar"},"user/packages/understanding-dappnode-packages/backup":{"id":"user/packages/understanding-dappnode-packages/backup","title":"Backup","description":"This option will be available in packages that generate any kind of local database that includes sensitive information such as validator keystores. You\'ll have two very self-explanatory options: \\"Backup Now\\" and \\"Restore Backup\\".","sidebar":"userSidebar"},"user/packages/understanding-dappnode-packages/config":{"id":"user/packages/understanding-dappnode-packages/config","title":"Config","description":"The Config section provides access to the package\'s settings, available in both simple and advanced modes. You can switch to the advanced mode by clicking the option in the lower-right corner of the screen when it is available. This flexibility allows users to customize package parameters according to their needs, from basic adjustments to more detailed configurations.","sidebar":"userSidebar"},"user/packages/understanding-dappnode-packages/file-manager":{"id":"user/packages/understanding-dappnode-packages/file-manager","title":"File Manager","description":"Also handy whenever your package has a database you\'ll need to access or modify, but without going through a terminal. Download and upload files in an easy way with the File Manager.","sidebar":"userSidebar"},"user/packages/understanding-dappnode-packages/info":{"id":"user/packages/understanding-dappnode-packages/info","title":"Info","description":"The Info section provides a comprehensive overview of the package\'s status and essential details. This section is crucial for understanding the current state of the package and managing its basic operations. Below are the key features you\'ll find in the Info section:","sidebar":"userSidebar"},"user/packages/understanding-dappnode-packages/logs":{"id":"user/packages/understanding-dappnode-packages/logs","title":"Logs","description":"This is a great section for finding out something that is not working in your package or to look for both expected and unexpected behavior. Packages with multiple services will give you the option to switch logs in the top \\"Service\\" bar, something common for consensus clients for example, which usually run one service for the beacon-chain and another one for validator. Whenever you request for support in the Dappnode community, keep these handy!","sidebar":"userSidebar"},"user/packages/understanding-dappnode-packages/network":{"id":"user/packages/understanding-dappnode-packages/network","title":"Network","description":"The Network section allows you to manage and configure the network settings for your packages. This includes adjusting network settings for individual services, changing port mappings, and setting up domain mappings to expose your package to the internet.","sidebar":"userSidebar"},"user/packages/understanding-dappnode-packages/overview":{"id":"user/packages/understanding-dappnode-packages/overview","title":"Dappnode Packages","description":"What are Dappnode packages? What features do they offer? How are they managed?","sidebar":"userSidebar"},"user/repository/ethereum":{"id":"user/repository/ethereum","title":"Ethereum repository","description":"Dappnode uses smart contracts to distribute the dappnode packages available in the Dappstore. The smart contracts are deployed in the Ethereum blockchain and the Dappnode client interacts with them to get the list of available packages and to download them. Your dappnode will need a connection to an Ethereum node in order to read the smart contracts and download the packages. There are two ways to establish this connection:","sidebar":"userSidebar"},"user/repository/ipfs":{"id":"user/repository/ipfs","title":"IPFS repository","description":"Dappnode leverages IPFS for distributing packages available in the Dappstore. To download these packages, your Dappnode requires a connection to an IPFS node. When it comes to connecting to the IPFS network, you have two primary choices:","sidebar":"userSidebar"},"user/rollups/optimism":{"id":"user/rollups/optimism","title":"Optimism Rollup","description":"Optimism is Ethereum\'s Layer 2 solution, leveraging Optimistic Rollups to enhance transaction speeds and lower costs. It conducts transactions off-chain, reconciling final states on the main Ethereum chain, all while preserving compatibility with Ethereum smart contracts.","sidebar":"userSidebar"},"user/rollups/overview":{"id":"user/rollups/overview","title":"Ethereum Rollups: An Overview","description":"Rollups are advanced layer-2 scaling solutions designed to increase the throughput of the Ethereum network. By executing and storing transaction data off the main Ethereum chain while keeping a cryptographic commitment on-chain, Rollups enhance scalability and reduce fees. Rollups can be broadly categorized into two types: Optimistic Rollups and zk-Rollups, each with its unique approach and trade-offs.","sidebar":"userSidebar"},"user/staking/ethereum/dvt-technologies/diva":{"id":"user/staking/ethereum/dvt-technologies/diva","title":"Diva package for Dappnode","description":"---","sidebar":"userSidebar"},"user/staking/ethereum/dvt-technologies/obol-network":{"id":"user/staking/ethereum/dvt-technologies/obol-network","title":"Obol Distributed Validator package for Dappnode","description":"---","sidebar":"userSidebar"},"user/staking/ethereum/dvt-technologies/ssv-network":{"id":"user/staking/ethereum/dvt-technologies/ssv-network","title":"SSV Distributed Validator package for Dappnode","description":"---","sidebar":"userSidebar"},"user/staking/ethereum/lsd-pools/lido/already-node-operator":{"id":"user/staking/ethereum/lsd-pools/lido/already-node-operator","title":"Already a node operator","description":"This document provides detailed instructions for existing Node Operators on integrating their setup with the Lido Community Staking Module (CSM) via Dappnode. By following these steps, you can efficiently manage your validators and ensure proper functionality within the Lido protocol.","sidebar":"userSidebar"},"user/staking/ethereum/lsd-pools/lido/overview":{"id":"user/staking/ethereum/lsd-pools/lido/overview","title":"Lido Community Staking Module (CSM)","description":"---","sidebar":"userSidebar"},"user/staking/ethereum/lsd-pools/lido/register":{"id":"user/staking/ethereum/lsd-pools/lido/register","title":"**Become a Lido Node Operator with Dappnode**","description":"Dappnode provides an easy-to-use and intuitive interface for most of the infrastructure needed to become a Lido Node Operator. The process is straightforward and requires only a few steps to set up a node operator and start earning rewards. An overview of the process is how the Lido CSM UI will greet you when first connecting your wallet to the dApp:","sidebar":"userSidebar"},"user/staking/ethereum/lsd-pools/rocketpool":{"id":"user/staking/ethereum/lsd-pools/rocketpool","title":"Rocketpool","description":"---","sidebar":"userSidebar"},"user/staking/ethereum/lsd-pools/stakehouse":{"id":"user/staking/ethereum/lsd-pools/stakehouse","title":"Stakehouse","description":"---","sidebar":"userSidebar"},"user/staking/ethereum/lsd-pools/stakewise":{"id":"user/staking/ethereum/lsd-pools/stakewise","title":"StakeWise","description":"---","sidebar":"userSidebar"},"user/staking/ethereum/solo/holesky":{"id":"user/staking/ethereum/solo/holesky","title":"Holesky Testnet","description":"The Holesky testnet is a testnet for the Ethereum ecosystem, serving as a sandbox for users and developers alike.","sidebar":"userSidebar"},"user/staking/ethereum/solo/mainnet":{"id":"user/staking/ethereum/solo/mainnet","title":"Ethereum mainnet","description":"Ethereum stands as a titan in the realm of smart contract platforms. Its monumental shift from Proof of Work (PoW) to Proof of Stake (PoS) has opened up opportunities for individuals to participate in Ethereum\'s block production by staking ETH.","sidebar":"userSidebar"},"user/staking/gnosis-chain/incentive-program":{"id":"user/staking/gnosis-chain/incentive-program","title":"Gnosis Chain Incentive Program","description":"Gnosis Chain is a Proof of Stake blockchain that uses the GNO token for staking. The Gnosis incentive program rewards validators for their work in the network. It is designed to incentivize validators to participate and secure the network.","sidebar":"userSidebar"},"user/staking/gnosis-chain/solo":{"id":"user/staking/gnosis-chain/solo","title":"Gnosis Chain","description":"Gnosis Chain stands as a sentinel, functioning as a canary chain for Ethereum. It\'s operated and nurtured by the GnosisDAO community. With over 10% of its validators being home stakers via Dappnode, it\'s a testament to its popularity and accessibility.","sidebar":"userSidebar"},"user/staking/lukso/solo":{"id":"user/staking/lukso/solo","title":"LUKSO","description":"LUKSO is the next-gen blockchain designed with creative industries in mind. Imagine a digital realm where the spirit of Ethereum meets the world of fashion, art, and design. That\'s LUKSO for you!","sidebar":"userSidebar"},"user/staking/overview":{"id":"user/staking/overview","title":"Earn with Staking in Dappnode","description":"Decentralize Proof-of-Stake chains and earn","sidebar":"userSidebar"},"user/videos-and-tutorials/crash-course":{"id":"user/videos-and-tutorials/crash-course","title":"Crash Course","description":"Want to learn more about Dappnode through video tutorials? Check out our Dappnode Driving School!","sidebar":"userSidebar"},"user/videos-and-tutorials/driving-school/configuration":{"id":"user/videos-and-tutorials/driving-school/configuration","title":"2. Configuring your Dappnode","description":"We recommend going through Initial Setup of Dappnode Driving School before watching these videos, as these videos expect you to have a basic understanding of how your Dappnode works and how to access it.","sidebar":"userSidebar"},"user/videos-and-tutorials/driving-school/initial-setup":{"id":"user/videos-and-tutorials/driving-school/initial-setup","title":"1. Initial Dappnode Setup","description":"Welcome to Dappnode Driving School! Here you\'ll find a series of videos that will guide you through the initial setup process. From booting Dappnode from ISO and accessing it through VPN, to setting up your Ethereum node, we\'ve got you covered.","sidebar":"userSidebar"},"user/videos-and-tutorials/guides/connect-node":{"id":"user/videos-and-tutorials/guides/connect-node","title":"How to Connect to My Blockchain Node","description":"When you\'ve set up your Dappnode, you might want to connect various applications to your blockchain node. This process can vary depending on which blockchain you\'ve selected. Below is a guide on how to do this:","sidebar":"userSidebar"},"user/videos-and-tutorials/guides/migrating-from-avado":{"id":"user/videos-and-tutorials/guides/migrating-from-avado","title":"Transitioning To Dappnode","description":"Important: Before following this guide to install DappnodeOS on your Avado device, make sure to first backup any data if you are running a validator or any other dApp.","sidebar":"userSidebar"},"user/videos-and-tutorials/overview":{"id":"user/videos-and-tutorials/overview","title":"Videos and Tutorials","description":"Welcome to the Videos and Tutorials section! Here, you\'ll find a curated list of videos and written tutorials designed to help you get the most out of Dappnode. Whether you\'re a beginner or an advanced user, there\'s something here for everyone."}}}')}}]); \ No newline at end of file diff --git a/assets/js/a830b4cf.1a8a64f5.js b/assets/js/a830b4cf.1a8a64f5.js new file mode 100644 index 000000000..acee61823 --- /dev/null +++ b/assets/js/a830b4cf.1a8a64f5.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkd_app_node_docs=self.webpackChunkd_app_node_docs||[]).push([[2920],{1312:(e,t,o)=>{o.r(t),o.d(t,{assets:()=>a,contentTitle:()=>i,default:()=>h,frontMatter:()=>r,metadata:()=>d,toc:()=>l});var s=o(5893),n=o(1151);const r={},i="Become a Lido Node Operator with Dappnode",d={id:"user/staking/ethereum/lsd-pools/lido/register",title:"**Become a Lido Node Operator with Dappnode**",description:"Dappnode provides an easy-to-use and intuitive interface for most of the infrastructure needed to become a Lido Node Operator. The process is straightforward and requires only a few steps to set up a node operator and start earning rewards. An overview of the process is how the Lido CSM UI will greet you when first connecting your wallet to the dApp:",source:"@site/docs/user/staking/ethereum/lsd-pools/lido/register.md",sourceDirName:"user/staking/ethereum/lsd-pools/lido",slug:"/user/staking/ethereum/lsd-pools/lido/register",permalink:"/docs/user/staking/ethereum/lsd-pools/lido/register",draft:!1,unlisted:!1,editUrl:"https://github.com/dappnode/DappnodeDocs/edit/master/docs/user/staking/ethereum/lsd-pools/lido/register.md",tags:[],version:"current",frontMatter:{},sidebar:"userSidebar",previous:{title:"Lido Community Staking Module (CSM)",permalink:"/docs/user/staking/ethereum/lsd-pools/lido/overview"},next:{title:"Already a node operator",permalink:"/docs/user/staking/ethereum/lsd-pools/lido/already-node-operator"}},a={},l=[{value:"First Steps to create a Node Operator in Dappnode",id:"first-steps-to-create-a-node-operator-in-dappnode",level:2}];function c(e){const t={a:"a",admonition:"admonition",code:"code",h1:"h1",h2:"h2",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,n.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.h1,{id:"become-a-lido-node-operator-with-dappnode",children:(0,s.jsx)(t.strong,{children:"Become a Lido Node Operator with Dappnode"})}),"\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Dappnode"})," provides an easy-to-use and intuitive interface for most of the infrastructure needed to become a Lido Node Operator. The process is straightforward and requires only a few steps to set up a node operator and start earning rewards. An overview of the process is how the Lido CSM UI will greet you when first connecting your wallet to the dApp:"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Lido-CSM1",src:o(8953).Z+"",width:"1892",height:"941"})}),"\n",(0,s.jsx)(t.hr,{}),"\n",(0,s.jsx)(t.h2,{id:"first-steps-to-create-a-node-operator-in-dappnode",children:(0,s.jsx)(t.strong,{children:"First Steps to create a Node Operator in Dappnode"})}),"\n",(0,s.jsxs)(t.ol,{children:["\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Getting your Dappnode ready"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Navigate to ",(0,s.jsx)(t.a,{href:"http://my.dappnode/stakers/ethereum",children:"Dappnode Staking for Ethereum"})," or ",(0,s.jsx)(t.a,{href:"http://my.dappnode/stakers/holesky",children:"Dappnode Staking for Holesky"}),"."]}),"\n",(0,s.jsx)(t.li,{children:"Select your desired execution and consensus clients."}),"\n",(0,s.jsx)(t.li,{children:"Choose Web3Signer to upload the keystores."}),"\n",(0,s.jsxs)(t.li,{children:["Configure MEV Boost with as many relays as possible. For additional info on MEV in CSM, check the ",(0,s.jsx)(t.a,{href:"https://operatorportal.lido.fi/modules/community-staking-module",children:"Lido CSM Docs"}),"."]}),"\n"]}),"\n",(0,s.jsx)(t.admonition,{type:"warning",children:(0,s.jsx)(t.p,{children:'It is mandatory to choose at least one relay to ensure the node operator does not propose vanilla blocks. When uploading the keystores with the "Lido" tag, this requirement will be automatically checked. As a Lido Node Operator, it is your responsibility to ensure that your infrastructure is properly using MEV Boost.'})}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Create the Keystores & Deposit Data"}),": In order to run a validator, you need to generate the necessary keystores and deposit data. The keystores ",(0,s.jsx)(t.strong,{children:"must"})," be created with the withdrawal credential of Lido:"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Holesky: ",(0,s.jsx)(t.code,{children:"0xF0179dEC45a37423EAD4FaD5fCb136197872EAd9"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["Ethereum: ",(0,s.jsx)(t.code,{children:"0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f"}),"."]}),"\n",(0,s.jsxs)(t.li,{children:["We recommend using official tools like ",(0,s.jsx)(t.a,{href:"https://github.com/ethereum/staking-deposit-cli",children:"Staking-Deposit-CLI"})," or the ",(0,s.jsx)(t.a,{href:"https://wagyu.gg/",children:"Wagyu Key Gen Tool"})," to create the keystores. This step is crucial and mandatory."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:"The validator Keystores will be used to run the validators on the Ethereum network, while the deposit data will be used to register the validators in the Lido protocol."}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Lido-CSM2",src:o(5166).Z+"",width:"949",height:"784"})}),"\n",(0,s.jsx)(t.admonition,{type:"warning",children:(0,s.jsx)(t.p,{children:"Make sure you correcly set the withdrawal address up, otherwise the Lido CSM won't let you move forward with the validator deposits."})}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Upload the Keystores in your Dappnode"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Go to the Web3signer UI for ",(0,s.jsx)(t.a,{href:"http://brain.web3signer.dappnode",children:"Ethereum"})," or ",(0,s.jsx)(t.a,{href:"http://brain.web3signer-holesky.dappnode",children:"Holesky"}),"."]}),"\n",(0,s.jsx)(t.li,{children:'Upload the keystores and tag them with "Lido".'}),"\n",(0,s.jsxs)(t.li,{children:["The fee recipient will be automatically set to ",(0,s.jsx)(t.code,{children:"0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8"})," for Holesky and ",(0,s.jsx)(t.code,{children:"0x388C818CA8B9251b393131C08a736A67ccB19297"})," for Mainnet. It is not editable."]}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"Lido-CSM3",src:o(3969).Z+"",width:"1905",height:"1084"})}),"\n",(0,s.jsx)(t.admonition,{type:"caution",children:(0,s.jsx)(t.p,{children:"Double-check that your Lido keystores are tagged correctly. This is crucial to ensure that the node operator is properly set up, and has the correct fee recipient set."})}),"\n",(0,s.jsx)(t.admonition,{type:"danger",children:(0,s.jsx)(t.p,{children:"Do not edit the fee recipient address. Doing so will result in penalties."})}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsxs)(t.p,{children:[(0,s.jsx)(t.strong,{children:"Register as a Lido Node Operator & your validators"}),":"]}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Navigate to the ",(0,s.jsx)(t.a,{href:"https://csm.lido.fi/?ref=dappnode",children:"Lido Deposit UI"})," and complete the deposit process by submitting the ",(0,s.jsx)(t.code,{children:"deposit_data.json"})," file you generated with your keystore(s).\n",(0,s.jsx)(t.img,{alt:"Lido-CSM4",src:o(8956).Z+"",width:"1905",height:"964"})]}),"\n",(0,s.jsx)(t.li,{children:"You'll be prompted to sign an ETH bond depending on the number of validators you're submitting to the CSM."}),"\n",(0,s.jsx)(t.li,{children:"Once the deposit has been confirmed, the CSM and then the Beacon Chain will process your deposit. Keep in mind you'll have to wait 16-24 hours plus the Becaon Chain's entry queue for your validators to activate. Your node operator setup is now complete!"}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.strong,{children:"Setup notifications"})}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsxs)(t.li,{children:["Get your bot token and user ID from the ",(0,s.jsx)(t.a,{href:"https://core.telegram.org/bots/tutorial#obtain-your-bot-token",children:"Telegram BotFather"})," and ",(0,s.jsx)(t.a,{href:"https://t.me/userinfobot",children:"userinfobot"})," respectively."]}),"\n",(0,s.jsx)(t.li,{children:"Introduce your bot token and user ID and confirm"}),"\n",(0,s.jsx)(t.li,{children:"You should receive a confirmation message from the bot."}),"\n"]}),"\n",(0,s.jsx)(t.p,{children:(0,s.jsx)(t.img,{alt:"lido-notifications-onboarding",src:o(7416).Z+"",width:"1905",height:"951"})}),"\n"]}),"\n"]})]})}function h(e={}){const{wrapper:t}={...(0,n.a)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(c,{...e})}):c(e)}},8953:(e,t,o)=>{o.d(t,{Z:()=>s});const s=o.p+"assets/images/lido-csm-ss-docs1-032f26e141f28c01d7bd345801acc174.png"},5166:(e,t,o)=>{o.d(t,{Z:()=>s});const s=o.p+"assets/images/lido-csm-ss-docs2-c66d0577d30534e1c30998b48a96a0b5.png"},3969:(e,t,o)=>{o.d(t,{Z:()=>s});const s=o.p+"assets/images/lido-csm-ss-docs3-f5948576e6e69354015049920b30df37.png"},8956:(e,t,o)=>{o.d(t,{Z:()=>s});const s=o.p+"assets/images/lido-csm-ss-docs4-55dc8306e52af58aca69e3f573a2d345.png"},7416:(e,t,o)=>{o.d(t,{Z:()=>s});const s=o.p+"assets/images/lido-notifications-onboarding-3d96ec618e91c274e34e062cd9f639e1.png"},1151:(e,t,o)=>{o.d(t,{Z:()=>d,a:()=>i});var s=o(7294);const n={},r=s.createContext(n);function i(e){const t=s.useContext(r);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function d(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:i(e.components),s.createElement(r.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ea5c5a02.9d51ee94.js b/assets/js/ea5c5a02.9d51ee94.js deleted file mode 100644 index c377741ec..000000000 --- a/assets/js/ea5c5a02.9d51ee94.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkd_app_node_docs=self.webpackChunkd_app_node_docs||[]).push([[5396],{1478:(e,o,t)=>{t.r(o),t.d(o,{assets:()=>a,contentTitle:()=>r,default:()=>c,frontMatter:()=>i,metadata:()=>d,toc:()=>l});var s=t(5893),n=t(1151);const i={},r="Lido Community Staking Module (CSM)",d={id:"user/staking/ethereum/lsd-pools/lido",title:"Lido Community Staking Module (CSM)",description:"---",source:"@site/docs/user/staking/ethereum/lsd-pools/lido.md",sourceDirName:"user/staking/ethereum/lsd-pools",slug:"/user/staking/ethereum/lsd-pools/lido",permalink:"/docs/user/staking/ethereum/lsd-pools/lido",draft:!1,unlisted:!1,editUrl:"https://github.com/dappnode/DappnodeDocs/edit/master/docs/user/staking/ethereum/lsd-pools/lido.md",tags:[],version:"current",frontMatter:{},sidebar:"userSidebar",previous:{title:"Holesky Testnet",permalink:"/docs/user/staking/ethereum/solo/holesky"},next:{title:"Rocketpool",permalink:"/docs/user/staking/ethereum/lsd-pools/rocketpool"}},a={},l=[{value:"Lido CSM Overview",id:"lido-csm-overview",level:3},{value:"Become a Lido Node Operator with Dappnode",id:"become-a-lido-node-operator-with-dappnode",level:3},{value:"First Steps to create a Node Operator in Dappnode",id:"first-steps-to-create-a-node-operator-in-dappnode",level:3}];function h(e){const o={a:"a",admonition:"admonition",code:"code",h1:"h1",h3:"h3",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,n.a)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(o.h1,{id:"lido-community-staking-module-csm",children:"Lido Community Staking Module (CSM)"}),"\n",(0,s.jsx)(o.hr,{}),"\n",(0,s.jsx)(o.h3,{id:"lido-csm-overview",children:(0,s.jsx)(o.strong,{children:"Lido CSM Overview"})}),"\n",(0,s.jsxs)(o.p,{children:["Lido is a ",(0,s.jsx)(o.strong,{children:"liquid staking"})," solution for Ethereum that addresses the liquidity issues of traditional staking. Instead of locking up assets and losing access to them, users can stake through Lido and receive liquid tokens. These tokens retain the value of the staked assets and can be used elsewhere while still earning staking rewards."]}),"\n",(0,s.jsxs)(o.p,{children:["Lido, with over ",(0,s.jsx)(o.a,{href:"https://lido.fi/ethereum",children:"9 million ETH"})," staked on its platform, is a significant contributor in the Ethereum ecosystem. To broaden and diversify its network of node operators, Lido recently introduced the ",(0,s.jsxs)(o.a,{href:"https://csm.lido.fi/?ref=dappnode",children:[(0,s.jsx)(o.strong,{children:"Community Staking Module"})," (CSM)"]}),", the first Lido module with a ",(0,s.jsx)(o.strong,{children:"permissionless entry"})," for Ethereum staking. By first providing an ETH-based bond, anyone can now become a node operator by running validators in the Lido protocol. Designed with solo and community stakers in mind, the CSM lowers the barrier to becoming an Ethereum validator, requiring far less than the standard 32 ETH, and offers a user-friendly experience. While tailored for smaller stakers, it is open to all, including professional operators."]}),"\n",(0,s.jsx)(o.admonition,{type:"info",children:(0,s.jsxs)(o.p,{children:["Becoming a Lido Node Operator is recommended for users with some experience in running validators. The process requires a basic understanding of the Ethereum network and the Lido protocol. If you are new to staking, we recommend setting up a validator on the Testnet first to familiarize yourself with the process, see ",(0,s.jsx)(o.a,{href:"/docs/user/staking/ethereum/solo/holesky",children:"Staking on the Ethereum Testnet"}),"."]})}),"\n",(0,s.jsx)(o.hr,{}),"\n",(0,s.jsx)(o.h3,{id:"become-a-lido-node-operator-with-dappnode",children:(0,s.jsx)(o.strong,{children:"Become a Lido Node Operator with Dappnode"})}),"\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:"Dappnode"})," provides an easy-to-use and intuitive interface for most of the infrastructure needed to become a Lido Node Operator. The process is straightforward and requires only a few steps to set up a node operator and start earning rewards. An overview of the process is how the Lido CSM UI will greet you when first connecting your wallet to the dApp:"]}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"Lido-CSM1",src:t(8953).Z+"",width:"1892",height:"941"})}),"\n",(0,s.jsx)(o.hr,{}),"\n",(0,s.jsx)(o.h3,{id:"first-steps-to-create-a-node-operator-in-dappnode",children:(0,s.jsx)(o.strong,{children:"First Steps to create a Node Operator in Dappnode"})}),"\n",(0,s.jsxs)(o.ol,{children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:"Getting your Dappnode ready"}),":"]}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Navigate to ",(0,s.jsx)(o.a,{href:"http://my.dappnode/stakers/ethereum",children:"Dappnode Staking for Ethereum"})," or ",(0,s.jsx)(o.a,{href:"http://my.dappnode/stakers/holesky",children:"Dappnode Staking for Holesky"}),"."]}),"\n",(0,s.jsx)(o.li,{children:"Select your desired execution and consensus clients."}),"\n",(0,s.jsx)(o.li,{children:"Choose Web3Signer to upload the keystores."}),"\n",(0,s.jsxs)(o.li,{children:["Configure MEV Boost with as many relays as possible. For additional info on MEV in CSM, check the ",(0,s.jsx)(o.a,{href:"https://operatorportal.lido.fi/modules/community-staking-module",children:"Lido CSM Docs"}),"."]}),"\n"]}),"\n",(0,s.jsx)(o.admonition,{type:"warning",children:(0,s.jsx)(o.p,{children:'It is mandatory to choose at least one relay to ensure the node operator does not propose vanilla blocks. When uploading the keystores with the "Lido" tag, this requirement will be automatically checked. As a Lido Node Operator, it is your responsibility to ensure that your infrastructure is properly using MEV Boost.'})}),"\n"]}),"\n"]}),"\n",(0,s.jsxs)(o.p,{children:["2 ",(0,s.jsx)(o.strong,{children:"Create the Keystores & Deposit Data"}),": In order to run a validator, you need to generate the necessary keystores and deposit data. The keystores ",(0,s.jsx)(o.strong,{children:"must"})," be created with the withdrawal credential of Lido:"]}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Holesky: ",(0,s.jsx)(o.code,{children:"0xF0179dEC45a37423EAD4FaD5fCb136197872EAd9"}),"."]}),"\n",(0,s.jsxs)(o.li,{children:["Ethereum: ",(0,s.jsx)(o.code,{children:"0xb9d7934878b5fb9610b3fe8a5e441e8fad7e293f"}),"."]}),"\n",(0,s.jsxs)(o.li,{children:["We recommend using official tools like ",(0,s.jsx)(o.a,{href:"https://github.com/ethereum/staking-deposit-cli",children:"Staking-Deposit-CLI"})," or the ",(0,s.jsx)(o.a,{href:"https://wagyu.gg/",children:"Wagyu Key Gen Tool"})," to create the keystores. This step is crucial and mandatory."]}),"\n"]}),"\n",(0,s.jsx)(o.p,{children:"The validator Keystores will be used to run the validators on the Ethereum network, while the deposit data will be used to register the validators in the Lido protocol."}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"Lido-CSM2",src:t(5166).Z+"",width:"949",height:"784"})}),"\n",(0,s.jsx)(o.admonition,{type:"warning",children:(0,s.jsx)(o.p,{children:"Make sure you correcly set the withdrawal address up, otherwise the Lido CSM won't let you move forward with the validator deposits."})}),"\n",(0,s.jsxs)(o.ol,{start:"3",children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:"Upload the Keystores in your Dappnode"}),":"]}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Go to the Web3signer UI for ",(0,s.jsx)(o.a,{href:"http://brain.web3signer.dappnode",children:"Ethereum"})," or ",(0,s.jsx)(o.a,{href:"http://brain.web3signer-holesky.dappnode",children:"Holesky"}),"."]}),"\n",(0,s.jsx)(o.li,{children:'Upload the keystores and tag them with "Lido".'}),"\n",(0,s.jsxs)(o.li,{children:["The fee recipient will be automatically set to ",(0,s.jsx)(o.code,{children:"0xE73a3602b99f1f913e72F8bdcBC235e206794Ac8"})," for Holesky and ",(0,s.jsx)(o.code,{children:"0x388C818CA8B9251b393131C08a736A67ccB19297"})," for Mainnet. It is not editable."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.p,{children:(0,s.jsx)(o.img,{alt:"Lido-CSM3",src:t(3969).Z+"",width:"1905",height:"1084"})}),"\n",(0,s.jsx)(o.admonition,{type:"caution",children:(0,s.jsx)(o.p,{children:"Double-check that your Lido keystores are tagged correctly. This is crucial to ensure that the node operator is properly set up, and has the correct fee recipient set."})}),"\n",(0,s.jsx)(o.admonition,{type:"danger",children:(0,s.jsx)(o.p,{children:"Do not edit the fee recipient address. Doing so will result in penalties."})}),"\n",(0,s.jsxs)(o.ol,{start:"4",children:["\n",(0,s.jsxs)(o.li,{children:["\n",(0,s.jsxs)(o.p,{children:[(0,s.jsx)(o.strong,{children:"Register as a Lido Node Operator & your validators"}),":"]}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsxs)(o.li,{children:["Navigate to the ",(0,s.jsx)(o.a,{href:"https://csm.lido.fi/?ref=dappnode",children:"Lido Deposit UI"})," and complete the deposit process by submitting the ",(0,s.jsx)(o.code,{children:"deposit_data.json"})," file you generated with your keystore(s).\n",(0,s.jsx)(o.img,{alt:"Lido-CSM4",src:t(8956).Z+"",width:"1905",height:"964"})]}),"\n",(0,s.jsx)(o.li,{children:"You'll be prompted to sign an ETH bond depending on the number of validators you're submitting to the CSM."}),"\n",(0,s.jsx)(o.li,{children:"Once the deposit has been confirmed, the CSM and then the Beacon Chain will process your deposit. Keep in mind you'll have to wait 16-24 hours plus the Becaon Chain's entry queue for your validators to activate. Your node operator setup is now complete!"}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(o.hr,{}),"\n",(0,s.jsx)(o.p,{children:"Refer to the Lido Community Staking Module documentation for more details:"}),"\n",(0,s.jsxs)(o.ul,{children:["\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://blog.lido.fi/lido-community-staking-an-overview/",children:"Lido Community Staking Overview"})}),"\n",(0,s.jsx)(o.li,{children:(0,s.jsx)(o.a,{href:"https://operatorportal.lido.fi/modules/community-staking-module",children:"Lido Community Staking Module"})}),"\n"]})]})}function c(e={}){const{wrapper:o}={...(0,n.a)(),...e.components};return o?(0,s.jsx)(o,{...e,children:(0,s.jsx)(h,{...e})}):h(e)}},8953:(e,o,t)=>{t.d(o,{Z:()=>s});const s=t.p+"assets/images/lido-csm-ss-docs1-032f26e141f28c01d7bd345801acc174.png"},5166:(e,o,t)=>{t.d(o,{Z:()=>s});const s=t.p+"assets/images/lido-csm-ss-docs2-c66d0577d30534e1c30998b48a96a0b5.png"},3969:(e,o,t)=>{t.d(o,{Z:()=>s});const s=t.p+"assets/images/lido-csm-ss-docs3-f5948576e6e69354015049920b30df37.png"},8956:(e,o,t)=>{t.d(o,{Z:()=>s});const s=t.p+"assets/images/lido-csm-ss-docs4-55dc8306e52af58aca69e3f573a2d345.png"},1151:(e,o,t)=>{t.d(o,{Z:()=>d,a:()=>r});var s=t(7294);const n={},i=s.createContext(n);function r(e){const o=s.useContext(i);return s.useMemo((function(){return"function"==typeof e?e(o):{...o,...e}}),[o,e])}function d(e){let o;return o=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),s.createElement(i.Provider,{value:o},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ed77d0ad.31b3ce0e.js b/assets/js/ed77d0ad.31b3ce0e.js deleted file mode 100644 index 8abaeadea..000000000 --- a/assets/js/ed77d0ad.31b3ce0e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkd_app_node_docs=self.webpackChunkd_app_node_docs||[]).push([[3218],{2250:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=o(5893),s=o(1151);const r={},i="Rocketpool",l={id:"user/staking/ethereum/lsd-pools/rocketpool",title:"Rocketpool",description:"---",source:"@site/docs/user/staking/ethereum/lsd-pools/rocketpool.md",sourceDirName:"user/staking/ethereum/lsd-pools",slug:"/user/staking/ethereum/lsd-pools/rocketpool",permalink:"/docs/user/staking/ethereum/lsd-pools/rocketpool",draft:!1,unlisted:!1,editUrl:"https://github.com/dappnode/DappnodeDocs/edit/master/docs/user/staking/ethereum/lsd-pools/rocketpool.md",tags:[],version:"current",frontMatter:{},sidebar:"userSidebar",previous:{title:"Lido Community Staking Module (CSM)",permalink:"/docs/user/staking/ethereum/lsd-pools/lido"},next:{title:"StakeWise",permalink:"/docs/user/staking/ethereum/lsd-pools/stakewise"}},a={},c=[{value:"Rocketpool Overview",id:"rocketpool-overview",level:3},{value:"Package Key Features",id:"package-key-features",level:3},{value:"First Steps to Start a Minipool with Rocketpool and Dappnode",id:"first-steps-to-start-a-minipool-with-rocketpool-and-dappnode",level:3}];function d(e){const n={a:"a",h1:"h1",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"rocketpool",children:"Rocketpool"}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h3,{id:"rocketpool-overview",children:(0,t.jsx)(n.strong,{children:"Rocketpool Overview"})}),"\n",(0,t.jsx)(n.p,{children:'Rocketpool is a decentralized Ethereum staking solution that allows users to earn rewards by staking their Ether (ETH). It\'s designed to be inclusive, allowing those without the full 32 ETH required for an Ethereum validator to be able to participate. Rocketpool achieves this through its innovative "minipool" concept, which facilitates pooled staking among multiple participants.'}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h3,{id:"package-key-features",children:(0,t.jsx)(n.strong,{children:"Package Key Features"})}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Decentralized Staking:"})," The Rocketpool package ensures that staking remains decentralized by using your Dappnode's local Ethereum node, safeguarding the core principles of the Ethereum network. Rocketpool also operates on smart contracts, ensuring that operations are transparent, auditable, and free from centralized control."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Minipools:"})," Users can start a minipool with as little as 16 or 8 ETH, allowing for broader participation in Ethereum's block creation."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Integrated with DappNode:"})," Easy setup, monitoring, and management of Rocketpool directly from your Dappnode interface."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h3,{id:"first-steps-to-start-a-minipool-with-rocketpool-and-dappnode",children:(0,t.jsx)(n.strong,{children:"First Steps to Start a Minipool with Rocketpool and Dappnode"})}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Package Installation:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"In your Dappnode's UI, navigate to the DAppStore."}),"\n",(0,t.jsxs)(n.li,{children:["Find the ",(0,t.jsx)(n.a,{href:"http://my.dappnode/installer/dnp/rocketpool.dnp.dappnode.eth",children:"Rocketpool package"}),"."]}),"\n",(0,t.jsx)(n.li,{children:"Click 'Install'. Once installed, the Rocketpool package should appear in your installed packages list."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Setting up the Environment:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Ensure you're running a full, synced Ethereum node (Execution client + Consensus client)."}),"\n",(0,t.jsxs)(n.li,{children:["If you are not running a full Ethereum node yet, go to the ",(0,t.jsx)(n.a,{href:"http://my.dappnode/stakers/ethereum",children:"Stakers Menu"}),", select your clients and apply the configuration to start synchronization."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Starting a Minipool:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Navigate to the Rocketpool package dashboard."}),"\n",(0,t.jsx)(n.li,{children:"Choose the amount of ETH you wish to stake. Remember, you can start a minipool with as little as 16 or 8 ETH."}),"\n",(0,t.jsx)(n.li,{children:"Follow the on-screen instructions to initialize your minipool."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Funding your Minipool:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Send the amount of ETH you\u2019ve chosen to the provided address. Make sure you keep track of this address, as it will be the address of your minipool."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Monitoring and Management:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Once your minipool is active, you can monitor its performance, rewards, and other details with Dappnode's ",(0,t.jsx)(n.a,{href:"/docs/user/packages/dms",children:"DMS"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.p,{children:"It's essential to remember that while Rocketpool simplifies the staking process, it's crucial to understand the risks involved. Always make sure to do thorough research and ensure the security of your investments."})]})}function p(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1151:(e,n,o)=>{o.d(n,{Z:()=>l,a:()=>i});var t=o(7294);const s={},r=t.createContext(s);function i(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/ed77d0ad.e6e105df.js b/assets/js/ed77d0ad.e6e105df.js new file mode 100644 index 000000000..127410e2f --- /dev/null +++ b/assets/js/ed77d0ad.e6e105df.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkd_app_node_docs=self.webpackChunkd_app_node_docs||[]).push([[3218],{2250:(e,n,o)=>{o.r(n),o.d(n,{assets:()=>a,contentTitle:()=>i,default:()=>p,frontMatter:()=>r,metadata:()=>l,toc:()=>c});var t=o(5893),s=o(1151);const r={},i="Rocketpool",l={id:"user/staking/ethereum/lsd-pools/rocketpool",title:"Rocketpool",description:"---",source:"@site/docs/user/staking/ethereum/lsd-pools/rocketpool.md",sourceDirName:"user/staking/ethereum/lsd-pools",slug:"/user/staking/ethereum/lsd-pools/rocketpool",permalink:"/docs/user/staking/ethereum/lsd-pools/rocketpool",draft:!1,unlisted:!1,editUrl:"https://github.com/dappnode/DappnodeDocs/edit/master/docs/user/staking/ethereum/lsd-pools/rocketpool.md",tags:[],version:"current",frontMatter:{},sidebar:"userSidebar",previous:{title:"Already a node operator",permalink:"/docs/user/staking/ethereum/lsd-pools/lido/already-node-operator"},next:{title:"StakeWise",permalink:"/docs/user/staking/ethereum/lsd-pools/stakewise"}},a={},c=[{value:"Rocketpool Overview",id:"rocketpool-overview",level:3},{value:"Package Key Features",id:"package-key-features",level:3},{value:"First Steps to Start a Minipool with Rocketpool and Dappnode",id:"first-steps-to-start-a-minipool-with-rocketpool-and-dappnode",level:3}];function d(e){const n={a:"a",h1:"h1",h3:"h3",hr:"hr",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...(0,s.a)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(n.h1,{id:"rocketpool",children:"Rocketpool"}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h3,{id:"rocketpool-overview",children:(0,t.jsx)(n.strong,{children:"Rocketpool Overview"})}),"\n",(0,t.jsx)(n.p,{children:'Rocketpool is a decentralized Ethereum staking solution that allows users to earn rewards by staking their Ether (ETH). It\'s designed to be inclusive, allowing those without the full 32 ETH required for an Ethereum validator to be able to participate. Rocketpool achieves this through its innovative "minipool" concept, which facilitates pooled staking among multiple participants.'}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h3,{id:"package-key-features",children:(0,t.jsx)(n.strong,{children:"Package Key Features"})}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Decentralized Staking:"})," The Rocketpool package ensures that staking remains decentralized by using your Dappnode's local Ethereum node, safeguarding the core principles of the Ethereum network. Rocketpool also operates on smart contracts, ensuring that operations are transparent, auditable, and free from centralized control."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Minipools:"})," Users can start a minipool with as little as 16 or 8 ETH, allowing for broader participation in Ethereum's block creation."]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsxs)(n.p,{children:[(0,t.jsx)(n.strong,{children:"Integrated with DappNode:"})," Easy setup, monitoring, and management of Rocketpool directly from your Dappnode interface."]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.h3,{id:"first-steps-to-start-a-minipool-with-rocketpool-and-dappnode",children:(0,t.jsx)(n.strong,{children:"First Steps to Start a Minipool with Rocketpool and Dappnode"})}),"\n",(0,t.jsxs)(n.ol,{children:["\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Package Installation:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"In your Dappnode's UI, navigate to the DAppStore."}),"\n",(0,t.jsxs)(n.li,{children:["Find the ",(0,t.jsx)(n.a,{href:"http://my.dappnode/installer/dnp/rocketpool.dnp.dappnode.eth",children:"Rocketpool package"}),"."]}),"\n",(0,t.jsx)(n.li,{children:"Click 'Install'. Once installed, the Rocketpool package should appear in your installed packages list."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Setting up the Environment:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Ensure you're running a full, synced Ethereum node (Execution client + Consensus client)."}),"\n",(0,t.jsxs)(n.li,{children:["If you are not running a full Ethereum node yet, go to the ",(0,t.jsx)(n.a,{href:"http://my.dappnode/stakers/ethereum",children:"Stakers Menu"}),", select your clients and apply the configuration to start synchronization."]}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Starting a Minipool:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Navigate to the Rocketpool package dashboard."}),"\n",(0,t.jsx)(n.li,{children:"Choose the amount of ETH you wish to stake. Remember, you can start a minipool with as little as 16 or 8 ETH."}),"\n",(0,t.jsx)(n.li,{children:"Follow the on-screen instructions to initialize your minipool."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Funding your Minipool:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsx)(n.li,{children:"Send the amount of ETH you\u2019ve chosen to the provided address. Make sure you keep track of this address, as it will be the address of your minipool."}),"\n"]}),"\n"]}),"\n",(0,t.jsxs)(n.li,{children:["\n",(0,t.jsx)(n.p,{children:(0,t.jsx)(n.strong,{children:"Monitoring and Management:"})}),"\n",(0,t.jsxs)(n.ul,{children:["\n",(0,t.jsxs)(n.li,{children:["Once your minipool is active, you can monitor its performance, rewards, and other details with Dappnode's ",(0,t.jsx)(n.a,{href:"/docs/user/packages/dms",children:"DMS"}),"."]}),"\n"]}),"\n"]}),"\n"]}),"\n",(0,t.jsx)(n.hr,{}),"\n",(0,t.jsx)(n.p,{children:"It's essential to remember that while Rocketpool simplifies the staking process, it's crucial to understand the risks involved. Always make sure to do thorough research and ensure the security of your investments."})]})}function p(e={}){const{wrapper:n}={...(0,s.a)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(d,{...e})}):d(e)}},1151:(e,n,o)=>{o.d(n,{Z:()=>l,a:()=>i});var t=o(7294);const s={},r=t.createContext(s);function i(e){const n=t.useContext(r);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function l(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(s):e.components||s:i(e.components),t.createElement(r.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/f4f34a3a.4131e8b1.js b/assets/js/f4f34a3a.01130eff.js similarity index 97% rename from assets/js/f4f34a3a.4131e8b1.js rename to assets/js/f4f34a3a.01130eff.js index 5b9d076d2..44c3aa6ca 100644 --- a/assets/js/f4f34a3a.4131e8b1.js +++ b/assets/js/f4f34a3a.01130eff.js @@ -1 +1 @@ -"use strict";(self.webpackChunkd_app_node_docs=self.webpackChunkd_app_node_docs||[]).push([[8636],{743:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>c,toc:()=>u});var s=o(5893),n=o(1151);const r={slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},a=void 0,c={permalink:"/blog/mdx-blog-post",source:"@site/blog/2021-08-01-mdx-blog-post.mdx",title:"MDX Blog Post",description:"Blog posts support Docusaurus Markdown features, such as MDX.",date:"2021-08-01T00:00:00.000Z",formattedDate:"August 1, 2021",tags:[{label:"docusaurus",permalink:"/blog/tags/docusaurus"}],readingTime:.175,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"}],frontMatter:{slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},unlisted:!1,prevItem:{title:"Welcome",permalink:"/blog/welcome"},nextItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},l={authorsImageUrls:[void 0]},u=[];function i(t){const e={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,n.a)(),...t.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(e.p,{children:["Blog posts support ",(0,s.jsx)(e.a,{href:"https://docusaurus.io/docs/markdown-features",children:"Docusaurus Markdown features"}),", such as ",(0,s.jsx)(e.a,{href:"https://mdxjs.com/",children:"MDX"}),"."]}),"\n",(0,s.jsxs)(e.admonition,{type:"tip",children:[(0,s.jsx)(e.p,{children:"Use the power of React to create interactive blog posts."}),(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-js",children:"\n"})}),(0,s.jsx)("button",{onClick:()=>alert("button clicked!"),children:"Click me!"})]})]})}function d(t={}){const{wrapper:e}={...(0,n.a)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(i,{...t})}):i(t)}},1151:(t,e,o)=>{o.d(e,{Z:()=>c,a:()=>a});var s=o(7294);const n={},r=s.createContext(n);function a(t){const e=s.useContext(r);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:a(t.components),s.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file +"use strict";(self.webpackChunkd_app_node_docs=self.webpackChunkd_app_node_docs||[]).push([[6203],{743:(t,e,o)=>{o.r(e),o.d(e,{assets:()=>l,contentTitle:()=>a,default:()=>d,frontMatter:()=>r,metadata:()=>c,toc:()=>u});var s=o(5893),n=o(1151);const r={slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},a=void 0,c={permalink:"/blog/mdx-blog-post",source:"@site/blog/2021-08-01-mdx-blog-post.mdx",title:"MDX Blog Post",description:"Blog posts support Docusaurus Markdown features, such as MDX.",date:"2021-08-01T00:00:00.000Z",formattedDate:"August 1, 2021",tags:[{label:"docusaurus",permalink:"/blog/tags/docusaurus"}],readingTime:.175,hasTruncateMarker:!1,authors:[{name:"S\xe9bastien Lorber",title:"Docusaurus maintainer",url:"https://sebastienlorber.com",imageURL:"https://github.com/slorber.png",key:"slorber"}],frontMatter:{slug:"mdx-blog-post",title:"MDX Blog Post",authors:["slorber"],tags:["docusaurus"]},unlisted:!1,prevItem:{title:"Welcome",permalink:"/blog/welcome"},nextItem:{title:"Long Blog Post",permalink:"/blog/long-blog-post"}},l={authorsImageUrls:[void 0]},u=[];function i(t){const e={a:"a",admonition:"admonition",code:"code",p:"p",pre:"pre",...(0,n.a)(),...t.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(e.p,{children:["Blog posts support ",(0,s.jsx)(e.a,{href:"https://docusaurus.io/docs/markdown-features",children:"Docusaurus Markdown features"}),", such as ",(0,s.jsx)(e.a,{href:"https://mdxjs.com/",children:"MDX"}),"."]}),"\n",(0,s.jsxs)(e.admonition,{type:"tip",children:[(0,s.jsx)(e.p,{children:"Use the power of React to create interactive blog posts."}),(0,s.jsx)(e.pre,{children:(0,s.jsx)(e.code,{className:"language-js",children:"\n"})}),(0,s.jsx)("button",{onClick:()=>alert("button clicked!"),children:"Click me!"})]})]})}function d(t={}){const{wrapper:e}={...(0,n.a)(),...t.components};return e?(0,s.jsx)(e,{...t,children:(0,s.jsx)(i,{...t})}):i(t)}},1151:(t,e,o)=>{o.d(e,{Z:()=>c,a:()=>a});var s=o(7294);const n={},r=s.createContext(n);function a(t){const e=s.useContext(r);return s.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function c(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(n):t.components||n:a(t.components),s.createElement(r.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/main.638740e0.js b/assets/js/main.638740e0.js new file mode 100644 index 000000000..14f642214 --- /dev/null +++ b/assets/js/main.638740e0.js @@ -0,0 +1,2 @@ +/*! For license information please see main.638740e0.js.LICENSE.txt */ +(self.webpackChunkd_app_node_docs=self.webpackChunkd_app_node_docs||[]).push([[179],{723:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});n(7294);var r=n(8356),o=n.n(r),a=n(6887);const i={"0085f636":[()=>n.e(8925).then(n.bind(n,9353)),"@site/docs/user/rollups/optimism.md",9353],"01a85c17":[()=>Promise.all([n.e(532),n.e(4013)]).then(n.bind(n,1223)),"@theme/BlogTagsListPage",1223],"027d004c":[()=>n.e(8352).then(n.bind(n,8470)),"@site/docs/dao/node-basics.md",8470],"031793e1":[()=>n.e(1633).then(n.t.bind(n,2511,19)),"~blog/default/blog-tags-facebook-038.json",2511],"0429b4a1":[()=>n.e(6197).then(n.bind(n,497)),"@site/docs/user/dappnode-cloud/providers/aws/overview.md",497],"058440e4":[()=>n.e(3964).then(n.bind(n,6529)),"@site/docs/user/staking/overview.md",6529],"065c701c":[()=>n.e(7197).then(n.t.bind(n,4469,19)),"/home/runner/work/DAppNodeDocs/DAppNodeDocs/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",4469],"090ba480":[()=>n.e(5788).then(n.bind(n,2963)),"@site/docs/smooth/deep-dive-into-smooth/overview.md",2963],"096bfee4":[()=>n.e(7178).then(n.t.bind(n,5010,19)),"~blog/default/blog-tags-facebook-038-list.json",5010],"0aa77f7e":[()=>n.e(4585).then(n.t.bind(n,5745,19)),"/home/runner/work/DAppNodeDocs/DAppNodeDocs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],"0af727f1":[()=>n.e(8999).then(n.bind(n,8071)),"@site/docs/smooth/faq-glossary.md",8071],"0f7f07eb":[()=>n.e(7675).then(n.bind(n,4027)),"@site/docs/user/access-your-dappnode/terminal.md",4027],"14c20d3a":[()=>n.e(903).then(n.bind(n,8377)),"@site/docs/user/staking/ethereum/solo/holesky.md",8377],17896441:[()=>Promise.all([n.e(532),n.e(7874),n.e(7918)]).then(n.bind(n,8945)),"@theme/DocItem",8945],"1a4e3797":[()=>Promise.all([n.e(532),n.e(7920)]).then(n.bind(n,1473)),"@theme/SearchPage",1473],"1df93b7f":[()=>Promise.all([n.e(532),n.e(3237)]).then(n.bind(n,8391)),"@site/src/pages/index.tsx",8391],"1e4f1bb9":[()=>n.e(1323).then(n.bind(n,5381)),"@site/docs/user/packages/dms.md",5381],"1ee5c5d2":[()=>n.e(3389).then(n.bind(n,6030)),"@site/docs/smooth/deep-dive-into-smooth/oracle-sm.md",6030],20034248:[()=>n.e(3743).then(n.bind(n,2627)),"@site/docs/user/ethical-metrics/overview.md",2627],"2057bc77":[()=>n.e(5091).then(n.bind(n,4386)),"@site/docs/user/hardware/maintenance.md",4386],"22a3df87":[()=>n.e(2559).then(n.bind(n,3585)),"@site/docs/user/install/script.md",3585],25229465:[()=>n.e(4952).then(n.bind(n,6639)),"@site/docs/user/ethical-metrics/metrics.md",6639],"29689ead":[()=>n.e(9344).then(n.bind(n,1373)),"@site/docs/smooth/deep-dive-into-smooth/vanilla-blocks.md",1373],"2a82f816":[()=>n.e(437).then(n.bind(n,1469)),"@site/docs/dev/references/manifest.md",1469],"2c509ddc":[()=>n.e(4840).then(n.bind(n,4550)),"@site/docs/smooth/subscribe-to-smooth/manual.md",4550],"3093fe32":[()=>n.e(641).then(n.bind(n,9024)),"@site/docs/user/dappnode-cloud/overview.md",9024],"30a24c52":[()=>n.e(453).then(n.t.bind(n,8605,19)),"~blog/default/blog-tags-hello-039.json",8605],"31f84294":[()=>n.e(3995).then(n.bind(n,9742)),"@site/docs/user/staking/gnosis-chain/incentive-program.md",9742],"342f5eb1":[()=>n.e(4350).then(n.bind(n,2808)),"@site/docs/user/staking/ethereum/lsd-pools/lido/overview.md",2808],"34d45c9f":[()=>n.e(7089).then(n.bind(n,1598)),"@site/docs/smooth.md",1598],"3f7aee3c":[()=>n.e(9779).then(n.bind(n,8801)),"@site/docs/user/access-your-dappnode/overview.md",8801],"3fac1d53":[()=>n.e(7533).then(n.bind(n,7771)),"@site/docs/smooth/deep-dive-into-smooth/states.md",7771],"4bb29089":[()=>n.e(4258).then(n.bind(n,2344)),"@site/docs/user/packages/understanding-dappnode-packages/overview.md",2344],"4c4b1a63":[()=>n.e(3504).then(n.bind(n,3043)),"@site/docs/user/videos-and-tutorials/driving-school/configuration.md",3043],"4c9e35b1":[()=>n.e(9035).then(n.t.bind(n,499,19)),"~blog/default/blog-tags-hola-ea2-list.json",499],"4d8f6977":[()=>n.e(5815).then(n.bind(n,718)),"@site/docs/user/staking/ethereum/dvt-technologies/obol-network.md",718],"51a190f1":[()=>n.e(8636).then(n.bind(n,2243)),"@site/docs/user/staking/ethereum/lsd-pools/lido/already-node-operator.md",2243],"536a4320":[()=>n.e(9374).then(n.bind(n,392)),"@site/docs/user/faqs.md",392],"5373dce7":[()=>n.e(1606).then(n.t.bind(n,2776,19)),"/home/runner/work/DAppNodeDocs/DAppNodeDocs/.docusaurus/@easyops-cn/docusaurus-search-local/default/plugin-route-context-module-100.json",2776],"53ed655b":[()=>n.e(5708).then(n.bind(n,3252)),"@site/docs/user/packages/monero.md",3252],"5456a9ed":[()=>n.e(1600).then(n.bind(n,242)),"@site/docs/user/access-your-dappnode/local.md",242],59362658:[()=>n.e(2267).then(n.bind(n,7797)),"@site/blog/2021-08-01-mdx-blog-post.mdx",7797],"59a51c52":[()=>n.e(4980).then(n.bind(n,9837)),"@site/docs/user/ethical-metrics/setup.md",9837],"5b35db5e":[()=>n.e(7775).then(n.bind(n,2292)),"@site/docs/user/access-your-dappnode/vpn/openvpn.md",2292],"5d0a1dad":[()=>n.e(306).then(n.bind(n,919)),"@site/docs/user/getting-started/choose-your-path.md",919],"5d665ce0":[()=>n.e(8646).then(n.bind(n,9513)),"@site/docs/user/hardware/overview.md",9513],"5e95c892":[()=>n.e(9661).then(n.bind(n,1892)),"@theme/DocsRoot",1892],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"5f141bf4":[()=>n.e(6796).then(n.bind(n,656)),"@site/docs/user/packages/understanding-dappnode-packages/logs.md",656],"5f877448":[()=>n.e(839).then(n.bind(n,6506)),"@site/docs/user/access-your-dappnode/vpn/overview.md",6506],"608ae6a4":[()=>n.e(6938).then(n.t.bind(n,4545,19)),"~blog/default/blog-tags-docusaurus-0e0-list.json",4545],66406991:[()=>n.e(110).then(n.t.bind(n,711,19)),"~blog/default/blog-tags-hello-039-list.json",711],"6696a323":[()=>n.e(4405).then(n.bind(n,6373)),"@site/docs/dev/package-development/multi-configuration.md",6373],"67625ece":[()=>n.e(120).then(n.bind(n,8386)),"@site/docs/dev/sdk/overview.md",8386],"6875c492":[()=>Promise.all([n.e(532),n.e(7874),n.e(130),n.e(8610)]).then(n.bind(n,1714)),"@theme/BlogTagsPostsPage",1714],"6c88006d":[()=>n.e(1285).then(n.t.bind(n,3769,19)),"/home/runner/work/DAppNodeDocs/DAppNodeDocs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"6e504cb9":[()=>n.e(9402).then(n.bind(n,865)),"@site/docs/user/dappnode-cloud/providers/coming-soon.md",865],"6e93d9f5":[()=>n.e(935).then(n.bind(n,1830)),"@site/docs/smooth/unsubscribe-from-smooth.md",1830],"73664a40":[()=>n.e(3514).then(n.bind(n,1985)),"@site/blog/2019-05-29-long-blog-post.md",1985],"747b92bf":[()=>n.e(4743).then(n.bind(n,2164)),"@site/docs/user/getting-started/connect-dappnode-to-the-router.md",2164],"7661071f":[()=>n.e(9642).then(n.bind(n,3174)),"@site/blog/2021-08-26-welcome/index.md?truncated=true",3174],"769f9326":[()=>n.e(8233).then(n.bind(n,2125)),"@site/docs/user/hardware/temperature.md",2125],"773dc9fa":[()=>n.e(6471).then(n.bind(n,740)),"@site/docs/smooth/subscribe-to-smooth/overview.md",740],"78d28be6":[()=>n.e(3686).then(n.bind(n,4225)),"@site/docs/user/packages/understanding-dappnode-packages/config.md",4225],"793beb66":[()=>n.e(3662).then(n.bind(n,4232)),"@site/docs/dev/package-development/single-configuration.md",4232],"7b2e8791":[()=>n.e(8804).then(n.bind(n,2935)),"@site/docs/dev/sdk/commands.md",2935],"7ef68c32":[()=>n.e(3036).then(n.bind(n,611)),"@site/docs/dao/node-stream.md",611],"814f3328":[()=>n.e(2535).then(n.t.bind(n,5641,19)),"~blog/default/blog-post-list-prop-default.json",5641],82063238:[()=>n.e(9984).then(n.bind(n,6789)),"@site/docs/dev/references/docker-compose.md",6789],"8717b14a":[()=>n.e(948).then(n.bind(n,7106)),"@site/blog/2019-05-29-long-blog-post.md?truncated=true",7106],"89600f1f":[()=>n.e(5599).then(n.bind(n,1471)),"@site/docs/dao/liquidity-mining.md",1471],"89b6dee8":[()=>n.e(3423).then(n.bind(n,8069)),"@site/docs/user/videos-and-tutorials/driving-school/initial-setup.md",8069],"89e2558e":[()=>n.e(5510).then(n.bind(n,2499)),"@site/docs/user/dappnode-cloud/providers/aws/set-up-instance.md",2499],"8c6013e9":[()=>n.e(6110).then(n.bind(n,1542)),"@site/docs/dev/github-actions.md",1542],"8ec292b8":[()=>n.e(9058).then(n.bind(n,277)),"@site/docs/user/getting-started/setup.md",277],"8f8bba55":[()=>n.e(3038).then(n.bind(n,4756)),"@site/docs/user/packages/understanding-dappnode-packages/backup.md",4756],"8f981d3f":[()=>n.e(6967).then(n.bind(n,742)),"@site/docs/user/staking/ethereum/dvt-technologies/diva.md",742],90558919:[()=>n.e(5458).then(n.bind(n,7597)),"@site/docs/user/getting-started/access-dappnode-via-wifi.md",7597],"91e54d81":[()=>n.e(2642).then(n.bind(n,7589)),"@site/docs/user/packages/signature.md",7589],"925b3f96":[()=>n.e(9003).then(n.bind(n,3902)),"@site/blog/2019-05-28-first-blog-post.md?truncated=true",3902],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"94131f31":[()=>n.e(4307).then(n.bind(n,6088)),"@site/docs/dev/references/setup-wizard.md",6088],"950718c7":[()=>n.e(1796).then(n.bind(n,78)),"@site/docs/dev.md",78],"9e4087bc":[()=>n.e(3608).then(n.bind(n,3169)),"@theme/BlogArchivePage",3169],"9e93dc42":[()=>n.e(938).then(n.bind(n,6559)),"@site/docs/user/install/iso.md",6559],a22f54b8:[()=>n.e(2702).then(n.bind(n,5450)),"@site/docs/user/packages/understanding-dappnode-packages/file-manager.md",5450],a33eb6a8:[()=>n.e(3680).then(n.bind(n,7749)),"@site/docs/user/staking/ethereum/lsd-pools/stakewise.md",7749],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(7874),n.e(130),n.e(3089)]).then(n.bind(n,46)),"@theme/BlogListPage",46],a7023ddc:[()=>n.e(1713).then(n.t.bind(n,3457,19)),"~blog/default/blog-tags-tags-4c2.json",3457],a7bd4aaa:[()=>n.e(8518).then(n.bind(n,8564)),"@theme/DocVersionRoot",8564],a80da1cf:[()=>n.e(3205).then(n.t.bind(n,4863,19)),"~blog/default/blog-tags-docusaurus-0e0.json",4863],a830b4cf:[()=>n.e(2920).then(n.bind(n,1312)),"@site/docs/user/staking/ethereum/lsd-pools/lido/register.md",1312],a83bdfda:[()=>n.e(8769).then(n.bind(n,9618)),"@site/docs/dao/faq.md",9618],a9241739:[()=>n.e(3295).then(n.bind(n,5137)),"@site/docs/user/ethical-metrics/troubleshooting.md",5137],a94703ab:[()=>Promise.all([n.e(532),n.e(4368)]).then(n.bind(n,2674)),"@theme/DocRoot",2674],a960b763:[()=>n.e(7484).then(n.bind(n,377)),"@site/docs/user/packages/swarm.md",377],af26485d:[()=>n.e(2217).then(n.bind(n,9316)),"@site/docs/user/repository/ipfs.md",9316],b1a9ae1f:[()=>n.e(8948).then(n.bind(n,4805)),"@site/docs/dev/package-development/overview.md",4805],b2b675dd:[()=>n.e(533).then(n.t.bind(n,8017,19)),"~blog/default/blog-c06.json",8017],b2f554cd:[()=>n.e(1477).then(n.t.bind(n,4556,19)),"~blog/default/blog-archive-80c.json",4556],b4800274:[()=>n.e(5561).then(n.bind(n,9620)),"@site/docs/user/rollups/overview.md",9620],b9b44023:[()=>n.e(5342).then(n.bind(n,2934)),"@site/docs/user/videos-and-tutorials/guides/migrating-from-avado.md",2934],b9c10046:[()=>n.e(4765).then(n.bind(n,7821)),"@site/docs/smooth/subscribe-to-smooth/automatic.md",7821],bebe2ff8:[()=>n.e(2370).then(n.bind(n,3370)),"@site/docs/user/packages/understanding-dappnode-packages/info.md",3370],c38c9aa9:[()=>n.e(8330).then(n.bind(n,6993)),"@site/docs/user/install/overview.md",6993],c75934c3:[()=>n.e(4374).then(n.bind(n,152)),"@site/docs/dev/sdk/sdk-publish.md",152],c7a466cb:[()=>n.e(78).then(n.bind(n,5367)),"@site/docs/user/getting-started/register.md",5367],c9627cbc:[()=>n.e(468).then(n.bind(n,1726)),"@site/docs/user/videos-and-tutorials/crash-course.md",1726],cbc5934e:[()=>n.e(651).then(n.bind(n,4759)),"@site/docs/dao.md",4759],ccc49370:[()=>Promise.all([n.e(532),n.e(7874),n.e(130),n.e(6103)]).then(n.bind(n,5203)),"@theme/BlogPostPage",5203],cdc6bc37:[()=>n.e(4407).then(n.bind(n,4855)),"@site/docs/smooth/deep-dive-into-smooth/rewards.md",4855],d267b4aa:[()=>n.e(7563).then(n.bind(n,9409)),"@site/docs/user/getting-started/next-steps.md",9409],d36fd63a:[()=>n.e(6593).then(n.bind(n,2825)),"@site/docs/user/staking/lukso/solo.md",2825],d47e1b16:[()=>n.e(9739).then(n.bind(n,3453)),"@site/docs/user/packages/bitcoin.md",3453],d508510a:[()=>n.e(2245).then(n.bind(n,9065)),"@site/docs/user/videos-and-tutorials/overview.md",9065],d61c7726:[()=>n.e(5940).then(n.bind(n,2546)),"@site/docs/user/install/arm.md",2546],d6c02fb6:[()=>n.e(3633).then(n.bind(n,9745)),"@site/docs/user/staking/ethereum/solo/mainnet.md",9745],d912498a:[()=>n.e(6209).then(n.bind(n,4775)),"@site/docs/user/repository/ethereum.md",4775],d9f32620:[()=>n.e(1914).then(n.bind(n,8123)),"@site/blog/2021-08-26-welcome/index.md",8123],df56bb67:[()=>n.e(5030).then(n.bind(n,1836)),"@site/docs/user/packages/understanding-dappnode-packages/network.md",1836],dfbda110:[()=>n.e(8162).then(n.bind(n,9097)),"@site/docs/user/packages/avalanche.md",9097],dfcea9c7:[()=>n.e(2441).then(n.bind(n,6238)),"@site/docs/user/access-your-dappnode/wifi.md",6238],e16015ca:[()=>n.e(9700).then(n.t.bind(n,5688,19)),"~blog/default/blog-tags-hola-ea2.json",5688],e26c9afe:[()=>n.e(1206).then(n.bind(n,1291)),"@site/docs/user/staking/ethereum/lsd-pools/stakehouse.md",1291],e273c56f:[()=>n.e(2362).then(n.bind(n,9954)),"@site/blog/2019-05-28-first-blog-post.md",9954],e28e223d:[()=>n.e(9091).then(n.bind(n,2755)),"@site/docs/user/access-your-dappnode/vpn/wireguard.md",2755],e7ae4afa:[()=>n.e(190).then(n.bind(n,4352)),"@site/docs/user/packages/ethclassic.md",4352],e7fcc526:[()=>n.e(5447).then(n.bind(n,5861)),"@site/docs/user/staking/ethereum/dvt-technologies/ssv-network.md",5861],ed77d0ad:[()=>n.e(3218).then(n.bind(n,2250)),"@site/docs/user/staking/ethereum/lsd-pools/rocketpool.md",2250],eef43c71:[()=>n.e(7365).then(n.bind(n,2477)),"@site/docs/user/staking/gnosis-chain/solo.md",2477],ef41a71b:[()=>n.e(4588).then(n.bind(n,1545)),"@site/docs/user/install/dappnode-commands.md",1545],f4f34a3a:[()=>n.e(6203).then(n.bind(n,743)),"@site/blog/2021-08-01-mdx-blog-post.mdx?truncated=true",743],f557db91:[()=>n.e(4543).then(n.bind(n,2089)),"@site/docs/dao/node-drop.md",2089],f744a4d0:[()=>n.e(1605).then(n.bind(n,2747)),"@site/docs/user/videos-and-tutorials/guides/connect-node.md",2747],fcb270fb:[()=>n.e(7410).then(n.bind(n,9831)),"@site/docs/user/dappnode-cloud/providers/aws/faqs.md",9831]};var s=n(5893);function l(e){let{error:t,retry:n,pastDelay:r}=e;return t?(0,s.jsxs)("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"},children:[(0,s.jsx)("p",{children:String(t)}),(0,s.jsx)("div",{children:(0,s.jsx)("button",{type:"button",onClick:n,children:"Retry"})})]}):r?(0,s.jsx)("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"},children:(0,s.jsx)("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb",children:(0,s.jsxs)("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2",children:[(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsxs)("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0",children:[(0,s.jsx)("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),(0,s.jsx)("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})]}),(0,s.jsx)("circle",{cx:"22",cy:"22",r:"8",children:(0,s.jsx)("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"})})]})})}):null}var c=n(9670),u=n(226);function d(e,t){if("*"===e)return o()({loading:l,loader:()=>n.e(1772).then(n.bind(n,1772)),modules:["@theme/NotFound"],webpack:()=>[1772],render(e,t){const n=e.default;return(0,s.jsx)(u.z,{value:{plugin:{name:"native",id:"default"}},children:(0,s.jsx)(n,{...t})})}});const r=a[`${e}-${t}`],d={},p=[],f=[],h=(0,c.Z)(r);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=i[n];r&&(d[t]=r[0],p.push(r[1]),f.push(r[2]))})),o().Map({loading:l,loader:d,modules:p,webpack:()=>f,render(t,n){const o=JSON.parse(JSON.stringify(r));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let i=o;const s=n.split(".");s.slice(0,-1).forEach((e=>{i=i[e]})),i[s[s.length-1]]=a}));const a=o.__comp;delete o.__comp;const i=o.__context;return delete o.__context,(0,s.jsx)(u.z,{value:i,children:(0,s.jsx)(a,{...o,...n})})}})}const p=[{path:"/blog",component:d("/blog","62a"),exact:!0},{path:"/blog/archive",component:d("/blog/archive","818"),exact:!0},{path:"/blog/first-blog-post",component:d("/blog/first-blog-post","0b3"),exact:!0},{path:"/blog/long-blog-post",component:d("/blog/long-blog-post","a48"),exact:!0},{path:"/blog/mdx-blog-post",component:d("/blog/mdx-blog-post","f6d"),exact:!0},{path:"/blog/tags",component:d("/blog/tags","3c3"),exact:!0},{path:"/blog/tags/docusaurus",component:d("/blog/tags/docusaurus","e09"),exact:!0},{path:"/blog/tags/facebook",component:d("/blog/tags/facebook","66f"),exact:!0},{path:"/blog/tags/hello",component:d("/blog/tags/hello","f71"),exact:!0},{path:"/blog/tags/hola",component:d("/blog/tags/hola","fee"),exact:!0},{path:"/blog/welcome",component:d("/blog/welcome","4bd"),exact:!0},{path:"/search",component:d("/search","af0"),exact:!0},{path:"/docs",component:d("/docs","823"),routes:[{path:"/docs",component:d("/docs","5a0"),routes:[{path:"/docs",component:d("/docs","7cd"),routes:[{path:"/docs/dao",component:d("/docs/dao","f08"),exact:!0,sidebar:"daoSidebar"},{path:"/docs/dao/faq",component:d("/docs/dao/faq","93b"),exact:!0,sidebar:"daoSidebar"},{path:"/docs/dao/liquidity-mining",component:d("/docs/dao/liquidity-mining","f84"),exact:!0,sidebar:"daoSidebar"},{path:"/docs/dao/node-basics",component:d("/docs/dao/node-basics","5aa"),exact:!0,sidebar:"daoSidebar"},{path:"/docs/dao/node-drop",component:d("/docs/dao/node-drop","188"),exact:!0},{path:"/docs/dao/node-stream",component:d("/docs/dao/node-stream","e47"),exact:!0},{path:"/docs/dev",component:d("/docs/dev","921"),exact:!0,sidebar:"devSidebar"},{path:"/docs/dev/github-actions",component:d("/docs/dev/github-actions","769"),exact:!0,sidebar:"devSidebar"},{path:"/docs/dev/package-development/multi-configuration",component:d("/docs/dev/package-development/multi-configuration","4c7"),exact:!0,sidebar:"devSidebar"},{path:"/docs/dev/package-development/overview",component:d("/docs/dev/package-development/overview","5ee"),exact:!0,sidebar:"devSidebar"},{path:"/docs/dev/package-development/single-configuration",component:d("/docs/dev/package-development/single-configuration","966"),exact:!0,sidebar:"devSidebar"},{path:"/docs/dev/references/docker-compose",component:d("/docs/dev/references/docker-compose","7b3"),exact:!0,sidebar:"devSidebar"},{path:"/docs/dev/references/manifest",component:d("/docs/dev/references/manifest","6e9"),exact:!0,sidebar:"devSidebar"},{path:"/docs/dev/references/setup-wizard",component:d("/docs/dev/references/setup-wizard","900"),exact:!0,sidebar:"devSidebar"},{path:"/docs/dev/sdk/commands",component:d("/docs/dev/sdk/commands","665"),exact:!0,sidebar:"devSidebar"},{path:"/docs/dev/sdk/overview",component:d("/docs/dev/sdk/overview","4c1"),exact:!0,sidebar:"devSidebar"},{path:"/docs/dev/sdk/sdk-publish",component:d("/docs/dev/sdk/sdk-publish","2cb"),exact:!0,sidebar:"devSidebar"},{path:"/docs/smooth",component:d("/docs/smooth","9c0"),exact:!0,sidebar:"smoothSidebar"},{path:"/docs/smooth/deep-dive-into-smooth/oracle-sm",component:d("/docs/smooth/deep-dive-into-smooth/oracle-sm","986"),exact:!0,sidebar:"smoothSidebar"},{path:"/docs/smooth/deep-dive-into-smooth/overview",component:d("/docs/smooth/deep-dive-into-smooth/overview","79c"),exact:!0,sidebar:"smoothSidebar"},{path:"/docs/smooth/deep-dive-into-smooth/rewards",component:d("/docs/smooth/deep-dive-into-smooth/rewards","20c"),exact:!0,sidebar:"smoothSidebar"},{path:"/docs/smooth/deep-dive-into-smooth/states",component:d("/docs/smooth/deep-dive-into-smooth/states","3a4"),exact:!0,sidebar:"smoothSidebar"},{path:"/docs/smooth/deep-dive-into-smooth/vanilla-blocks",component:d("/docs/smooth/deep-dive-into-smooth/vanilla-blocks","dd4"),exact:!0,sidebar:"smoothSidebar"},{path:"/docs/smooth/faq-glossary",component:d("/docs/smooth/faq-glossary","d7a"),exact:!0,sidebar:"smoothSidebar"},{path:"/docs/smooth/subscribe-to-smooth/automatic",component:d("/docs/smooth/subscribe-to-smooth/automatic","53c"),exact:!0,sidebar:"smoothSidebar"},{path:"/docs/smooth/subscribe-to-smooth/manual",component:d("/docs/smooth/subscribe-to-smooth/manual","dd2"),exact:!0,sidebar:"smoothSidebar"},{path:"/docs/smooth/subscribe-to-smooth/overview",component:d("/docs/smooth/subscribe-to-smooth/overview","713"),exact:!0,sidebar:"smoothSidebar"},{path:"/docs/smooth/unsubscribe-from-smooth",component:d("/docs/smooth/unsubscribe-from-smooth","032"),exact:!0,sidebar:"smoothSidebar"},{path:"/docs/user/access-your-dappnode/local",component:d("/docs/user/access-your-dappnode/local","24f"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/access-your-dappnode/overview",component:d("/docs/user/access-your-dappnode/overview","e1d"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/access-your-dappnode/terminal",component:d("/docs/user/access-your-dappnode/terminal","4de"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/access-your-dappnode/vpn/openvpn",component:d("/docs/user/access-your-dappnode/vpn/openvpn","39c"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/access-your-dappnode/vpn/overview",component:d("/docs/user/access-your-dappnode/vpn/overview","ff5"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/access-your-dappnode/vpn/wireguard",component:d("/docs/user/access-your-dappnode/vpn/wireguard","40b"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/access-your-dappnode/wifi",component:d("/docs/user/access-your-dappnode/wifi","60d"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/dappnode-cloud/overview",component:d("/docs/user/dappnode-cloud/overview","8a1"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/dappnode-cloud/providers/aws/faqs",component:d("/docs/user/dappnode-cloud/providers/aws/faqs","ff8"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/dappnode-cloud/providers/aws/overview",component:d("/docs/user/dappnode-cloud/providers/aws/overview","a22"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/dappnode-cloud/providers/aws/set-up-instance",component:d("/docs/user/dappnode-cloud/providers/aws/set-up-instance","a3c"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/dappnode-cloud/providers/coming-soon",component:d("/docs/user/dappnode-cloud/providers/coming-soon","971"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/ethical-metrics/metrics",component:d("/docs/user/ethical-metrics/metrics","b30"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/ethical-metrics/overview",component:d("/docs/user/ethical-metrics/overview","059"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/ethical-metrics/setup",component:d("/docs/user/ethical-metrics/setup","0d8"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/ethical-metrics/troubleshooting",component:d("/docs/user/ethical-metrics/troubleshooting","373"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/faqs",component:d("/docs/user/faqs","884"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/getting-started/access-dappnode-via-wifi",component:d("/docs/user/getting-started/access-dappnode-via-wifi","920"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/getting-started/choose-your-path",component:d("/docs/user/getting-started/choose-your-path","daf"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/getting-started/connect-dappnode-to-the-router",component:d("/docs/user/getting-started/connect-dappnode-to-the-router","90c"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/getting-started/next-steps",component:d("/docs/user/getting-started/next-steps","4fe"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/getting-started/register",component:d("/docs/user/getting-started/register","fff"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/getting-started/setup",component:d("/docs/user/getting-started/setup","901"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/hardware/maintenance",component:d("/docs/user/hardware/maintenance","546"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/hardware/overview",component:d("/docs/user/hardware/overview","c38"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/hardware/temperature",component:d("/docs/user/hardware/temperature","676"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/install/arm",component:d("/docs/user/install/arm","89f"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/install/dappnode-commands",component:d("/docs/user/install/dappnode-commands","109"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/install/iso",component:d("/docs/user/install/iso","3bd"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/install/overview",component:d("/docs/user/install/overview","0da"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/install/script",component:d("/docs/user/install/script","2a7"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/packages/avalanche",component:d("/docs/user/packages/avalanche","201"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/packages/bitcoin",component:d("/docs/user/packages/bitcoin","216"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/packages/dms",component:d("/docs/user/packages/dms","412"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/packages/ethclassic",component:d("/docs/user/packages/ethclassic","6d5"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/packages/monero",component:d("/docs/user/packages/monero","b8c"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/packages/signature",component:d("/docs/user/packages/signature","7f0"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/packages/swarm",component:d("/docs/user/packages/swarm","444"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/packages/understanding-dappnode-packages/backup",component:d("/docs/user/packages/understanding-dappnode-packages/backup","509"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/packages/understanding-dappnode-packages/config",component:d("/docs/user/packages/understanding-dappnode-packages/config","7b5"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/packages/understanding-dappnode-packages/file-manager",component:d("/docs/user/packages/understanding-dappnode-packages/file-manager","317"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/packages/understanding-dappnode-packages/info",component:d("/docs/user/packages/understanding-dappnode-packages/info","cea"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/packages/understanding-dappnode-packages/logs",component:d("/docs/user/packages/understanding-dappnode-packages/logs","a6b"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/packages/understanding-dappnode-packages/network",component:d("/docs/user/packages/understanding-dappnode-packages/network","6e8"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/packages/understanding-dappnode-packages/overview",component:d("/docs/user/packages/understanding-dappnode-packages/overview","83a"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/repository/ethereum",component:d("/docs/user/repository/ethereum","657"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/repository/ipfs",component:d("/docs/user/repository/ipfs","8c2"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/rollups/optimism",component:d("/docs/user/rollups/optimism","cfe"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/rollups/overview",component:d("/docs/user/rollups/overview","a8a"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/ethereum/dvt-technologies/diva",component:d("/docs/user/staking/ethereum/dvt-technologies/diva","cf2"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/ethereum/dvt-technologies/obol-network",component:d("/docs/user/staking/ethereum/dvt-technologies/obol-network","770"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/ethereum/dvt-technologies/ssv-network",component:d("/docs/user/staking/ethereum/dvt-technologies/ssv-network","085"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/ethereum/lsd-pools/lido/already-node-operator",component:d("/docs/user/staking/ethereum/lsd-pools/lido/already-node-operator","c93"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/ethereum/lsd-pools/lido/overview",component:d("/docs/user/staking/ethereum/lsd-pools/lido/overview","107"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/ethereum/lsd-pools/lido/register",component:d("/docs/user/staking/ethereum/lsd-pools/lido/register","0ff"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/ethereum/lsd-pools/rocketpool",component:d("/docs/user/staking/ethereum/lsd-pools/rocketpool","fa6"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/ethereum/lsd-pools/stakehouse",component:d("/docs/user/staking/ethereum/lsd-pools/stakehouse","42f"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/ethereum/lsd-pools/stakewise",component:d("/docs/user/staking/ethereum/lsd-pools/stakewise","ee5"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/ethereum/solo/holesky",component:d("/docs/user/staking/ethereum/solo/holesky","301"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/ethereum/solo/mainnet",component:d("/docs/user/staking/ethereum/solo/mainnet","951"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/gnosis-chain/incentive-program",component:d("/docs/user/staking/gnosis-chain/incentive-program","aa2"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/gnosis-chain/solo",component:d("/docs/user/staking/gnosis-chain/solo","1f9"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/lukso/solo",component:d("/docs/user/staking/lukso/solo","a2e"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/staking/overview",component:d("/docs/user/staking/overview","93e"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/videos-and-tutorials/crash-course",component:d("/docs/user/videos-and-tutorials/crash-course","a95"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/videos-and-tutorials/driving-school/configuration",component:d("/docs/user/videos-and-tutorials/driving-school/configuration","8d6"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/videos-and-tutorials/driving-school/initial-setup",component:d("/docs/user/videos-and-tutorials/driving-school/initial-setup","59c"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/videos-and-tutorials/guides/connect-node",component:d("/docs/user/videos-and-tutorials/guides/connect-node","1da"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/videos-and-tutorials/guides/migrating-from-avado",component:d("/docs/user/videos-and-tutorials/guides/migrating-from-avado","38e"),exact:!0,sidebar:"userSidebar"},{path:"/docs/user/videos-and-tutorials/overview",component:d("/docs/user/videos-and-tutorials/overview","a86"),exact:!0}]}]}]},{path:"/",component:d("/","4a5"),exact:!0},{path:"*",component:d("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>i});var r=n(7294),o=n(5893);const a=r.createContext(!1);function i(e){let{children:t}=e;const[n,i]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{i(!0)}),[]),(0,o.jsx)(a.Provider,{value:n,children:t})}},7221:(e,t,n)=>{"use strict";var r=n(7294),o=n(745),a=n(3727),i=n(405),s=n(412);const l=[n(2497),n(3310),n(8320),n(2295)];var c=n(723),u=n(6550),d=n(8790),p=n(5893);function f(e){let{children:t}=e;return(0,p.jsx)(p.Fragment,{children:t})}var h=n(5742),m=n(2263),g=n(4996),b=n(6668),y=n(1944),v=n(4711),w=n(9727),k=n(3320),x=n(8780),S=n(197);function _(){const{i18n:{currentLocale:e,defaultLocale:t,localeConfigs:n}}=(0,m.Z)(),r=(0,v.l)(),o=n[e].htmlLang,a=e=>e.replace("-","_");return(0,p.jsxs)(h.Z,{children:[Object.entries(n).map((e=>{let[t,{htmlLang:n}]=e;return(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:n},t)})),(0,p.jsx)("link",{rel:"alternate",href:r.createUrl({locale:t,fullyQualified:!0}),hrefLang:"x-default"}),(0,p.jsx)("meta",{property:"og:locale",content:a(o)}),Object.values(n).filter((e=>o!==e.htmlLang)).map((e=>(0,p.jsx)("meta",{property:"og:locale:alternate",content:a(e.htmlLang)},`meta-og-${e.htmlLang}`)))]})}function E(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,m.Z)(),r=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,m.Z)(),{pathname:r}=(0,u.TH)();return e+(0,x.applyTrailingSlash)((0,g.Z)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:r;return(0,p.jsxs)(h.Z,{children:[(0,p.jsx)("meta",{property:"og:url",content:o}),(0,p.jsx)("link",{rel:"canonical",href:o})]})}function C(){const{i18n:{currentLocale:e}}=(0,m.Z)(),{metadata:t,image:n}=(0,b.L)();return(0,p.jsxs)(p.Fragment,{children:[(0,p.jsxs)(h.Z,{children:[(0,p.jsx)("meta",{name:"twitter:card",content:"summary_large_image"}),(0,p.jsx)("body",{className:w.h})]}),n&&(0,p.jsx)(y.d,{image:n}),(0,p.jsx)(E,{}),(0,p.jsx)(_,{}),(0,p.jsx)(S.Z,{tag:k.HX,locale:e}),(0,p.jsx)(h.Z,{children:t.map(((e,t)=>(0,p.jsx)("meta",{...e},t)))})]})}const T=new Map;function L(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return T.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return T.set(e.pathname,t),{...e,pathname:t}}var j=n(8934),P=n(8940),R=n(469);function A(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{const r=t.default?.[e]??t[e];return r?.(...n)}));return()=>o.forEach((e=>e?.()))}const N=function(e){let{children:t,location:n,previousLocation:r}=e;return(0,R.Z)((()=>{r!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,o=t.hash===n.hash,a=t.search===n.search;if(r&&o&&!a)return;const{hash:i}=t;if(i){const e=decodeURIComponent(i.substring(1)),t=document.getElementById(e);t?.scrollIntoView()}else window.scrollTo(0,0)}({location:n,previousLocation:r}),A("onRouteDidUpdate",{previousLocation:r,location:n}))}),[r,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>e.route.component.preload?.())))}class D extends r.Component{previousLocation;routeUpdateCleanupCb;constructor(e){super(e),this.previousLocation=null,this.routeUpdateCleanupCb=s.Z.canUseDOM?A("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=A("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return(0,p.jsx)(N,{previousLocation:this.previousLocation,location:t,children:(0,p.jsx)(u.AW,{location:t,render:()=>e})})}}const I=D,F="__docusaurus-base-url-issue-banner-container",M="__docusaurus-base-url-issue-banner",z="__docusaurus-base-url-issue-banner-suggestion-container";function B(e){return`\ndocument.addEventListener('DOMContentLoaded', function maybeInsertBanner() {\n var shouldInsert = typeof window['docusaurus'] === 'undefined';\n shouldInsert && insertBanner();\n});\n\nfunction insertBanner() {\n var bannerContainer = document.createElement('div');\n bannerContainer.id = '${F}';\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{if("undefined"==typeof document)return void n();const r=document.createElement("link");r.setAttribute("rel","prefetch"),r.setAttribute("href",e),r.onload=()=>t(),r.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;o?.appendChild(r)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var K=n(9670);const Y=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Y.has(e))(e))return!1;Y.add(e);const t=(0,d.f)(c.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(W).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,K.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?G(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),O(e))},te=Object.freeze(ee),ne=Boolean(!0);if(s.Z.canUseDOM){window.docusaurus=te;const e=document.getElementById("__docusaurus"),t=(0,p.jsx)(i.B6,{children:(0,p.jsx)(a.VK,{children:(0,p.jsx)(V,{})})}),n=(e,t)=>{console.error("Docusaurus React Root onRecoverableError:",e,t)},s=()=>{if(ne)r.startTransition((()=>{o.hydrateRoot(e,t,{onRecoverableError:n})}));else{const a=o.createRoot(e,{onRecoverableError:n});r.startTransition((()=>{a.render(t)}))}};O(window.location.pathname).then(s)}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>d,M:()=>p});var r=n(7294),o=n(6809);const a=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"user/getting-started/choose-your-path","docs":[{"id":"dao","path":"/docs/dao","sidebar":"daoSidebar"},{"id":"dao/faq","path":"/docs/dao/faq","sidebar":"daoSidebar"},{"id":"dao/liquidity-mining","path":"/docs/dao/liquidity-mining","sidebar":"daoSidebar"},{"id":"dao/node-basics","path":"/docs/dao/node-basics","sidebar":"daoSidebar"},{"id":"dao/node-drop","path":"/docs/dao/node-drop"},{"id":"dao/node-stream","path":"/docs/dao/node-stream"},{"id":"dev","path":"/docs/dev","sidebar":"devSidebar"},{"id":"dev/github-actions","path":"/docs/dev/github-actions","sidebar":"devSidebar"},{"id":"dev/package-development/multi-configuration","path":"/docs/dev/package-development/multi-configuration","sidebar":"devSidebar"},{"id":"dev/package-development/overview","path":"/docs/dev/package-development/overview","sidebar":"devSidebar"},{"id":"dev/package-development/single-configuration","path":"/docs/dev/package-development/single-configuration","sidebar":"devSidebar"},{"id":"dev/references/docker-compose","path":"/docs/dev/references/docker-compose","sidebar":"devSidebar"},{"id":"dev/references/manifest","path":"/docs/dev/references/manifest","sidebar":"devSidebar"},{"id":"dev/references/setup-wizard","path":"/docs/dev/references/setup-wizard","sidebar":"devSidebar"},{"id":"dev/sdk/commands","path":"/docs/dev/sdk/commands","sidebar":"devSidebar"},{"id":"dev/sdk/overview","path":"/docs/dev/sdk/overview","sidebar":"devSidebar"},{"id":"dev/sdk/sdk-publish","path":"/docs/dev/sdk/sdk-publish","sidebar":"devSidebar"},{"id":"smooth","path":"/docs/smooth","sidebar":"smoothSidebar"},{"id":"smooth/deep-dive-into-smooth/oracle-sm","path":"/docs/smooth/deep-dive-into-smooth/oracle-sm","sidebar":"smoothSidebar"},{"id":"smooth/deep-dive-into-smooth/overview","path":"/docs/smooth/deep-dive-into-smooth/overview","sidebar":"smoothSidebar"},{"id":"smooth/deep-dive-into-smooth/rewards","path":"/docs/smooth/deep-dive-into-smooth/rewards","sidebar":"smoothSidebar"},{"id":"smooth/deep-dive-into-smooth/states","path":"/docs/smooth/deep-dive-into-smooth/states","sidebar":"smoothSidebar"},{"id":"smooth/deep-dive-into-smooth/vanilla-blocks","path":"/docs/smooth/deep-dive-into-smooth/vanilla-blocks","sidebar":"smoothSidebar"},{"id":"smooth/faq-glossary","path":"/docs/smooth/faq-glossary","sidebar":"smoothSidebar"},{"id":"smooth/subscribe-to-smooth/automatic","path":"/docs/smooth/subscribe-to-smooth/automatic","sidebar":"smoothSidebar"},{"id":"smooth/subscribe-to-smooth/manual","path":"/docs/smooth/subscribe-to-smooth/manual","sidebar":"smoothSidebar"},{"id":"smooth/subscribe-to-smooth/overview","path":"/docs/smooth/subscribe-to-smooth/overview","sidebar":"smoothSidebar"},{"id":"smooth/unsubscribe-from-smooth","path":"/docs/smooth/unsubscribe-from-smooth","sidebar":"smoothSidebar"},{"id":"user/access-your-dappnode/local","path":"/docs/user/access-your-dappnode/local","sidebar":"userSidebar"},{"id":"user/access-your-dappnode/overview","path":"/docs/user/access-your-dappnode/overview","sidebar":"userSidebar"},{"id":"user/access-your-dappnode/terminal","path":"/docs/user/access-your-dappnode/terminal","sidebar":"userSidebar"},{"id":"user/access-your-dappnode/vpn/openvpn","path":"/docs/user/access-your-dappnode/vpn/openvpn","sidebar":"userSidebar"},{"id":"user/access-your-dappnode/vpn/overview","path":"/docs/user/access-your-dappnode/vpn/overview","sidebar":"userSidebar"},{"id":"user/access-your-dappnode/vpn/wireguard","path":"/docs/user/access-your-dappnode/vpn/wireguard","sidebar":"userSidebar"},{"id":"user/access-your-dappnode/wifi","path":"/docs/user/access-your-dappnode/wifi","sidebar":"userSidebar"},{"id":"user/dappnode-cloud/overview","path":"/docs/user/dappnode-cloud/overview","sidebar":"userSidebar"},{"id":"user/dappnode-cloud/providers/aws/faqs","path":"/docs/user/dappnode-cloud/providers/aws/faqs","sidebar":"userSidebar"},{"id":"user/dappnode-cloud/providers/aws/overview","path":"/docs/user/dappnode-cloud/providers/aws/overview","sidebar":"userSidebar"},{"id":"user/dappnode-cloud/providers/aws/set-up-instance","path":"/docs/user/dappnode-cloud/providers/aws/set-up-instance","sidebar":"userSidebar"},{"id":"user/dappnode-cloud/providers/coming-soon","path":"/docs/user/dappnode-cloud/providers/coming-soon","sidebar":"userSidebar"},{"id":"user/ethical-metrics/metrics","path":"/docs/user/ethical-metrics/metrics","sidebar":"userSidebar"},{"id":"user/ethical-metrics/overview","path":"/docs/user/ethical-metrics/overview","sidebar":"userSidebar"},{"id":"user/ethical-metrics/setup","path":"/docs/user/ethical-metrics/setup","sidebar":"userSidebar"},{"id":"user/ethical-metrics/troubleshooting","path":"/docs/user/ethical-metrics/troubleshooting","sidebar":"userSidebar"},{"id":"user/faqs","path":"/docs/user/faqs","sidebar":"userSidebar"},{"id":"user/getting-started/access-dappnode-via-wifi","path":"/docs/user/getting-started/access-dappnode-via-wifi","sidebar":"userSidebar"},{"id":"user/getting-started/choose-your-path","path":"/docs/user/getting-started/choose-your-path","sidebar":"userSidebar"},{"id":"user/getting-started/connect-dappnode-to-the-router","path":"/docs/user/getting-started/connect-dappnode-to-the-router","sidebar":"userSidebar"},{"id":"user/getting-started/next-steps","path":"/docs/user/getting-started/next-steps","sidebar":"userSidebar"},{"id":"user/getting-started/register","path":"/docs/user/getting-started/register","sidebar":"userSidebar"},{"id":"user/getting-started/setup","path":"/docs/user/getting-started/setup","sidebar":"userSidebar"},{"id":"user/hardware/maintenance","path":"/docs/user/hardware/maintenance","sidebar":"userSidebar"},{"id":"user/hardware/overview","path":"/docs/user/hardware/overview","sidebar":"userSidebar"},{"id":"user/hardware/temperature","path":"/docs/user/hardware/temperature","sidebar":"userSidebar"},{"id":"user/install/arm","path":"/docs/user/install/arm","sidebar":"userSidebar"},{"id":"user/install/dappnode-commands","path":"/docs/user/install/dappnode-commands","sidebar":"userSidebar"},{"id":"user/install/iso","path":"/docs/user/install/iso","sidebar":"userSidebar"},{"id":"user/install/overview","path":"/docs/user/install/overview","sidebar":"userSidebar"},{"id":"user/install/script","path":"/docs/user/install/script","sidebar":"userSidebar"},{"id":"user/packages/avalanche","path":"/docs/user/packages/avalanche","sidebar":"userSidebar"},{"id":"user/packages/bitcoin","path":"/docs/user/packages/bitcoin","sidebar":"userSidebar"},{"id":"user/packages/dms","path":"/docs/user/packages/dms","sidebar":"userSidebar"},{"id":"user/packages/ethclassic","path":"/docs/user/packages/ethclassic","sidebar":"userSidebar"},{"id":"user/packages/monero","path":"/docs/user/packages/monero","sidebar":"userSidebar"},{"id":"user/packages/signature","path":"/docs/user/packages/signature","sidebar":"userSidebar"},{"id":"user/packages/swarm","path":"/docs/user/packages/swarm","sidebar":"userSidebar"},{"id":"user/packages/understanding-dappnode-packages/backup","path":"/docs/user/packages/understanding-dappnode-packages/backup","sidebar":"userSidebar"},{"id":"user/packages/understanding-dappnode-packages/config","path":"/docs/user/packages/understanding-dappnode-packages/config","sidebar":"userSidebar"},{"id":"user/packages/understanding-dappnode-packages/file-manager","path":"/docs/user/packages/understanding-dappnode-packages/file-manager","sidebar":"userSidebar"},{"id":"user/packages/understanding-dappnode-packages/info","path":"/docs/user/packages/understanding-dappnode-packages/info","sidebar":"userSidebar"},{"id":"user/packages/understanding-dappnode-packages/logs","path":"/docs/user/packages/understanding-dappnode-packages/logs","sidebar":"userSidebar"},{"id":"user/packages/understanding-dappnode-packages/network","path":"/docs/user/packages/understanding-dappnode-packages/network","sidebar":"userSidebar"},{"id":"user/packages/understanding-dappnode-packages/overview","path":"/docs/user/packages/understanding-dappnode-packages/overview","sidebar":"userSidebar"},{"id":"user/repository/ethereum","path":"/docs/user/repository/ethereum","sidebar":"userSidebar"},{"id":"user/repository/ipfs","path":"/docs/user/repository/ipfs","sidebar":"userSidebar"},{"id":"user/rollups/optimism","path":"/docs/user/rollups/optimism","sidebar":"userSidebar"},{"id":"user/rollups/overview","path":"/docs/user/rollups/overview","sidebar":"userSidebar"},{"id":"user/staking/ethereum/dvt-technologies/diva","path":"/docs/user/staking/ethereum/dvt-technologies/diva","sidebar":"userSidebar"},{"id":"user/staking/ethereum/dvt-technologies/obol-network","path":"/docs/user/staking/ethereum/dvt-technologies/obol-network","sidebar":"userSidebar"},{"id":"user/staking/ethereum/dvt-technologies/ssv-network","path":"/docs/user/staking/ethereum/dvt-technologies/ssv-network","sidebar":"userSidebar"},{"id":"user/staking/ethereum/lsd-pools/lido/already-node-operator","path":"/docs/user/staking/ethereum/lsd-pools/lido/already-node-operator","sidebar":"userSidebar"},{"id":"user/staking/ethereum/lsd-pools/lido/overview","path":"/docs/user/staking/ethereum/lsd-pools/lido/overview","sidebar":"userSidebar"},{"id":"user/staking/ethereum/lsd-pools/lido/register","path":"/docs/user/staking/ethereum/lsd-pools/lido/register","sidebar":"userSidebar"},{"id":"user/staking/ethereum/lsd-pools/rocketpool","path":"/docs/user/staking/ethereum/lsd-pools/rocketpool","sidebar":"userSidebar"},{"id":"user/staking/ethereum/lsd-pools/stakehouse","path":"/docs/user/staking/ethereum/lsd-pools/stakehouse","sidebar":"userSidebar"},{"id":"user/staking/ethereum/lsd-pools/stakewise","path":"/docs/user/staking/ethereum/lsd-pools/stakewise","sidebar":"userSidebar"},{"id":"user/staking/ethereum/solo/holesky","path":"/docs/user/staking/ethereum/solo/holesky","sidebar":"userSidebar"},{"id":"user/staking/ethereum/solo/mainnet","path":"/docs/user/staking/ethereum/solo/mainnet","sidebar":"userSidebar"},{"id":"user/staking/gnosis-chain/incentive-program","path":"/docs/user/staking/gnosis-chain/incentive-program","sidebar":"userSidebar"},{"id":"user/staking/gnosis-chain/solo","path":"/docs/user/staking/gnosis-chain/solo","sidebar":"userSidebar"},{"id":"user/staking/lukso/solo","path":"/docs/user/staking/lukso/solo","sidebar":"userSidebar"},{"id":"user/staking/overview","path":"/docs/user/staking/overview","sidebar":"userSidebar"},{"id":"user/videos-and-tutorials/crash-course","path":"/docs/user/videos-and-tutorials/crash-course","sidebar":"userSidebar"},{"id":"user/videos-and-tutorials/driving-school/configuration","path":"/docs/user/videos-and-tutorials/driving-school/configuration","sidebar":"userSidebar"},{"id":"user/videos-and-tutorials/driving-school/initial-setup","path":"/docs/user/videos-and-tutorials/driving-school/initial-setup","sidebar":"userSidebar"},{"id":"user/videos-and-tutorials/guides/connect-node","path":"/docs/user/videos-and-tutorials/guides/connect-node","sidebar":"userSidebar"},{"id":"user/videos-and-tutorials/guides/migrating-from-avado","path":"/docs/user/videos-and-tutorials/guides/migrating-from-avado","sidebar":"userSidebar"},{"id":"user/videos-and-tutorials/overview","path":"/docs/user/videos-and-tutorials/overview"}],"draftIds":[],"sidebars":{"userSidebar":{"link":{"path":"/docs/user/getting-started/choose-your-path","label":"Choose your path"}},"devSidebar":{"link":{"path":"/docs/dev","label":"dev"}},"smoothSidebar":{"link":{"path":"/docs/smooth","label":"smooth"}},"daoSidebar":{"link":{"path":"/docs/dao","label":"dao"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"}}}');var s=n(7529);const l=JSON.parse('{"docusaurusVersion":"3.0.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"3.0.0"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"3.0.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"3.0.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"3.0.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"3.0.0"},"@easyops-cn/docusaurus-search-local":{"type":"package","name":"@easyops-cn/docusaurus-search-local","version":"0.44.2"}}}');var c=n(5893);const u={siteConfig:o.default,siteMetadata:l,globalData:a,i18n:i,codeTranslations:s},d=r.createContext(u);function p(e){let{children:t}=e;return(0,c.jsx)(d.Provider,{value:u,children:t})}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),o=n(412),a=n(5742),i=n(8780),s=n(179),l=n(5893);function c(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"},children:[(0,l.jsx)("h1",{style:{fontSize:"3rem"},children:"This page crashed"}),(0,l.jsx)("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"},children:"Try again"}),(0,l.jsx)(u,{error:t})]})}function u(e){let{error:t}=e;const n=(0,i.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,l.jsx)("p",{style:{whiteSpace:"pre-wrap"},children:n})}function d(e){let{error:t,tryAgain:n}=e;return(0,l.jsxs)(f,{fallback:()=>(0,l.jsx)(c,{error:t,tryAgain:n}),children:[(0,l.jsx)(a.Z,{children:(0,l.jsx)("title",{children:"Page Error"})}),(0,l.jsx)(s.Z,{children:(0,l.jsx)(c,{error:t,tryAgain:n})})]})}const p=e=>(0,l.jsx)(d,{...e});class f extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){o.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??p)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,o={canUseDOM:r,canUseEventListeners:r&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:r&&"IntersectionObserver"in window,canUseViewport:r&&"screen"in window}},5742:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);var r=n(405),o=n(5893);function a(e){return(0,o.jsx)(r.ql,{...e})}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7294),o=n(3727),a=n(8780),i=n(2263),s=n(3919),l=n(412),c=n(5893);const u=r.createContext({collectLink:()=>{}});var d=n(4996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:h,isActive:m,"data-noBrokenLinkCheck":g,autoAddBaseUrl:b=!0,...y}=e;const{siteConfig:{trailingSlash:v,baseUrl:w}}=(0,i.Z)(),{withBaseUrl:k}=(0,d.C)(),x=(0,r.useContext)(u),S=(0,r.useRef)(null);(0,r.useImperativeHandle)(t,(()=>S.current));const _=p||f;const E=(0,s.Z)(_),C=_?.replace("pathname://","");let T=void 0!==C?(L=C,b&&(e=>e.startsWith("/"))(L)?k(L):L):void 0;var L;T&&E&&(T=(0,a.applyTrailingSlash)(T,{trailingSlash:v,baseUrl:w}));const j=(0,r.useRef)(!1),P=n?o.OL:o.rU,R=l.Z.canUseIntersectionObserver,A=(0,r.useRef)(),N=()=>{j.current||null==T||(window.docusaurus.preload(T),j.current=!0)};(0,r.useEffect)((()=>(!R&&E&&null!=T&&window.docusaurus.prefetch(T),()=>{R&&A.current&&A.current.disconnect()})),[A,T,R,E]);const O=T?.startsWith("#")??!1,D=!T||!E||O;return D||g||x.collectLink(T),D?(0,c.jsx)("a",{ref:S,href:T,..._&&!E&&{target:"_blank",rel:"noopener noreferrer"},...y}):(0,c.jsx)(P,{...y,onMouseEnter:N,onTouchStart:N,innerRef:e=>{S.current=e,R&&e&&E&&(A.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(A.current.unobserve(e),A.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),A.current.observe(e))},to:T,...n&&{isActive:m,activeClassName:h}})}const f=r.forwardRef(p)},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c,I:()=>l});var r=n(7294),o=n(5893);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=t?.[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var i=n(7529);function s(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return i[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(s({message:n,id:r}),t)}function c(e){let{children:t,id:n,values:r}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const i=s({message:t,id:n});return(0,o.jsx)(o.Fragment,{children:a(i,r)})}},9935:(e,t,n)=>{"use strict";n.d(t,{m:()=>r});const r="default"},3919:(e,t,n)=>{"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function o(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>o,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>s});var r=n(7294),o=n(2263),a=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,o.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,a.b)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const s=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+s:s}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function s(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8940);function a(){return(0,r.useContext)(o._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});var r=n(7294),o=n(8934);function a(){return(0,r.useContext)(o._)}},469:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const o=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function o(e){const t={};return function e(n,o){Object.entries(n).forEach((n=>{let[a,i]=n;const s=o?`${o}.${a}`:a;r(i)?e(i,s):t[s]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>i});var r=n(7294),o=n(5893);const a=r.createContext(null);function i(e){let{children:t,value:n}=e;const i=r.useContext(a),s=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...n?.data};return{plugin:t.plugin,data:r}}({parent:i,value:n})),[i,n]);return(0,o.jsx)(a.Provider,{value:s,children:t})}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>m,gA:()=>p,_r:()=>u,Jo:()=>g,zh:()=>d,yW:()=>h,gB:()=>f});var r=n(6550),o=n(2263),a=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,o.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const s=e=>e.versions.find((e=>e.isLast));function l(e,t){const n=function(e,t){const n=s(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),o=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:o,alternateDocVersions:o?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(o.id):{}}}const c={},u=()=>i("docusaurus-plugin-content-docs")??c,d=e=>function(e,t,n){void 0===t&&(t=a.m),void 0===n&&(n={});const r=i(e),o=r?.[t];if(!o&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return o}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const o=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),a=o?{pluginId:o[0],pluginData:o[1]}:void 0;if(!a&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return a}(t,n,e)}function f(e){return d(e).versions}function h(e){const t=d(e);return s(t)}function m(e){const t=d(e),{pathname:n}=(0,r.TH)();return l(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=s(e);return{latestDocSuggestion:l(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n(4865),o=n.n(r);o().configure({showSpinner:!1});const a={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{o().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){o().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(4965),o=n(6809);!function(e){const{themeConfig:{prism:t}}=o.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{"php"===e&&n(6854),n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.p1)},2503:(e,t,n)=>{"use strict";n.d(t,{Z:()=>c});n(7294);var r=n(6010),o=n(5999),a=n(6668),i=n(9960);const s={anchorWithStickyNavbar:"anchorWithStickyNavbar_LWe7",anchorWithHideOnScrollNavbar:"anchorWithHideOnScrollNavbar_WYt5"};var l=n(5893);function c(e){let{as:t,id:n,...c}=e;const{navbar:{hideOnScroll:u}}=(0,a.L)();if("h1"===t||!n)return(0,l.jsx)(t,{...c,id:void 0});const d=(0,o.I)({id:"theme.common.headingLinkTitle",message:"Direct link to {heading}",description:"Title for link to heading"},{heading:"string"==typeof c.children?c.children:n});return(0,l.jsxs)(t,{...c,className:(0,r.Z)("anchor",u?s.anchorWithHideOnScrollNavbar:s.anchorWithStickyNavbar,c.className),id:n,children:[c.children,(0,l.jsx)(i.Z,{className:"hash-link",to:`#${n}`,"aria-label":d,title:d,children:"\u200b"})]})}},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);const r={iconExternalLink:"iconExternalLink_nPIU"};var o=n(5893);function a(e){let{width:t=13.5,height:n=13.5}=e;return(0,o.jsx)("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:r.iconExternalLink,children:(0,o.jsx)("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"})})}},179:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Ot});var r=n(7294),o=n(6010),a=n(4763),i=n(1944),s=n(6550),l=n(5999),c=n(5936),u=n(5893);const d="__docusaurus_skipToContent_fallback";function p(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function f(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&p(t)}),[]);return(0,c.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&p(e.current)})),{containerRef:e,onClick:n}}const h=(0,l.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function m(e){const t=e.children??h,{containerRef:n,onClick:r}=f();return(0,u.jsx)("div",{ref:n,role:"region","aria-label":h,children:(0,u.jsx)("a",{...e,href:`#${d}`,onClick:r,children:t})})}var g=n(5281),b=n(9727);const y={skipToContent:"skipToContent_fXgn"};function v(){return(0,u.jsx)(m,{className:y.skipToContent})}var w=n(6668),k=n(9689);function x(e){let{width:t=21,height:n=21,color:r="currentColor",strokeWidth:o=1.2,className:a,...i}=e;return(0,u.jsx)("svg",{viewBox:"0 0 15 15",width:t,height:n,...i,children:(0,u.jsx)("g",{stroke:r,strokeWidth:o,children:(0,u.jsx)("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})})})}const S={closeButton:"closeButton_CVFx"};function _(e){return(0,u.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"}),...e,className:(0,o.Z)("clean-btn close",S.closeButton,e.className),children:(0,u.jsx)(x,{width:14,height:14,strokeWidth:3.1})})}const E={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return(0,u.jsx)("div",{...e,className:(0,o.Z)(E.content,e.className),dangerouslySetInnerHTML:{__html:n}})}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function L(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:r,textColor:o,isCloseable:a}=e;return(0,u.jsxs)("div",{className:T.announcementBar,style:{backgroundColor:r,color:o},role:"banner",children:[a&&(0,u.jsx)("div",{className:T.announcementBarPlaceholder}),(0,u.jsx)(C,{className:T.announcementBarContent}),a&&(0,u.jsx)(_,{onClick:n,className:T.announcementBarClose})]})}var j=n(2961),P=n(2466);var R=n(902),A=n(3102);const N=r.createContext(null);function O(e){let{children:t}=e;const n=function(){const e=(0,j.e)(),t=(0,A.HY)(),[n,o]=(0,r.useState)(!1),a=null!==t.component,i=(0,R.D9)(a);return(0,r.useEffect)((()=>{a&&!i&&o(!0)}),[a,i]),(0,r.useEffect)((()=>{a?e.shown||o(!0):o(!1)}),[e.shown,a]),(0,r.useMemo)((()=>[n,o]),[n])}();return(0,u.jsx)(N.Provider,{value:n,children:t})}function D(e){if(e.component){const t=e.component;return(0,u.jsx)(t,{...e.props})}}function I(){const e=(0,r.useContext)(N);if(!e)throw new R.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,o=(0,r.useCallback)((()=>n(!1)),[n]),a=(0,A.HY)();return(0,r.useMemo)((()=>({shown:t,hide:o,content:D(a)})),[o,a,t])}function F(e){let{header:t,primaryMenu:n,secondaryMenu:r}=e;const{shown:a}=I();return(0,u.jsxs)("div",{className:"navbar-sidebar",children:[t,(0,u.jsxs)("div",{className:(0,o.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":a}),children:[(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:n}),(0,u.jsx)("div",{className:"navbar-sidebar__item menu",children:r})]})]})}var M=n(2949),z=n(2389);function B(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"})})}function $(e){return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:24,height:24,...e,children:(0,u.jsx)("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"})})}const U={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:r,onChange:a}=e;const i=(0,z.Z)(),s=(0,l.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===r?(0,l.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,l.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return(0,u.jsx)("div",{className:(0,o.Z)(U.toggle,t),children:(0,u.jsxs)("button",{className:(0,o.Z)("clean-btn",U.toggleButton,!i&&U.toggleButtonDisabled,n),type:"button",onClick:()=>a("dark"===r?"light":"dark"),disabled:!i,title:s,"aria-label":s,"aria-live":"polite",children:[(0,u.jsx)(B,{className:(0,o.Z)(U.toggleIcon,U.lightToggleIcon)}),(0,u.jsx)($,{className:(0,o.Z)(U.toggleIcon,U.darkToggleIcon)})]})})}const H=r.memo(q),Q={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,r=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:a}=(0,M.I)();return r?null:(0,u.jsx)(H,{className:t,buttonClassName:"dark"===n?Q.darkNavbarColorModeToggle:void 0,value:o,onChange:a})}var V=n(1327);function W(){return(0,u.jsx)(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function G(){const e=(0,j.e)();return(0,u.jsx)("button",{type:"button","aria-label":(0,l.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle(),children:(0,u.jsx)(x,{color:"var(--ifm-color-emphasis-600)"})})}function K(){return(0,u.jsxs)("div",{className:"navbar-sidebar__brand",children:[(0,u.jsx)(W,{}),(0,u.jsx)(Z,{className:"margin-right--md"}),(0,u.jsx)(G,{})]})}var Y=n(9960),X=n(4996),J=n(3919);function ee(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var te=n(9471);function ne(e){let{activeBasePath:t,activeBaseRegex:n,to:r,href:o,label:a,html:i,isDropdownLink:s,prependBaseUrlToHref:l,...c}=e;const d=(0,X.Z)(r),p=(0,X.Z)(t),f=(0,X.Z)(o,{forcePrependBaseUrl:!0}),h=a&&o&&!(0,J.Z)(o),m=i?{dangerouslySetInnerHTML:{__html:i}}:{children:(0,u.jsxs)(u.Fragment,{children:[a,h&&(0,u.jsx)(te.Z,{...s&&{width:12,height:12}})]})};return o?(0,u.jsx)(Y.Z,{href:l?f:o,...c,...m}):(0,u.jsx)(Y.Z,{to:d,isNavLink:!0,...(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(p)},...c,...m})}function re(e){let{className:t,isDropdownItem:n=!1,...r}=e;const a=(0,u.jsx)(ne,{className:(0,o.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n,...r});return n?(0,u.jsx)("li",{children:a}):a}function oe(e){let{className:t,isDropdownItem:n,...r}=e;return(0,u.jsx)("li",{className:"menu__list-item",children:(0,u.jsx)(ne,{className:(0,o.Z)("menu__link",t),...r})})}function ae(e){let{mobile:t=!1,position:n,...r}=e;const o=t?oe:re;return(0,u.jsx)(o,{...r,activeClassName:r.activeClassName??(t?"menu__link--active":"navbar__link--active")})}var ie=n(6043),se=n(8596),le=n(2263);function ce(e,t){return e.some((e=>function(e,t){return!!(0,se.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ue(e){let{items:t,position:n,className:a,onClick:i,...s}=e;const l=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{l.current&&!l.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),document.addEventListener("focusin",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e),document.removeEventListener("focusin",e)}}),[l]),(0,u.jsxs)("div",{ref:l,className:(0,o.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c}),children:[(0,u.jsx)(ne,{"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,o.Z)("navbar__link",a),...s,onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))},children:s.children??s.label}),(0,u.jsx)("ul",{className:"dropdown__menu",children:t.map(((e,t)=>(0,r.createElement)(Ze,{isDropdownItem:!0,activeClassName:"dropdown__link--active",...e,key:t})))})]})}function de(e){let{items:t,className:n,position:a,onClick:i,...l}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,le.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ce(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:h}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&h(!d)}),[c,d,h]),(0,u.jsxs)("li",{className:(0,o.Z)("menu__list-item",{"menu__list-item--collapsed":p}),children:[(0,u.jsx)(ne,{role:"button",className:(0,o.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n),...l,onClick:e=>{e.preventDefault(),f()},children:l.children??l.label}),(0,u.jsx)(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p,children:t.map(((e,t)=>(0,r.createElement)(Ze,{mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active",...e,key:t})))})]})}function pe(e){let{mobile:t=!1,...n}=e;const r=t?de:ue;return(0,u.jsx)(r,{...n})}var fe=n(4711);function he(e){let{width:t=20,height:n=20,...r}=e;return(0,u.jsx)("svg",{viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0,...r,children:(0,u.jsx)("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"})})}const me="iconLanguage_nlXk";var ge=n(1029),be=n(373),ye=n(143),ve=n(22),we=n(8202),ke=n(3545),xe=n(3926),Se=n(1073),_e=n(2539),Ee=n(726);const Ce='',Te='',Le='',je='',Pe='',Re='',Ae='',Ne={searchBar:"searchBar_RVTs",dropdownMenu:"dropdownMenu_qbY6",searchBarLeft:"searchBarLeft_MXDe",suggestion:"suggestion_fB_2",cursor:"cursor_eG29",hitTree:"hitTree_kk6K",hitIcon:"hitIcon_a7Zy",hitPath:"hitPath_ieM4",noResultsIcon:"noResultsIcon_EBY5",hitFooter:"hitFooter_E9YW",hitWrapper:"hitWrapper_sAK8",hitTitle:"hitTitle_vyVt",hitAction:"hitAction_NqkB",hideAction:"hideAction_vcyE",noResults:"noResults_l6Q3",searchBarContainer:"searchBarContainer_NW3z",searchBarLoadingRing:"searchBarLoadingRing_YnHq",searchClearButton:"searchClearButton_qk4g",searchIndexLoading:"searchIndexLoading_EJ1f",searchHintContainer:"searchHintContainer_Pkmr",searchHint:"searchHint_iIMx",focused:"focused_OWtg",input:"input_FOTf",hint:"hint_URu1",suggestions:"suggestions_X8XU",dataset:"dataset_QiCy",empty:"empty_eITn"};function Oe(e){let{document:t,type:n,page:r,metadata:o,tokens:a,isInterOfTree:i,isLastOfTree:s}=e;const l=n===ke.P.Title,c=n===ke.P.Keywords,u=l||c,d=n===ke.P.Heading,p=[];i?p.push(Re):s&&p.push(Ae);const f=p.map((e=>`${e}`)),h=`${u?Ce:d?Te:Le}`,m=[`${c?(0,_e.C)(t.s,a):(0,Ee.o)(t.t,(0,Se.m)(o,"t"),a)}`];if(!i&&!s&&ge.H6){const e=r?r.b?.concat(r.t).concat(t.s&&t.s!==r.t?t.s:[]):t.b;m.push(`${(0,xe.e)(e??[])}`)}else u||m.push(`${(0,_e.C)(r.t||(t.u.startsWith("/docs/api-reference/")?"API Reference":""),a)}`);const g=`${je}`;return[...f,h,``,...m,"",g].join("")}function De(){return`${Pe}${(0,l.I)({id:"theme.SearchBar.noResultsText",message:"No results"})}`}var Ie=n(311),Fe=n(51);async function Me(){const e=await Promise.all([n.e(8443),n.e(5525)]).then(n.t.bind(n,8443,23)),t=e.default;return t.noConflict?t.noConflict():e.noConflict&&e.noConflict(),t}const ze="_highlight";const Be=function(e){let{handleSearchBarToggle:t}=e;const n=(0,z.Z)(),{siteConfig:{baseUrl:a},i18n:{currentLocale:i}}=(0,le.Z)(),c=(0,ye.gA)();let d=a;try{const{preferredVersion:e}=(0,be.J)(c?.pluginId??ge.gQ);e&&!e.isLast&&(d=e.path+"/")}catch(M){if(ge.l9&&!(M instanceof R.i6))throw M}const p=(0,s.k6)(),f=(0,s.TH)(),h=(0,r.useRef)(null),m=(0,r.useRef)(new Map),g=(0,r.useRef)(!1),[b,y]=(0,r.useState)(!1),[v,w]=(0,r.useState)(!1),[k,x]=(0,r.useState)(""),S=(0,r.useRef)(null),_=(0,r.useRef)(""),[E,C]=(0,r.useState)("");(0,r.useEffect)((()=>{if(!Array.isArray(ge.Kc))return;let e="";if(f.pathname.startsWith(d)){const t=f.pathname.substring(d.length);let n;for(const e of ge.Kc){const r="string"==typeof e?e:e.path;if(t===r||t.startsWith(`${r}/`)){n=r;break}}n&&(e=n)}_.current!==e&&(m.current.delete(e),_.current=e),C(e)}),[f.pathname,d]);const T=!!ge.hG&&Array.isArray(ge.Kc)&&""===E,L=(0,r.useCallback)((async()=>{if(T||m.current.get(E))return;m.current.set(E,"loading"),S.current?.autocomplete.destroy(),y(!0);const[{wrappedIndexes:e,zhDictionary:t},n]=await Promise.all([(0,ve.w)(d,E),Me()]);if(S.current=n(h.current,{hint:!1,autoselect:!0,openOnFocus:!0,cssClasses:{root:(0,o.Z)(Ne.searchBar,{[Ne.searchBarLeft]:"left"===ge.pu}),noPrefix:!0,dropdownMenu:Ne.dropdownMenu,input:Ne.input,hint:Ne.hint,suggestions:Ne.suggestions,suggestion:Ne.suggestion,cursor:Ne.cursor,dataset:Ne.dataset,empty:Ne.empty}},[{source:(0,we.v)(e,t,ge.qo),templates:{suggestion:Oe,empty:De,footer:e=>{let{query:t,isEmpty:n}=e;if(n&&(!E||!ge.pQ))return;const r=(e=>{let{query:t,isEmpty:n}=e;const r=document.createElement("a"),o=new URLSearchParams;let s;if(o.set("q",t),E){const e=E&&Array.isArray(ge.Kc)?ge.Kc.find((e=>"string"==typeof e?e===E:e.path===E)):E,t=e?(0,Fe._)(e,i).label:E;s=ge.pQ&&n?(0,l.I)({id:"theme.SearchBar.seeAllOutsideContext",message:'See all results outside "{context}"'},{context:t}):(0,l.I)({id:"theme.SearchBar.searchInContext",message:'See all results within "{context}"'},{context:t})}else s=(0,l.I)({id:"theme.SearchBar.seeAll",message:"See all results"});if(!E||!Array.isArray(ge.Kc)||ge.pQ&&n||o.set("ctx",E),d!==a){if(!d.startsWith(a))throw new Error(`Version url '${d}' does not start with base url '${a}', this is a bug of \`@easyops-cn/docusaurus-search-local\`, please report it.`);o.set("version",d.substring(a.length))}const c=`${a}search?${o.toString()}`;return r.href=c,r.textContent=s,r.addEventListener("click",(e=>{e.ctrlKey||e.metaKey||(e.preventDefault(),S.current?.autocomplete.close(),p.push(c))})),r})({query:t,isEmpty:n}),o=document.createElement("div");return o.className=Ne.hitFooter,o.appendChild(r),o}}}]).on("autocomplete:selected",(function(e,t){let{document:{u:n,h:r},tokens:o}=t;h.current?.blur();let a=n;if(ge.vc&&o.length>0){const e=new URLSearchParams;for(const t of o)e.append(ze,t);a+=`?${e.toString()}`}r&&(a+=r),p.push(a)})).on("autocomplete:closed",(()=>{h.current?.blur()})),m.current.set(E,"done"),y(!1),g.current){const e=h.current;e.value&&S.current?.autocomplete.open(),e.focus()}}),[T,E,d,a,p]);(0,r.useEffect)((()=>{if(!ge.vc)return;const e=n?new URLSearchParams(f.search).getAll(ze):[];setTimeout((()=>{const t=document.querySelector("article");if(!t)return;const n=new ge.vc(t);n.unmark(),0!==e.length&&n.mark(e),x(e.join(" ")),S.current?.autocomplete.setVal(e.join(" "))}))}),[n,f.search,f.pathname]);const[j,P]=(0,r.useState)(!1),A=(0,r.useCallback)((()=>{g.current=!0,L(),P(!0),t?.(!0)}),[t,L]),N=(0,r.useCallback)((()=>{P(!1),t?.(!1)}),[t]),O=(0,r.useCallback)((()=>{L()}),[L]),D=(0,r.useCallback)((e=>{x(e.target.value),e.target.value&&w(!0)}),[]),I=!!n&&/mac/i.test(navigator.userAgentData?.platform??navigator.platform);(0,r.useEffect)((()=>{if(!ge.AY)return;const e=e=>{!(I?e.metaKey:e.ctrlKey)||"k"!==e.key&&"K"!==e.key||(e.preventDefault(),h.current?.focus(),A())};return document.addEventListener("keydown",e),()=>{document.removeEventListener("keydown",e)}}),[I,A]);const F=(0,r.useCallback)((()=>{const e=new URLSearchParams(f.search);e.delete(ze);const t=e.toString(),n=f.pathname+(""!=t?`?${t}`:"")+f.hash;n!=f.pathname+f.search+f.hash&&p.push(n),x(""),S.current?.autocomplete.setVal("")}),[f.pathname,f.search,f.hash,p]);return(0,u.jsxs)("div",{className:(0,o.Z)("navbar__search",Ne.searchBarContainer,{[Ne.searchIndexLoading]:b&&v,[Ne.focused]:j}),hidden:T,dir:"ltr",children:[(0,u.jsx)("input",{placeholder:(0,l.I)({id:"theme.SearchBar.label",message:"Search",description:"The ARIA label and placeholder for search button"}),"aria-label":"Search",className:"navbar__search-input",onMouseEnter:O,onFocus:A,onBlur:N,onChange:D,ref:h,value:k}),(0,u.jsx)(Ie.Z,{className:Ne.searchBarLoadingRing}),ge.AY&&ge.t_&&(""!==k?(0,u.jsx)("button",{className:Ne.searchClearButton,onClick:F,children:"\u2715"}):n&&(0,u.jsxs)("div",{className:Ne.searchHintContainer,children:[(0,u.jsx)("kbd",{className:Ne.searchHint,children:I?"\u2318":"ctrl"}),(0,u.jsx)("kbd",{className:Ne.searchHint,children:"K"})]}))]})},$e={navbarSearchContainer:"navbarSearchContainer_Bca1"};function Ue(e){let{children:t,className:n}=e;return(0,u.jsx)("div",{className:(0,o.Z)(n,$e.navbarSearchContainer),children:t})}var qe=n(2802);const He=e=>e.docs.find((t=>t.id===e.mainDocId));const Qe={default:ae,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:r,queryString:o="",...a}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,le.Z)(),p=(0,fe.l)(),{search:f,hash:h}=(0,s.TH)(),m=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${h}${o}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...r],g=t?(0,l.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return(0,u.jsx)(pe,{...a,mobile:t,label:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(he,{className:me}),g]}),items:m})},search:function(e){let{mobile:t,className:n}=e;return t?null:(0,u.jsx)(Ue,{className:n,children:(0,u.jsx)(Be,{})})},dropdown:pe,html:function(e){let{value:t,className:n,mobile:r=!1,isDropdownItem:a=!1}=e;const i=a?"li":"div";return(0,u.jsx)(i,{className:(0,o.Z)({navbar__item:!r&&!a,"menu__list-item":r},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,ye.Iw)(r),i=(0,qe.vY)(t,r),s=a?.path===i?.path;return null===i||i.unlisted&&!s?null:(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>s||!!a?.sidebar&&a.sidebar===i.sidebar,label:n??i.id,to:i.path})},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:r,...o}=e;const{activeDoc:a}=(0,ye.Iw)(r),i=(0,qe.oz)(t,r).link;if(!i)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return(0,u.jsx)(ae,{exact:!0,...o,isActive:()=>a?.sidebar===t,label:n??i.label,to:i.path})},docsVersion:function(e){let{label:t,to:n,docsPluginId:r,...o}=e;const a=(0,qe.lO)(r)[0],i=t??a.label,s=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(a).path;return(0,u.jsx)(ae,{...o,label:i,to:s})},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:r,dropdownItemsBefore:o,dropdownItemsAfter:a,...i}=e;const{search:c,hash:d}=(0,s.TH)(),p=(0,ye.Iw)(n),f=(0,ye.gB)(n),{savePreferredVersionName:h}=(0,be.J)(n),m=[...o,...f.map((e=>{const t=p.alternateDocVersions[e.name]??He(e);return{label:e.label,to:`${t.path}${c}${d}`,isActive:()=>e===p.activeVersion,onClick:()=>h(e.name)}})),...a],g=(0,qe.lO)(n)[0],b=t&&m.length>1?(0,l.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):g.label,y=t&&m.length>1?void 0:He(g).path;return m.length<=1?(0,u.jsx)(ae,{...i,mobile:t,label:b,to:y,isActive:r?()=>!1:void 0}):(0,u.jsx)(pe,{...i,mobile:t,label:b,to:y,items:m,isActive:r?()=>!1:void 0})}};function Ze(e){let{type:t,...n}=e;const r=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Qe[r];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return(0,u.jsx)(o,{...n})}function Ve(){const e=(0,j.e)(),t=(0,w.L)().navbar.items;return(0,u.jsx)("ul",{className:"menu__list",children:t.map(((t,n)=>(0,r.createElement)(Ze,{mobile:!0,...t,onClick:()=>e.toggle(),key:n})))})}function We(e){return(0,u.jsx)("button",{...e,type:"button",className:"clean-btn navbar-sidebar__back",children:(0,u.jsx)(l.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)",children:"\u2190 Back to main menu"})})}function Ge(){const e=0===(0,w.L)().navbar.items.length,t=I();return(0,u.jsxs)(u.Fragment,{children:[!e&&(0,u.jsx)(We,{onClick:()=>t.hide()}),t.content]})}function Ke(){const e=(0,j.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?(0,u.jsx)(F,{header:(0,u.jsx)(K,{}),primaryMenu:(0,u.jsx)(Ve,{}),secondaryMenu:(0,u.jsx)(Ge,{})}):null}const Ye={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Xe(e){return(0,u.jsx)("div",{role:"presentation",...e,className:(0,o.Z)("navbar-sidebar__backdrop",e.className)})}function Je(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:a}}=(0,w.L)(),i=(0,j.e)(),{navbarRef:s,isNavbarVisible:d}=function(e){const[t,n]=(0,r.useState)(e),o=(0,r.useRef)(!1),a=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(a.current=e.getBoundingClientRect().height)}),[]);return(0,P.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=s?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return o.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return(0,u.jsxs)("nav",{ref:s,"aria-label":(0,l.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,o.Z)("navbar","navbar--fixed-top",n&&[Ye.navbarHideable,!d&&Ye.navbarHidden],{"navbar--dark":"dark"===a,"navbar--primary":"primary"===a,"navbar-sidebar--show":i.shown}),children:[t,(0,u.jsx)(Xe,{onClick:i.toggle}),(0,u.jsx)(Ke,{})]})}var et=n(8780);const tt={errorBoundaryError:"errorBoundaryError_a6uf",errorBoundaryFallback:"errorBoundaryFallback_VBag"};function nt(e){return(0,u.jsx)("button",{type:"button",...e,children:(0,u.jsx)(l.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error",children:"Try again"})})}function rt(e){let{error:t}=e;const n=(0,et.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return(0,u.jsx)("p",{className:tt.errorBoundaryError,children:n})}class ot extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const at="right";function it(e){let{width:t=30,height:n=30,className:r,...o}=e;return(0,u.jsx)("svg",{className:r,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true",...o,children:(0,u.jsx)("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"})})}function st(){const{toggle:e,shown:t}=(0,j.e)();return(0,u.jsx)("button",{onClick:e,"aria-label":(0,l.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button",children:(0,u.jsx)(it,{})})}const lt={colorModeToggle:"colorModeToggle_DEke"};function ct(e){let{items:t}=e;return(0,u.jsx)(u.Fragment,{children:t.map(((e,t)=>(0,u.jsx)(ot,{onError:t=>new Error(`A theme navbar item failed to render.\nPlease double-check the following navbar item (themeConfig.navbar.items) of your Docusaurus config:\n${JSON.stringify(e,null,2)}`,{cause:t}),children:(0,u.jsx)(Ze,{...e})},t)))})}function ut(e){let{left:t,right:n}=e;return(0,u.jsxs)("div",{className:"navbar__inner",children:[(0,u.jsx)("div",{className:"navbar__items",children:t}),(0,u.jsx)("div",{className:"navbar__items navbar__items--right",children:n})]})}function dt(){const e=(0,j.e)(),t=(0,w.L)().navbar.items,[n,r]=function(e){function t(e){return"left"===(e.position??at)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return(0,u.jsx)(ut,{left:(0,u.jsxs)(u.Fragment,{children:[!e.disabled&&(0,u.jsx)(st,{}),(0,u.jsx)(W,{}),(0,u.jsx)(ct,{items:n})]}),right:(0,u.jsxs)(u.Fragment,{children:[(0,u.jsx)(ct,{items:r}),(0,u.jsx)(Z,{className:lt.colorModeToggle}),!o&&(0,u.jsx)(Ue,{children:(0,u.jsx)(Be,{})})]})})}function pt(){return(0,u.jsx)(Je,{children:(0,u.jsx)(dt,{})})}function ft(e){let{item:t}=e;const{to:n,href:r,label:o,prependBaseUrlToHref:a,...i}=t,s=(0,X.Z)(n),l=(0,X.Z)(r,{forcePrependBaseUrl:!0});return(0,u.jsxs)(Y.Z,{className:"footer__link-item",...r?{href:a?l:r}:{to:s},...i,children:[o,r&&!(0,J.Z)(r)&&(0,u.jsx)(te.Z,{})]})}function ht(e){let{item:t}=e;return t.html?(0,u.jsx)("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)("li",{className:"footer__item",children:(0,u.jsx)(ft,{item:t})},t.href??t.to)}function mt(e){let{column:t}=e;return(0,u.jsxs)("div",{className:"col footer__col",children:[(0,u.jsx)("div",{className:"footer__title",children:t.title}),(0,u.jsx)("ul",{className:"footer__items clean-list",children:t.items.map(((e,t)=>(0,u.jsx)(ht,{item:e},t)))})]})}function gt(e){let{columns:t}=e;return(0,u.jsx)("div",{className:"row footer__links",children:t.map(((e,t)=>(0,u.jsx)(mt,{column:e},t)))})}function bt(){return(0,u.jsx)("span",{className:"footer__link-separator",children:"\xb7"})}function yt(e){let{item:t}=e;return t.html?(0,u.jsx)("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):(0,u.jsx)(ft,{item:t})}function vt(e){let{links:t}=e;return(0,u.jsx)("div",{className:"footer__links text--center",children:(0,u.jsx)("div",{className:"footer__links",children:t.map(((e,n)=>(0,u.jsxs)(r.Fragment,{children:[(0,u.jsx)(yt,{item:e}),t.length!==n+1&&(0,u.jsx)(bt,{})]},n)))})})}function wt(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?(0,u.jsx)(gt,{columns:t}):(0,u.jsx)(vt,{links:t})}var kt=n(9965);const xt={footerLogoLink:"footerLogoLink_BH7S"};function St(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),r={light:n(t.src),dark:n(t.srcDark??t.src)};return(0,u.jsx)(kt.Z,{className:(0,o.Z)("footer__logo",t.className),alt:t.alt,sources:r,width:t.width,height:t.height,style:t.style})}function _t(e){let{logo:t}=e;return t.href?(0,u.jsx)(Y.Z,{href:t.href,className:xt.footerLogoLink,target:t.target,children:(0,u.jsx)(St,{logo:t})}):(0,u.jsx)(St,{logo:t})}function Et(e){let{copyright:t}=e;return(0,u.jsx)("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function Ct(e){let{style:t,links:n,logo:r,copyright:a}=e;return(0,u.jsx)("footer",{className:(0,o.Z)("footer",{"footer--dark":"dark"===t}),children:(0,u.jsxs)("div",{className:"container container-fluid",children:[n,(r||a)&&(0,u.jsxs)("div",{className:"footer__bottom text--center",children:[r&&(0,u.jsx)("div",{className:"margin-bottom--sm",children:r}),a]})]})})}function Tt(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:r,style:o}=e;return(0,u.jsx)(Ct,{style:o,links:n&&n.length>0&&(0,u.jsx)(wt,{links:n}),logo:r&&(0,u.jsx)(_t,{logo:r}),copyright:t&&(0,u.jsx)(Et,{copyright:t})})}const Lt=r.memo(Tt),jt=(0,R.Qc)([M.S,k.pl,P.OC,be.L5,i.VC,function(e){let{children:t}=e;return(0,u.jsx)(A.n2,{children:(0,u.jsx)(j.M,{children:(0,u.jsx)(O,{children:t})})})}]);function Pt(e){let{children:t}=e;return(0,u.jsx)(jt,{children:t})}var Rt=n(2503);function At(e){let{error:t,tryAgain:n}=e;return(0,u.jsx)("main",{className:"container margin-vert--xl",children:(0,u.jsx)("div",{className:"row",children:(0,u.jsxs)("div",{className:"col col--6 col--offset-3",children:[(0,u.jsx)(Rt.Z,{as:"h1",className:"hero__title",children:(0,u.jsx)(l.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed",children:"This page crashed."})}),(0,u.jsx)("div",{className:"margin-vert--lg",children:(0,u.jsx)(nt,{onClick:n,className:"button button--primary shadow--lw"})}),(0,u.jsx)("hr",{}),(0,u.jsx)("div",{className:"margin-vert--md",children:(0,u.jsx)(rt,{error:t})})]})})})}const Nt={mainWrapper:"mainWrapper_z2l0"};function Ot(e){const{children:t,noFooter:n,wrapperClassName:r,title:s,description:l}=e;return(0,b.t)(),(0,u.jsxs)(Pt,{children:[(0,u.jsx)(i.d,{title:s,description:l}),(0,u.jsx)(v,{}),(0,u.jsx)(L,{}),(0,u.jsx)(pt,{}),(0,u.jsx)("div",{id:d,className:(0,o.Z)(g.k.wrapper.main,Nt.mainWrapper,r),children:(0,u.jsx)(a.Z,{fallback:e=>(0,u.jsx)(At,{...e}),children:t})}),!n&&(0,u.jsx)(Lt,{})]})}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});n(7294);var r=n(9960),o=n(4996),a=n(2263),i=n(6668),s=n(9965),l=n(5893);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const a={light:(0,o.Z)(t.src),dark:(0,o.Z)(t.srcDark||t.src)},i=(0,l.jsx)(s.Z,{className:t.className,sources:a,height:t.height,width:t.width,alt:n,style:t.style});return r?(0,l.jsx)("div",{className:r,children:i}):i}function u(e){const{siteConfig:{title:t}}=(0,a.Z)(),{navbar:{title:n,logo:s}}=(0,i.L)(),{imageClassName:u,titleClassName:d,...p}=e,f=(0,o.Z)(s?.href||"/"),h=n?"":t,m=s?.alt??h;return(0,l.jsxs)(r.Z,{to:f,...p,...s?.target&&{target:s.target},children:[s&&(0,l.jsx)(c,{logo:s,alt:m,imageClassName:u}),null!=n&&(0,l.jsx)("b",{className:d,children:n})]})}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});n(7294);var r=n(5742),o=n(5893);function a(e){let{locale:t,version:n,tag:a}=e;const i=t;return(0,o.jsxs)(r.Z,{children:[t&&(0,o.jsx)("meta",{name:"docusaurus_locale",content:t}),n&&(0,o.jsx)("meta",{name:"docusaurus_version",content:n}),a&&(0,o.jsx)("meta",{name:"docusaurus_tag",content:a}),i&&(0,o.jsx)("meta",{name:"docsearch:language",content:i}),n&&(0,o.jsx)("meta",{name:"docsearch:version",content:n}),a&&(0,o.jsx)("meta",{name:"docsearch:docusaurus_tag",content:a})]})}},9965:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7294),o=n(6010),a=n(2389),i=n(2949);const s={themedComponent:"themedComponent_mlkZ","themedComponent--light":"themedComponent--light_NVdE","themedComponent--dark":"themedComponent--dark_xIcU"};var l=n(5893);function c(e){let{className:t,children:n}=e;const c=(0,a.Z)(),{colorMode:u}=(0,i.I)();return(0,l.jsx)(l.Fragment,{children:(c?"dark"===u?["dark"]:["light"]:["light","dark"]).map((e=>{const a=n({theme:e,className:(0,o.Z)(t,s.themedComponent,s[`themedComponent--${e}`])});return(0,l.jsx)(r.Fragment,{children:a},e)}))})}function u(e){const{sources:t,className:n,alt:r,...o}=e;return(0,l.jsx)(c,{className:n,children:e=>{let{theme:n,className:a}=e;return(0,l.jsx)("img",{src:t[n],alt:r,className:a,...o})}})}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>c,z:()=>b});var r=n(7294),o=n(412),a=n(469),i=n(1442),s=n(5893);const l="ease-in-out";function c(e){let{initialState:t}=e;const[n,o]=(0,r.useState)(t??!1),a=(0,r.useCallback)((()=>{o((e=>!e))}),[]);return{collapsed:n,setCollapsed:o,toggleCollapsed:a}}const u={display:"none",overflow:"hidden",height:"0px"},d={display:"block",overflow:"visible",height:"auto"};function p(e,t){const n=t?u:d;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function f(e){let{collapsibleRef:t,collapsed:n,animation:o}=e;const a=(0,r.useRef)(!1);(0,r.useEffect)((()=>{const e=t.current;function r(){const t=e.scrollHeight,n=o?.duration??function(e){if((0,i.n)())return 1;const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${o?.easing??l}`,height:`${t}px`}}function s(){const t=r();e.style.transition=t.transition,e.style.height=t.height}if(!a.current)return p(e,n),void(a.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(s(),requestAnimationFrame((()=>{e.style.height=u.height,e.style.overflow=u.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{s()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,o])}function h(e){if(!o.Z.canUseDOM)return e?u:d}function m(e){let{as:t="div",collapsed:n,children:o,animation:a,onCollapseTransitionEnd:i,className:l,disableSSRStyle:c}=e;const u=(0,r.useRef)(null);return f({collapsibleRef:u,collapsed:n,animation:a}),(0,s.jsx)(t,{ref:u,style:c?void 0:h(n),onTransitionEnd:e=>{"height"===e.propertyName&&(p(u.current,n),i?.(n))},className:l,children:o})}function g(e){let{collapsed:t,...n}=e;const[o,i]=(0,r.useState)(!t),[l,c]=(0,r.useState)(t);return(0,a.Z)((()=>{t||i(!0)}),[t]),(0,a.Z)((()=>{o&&c(t)}),[o,t]),o?(0,s.jsx)(m,{...n,collapsed:l}):null}function b(e){let{lazy:t,...n}=e;const r=t?g:m;return(0,s.jsx)(r,{...n})}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>h});var r=n(7294),o=n(2389),a=n(12),i=n(902),s=n(6668),l=n(5893);const c=(0,a.WA)("docusaurus.announcement.dismiss"),u=(0,a.WA)("docusaurus.announcement.id"),d=()=>"true"===c.get(),p=e=>c.set(String(e)),f=r.createContext(null);function h(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,s.L)(),t=(0,o.Z)(),[n,a]=(0,r.useState)((()=>!!t&&d()));(0,r.useEffect)((()=>{a(d())}),[]);const i=(0,r.useCallback)((()=>{p(!0),a(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=u.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;u.set(t),r&&p(!1),!r&&d()||a(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return(0,l.jsx)(f.Provider,{value:n,children:t})}function m(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>b,S:()=>g});var r=n(7294),o=n(412),a=n(902),i=n(12),s=n(6668),l=n(5893);const c=r.createContext(void 0),u="theme",d=(0,i.WA)(u),p={light:"light",dark:"dark"},f=e=>e===p.dark?p.dark:p.light,h=e=>o.Z.canUseDOM?f(document.documentElement.getAttribute("data-theme")):f(e),m=e=>{d.set(f(e))};function g(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,s.L)(),[o,a]=(0,r.useState)(h(e));(0,r.useEffect)((()=>{t&&d.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:o=!0}=r;t?(a(t),o&&m(t)):(a(n?window.matchMedia("(prefers-color-scheme: dark)").matches?p.dark:p.light:e),d.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",f(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=d.get();null!==t&&i(f(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const l=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||l.current?l.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:i,get isDarkTheme(){return o===p.dark},setLightTheme(){i(p.light)},setDarkTheme(){i(p.dark)}})),[o,i])}();return(0,l.jsx)(c.Provider,{value:n,children:t})}function b(){const e=(0,r.useContext)(c);if(null==e)throw new a.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:(e,t,n)=>{"use strict";n.d(t,{J:()=>v,L5:()=>b});var r=n(7294),o=n(143),a=n(9935),i=n(6668),s=n(2802),l=n(902),c=n(12),u=n(5893);const d=e=>`docs-preferred-version-${e}`,p={save:(e,t,n)=>{(0,c.WA)(d(e),{persistence:t}).set(n)},read:(e,t)=>(0,c.WA)(d(e),{persistence:t}).get(),clear:(e,t)=>{(0,c.WA)(d(e),{persistence:t}).del()}},f=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const h=r.createContext(null);function m(){const e=(0,o._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[a,s]=(0,r.useState)((()=>f(n)));(0,r.useEffect)((()=>{s(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function o(e){const t=p.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,o(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[a,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){p.save(e,t,n),s((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function g(e){let{children:t}=e;const n=m();return(0,u.jsx)(h.Provider,{value:n,children:t})}function b(e){let{children:t}=e;return s.cE?(0,u.jsx)(g,{children:t}):(0,u.jsx)(u.Fragment,{children:t})}function y(){const e=(0,r.useContext)(h);if(!e)throw new l.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=a.m);const t=(0,o.zh)(e),[n,i]=y(),{preferredVersionName:s}=n[e];return{preferredVersion:t.versions.find((e=>e.name===s))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>c,b:()=>l});var r=n(7294),o=n(902),a=n(5893);const i=Symbol("EmptyContext"),s=r.createContext(i);function l(e){let{children:t,name:n,items:o}=e;const i=(0,r.useMemo)((()=>n&&o?{name:n,items:o}:null),[n,o]);return(0,a.jsx)(s.Provider,{value:i,children:t})}function c(){const e=(0,r.useContext)(s);if(e===i)throw new o.i6("DocsSidebarProvider");return e}},4477:(e,t,n)=>{"use strict";n.d(t,{E:()=>l,q:()=>s});var r=n(7294),o=n(902),a=n(5893);const i=r.createContext(null);function s(e){let{children:t,version:n}=e;return(0,a.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(null===e)throw new o.i6("DocsVersionProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>f,e:()=>h});var r=n(7294),o=n(3102),a=n(7524),i=n(6550),s=n(902);function l(e){!function(e){const t=(0,i.k6)(),n=(0,s.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var c=n(6668),u=n(5893);const d=r.createContext(void 0);function p(){const e=function(){const e=(0,o.HY)(),{items:t}=(0,c.L)().navbar;return 0===t.length&&!e.component}(),t=(0,a.i)(),n=!e&&"mobile"===t,[i,s]=(0,r.useState)(!1);l((()=>{if(i)return s(!1),!1}));const u=(0,r.useCallback)((()=>{s((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&s(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:i})),[e,n,u,i])}function f(e){let{children:t}=e;const n=p();return(0,u.jsx)(d.Provider,{value:n,children:t})}function h(){const e=r.useContext(d);if(void 0===e)throw new s.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>c,n2:()=>s});var r=n(7294),o=n(902),a=n(5893);const i=r.createContext(null);function s(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return(0,a.jsx)(i.Provider,{value:n,children:t})}function l(){const e=(0,r.useContext)(i);if(!e)throw new o.i6("NavbarSecondaryMenuContentProvider");return e[0]}function c(e){let{component:t,props:n}=e;const a=(0,r.useContext)(i);if(!a)throw new o.i6("NavbarSecondaryMenuContentProvider");const[,s]=a,l=(0,o.Ql)(n);return(0,r.useEffect)((()=>{s({component:t,props:l})}),[s,t,l]),(0,r.useEffect)((()=>()=>s({component:null,props:null})),[s]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>o,t:()=>a});var r=n(7294);const o="navigation-with-keyboard";function a(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(o),"mousedown"===e.type&&document.body.classList.remove(o)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(o),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>s});var r=n(7294),o=n(412);const a={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function s(){const[e,t]=(0,r.useState)((()=>"ssr"));return(0,r.useEffect)((()=>{function e(){t(function(){if(!o.Z.canUseDOM)throw new Error("getWindowSize() should only be called after React hydration");return window.innerWidth>i?a.desktop:a.mobile}())}return e(),window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e)}}),[]),e}},5281:(e,t,n)=>{"use strict";n.d(t,{k:()=>r});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",unlistedBanner:"theme-unlisted-banner",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},1442:(e,t,n)=>{"use strict";function r(){return window.matchMedia("(prefers-reduced-motion: reduce)").matches}n.d(t,{n:()=>r})},2802:(e,t,n)=>{"use strict";n.d(t,{LM:()=>f,_F:()=>g,cE:()=>p,SN:()=>_,lO:()=>k,vY:()=>S,oz:()=>x,s1:()=>w,f:()=>y});var r=n(7294),o=n(6550),a=n(8790),i=n(143),s=n(373),l=n(4477),c=n(1116);function u(e){return Array.from(new Set(e))}var d=n(8596);const p=!!i._r;function f(e){return"link"!==e.type||e.unlisted?"category"===e.type?function(e){if(e.href&&!e.linkUnlisted)return e.href;for(const t of e.items){const e=f(t);if(e)return e}}(e):void 0:e.href}const h=(e,t)=>void 0!==e&&(0,d.Mg)(e,t),m=(e,t)=>e.some((e=>g(e,t)));function g(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||m(e.items,t))}function b(e,t){switch(e.type){case"category":return g(e,t)||e.items.some((e=>b(e,t)));case"link":return!e.unlisted||g(e,t);default:return!1}}function y(e,t){return(0,r.useMemo)((()=>e.filter((e=>b(e,t)))),[e,t])}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const o=[];return function e(t){for(const a of t)if("category"===a.type&&((0,d.Mg)(a.href,n)||e(a.items))||"link"===a.type&&(0,d.Mg)(a.href,n)){return r&&"category"!==a.type||o.unshift(a),!0}return!1}(t),o}function w(){const e=(0,c.V)(),{pathname:t}=(0,o.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?v({sidebarItems:e.items,pathname:t}):null}function k(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,s.J)(e),o=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,o].filter(Boolean))),[t,n,o])}function x(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable sidebar ids are:\n- ${t.map((e=>e[0])).join("\n- ")}`);return r[1]}),[e,n])}function S(e,t){const n=k(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`Couldn't find any doc with id "${e}" in version${n.length>1?"s":""} "${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${u(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function _(e){let{route:t}=e;const n=(0,o.TH)(),r=(0,l.E)(),i=t.routes,s=i.find((e=>(0,o.LX)(n.pathname,e)));if(!s)return null;const c=s.sidebar,u=c?r.docsSidebars[c]:void 0;return{docElement:(0,a.H)(i),sidebarName:c,sidebarItems:u}}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>f,d:()=>d,VC:()=>h});var r=n(7294),o=n(6010),a=n(5742),i=n(226);function s(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var l=n(4996),c=n(2263);var u=n(5893);function d(e){let{title:t,description:n,keywords:r,image:o,children:i}=e;const s=function(e){const{siteConfig:t}=(0,c.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,l.C)(),p=o?d(o,{absolute:!0}):void 0;return(0,u.jsxs)(a.Z,{children:[t&&(0,u.jsx)("title",{children:s}),t&&(0,u.jsx)("meta",{property:"og:title",content:s}),n&&(0,u.jsx)("meta",{name:"description",content:n}),n&&(0,u.jsx)("meta",{property:"og:description",content:n}),r&&(0,u.jsx)("meta",{name:"keywords",content:Array.isArray(r)?r.join(","):r}),p&&(0,u.jsx)("meta",{property:"og:image",content:p}),p&&(0,u.jsx)("meta",{name:"twitter:image",content:p}),i]})}const p=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(p),s=(0,o.Z)(i,t);return(0,u.jsxs)(p.Provider,{value:s,children:[(0,u.jsx)(a.Z,{children:(0,u.jsx)("html",{className:s})}),n]})}function h(e){let{children:t}=e;const n=s(),r=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const a=`plugin-id-${n.plugin.id}`;return(0,u.jsx)(f,{className:(0,o.Z)(r,a),children:t})}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>s,Qc:()=>u,Ql:()=>c,i6:()=>l,zX:()=>i});var r=n(7294),o=n(469),a=n(5893);function i(e){const t=(0,r.useRef)(e);return(0,o.Z)((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function s(e){const t=(0,r.useRef)();return(0,o.Z)((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){super(),this.name="ReactContextError",this.message=`Hook ${this.stack?.split("\n")[1]?.match(/at (?:\w+\.)?(?\w+)/)?.groups.name??""} is called outside the <${e}>. ${t??""}`}}function c(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function u(e){return t=>{let{children:n}=t;return(0,a.jsx)(a.Fragment,{children:e.reduceRight(((e,t)=>(0,a.jsx)(t,{children:e})),n)})}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>s});var r=n(7294),o=n(723),a=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function s(){const{baseUrl:e}=(0,a.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function o(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(o).flatMap((e=>e.routes??[])))}(n)}({routes:o.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>f,OC:()=>c,RF:()=>p});var r=n(7294),o=n(412),a=n(2389),i=(n(469),n(902)),s=n(5893);const l=r.createContext(void 0);function c(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return(0,s.jsx)(l.Provider,{value:n,children:t})}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const d=()=>o.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function p(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),o=(0,r.useRef)(d()),a=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=d();a(e,o.current),o.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[a,n,...t])}function f(){const e=(0,r.useRef)(null),t=(0,a.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const o=document.documentElement.scrollTop;(n&&o>e||!n&&ot&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>o});n(2263);const r="default";function o(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>l});n(7294);const r="localStorage";function o(e){let{key:t,oldValue:n,newValue:r,storage:o}=e;if(n===r)return;const a=document.createEvent("StorageEvent");a.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,o),window.dispatchEvent(a)}function a(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,i||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),i=!0),null}var t}let i=!1;const s={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function l(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t,listen:t}}(e);const n=a(t?.persistence);return null===n?s:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{const r=n.getItem(e);n.setItem(e,t),o({key:e,oldValue:r,newValue:t,storage:n})}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{const t=n.getItem(e);n.removeItem(e),o({key:e,oldValue:t,newValue:null,storage:n})}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}},listen:t=>{try{const r=r=>{r.storageArea===n&&r.key===e&&t(r)};return window.addEventListener("storage",r),()=>window.removeEventListener("storage",r)}catch(r){return console.error(`Docusaurus storage error, can't listen for changes of key=${e}`,r),()=>{}}}}}},4711:(e,t,n)=>{"use strict";n.d(t,{l:()=>i});var r=n(2263),o=n(6550),a=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:s}}=(0,r.Z)(),{pathname:l}=(0,o.TH)(),c=(0,a.applyTrailingSlash)(l,{trailingSlash:n,baseUrl:e}),u=s===i?e:e.replace(`/${s}/`,"/"),d=c.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${u}`:`${u}${e}/`}(n)}${d}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),o=n(6550),a=n(902);function i(e){const t=(0,o.TH)(),n=(0,a.D9)(t),i=(0,a.zX)(e);(0,r.useEffect)((()=>{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:(e,t,n)=>{"use strict";n.d(t,{L:()=>o});var r=n(2263);function o(){return(0,r.Z)().siteConfig.themeConfig}},8802:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[o]=e.split(/[#?]/),a="/"===o||o===r?o:(i=o,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(o,a)}},4143:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=void 0,t.getErrorCausalChain=function e(t){return t.cause?[t,...e(t.cause)]:[t]}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getErrorCausalChain=t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="__blog-post-container";var o=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(o).default}});var a=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return a.getErrorCausalChain}})},311:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});n(7294);var r=n(6010);const o={loadingRing:"loadingRing_RJI3","loading-ring":"loading-ring_FB5o"};var a=n(5893);function i(e){let{className:t}=e;return(0,a.jsxs)("div",{className:(0,r.Z)(o.loadingRing,t),children:[(0,a.jsx)("div",{}),(0,a.jsx)("div",{}),(0,a.jsx)("div",{}),(0,a.jsx)("div",{})]})}},22:(e,t,n)=>{"use strict";n.d(t,{w:()=>s});var r=n(1336),o=n.n(r),a=n(1029);const i=new Map;function s(e,t){const n=`${e}${t}`;let r=i.get(n);return r||(r=async function(e,t){{const n=`${e}${a.J.replace("{dir}",t?`-${t.replace(/\//g,"-")}`:"")}`;if(new URL(n,location.origin).origin!==location.origin)throw new Error("Unexpected version url");const r=await(await fetch(n)).json(),i=r.map(((e,t)=>{let{documents:n,index:r}=e;return{type:t,documents:n,index:o().Index.load(r)}})),s=r.reduce(((e,t)=>{for(const n of t.index.invertedIndex)/\p{Unified_Ideograph}/u.test(n[0][0])&&e.add(n[0]);return e}),new Set);return{wrappedIndexes:i,zhDictionary:Array.from(s)}}return{wrappedIndexes:[],zhDictionary:[]}}(e,t),i.set(n,r)),r}},8202:(e,t,n)=>{"use strict";n.d(t,{v:()=>c});var r=n(1336),o=n.n(r);var a=n(1029);function i(e){return s(e).concat(s(e.filter((e=>{const t=e[e.length-1];return!t.trailing&&t.maybeTyping})),!0))}function s(e,t){return e.map((e=>({tokens:e.map((e=>e.value)),term:e.map((e=>({value:e.value,presence:o().Query.presence.REQUIRED,wildcard:(t?e.trailing||e.maybeTyping:e.trailing)?o().Query.wildcard.TRAILING:o().Query.wildcard.NONE})))})))}var l=n(3545);function c(e,t,n){return function(r,s){const c=function(e,t){if(1===t.length&&["ja","jp","th"].includes(t[0]))return o()[t[0]].tokenizer(e).map((e=>e.toString()));let n=/[^-\s]+/g;return t.includes("zh")&&(n=/\w+|\p{Unified_Ideograph}+/gu),e.toLowerCase().match(n)||[]}(r,a.dK);if(0===c.length)return void s([]);const u=function(e,t){const n=function(e,t){const n=[];return function e(r,o){if(0===r.length)return void n.push(o);const a=r[0];if(/\p{Unified_Ideograph}/u.test(a)){const n=function(e,t){const n=[];return function e(r,o){let a=0,i=!1;for(const s of t)if(r.substr(0,s.length)===s){const t={missed:o.missed,term:o.term.concat({value:s})};r.length>s.length?e(r.substr(s.length),t):n.push(t),i=!0}else for(let t=s.length-1;t>a;t-=1){const l=s.substr(0,t);if(r.substr(0,t)===l){a=t;const s={missed:o.missed,term:o.term.concat({value:l,trailing:!0})};r.length>t?e(r.substr(t),s):n.push(s),i=!0;break}}i||(r.length>0?e(r.substr(1),{missed:o.missed+1,term:o.term}):o.term.length>0&&n.push(o))}(e,{missed:0,term:[]}),n.sort(((e,t)=>{const n=e.missed>0?1:0,r=t.missed>0?1:0;return n!==r?n-r:e.term.length-t.term.length})).map((e=>e.term))}(a,t);for(const t of n){const n=o.concat(...t);e(r.slice(1),n)}}else{const t=o.concat({value:a});e(r.slice(1),t)}}(e,[]),n}(e,t);if(0===n.length)return[{tokens:e,term:e.map((e=>({value:e,presence:o().Query.presence.REQUIRED,wildcard:o().Query.wildcard.LEADING|o().Query.wildcard.TRAILING})))}];for(const o of n)o[o.length-1].maybeTyping=!0;const r=[];for(const i of a.dK)if("en"===i)a._k||r.unshift(o().stopWordFilter);else{const e=o()[i];e.stopWordFilter&&r.unshift(e.stopWordFilter)}let s;if(r.length>0){const e=e=>r.reduce(((e,t)=>e.filter((e=>t(e.value)))),e);s=[];const t=[];for(const r of n){const n=e(r);s.push(n),n.length0&&t.push(n)}n.push(...t)}else s=n.slice();const l=[];for(const o of s)if(o.length>2)for(let e=o.length-1;e>=0;e-=1)l.push(o.slice(0,e).concat(o.slice(e+1)));return i(n).concat(i(l))}(c,t),d=[];e:for(const{term:t,tokens:o}of u)for(const{documents:r,index:a,type:i}of e)if(d.push(...a.query((e=>{for(const n of t)e.term(n.value,{wildcard:n.wildcard,presence:n.presence})})).slice(0,n).filter((e=>!d.some((t=>t.document.i.toString()===e.ref)))).slice(0,n-d.length).map((t=>{const n=r.find((e=>e.i.toString()===t.ref));return{document:n,type:i,page:i!==l.P.Title&&e[0].documents.find((e=>e.i===n.p)),metadata:t.matchData.metadata,tokens:o,score:t.score}}))),d.length>=n)break e;!function(e){e.forEach(((e,t)=>{e.index=t})),e.sort(((t,n)=>{let r=t.type!==l.P.Heading&&t.type!==l.P.Content&&t.type!==l.P.Description||!t.page?t.index:e.findIndex((e=>e.document===t.page)),o=n.type!==l.P.Heading&&n.type!==l.P.Content&&n.type!==l.P.Description||!n.page?n.index:e.findIndex((e=>e.document===n.page));if(-1===r&&(r=t.index),-1===o&&(o=n.index),r===o){const e=(0===n.type?1:0)-(0===t.type?1:0);return 0===e?t.index-n.index:e}return r-o}))}(d),function(e){e.forEach(((t,n)=>{n>0&&t.page&&e.slice(0,n).some((e=>(e.type===l.P.Keywords?e.page:e.document)===t.page))&&(n{"use strict";function r(e){return e.join(" \u203a ")}n.d(t,{e:()=>r})},1690:(e,t,n)=>{"use strict";function r(e){return e.replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}n.d(t,{X:()=>r})},1073:(e,t,n)=>{"use strict";function r(e,t){const n=[];for(const r of Object.values(e))r[t]&&n.push(...r[t].position);return n.sort(((e,t)=>e[0]-t[0]||t[1]-e[1]))}n.d(t,{m:()=>r})},2539:(e,t,n)=>{"use strict";n.d(t,{C:()=>o});var r=n(1690);function o(e,t,n){const a=[];for(const i of t){const n=e.toLowerCase().indexOf(i);if(n>=0){n>0&&a.push(o(e.substr(0,n),t)),a.push(`${(0,r.X)(e.substr(n,i.length))}`);const s=n+i.length;s${(0,r.X)(e)}`:(0,r.X)(e):a.join("")}},726:(e,t,n)=>{"use strict";n.d(t,{o:()=>l});var r=n(1690),o=n(2539);const a=/\w+|\p{Unified_Ideograph}/u;function i(e){const t=[];let n=0,r=e;for(;r.length>0;){const o=r.match(a);if(!o){t.push(r);break}o.index>0&&t.push(r.substring(0,o.index)),t.push(o[0]),n+=o.index+o[0].length,r=e.substring(n)}return t}var s=n(1029);function l(e,t,n,a){void 0===a&&(a=s.Hk);const{chunkIndex:l,chunks:c}=function(e,t,n){const a=[];let s=0,l=0,c=-1;for(;sl){const t=i(e.substring(l,u)).map((e=>({html:(0,r.X)(e),textLength:e.length})));for(const e of t)a.push(e)}-1===c&&(c=a.length),l=u+d,a.push({html:(0,o.C)(e.substring(u,l),n,!0),textLength:d})}}if(l({html:(0,r.X)(e),textLength:e.length})));for(const e of t)a.push(e)}return{chunkIndex:c,chunks:a}}(e,t,n),u=c.slice(0,l),d=c[l],p=[d.html],f=c.slice(l+1);let h=d.textLength,m=0,g=0,b=!1,y=!1;for(;h0){const e=u.pop();h+e.textLength<=a?(p.unshift(e.html),m+=e.textLength,h+=e.textLength):(b=!0,u.length=0)}else{if(!(f.length>0))break;{const e=f.shift();h+e.textLength<=a?(p.push(e.html),g+=e.textLength,h+=e.textLength):(y=!0,f.length=0)}}return(b||u.length>0)&&p.unshift("\u2026"),(y||f.length>0)&&p.push("\u2026"),p.join("")}},51:(e,t,n)=>{"use strict";function r(e,t){if("string"==typeof e)return{label:e,path:e};{const{label:n,path:r}=e;return"string"==typeof n?{label:n,path:r}:Object.prototype.hasOwnProperty.call(n,t)?{label:n[t],path:r}:{label:r,path:r}}}n.d(t,{_:()=>r})},1029:(e,t,n)=>{"use strict";n.d(t,{vc:()=>a,gQ:()=>f,H6:()=>c,hG:()=>g,l9:()=>h,dK:()=>r,_k:()=>o,pu:()=>p,AY:()=>u,t_:()=>d,Kc:()=>m,J:()=>i,Hk:()=>l,qo:()=>s,pQ:()=>b});n(1336);const r=["en"],o=!1,a=null,i="search-index{dir}.json",s=8,l=50,c=!1,u=!0,d=!0,p="right",f=void 0,h=!0,m=null,g=!1,b=!1},3545:(e,t,n)=>{"use strict";var r;n.d(t,{P:()=>r}),function(e){e[e.Title=0]="Title",e[e.Heading=1]="Heading",e[e.Description=2]="Description",e[e.Keywords=3]="Keywords",e[e.Content=4]="Content"}(r||(r={}))},6010:(e,t,n)=>{"use strict";function r(e){var t,n,o="";if("string"==typeof e||"number"==typeof e)o+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;to});const o=function(){for(var e,t,n=0,o="";n{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>f,PP:()=>L,Ep:()=>p});var r=n(7462);function o(e){return"/"===e.charAt(0)}function a(e,t){for(var n=t,r=n+1,o=e.length;r=0;p--){var f=i[p];"."===f?a(i,p):".."===f?(a(i,p),d++):d&&(a(i,p),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&o(i[0])||i.unshift("");var h=i.join("/");return n&&"/"!==h.substr(-1)&&(h+="/"),h};var s=n(8776);function l(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function p(e){var t=e.pathname,n=e.search,r=e.hash,o=t||"/";return n&&"?"!==n&&(o+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(o+="#"===r.charAt(0)?r:"#"+r),o}function f(e,t,n,o){var a;"string"==typeof e?(a=function(e){var t=e||"/",n="",r="",o=t.indexOf("#");-1!==o&&(r=t.substr(o),t=t.substr(0,o));var a=t.indexOf("?");return-1!==a&&(n=t.substr(a),t=t.substr(0,a)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),a.state=t):(void 0===(a=(0,r.Z)({},e)).pathname&&(a.pathname=""),a.search?"?"!==a.search.charAt(0)&&(a.search="?"+a.search):a.search="",a.hash?"#"!==a.hash.charAt(0)&&(a.hash="#"+a.hash):a.hash="",void 0!==t&&void 0===a.state&&(a.state=t));try{a.pathname=decodeURI(a.pathname)}catch(s){throw s instanceof URIError?new URIError('Pathname "'+a.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):s}return n&&(a.key=n),o?a.pathname?"/"!==a.pathname.charAt(0)&&(a.pathname=i(a.pathname,o.pathname)):a.pathname=o.pathname:a.pathname||(a.pathname="/"),a}function h(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,o){if(null!=e){var a="function"==typeof e?e(t,n):e;"string"==typeof a?"function"==typeof r?r(a,o):o(!0):o(!1!==a)}else o(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,o):n.push(o),d({action:r,location:o,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",o=f(e,t,m(),w.location);u.confirmTransitionTo(o,r,n,(function(e){e&&(w.entries[w.index]=o,d({action:r,location:o}))}))},go:v,goBack:function(){v(-1)},goForward:function(){v(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9864),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return r.isMemo(e)?i:s[e.$$typeof]||o}s[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[r.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(h){var o=f(n);o&&o!==h&&e(t,o,r)}var i=u(n);d&&(i=i.concat(d(n)));for(var s=l(t),m=l(n),g=0;g{"use strict";e.exports=function(e,t,n,r,o,a,i,s){if(!e){var l;if(void 0===t)l=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,r,o,a,i,s],u=0;(l=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw l.framesToPop=1,l}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},1336:(e,t,n)=>{var r,o;!function(){var a,i,s,l,c,u,d,p,f,h,m,g,b,y,v,w,k,x,S,_,E,C,T,L,j,P,R,A,N,O,D=function(e){var t=new D.Builder;return t.pipeline.add(D.trimmer,D.stopWordFilter,D.stemmer),t.searchPipeline.add(D.stemmer),e.call(t,t),t.build()};D.version="2.3.9",D.utils={},D.utils.warn=(a=this,function(e){a.console&&console.warn&&console.warn(e)}),D.utils.asString=function(e){return null==e?"":e.toString()},D.utils.clone=function(e){if(null==e)return e;for(var t=Object.create(null),n=Object.keys(e),r=0;r0){var l=D.utils.clone(t)||{};l.position=[i,s],l.index=o.length,o.push(new D.Token(n.slice(i,a),l))}i=a+1}}return o},D.tokenizer.separator=/[\s\-]+/,D.Pipeline=function(){this._stack=[]},D.Pipeline.registeredFunctions=Object.create(null),D.Pipeline.registerFunction=function(e,t){t in this.registeredFunctions&&D.utils.warn("Overwriting existing registered function: "+t),e.label=t,D.Pipeline.registeredFunctions[e.label]=e},D.Pipeline.warnIfFunctionNotRegistered=function(e){e.label&&e.label in this.registeredFunctions||D.utils.warn("Function is not registered with pipeline. This may cause problems when serialising the index.\n",e)},D.Pipeline.load=function(e){var t=new D.Pipeline;return e.forEach((function(e){var n=D.Pipeline.registeredFunctions[e];if(!n)throw new Error("Cannot load unregistered function: "+e);t.add(n)})),t},D.Pipeline.prototype.add=function(){Array.prototype.slice.call(arguments).forEach((function(e){D.Pipeline.warnIfFunctionNotRegistered(e),this._stack.push(e)}),this)},D.Pipeline.prototype.after=function(e,t){D.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");n+=1,this._stack.splice(n,0,t)},D.Pipeline.prototype.before=function(e,t){D.Pipeline.warnIfFunctionNotRegistered(t);var n=this._stack.indexOf(e);if(-1==n)throw new Error("Cannot find existingFn");this._stack.splice(n,0,t)},D.Pipeline.prototype.remove=function(e){var t=this._stack.indexOf(e);-1!=t&&this._stack.splice(t,1)},D.Pipeline.prototype.run=function(e){for(var t=this._stack.length,n=0;n1&&(ae&&(n=o),a!=e);)r=n-t,o=t+Math.floor(r/2),a=this.elements[2*o];return a==e||a>e?2*o:as?c+=2:i==s&&(t+=n[l+1]*r[c+1],l+=2,c+=2);return t},D.Vector.prototype.similarity=function(e){return this.dot(e)/this.magnitude()||0},D.Vector.prototype.toArray=function(){for(var e=new Array(this.elements.length/2),t=1,n=0;t0){var a,i=o.str.charAt(0);i in o.node.edges?a=o.node.edges[i]:(a=new D.TokenSet,o.node.edges[i]=a),1==o.str.length&&(a.final=!0),r.push({node:a,editsRemaining:o.editsRemaining,str:o.str.slice(1)})}if(0!=o.editsRemaining){if("*"in o.node.edges)var s=o.node.edges["*"];else{s=new D.TokenSet;o.node.edges["*"]=s}if(0==o.str.length&&(s.final=!0),r.push({node:s,editsRemaining:o.editsRemaining-1,str:o.str}),o.str.length>1&&r.push({node:o.node,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)}),1==o.str.length&&(o.node.final=!0),o.str.length>=1){if("*"in o.node.edges)var l=o.node.edges["*"];else{l=new D.TokenSet;o.node.edges["*"]=l}1==o.str.length&&(l.final=!0),r.push({node:l,editsRemaining:o.editsRemaining-1,str:o.str.slice(1)})}if(o.str.length>1){var c,u=o.str.charAt(0),d=o.str.charAt(1);d in o.node.edges?c=o.node.edges[d]:(c=new D.TokenSet,o.node.edges[d]=c),1==o.str.length&&(c.final=!0),r.push({node:c,editsRemaining:o.editsRemaining-1,str:u+o.str.slice(2)})}}}return n},D.TokenSet.fromString=function(e){for(var t=new D.TokenSet,n=t,r=0,o=e.length;r=e;t--){var n=this.uncheckedNodes[t],r=n.child.toString();r in this.minimizedNodes?n.parent.edges[n.char]=this.minimizedNodes[r]:(n.child._str=r,this.minimizedNodes[r]=n.child),this.uncheckedNodes.pop()}},D.Index=function(e){this.invertedIndex=e.invertedIndex,this.fieldVectors=e.fieldVectors,this.tokenSet=e.tokenSet,this.fields=e.fields,this.pipeline=e.pipeline},D.Index.prototype.search=function(e){return this.query((function(t){new D.QueryParser(e,t).parse()}))},D.Index.prototype.query=function(e){for(var t=new D.Query(this.fields),n=Object.create(null),r=Object.create(null),o=Object.create(null),a=Object.create(null),i=Object.create(null),s=0;s1?1:e},D.Builder.prototype.k1=function(e){this._k1=e},D.Builder.prototype.add=function(e,t){var n=e[this._ref],r=Object.keys(this._fields);this._documents[n]=t||{},this.documentCount+=1;for(var o=0;o=this.length)return D.QueryLexer.EOS;var e=this.str.charAt(this.pos);return this.pos+=1,e},D.QueryLexer.prototype.width=function(){return this.pos-this.start},D.QueryLexer.prototype.ignore=function(){this.start==this.pos&&(this.pos+=1),this.start=this.pos},D.QueryLexer.prototype.backup=function(){this.pos-=1},D.QueryLexer.prototype.acceptDigitRun=function(){var e,t;do{t=(e=this.next()).charCodeAt(0)}while(t>47&&t<58);e!=D.QueryLexer.EOS&&this.backup()},D.QueryLexer.prototype.more=function(){return this.pos1&&(e.backup(),e.emit(D.QueryLexer.TERM)),e.ignore(),e.more())return D.QueryLexer.lexText},D.QueryLexer.lexEditDistance=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(D.QueryLexer.EDIT_DISTANCE),D.QueryLexer.lexText},D.QueryLexer.lexBoost=function(e){return e.ignore(),e.acceptDigitRun(),e.emit(D.QueryLexer.BOOST),D.QueryLexer.lexText},D.QueryLexer.lexEOS=function(e){e.width()>0&&e.emit(D.QueryLexer.TERM)},D.QueryLexer.termSeparator=D.tokenizer.separator,D.QueryLexer.lexText=function(e){for(;;){var t=e.next();if(t==D.QueryLexer.EOS)return D.QueryLexer.lexEOS;if(92!=t.charCodeAt(0)){if(":"==t)return D.QueryLexer.lexField;if("~"==t)return e.backup(),e.width()>0&&e.emit(D.QueryLexer.TERM),D.QueryLexer.lexEditDistance;if("^"==t)return e.backup(),e.width()>0&&e.emit(D.QueryLexer.TERM),D.QueryLexer.lexBoost;if("+"==t&&1===e.width())return e.emit(D.QueryLexer.PRESENCE),D.QueryLexer.lexText;if("-"==t&&1===e.width())return e.emit(D.QueryLexer.PRESENCE),D.QueryLexer.lexText;if(t.match(D.QueryLexer.termSeparator))return D.QueryLexer.lexTerm}else e.escapeCharacter()}},D.QueryParser=function(e,t){this.lexer=new D.QueryLexer(e),this.query=t,this.currentClause={},this.lexemeIdx=0},D.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var e=D.QueryParser.parseClause;e;)e=e(this);return this.query},D.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},D.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},D.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},D.QueryParser.parseClause=function(e){var t=e.peekLexeme();if(null!=t)switch(t.type){case D.QueryLexer.PRESENCE:return D.QueryParser.parsePresence;case D.QueryLexer.FIELD:return D.QueryParser.parseField;case D.QueryLexer.TERM:return D.QueryParser.parseTerm;default:var n="expected either a field or a term, found "+t.type;throw t.str.length>=1&&(n+=" with value '"+t.str+"'"),new D.QueryParseError(n,t.start,t.end)}},D.QueryParser.parsePresence=function(e){var t=e.consumeLexeme();if(null!=t){switch(t.str){case"-":e.currentClause.presence=D.Query.presence.PROHIBITED;break;case"+":e.currentClause.presence=D.Query.presence.REQUIRED;break;default:var n="unrecognised presence operator'"+t.str+"'";throw new D.QueryParseError(n,t.start,t.end)}var r=e.peekLexeme();if(null==r){n="expecting term or field, found nothing";throw new D.QueryParseError(n,t.start,t.end)}switch(r.type){case D.QueryLexer.FIELD:return D.QueryParser.parseField;case D.QueryLexer.TERM:return D.QueryParser.parseTerm;default:n="expecting term or field, found '"+r.type+"'";throw new D.QueryParseError(n,r.start,r.end)}}},D.QueryParser.parseField=function(e){var t=e.consumeLexeme();if(null!=t){if(-1==e.query.allFields.indexOf(t.str)){var n=e.query.allFields.map((function(e){return"'"+e+"'"})).join(", "),r="unrecognised field '"+t.str+"', possible fields: "+n;throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.fields=[t.str];var o=e.peekLexeme();if(null==o){r="expecting term, found nothing";throw new D.QueryParseError(r,t.start,t.end)}if(o.type===D.QueryLexer.TERM)return D.QueryParser.parseTerm;r="expecting term, found '"+o.type+"'";throw new D.QueryParseError(r,o.start,o.end)}},D.QueryParser.parseTerm=function(e){var t=e.consumeLexeme();if(null!=t){e.currentClause.term=t.str.toLowerCase(),-1!=t.str.indexOf("*")&&(e.currentClause.usePipeline=!1);var n=e.peekLexeme();if(null!=n)switch(n.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:var r="Unexpected lexeme type '"+n.type+"'";throw new D.QueryParseError(r,n.start,n.end)}else e.nextClause()}},D.QueryParser.parseEditDistance=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="edit distance must be numeric";throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.editDistance=n;var o=e.peekLexeme();if(null!=o)switch(o.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+o.type+"'";throw new D.QueryParseError(r,o.start,o.end)}else e.nextClause()}},D.QueryParser.parseBoost=function(e){var t=e.consumeLexeme();if(null!=t){var n=parseInt(t.str,10);if(isNaN(n)){var r="boost must be numeric";throw new D.QueryParseError(r,t.start,t.end)}e.currentClause.boost=n;var o=e.peekLexeme();if(null!=o)switch(o.type){case D.QueryLexer.TERM:return e.nextClause(),D.QueryParser.parseTerm;case D.QueryLexer.FIELD:return e.nextClause(),D.QueryParser.parseField;case D.QueryLexer.EDIT_DISTANCE:return D.QueryParser.parseEditDistance;case D.QueryLexer.BOOST:return D.QueryParser.parseBoost;case D.QueryLexer.PRESENCE:return e.nextClause(),D.QueryParser.parsePresence;default:r="Unexpected lexeme type '"+o.type+"'";throw new D.QueryParseError(r,o.start,o.end)}else e.nextClause()}},void 0===(o="function"==typeof(r=function(){return D})?r.call(t,n,t,e):r)||(e.exports=o)}()},2497:(e,t,n)=>{"use strict";n.r(t)},2295:(e,t,n)=>{"use strict";n.r(t)},4865:function(e,t,n){var r,o;r=function(){var e,t,n={version:"0.2.0"},r=n.settings={minimum:.08,easing:"ease",positionUsing:"",speed:200,trickle:!0,trickleRate:.02,trickleSpeed:800,showSpinner:!0,barSelector:'[role="bar"]',spinnerSelector:'[role="spinner"]',parent:"body",template:'
'};function o(e,t,n){return en?n:e}function a(e){return 100*(-1+e)}function i(e,t,n){var o;return(o="translate3d"===r.positionUsing?{transform:"translate3d("+a(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+a(e)+"%,0)"}:{"margin-left":a(e)+"%"}).transition="all "+t+"ms "+n,o}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=o(e,r.minimum,1),n.status=1===e?null:e;var a=n.render(!t),c=a.querySelector(r.barSelector),u=r.speed,d=r.easing;return a.offsetWidth,s((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),l(c,i(e,u,d)),1===e?(l(a,{transition:"none",opacity:1}),a.offsetWidth,setTimeout((function(){l(a,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*o(Math.random()*t,.1,.95)),t=o(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var o,i=t.querySelector(r.barSelector),s=e?"-100":a(n.status||0),c=document.querySelector(r.parent);return l(i,{transition:"all 0 linear",transform:"translate3d("+s+"%,0,0)"}),r.showSpinner||(o=t.querySelector(r.spinnerSelector))&&f(o),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&f(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var s=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),l=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,o=e.length,a=t.charAt(0).toUpperCase()+t.slice(1);o--;)if((r=e[o]+a)in n)return r;return t}function o(e){return e=n(e),t[e]||(t[e]=r(e))}function a(e,t,n){t=o(t),e.style[t]=n}return function(e,t){var n,r,o=arguments;if(2==o.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&a(e,n,r);else a(e,o[1],o[2])}}();function c(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=p(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function p(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function f(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(o="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=o)},4779:(e,t,n)=>{var r=n(5826);e.exports=f,e.exports.parse=a,e.exports.compile=function(e,t){return s(a(e,t),t)},e.exports.tokensToFunction=s,e.exports.tokensToRegExp=p;var o=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");function a(e,t){for(var n,r=[],a=0,i=0,s="",u=t&&t.delimiter||"/";null!=(n=o.exec(e));){var d=n[0],p=n[1],f=n.index;if(s+=e.slice(i,f),i=f+d.length,p)s+=p[1];else{var h=e[i],m=n[2],g=n[3],b=n[4],y=n[5],v=n[6],w=n[7];s&&(r.push(s),s="");var k=null!=m&&null!=h&&h!==m,x="+"===v||"*"===v,S="?"===v||"*"===v,_=n[2]||u,E=b||y;r.push({name:g||a++,prefix:m||"",delimiter:_,optional:S,repeat:x,partial:k,asterisk:!!w,pattern:E?c(E):w?".*":"[^"+l(_)+"]+?"})}}return i{e.exports&&(e.exports={core:{meta:{path:"components/prism-core.js",option:"mandatory"},core:"Core"},themes:{meta:{path:"themes/{id}.css",link:"index.html?theme={id}",exclusive:!0},prism:{title:"Default",option:"default"},"prism-dark":"Dark","prism-funky":"Funky","prism-okaidia":{title:"Okaidia",owner:"ocodia"},"prism-twilight":{title:"Twilight",owner:"remybach"},"prism-coy":{title:"Coy",owner:"tshedor"},"prism-solarizedlight":{title:"Solarized Light",owner:"hectormatos2011 "},"prism-tomorrow":{title:"Tomorrow Night",owner:"Rosey"}},languages:{meta:{path:"components/prism-{id}",noCSS:!0,examplesPath:"examples/prism-{id}",addCheckAll:!0},markup:{title:"Markup",alias:["html","xml","svg","mathml","ssml","atom","rss"],aliasTitles:{html:"HTML",xml:"XML",svg:"SVG",mathml:"MathML",ssml:"SSML",atom:"Atom",rss:"RSS"},option:"default"},css:{title:"CSS",option:"default",modify:"markup"},clike:{title:"C-like",option:"default"},javascript:{title:"JavaScript",require:"clike",modify:"markup",optional:"regex",alias:"js",option:"default"},abap:{title:"ABAP",owner:"dellagustin"},abnf:{title:"ABNF",owner:"RunDevelopment"},actionscript:{title:"ActionScript",require:"javascript",modify:"markup",owner:"Golmote"},ada:{title:"Ada",owner:"Lucretia"},agda:{title:"Agda",owner:"xy-ren"},al:{title:"AL",owner:"RunDevelopment"},antlr4:{title:"ANTLR4",alias:"g4",owner:"RunDevelopment"},apacheconf:{title:"Apache Configuration",owner:"GuiTeK"},apex:{title:"Apex",require:["clike","sql"],owner:"RunDevelopment"},apl:{title:"APL",owner:"ngn"},applescript:{title:"AppleScript",owner:"Golmote"},aql:{title:"AQL",owner:"RunDevelopment"},arduino:{title:"Arduino",require:"cpp",alias:"ino",owner:"dkern"},arff:{title:"ARFF",owner:"Golmote"},armasm:{title:"ARM Assembly",alias:"arm-asm",owner:"RunDevelopment"},arturo:{title:"Arturo",alias:"art",optional:["bash","css","javascript","markup","markdown","sql"],owner:"drkameleon"},asciidoc:{alias:"adoc",title:"AsciiDoc",owner:"Golmote"},aspnet:{title:"ASP.NET (C#)",require:["markup","csharp"],owner:"nauzilus"},asm6502:{title:"6502 Assembly",owner:"kzurawel"},asmatmel:{title:"Atmel AVR Assembly",owner:"cerkit"},autohotkey:{title:"AutoHotkey",owner:"aviaryan"},autoit:{title:"AutoIt",owner:"Golmote"},avisynth:{title:"AviSynth",alias:"avs",owner:"Zinfidel"},"avro-idl":{title:"Avro IDL",alias:"avdl",owner:"RunDevelopment"},awk:{title:"AWK",alias:"gawk",aliasTitles:{gawk:"GAWK"},owner:"RunDevelopment"},bash:{title:"Bash",alias:["sh","shell"],aliasTitles:{sh:"Shell",shell:"Shell"},owner:"zeitgeist87"},basic:{title:"BASIC",owner:"Golmote"},batch:{title:"Batch",owner:"Golmote"},bbcode:{title:"BBcode",alias:"shortcode",aliasTitles:{shortcode:"Shortcode"},owner:"RunDevelopment"},bbj:{title:"BBj",owner:"hyyan"},bicep:{title:"Bicep",owner:"johnnyreilly"},birb:{title:"Birb",require:"clike",owner:"Calamity210"},bison:{title:"Bison",require:"c",owner:"Golmote"},bnf:{title:"BNF",alias:"rbnf",aliasTitles:{rbnf:"RBNF"},owner:"RunDevelopment"},bqn:{title:"BQN",owner:"yewscion"},brainfuck:{title:"Brainfuck",owner:"Golmote"},brightscript:{title:"BrightScript",owner:"RunDevelopment"},bro:{title:"Bro",owner:"wayward710"},bsl:{title:"BSL (1C:Enterprise)",alias:"oscript",aliasTitles:{oscript:"OneScript"},owner:"Diversus23"},c:{title:"C",require:"clike",owner:"zeitgeist87"},csharp:{title:"C#",require:"clike",alias:["cs","dotnet"],owner:"mvalipour"},cpp:{title:"C++",require:"c",owner:"zeitgeist87"},cfscript:{title:"CFScript",require:"clike",alias:"cfc",owner:"mjclemente"},chaiscript:{title:"ChaiScript",require:["clike","cpp"],owner:"RunDevelopment"},cil:{title:"CIL",owner:"sbrl"},cilkc:{title:"Cilk/C",require:"c",alias:"cilk-c",owner:"OpenCilk"},cilkcpp:{title:"Cilk/C++",require:"cpp",alias:["cilk-cpp","cilk"],owner:"OpenCilk"},clojure:{title:"Clojure",owner:"troglotit"},cmake:{title:"CMake",owner:"mjrogozinski"},cobol:{title:"COBOL",owner:"RunDevelopment"},coffeescript:{title:"CoffeeScript",require:"javascript",alias:"coffee",owner:"R-osey"},concurnas:{title:"Concurnas",alias:"conc",owner:"jasontatton"},csp:{title:"Content-Security-Policy",owner:"ScottHelme"},cooklang:{title:"Cooklang",owner:"ahue"},coq:{title:"Coq",owner:"RunDevelopment"},crystal:{title:"Crystal",require:"ruby",owner:"MakeNowJust"},"css-extras":{title:"CSS Extras",require:"css",modify:"css",owner:"milesj"},csv:{title:"CSV",owner:"RunDevelopment"},cue:{title:"CUE",owner:"RunDevelopment"},cypher:{title:"Cypher",owner:"RunDevelopment"},d:{title:"D",require:"clike",owner:"Golmote"},dart:{title:"Dart",require:"clike",owner:"Golmote"},dataweave:{title:"DataWeave",owner:"machaval"},dax:{title:"DAX",owner:"peterbud"},dhall:{title:"Dhall",owner:"RunDevelopment"},diff:{title:"Diff",owner:"uranusjr"},django:{title:"Django/Jinja2",require:"markup-templating",alias:"jinja2",owner:"romanvm"},"dns-zone-file":{title:"DNS zone file",owner:"RunDevelopment",alias:"dns-zone"},docker:{title:"Docker",alias:"dockerfile",owner:"JustinBeckwith"},dot:{title:"DOT (Graphviz)",alias:"gv",optional:"markup",owner:"RunDevelopment"},ebnf:{title:"EBNF",owner:"RunDevelopment"},editorconfig:{title:"EditorConfig",owner:"osipxd"},eiffel:{title:"Eiffel",owner:"Conaclos"},ejs:{title:"EJS",require:["javascript","markup-templating"],owner:"RunDevelopment",alias:"eta",aliasTitles:{eta:"Eta"}},elixir:{title:"Elixir",owner:"Golmote"},elm:{title:"Elm",owner:"zwilias"},etlua:{title:"Embedded Lua templating",require:["lua","markup-templating"],owner:"RunDevelopment"},erb:{title:"ERB",require:["ruby","markup-templating"],owner:"Golmote"},erlang:{title:"Erlang",owner:"Golmote"},"excel-formula":{title:"Excel Formula",alias:["xlsx","xls"],owner:"RunDevelopment"},fsharp:{title:"F#",require:"clike",owner:"simonreynolds7"},factor:{title:"Factor",owner:"catb0t"},false:{title:"False",owner:"edukisto"},"firestore-security-rules":{title:"Firestore security rules",require:"clike",owner:"RunDevelopment"},flow:{title:"Flow",require:"javascript",owner:"Golmote"},fortran:{title:"Fortran",owner:"Golmote"},ftl:{title:"FreeMarker Template Language",require:"markup-templating",owner:"RunDevelopment"},gml:{title:"GameMaker Language",alias:"gamemakerlanguage",require:"clike",owner:"LiarOnce"},gap:{title:"GAP (CAS)",owner:"RunDevelopment"},gcode:{title:"G-code",owner:"RunDevelopment"},gdscript:{title:"GDScript",owner:"RunDevelopment"},gedcom:{title:"GEDCOM",owner:"Golmote"},gettext:{title:"gettext",alias:"po",owner:"RunDevelopment"},gherkin:{title:"Gherkin",owner:"hason"},git:{title:"Git",owner:"lgiraudel"},glsl:{title:"GLSL",require:"c",owner:"Golmote"},gn:{title:"GN",alias:"gni",owner:"RunDevelopment"},"linker-script":{title:"GNU Linker Script",alias:"ld",owner:"RunDevelopment"},go:{title:"Go",require:"clike",owner:"arnehormann"},"go-module":{title:"Go module",alias:"go-mod",owner:"RunDevelopment"},gradle:{title:"Gradle",require:"clike",owner:"zeabdelkhalek-badido18"},graphql:{title:"GraphQL",optional:"markdown",owner:"Golmote"},groovy:{title:"Groovy",require:"clike",owner:"robfletcher"},haml:{title:"Haml",require:"ruby",optional:["css","css-extras","coffeescript","erb","javascript","less","markdown","scss","textile"],owner:"Golmote"},handlebars:{title:"Handlebars",require:"markup-templating",alias:["hbs","mustache"],aliasTitles:{mustache:"Mustache"},owner:"Golmote"},haskell:{title:"Haskell",alias:"hs",owner:"bholst"},haxe:{title:"Haxe",require:"clike",optional:"regex",owner:"Golmote"},hcl:{title:"HCL",owner:"outsideris"},hlsl:{title:"HLSL",require:"c",owner:"RunDevelopment"},hoon:{title:"Hoon",owner:"matildepark"},http:{title:"HTTP",optional:["csp","css","hpkp","hsts","javascript","json","markup","uri"],owner:"danielgtaylor"},hpkp:{title:"HTTP Public-Key-Pins",owner:"ScottHelme"},hsts:{title:"HTTP Strict-Transport-Security",owner:"ScottHelme"},ichigojam:{title:"IchigoJam",owner:"BlueCocoa"},icon:{title:"Icon",owner:"Golmote"},"icu-message-format":{title:"ICU Message Format",owner:"RunDevelopment"},idris:{title:"Idris",alias:"idr",owner:"KeenS",require:"haskell"},ignore:{title:".ignore",owner:"osipxd",alias:["gitignore","hgignore","npmignore"],aliasTitles:{gitignore:".gitignore",hgignore:".hgignore",npmignore:".npmignore"}},inform7:{title:"Inform 7",owner:"Golmote"},ini:{title:"Ini",owner:"aviaryan"},io:{title:"Io",owner:"AlesTsurko"},j:{title:"J",owner:"Golmote"},java:{title:"Java",require:"clike",owner:"sherblot"},javadoc:{title:"JavaDoc",require:["markup","java","javadoclike"],modify:"java",optional:"scala",owner:"RunDevelopment"},javadoclike:{title:"JavaDoc-like",modify:["java","javascript","php"],owner:"RunDevelopment"},javastacktrace:{title:"Java stack trace",owner:"RunDevelopment"},jexl:{title:"Jexl",owner:"czosel"},jolie:{title:"Jolie",require:"clike",owner:"thesave"},jq:{title:"JQ",owner:"RunDevelopment"},jsdoc:{title:"JSDoc",require:["javascript","javadoclike","typescript"],modify:"javascript",optional:["actionscript","coffeescript"],owner:"RunDevelopment"},"js-extras":{title:"JS Extras",require:"javascript",modify:"javascript",optional:["actionscript","coffeescript","flow","n4js","typescript"],owner:"RunDevelopment"},json:{title:"JSON",alias:"webmanifest",aliasTitles:{webmanifest:"Web App Manifest"},owner:"CupOfTea696"},json5:{title:"JSON5",require:"json",owner:"RunDevelopment"},jsonp:{title:"JSONP",require:"json",owner:"RunDevelopment"},jsstacktrace:{title:"JS stack trace",owner:"sbrl"},"js-templates":{title:"JS Templates",require:"javascript",modify:"javascript",optional:["css","css-extras","graphql","markdown","markup","sql"],owner:"RunDevelopment"},julia:{title:"Julia",owner:"cdagnino"},keepalived:{title:"Keepalived Configure",owner:"dev-itsheng"},keyman:{title:"Keyman",owner:"mcdurdin"},kotlin:{title:"Kotlin",alias:["kt","kts"],aliasTitles:{kts:"Kotlin Script"},require:"clike",owner:"Golmote"},kumir:{title:"KuMir (\u041a\u0443\u041c\u0438\u0440)",alias:"kum",owner:"edukisto"},kusto:{title:"Kusto",owner:"RunDevelopment"},latex:{title:"LaTeX",alias:["tex","context"],aliasTitles:{tex:"TeX",context:"ConTeXt"},owner:"japborst"},latte:{title:"Latte",require:["clike","markup-templating","php"],owner:"nette"},less:{title:"Less",require:"css",optional:"css-extras",owner:"Golmote"},lilypond:{title:"LilyPond",require:"scheme",alias:"ly",owner:"RunDevelopment"},liquid:{title:"Liquid",require:"markup-templating",owner:"cinhtau"},lisp:{title:"Lisp",alias:["emacs","elisp","emacs-lisp"],owner:"JuanCaicedo"},livescript:{title:"LiveScript",owner:"Golmote"},llvm:{title:"LLVM IR",owner:"porglezomp"},log:{title:"Log file",optional:"javastacktrace",owner:"RunDevelopment"},lolcode:{title:"LOLCODE",owner:"Golmote"},lua:{title:"Lua",owner:"Golmote"},magma:{title:"Magma (CAS)",owner:"RunDevelopment"},makefile:{title:"Makefile",owner:"Golmote"},markdown:{title:"Markdown",require:"markup",optional:"yaml",alias:"md",owner:"Golmote"},"markup-templating":{title:"Markup templating",require:"markup",owner:"Golmote"},mata:{title:"Mata",owner:"RunDevelopment"},matlab:{title:"MATLAB",owner:"Golmote"},maxscript:{title:"MAXScript",owner:"RunDevelopment"},mel:{title:"MEL",owner:"Golmote"},mermaid:{title:"Mermaid",owner:"RunDevelopment"},metafont:{title:"METAFONT",owner:"LaeriExNihilo"},mizar:{title:"Mizar",owner:"Golmote"},mongodb:{title:"MongoDB",owner:"airs0urce",require:"javascript"},monkey:{title:"Monkey",owner:"Golmote"},moonscript:{title:"MoonScript",alias:"moon",owner:"RunDevelopment"},n1ql:{title:"N1QL",owner:"TMWilds"},n4js:{title:"N4JS",require:"javascript",optional:"jsdoc",alias:"n4jsd",owner:"bsmith-n4"},"nand2tetris-hdl":{title:"Nand To Tetris HDL",owner:"stephanmax"},naniscript:{title:"Naninovel Script",owner:"Elringus",alias:"nani"},nasm:{title:"NASM",owner:"rbmj"},neon:{title:"NEON",owner:"nette"},nevod:{title:"Nevod",owner:"nezaboodka"},nginx:{title:"nginx",owner:"volado"},nim:{title:"Nim",owner:"Golmote"},nix:{title:"Nix",owner:"Golmote"},nsis:{title:"NSIS",owner:"idleberg"},objectivec:{title:"Objective-C",require:"c",alias:"objc",owner:"uranusjr"},ocaml:{title:"OCaml",owner:"Golmote"},odin:{title:"Odin",owner:"edukisto"},opencl:{title:"OpenCL",require:"c",modify:["c","cpp"],owner:"Milania1"},openqasm:{title:"OpenQasm",alias:"qasm",owner:"RunDevelopment"},oz:{title:"Oz",owner:"Golmote"},parigp:{title:"PARI/GP",owner:"Golmote"},parser:{title:"Parser",require:"markup",owner:"Golmote"},pascal:{title:"Pascal",alias:"objectpascal",aliasTitles:{objectpascal:"Object Pascal"},owner:"Golmote"},pascaligo:{title:"Pascaligo",owner:"DefinitelyNotAGoat"},psl:{title:"PATROL Scripting Language",owner:"bertysentry"},pcaxis:{title:"PC-Axis",alias:"px",owner:"RunDevelopment"},peoplecode:{title:"PeopleCode",alias:"pcode",owner:"RunDevelopment"},perl:{title:"Perl",owner:"Golmote"},php:{title:"PHP",require:"markup-templating",owner:"milesj"},phpdoc:{title:"PHPDoc",require:["php","javadoclike"],modify:"php",owner:"RunDevelopment"},"php-extras":{title:"PHP Extras",require:"php",modify:"php",owner:"milesj"},"plant-uml":{title:"PlantUML",alias:"plantuml",owner:"RunDevelopment"},plsql:{title:"PL/SQL",require:"sql",owner:"Golmote"},powerquery:{title:"PowerQuery",alias:["pq","mscript"],owner:"peterbud"},powershell:{title:"PowerShell",owner:"nauzilus"},processing:{title:"Processing",require:"clike",owner:"Golmote"},prolog:{title:"Prolog",owner:"Golmote"},promql:{title:"PromQL",owner:"arendjr"},properties:{title:".properties",owner:"Golmote"},protobuf:{title:"Protocol Buffers",require:"clike",owner:"just-boris"},pug:{title:"Pug",require:["markup","javascript"],optional:["coffeescript","ejs","handlebars","less","livescript","markdown","scss","stylus","twig"],owner:"Golmote"},puppet:{title:"Puppet",owner:"Golmote"},pure:{title:"Pure",optional:["c","cpp","fortran"],owner:"Golmote"},purebasic:{title:"PureBasic",require:"clike",alias:"pbfasm",owner:"HeX0R101"},purescript:{title:"PureScript",require:"haskell",alias:"purs",owner:"sriharshachilakapati"},python:{title:"Python",alias:"py",owner:"multipetros"},qsharp:{title:"Q#",require:"clike",alias:"qs",owner:"fedonman"},q:{title:"Q (kdb+ database)",owner:"Golmote"},qml:{title:"QML",require:"javascript",owner:"RunDevelopment"},qore:{title:"Qore",require:"clike",owner:"temnroegg"},r:{title:"R",owner:"Golmote"},racket:{title:"Racket",require:"scheme",alias:"rkt",owner:"RunDevelopment"},cshtml:{title:"Razor C#",alias:"razor",require:["markup","csharp"],optional:["css","css-extras","javascript","js-extras"],owner:"RunDevelopment"},jsx:{title:"React JSX",require:["markup","javascript"],optional:["jsdoc","js-extras","js-templates"],owner:"vkbansal"},tsx:{title:"React TSX",require:["jsx","typescript"]},reason:{title:"Reason",require:"clike",owner:"Golmote"},regex:{title:"Regex",owner:"RunDevelopment"},rego:{title:"Rego",owner:"JordanSh"},renpy:{title:"Ren'py",alias:"rpy",owner:"HyuchiaDiego"},rescript:{title:"ReScript",alias:"res",owner:"vmarcosp"},rest:{title:"reST (reStructuredText)",owner:"Golmote"},rip:{title:"Rip",owner:"ravinggenius"},roboconf:{title:"Roboconf",owner:"Golmote"},robotframework:{title:"Robot Framework",alias:"robot",owner:"RunDevelopment"},ruby:{title:"Ruby",require:"clike",alias:"rb",owner:"samflores"},rust:{title:"Rust",owner:"Golmote"},sas:{title:"SAS",optional:["groovy","lua","sql"],owner:"Golmote"},sass:{title:"Sass (Sass)",require:"css",optional:"css-extras",owner:"Golmote"},scss:{title:"Sass (SCSS)",require:"css",optional:"css-extras",owner:"MoOx"},scala:{title:"Scala",require:"java",owner:"jozic"},scheme:{title:"Scheme",owner:"bacchus123"},"shell-session":{title:"Shell session",require:"bash",alias:["sh-session","shellsession"],owner:"RunDevelopment"},smali:{title:"Smali",owner:"RunDevelopment"},smalltalk:{title:"Smalltalk",owner:"Golmote"},smarty:{title:"Smarty",require:"markup-templating",optional:"php",owner:"Golmote"},sml:{title:"SML",alias:"smlnj",aliasTitles:{smlnj:"SML/NJ"},owner:"RunDevelopment"},solidity:{title:"Solidity (Ethereum)",alias:"sol",require:"clike",owner:"glachaud"},"solution-file":{title:"Solution file",alias:"sln",owner:"RunDevelopment"},soy:{title:"Soy (Closure Template)",require:"markup-templating",owner:"Golmote"},sparql:{title:"SPARQL",require:"turtle",owner:"Triply-Dev",alias:"rq"},"splunk-spl":{title:"Splunk SPL",owner:"RunDevelopment"},sqf:{title:"SQF: Status Quo Function (Arma 3)",require:"clike",owner:"RunDevelopment"},sql:{title:"SQL",owner:"multipetros"},squirrel:{title:"Squirrel",require:"clike",owner:"RunDevelopment"},stan:{title:"Stan",owner:"RunDevelopment"},stata:{title:"Stata Ado",require:["mata","java","python"],owner:"RunDevelopment"},iecst:{title:"Structured Text (IEC 61131-3)",owner:"serhioromano"},stylus:{title:"Stylus",owner:"vkbansal"},supercollider:{title:"SuperCollider",alias:"sclang",owner:"RunDevelopment"},swift:{title:"Swift",owner:"chrischares"},systemd:{title:"Systemd configuration file",owner:"RunDevelopment"},"t4-templating":{title:"T4 templating",owner:"RunDevelopment"},"t4-cs":{title:"T4 Text Templates (C#)",require:["t4-templating","csharp"],alias:"t4",owner:"RunDevelopment"},"t4-vb":{title:"T4 Text Templates (VB)",require:["t4-templating","vbnet"],owner:"RunDevelopment"},tap:{title:"TAP",owner:"isaacs",require:"yaml"},tcl:{title:"Tcl",owner:"PeterChaplin"},tt2:{title:"Template Toolkit 2",require:["clike","markup-templating"],owner:"gflohr"},textile:{title:"Textile",require:"markup",optional:"css",owner:"Golmote"},toml:{title:"TOML",owner:"RunDevelopment"},tremor:{title:"Tremor",alias:["trickle","troy"],owner:"darach",aliasTitles:{trickle:"trickle",troy:"troy"}},turtle:{title:"Turtle",alias:"trig",aliasTitles:{trig:"TriG"},owner:"jakubklimek"},twig:{title:"Twig",require:"markup-templating",owner:"brandonkelly"},typescript:{title:"TypeScript",require:"javascript",optional:"js-templates",alias:"ts",owner:"vkbansal"},typoscript:{title:"TypoScript",alias:"tsconfig",aliasTitles:{tsconfig:"TSConfig"},owner:"dkern"},unrealscript:{title:"UnrealScript",alias:["uscript","uc"],owner:"RunDevelopment"},uorazor:{title:"UO Razor Script",owner:"jaseowns"},uri:{title:"URI",alias:"url",aliasTitles:{url:"URL"},owner:"RunDevelopment"},v:{title:"V",require:"clike",owner:"taggon"},vala:{title:"Vala",require:"clike",optional:"regex",owner:"TemplarVolk"},vbnet:{title:"VB.Net",require:"basic",owner:"Bigsby"},velocity:{title:"Velocity",require:"markup",owner:"Golmote"},verilog:{title:"Verilog",owner:"a-rey"},vhdl:{title:"VHDL",owner:"a-rey"},vim:{title:"vim",owner:"westonganger"},"visual-basic":{title:"Visual Basic",alias:["vb","vba"],aliasTitles:{vba:"VBA"},owner:"Golmote"},warpscript:{title:"WarpScript",owner:"RunDevelopment"},wasm:{title:"WebAssembly",owner:"Golmote"},"web-idl":{title:"Web IDL",alias:"webidl",owner:"RunDevelopment"},wgsl:{title:"WGSL",owner:"Dr4gonthree"},wiki:{title:"Wiki markup",require:"markup",owner:"Golmote"},wolfram:{title:"Wolfram language",alias:["mathematica","nb","wl"],aliasTitles:{mathematica:"Mathematica",nb:"Mathematica Notebook"},owner:"msollami"},wren:{title:"Wren",owner:"clsource"},xeora:{title:"Xeora",require:"markup",alias:"xeoracube",aliasTitles:{xeoracube:"XeoraCube"},owner:"freakmaxi"},"xml-doc":{title:"XML doc (.net)",require:"markup",modify:["csharp","fsharp","vbnet"],owner:"RunDevelopment"},xojo:{title:"Xojo (REALbasic)",owner:"Golmote"},xquery:{title:"XQuery",require:"markup",owner:"Golmote"},yaml:{title:"YAML",alias:"yml",owner:"hason"},yang:{title:"YANG",owner:"RunDevelopment"},zig:{title:"Zig",owner:"RunDevelopment"}},plugins:{meta:{path:"plugins/{id}/prism-{id}",link:"plugins/{id}/"},"line-highlight":{title:"Line Highlight",description:"Highlights specific lines and/or line ranges."},"line-numbers":{title:"Line Numbers",description:"Line number at the beginning of code lines.",owner:"kuba-kubula"},"show-invisibles":{title:"Show Invisibles",description:"Show hidden characters such as tabs and line breaks.",optional:["autolinker","data-uri-highlight"]},autolinker:{title:"Autolinker",description:"Converts URLs and emails in code to clickable links. Parses Markdown links in comments."},wpd:{title:"WebPlatform Docs",description:'Makes tokens link to WebPlatform.org documentation. The links open in a new tab.'},"custom-class":{title:"Custom Class",description:"This plugin allows you to prefix Prism's default classes (.comment can become .namespace--comment) or replace them with your defined ones (like .editor__comment). You can even add new classes.",owner:"dvkndn",noCSS:!0},"file-highlight":{title:"File Highlight",description:"Fetch external files and highlight them with Prism. Used on the Prism website itself.",noCSS:!0},"show-language":{title:"Show Language",description:"Display the highlighted language in code blocks (inline code does not show the label).",owner:"nauzilus",noCSS:!0,require:"toolbar"},"jsonp-highlight":{title:"JSONP Highlight",description:"Fetch content with JSONP and highlight some interesting content (e.g. GitHub/Gists or Bitbucket API).",noCSS:!0,owner:"nauzilus"},"highlight-keywords":{title:"Highlight Keywords",description:"Adds special CSS classes for each keyword for fine-grained highlighting.",owner:"vkbansal",noCSS:!0},"remove-initial-line-feed":{title:"Remove initial line feed",description:"Removes the initial line feed in code blocks.",owner:"Golmote",noCSS:!0},"inline-color":{title:"Inline color",description:"Adds a small inline preview for colors in style sheets.",require:"css-extras",owner:"RunDevelopment"},previewers:{title:"Previewers",description:"Previewers for angles, colors, gradients, easing and time.",require:"css-extras",owner:"Golmote"},autoloader:{title:"Autoloader",description:"Automatically loads the needed languages to highlight the code blocks.",owner:"Golmote",noCSS:!0},"keep-markup":{title:"Keep Markup",description:"Prevents custom markup from being dropped out during highlighting.",owner:"Golmote",optional:"normalize-whitespace",noCSS:!0},"command-line":{title:"Command Line",description:"Display a command line with a prompt and, optionally, the output/response from the commands.",owner:"chriswells0"},"unescaped-markup":{title:"Unescaped Markup",description:"Write markup without having to escape anything."},"normalize-whitespace":{title:"Normalize Whitespace",description:"Supports multiple operations to normalize whitespace in code blocks.",owner:"zeitgeist87",optional:"unescaped-markup",noCSS:!0},"data-uri-highlight":{title:"Data-URI Highlight",description:"Highlights data-URI contents.",owner:"Golmote",noCSS:!0},toolbar:{title:"Toolbar",description:"Attach a toolbar for plugins to easily register buttons on the top of a code block.",owner:"mAAdhaTTah"},"copy-to-clipboard":{title:"Copy to Clipboard Button",description:"Add a button that copies the code block to the clipboard when clicked.",owner:"mAAdhaTTah",require:"toolbar",noCSS:!0},"download-button":{title:"Download Button",description:"A button in the toolbar of a code block adding a convenient way to download a code file.",owner:"Golmote",require:"toolbar",noCSS:!0},"match-braces":{title:"Match braces",description:"Highlights matching braces.",owner:"RunDevelopment"},"diff-highlight":{title:"Diff Highlight",description:"Highlights the code inside diff blocks.",owner:"RunDevelopment",require:"diff"},"filter-highlight-all":{title:"Filter highlightAll",description:"Filters the elements the highlightAll and highlightAllUnder methods actually highlight.",owner:"RunDevelopment",noCSS:!0},treeview:{title:"Treeview",description:"A language with special styles to highlight file system tree structures.",owner:"Golmote"}}})},2885:(e,t,n)=>{const r=n(9901),o=n(9642),a=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...a,...Object.keys(Prism.languages)];o(r,e,t).load((e=>{if(!(e in r.languages))return void(i.silent||console.warn("Language does not exist: "+e));const t="./prism-"+e;delete n.c[n(6500).resolve(t)],delete Prism.languages[e],n(6500)(t),a.add(e)}))}i.silent=!1,e.exports=i},6854:()=>{!function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,o,a){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(o,(function(e){if("function"==typeof a&&!a(e))return e;for(var o,s=i.length;-1!==n.code.indexOf(o=t(r,s));)++s;return i[s]=e,o})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var o=0,a=Object.keys(n.tokenStack);!function i(s){for(var l=0;l=a.length);l++){var c=s[l];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=a[o],d=n.tokenStack[u],p="string"==typeof c?c:c.content,f=t(r,u),h=p.indexOf(f);if(h>-1){++o;var m=p.substring(0,h),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(h+f.length),y=[];m&&y.push.apply(y,i([m])),y.push(g),b&&y.push.apply(y,i([b])),"string"==typeof c?s.splice.apply(s,[l,1].concat(y)):c.content=y}}else c.content&&i(c.content)}return s}(n.tokens)}}}})}(Prism)},6726:(e,t,n)=>{var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6726},6500:(e,t,n)=>{var r={"./":2885};function o(e){var t=a(e);return n(t)}function a(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}o.keys=function(){return Object.keys(r)},o.resolve=a,e.exports=o,o.id=6500},9642:e=>{"use strict";var t=function(){var e=function(){};function t(e,t){Array.isArray(e)?e.forEach(t):null!=e&&t(e,0)}function n(e){for(var t={},n=0,r=e.length;n "));var s={},l=e[r];if(l){function c(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in s))for(var i in o(t,a),s[t]=!0,n[t])s[i]=!0}t(l.require,c),t(l.optional,c),t(l.modify,c)}n[r]=s,a.pop()}}return function(e){var t=n[e];return t||(o(e,r),t=n[e]),t}}function o(e){for(var t in e)return!0;return!1}return function(a,i,s){var l=function(e){var t={};for(var n in e){var r=e[n];for(var o in r)if("meta"!=o){var a=r[o];t[o]="string"==typeof a?{title:a}:a}}return t}(a),c=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var o in n={},e){var a=e[o];t(a&&a.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+o+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+o+" because it is a component.");n[t]=o}))}return n[r]||r}}(l);i=i.map(c),s=(s||[]).map(c);var u=n(i),d=n(s);i.forEach((function e(n){var r=l[n];t(r&&r.require,(function(t){t in d||(u[t]=!0,e(t))}))}));for(var p,f=r(l),h=u;o(h);){for(var m in p={},h){var g=l[m];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in u))for(var y in f(b))if(y in u){p[b]=!0;break}for(var v in h=p)u[v]=!0}var w={getIds:function(){var e=[];return w.load((function(t){e.push(t)})),e},load:function(t,n){return function(t,n,r,o){var a=o?o.series:void 0,i=o?o.parallel:e,s={},l={};function c(e){if(e in s)return s[e];l[e]=!0;var o,u=[];for(var d in t(e))d in n&&u.push(d);if(0===u.length)o=r(e);else{var p=i(u.map((function(e){var t=c(e);return delete l[e],t})));a?o=a(p,(function(){return r(e)})):r(e)}return s[e]=o}for(var u in n)c(u);var d=[];for(var p in l)d.push(s[p]);return i(d)}(f,u,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function o(){}function a(){}a.resetWarningCache=o,e.exports=function(){function e(e,t,n,o,a,i){if(i!==r){var s=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name="Invariant Violation",s}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:a,resetWarningCache:o};return n.PropTypes=n,n}},5697:(e,t,n)=>{e.exports=n(2703)()},414:e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:(e,t,n)=>{"use strict";var r=n(7294),o=n(3840);function a(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n