diff --git a/404.html b/404.html index 06bc823..b30a842 100644 --- a/404.html +++ b/404.html @@ -5,13 +5,13 @@ Page Not Found | Jackal Chain Docs - - + +
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.

- - + + \ No newline at end of file diff --git a/assets/js/874276e5.896c7d69.js b/assets/js/874276e5.896c7d69.js new file mode 100644 index 0000000..f71df37 --- /dev/null +++ b/assets/js/874276e5.896c7d69.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcanine_docs=self.webpackChunkcanine_docs||[]).push([[5533],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var o=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),c=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=c(e.components);return o.createElement(s.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},u=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(n),u=r,h=p["".concat(s,".").concat(u)]||p[u]||m[u]||a;return n?o.createElement(h,i(i({ref:t},d),{},{components:n})):o.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:r,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var o=n(7462),r=(n(7294),n(3905));const a={sidebar_position:6},i="Storage Module",l={unversionedId:"protocol/modules/storage",id:"protocol/modules/storage",title:"Storage Module",description:"The Jackal Protocol incorporates two crucial algorithms for decentralized storage: Jackal Proof-of-Persistence (JPOP)",source:"@site/docs/protocol/modules/storage.md",sourceDirName:"protocol/modules",slug:"/protocol/modules/storage",permalink:"/docs/protocol/modules/storage",draft:!1,editUrl:"https://github.com/JackalLabs/canine-docs/blob/master/docs/protocol/modules/storage.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"WASM Module",permalink:"/docs/protocol/modules/wasm"},next:{title:"Filetree Module",permalink:"/docs/protocol/modules/filetree"}},s={},c=[{value:"Jackal Proof-of-Persistence (JPOP)",id:"jackal-proof-of-persistence-jpop",level:2},{value:"Internal Detection Of Loss (IDOL) Protocol",id:"internal-detection-of-loss-idol-protocol",level:2},{value:"Interaction Outline",id:"interaction-outline",level:2},{value:"Client Query Commands",id:"client-query-commands",level:2},{value:"Transactions",id:"transactions",level:2}],d={toc:c},p="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,o.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"storage-module"},"Storage Module"),(0,r.kt)("p",null,"The Jackal Protocol incorporates two crucial algorithms for decentralized storage: Jackal Proof-of-Persistence (JPOP)\nand Internal Detection Of Loss (IDOL) protocols. This document provides an overview of these algorithms, their\nfunctionalities, and their interaction with users and Storage Providers."),(0,r.kt)("h2",{id:"jackal-proof-of-persistence-jpop"},"Jackal Proof-of-Persistence (JPOP)"),(0,r.kt)("p",null,"JPOP is a Proof-of-Storage algorithm that governs the relationship between the storage provider and the user. It\noperates through a series of contracts containing the Merkle Tree root hash of the file and information required to\nprove ownership. Storage Providers are responsible for posting Merkle Proofs within a challenge window determined by the\nblockchain."),(0,r.kt)("p",null,"The challenge windows require miners to post the raw data chunk and the required Merkle Hashes to prove the data belongs\nto the Merkle Root stored on the contract. The challenge indexes are chosen at random by the blockchain using a\nblock-hash-based random number generator paired with a random data oracle."),(0,r.kt)("h2",{id:"internal-detection-of-loss-idol-protocol"},"Internal Detection Of Loss (IDOL) Protocol"),(0,r.kt)("p",null,"The IDOL protocol ensures that data remains available and accessible. When a Storage Provider successfully posts a\nMerkle Proof within the challenge window, and Validators verify the data, the Storage Provider is rewarded. The rewards\nare proportional to the file size associated with the contract relative to other active contracts on the network."),(0,r.kt)("p",null,"If a Storage Provider fails to provide a valid proof within the allotted timeframe, the contract is marked with a missed\nproof. After a certain number of missed proofs, the contract is burned, and the user is alerted the next time they query\nthe contract. Storage Providers receive penalties for every contract burned due to missed proofs, which remain on their\nrecord for an adjustable period."),(0,r.kt)("p",null,"The IDOL protocol comes into play when contracts with missed proofs are moved to a new list where they can be claimed by\nother providers. The new provider downloads the file from one of the two online providers storing the same file, resumes\nthe contract's proof action, and restores redundancy to 3x."),(0,r.kt)("h2",{id:"interaction-outline"},"Interaction Outline"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"A user sends a file to an available Storage Provider. A list of Storage Providers can be found on the blockchain, and\nminers can deny any incoming request if they do not want to store new files."),(0,r.kt)("li",{parentName:"ol"},"After receiving the entire file, the Storage Provider keeps the file in memory and posts a contract to the\nblockchain."),(0,r.kt)("li",{parentName:"ol"},"If the contract is not signed by the sender within a certain number of blocks (configurable by the Storage Provider),\nthe file is removed from memory, and the contract is burned."),(0,r.kt)("li",{parentName:"ol"},"If the contract is signed by the user within the given number of blocks, the file is committed to the Storage\nProvider's hard storage, and the challenge windows start being created for the now active contract.")),(0,r.kt)("h2",{id:"client-query-commands"},"Client Query Commands"),(0,r.kt)("p",null,"The client query commands enable users to interact with and query the storage state. Examples of these commands include:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"list-active-deals")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"show-active-deals")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"list-miners")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"show-miners")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"list-contracts")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"show-contracts")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"find-file")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"freespace")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"get-client-free-space")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"list-pay-blocks")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"show-pay-blocks")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"list-strays")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"show-strays")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"params")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"storage-payment-info"))),(0,r.kt)("h2",{id:"transactions"},"Transactions"),(0,r.kt)("p",null,"The transaction commands allow users to interact with the storage module. Examples of these commands include:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"init-miner")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"set-miner-ip")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"set-miner-totalspace")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"sign-contract")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"post-contract")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"postproof")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"buy-storage")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"cancel-contract")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"upgrade-storage"))),(0,r.kt)("p",null,"By implementing the JPOP and IDOL protocols, the Jackal Protocol ensures secure, efficient, and reliable decentralized\nstorage management. These protocols, along with the provided client query commands and transactions, enable users and\nStorage Providers to interact with the Jackal storage ecosystem seamlessly."),(0,r.kt)("p",null,"Please refer to the respective command documentation for detailed usage and parameters. The Jackal Protocol continues to\nevolve, and as new features are added, updates to this documentation will be provided accordingly."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/874276e5.b3e46ca7.js b/assets/js/874276e5.b3e46ca7.js deleted file mode 100644 index c69d8ee..0000000 --- a/assets/js/874276e5.b3e46ca7.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcanine_docs=self.webpackChunkcanine_docs||[]).push([[5533],{3905:(e,t,n)=>{n.d(t,{Zo:()=>d,kt:()=>h});var o=n(7294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function a(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function i(e){for(var t=1;t=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var s=o.createContext({}),c=function(e){var t=o.useContext(s),n=t;return e&&(n="function"==typeof e?e(t):i(i({},t),e)),n},d=function(e){var t=c(e.components);return o.createElement(s.Provider,{value:t},e.children)},p="mdxType",m={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},u=o.forwardRef((function(e,t){var n=e.components,r=e.mdxType,a=e.originalType,s=e.parentName,d=l(e,["components","mdxType","originalType","parentName"]),p=c(n),u=r,h=p["".concat(s,".").concat(u)]||p[u]||m[u]||a;return n?o.createElement(h,i(i({ref:t},d),{},{components:n})):o.createElement(h,i({ref:t},d))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var a=n.length,i=new Array(a);i[0]=u;var l={};for(var s in t)hasOwnProperty.call(t,s)&&(l[s]=t[s]);l.originalType=e,l[p]="string"==typeof e?e:r,i[1]=l;for(var c=2;c{n.r(t),n.d(t,{assets:()=>s,contentTitle:()=>i,default:()=>m,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var o=n(7462),r=(n(7294),n(3905));const a={sidebar_position:6},i="Storage Module",l={unversionedId:"protocol/modules/storage",id:"protocol/modules/storage",title:"Storage Module",description:"The Jackal Protocol incorporates two crucial algorithms for decentralized storage: Jackal Proof-of-Persistence (JPOP)",source:"@site/docs/protocol/modules/storage.md",sourceDirName:"protocol/modules",slug:"/protocol/modules/storage",permalink:"/docs/protocol/modules/storage",draft:!1,editUrl:"https://github.com/JackalLabs/canine-docs/blob/master/docs/protocol/modules/storage.md",tags:[],version:"current",sidebarPosition:6,frontMatter:{sidebar_position:6},sidebar:"tutorialSidebar",previous:{title:"WASM Module",permalink:"/docs/protocol/modules/wasm"},next:{title:"dsig Module",permalink:"/docs/protocol/modules/dsig"}},s={},c=[{value:"Jackal Proof-of-Persistence (JPOP)",id:"jackal-proof-of-persistence-jpop",level:2},{value:"Internal Detection Of Loss (IDOL) Protocol",id:"internal-detection-of-loss-idol-protocol",level:2},{value:"Interaction Outline",id:"interaction-outline",level:2},{value:"Client Query Commands",id:"client-query-commands",level:2},{value:"Transactions",id:"transactions",level:2}],d={toc:c},p="wrapper";function m(e){let{components:t,...n}=e;return(0,r.kt)(p,(0,o.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h1",{id:"storage-module"},"Storage Module"),(0,r.kt)("p",null,"The Jackal Protocol incorporates two crucial algorithms for decentralized storage: Jackal Proof-of-Persistence (JPOP)\nand Internal Detection Of Loss (IDOL) protocols. This document provides an overview of these algorithms, their\nfunctionalities, and their interaction with users and Storage Providers."),(0,r.kt)("h2",{id:"jackal-proof-of-persistence-jpop"},"Jackal Proof-of-Persistence (JPOP)"),(0,r.kt)("p",null,"JPOP is a Proof-of-Storage algorithm that governs the relationship between the storage provider and the user. It\noperates through a series of contracts containing the Merkle Tree root hash of the file and information required to\nprove ownership. Storage Providers are responsible for posting Merkle Proofs within a challenge window determined by the\nblockchain."),(0,r.kt)("p",null,"The challenge windows require miners to post the raw data chunk and the required Merkle Hashes to prove the data belongs\nto the Merkle Root stored on the contract. The challenge indexes are chosen at random by the blockchain using a\nblock-hash-based random number generator paired with a random data oracle."),(0,r.kt)("h2",{id:"internal-detection-of-loss-idol-protocol"},"Internal Detection Of Loss (IDOL) Protocol"),(0,r.kt)("p",null,"The IDOL protocol ensures that data remains available and accessible. When a Storage Provider successfully posts a\nMerkle Proof within the challenge window, and Validators verify the data, the Storage Provider is rewarded. The rewards\nare proportional to the file size associated with the contract relative to other active contracts on the network."),(0,r.kt)("p",null,"If a Storage Provider fails to provide a valid proof within the allotted timeframe, the contract is marked with a missed\nproof. After a certain number of missed proofs, the contract is burned, and the user is alerted the next time they query\nthe contract. Storage Providers receive penalties for every contract burned due to missed proofs, which remain on their\nrecord for an adjustable period."),(0,r.kt)("p",null,"The IDOL protocol comes into play when contracts with missed proofs are moved to a new list where they can be claimed by\nother providers. The new provider downloads the file from one of the two online providers storing the same file, resumes\nthe contract's proof action, and restores redundancy to 3x."),(0,r.kt)("h2",{id:"interaction-outline"},"Interaction Outline"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"A user sends a file to an available Storage Provider. A list of Storage Providers can be found on the blockchain, and\nminers can deny any incoming request if they do not want to store new files."),(0,r.kt)("li",{parentName:"ol"},"After receiving the entire file, the Storage Provider keeps the file in memory and posts a contract to the\nblockchain."),(0,r.kt)("li",{parentName:"ol"},"If the contract is not signed by the sender within a certain number of blocks (configurable by the Storage Provider),\nthe file is removed from memory, and the contract is burned."),(0,r.kt)("li",{parentName:"ol"},"If the contract is signed by the user within the given number of blocks, the file is committed to the Storage\nProvider's hard storage, and the challenge windows start being created for the now active contract.")),(0,r.kt)("h2",{id:"client-query-commands"},"Client Query Commands"),(0,r.kt)("p",null,"The client query commands enable users to interact with and query the storage state. Examples of these commands include:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"list-active-deals")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"show-active-deals")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"list-miners")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"show-miners")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"list-contracts")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"show-contracts")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"find-file")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"freespace")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"get-client-free-space")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"list-pay-blocks")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"show-pay-blocks")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"list-strays")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"show-strays")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"params")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"storage-payment-info"))),(0,r.kt)("h2",{id:"transactions"},"Transactions"),(0,r.kt)("p",null,"The transaction commands allow users to interact with the storage module. Examples of these commands include:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"init-miner")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"set-miner-ip")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"set-miner-totalspace")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"sign-contract")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"post-contract")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"postproof")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"buy-storage")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"cancel-contract")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("inlineCode",{parentName:"li"},"upgrade-storage"))),(0,r.kt)("p",null,"By implementing the JPOP and IDOL protocols, the Jackal Protocol ensures secure, efficient, and reliable decentralized\nstorage management. These protocols, along with the provided client query commands and transactions, enable users and\nStorage Providers to interact with the Jackal storage ecosystem seamlessly."),(0,r.kt)("p",null,"Please refer to the respective command documentation for detailed usage and parameters. The Jackal Protocol continues to\nevolve, and as new features are added, updates to this documentation will be provided accordingly."))}m.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/8a56e0ba.64aa9613.js b/assets/js/8a56e0ba.64aa9613.js deleted file mode 100644 index 1f88158..0000000 --- a/assets/js/8a56e0ba.64aa9613.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcanine_docs=self.webpackChunkcanine_docs||[]).push([[8957],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var o=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function s(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var l=o.createContext({}),c=function(e){var t=o.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},d=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},f=o.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,l=e.parentName,d=a(e,["components","mdxType","originalType","parentName"]),u=c(r),f=i,h=u["".concat(l,".").concat(f)]||u[f]||p[f]||n;return r?o.createElement(h,s(s({ref:t},d),{},{components:r})):o.createElement(h,s({ref:t},d))}));function h(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,s=new Array(n);s[0]=f;var a={};for(var l in t)hasOwnProperty.call(t,l)&&(a[l]=t[l]);a.originalType=e,a[u]="string"==typeof e?e:i,s[1]=a;for(var c=2;c{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>p,frontMatter:()=>n,metadata:()=>a,toc:()=>c});var o=r(7462),i=(r(7294),r(3905));const n={sidebar_position:8},s="Filetree Module",a={unversionedId:"protocol/modules/filetree",id:"protocol/modules/filetree",title:"Filetree Module",description:"Overview",source:"@site/docs/protocol/modules/filetree.md",sourceDirName:"protocol/modules",slug:"/protocol/modules/filetree",permalink:"/docs/protocol/modules/filetree",draft:!1,editUrl:"https://github.com/JackalLabs/canine-docs/blob/master/docs/protocol/modules/filetree.md",tags:[],version:"current",sidebarPosition:8,frontMatter:{sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"dsig Module",permalink:"/docs/protocol/modules/dsig"},next:{title:"Jackal Proof-of-Persistence Documentation",permalink:"/docs/protocol/p-o-p"}},l={},c=[{value:"Overview",id:"overview",level:2},{value:"Folder Abstraction",id:"folder-abstraction",level:2},{value:"File Entry Structure",id:"file-entry-structure",level:2},{value:"Encrypted Viewing Access",id:"encrypted-viewing-access",level:2}],d={toc:c},u="wrapper";function p(e){let{components:t,...n}=e;return(0,i.kt)(u,(0,o.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"filetree-module"},"Filetree Module"),(0,i.kt)("h2",{id:"overview"},"Overview"),(0,i.kt)("p",null,"The Jackal Filetree module is responsible for organizing and managing user files in a secure and user-friendly way. When\na user uploads a file using the Storage module, the file is only accessible from the File ID (FID), which can be\nchallenging to remember for every file uploaded to Jackal. Additionally, every single upload would be required to be\npublic, or the user would need to keep track of every symmetric key used to encrypt the files and manually map them to\nthe FIDs. To address this issue, the File Tree module implements a tree structure to store each file as an entry in the\ntree. Organizing this structure is also trivial as we can assign children to pseudo files that we call folders. Finally,\nto keep track of encryption keys, the protocol maps every file to its respective key, emphasizing the security and\nprivacy posture that the File Tree module enables."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Protocol Overview",src:r(96).Z,width:"542",height:"842"})),(0,i.kt)("h2",{id:"folder-abstraction"},"Folder Abstraction"),(0,i.kt)("p",null,"These, of course, are all abstractions of what's actually under the hood. The File Tree module doesn't actually handle\nany of the folder logic; the system believes it is storing files that act as metadata stores, which then update to\nreflect changes in folders. This gives the user experience the feeling that folders and files are separate entities in\nthe tree, but in reality, they are identical."),(0,i.kt)("h2",{id:"file-entry-structure"},"File Entry Structure"),(0,i.kt)("p",null,"Storing file entries on-chain is a challenge since the chain itself is public. This requires the use of client-side\nencryption before uploading data to the chain itself. The main component of a file is location (Address), allowing users\nto query the rest of the data from the file. You can think of the location as a key in a traditional key-value store or\na path in bucket-based storage. The address is hashed using SHA256 to ensure it is impossible to retrieve the plain-text\nrepresentation of the file name while still being able to query the file using its given name."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Protocol Overview",src:r(4965).Z,width:"271",height:"220"})),(0,i.kt)("p",null,"The second most important data point in a file is the content of the file. This field is extremely versatile as it can\nstore any string. Traditionally this is used to store a JSON list of FIDs to point to a file on the Storage Module;\nhowever, the protocol can also theoretically use it to store short bits of text like encrypted passwords for a private\npassword manager. The owner tag is a hashed version of the owner, hiding what address owns each file. This field can be\nchanged to reflect the transferral of ownership. When making changes to the file such as deletion, movement, or\nadding/removing viewers/editors, the owner field is consulted to determine permissions. The same applies to edit access;\neditors can update the contents but nothing else."),(0,i.kt)("h2",{id:"encrypted-viewing-access"},"Encrypted Viewing Access"),(0,i.kt)("p",null,"For users to view files, they need access to the symmetric keys used to encrypt the files. To do this, the protocol has\na map of hashed addresses with each user's respective version of the symmetric key encrypted with that address's\ncorresponding public key. The protocol can then store that map in the file entry to act as an encryption key discovery\nlayer. The addresses in this viewing list are only able to access files and decrypt the data in their client; they have\nno privileges over the modification of the file entry in any way. This approach ensures that the File Tree module\nmaintains a strong security and privacy posture for user data."))}p.isMDXComponent=!0},96:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/filetree1-e947ab740b90156234b2fadb69a00533.png"},4965:(e,t,r)=>{r.d(t,{Z:()=>o});const o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ8AAADcCAYAAABu8iQLAAAenUlEQVR4Xu2dCbAcVRWGQVBxVzQaFwRBEERLUYFIkF0IiwbZFDcWSYDSgCABFQslyqaArHHDrVzADRcEERQsFClQBKOguCEoS9CgICK4tfVd607d15nbc1+/mfzv9fu/qqm86Znp02den7/vvf1y/pUqY4xpwUr1DcYYU4LFwxjTCouHMaYVFg9jTCssHsaYVlg8jDGtsHgYY1ph8TDGtMLiYYxphcXDGNMKi4cxphUWD2NMKywexphWWDyMMa2weBhjWmHxMMa0wuJhjGmFxcMY0wqLhzGmFRYPY0wrLB7GmFZYPIwxrbB4GGNaYfEwxrTC4mGMaYXFwxjTCouHMaYVFg9jTCssHsaYVsjEY6uttqpWWmklP/zwYwIP6kiFTDxI3BgzMZR1JIusTNqYrqCsI1lkZdLGdAVlHckiK5M2piso60gWWZm0MV1BWUeyyMqkjekKyjqSRVYmbUxXUNaRLLIyaWO6grKOZJGVSZuqmj17dvWQhzykWmWVVcY87rzzzuoDH/hA9aY3vSm873GPe1z1hz/8ofZpM1lQ1pEssjJp83/x+MxnPlPfHPj73/9e3XPPPeFni8fkRllHssjKpE2zeORGHt/85jer5z//+dVznvOcascdd6xuv/329GNGgLKOZJGVSZvxi8cdd9xRPf7xj69+9rOfhe0nn3xy9apXvSr9mBGgrCNZZGXS5v/igTA85SlP6T3WXnvt8Fo/8fj0pz9dzZkzp/f5v/3tb9Wqq65a/fvf/+5tMyseZR3JIiuTNv8Xj7POOiuMKOJj6dKl4bV+4sG2Rz3qUdWaa67ZezAS4XNGh7KOZJGVSZvxT1t479y5c2vvNGqUdSSLrEzajF88uIU7Y8aM6le/+lXYfs0111QLFixIP2YEKOtIFlmZtBm/eEC827LOOutUL3zhC6vvf//76ceMAGUdySIrkzamKyjrSBZZmbQxXUFZR7LIyqSN6QrKOpJFViZtTFdQ1pEssjJpY7qCso5kkZVJG9MVlHUki6xM2piuoKwjWWRl0sZ0BWUdySKvtdZaIXE//PCj/YM6UiETDxI3xkwMZR3JIiuTNqYrKOtIFlmZtDFdQVlHssjKpI3pCso6kkVWJm1MV1DWkSyyMmljuoKyjmSRlUkb0xWUdSSLrEzamK6grCNZ5GElvWzZstAeb968efWXxvDBD36w1x2rzmQ1Nrr00kuzx5V2+zLTl2HVURtkkUuS/spXvlLftBxnnnlmtWjRomAb8I9//KP+co/xisdksBR45StfWV111VX1zeHYUlc3M30pqaNRIYtckjS9Mgex8cYbV7/97W+r+fPnV+edd15vO0Ky9957V8985jNDv06a9UbxuPjii6tnP/vZwfkM4cFCAPG49tprqxe84AXV6173umqrrbYK7825pN18883Vy172srCfZz3rWdXxxx/fuP0Xv/hF8ILtB6MI3o8AbrbZZiGfE088sXr4wx8etiGip5xySrXvvvuG43vnO985ZuTB8X/4wx+uXv7yl4fv7Ljjjuvt+4QTTqjWWGON6sUvfnH1kY98JFgmmO5QUkejQha5JOlB4nHDDTcEYYArrrii2mmnnXqvLV68uNp8882rf/3rX9Vf//rXaoMNNgjFxlX7aU97WhCQ+D4MnxGPJUuWBG+SKEJNLmlvfvObq/e+973hZ/a/++67h39z2zFJ+vrXvx62p/zpT3+qnvCEJ1T33ntveP7JT36yOvvss8PPG264YW/kccYZZ4TpGcICqXg88YlPDIICf/zjH6uHPexhYWRy4403VquvvnrI48EHHwzfz6Dv1EwtSupoVMgi55L+xCc+EaYRPCjq+PNHP/rR+lurhQsXVh/60IfCz//973/D1RuLAHj1q19dnXrqqb33vv3tbw/FxgiA/UUYoXAsiAci8YhHPKL6z3/+E15rckl73/veV2255ZbV1Vdf3Xs/5LbnuP/++4NAkcef//znMa+l4sH0bIcddui9VhePn/zkJ73XEKPf/e53YTSSWkKee+65Fo+OkaujFYEscknSTSd6HEE89rGP7QkMw3yG98AQnqt45P3vf38otiuvvHK5ofsjH/nInniwz0iTSxojGqYETGmwaoxCldveBIW/5557hn1vt912ofChLh6vfe1re5+pi8evf/3r3mvxOdOXdJ2H3Ju+UzP1KKmjUSGLXJJ004l+0UUXjbkSA0XImgDstddeYZE08ra3vS0UEkP5dOTBaCIdeTz96U/vvVbqkoYREp9jzaRke45//vOf1dFHH1294hWvCM/r4sFaTKREPLCT3GOPPXrbmY41fadm6lFSR6NCFrkk6aYTHXGIU5YURgc//elPg3CwcElBsq7AlIZi4zlrB9/61rfC+ylCFjL7iUeTS9prXvOa3j6Y+rCm8qMf/Si7PbfmgTgwtYh3ipgq7bzzzuFnjJXivtqIB8fL8TMdIm9GNU3fqZl6lNTRqJBFnkjSf/nLX8LaRLzzkXLooYeGUcZ9991X7bbbbtXMmTOrTTbZJKx57LPPPuE9X/va10ITFYSGxU2mKtwlqYsH5FzSKEzuYLAf7oi8+93vbtyeu9vCushhhx0W7gpxd4a7LSwEw7HHHhumZSyWthEP4Lsgv1mzZoWFWETUdIeJ1NFEkUVWJj2dSBdtL7/88nBr23QHZR3JIiuTni7cdddd1WMe85jq5z//eXi+3377VYccckjtXWYqo6wjWWRl0tMJ/jCMKRR/KMbib/12sJnaKOtIFlmZtDFdQVlHssjKpI3pCso6kkVWJm1MV1DWkSyyMmljuoKyjmSRlUkb0xWUdSSLrEzamK6grCNZZGXSxnQFZR3JIiuTNqYrKOtIFlmZtDFdQVlHssjKpI3pCso6kkVWJm1MV1DWkSyyMmljuoKyjmSRlUkb0xWUdSSLrEzamK6grCNZ5GElfeGFF1abbrpptdpqqwWbAVr6pV212tDk1FZK2nx5mDTtl2bNEz1uM7UYVh21QRa5JOlBjnEXXHBBaHZzzjnnhD4V9Bw98sgjqyc/+cnV3XffXX97MTmntlKwgaBz+rDJ7Td2C1u6dGmR3YPpDiV1NCpkkUuSHtSsl07pGDHVQUyif8sXv/jF0IV8vfXWq7bYYovQSxROO+20av/99w92Boxc6Dv6+9//fjmnNsCLBce49ddfP5g6YaAEOae2XXfdtVp55ZVD3FtvvbWvIxzgLRMNolLY/+tf//rwfvqscoz4u9T3i3DiSMdx0LM1jjyuv/768N3QiZ2c11133Z7JFY2W2R/73WabbUKP1djb1Uw9SupoVMgilyTdJB64sLEPCj7HLbfcEgorTmPoqkUzZKChMI2C8WCBAw88sOe6lloe0Cz5uc99boiHVwwFfPrpp4fXck5tdGtHgKDJEY6u6jfddFP4OeVLX/pS6HTOSIORBE2Mf/CDH4zZLzBNO+KII8L7IIoHjZxpthw7r2P2hGgBHefpKo+/zG233RYaL+c8fM3kp6SORoUsci7pUsc4hIF9NJlbMwKJNgYQ3eEQAsSD6UkEQXjjG98Yfk7Fg76fjEYidFOPPrY5p7a0yJsc4XLQoZ0u7sRK86uLB/HT6VUqHnRdj2BFgUgA1hBR/ADRtHhMXXJ1tCKQRS5JumnkwTCdfTQtjjKkj4IQwR2Oz9StDNLnqXggPhRpdIx7xjOeEaY4kLM8qBd5zhGuCUYfiBTCOW/evOVGNEC86CkDqXikFhLpc6ZYmFlF6q5yZmpRUkejQha5JOkm8YCXvOQlPV+UlGOOOSZ0DGfkgbN9hAIkLlOIUvGgsFLnuZRS8YjUHeFKwKNm++23Dzaa9f3W45eIBw5yOMlFDjroIIvHFKakjkaFLHJJ0oPE45JLLgnmTwzDudPA46ijjgrdwhEICokrdywwzJOY70OTeKRObbi8MdKIaxasm8TbpfXijc+ZFrHmwOioyREut+ZBPogiaxk8WNhl0TXdL9Tjl4gHnr2MflhLYZ0GQyiLx9SlpI5GhSzysJLmbzI233zzUDgUEwLAQmCE4T8jCe44bLvttr07HU3ikTq1AUN77tbg6IY/btx/vXjT50wP4ppEzhEud7eFEcYuu+wSPoMQMuXBrhLifq+++url4peIBwK00047BSsGRmU46R1wwAG995qpxbDqqA2yyMqkpzvp34Iwwlm4cGHyqplKKOtIFlmZ9HSGaRijMNZ/GM3gw3v++efX32amCMo6kkVWJj2d4W9VDj744HDXiLtH6d+JmKmHso5kkZVJG9MVlHUki6xM2piuoKwjWWRl0sZ0BWUdySIrkzamKyjrSBZZmbQxXUFZR7LIyqSN6QrKOpJFViZtTFdQ1pEssjJpY7qCso5kkZVJG9MVlHUki6xM2piuoKwjWWRl0sZ0BWUdySIrkzamKyjrSBZZmbQxXUFZR7LIyqSN6QrKOpJFHlbS3/jGN6pZs2YFxzi6l9Ml67rrrqu/Tc6yZcuqGTNmhGbGTdAvNdcWkJaKdoQzKcOqozbIIpckPcgxjhaDFBQ9RbE1oLBo64cZ0o033lh/+8igR8YgaHO4aNGiYOTUZBcxXvEoiW26S0kdjQpZ5JKkBzVAxoUNP5Q68+fPD/1B6e9J05sIncJnz57de04XcwQq5/wGeKfQbQvHOHp+3n777WE73cz33Xff4MyG8RNOdDQnzrHxxhuH/qkc23nnndfbjpDsvffeoV8px7ZgwYKeeODyRo7ERng4TsTj2muvDXHpuRo9ZHLHefPNN4emz+yHHqrYUTRtN1OLkjoaFbLIJUk3iQedv9lHPyOlyy67LEwRgEa/WDMCVg08HnjggdA9i/cwnaCRcD/nN9zkKFgaCAPWlnRCB5oj8/nYUJmWfrT46wcNj6NoXXHFFWFqFVm8eHFo4IyDG82JN9hggyAejCjobB5tInkfJliIx5IlS0Kz4yhCTceJPWZsssz+d9999/BvbruZWpTU0aiQRc4lXeoYhy/LqquuOmZbJB0FYPr0hS98IYgEV1rWHLBupKBT86Z+zm/YJMyZM6e3HYEgJoXNNIRO6iXQYDiOkBAtrvbRS5cR0qmnntp7L93MEQ9yIO9IdLuL3dGxnIiNjJuOE5/dLbfcMnRbTxsf57abqUWujlYEssglSTeNPO66666wj1iEKYw8ops86yFvfetbg+csRYw4nXTSScF/5cgjjwzvqVsYxOd4pXCFj25xPLjCc6VHPDCMHkQcQWDlEIUQ4yamPcBUKfrAAL4qiMeVV14Z4qXgdhfFg31Gmo6TEc0JJ5wQpjR8J1GoctvN1KKkjkaFLHJJ0k3iAc973vP6urnR4BeXecAIe9NNNw1m0QgIV3Q8at/whjdU3/72t8N7cuKBLePcuXN721Pqvi85LrroouVGKIxyWLOAvfbaa0wOHCfiwYJvOvJgNJGOPFJflqbjTMGaks+xZlKy3Ux+SupoVMgilyQ9SDxYJOTOCqMJbBkZhTCqwD3+N7/5Te9966+/fvWiF70omCkxbeA5zvesa0BOPNgf6xrRD/aaa64JC5pQF4/cmgfi0G9Rl9EBBtQIB9MprCg5PqY0iAfPiR2d6xhdMBXrJx5Nx4mxddwHUx/WVHCqy203U4uSOhoVssjDSpoCYDHy0Y9+dBiqM6pgPSQFu0Yc3yIsWDLfj+TEA+JdDIQMG0oc7KEuHv3utiBorE3EOx8phx56aBhlYB252267VTNnzqw22WSTsOaxzz77hPcwUsIxDqFhcZOpCndJ6uIBueNESFjbYT/cJo7evrntZmoxrDpqgyyyMmljuoKyjmSRlUkb0xWUdSSLrEzamK6grCNZZGXSxnQFZR3JIiuTNqYrKOtIFlmZtDFdQVlHssjKpI3pCso6kkVWJm1MV1DWkSyyMmljuoKyjmSRlUkb0xWUdSSLrEzamK6grCNZZGXSxnQFZR3JIiuTNqYrKOtIFlmZtDFdQVlHssjKpI3pCso6kkVWJm1MV1DWkSyyMmljuoKyjmSRJ5o0Vgm0+Ktz0003hUbB9957b2gKXDdJasOw9kPnMDqzRyuI6crHPvax0PUt9nHNcemll2a/95133jn0bm0D3fRpuxg7v0224xkPE62jiSCLXJJ0k2Mc/Tpp8XfPPfeM2f6ud72r1/x46dKlQ7EVGMZ+6KJOK0Q6lk93gyWKNbZabIKWkldddVV9c/hd0OKxyXlvEPScTcVjMh3PeCipo1Ehi1yS9KAGyJtttln18Y9/fMw2+nF+5zvfCT+nIwZ8SnBTo/kxhkcPPvhgOGnSPqS8Fs2fOCEYJWAqFfdz2mmnhX6oWC7QkZ0eoHRnB3qLvvSlLw3HjJMco6LUUoEeo3jIYCq14YYb9rYDPVfx26UvKc2Q8Yxp2s7oih6s5MMxYNMAORe43PZ+fVcju+66a/We97wnXFHpc3rssccGWwgc6oh7/fXXh/fx/dATlu+d951++um9fdBX9sQTT6y23nrr8Jlo71AvVpo7c2zsg98pRlp8DosKtnERwd3vHe94R+jjSkf69Eqfc/yjmPld0QN2m222CX1aY9wm8VAfz3goqaNRIYtckvQg8cAIihMzgpkTto1xlBCLnkbCdEvHEY0RAIXBSc5JwckA+MDQgDjaN9LZnEbC6X5oekxzZPxQ4MADD+yJDeZNNC8GxIsTLR3G7rHHHmHYC5w4NCAGurnTuPj8888Pz+n+jlVDbjtstNFGPRMs9sMJjBjmXOBy23Md34H3IAocB2KFiVQUQ4SE3OHwww8PggqIFIbjt912W3iOdQQjQaAJNN/jLbfcMqZY6RiPSDPNBGKcffbZ4WdENl7paRKNs979998fnqfFmnP8o2s9oolHDcfEuRGtPHPiMRmOZzyU1NGokEXOJV3qGAdMWdLRBSd0PFkhvrbffvuFK0eEUUAUCX6BTEso0qOPPjrMe7E94IRhjSLdD+LB0DWCADGaALqfIzgRrrTxZLr77rvDFT+KGjm+5S1vCT8zckn9WYjNiZTbTvFxPOk0CgvN733ve1kXuNz2JhCPs846K/yM4PL74nuCz372s73vgUKIBQRMzeJIiONPnfgoNszJ02Lls1ypKay6dWharBwPU75IvVj7Of5hL5GOhDg/+hXrZDue8ZCroxWBLHJJ0oNGHsAwEGHgylu3UIhFzy+W16KbGubX0WqSk4aRCa5yF154YRADigzzaYaj6X7qdgvp84c+9KFjFtMYssaTCSFiJBKFEPe4Jz3pSUEQGDkgYHVy2/FW4SSLufBgXxRlzgUut70JiiOddvH74gSHc889N3yn8OMf/ziMUDDyZirHOlS0fSBXRiMR3sdFoD5NoND23HPPULTbbbddb3pWL9b0AlIv1n7WGenvAJg+9CvWyXY846GkjkaFLHJJ0iXicckll4TRwgUXXBCubCmx6PkF9XOWg0996lPVUUcdFU5+RghccSguYsdiKREPCjj1i2H9JJ4oTIfqC21cub/61a+GEQZrA3FEgAiyFpHbznGkI5IcORe43PY6peLBSOOcc87pvY/vLRUPxCXCmhDrBfVijSCmjP5YT4B6sfK5SEmxMlWMoyc46KCD+hbrZDue8VBSR6NCFrkk6RLxoLjWWGONsI6QnsQQi555PSONOI/FpzYWBtMAhCPepmPqwSJZKkQl4sFVlbUAYATDFZiTCdvIpz71qWHtIIWpC072bOekjMfDomxc8+i3HXC/+/znPx9+Zq2GURInX84FLrd90JpHiXhQGFEgyJdRVYyFeGBuBawvcQudtY+0WClGvod4pwLT7rhv1pzivtoUKwu8jBw4R1h7YG2oX7FOtuMZDyV1NCpkkYeZNFeH+LcdKel6CENErpKsPVCEcVEPEKn58+eHn/nFYmF5zDHH9F4vEQ9c3JgWrLvuuuGKwtWKtQFGNXFxMYWFOQSGefWSJUvC6IQpRXpXJbedBUzWbDhu4kU7y5wLXG57092WUvFgSsY0EKFjxMbvgpENoox4UDB4CiPwceExLVa+78MOOyxM0fjdINw33HBDeA0xRozOOOOMVsXKojCiTuwdd9wxLGgfcMAB4T058ZgMxzMehllH40UWWZn0qEgXI1mgZAQynUE8uMLWyU0TRkH6O0E0Fy5cGH7OiceoKTme8aCsI1lkZdKjgDszLN4y3fjlL38ZCife0p2u8B2ki8iRFVWsTMkYmXGblOJMb30rxKP0eMaDso5kkZVJjwKc6pnPMoTnD4w+97nP1d8y7WgSj5I/B58o3GI++OCDw++Eu1JHHHFEEPf6n4NPtuMZD8o6kkVWJm1MV1DWkSyyMmljuoKyjmSRlUkb0xWUdSSLrEzamK6grCNZZGXSxnQFZR3JIiuTNqYrKOtIFlmZtDFdQVlHssjKpI3pCso6kkVWJm1MV1DWkSyyMmljuoKyjmSRlUkb0xWUdSSLrEzamK6grCNZZGXSxnQFZR3JIiuTNqYrKOtIFnkYSc+ePTt0WOe/MqeP2A6wTvwv4rTgiy0OaQ5Mx6869Nsc9X/RngqU/nf1tOtYnbSj23ip/3f1YRxP2vVrvNSPR80w6qgtssglSTc5xgHiMZ6TIIoHgkEbQKBTduwNGqGR8fbbb1/NnTu3+uEPfzjmtelGSaMcelLQKrEfdM6aqOPeeBv3DDoelbvbKCipo1Ehi1yS9KAGyIPE4+KLLw6NefBQWbRoUbhipSMPep7ST5Iu5dtuu23vczRpoUExTYbpR5ry5S9/OeyPPp3YWj7wwAON2/GIoWMUr9G3kgbAgCVBPxe33PamfqPkRVducqDJDF3ZaayLFQKNnGPv0djLlD6mmGBddtllYTsNjHlOs2K+U/qRXn755eG1tFjp4E5ufJ44dE7D5wQTrZVXXjl8Dh/euptaHHngMseIgT6nW2yxReiqxe8ISt3UhnE8ceQxjONRU1JHo0IWuSTpiYgHXZs4WeLJsHjx4jDFqU9b8DtJRx58jpMRQynaxdEINwoBTZNnzJgRCpz37bLLLsEPJbedNoQUNs2R4eSTTw6duSHn4pbbzgmb63ROg10c5YDO8Li2xQa8OOrRsBjouk43cEAYETS47rrrQrFhYwH42FBIkBYr3xXd0riycwWn9SIufYzi8KWJ1N3UonjwPVB0sQM5x0WDYSh1UxvG8UTxGMbxqCmpo1Ehi5xLejyOcYgHZkucKOmDNv9cqVN/E64kxBwkHjQtxjoyggkUowrA4yV1jENcEJbcdgp1zpw5ve2cdNg2IjA5F7fc9iYQj+gZg9Ulc/II3bmjyRPFQ2xgBMR3B4hH+l1RMIgJRZgWK34sjKwYTaXD/nqx1t3UUvGg+3gEm4tobFXqpjaM40nFY6LHoyZXRysCWeSSpCcy8sDykCFnCvYMg8QDpzBO9iha/BxNf7ARiPaSKbntGCbzeY4jPhiJMCLJubjltjeBeDDqAaYb0Q0POOk5DuDKyhU4mnTHAkA8+n1XGETV1xj4vrB94LuZN29eEMp+xZqKfSoeFHskfV7qpjaM40nFY6LHo6akjkaFLHJJ0hMRD8yW0qspv/BBIw8W0ph+MJeOUMwUMeZKjDBYt4jgMMecOredY2PRdRA5F7fc9jol4oEFAtMZvhfge0jFA6+aaEzFqInvatmyZcsVa4TvikXlU045pW+x8rlIiXiUuqkN43hKxKP0eNSU1NGokEUuSXoi4oFVIEIQ57MUEL/wungwv581a1YoHNZF0ilLhFEFQ1gKEEHCBIjhPycYo4TcdjqqcwyIALBguWDBgvBzzsUtt33Qmscg8aAwsMREGDhG/EKYmjCVQTz4bhBS4DtlsRHSYuU7YOGQ74rH/vvvH/bNmgyfv++++8L76sVaIh6lbmrDOJ4S8Sg9HjUldTQqZJGHkXTu7zy4AgHCgEsaQ3IWITkBKLJUPJhCMM/lpGE4HxcXU7h7EQuS+/wsJs6cOXPMXZXc9ni3hXjYFUYf15yLW257092WEvEARJDvYqONNqq++93vhgVBFggRD4798MMPD656LKSy8AhpsXJFZzGY74vjY4pHIQHDfI6DtZp6sZaIR6mb2jCOp0Q8So9HzTDqqC2yyMqkzVgQD24N9yM3TRgFJW5qk+141CjrSBZZmbQZC+KRmyKuqGItdVObbMejRllHssjKpM1YBolHyZ+DT5RSN7XJdjxqlHUki6xM2piuoKwjWWRl0sZ0BWUdySIrkzamKyjrSBZZmbQxXUFZR7LIyqSN6QrKOpJF5v8jkLgffvjR/kEdqZCJhzFmamPxMMa0wuJhjGmFxcMY0wqLhzGmFRYPY0wrLB7GmFZYPIwxrbB4GGNaYfEwxrTC4mGMaYXFwxjTCouHMaYVFg9jTCssHsaYVlg8jDGtsHgYY1ph8TDGtMLiYYxphcXDGNMKi4cxphUWD2NMKywexphWWDyMMa2weBhjWmHxMMa0wuJhjGmFxcMY0wqLhzGmFRYPY0wrLB7GmFZYPIwxrbB4GGNa8T+Jg9FLWZvRrAAAAABJRU5ErkJggg=="}}]); \ No newline at end of file diff --git a/assets/js/8a56e0ba.b5bf4935.js b/assets/js/8a56e0ba.b5bf4935.js new file mode 100644 index 0000000..41f2493 --- /dev/null +++ b/assets/js/8a56e0ba.b5bf4935.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcanine_docs=self.webpackChunkcanine_docs||[]).push([[8957],{3905:(e,t,r)=>{r.d(t,{Zo:()=>d,kt:()=>h});var o=r(7294);function i(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function n(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function s(e){for(var t=1;t=0||(i[r]=e[r]);return i}(e,t);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(i[r]=e[r])}return i}var l=o.createContext({}),c=function(e){var t=o.useContext(l),r=t;return e&&(r="function"==typeof e?e(t):s(s({},t),e)),r},d=function(e){var t=c(e.components);return o.createElement(l.Provider,{value:t},e.children)},u="mdxType",p={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},f=o.forwardRef((function(e,t){var r=e.components,i=e.mdxType,n=e.originalType,l=e.parentName,d=a(e,["components","mdxType","originalType","parentName"]),u=c(r),f=i,h=u["".concat(l,".").concat(f)]||u[f]||p[f]||n;return r?o.createElement(h,s(s({ref:t},d),{},{components:r})):o.createElement(h,s({ref:t},d))}));function h(e,t){var r=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var n=r.length,s=new Array(n);s[0]=f;var a={};for(var l in t)hasOwnProperty.call(t,l)&&(a[l]=t[l]);a.originalType=e,a[u]="string"==typeof e?e:i,s[1]=a;for(var c=2;c{r.r(t),r.d(t,{assets:()=>l,contentTitle:()=>s,default:()=>p,frontMatter:()=>n,metadata:()=>a,toc:()=>c});var o=r(7462),i=(r(7294),r(3905));const n={sidebar_position:8},s="Filetree Module",a={unversionedId:"protocol/modules/filetree",id:"protocol/modules/filetree",title:"Filetree Module",description:"Overview",source:"@site/docs/protocol/modules/filetree.md",sourceDirName:"protocol/modules",slug:"/protocol/modules/filetree",permalink:"/docs/protocol/modules/filetree",draft:!1,editUrl:"https://github.com/JackalLabs/canine-docs/blob/master/docs/protocol/modules/filetree.md",tags:[],version:"current",sidebarPosition:8,frontMatter:{sidebar_position:8},sidebar:"tutorialSidebar",previous:{title:"Storage Module",permalink:"/docs/protocol/modules/storage"},next:{title:"Jackal Proof-of-Persistence Documentation",permalink:"/docs/protocol/p-o-p"}},l={},c=[{value:"Overview",id:"overview",level:2},{value:"Folder Abstraction",id:"folder-abstraction",level:2},{value:"File Entry Structure",id:"file-entry-structure",level:2},{value:"Encrypted Viewing Access",id:"encrypted-viewing-access",level:2}],d={toc:c},u="wrapper";function p(e){let{components:t,...n}=e;return(0,i.kt)(u,(0,o.Z)({},d,n,{components:t,mdxType:"MDXLayout"}),(0,i.kt)("h1",{id:"filetree-module"},"Filetree Module"),(0,i.kt)("h2",{id:"overview"},"Overview"),(0,i.kt)("p",null,"The Jackal Filetree module is responsible for organizing and managing user files in a secure and user-friendly way. When\na user uploads a file using the Storage module, the file is only accessible from the File ID (FID), which can be\nchallenging to remember for every file uploaded to Jackal. Additionally, every single upload would be required to be\npublic, or the user would need to keep track of every symmetric key used to encrypt the files and manually map them to\nthe FIDs. To address this issue, the File Tree module implements a tree structure to store each file as an entry in the\ntree. Organizing this structure is also trivial as we can assign children to pseudo files that we call folders. Finally,\nto keep track of encryption keys, the protocol maps every file to its respective key, emphasizing the security and\nprivacy posture that the File Tree module enables."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Protocol Overview",src:r(96).Z,width:"542",height:"842"})),(0,i.kt)("h2",{id:"folder-abstraction"},"Folder Abstraction"),(0,i.kt)("p",null,"These, of course, are all abstractions of what's actually under the hood. The File Tree module doesn't actually handle\nany of the folder logic; the system believes it is storing files that act as metadata stores, which then update to\nreflect changes in folders. This gives the user experience the feeling that folders and files are separate entities in\nthe tree, but in reality, they are identical."),(0,i.kt)("h2",{id:"file-entry-structure"},"File Entry Structure"),(0,i.kt)("p",null,"Storing file entries on-chain is a challenge since the chain itself is public. This requires the use of client-side\nencryption before uploading data to the chain itself. The main component of a file is location (Address), allowing users\nto query the rest of the data from the file. You can think of the location as a key in a traditional key-value store or\na path in bucket-based storage. The address is hashed using SHA256 to ensure it is impossible to retrieve the plain-text\nrepresentation of the file name while still being able to query the file using its given name."),(0,i.kt)("p",null,(0,i.kt)("img",{alt:"Protocol Overview",src:r(4965).Z,width:"271",height:"220"})),(0,i.kt)("p",null,"The second most important data point in a file is the content of the file. This field is extremely versatile as it can\nstore any string. Traditionally this is used to store a JSON list of FIDs to point to a file on the Storage Module;\nhowever, the protocol can also theoretically use it to store short bits of text like encrypted passwords for a private\npassword manager. The owner tag is a hashed version of the owner, hiding what address owns each file. This field can be\nchanged to reflect the transferral of ownership. When making changes to the file such as deletion, movement, or\nadding/removing viewers/editors, the owner field is consulted to determine permissions. The same applies to edit access;\neditors can update the contents but nothing else."),(0,i.kt)("h2",{id:"encrypted-viewing-access"},"Encrypted Viewing Access"),(0,i.kt)("p",null,"For users to view files, they need access to the symmetric keys used to encrypt the files. To do this, the protocol has\na map of hashed addresses with each user's respective version of the symmetric key encrypted with that address's\ncorresponding public key. The protocol can then store that map in the file entry to act as an encryption key discovery\nlayer. The addresses in this viewing list are only able to access files and decrypt the data in their client; they have\nno privileges over the modification of the file entry in any way. This approach ensures that the File Tree module\nmaintains a strong security and privacy posture for user data."))}p.isMDXComponent=!0},96:(e,t,r)=>{r.d(t,{Z:()=>o});const o=r.p+"assets/images/filetree1-e947ab740b90156234b2fadb69a00533.png"},4965:(e,t,r)=>{r.d(t,{Z:()=>o});const o="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQ8AAADcCAYAAABu8iQLAAAenUlEQVR4Xu2dCbAcVRWGQVBxVzQaFwRBEERLUYFIkF0IiwbZFDcWSYDSgCABFQslyqaArHHDrVzADRcEERQsFClQBKOguCEoS9CgICK4tfVd607d15nbc1+/mfzv9fu/qqm86Znp02den7/vvf1y/pUqY4xpwUr1DcYYU4LFwxjTCouHMaYVFg9jTCssHsaYVlg8jDGtsHgYY1ph8TDGtMLiYYxphcXDGNMKi4cxphUWD2NMKywexphWWDyMMa2weBhjWmHxMMa0wuJhjGmFxcMY0wqLhzGmFRYPY0wrLB7GmFZYPIwxrbB4GGNaYfEwxrTC4mGMaYXFwxjTCouHMaYVFg9jTCssHsaYVsjEY6uttqpWWmklP/zwYwIP6kiFTDxI3BgzMZR1JIusTNqYrqCsI1lkZdLGdAVlHckiK5M2piso60gWWZm0MV1BWUeyyMqkjekKyjqSRVYmbUxXUNaRLLIyaWO6grKOZJGVSZuqmj17dvWQhzykWmWVVcY87rzzzuoDH/hA9aY3vSm873GPe1z1hz/8ofZpM1lQ1pEssjJp83/x+MxnPlPfHPj73/9e3XPPPeFni8fkRllHssjKpE2zeORGHt/85jer5z//+dVznvOcascdd6xuv/329GNGgLKOZJGVSZvxi8cdd9xRPf7xj69+9rOfhe0nn3xy9apXvSr9mBGgrCNZZGXS5v/igTA85SlP6T3WXnvt8Fo/8fj0pz9dzZkzp/f5v/3tb9Wqq65a/fvf/+5tMyseZR3JIiuTNv8Xj7POOiuMKOJj6dKl4bV+4sG2Rz3qUdWaa67ZezAS4XNGh7KOZJGVSZvxT1t479y5c2vvNGqUdSSLrEzajF88uIU7Y8aM6le/+lXYfs0111QLFixIP2YEKOtIFlmZtBm/eEC827LOOutUL3zhC6vvf//76ceMAGUdySIrkzamKyjrSBZZmbQxXUFZR7LIyqSN6QrKOpJFViZtTFdQ1pEssjJpY7qCso5kkZVJG9MVlHUki6xM2piuoKwjWWRl0sZ0BWUdySKvtdZaIXE//PCj/YM6UiETDxI3xkwMZR3JIiuTNqYrKOtIFlmZtDFdQVlHssjKpI3pCso6kkVWJm1MV1DWkSyyMmljuoKyjmSRlUkb0xWUdSSLrEzamK6grCNZ5GElvWzZstAeb968efWXxvDBD36w1x2rzmQ1Nrr00kuzx5V2+zLTl2HVURtkkUuS/spXvlLftBxnnnlmtWjRomAb8I9//KP+co/xisdksBR45StfWV111VX1zeHYUlc3M30pqaNRIYtckjS9Mgex8cYbV7/97W+r+fPnV+edd15vO0Ky9957V8985jNDv06a9UbxuPjii6tnP/vZwfkM4cFCAPG49tprqxe84AXV6173umqrrbYK7825pN18883Vy172srCfZz3rWdXxxx/fuP0Xv/hF8ILtB6MI3o8AbrbZZiGfE088sXr4wx8etiGip5xySrXvvvuG43vnO985ZuTB8X/4wx+uXv7yl4fv7Ljjjuvt+4QTTqjWWGON6sUvfnH1kY98JFgmmO5QUkejQha5JOlB4nHDDTcEYYArrrii2mmnnXqvLV68uNp8882rf/3rX9Vf//rXaoMNNgjFxlX7aU97WhCQ+D4MnxGPJUuWBG+SKEJNLmlvfvObq/e+973hZ/a/++67h39z2zFJ+vrXvx62p/zpT3+qnvCEJ1T33ntveP7JT36yOvvss8PPG264YW/kccYZZ4TpGcICqXg88YlPDIICf/zjH6uHPexhYWRy4403VquvvnrI48EHHwzfz6Dv1EwtSupoVMgi55L+xCc+EaYRPCjq+PNHP/rR+lurhQsXVh/60IfCz//973/D1RuLAHj1q19dnXrqqb33vv3tbw/FxgiA/UUYoXAsiAci8YhHPKL6z3/+E15rckl73/veV2255ZbV1Vdf3Xs/5LbnuP/++4NAkcef//znMa+l4sH0bIcddui9VhePn/zkJ73XEKPf/e53YTSSWkKee+65Fo+OkaujFYEscknSTSd6HEE89rGP7QkMw3yG98AQnqt45P3vf38otiuvvHK5ofsjH/nInniwz0iTSxojGqYETGmwaoxCldveBIW/5557hn1vt912ofChLh6vfe1re5+pi8evf/3r3mvxOdOXdJ2H3Ju+UzP1KKmjUSGLXJJ004l+0UUXjbkSA0XImgDstddeYZE08ra3vS0UEkP5dOTBaCIdeTz96U/vvVbqkoYREp9jzaRke45//vOf1dFHH1294hWvCM/r4sFaTKREPLCT3GOPPXrbmY41fadm6lFSR6NCFrkk6aYTHXGIU5YURgc//elPg3Cw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"}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.2357cf90.js b/assets/js/935f2afb.2357cf90.js deleted file mode 100644 index 066b411..0000000 --- a/assets/js/935f2afb.2357cf90.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcanine_docs=self.webpackChunkcanine_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":{"tutorialSidebar":[{"type":"link","label":"Welcome to Jackal Wiki","href":"/docs/intro","docId":"intro"},{"type":"category","label":"Overview","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Discover the Jackal Protocol","href":"/docs/overview/jackal-tldr","docId":"overview/jackal-tldr"},{"type":"link","label":"What Is The JKL Token?","href":"/docs/overview/jkl","docId":"overview/jkl"},{"type":"link","label":"Why Choose Jackal Protocol","href":"/docs/overview/why-jackal","docId":"overview/why-jackal"}]},{"type":"category","label":"Using Jackal","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Wallets","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Keplr Wallet","href":"/docs/using-jackal/wallet/keplr","docId":"using-jackal/wallet/keplr"}]},{"type":"link","label":"Accessing JKL Tokens on a Decentralized Exchange and Withdrawing to Jackal Protocol","href":"/docs/using-jackal/fund","docId":"using-jackal/fund"},{"type":"link","label":"How to Delegate JKL Tokens to a Validator","href":"/docs/using-jackal/delegate","docId":"using-jackal/delegate"},{"type":"link","label":"Jackal Dashboard Guide","href":"/docs/using-jackal/dashboard","docId":"using-jackal/dashboard"}]},{"type":"category","label":"Community and Contributors","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Join the Community!","href":"/docs/contributors/join","docId":"contributors/join"},{"type":"link","label":"Jackal Foundation","href":"/docs/contributors/foundation","docId":"contributors/foundation"},{"type":"link","label":"Jackal Labs","href":"/docs/contributors/labs","docId":"contributors/labs"}]},{"type":"category","label":"The Protocol","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Blockchain Modules","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Module Overview","href":"/docs/protocol/modules/module-overview","docId":"protocol/modules/module-overview"},{"type":"link","label":"JKLmint Module","href":"/docs/protocol/modules/jklmint","docId":"protocol/modules/jklmint"},{"type":"link","label":"Name Service Module","href":"/docs/protocol/modules/rns","docId":"protocol/modules/rns"},{"type":"link","label":"WASM Module","href":"/docs/protocol/modules/wasm","docId":"protocol/modules/wasm"},{"type":"link","label":"Storage Module","href":"/docs/protocol/modules/storage","docId":"protocol/modules/storage"},{"type":"link","label":"dsig Module","href":"/docs/protocol/modules/dsig","docId":"protocol/modules/dsig"},{"type":"link","label":"Filetree Module","href":"/docs/protocol/modules/filetree","docId":"protocol/modules/filetree"}]},{"type":"link","label":"Jackal Proof-of-Persistence Documentation","href":"/docs/protocol/p-o-p","docId":"protocol/p-o-p"},{"type":"link","label":"JKL Token","href":"/docs/protocol/tokens","docId":"protocol/tokens"},{"type":"link","label":"Encryption in Jackal Protocol","href":"/docs/protocol/encryption","docId":"protocol/encryption"},{"type":"link","label":"Validators","href":"/docs/protocol/validators","docId":"protocol/validators"}]},{"type":"category","label":"Official Links","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Jackal Protocol Links","href":"/docs/official-links/jackal-protocol","docId":"official-links/jackal-protocol"},{"type":"link","label":"Jackal Foundation Links","href":"/docs/official-links/jackal-foundation","docId":"official-links/jackal-foundation"},{"type":"link","label":"Jackal Labs Links","href":"/docs/official-links/jackal-labs","docId":"official-links/jackal-labs"}]},{"type":"category","label":"Ecosystem","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Grants and Funding","href":"/docs/ecosystem/grants-funding","docId":"ecosystem/grants-funding"},{"type":"link","label":"Partnerships","href":"/docs/ecosystem/partnerships","docId":"ecosystem/partnerships"}]},{"type":"category","label":"Nodes & Providers","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Setting Up","href":"/docs/nodes/install","docId":"nodes/install"},{"type":"category","label":"Full Nodes","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Hardware","href":"/docs/nodes/nodes/hardware","docId":"nodes/nodes/hardware"},{"type":"link","label":"Installing Canined","href":"/docs/nodes/nodes/installation","docId":"nodes/nodes/installation"},{"type":"link","label":"Joining Testnet","href":"/docs/nodes/nodes/testnet","docId":"nodes/nodes/testnet"},{"type":"link","label":"Joining Mainnet","href":"/docs/nodes/nodes/mainnet","docId":"nodes/nodes/mainnet"}]},{"type":"category","label":"Validators","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Creating Validator","href":"/docs/nodes/validators/joining","docId":"nodes/validators/joining"}]},{"type":"category","label":"Storage Providers","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Hardware","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"DIY Build","href":"/docs/nodes/providers/hardware/diy-serious copy","docId":"nodes/providers/hardware/diy-serious copy"},{"type":"link","label":"Enterprise Build","href":"/docs/nodes/providers/hardware/enterprise","docId":"nodes/providers/hardware/enterprise"}]},{"type":"link","label":"Creating Provider","href":"/docs/nodes/providers/building","docId":"nodes/providers/building"},{"type":"link","label":"Setting Up JProvd","href":"/docs/nodes/providers/setting_up","docId":"nodes/providers/setting_up"}]}]},{"type":"category","label":"Developers","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"dApp Libraries","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"About These Libraries","href":"/docs/developers/dAppLibraries/intro","docId":"developers/dAppLibraries/intro"},{"type":"link","label":"Jackal.js-protos / Jackal.nodejs-protos","href":"/docs/developers/dAppLibraries/jackal_protos","docId":"developers/dAppLibraries/jackal_protos"},{"type":"link","label":"Jackal.js","href":"/docs/developers/dAppLibraries/jackal_js","docId":"developers/dAppLibraries/jackal_js"},{"type":"link","label":"Jackal.nodejs","href":"/docs/developers/dAppLibraries/jackal_nodejs","docId":"developers/dAppLibraries/jackal_nodejs"},{"type":"link","label":"Jackal.go","href":"/docs/developers/dAppLibraries/jackal_go","docId":"developers/dAppLibraries/jackal_go"}]},{"type":"category","label":"APIs","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"About Jackal APIs","href":"/docs/developers/apis/intro","docId":"developers/apis/intro"},{"type":"link","label":"APIs","href":"/docs/developers/apis/apis","docId":"developers/apis/apis"}]},{"type":"link","label":"Getting Started","href":"/docs/developers/intro","docId":"developers/intro"}]}]},"docs":{"contributors/foundation":{"id":"contributors/foundation","title":"Jackal Foundation","description":"What is the Jackal Foundation?","sidebar":"tutorialSidebar"},"contributors/join":{"id":"contributors/join","title":"Join the Community!","description":"The Jackal Community is open to all.","sidebar":"tutorialSidebar"},"contributors/labs":{"id":"contributors/labs","title":"Jackal Labs","description":"Who is Jackal Labs?","sidebar":"tutorialSidebar"},"developers/apis/apis":{"id":"developers/apis/apis","title":"APIs","description":"Self Custodial","sidebar":"tutorialSidebar"},"developers/apis/intro":{"id":"developers/apis/intro","title":"About Jackal APIs","description":"Coming Soon","sidebar":"tutorialSidebar"},"developers/dAppLibraries/intro":{"id":"developers/dAppLibraries/intro","title":"About These Libraries","description":"The following sections outline the basics of how to use the available libraries to interact with the Jackal chain. These","sidebar":"tutorialSidebar"},"developers/dAppLibraries/jackal_go":{"id":"developers/dAppLibraries/jackal_go","title":"Jackal.go","description":"Quickstart","sidebar":"tutorialSidebar"},"developers/dAppLibraries/jackal_js":{"id":"developers/dAppLibraries/jackal_js","title":"Jackal.js","description":"Implements Jacakl.js-protos","sidebar":"tutorialSidebar"},"developers/dAppLibraries/jackal_nodejs":{"id":"developers/dAppLibraries/jackal_nodejs","title":"Jackal.nodejs","description":"Quickstart","sidebar":"tutorialSidebar"},"developers/dAppLibraries/jackal_protos":{"id":"developers/dAppLibraries/jackal_protos","title":"Jackal.js-protos / Jackal.nodejs-protos","description":"About","sidebar":"tutorialSidebar"},"developers/intro":{"id":"developers/intro","title":"Getting Started","description":"Web-Apps","sidebar":"tutorialSidebar"},"ecosystem/grants-funding":{"id":"ecosystem/grants-funding","title":"Grants and Funding","description":"The Jackal Foundation facilitates non-equity grants, seed funding, and beyond through our various funding programs.","sidebar":"tutorialSidebar"},"ecosystem/partnerships":{"id":"ecosystem/partnerships","title":"Partnerships","description":"Blockchain and web3 native software engineering teams often wish to become core contributors through a partnership with","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Welcome to Jackal Wiki","description":"Welcome, explorer, to the Jackal Wiki, where you\'ll embark on a journey to discover a more secure, simple, and","sidebar":"tutorialSidebar"},"nodes/install":{"id":"nodes/install","title":"Setting Up","description":"Pre-Requisites","sidebar":"tutorialSidebar"},"nodes/nodes/hardware":{"id":"nodes/nodes/hardware","title":"Hardware","description":"We recommend a minimum hardware requirement of:","sidebar":"tutorialSidebar"},"nodes/nodes/installation":{"id":"nodes/nodes/installation","title":"Installing Canined","description":"Pre-Requisites","sidebar":"tutorialSidebar"},"nodes/nodes/mainnet":{"id":"nodes/nodes/mainnet","title":"Joining Mainnet","description":"Perform the following as the jackal user.","sidebar":"tutorialSidebar"},"nodes/nodes/testnet":{"id":"nodes/nodes/testnet","title":"Joining Testnet","description":"After installing canined. You can join the testnet by following these steps:","sidebar":"tutorialSidebar"},"nodes/providers/building":{"id":"nodes/providers/building","title":"Creating Provider","description":"Disclaimer","sidebar":"tutorialSidebar"},"nodes/providers/hardware/diy-serious copy":{"id":"nodes/providers/hardware/diy-serious copy","title":"DIY Build","description":"For DIY individuals looking to power web3 infrastructure and increase your ROI- here is the recommended system for","sidebar":"tutorialSidebar"},"nodes/providers/hardware/enterprise":{"id":"nodes/providers/hardware/enterprise","title":"Enterprise Build","description":"For teams looking to build a large storage system of ~2.1 Petabytes of storage, the estimated base price of the box with","sidebar":"tutorialSidebar"},"nodes/providers/setting_up":{"id":"nodes/providers/setting_up","title":"Setting Up JProvd","description":"Pre-Requisites","sidebar":"tutorialSidebar"},"nodes/validators/joining":{"id":"nodes/validators/joining","title":"Creating Validator","description":"This guide assumes you are using the same machine as the full node.","sidebar":"tutorialSidebar"},"official-links/jackal-foundation":{"id":"official-links/jackal-foundation","title":"Jackal Foundation Links","description":"Here are the official website links for Jackal Foundation. Please use and bookmark these links to reduce the likelihood","sidebar":"tutorialSidebar"},"official-links/jackal-labs":{"id":"official-links/jackal-labs","title":"Jackal Labs Links","description":"Here are the official website links for Jackal Labs. Please use and bookmark these links to reduce the likelihood of","sidebar":"tutorialSidebar"},"official-links/jackal-protocol":{"id":"official-links/jackal-protocol","title":"Jackal Protocol Links","description":"Here are the official website links of the Jackal Protocol. Please use and bookmark these links to reduce the likelihood","sidebar":"tutorialSidebar"},"overview/jackal-tldr":{"id":"overview/jackal-tldr","title":"Discover the Jackal Protocol","description":"The Jackal Protocol provides a decentralized infrastructure for secure and scalable data storage, enabling individuals,","sidebar":"tutorialSidebar"},"overview/jkl":{"id":"overview/jkl","title":"What Is The JKL Token?","description":"The JKL Token is the driving force behind the revolutionary Jackal Protocol. This versatile native token seamlessly","sidebar":"tutorialSidebar"},"overview/why-jackal":{"id":"overview/why-jackal","title":"Why Choose Jackal Protocol","description":"The Jackal Protocol offers various advantages for individuals, small businesses, and large enterprises seeking secure,","sidebar":"tutorialSidebar"},"protocol/encryption":{"id":"protocol/encryption","title":"Encryption in Jackal Protocol","description":"The Jackal Protocol utilizes encryption techniques to ensure the privacy and security of user data. The two primary","sidebar":"tutorialSidebar"},"protocol/modules/dsig":{"id":"protocol/modules/dsig","title":"dsig Module","description":"Coming Soon","sidebar":"tutorialSidebar"},"protocol/modules/filetree":{"id":"protocol/modules/filetree","title":"Filetree Module","description":"Overview","sidebar":"tutorialSidebar"},"protocol/modules/jklmint":{"id":"protocol/modules/jklmint","title":"JKLmint Module","description":"The jklmint module is responsible for the management of the native JKL token within the Jackal Protocol. This module","sidebar":"tutorialSidebar"},"protocol/modules/module-overview":{"id":"protocol/modules/module-overview","title":"Module Overview","description":"Protocol Overview","sidebar":"tutorialSidebar"},"protocol/modules/rns":{"id":"protocol/modules/rns","title":"Name Service Module","description":"The rns (Reverse Name Service) module is an essential component of the Jackal Protocol, providing a user-friendly","sidebar":"tutorialSidebar"},"protocol/modules/storage":{"id":"protocol/modules/storage","title":"Storage Module","description":"The Jackal Protocol incorporates two crucial algorithms for decentralized storage: Jackal Proof-of-Persistence (JPOP)","sidebar":"tutorialSidebar"},"protocol/modules/wasm":{"id":"protocol/modules/wasm","title":"WASM Module","description":"The wasm module in the Jackal Protocol incorporates the CosmWasm smart contracting platform, which is designed","sidebar":"tutorialSidebar"},"protocol/p-o-p":{"id":"protocol/p-o-p","title":"Jackal Proof-of-Persistence Documentation","description":"Overview","sidebar":"tutorialSidebar"},"protocol/tokens":{"id":"protocol/tokens","title":"JKL Token","description":"Overview","sidebar":"tutorialSidebar"},"protocol/validators":{"id":"protocol/validators","title":"Validators","description":"The Jackal Validators are secure web servers, dedicated machines that participate in the consensus protocol by","sidebar":"tutorialSidebar"},"using-jackal/dashboard":{"id":"using-jackal/dashboard","title":"Jackal Dashboard Guide","description":"The Jackal Dashboard is your one-stop destination for interacting with the Jackal Protocol and Cosmos ecosystem. This","sidebar":"tutorialSidebar"},"using-jackal/delegate":{"id":"using-jackal/delegate","title":"How to Delegate JKL Tokens to a Validator","description":"This guide will help you delegate your JKL tokens to a validator on the Jackal Protocol, which helps secure the network","sidebar":"tutorialSidebar"},"using-jackal/fund":{"id":"using-jackal/fund","title":"Accessing JKL Tokens on a Decentralized Exchange and Withdrawing to Jackal Protocol","description":"This guide will help you access JKL tokens on the Osmosis Decentralized Exchange (DEX) and withdraw them to the Jackal Protocol using the Inter-Blockchain Communication Protocol (IBC).","sidebar":"tutorialSidebar"},"using-jackal/wallet/keplr":{"id":"using-jackal/wallet/keplr","title":"Keplr Wallet","description":"The Keplr browser extension is a wallet for accessing some Jackal applications in","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/935f2afb.b15716d8.js b/assets/js/935f2afb.b15716d8.js new file mode 100644 index 0000000..d63afcf --- /dev/null +++ b/assets/js/935f2afb.b15716d8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkcanine_docs=self.webpackChunkcanine_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":{"tutorialSidebar":[{"type":"link","label":"Welcome to Jackal Wiki","href":"/docs/intro","docId":"intro"},{"type":"category","label":"Overview","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Discover the Jackal Protocol","href":"/docs/overview/jackal-tldr","docId":"overview/jackal-tldr"},{"type":"link","label":"What Is The JKL Token?","href":"/docs/overview/jkl","docId":"overview/jkl"},{"type":"link","label":"Why Choose Jackal Protocol","href":"/docs/overview/why-jackal","docId":"overview/why-jackal"}]},{"type":"category","label":"Using Jackal","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Wallets","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Keplr Wallet","href":"/docs/using-jackal/wallet/keplr","docId":"using-jackal/wallet/keplr"}]},{"type":"link","label":"Accessing JKL Tokens on a Decentralized Exchange and Withdrawing to Jackal Protocol","href":"/docs/using-jackal/fund","docId":"using-jackal/fund"},{"type":"link","label":"How to Delegate JKL Tokens to a Validator","href":"/docs/using-jackal/delegate","docId":"using-jackal/delegate"},{"type":"link","label":"Jackal Dashboard Guide","href":"/docs/using-jackal/dashboard","docId":"using-jackal/dashboard"}]},{"type":"category","label":"Community and Contributors","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Join the Community!","href":"/docs/contributors/join","docId":"contributors/join"},{"type":"link","label":"Jackal Foundation","href":"/docs/contributors/foundation","docId":"contributors/foundation"},{"type":"link","label":"Jackal Labs","href":"/docs/contributors/labs","docId":"contributors/labs"}]},{"type":"category","label":"The Protocol","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Blockchain Modules","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Module Overview","href":"/docs/protocol/modules/module-overview","docId":"protocol/modules/module-overview"},{"type":"link","label":"JKLmint Module","href":"/docs/protocol/modules/jklmint","docId":"protocol/modules/jklmint"},{"type":"link","label":"Name Service Module","href":"/docs/protocol/modules/rns","docId":"protocol/modules/rns"},{"type":"link","label":"WASM Module","href":"/docs/protocol/modules/wasm","docId":"protocol/modules/wasm"},{"type":"link","label":"Storage Module","href":"/docs/protocol/modules/storage","docId":"protocol/modules/storage"},{"type":"link","label":"Filetree Module","href":"/docs/protocol/modules/filetree","docId":"protocol/modules/filetree"}]},{"type":"link","label":"Jackal Proof-of-Persistence Documentation","href":"/docs/protocol/p-o-p","docId":"protocol/p-o-p"},{"type":"link","label":"JKL Token","href":"/docs/protocol/tokens","docId":"protocol/tokens"},{"type":"link","label":"Encryption in Jackal Protocol","href":"/docs/protocol/encryption","docId":"protocol/encryption"},{"type":"link","label":"Validators","href":"/docs/protocol/validators","docId":"protocol/validators"}]},{"type":"category","label":"Official Links","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Jackal Protocol Links","href":"/docs/official-links/jackal-protocol","docId":"official-links/jackal-protocol"},{"type":"link","label":"Jackal Foundation Links","href":"/docs/official-links/jackal-foundation","docId":"official-links/jackal-foundation"},{"type":"link","label":"Jackal Labs Links","href":"/docs/official-links/jackal-labs","docId":"official-links/jackal-labs"}]},{"type":"category","label":"Ecosystem","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Grants and Funding","href":"/docs/ecosystem/grants-funding","docId":"ecosystem/grants-funding"},{"type":"link","label":"Partnerships","href":"/docs/ecosystem/partnerships","docId":"ecosystem/partnerships"}]},{"type":"category","label":"Nodes & Providers","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Setting Up","href":"/docs/nodes/install","docId":"nodes/install"},{"type":"category","label":"Full Nodes","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Hardware","href":"/docs/nodes/nodes/hardware","docId":"nodes/nodes/hardware"},{"type":"link","label":"Installing Canined","href":"/docs/nodes/nodes/installation","docId":"nodes/nodes/installation"},{"type":"link","label":"Joining Testnet","href":"/docs/nodes/nodes/testnet","docId":"nodes/nodes/testnet"},{"type":"link","label":"Joining Mainnet","href":"/docs/nodes/nodes/mainnet","docId":"nodes/nodes/mainnet"}]},{"type":"category","label":"Validators","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"Creating Validator","href":"/docs/nodes/validators/joining","docId":"nodes/validators/joining"}]},{"type":"category","label":"Storage Providers","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"Hardware","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"DIY Build","href":"/docs/nodes/providers/hardware/diy-serious copy","docId":"nodes/providers/hardware/diy-serious copy"},{"type":"link","label":"Enterprise Build","href":"/docs/nodes/providers/hardware/enterprise","docId":"nodes/providers/hardware/enterprise"}]},{"type":"link","label":"Creating Provider","href":"/docs/nodes/providers/building","docId":"nodes/providers/building"},{"type":"link","label":"Setting Up JProvd","href":"/docs/nodes/providers/setting_up","docId":"nodes/providers/setting_up"}]}]},{"type":"category","label":"Developers","collapsible":true,"collapsed":true,"items":[{"type":"category","label":"dApp Libraries","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"About These Libraries","href":"/docs/developers/dAppLibraries/intro","docId":"developers/dAppLibraries/intro"},{"type":"link","label":"Jackal.js-protos / Jackal.nodejs-protos","href":"/docs/developers/dAppLibraries/jackal_protos","docId":"developers/dAppLibraries/jackal_protos"},{"type":"link","label":"Jackal.js","href":"/docs/developers/dAppLibraries/jackal_js","docId":"developers/dAppLibraries/jackal_js"},{"type":"link","label":"Jackal.nodejs","href":"/docs/developers/dAppLibraries/jackal_nodejs","docId":"developers/dAppLibraries/jackal_nodejs"},{"type":"link","label":"Jackal.go","href":"/docs/developers/dAppLibraries/jackal_go","docId":"developers/dAppLibraries/jackal_go"}]},{"type":"category","label":"APIs","collapsible":true,"collapsed":true,"items":[{"type":"link","label":"About Jackal APIs","href":"/docs/developers/apis/intro","docId":"developers/apis/intro"},{"type":"link","label":"APIs","href":"/docs/developers/apis/apis","docId":"developers/apis/apis"}]},{"type":"link","label":"Getting Started","href":"/docs/developers/intro","docId":"developers/intro"}]}]},"docs":{"contributors/foundation":{"id":"contributors/foundation","title":"Jackal Foundation","description":"What is the Jackal Foundation?","sidebar":"tutorialSidebar"},"contributors/join":{"id":"contributors/join","title":"Join the Community!","description":"The Jackal Community is open to all.","sidebar":"tutorialSidebar"},"contributors/labs":{"id":"contributors/labs","title":"Jackal Labs","description":"Who is Jackal Labs?","sidebar":"tutorialSidebar"},"developers/apis/apis":{"id":"developers/apis/apis","title":"APIs","description":"Self Custodial","sidebar":"tutorialSidebar"},"developers/apis/intro":{"id":"developers/apis/intro","title":"About Jackal APIs","description":"Coming Soon","sidebar":"tutorialSidebar"},"developers/dAppLibraries/intro":{"id":"developers/dAppLibraries/intro","title":"About These Libraries","description":"The following sections outline the basics of how to use the available libraries to interact with the Jackal chain. These","sidebar":"tutorialSidebar"},"developers/dAppLibraries/jackal_go":{"id":"developers/dAppLibraries/jackal_go","title":"Jackal.go","description":"Quickstart","sidebar":"tutorialSidebar"},"developers/dAppLibraries/jackal_js":{"id":"developers/dAppLibraries/jackal_js","title":"Jackal.js","description":"Implements Jacakl.js-protos","sidebar":"tutorialSidebar"},"developers/dAppLibraries/jackal_nodejs":{"id":"developers/dAppLibraries/jackal_nodejs","title":"Jackal.nodejs","description":"Quickstart","sidebar":"tutorialSidebar"},"developers/dAppLibraries/jackal_protos":{"id":"developers/dAppLibraries/jackal_protos","title":"Jackal.js-protos / Jackal.nodejs-protos","description":"About","sidebar":"tutorialSidebar"},"developers/intro":{"id":"developers/intro","title":"Getting Started","description":"Web-Apps","sidebar":"tutorialSidebar"},"ecosystem/grants-funding":{"id":"ecosystem/grants-funding","title":"Grants and Funding","description":"The Jackal Foundation facilitates non-equity grants, seed funding, and beyond through our various funding programs.","sidebar":"tutorialSidebar"},"ecosystem/partnerships":{"id":"ecosystem/partnerships","title":"Partnerships","description":"Blockchain and web3 native software engineering teams often wish to become core contributors through a partnership with","sidebar":"tutorialSidebar"},"intro":{"id":"intro","title":"Welcome to Jackal Wiki","description":"Welcome, explorer, to the Jackal Wiki, where you\'ll embark on a journey to discover a more secure, simple, and","sidebar":"tutorialSidebar"},"nodes/install":{"id":"nodes/install","title":"Setting Up","description":"Pre-Requisites","sidebar":"tutorialSidebar"},"nodes/nodes/hardware":{"id":"nodes/nodes/hardware","title":"Hardware","description":"We recommend a minimum hardware requirement of:","sidebar":"tutorialSidebar"},"nodes/nodes/installation":{"id":"nodes/nodes/installation","title":"Installing Canined","description":"Pre-Requisites","sidebar":"tutorialSidebar"},"nodes/nodes/mainnet":{"id":"nodes/nodes/mainnet","title":"Joining Mainnet","description":"Perform the following as the jackal user.","sidebar":"tutorialSidebar"},"nodes/nodes/testnet":{"id":"nodes/nodes/testnet","title":"Joining Testnet","description":"After installing canined. You can join the testnet by following these steps:","sidebar":"tutorialSidebar"},"nodes/providers/building":{"id":"nodes/providers/building","title":"Creating Provider","description":"Disclaimer","sidebar":"tutorialSidebar"},"nodes/providers/hardware/diy-serious copy":{"id":"nodes/providers/hardware/diy-serious copy","title":"DIY Build","description":"For DIY individuals looking to power web3 infrastructure and increase your ROI- here is the recommended system for","sidebar":"tutorialSidebar"},"nodes/providers/hardware/enterprise":{"id":"nodes/providers/hardware/enterprise","title":"Enterprise Build","description":"For teams looking to build a large storage system of ~2.1 Petabytes of storage, the estimated base price of the box with","sidebar":"tutorialSidebar"},"nodes/providers/setting_up":{"id":"nodes/providers/setting_up","title":"Setting Up JProvd","description":"Pre-Requisites","sidebar":"tutorialSidebar"},"nodes/validators/joining":{"id":"nodes/validators/joining","title":"Creating Validator","description":"This guide assumes you are using the same machine as the full node.","sidebar":"tutorialSidebar"},"official-links/jackal-foundation":{"id":"official-links/jackal-foundation","title":"Jackal Foundation Links","description":"Here are the official website links for Jackal Foundation. Please use and bookmark these links to reduce the likelihood","sidebar":"tutorialSidebar"},"official-links/jackal-labs":{"id":"official-links/jackal-labs","title":"Jackal Labs Links","description":"Here are the official website links for Jackal Labs. Please use and bookmark these links to reduce the likelihood of","sidebar":"tutorialSidebar"},"official-links/jackal-protocol":{"id":"official-links/jackal-protocol","title":"Jackal Protocol Links","description":"Here are the official website links of the Jackal Protocol. Please use and bookmark these links to reduce the likelihood","sidebar":"tutorialSidebar"},"overview/jackal-tldr":{"id":"overview/jackal-tldr","title":"Discover the Jackal Protocol","description":"The Jackal Protocol provides a decentralized infrastructure for secure and scalable data storage, enabling individuals,","sidebar":"tutorialSidebar"},"overview/jkl":{"id":"overview/jkl","title":"What Is The JKL Token?","description":"The JKL Token is the driving force behind the revolutionary Jackal Protocol. This versatile native token seamlessly","sidebar":"tutorialSidebar"},"overview/why-jackal":{"id":"overview/why-jackal","title":"Why Choose Jackal Protocol","description":"The Jackal Protocol offers various advantages for individuals, small businesses, and large enterprises seeking secure,","sidebar":"tutorialSidebar"},"protocol/encryption":{"id":"protocol/encryption","title":"Encryption in Jackal Protocol","description":"The Jackal Protocol utilizes encryption techniques to ensure the privacy and security of user data. The two primary","sidebar":"tutorialSidebar"},"protocol/modules/filetree":{"id":"protocol/modules/filetree","title":"Filetree Module","description":"Overview","sidebar":"tutorialSidebar"},"protocol/modules/jklmint":{"id":"protocol/modules/jklmint","title":"JKLmint Module","description":"The jklmint module is responsible for the management of the native JKL token within the Jackal Protocol. This module","sidebar":"tutorialSidebar"},"protocol/modules/module-overview":{"id":"protocol/modules/module-overview","title":"Module Overview","description":"Protocol Overview","sidebar":"tutorialSidebar"},"protocol/modules/rns":{"id":"protocol/modules/rns","title":"Name Service Module","description":"The rns (Reverse Name Service) module is an essential component of the Jackal Protocol, providing a user-friendly","sidebar":"tutorialSidebar"},"protocol/modules/storage":{"id":"protocol/modules/storage","title":"Storage Module","description":"The Jackal Protocol incorporates two crucial algorithms for decentralized storage: Jackal Proof-of-Persistence (JPOP)","sidebar":"tutorialSidebar"},"protocol/modules/wasm":{"id":"protocol/modules/wasm","title":"WASM Module","description":"The wasm module in the Jackal Protocol incorporates the CosmWasm smart contracting platform, which is designed","sidebar":"tutorialSidebar"},"protocol/p-o-p":{"id":"protocol/p-o-p","title":"Jackal Proof-of-Persistence Documentation","description":"Overview","sidebar":"tutorialSidebar"},"protocol/tokens":{"id":"protocol/tokens","title":"JKL Token","description":"Overview","sidebar":"tutorialSidebar"},"protocol/validators":{"id":"protocol/validators","title":"Validators","description":"The Jackal Validators are secure web servers, dedicated machines that participate in the consensus protocol by","sidebar":"tutorialSidebar"},"using-jackal/dashboard":{"id":"using-jackal/dashboard","title":"Jackal Dashboard Guide","description":"The Jackal Dashboard is your one-stop destination for interacting with the Jackal Protocol and Cosmos ecosystem. This","sidebar":"tutorialSidebar"},"using-jackal/delegate":{"id":"using-jackal/delegate","title":"How to Delegate JKL Tokens to a Validator","description":"This guide will help you delegate your JKL tokens to a validator on the Jackal Protocol, which helps secure the network","sidebar":"tutorialSidebar"},"using-jackal/fund":{"id":"using-jackal/fund","title":"Accessing JKL Tokens on a Decentralized Exchange and Withdrawing to Jackal Protocol","description":"This guide will help you access JKL tokens on the Osmosis Decentralized Exchange (DEX) and withdraw them to the Jackal Protocol using the Inter-Blockchain Communication Protocol (IBC).","sidebar":"tutorialSidebar"},"using-jackal/wallet/keplr":{"id":"using-jackal/wallet/keplr","title":"Keplr Wallet","description":"The Keplr browser extension is a wallet for accessing some Jackal applications in","sidebar":"tutorialSidebar"}}}')}}]); \ No newline at end of file diff --git a/assets/js/b0580eac.ac5d9951.js b/assets/js/b0580eac.ac5d9951.js deleted file mode 100644 index 12a6dad..0000000 --- a/assets/js/b0580eac.ac5d9951.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkcanine_docs=self.webpackChunkcanine_docs||[]).push([[7053],{3905:(e,t,r)=>{r.d(t,{Zo:()=>u,kt:()=>f});var o=r(7294);function n(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function i(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,o)}return r}function c(e){for(var t=1;t=0||(n[r]=e[r]);return n}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(o=0;o=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}var a=o.createContext({}),s=function(e){var t=o.useContext(a),r=t;return e&&(r="function"==typeof e?e(t):c(c({},t),e)),r},u=function(e){var t=s(e.components);return o.createElement(a.Provider,{value:t},e.children)},p="mdxType",d={inlineCode:"code",wrapper:function(e){var t=e.children;return o.createElement(o.Fragment,{},t)}},m=o.forwardRef((function(e,t){var r=e.components,n=e.mdxType,i=e.originalType,a=e.parentName,u=l(e,["components","mdxType","originalType","parentName"]),p=s(r),m=n,f=p["".concat(a,".").concat(m)]||p[m]||d[m]||i;return r?o.createElement(f,c(c({ref:t},u),{},{components:r})):o.createElement(f,c({ref:t},u))}));function f(e,t){var r=arguments,n=t&&t.mdxType;if("string"==typeof e||n){var i=r.length,c=new Array(i);c[0]=m;var l={};for(var a in t)hasOwnProperty.call(t,a)&&(l[a]=t[a]);l.originalType=e,l[p]="string"==typeof e?e:n,c[1]=l;for(var s=2;s{r.r(t),r.d(t,{assets:()=>a,contentTitle:()=>c,default:()=>d,frontMatter:()=>i,metadata:()=>l,toc:()=>s});var o=r(7462),n=(r(7294),r(3905));const i={sidebar_position:7},c="dsig Module",l={unversionedId:"protocol/modules/dsig",id:"protocol/modules/dsig",title:"dsig Module",description:"Coming Soon",source:"@site/docs/protocol/modules/dsig.md",sourceDirName:"protocol/modules",slug:"/protocol/modules/dsig",permalink:"/docs/protocol/modules/dsig",draft:!1,editUrl:"https://github.com/JackalLabs/canine-docs/blob/master/docs/protocol/modules/dsig.md",tags:[],version:"current",sidebarPosition:7,frontMatter:{sidebar_position:7},sidebar:"tutorialSidebar",previous:{title:"Storage Module",permalink:"/docs/protocol/modules/storage"},next:{title:"Filetree Module",permalink:"/docs/protocol/modules/filetree"}},a={},s=[{value:"Coming Soon",id:"coming-soon",level:2}],u={toc:s},p="wrapper";function d(e){let{components:t,...r}=e;return(0,n.kt)(p,(0,o.Z)({},u,r,{components:t,mdxType:"MDXLayout"}),(0,n.kt)("h1",{id:"dsig-module"},"dsig Module"),(0,n.kt)("h2",{id:"coming-soon"},"Coming Soon"))}d.isMDXComponent=!0}}]); \ No newline at end of file diff --git a/assets/js/main.0d43274d.js b/assets/js/main.0d43274d.js deleted file mode 100644 index 7f2bf4c..0000000 --- a/assets/js/main.0d43274d.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.0d43274d.js.LICENSE.txt */ -(self.webpackChunkcanine_docs=self.webpackChunkcanine_docs||[]).push([[179],{4334:(e,t,n)=>{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;ta});const a=function(){for(var e,t,n=0,a="";n{"use strict";n.d(t,{Z:()=>f});var r=n(7294),a=n(7462),o=n(8356),i=n.n(o),l=n(6887);const s={"03cdf430":[()=>n.e(229).then(n.bind(n,2530)),"@site/docs/ecosystem/partnerships.md",2530],"041d8db4":[()=>n.e(6487).then(n.bind(n,7158)),"@site/docs/developers/apis/2_apis.md",7158],"0558eea0":[()=>n.e(9042).then(n.bind(n,7815)),"@site/docs/ecosystem/grants-funding.md",7815],"0e384e19":[()=>n.e(9671).then(n.bind(n,9881)),"@site/docs/intro.md",9881],15018644:[()=>n.e(1385).then(n.t.bind(n,3769,19)),"/home/runner/work/canine-docs/canine-docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],17896441:[()=>Promise.all([n.e(532),n.e(9455),n.e(7918)]).then(n.bind(n,903)),"@theme/DocItem",903],"18a433c4":[()=>n.e(1210).then(n.bind(n,8437)),"@site/docs/official-links/jackal-foundation.md",8437],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1f391b9e":[()=>Promise.all([n.e(532),n.e(9455),n.e(3085)]).then(n.bind(n,4247)),"@theme/MDXPage",4247],"23f3f2f9":[()=>n.e(6174).then(n.bind(n,2957)),"@site/docs/contributors/foundation.md",2957],"24536a89":[()=>n.e(8206).then(n.bind(n,4457)),"@site/docs/developers/apis/1_intro.md",4457],"24b4006e":[()=>n.e(63).then(n.bind(n,6960)),"@site/docs/developers/dAppLibraries/2_jackal_protos.md",6960],"259b7029":[()=>n.e(7026).then(n.bind(n,9583)),"@site/docs/nodes/providers/1_building.md",9583],"29af3fe3":[()=>n.e(92).then(n.bind(n,8348)),"@site/docs/nodes/nodes/2_installation.md",8348],"365ebb01":[()=>n.e(9293).then(n.bind(n,3641)),"@site/docs/protocol/validators.md",3641],"393be207":[()=>n.e(7414).then(n.bind(n,3123)),"@site/src/pages/markdown-page.md",3123],"3d14bff3":[()=>n.e(737).then(n.bind(n,3097)),"@site/docs/developers/intro.md",3097],"3e125dc6":[()=>n.e(1148).then(n.bind(n,8682)),"@site/docs/overview/why-jackal.md",8682],"5402824b":[()=>n.e(1078).then(n.bind(n,5149)),"@site/docs/official-links/jackal-labs.md",5149],"5a6f97fe":[()=>n.e(5275).then(n.bind(n,4731)),"@site/docs/using-jackal/dashboard.md",4731],"5da52a1e":[()=>n.e(8938).then(n.bind(n,4544)),"@site/docs/nodes/nodes/1_hardware.md",4544],"5e9f5e1a":[()=>Promise.resolve().then(n.bind(n,6809)),"@generated/docusaurus.config",6809],"65b97a36":[()=>n.e(1770).then(n.bind(n,124)),"@site/docs/overview/jackal-tldr.md",124],"7b9432de":[()=>n.e(7275).then(n.bind(n,1431)),"@site/docs/protocol/modules/wasm.md",1431],"7d26c06c":[()=>n.e(1232).then(n.bind(n,1392)),"@site/docs/protocol/tokens.md",1392],"7f9142bb":[()=>n.e(1314).then(n.bind(n,1609)),"@site/docs/nodes/providers/hardware/enterprise.md",1609],"874276e5":[()=>n.e(5533).then(n.bind(n,2757)),"@site/docs/protocol/modules/storage.md",2757],"8a56e0ba":[()=>n.e(8957).then(n.bind(n,7109)),"@site/docs/protocol/modules/filetree.md",7109],"8b564e48":[()=>n.e(5689).then(n.bind(n,2121)),"@site/docs/protocol/p-o-p.md",2121],"9093546b":[()=>n.e(6164).then(n.bind(n,8410)),"@site/docs/protocol/modules/module-overview.md",8410],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"9c403616":[()=>n.e(1817).then(n.bind(n,4252)),"@site/docs/protocol/modules/jklmint.md",4252],a4043c8d:[()=>n.e(6683).then(n.bind(n,2843)),"@site/docs/nodes/1_install.md",2843],ab3acb2a:[()=>n.e(604).then(n.bind(n,4589)),"@site/docs/contributors/labs.md",4589],b0580eac:[()=>n.e(7053).then(n.bind(n,5621)),"@site/docs/protocol/modules/dsig.md",5621],b1fc7db6:[()=>n.e(8425).then(n.bind(n,8602)),"@site/docs/using-jackal/fund.md",8602],b46b7d8b:[()=>n.e(1172).then(n.bind(n,7497)),"@site/docs/overview/jkl.md",7497],b92c85d1:[()=>n.e(6216).then(n.bind(n,2472)),"@site/docs/nodes/providers/hardware/diy-serious copy.md",2472],bbf127f0:[()=>n.e(5863).then(n.bind(n,1643)),"@site/docs/nodes/providers/2_setting_up.md",1643],c4f5d8e4:[()=>Promise.all([n.e(532),n.e(4195)]).then(n.bind(n,2216)),"@site/src/pages/index.js",2216],c894e2df:[()=>n.e(4878).then(n.bind(n,6524)),"@site/docs/contributors/join.md",6524],c97fbebf:[()=>n.e(4286).then(n.bind(n,3764)),"@site/docs/nodes/nodes/4_mainnet.md",3764],d07072fe:[()=>n.e(9404).then(n.bind(n,592)),"@site/docs/official-links/jackal-protocol.md",592],d1f710bd:[()=>n.e(5798).then(n.t.bind(n,5745,19)),"/home/runner/work/canine-docs/canine-docs/.docusaurus/docusaurus-plugin-content-pages/default/plugin-route-context-module-100.json",5745],d866114a:[()=>n.e(2855).then(n.bind(n,5951)),"@site/docs/developers/dAppLibraries/3_jackal_js.md",5951],dda406b3:[()=>n.e(316).then(n.bind(n,1159)),"@site/docs/developers/dAppLibraries/1_intro.md",1159],e1923b53:[()=>n.e(1947).then(n.bind(n,78)),"@site/docs/nodes/nodes/3_testnet.md",78],e289ecfd:[()=>n.e(3523).then(n.bind(n,4824)),"@site/docs/protocol/modules/rns.md",4824],ea96f03c:[()=>n.e(3298).then(n.bind(n,5639)),"@site/docs/protocol/encryption.md",5639],ebbc57e7:[()=>n.e(4808).then(n.bind(n,5183)),"@site/docs/nodes/validators/1_joining.md",5183],ec604ac9:[()=>n.e(9061).then(n.bind(n,9809)),"@site/docs/developers/dAppLibraries/5_jackal_go.md",9809],f1994572:[()=>n.e(2782).then(n.bind(n,1422)),"@site/docs/using-jackal/delegate.md",1422],f3769d49:[()=>n.e(2891).then(n.bind(n,9186)),"@site/docs/using-jackal/wallet/keplr.md",9186],fd23986e:[()=>n.e(2127).then(n.bind(n,9526)),"@site/docs/developers/dAppLibraries/4_jackal_nodejs.md",9526]};function u(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("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%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("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"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("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),d=n(226);function p(e,t){if("*"===e)return i()({loading:u,loader:()=>n.e(4972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],p={},f=[],m=[],h=(0,c.Z)(o);return Object.entries(h).forEach((e=>{let[t,n]=e;const r=s[n];r&&(p[t]=r[0],f.push(r[1]),m.push(r[2]))})),i().Map({loading:u,loader:p,modules:f,webpack:()=>m,render(t,n){const i=JSON.parse(JSON.stringify(o));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 o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}const f=[{path:"/markdown-page",component:p("/markdown-page","d2a"),exact:!0},{path:"/docs",component:p("/docs","a62"),routes:[{path:"/docs/contributors/foundation",component:p("/docs/contributors/foundation","569"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/contributors/join",component:p("/docs/contributors/join","5af"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/contributors/labs",component:p("/docs/contributors/labs","38f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/developers/apis/apis",component:p("/docs/developers/apis/apis","df2"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/developers/apis/intro",component:p("/docs/developers/apis/intro","4cf"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/developers/dAppLibraries/intro",component:p("/docs/developers/dAppLibraries/intro","b54"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/developers/dAppLibraries/jackal_go",component:p("/docs/developers/dAppLibraries/jackal_go","bb9"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/developers/dAppLibraries/jackal_js",component:p("/docs/developers/dAppLibraries/jackal_js","a6f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/developers/dAppLibraries/jackal_nodejs",component:p("/docs/developers/dAppLibraries/jackal_nodejs","fa7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/developers/dAppLibraries/jackal_protos",component:p("/docs/developers/dAppLibraries/jackal_protos","1fd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/developers/intro",component:p("/docs/developers/intro","f46"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/ecosystem/grants-funding",component:p("/docs/ecosystem/grants-funding","b80"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/ecosystem/partnerships",component:p("/docs/ecosystem/partnerships","5b7"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/intro",component:p("/docs/intro","aed"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nodes/install",component:p("/docs/nodes/install","ba4"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nodes/nodes/hardware",component:p("/docs/nodes/nodes/hardware","d4f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nodes/nodes/installation",component:p("/docs/nodes/nodes/installation","609"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nodes/nodes/mainnet",component:p("/docs/nodes/nodes/mainnet","4c6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nodes/nodes/testnet",component:p("/docs/nodes/nodes/testnet","d25"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nodes/providers/building",component:p("/docs/nodes/providers/building","239"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nodes/providers/hardware/diy-serious copy",component:p("/docs/nodes/providers/hardware/diy-serious copy","3fd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nodes/providers/hardware/enterprise",component:p("/docs/nodes/providers/hardware/enterprise","85f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nodes/providers/setting_up",component:p("/docs/nodes/providers/setting_up","baa"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/nodes/validators/joining",component:p("/docs/nodes/validators/joining","92f"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/official-links/jackal-foundation",component:p("/docs/official-links/jackal-foundation","7fe"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/official-links/jackal-labs",component:p("/docs/official-links/jackal-labs","fbd"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/official-links/jackal-protocol",component:p("/docs/official-links/jackal-protocol","bae"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/overview/jackal-tldr",component:p("/docs/overview/jackal-tldr","498"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/overview/jkl",component:p("/docs/overview/jkl","e3b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/overview/why-jackal",component:p("/docs/overview/why-jackal","01e"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/protocol/encryption",component:p("/docs/protocol/encryption","538"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/protocol/modules/dsig",component:p("/docs/protocol/modules/dsig","7f0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/protocol/modules/filetree",component:p("/docs/protocol/modules/filetree","b70"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/protocol/modules/jklmint",component:p("/docs/protocol/modules/jklmint","eb0"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/protocol/modules/module-overview",component:p("/docs/protocol/modules/module-overview","bb8"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/protocol/modules/rns",component:p("/docs/protocol/modules/rns","ce1"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/protocol/modules/storage",component:p("/docs/protocol/modules/storage","862"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/protocol/modules/wasm",component:p("/docs/protocol/modules/wasm","284"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/protocol/p-o-p",component:p("/docs/protocol/p-o-p","533"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/protocol/tokens",component:p("/docs/protocol/tokens","463"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/protocol/validators",component:p("/docs/protocol/validators","18b"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/using-jackal/dashboard",component:p("/docs/using-jackal/dashboard","322"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/using-jackal/delegate",component:p("/docs/using-jackal/delegate","aa6"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/using-jackal/fund",component:p("/docs/using-jackal/fund","988"),exact:!0,sidebar:"tutorialSidebar"},{path:"/docs/using-jackal/wallet/keplr",component:p("/docs/using-jackal/wallet/keplr","ebe"),exact:!0,sidebar:"tutorialSidebar"}]},{path:"/",component:p("/","41d"),exact:!0},{path:"*",component:p("*")}]},8934:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,t:()=>o});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},7221:(e,t,n)=>{"use strict";var r=n(7294),a=n(3935),o=n(3727),i=n(405),l=n(412);const s=[n(2497),n(3310),n(8320),n(2295)];var u=n(723),c=n(6550),d=n(8790);function p(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var f=n(7462),m=n(5742),h=n(2263),g=n(4996),b=n(6668),v=n(1944),y=n(4711),w=n(9727),k=n(3320),E=n(8780),S=n(197);function _(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,h.Z)(),n=(0,y.l)();return r.createElement(m.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function x(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,h.Z)(),a=function(){const{siteConfig:{url:e,baseUrl:t,trailingSlash:n}}=(0,h.Z)(),{pathname:r}=(0,c.TH)();return e+(0,E.applyTrailingSlash)((0,g.Z)(r),{trailingSlash:n,baseUrl:t})}(),o=t?`${n}${t}`:a;return r.createElement(m.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function C(){const{i18n:{currentLocale:e}}=(0,h.Z)(),{metadata:t,image:n}=(0,b.L)();return r.createElement(r.Fragment,null,r.createElement(m.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(v.d,{image:n}),r.createElement(x,null),r.createElement(_,null),r.createElement(S.Z,{tag:k.HX,locale:e}),r.createElement(m.Z,null,t.map(((e,t)=>r.createElement("meta",(0,f.Z)({key:t},e))))))}const T=new Map;function A(e){if(T.has(e.pathname))return{...e,pathname:T.get(e.pathname)};if((0,d.f)(u.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 L=n(8934),R=n(8940);function N(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()=>a.forEach((e=>e?.()))}const O=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(!function(e){let{location:t,previousLocation:n}=e;if(!n)return;const r=t.pathname===n.pathname,a=t.hash===n.hash,o=t.search===n.search;if(r&&a&&!o)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:a}),N("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function P(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(u.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=l.Z.canUseDOM?N("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=N("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),P(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 r.createElement(O,{previousLocation:this.previousLocation,location:t},r.createElement(c.AW,{location:t,render:()=>e}))}}const I=D,M="__docusaurus-base-url-issue-banner-container",j="__docusaurus-base-url-issue-banner",F="__docusaurus-base-url-issue-banner-suggestion-container",B="__DOCUSAURUS_INSERT_BASEURL_BANNER";function z(e){return`\nwindow['${B}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${B}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${M}');\n if (!bannerContainer) {\n return;\n }\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(/{window[B]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(m.Z,null,r.createElement("script",null,z(e))),r.createElement("div",{id:M}))}function $(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,h.Z)(),{pathname:n}=(0,c.TH)();return t&&n===e?r.createElement(U,null):null}function q(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,h.Z)(),i=(0,g.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(m.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var H=n(4763),G=n(2389);function Z(){const e=(0,G.Z)();return r.createElement(m.Z,null,r.createElement("html",{"data-has-hydrated":e}))}function V(){const e=(0,d.H)(u.Z),t=(0,c.TH)();return r.createElement(H.Z,null,r.createElement(R.M,null,r.createElement(L.t,null,r.createElement(p,null,r.createElement(q,null),r.createElement(C,null),r.createElement($,null),r.createElement(I,{location:A(t)},e)),r.createElement(Z,null))))}var W=n(6887);const Y=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{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 a=document.getElementsByTagName("head")[0]??document.getElementsByName("script")[0]?.parentNode;a?.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 Q=new Set,X=new Set,J=()=>navigator.connection?.effectiveType.includes("2g")||navigator.connection?.saveData,ee={prefetch(e){if(!(e=>!J()&&!X.has(e)&&!Q.has(e))(e))return!1;Q.add(e);const t=(0,d.f)(u.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")?Y(t).catch((()=>{})):Promise.resolve()})))},preload:e=>!!(e=>!J()&&!X.has(e))(e)&&(X.add(e),P(e))},te=Object.freeze(ee);if(l.Z.canUseDOM){window.docusaurus=te;const e=a.hydrate;P(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(V,null))),document.getElementById("__docusaurus"))}))}},8940:(e,t,n)=>{"use strict";n.d(t,{_:()=>c,M:()=>d});var r=n(7294),a=n(6809);const o=JSON.parse('{"docusaurus-plugin-content-docs":{"default":{"path":"/docs","versions":[{"name":"current","label":"Next","isLast":true,"path":"/docs","mainDocId":"intro","docs":[{"id":"contributors/foundation","path":"/docs/contributors/foundation","sidebar":"tutorialSidebar"},{"id":"contributors/join","path":"/docs/contributors/join","sidebar":"tutorialSidebar"},{"id":"contributors/labs","path":"/docs/contributors/labs","sidebar":"tutorialSidebar"},{"id":"developers/apis/apis","path":"/docs/developers/apis/apis","sidebar":"tutorialSidebar"},{"id":"developers/apis/intro","path":"/docs/developers/apis/intro","sidebar":"tutorialSidebar"},{"id":"developers/dAppLibraries/intro","path":"/docs/developers/dAppLibraries/intro","sidebar":"tutorialSidebar"},{"id":"developers/dAppLibraries/jackal_go","path":"/docs/developers/dAppLibraries/jackal_go","sidebar":"tutorialSidebar"},{"id":"developers/dAppLibraries/jackal_js","path":"/docs/developers/dAppLibraries/jackal_js","sidebar":"tutorialSidebar"},{"id":"developers/dAppLibraries/jackal_nodejs","path":"/docs/developers/dAppLibraries/jackal_nodejs","sidebar":"tutorialSidebar"},{"id":"developers/dAppLibraries/jackal_protos","path":"/docs/developers/dAppLibraries/jackal_protos","sidebar":"tutorialSidebar"},{"id":"developers/intro","path":"/docs/developers/intro","sidebar":"tutorialSidebar"},{"id":"ecosystem/grants-funding","path":"/docs/ecosystem/grants-funding","sidebar":"tutorialSidebar"},{"id":"ecosystem/partnerships","path":"/docs/ecosystem/partnerships","sidebar":"tutorialSidebar"},{"id":"intro","path":"/docs/intro","sidebar":"tutorialSidebar"},{"id":"nodes/install","path":"/docs/nodes/install","sidebar":"tutorialSidebar"},{"id":"nodes/nodes/hardware","path":"/docs/nodes/nodes/hardware","sidebar":"tutorialSidebar"},{"id":"nodes/nodes/installation","path":"/docs/nodes/nodes/installation","sidebar":"tutorialSidebar"},{"id":"nodes/nodes/mainnet","path":"/docs/nodes/nodes/mainnet","sidebar":"tutorialSidebar"},{"id":"nodes/nodes/testnet","path":"/docs/nodes/nodes/testnet","sidebar":"tutorialSidebar"},{"id":"nodes/providers/building","path":"/docs/nodes/providers/building","sidebar":"tutorialSidebar"},{"id":"nodes/providers/hardware/diy-serious copy","path":"/docs/nodes/providers/hardware/diy-serious copy","sidebar":"tutorialSidebar"},{"id":"nodes/providers/hardware/enterprise","path":"/docs/nodes/providers/hardware/enterprise","sidebar":"tutorialSidebar"},{"id":"nodes/providers/setting_up","path":"/docs/nodes/providers/setting_up","sidebar":"tutorialSidebar"},{"id":"nodes/validators/joining","path":"/docs/nodes/validators/joining","sidebar":"tutorialSidebar"},{"id":"official-links/jackal-foundation","path":"/docs/official-links/jackal-foundation","sidebar":"tutorialSidebar"},{"id":"official-links/jackal-labs","path":"/docs/official-links/jackal-labs","sidebar":"tutorialSidebar"},{"id":"official-links/jackal-protocol","path":"/docs/official-links/jackal-protocol","sidebar":"tutorialSidebar"},{"id":"overview/jackal-tldr","path":"/docs/overview/jackal-tldr","sidebar":"tutorialSidebar"},{"id":"overview/jkl","path":"/docs/overview/jkl","sidebar":"tutorialSidebar"},{"id":"overview/why-jackal","path":"/docs/overview/why-jackal","sidebar":"tutorialSidebar"},{"id":"protocol/encryption","path":"/docs/protocol/encryption","sidebar":"tutorialSidebar"},{"id":"protocol/modules/dsig","path":"/docs/protocol/modules/dsig","sidebar":"tutorialSidebar"},{"id":"protocol/modules/filetree","path":"/docs/protocol/modules/filetree","sidebar":"tutorialSidebar"},{"id":"protocol/modules/jklmint","path":"/docs/protocol/modules/jklmint","sidebar":"tutorialSidebar"},{"id":"protocol/modules/module-overview","path":"/docs/protocol/modules/module-overview","sidebar":"tutorialSidebar"},{"id":"protocol/modules/rns","path":"/docs/protocol/modules/rns","sidebar":"tutorialSidebar"},{"id":"protocol/modules/storage","path":"/docs/protocol/modules/storage","sidebar":"tutorialSidebar"},{"id":"protocol/modules/wasm","path":"/docs/protocol/modules/wasm","sidebar":"tutorialSidebar"},{"id":"protocol/p-o-p","path":"/docs/protocol/p-o-p","sidebar":"tutorialSidebar"},{"id":"protocol/tokens","path":"/docs/protocol/tokens","sidebar":"tutorialSidebar"},{"id":"protocol/validators","path":"/docs/protocol/validators","sidebar":"tutorialSidebar"},{"id":"using-jackal/dashboard","path":"/docs/using-jackal/dashboard","sidebar":"tutorialSidebar"},{"id":"using-jackal/delegate","path":"/docs/using-jackal/delegate","sidebar":"tutorialSidebar"},{"id":"using-jackal/fund","path":"/docs/using-jackal/fund","sidebar":"tutorialSidebar"},{"id":"using-jackal/wallet/keplr","path":"/docs/using-jackal/wallet/keplr","sidebar":"tutorialSidebar"}],"draftIds":[],"sidebars":{"tutorialSidebar":{"link":{"path":"/docs/intro","label":"intro"}}}}],"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 l=n(7529);const s=JSON.parse('{"docusaurusVersion":"2.4.3","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.4.3"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.4.3"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.4.3"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.4.3"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.4.3"}}}'),u={siteConfig:a.default,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},c=r.createContext(u);function d(e){let{children:t}=e;return r.createElement(c.Provider,{value:u},t)}},4763:(e,t,n)=>{"use strict";n.d(t,{Z:()=>p});var r=n(7294),a=n(412),o=n(5742),i=n(8780),l=n(7961);function s(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"flex-start",minHeight:"100vh",width:"100%",maxWidth:"80ch",fontSize:"20px",margin:"0 auto",padding:"1rem"}},r.createElement("h1",{style:{fontSize:"3rem"}},"This page crashed"),r.createElement("button",{type:"button",onClick:n,style:{margin:"1rem 0",fontSize:"2rem",cursor:"pointer",borderRadius:20,padding:"1rem"}},"Try again"),r.createElement(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 r.createElement("p",{style:{whiteSpace:"pre-wrap"}},n)}function c(e){let{error:t,tryAgain:n}=e;return r.createElement(p,{fallback:()=>r.createElement(s,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(l.Z,null,r.createElement(s,{error:t,tryAgain:n})))}const d=e=>r.createElement(c,e);class p extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.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??d)(e)}return e??null}}},412:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,a={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:()=>o});var r=n(7294),a=n(405);function o(e){return r.createElement(a.ql,e)}},9960:(e,t,n)=>{"use strict";n.d(t,{Z:()=>f});var r=n(7462),a=n(7294),o=n(3727),i=n(8780),l=n(2263),s=n(3919),u=n(412);const c=a.createContext({collectLink:()=>{}});var d=n(4996);function p(e,t){let{isNavLink:n,to:p,href:f,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":g,autoAddBaseUrl:b=!0,...v}=e;const{siteConfig:{trailingSlash:y,baseUrl:w}}=(0,l.Z)(),{withBaseUrl:k}=(0,d.C)(),E=(0,a.useContext)(c),S=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>S.current));const _=p||f;const x=(0,s.Z)(_),C=_?.replace("pathname://","");let T=void 0!==C?(A=C,b&&(e=>e.startsWith("/"))(A)?k(A):A):void 0;var A;T&&x&&(T=(0,i.applyTrailingSlash)(T,{trailingSlash:y,baseUrl:w}));const L=(0,a.useRef)(!1),R=n?o.OL:o.rU,N=u.Z.canUseIntersectionObserver,O=(0,a.useRef)(),P=()=>{L.current||null==T||(window.docusaurus.preload(T),L.current=!0)};(0,a.useEffect)((()=>(!N&&x&&null!=T&&window.docusaurus.prefetch(T),()=>{N&&O.current&&O.current.disconnect()})),[O,T,N,x]);const D=T?.startsWith("#")??!1,I=!T||!x||D;return I||g||E.collectLink(T),I?a.createElement("a",(0,r.Z)({ref:S,href:T},_&&!x&&{target:"_blank",rel:"noopener noreferrer"},v)):a.createElement(R,(0,r.Z)({},v,{onMouseEnter:P,onTouchStart:P,innerRef:e=>{S.current=e,N&&e&&x&&(O.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(O.current.unobserve(e),O.current.disconnect(),null!=T&&window.docusaurus.prefetch(T))}))})),O.current.observe(e))},to:T},n&&{isActive:h,activeClassName:m}))}const f=a.forwardRef(p)},1875:(e,t,n)=>{"use strict";n.d(t,{Z:()=>r});const r=()=>null},5999:(e,t,n)=>{"use strict";n.d(t,{Z:()=>s,I:()=>l});var r=n(7294);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 o=n(7529);function i(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 o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},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 a(e){return void 0!==e&&!r(e)}n.d(t,{Z:()=>a,b:()=>r})},4996:(e,t,n)=>{"use strict";n.d(t,{C:()=>i,Z:()=>l});var r=n(7294),a=n(2263),o=n(3919);function i(){const{siteConfig:{baseUrl:e,url:t}}=(0,a.Z)(),n=(0,r.useCallback)(((n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:a=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,o.b)(n))return n;if(a)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)),[t,e]);return{withBaseUrl:n}}function l(e,t){void 0===t&&(t={});const{withBaseUrl:n}=i();return n(e,t)}},2263:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},2389:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},9670:(e,t,n)=>{"use strict";n.d(t,{Z:()=>a});const r=e=>"object"==typeof e&&!!e&&Object.keys(e).length>0;function a(e){const t={};return function e(n,a){Object.entries(n).forEach((n=>{let[o,i]=n;const l=a?`${a}.${o}`:o;r(i)?e(i,l):t[l]=i}))}(e),t}},226:(e,t,n)=>{"use strict";n.d(t,{_:()=>a,z:()=>o});var r=n(7294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(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:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},143:(e,t,n)=>{"use strict";n.d(t,{Iw:()=>h,gA:()=>p,_r:()=>c,Jo:()=>g,zh:()=>d,yW:()=>m,gB:()=>f});var r=n(6550),a=n(2263),o=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=n?.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const u={},c=()=>i("docusaurus-plugin-content-docs")??u,d=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=r?.[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function p(e){void 0===e&&(e={});const t=c(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=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})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&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 o}(t,n,e)}function f(e){return d(e).versions}function m(e){const t=d(e);return l(t)}function h(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function g(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},8320:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>o});var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}}},3310:(e,t,n)=>{"use strict";n.r(t);var r=n(7410),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.default,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(6726)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294);const a={iconExternalLink:"iconExternalLink_nPIU"};function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a.iconExternalLink},r.createElement("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"}))}},7961:(e,t,n)=>{"use strict";n.d(t,{Z:()=>dt});var r=n(7294),a=n(4334),o=n(4763),i=n(1944),l=n(7462),s=n(6550),u=n(5999),c=n(5936);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 m=(0,u.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 h(e){const t=e.children??m,{containerRef:n,onClick:a}=f();return r.createElement("div",{ref:n,role:"region","aria-label":m},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),t))}var g=n(5281),b=n(9727);const v={skipToContent:"skipToContent_fXgn"};function y(){return r.createElement(h,{className:v.skipToContent})}var w=n(6668),k=n(9689);function E(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}const S={closeButton:"closeButton_CVFx"};function _(e){return r.createElement("button",(0,l.Z)({type:"button","aria-label":(0,u.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",S.closeButton,e.className)}),r.createElement(E,{width:14,height:14,strokeWidth:3.1}))}const x={content:"content_knG7"};function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,l.Z)({},e,{className:(0,a.Z)(x.content,e.className),dangerouslySetInnerHTML:{__html:n}}))}const T={announcementBar:"announcementBar_mb4j",announcementBarPlaceholder:"announcementBarPlaceholder_vyr4",announcementBarClose:"announcementBarClose_gvF7",announcementBarContent:"announcementBarContent_xLdY"};function A(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T.announcementBar,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:T.announcementBarPlaceholder}),r.createElement(C,{className:T.announcementBarContent}),i&&r.createElement(_,{onClick:n,className:T.announcementBarClose}))}var L=n(2961),R=n(2466);var N=n(902),O=n(3102);const P=r.createContext(null);function D(e){let{children:t}=e;const n=function(){const e=(0,L.e)(),t=(0,O.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,N.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(P.Provider,{value:n},t)}function I(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function M(){const e=(0,r.useContext)(P);if(!e)throw new N.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,O.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:I(o)})),[a,o,t])}function j(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=M();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var F=n(2949),B=n(2389);function z(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("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 U(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("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 $={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function q(e){let{className:t,buttonClassName:n,value:o,onChange:i}=e;const l=(0,B.Z)(),s=(0,u.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"===o?(0,u.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,u.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)($.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",$.toggleButton,!l&&$.toggleButtonDisabled,n),type:"button",onClick:()=>i("dark"===o?"light":"dark"),disabled:!l,title:s,"aria-label":s,"aria-live":"polite"},r.createElement(z,{className:(0,a.Z)($.toggleIcon,$.lightToggleIcon)}),r.createElement(U,{className:(0,a.Z)($.toggleIcon,$.darkToggleIcon)})))}const H=r.memo(q),G={darkNavbarColorModeToggle:"darkNavbarColorModeToggle_X3D1"};function Z(e){let{className:t}=e;const n=(0,w.L)().navbar.style,a=(0,w.L)().colorMode.disableSwitch,{colorMode:o,setColorMode:i}=(0,F.I)();return a?null:r.createElement(H,{className:t,buttonClassName:"dark"===n?G.darkNavbarColorModeToggle:void 0,value:o,onChange:i})}var V=n(1327);function W(){return r.createElement(V.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function Y(){const e=(0,L.e)();return r.createElement("button",{type:"button","aria-label":(0,u.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()},r.createElement(E,{color:"var(--ifm-color-emphasis-600)"}))}function K(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(W,null),r.createElement(Z,{className:"margin-right--md"}),r.createElement(Y,null))}var Q=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:a,href:o,label:i,html:s,isDropdownLink:u,prependBaseUrlToHref:c,...d}=e;const p=(0,X.Z)(a),f=(0,X.Z)(t),m=(0,X.Z)(o,{forcePrependBaseUrl:!0}),h=i&&o&&!(0,J.Z)(o),g=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,h&&r.createElement(te.Z,u&&{width:12,height:12}))};return o?r.createElement(Q.Z,(0,l.Z)({href:c?m:o},d,g)):r.createElement(Q.Z,(0,l.Z)({to:p,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?ee(n,t.pathname):t.pathname.startsWith(f)},d,g))}function re(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ne,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ae(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ne,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function oe(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ae:re;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var ie=n(6043),le=n(8596),se=n(2263);function ue(e,t){return e.some((e=>function(e,t){return!!(0,le.Mg)(e.to,t)||!!ee(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function ce(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const u=(0,r.useRef)(null),[c,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{u.current&&!u.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)}}),[u]),r.createElement("div",{ref:u,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":c})},r.createElement(ne,(0,l.Z)({"aria-haspopup":"true","aria-expanded":c,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!c))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,t)=>r.createElement(_e,(0,l.Z)({isDropdownItem:!0,activeClassName:"dropdown__link--active"},e,{key:t}))))))}function de(e){let{items:t,className:n,position:o,onClick:i,...u}=e;const c=function(){const{siteConfig:{baseUrl:e}}=(0,se.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=ue(t,c),{collapsed:p,toggleCollapsed:f,setCollapsed:m}=(0,ie.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&m(!d)}),[c,d,m]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":p})},r.createElement(ne,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},u,{onClick:e=>{e.preventDefault(),f()}}),u.children??u.label),r.createElement(ie.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:p},t.map(((e,t)=>r.createElement(_e,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function pe(e){let{mobile:t=!1,...n}=e;const a=t?de:ce;return r.createElement(a,n)}var fe=n(4711);function me(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("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 he="iconLanguage_nlXk";var ge=n(1875);const be={searchBox:"searchBox_ZlJk"};function ve(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,be.searchBox)},t)}var ye=n(143),we=n(2802);var ke=n(373);const Ee=e=>e.docs.find((t=>t.id===e.mainDocId));const Se={default:oe,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:c,localeConfigs:d}}=(0,se.Z)(),p=(0,fe.l)(),{search:f,hash:m}=(0,s.TH)(),h=[...n,...c.map((e=>{const n=`${`pathname://${p.createUrl({locale:e,fullyQualified:!1})}`}${f}${m}`;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":""}})),...a],g=t?(0,u.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(pe,(0,l.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(me,{className:he}),g),items:h}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(ve,{className:n},r.createElement(ge.Z,null))},dropdown:pe,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ye.Iw)(a),s=(0,we.vY)(t,a);return null===s?null:r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.path===s.path||!!i?.sidebar&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ye.Iw)(a),s=(0,we.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(oe,(0,l.Z)({exact:!0},o,{isActive:()=>i?.sidebar===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,we.lO)(a)[0],s=t??i.label,u=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(oe,(0,l.Z)({},o,{label:s,to:u}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...c}=e;const{search:d,hash:p}=(0,s.TH)(),f=(0,ye.Iw)(n),m=(0,ye.gB)(n),{savePreferredVersionName:h}=(0,ke.J)(n),g=[...o,...m.map((e=>{const t=f.alternateDocVersions[e.name]??Ee(e);return{label:e.label,to:`${t.path}${d}${p}`,isActive:()=>e===f.activeVersion,onClick:()=>h(e.name)}})),...i],b=(0,we.lO)(n)[0],v=t&&g.length>1?(0,u.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,y=t&&g.length>1?void 0:Ee(b).path;return g.length<=1?r.createElement(oe,(0,l.Z)({},c,{mobile:t,label:v,to:y,isActive:a?()=>!1:void 0})):r.createElement(pe,(0,l.Z)({},c,{mobile:t,label:v,to:y,items:g,isActive:a?()=>!1:void 0}))}};function _e(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Se[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function xe(){const e=(0,L.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(_e,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Ce(e){return r.createElement("button",(0,l.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(u.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)"},"\u2190 Back to main menu"))}function Te(){const e=0===(0,w.L)().navbar.items.length,t=M();return r.createElement(r.Fragment,null,!e&&r.createElement(Ce,{onClick:()=>t.hide()}),t.content)}function Ae(){const e=(0,L.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?r.createElement(j,{header:r.createElement(K,null),primaryMenu:r.createElement(xe,null),secondaryMenu:r.createElement(Te,null)}):null}const Le={navbarHideable:"navbarHideable_m1mJ",navbarHidden:"navbarHidden_jGov"};function Re(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function Ne(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,L.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,R.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+u{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,"aria-label":(0,u.I)({id:"theme.NavBar.navAriaLabel",message:"Main",description:"The ARIA label for the main navigation"}),className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Le.navbarHideable,!s&&Le.navbarHidden],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Re,{onClick:i.toggle}),r.createElement(Ae,null))}var Oe=n(8780);const Pe={errorBoundaryError:"errorBoundaryError_a6uf"};function De(e){return r.createElement("button",(0,l.Z)({type:"button"},e),r.createElement(u.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again rendering when the React error boundary captures an error"},"Try again"))}function Ie(e){let{error:t}=e;const n=(0,Oe.getErrorCausalChain)(t).map((e=>e.message)).join("\n\nCause:\n");return r.createElement("p",{className:Pe.errorBoundaryError},n)}class Me extends r.Component{componentDidCatch(e,t){throw this.props.onError(e,t)}render(){return this.props.children}}const je="right";function Fe(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function Be(){const{toggle:e,shown:t}=(0,L.e)();return r.createElement("button",{onClick:e,"aria-label":(0,u.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"},r.createElement(Fe,null))}const ze={colorModeToggle:"colorModeToggle_DEke"};function Ue(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(Me,{key:t,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})},r.createElement(_e,e)))))}function $e(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function qe(){const e=(0,L.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??je)}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement($e,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(Be,null),r.createElement(W,null),r.createElement(Ue,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Ue,{items:a}),r.createElement(Z,{className:ze.colorModeToggle}),!o&&r.createElement(ve,null,r.createElement(ge.Z,null)))})}function He(){return r.createElement(Ne,null,r.createElement(qe,null))}function Ge(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,u=(0,X.Z)(n),c=(0,X.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(Q.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?c:a}:{to:u},s),o,a&&!(0,J.Z)(a)&&r.createElement(te.Z,null))}function Ze(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement(Ge,{item:t}))}function Ve(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(Ze,{key:t,item:e})))))}function We(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(Ve,{key:t,column:e}))))}function Ye(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function Ke(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement(Ge,{item:t})}function Qe(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(Ke,{item:e}),t.length!==n+1&&r.createElement(Ye,null))))))}function Xe(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(We,{columns:t}):r.createElement(Qe,{links:t})}var Je=n(941);const et={footerLogoLink:"footerLogoLink_BH7S"};function tt(e){let{logo:t}=e;const{withBaseUrl:n}=(0,X.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(Je.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function nt(e){let{logo:t}=e;return t.href?r.createElement(Q.Z,{href:t.href,className:et.footerLogoLink,target:t.target},r.createElement(tt,{logo:t})):r.createElement(tt,{logo:t})}function rt(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function at(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function ot(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(at,{style:o,links:n&&n.length>0&&r.createElement(Xe,{links:n}),logo:a&&r.createElement(nt,{logo:a}),copyright:t&&r.createElement(rt,{copyright:t})})}const it=r.memo(ot),lt=(0,N.Qc)([F.S,k.pl,R.OC,ke.L5,i.VC,function(e){let{children:t}=e;return r.createElement(O.n2,null,r.createElement(L.M,null,r.createElement(D,null,t)))}]);function st(e){let{children:t}=e;return r.createElement(lt,null,t)}function ut(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(u.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("div",{className:"margin-vert--lg"},r.createElement(De,{onClick:n,className:"button button--primary shadow--lw"})),r.createElement("hr",null),r.createElement("div",{className:"margin-vert--md"},r.createElement(Ie,{error:t})))))}const ct={mainWrapper:"mainWrapper_z2l0"};function dt(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:u}=e;return(0,b.t)(),r.createElement(st,null,r.createElement(i.d,{title:s,description:u}),r.createElement(y,null),r.createElement(A,null),r.createElement(He,null),r.createElement("div",{id:d,className:(0,a.Z)(g.k.wrapper.main,ct.mainWrapper,l)},r.createElement(o.Z,{fallback:e=>r.createElement(ut,e)},t)),!n&&r.createElement(it,null))}},1327:(e,t,n)=>{"use strict";n.d(t,{Z:()=>d});var r=n(7462),a=n(7294),o=n(9960),i=n(4996),l=n(2263),s=n(6668),u=n(941);function c(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(u.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:u}}=(0,s.L)(),{imageClassName:d,titleClassName:p,...f}=e,m=(0,i.Z)(u?.href||"/"),h=n?"":t,g=u?.alt??h;return a.createElement(o.Z,(0,r.Z)({to:m},f,u?.target&&{target:u.target}),u&&a.createElement(c,{logo:u,alt:g,imageClassName:d}),null!=n&&a.createElement("b",{className:p},n))}},197:(e,t,n)=>{"use strict";n.d(t,{Z:()=>o});var r=n(7294),a=n(5742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},941:(e,t,n)=>{"use strict";n.d(t,{Z:()=>u});var r=n(7462),a=n(7294),o=n(4334),i=n(2389),l=n(2949);const s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function u(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:u,className:c,alt:d,...p}=e,f=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,f.map((e=>a.createElement("img",(0,r.Z)({key:e,src:u[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],c)},p)))))}},6043:(e,t,n)=>{"use strict";n.d(t,{u:()=>s,z:()=>g});var r=n(7462),a=n(7294),o=n(412),i=n(1442);const l="ease-in-out";function s(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const u={display:"none",overflow:"hidden",height:"0px"},c={display:"block",overflow:"visible",height:"auto"};function d(e,t){const n=t?u:c;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function p(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=e.scrollHeight,n=r?.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 ${r?.easing??l}`,height:`${t}px`}}function s(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return d(e,n),void(o.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,r])}function f(e){if(!o.Z.canUseDOM)return e?u:c}function m(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const u=(0,a.useRef)(null);return p({collapsibleRef:u,collapsed:n,animation:o}),a.createElement(t,{ref:u,style:s?void 0:f(n),onTransitionEnd:e=>{"height"===e.propertyName&&(d(u.current,n),i?.(n))},className:l},r)}function h(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(m,(0,r.Z)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?h:m;return a.createElement(r,n)}},9689:(e,t,n)=>{"use strict";n.d(t,{nT:()=>m,pl:()=>f});var r=n(7294),a=n(2389),o=n(12),i=n(902),l=n(6668);const s=(0,o.WA)("docusaurus.announcement.dismiss"),u=(0,o.WA)("docusaurus.announcement.id"),c=()=>"true"===s.get(),d=e=>s.set(String(e)),p=r.createContext(null);function f(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&c()));(0,r.useEffect)((()=>{o(c())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!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&&d(!1),!r&&c()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(p.Provider,{value:n},t)}function m(){const e=(0,r.useContext)(p);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:(e,t,n)=>{"use strict";n.d(t,{I:()=>g,S:()=>h});var r=n(7294),a=n(412),o=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),u="theme",c=(0,i.WA)(u),d={light:"light",dark:"dark"},p=e=>e===d.dark?d.dark:d.light,f=e=>a.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e),m=e=>{c.set(p(e))};function h(e){let{children:t}=e;const n=function(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[a,o]=(0,r.useState)(f(e));(0,r.useEffect)((()=>{t&&c.del()}),[t]);const i=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(o(t),a&&m(t)):(o(n?window.matchMedia("(prefers-color-scheme: dark)").matches?d.dark:d.light:e),c.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(a))}),[a]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==u)return;const t=c.get();null!==t&&i(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,i]);const s=(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||s.current?s.current=window.matchMedia("print").matches:i(null)};return e.addListener(r),()=>e.removeListener(r)}),[i,t,n]),(0,r.useMemo)((()=>({colorMode:a,setColorMode:i,get isDarkTheme(){return a===d.dark},setLightTheme(){i(d.light)},setDarkTheme(){i(d.dark)}})),[a,i])}();return r.createElement(s.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(s);if(null==e)throw new o.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:()=>g});var r=n(7294),a=n(143),o=n(9935),i=n(6668),l=n(2802),s=n(902),u=n(12);const c=e=>`docs-preferred-version-${e}`,d={save:(e,t,n)=>{(0,u.WA)(c(e),{persistence:t}).set(n)},read:(e,t)=>(0,u.WA)(c(e),{persistence:t}).get(),clear:(e,t)=>{(0,u.WA)(c(e),{persistence:t}).del()}},p=e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}])));const f=r.createContext(null);function m(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>p(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=d.read(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(d.clear(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d.save(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=m();return r.createElement(f.Provider,{value:n},t)}function g(e){let{children:t}=e;return l.cE?r.createElement(h,null,t):r.createElement(r.Fragment,null,t)}function b(){const e=(0,r.useContext)(f);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function v(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=b(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:(e,t,n)=>{"use strict";n.d(t,{V:()=>s,b:()=>l});var r=n(7294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},2961:(e,t,n)=>{"use strict";n.d(t,{M:()=>p,e:()=>f});var r=n(7294),a=n(3102),o=n(7524),i=n(6550),l=(n(1688),n(902));function s(e){!function(e){const t=(0,i.k6)(),n=(0,l.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var u=n(6668);const c=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,u.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const c=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:c,shown:i})),[e,n,c,i])}function p(e){let{children:t}=e;const n=d();return r.createElement(c.Provider,{value:n},t)}function f(){const e=r.useContext(c);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},3102:(e,t,n)=>{"use strict";n.d(t,{HY:()=>l,Zo:()=>s,n2:()=>i});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},9727:(e,t,n)=>{"use strict";n.d(t,{h:()=>a,t:()=>o});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:(e,t,n)=>{"use strict";n.d(t,{i:()=>u});var r=n(7294),a=n(412);const o={desktop:"desktop",mobile:"mobile",ssr:"ssr"},i=996;function l(){return a.Z.canUseDOM?window.innerWidth>i?o.desktop:o.mobile:o.ssr}const s=!1;function u(){const[e,t]=(0,r.useState)((()=>s?"ssr":l()));return(0,r.useEffect)((()=>{function e(){t(l())}const n=s?window.setTimeout(e,1e3):void 0;return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(n)}}),[]),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",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,{Wl:()=>p,_F:()=>h,cE:()=>d,hI:()=>k,lO:()=>v,vY:()=>w,oz:()=>y,s1:()=>b});var r=n(7294),a=n(6550),o=n(8790),i=n(143),l=n(373),s=n(1116);function u(e){return Array.from(new Set(e))}var c=n(8596);const d=!!i._r;function p(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=p(t);if(e)return e}}}const f=(e,t)=>void 0!==e&&(0,c.Mg)(e,t),m=(e,t)=>e.some((e=>h(e,t)));function h(e,t){return"link"===e.type?f(e.href,t):"category"===e.type&&(f(e.href,t)||m(e.items,t))}function g(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,c.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,c.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function b(){const e=(0,s.V)(),{pathname:t}=(0,a.TH)(),n=(0,i.gA)()?.pluginData.breadcrumbs;return!1!==n&&e?g({sidebarItems:e.items,pathname:t}):null}function v(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>u([t,n,a].filter(Boolean))),[t,n,a])}function y(e,t){const n=v(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 w(e,t){const n=v(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 k(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,u=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:u}}},1944:(e,t,n)=>{"use strict";n.d(t,{FG:()=>p,d:()=>c,VC:()=>f});var r=n(7294),a=n(7459),o=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),u=n(2263);function c(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const c=function(e){const{siteConfig:t}=(0,u.Z)(),{title:n,titleDelimiter:r}=t;return e?.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),p=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,c),t&&r.createElement("meta",{property:"og:title",content:c}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),p&&r.createElement("meta",{property:"og:image",content:p}),p&&r.createElement("meta",{name:"twitter:image",content:p}),l)}const d=r.createContext(void 0);function p(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function f(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(p,{className:(0,a.Z)(o,i)},t)}},902:(e,t,n)=>{"use strict";n.d(t,{D9:()=>i,Qc:()=>u,Ql:()=>s,i6:()=>l,zX:()=>o});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{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 s(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 r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},8596:(e,t,n)=>{"use strict";n.d(t,{Mg:()=>i,Ns:()=>l});var r=n(7294),a=n(723),o=n(2263);function i(e,t){const n=e=>(!e||e.endsWith("/")?e:`${e}/`)?.toLowerCase();return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.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 a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2466:(e,t,n)=>{"use strict";n.d(t,{Ct:()=>p,OC:()=>s,RF:()=>d});var r=n(7294),a=n(412),o=n(2389),i=n(902);const l=r.createContext(void 0);function s(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 r.createElement(l.Provider,{value:n},t)}function u(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const c=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=u(),a=(0,r.useRef)(c()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=c();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function p(){const e=(0,r.useRef)(null),t=(0,o.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 a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>e.current?.()}}},3320:(e,t,n)=>{"use strict";n.d(t,{HX:()=>r,os:()=>a});n(2263);const r="default";function a(e,t){return`docs-${e}-${t}`}},12:(e,t,n)=>{"use strict";n.d(t,{WA:()=>s});n(7294),n(1688);const r="localStorage";function a(e){let{key:t,oldValue:n,newValue:r,storage:a}=e;if(n===r)return;const o=document.createEvent("StorageEvent");o.initStorageEvent("storage",!1,!1,t,n,r,window.location.href,a),window.dispatchEvent(o)}function o(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 l={get:()=>null,set:()=>{},del:()=>{},listen:()=>()=>{}};function s(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=o(t?.persistence);return null===n?l:{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),a({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),a({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),a=n(6550),o=n(8780);function i(){const{siteConfig:{baseUrl:e,url:t,trailingSlash:n},i18n:{defaultLocale:i,currentLocale:l}}=(0,r.Z)(),{pathname:s}=(0,a.TH)(),u=(0,o.applyTrailingSlash)(s,{trailingSlash:n,baseUrl:e}),c=l===i?e:e.replace(`/${l}/`,"/"),d=u.replace(e,"");return{createUrl:function(e){let{locale:n,fullyQualified:r}=e;return`${r?t:""}${function(e){return e===i?`${c}`:`${c}${e}/`}(n)}${d}`}}}},5936:(e,t,n)=>{"use strict";n.d(t,{S:()=>i});var r=n(7294),a=n(6550),o=n(902);function i(e){const t=(0,a.TH)(),n=(0,o.D9)(t),i=(0,o.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:()=>a});var r=n(2263);function a(){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[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,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(a,o)}},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 a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}});var o=n(4143);Object.defineProperty(t,"getErrorCausalChain",{enumerable:!0,get:function(){return o.getErrorCausalChain}})},9318:(e,t,n)=>{"use strict";n.d(t,{lX:()=>w,q_:()=>C,ob:()=>f,PP:()=>A,Ep:()=>p});var r=n(7462);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;p--){var f=i[p];"."===f?o(i,p):".."===f?(o(i,p),d++):d&&(o(i,p),d--)}if(!u)for(;d--;d)i.unshift("..");!u||""===i[0]||i[0]&&a(i[0])||i.unshift("");var m=i.join("/");return n&&"/"!==m.substr(-1)&&(m+="/"),m};var l=n(8776);function s(e){return"/"===e.charAt(0)?e:"/"+e}function u(e){return"/"===e.charAt(0)?e.substr(1):e}function c(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,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function f(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function m(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!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,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=f(e,t,h(),w.location);c.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t{"use strict";var r=n(9864),a={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},o={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},l={};function s(e){return r.isMemo(e)?i:l[e.$$typeof]||a}l[r.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},l[r.Memo]=i;var u=Object.defineProperty,c=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,m=Object.prototype;e.exports=function e(t,n,r){if("string"!=typeof n){if(m){var a=f(n);a&&a!==m&&e(t,a,r)}var i=c(n);d&&(i=i.concat(d(n)));for(var l=s(t),h=s(n),g=0;g{"use strict";e.exports=function(e,t,n,r,a,o,i,l){if(!e){var s;if(void 0===t)s=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var u=[n,r,a,o,i,l],c=0;(s=new Error(t.replace(/%s/g,(function(){return u[c++]})))).name="Invariant Violation"}throw s.framesToPop=1,s}}},5826:e=>{e.exports=Array.isArray||function(e){return"[object Array]"==Object.prototype.toString.call(e)}},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,a;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 a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}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=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),u=o.querySelector(r.barSelector),c=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(u,i(e,c,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+c+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),c)}),c)):setTimeout(t,c)})),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)*a(Math.random()*t,.1,.95)),t=a(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");c(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),u=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&f(a),u!=document.body&&c(u,"nprogress-custom-parent"),u.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 l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=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,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function u(e,t){return("string"==typeof e?e:p(e)).indexOf(" "+t+" ")>=0}function c(e,t){var n=p(e),r=n+t;u(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=p(e);u(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===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7418:e=>{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,a){for(var o,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),s=1;s{"use strict";n.d(t,{Z:()=>o});var r=function(){var e=/(?:^|\s)lang(?:uage)?-([\w-]+)(?=\s|$)/i,t=0,n={},r={util:{encode:function e(t){return t instanceof a?new a(t.type,e(t.content),t.alias):Array.isArray(t)?t.map(e):t.replace(/&/g,"&").replace(/=d.reach);S+=E.value.length,E=E.next){var _=E.value;if(t.length>e.length)return;if(!(_ instanceof a)){var x,C=1;if(v){if(!(x=o(k,S,e,b))||x.index>=e.length)break;var T=x.index,A=x.index+x[0].length,L=S;for(L+=E.value.length;T>=L;)L+=(E=E.next).value.length;if(S=L-=E.value.length,E.value instanceof a)continue;for(var R=E;R!==t.tail&&(Ld.reach&&(d.reach=D);var I=E.prev;if(O&&(I=s(t,I,O),S+=O.length),u(t,I,C),E=s(t,I,new a(p,g?r.tokenize(N,g):N,y,N)),P&&s(t,E,P),C>1){var M={cause:p+","+m,reach:D};i(e,t,n,E.prev,S,M),d&&M.reach>d.reach&&(d.reach=M.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function u(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}(),a=r;r.default=r,a.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},a.languages.markup.tag.inside["attr-value"].inside.entity=a.languages.markup.entity,a.languages.markup.doctype.inside["internal-subset"].inside=a.languages.markup,a.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(a.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:a.languages[t]},n.cdata=/^$/i;var r={"included-cdata":{pattern://i,inside:n}};r["language-"+t]={pattern:/[\s\S]+/,inside:a.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:r},a.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(a.languages.markup.tag,"addAttribute",{value:function(e,t){a.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:a.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),a.languages.html=a.languages.markup,a.languages.mathml=a.languages.markup,a.languages.svg=a.languages.markup,a.languages.xml=a.languages.extend("markup",{}),a.languages.ssml=a.languages.xml,a.languages.atom=a.languages.xml,a.languages.rss=a.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},a.languages.c=a.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),a.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),a.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},a.languages.c.string],char:a.languages.c.char,comment:a.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:a.languages.c}}}}),a.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete a.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(a),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(a),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(a),a.languages.javascript=a.languages.extend("clike",{"class-name":[a.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),a.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,a.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:a.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:a.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:a.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:a.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:a.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),a.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:a.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),a.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),a.languages.markup&&(a.languages.markup.tag.addInlined("script","javascript"),a.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),a.languages.js=a.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(a),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(a),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(a),a.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:a.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},a.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var l=p(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s=0&&f(u,"variable-input")}}}}function c(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function u(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function c(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,c={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return c[n]=a,n})).join(""),n,r),p=Object.keys(c);return i=0,function e(t){for(var n=0;n=p.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=p[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=u(c[a]),f=o.substring(l+a.length),m=[];if(s&&m.push(s),m.push(d),f){var h=[f];e(h),m.push.apply(m,h)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(m)),n+=m.length-1):r.content=m}}else{var g=r.content;Array.isArray(g)?e(g):e([g])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function p(e){return"string"==typeof e?e:Array.isArray(e)?e.map(p).join(""):p(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(a),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(a),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(a),a.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},a.languages.go=a.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),a.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete a.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var u=l[s];if("string"==typeof u||u.content&&"string"==typeof u.content){var c=o[a],d=n.tokenStack[c],p="string"==typeof u?u:u.content,f=t(r,c),m=p.indexOf(f);if(m>-1){++a;var h=p.substring(0,m),g=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=p.substring(m+f.length),v=[];h&&v.push.apply(v,i([h])),v.push(g),b&&v.push.apply(v,i([b])),"string"==typeof u?l.splice.apply(l,[s,1].concat(v)):u.content=v}}else u.content&&i(u.content)}return l}(n.tokens)}}}})}(a),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(a),a.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},a.languages.webmanifest=a.languages.json,a.languages.less=a.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),a.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),a.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},a.languages.objectivec=a.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete a.languages.objectivec["class-name"],a.languages.objc=a.languages.objectivec,a.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},a.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},a.languages.python["string-interpolation"].inside.interpolation.inside.rest=a.languages.python,a.languages.py=a.languages.python,a.languages.reason=a.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),a.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete a.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(a),a.languages.scss=a.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),a.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),a.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),a.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),a.languages.scss.atrule.inside.rest=a.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(a),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(a),a.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/};const o=a},9901:e=>{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),a=n(9642),o=new Set;function i(e){void 0===e?e=Object.keys(r.languages).filter((e=>"meta"!=e)):Array.isArray(e)||(e=[e]);const t=[...o,...Object.keys(Prism.languages)];a(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),o.add(e)}))}i.silent=!1,e.exports=i},6726:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=6726},6500:(e,t,n)=>{var r={"./":2885};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.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 l={},s=e[r];if(s){function u(t){if(!(t in e))throw new Error(r+" depends on an unknown component "+t);if(!(t in l))for(var i in a(t,o),l[t]=!0,n[t])l[i]=!0}t(s.require,u),t(s.optional,u),t(s.modify,u)}n[r]=l,o.pop()}}return function(e){var t=n[e];return t||(a(e,r),t=n[e]),t}}function a(e){for(var t in e)return!0;return!1}return function(o,i,l){var s=function(e){var t={};for(var n in e){var r=e[n];for(var a in r)if("meta"!=a){var o=r[a];t[a]="string"==typeof o?{title:o}:o}}return t}(o),u=function(e){var n;return function(r){if(r in e)return r;if(!n)for(var a in n={},e){var o=e[a];t(o&&o.alias,(function(t){if(t in n)throw new Error(t+" cannot be alias for both "+a+" and "+n[t]);if(t in e)throw new Error(t+" cannot be alias of "+a+" because it is a component.");n[t]=a}))}return n[r]||r}}(s);i=i.map(u),l=(l||[]).map(u);var c=n(i),d=n(l);i.forEach((function e(n){var r=s[n];t(r&&r.require,(function(t){t in d||(c[t]=!0,e(t))}))}));for(var p,f=r(s),m=c;a(m);){for(var h in p={},m){var g=s[h];t(g&&g.modify,(function(e){e in d&&(p[e]=!0)}))}for(var b in d)if(!(b in c))for(var v in f(b))if(v in c){p[b]=!0;break}for(var y in m=p)c[y]=!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,a){var o=a?a.series:void 0,i=a?a.parallel:e,l={},s={};function u(e){if(e in l)return l[e];s[e]=!0;var a,c=[];for(var d in t(e))d in n&&c.push(d);if(0===c.length)a=r(e);else{var p=i(c.map((function(e){var t=u(e);return delete s[e],t})));o?a=o(p,(function(){return r(e)})):r(e)}return l[e]=a}for(var c in n)u(c);var d=[];for(var p in s)d.push(l[p]);return i(d)}(f,c,t,n)}};return w}}();e.exports=t},2703:(e,t,n)=>{"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=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 l.name="Invariant Violation",l}}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:o,resetWarningCache:a};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),a=n(7418),o=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n