diff --git a/.DS_Store b/.DS_Store index 9ca00f0ed1..cc643ca49b 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.vocs/search-index-a69b292b.json b/.vocs/search-index-6870eaad.json similarity index 62% rename from .vocs/search-index-a69b292b.json rename to .vocs/search-index-6870eaad.json index aba66c9258..0b34aabf91 100644 --- a/.vocs/search-index-a69b292b.json +++ b/.vocs/search-index-6870eaad.json @@ -1 +1 @@ -{"documentCount":516,"nextId":516,"documentIds":{"0":"docs/pages/support.mdx#support","1":"docs/pages/api/metadata.mdx#metadata-api","2":"docs/pages/api/metadata.mdx#obtaining-a-service-account--token","3":"docs/pages/api/metadata.mdx#creating-collections-tokens-and-managing-metadata","4":"docs/pages/api/metadata.mdx#pricing--usage","5":"docs/pages/api/node-gateway.mdx#node-gateway","6":"docs/pages/api/node-gateway.mdx#give-it-a-try","7":"docs/pages/solutions/minter.mdx#mint-tokens-using-builder-manually","8":"docs/pages/solutions/minter.mdx#deploy-a-serverless-minter-on-cloudflare-workers","9":"docs/pages/solutions/nft-checkout.mdx#integrate-nft-checkout-on-web-coming-soon","10":"docs/pages/solutions/onramps.mdx#integrate-onramp-on-web","11":"docs/pages/support/restricted-regions.mdx#sequence-list-of-restricted-regions","12":"docs/pages/support/restricted-regions.mdx#us-states-with-limited-access-to-sequence","13":"docs/pages/support/restricted-regions.mdx#sequence-cannot-be-accessed-from-the-following-regions","14":"docs/pages/api/indexer/installation.mdx#indexer-installation","15":"docs/pages/api/indexer/installation.mdx#installation","16":"docs/pages/api/indexer/installation.mdx#web--nodejs-installation","17":"docs/pages/api/indexer/installation.mdx#go-installation","18":"docs/pages/api/indexer/installation.mdx#unity-or-unreal-installation","19":"docs/pages/api/indexer/metadata-tips.mdx#metadata-tips--notes-on-spam","20":"docs/pages/api/indexer/overview.mdx#indexer","21":"docs/pages/api/indexer/overview.mdx#supported-networks--endpoints","22":"docs/pages/api/indexer/overview.mdx#getting-started","23":"docs/pages/api/marketplace/overview.mdx#marketplace-api","24":"docs/pages/api/metadata/contract-metadata.mdx#contract-metadata","25":"docs/pages/api/metadata/contract-metadata.mdx#fetch-contract-metadata-of-any-erc20-erc721-or-erc1155-contract-address","26":"docs/pages/api/metadata/contract-metadata.mdx#contract-level-metadata-standards","27":"docs/pages/api/metadata/overview.mdx#metadata","28":"docs/pages/api/metadata/overview.mdx#web--nodejs-installation","29":"docs/pages/api/metadata/overview.mdx#go-installation","30":"docs/pages/api/metadata/overview.mdx#unity-or-unreal-installation","31":"docs/pages/api/metadata/rest-api.mdx#metadata-rest-api-reference--usage","32":"docs/pages/api/metadata/rest-api.mdx#example","33":"docs/pages/api/metadata/rest-api.mdx#usage","34":"docs/pages/api/metadata/rest-api.mdx#rest-endpoints","35":"docs/pages/api/metadata/rest-api.mdx#rpc-client","36":"docs/pages/api/metadata/rest-api.mdx#metadata-rpc-methods","37":"docs/pages/api/metadata/token-metadata.mdx#token-metadata","38":"docs/pages/api/metadata/token-metadata.mdx#fetch-token-metadata-for-any-erc721-or-erc1155-contract","39":"docs/pages/api/metadata/token-metadata.mdx#refreshing-token-metadata","40":"docs/pages/api/metadata/token-metadata.mdx#testing-instructions","41":"docs/pages/api/metadata/token-metadata.mdx#token-metadata-standards","42":"docs/pages/api/metadata/token-metadata.mdx#metadata-standards","43":"docs/pages/api/metadata/token-metadata.mdx#erc721","44":"docs/pages/api/metadata/token-metadata.mdx#erc1155","45":"docs/pages/api/metadata/token-metadata.mdx#attributes-vs-properties","46":"docs/pages/api/metadata/token-metadata.mdx#erc20","47":"docs/pages/api/relayer/installation.mdx#installation","48":"docs/pages/api/relayer/installation.mdx#web--nodejs-installation","49":"docs/pages/api/relayer/installation.mdx#go-installation","50":"docs/pages/api/relayer/overview.mdx#relayer-api","51":"docs/pages/api/relayer/overview.mdx#anatomy-of-a-sequence-transaction-bundle","52":"docs/pages/api/relayer/overview.mdx#gas-sponsorship-and-fees","53":"docs/pages/guides/templates/template-in-game-wallet.mdx#quickstart","54":"docs/pages/guides/templates/template-in-game-wallet.mdx#try-a-demo","55":"docs/pages/guides/templates/template-in-game-wallet.mdx#template","56":"docs/pages/guides/templates/template-in-game-wallet.mdx#getting-started","57":"docs/pages/guides/templates/template-in-game-wallet.mdx#sdk-installation","58":"docs/pages/guides/templates/template-in-game-wallet.mdx#project-setup","59":"docs/pages/guides/templates/template-in-game-wallet.mdx#library-setup","60":"docs/pages/sdk/go/overview.mdx#go","61":"docs/pages/sdk/go/overview.mdx#ethkit","62":"docs/pages/sdk/sequence-kit/checkout.mdx#overview","63":"docs/pages/sdk/sequence-kit/checkout.mdx#integration","64":"docs/pages/sdk/sequence-kit/checkout.mdx#opening-the-checkout-modal","65":"docs/pages/sdk/sequence-kit/checkout.mdx#configuring-the-checkout-modal","66":"docs/pages/sdk/sequence-kit/checkout.mdx#crypto-checkout-configuration-cryptocheckout","67":"docs/pages/sdk/sequence-kit/checkout.mdx#order-summary-configuration-ordersummaryitems","68":"docs/pages/sdk/sequence-kit/configuration.mdx#configuration-options","69":"docs/pages/sdk/sequence-kit/configuration.mdx#available-options","70":"docs/pages/sdk/sequence-kit/configuration.mdx#defaulttheme","71":"docs/pages/sdk/sequence-kit/configuration.mdx#position","72":"docs/pages/sdk/sequence-kit/configuration.mdx#sign-in-modal-configuration-signin","73":"docs/pages/sdk/sequence-kit/configuration.mdx#signinlogourl","74":"docs/pages/sdk/sequence-kit/configuration.mdx#signinprojectname","75":"docs/pages/sdk/sequence-kit/configuration.mdx#signinshowemailinput","76":"docs/pages/sdk/sequence-kit/configuration.mdx#signinsocialauthoptions","77":"docs/pages/sdk/sequence-kit/configuration.mdx#signinwalletauthoptions","78":"docs/pages/sdk/sequence-kit/configuration.mdx#displayedassets","79":"docs/pages/sdk/sequence-kit/custom-connectors.mdx#custom-connectors-in-sequence-kit","80":"docs/pages/sdk/sequence-kit/custom-connectors.mdx#creating-a-custom-connector","81":"docs/pages/sdk/sequence-kit/custom-connectors.mdx#using-custom-connectors","82":"docs/pages/sdk/sequence-kit/custom-connectors.mdx#share-your-custom-connectors","83":"docs/pages/sdk/sequence-kit/getting-started.mdx#getting-started-with-sequence-kit","84":"docs/pages/sdk/sequence-kit/getting-started.mdx#installing-sequence-kit-packages","85":"docs/pages/sdk/sequence-kit/getting-started.mdx#setting-up-the-kit-wrapper","86":"docs/pages/sdk/sequence-kit/getting-started.mdx#setting-up-the-embedded-wallet-wrapper","87":"docs/pages/sdk/sequence-kit/getting-started.mdx#triggering-the-connect-modal","88":"docs/pages/sdk/sequence-kit/getting-started.mdx#invoking-the-embedded-wallet-modal","89":"docs/pages/sdk/sequence-kit/getting-started.mdx#react-example","90":"docs/pages/sdk/sequence-kit/overview.mdx#sequencekit-sdk","91":"docs/pages/sdk/sequence-kit/overview.mdx#key-features","92":"docs/pages/sdk/sequence-kit/overview.mdx#next-steps","93":"docs/pages/sdk/unity/authentication.mdx#authentication","94":"docs/pages/sdk/unity/authentication.mdx#1-email-sign-in","95":"docs/pages/sdk/unity/authentication.mdx#2-social-sign-in","96":"docs/pages/sdk/unity/authentication.mdx#ios","97":"docs/pages/sdk/unity/authentication.mdx#macos","98":"docs/pages/sdk/unity/authentication.mdx#pc","99":"docs/pages/sdk/unity/authentication.mdx#android","100":"docs/pages/sdk/unity/authentication.mdx#webgl","101":"docs/pages/sdk/unity/authentication.mdx#connecting-with-waas","102":"docs/pages/sdk/unity/deploy-contracts.mdx#contract-deployment","103":"docs/pages/sdk/unity/installation.mdx#installation","104":"docs/pages/sdk/unity/installation.mdx#package-manager---recommended","105":"docs/pages/sdk/unity/installation.mdx#samples","106":"docs/pages/sdk/unity/installation.mdx#manual","107":"docs/pages/sdk/unity/overview.mdx#introduction","108":"docs/pages/sdk/unity/overview.mdx#requirements","109":"docs/pages/sdk/unity/read-from-blockchain.mdx#read-from-blockchain","110":"docs/pages/sdk/unity/setup.mdx#setup","111":"docs/pages/sdk/unity/sign-messages.mdx#sign-messages","112":"docs/pages/sdk/unity/wallet-ui.mdx#wallet-ui","113":"docs/pages/sdk/unity/wallet-ui.mdx#how-it-works","114":"docs/pages/sdk/unity/wallet-ui.mdx#ui-customizability","115":"docs/pages/sdk/unity/wallet-ui.mdx#color-scheme-manager","116":"docs/pages/sdk/unity/wallet-ui.mdx#more-customization-tools-coming-soon","117":"docs/pages/sdk/unity/write-to-blockchain.mdx#write-to-blockchain","118":"docs/pages/sdk/unity/write-to-blockchain.mdx#rawtransaction","119":"docs/pages/sdk/unity/write-to-blockchain.mdx#senderc20","120":"docs/pages/sdk/unity/write-to-blockchain.mdx#complex-erc20-interactions","121":"docs/pages/sdk/unity/write-to-blockchain.mdx#senderc721","122":"docs/pages/sdk/unity/write-to-blockchain.mdx#complex-erc721-interactions","123":"docs/pages/sdk/unity/write-to-blockchain.mdx#senderc1155","124":"docs/pages/sdk/unity/write-to-blockchain.mdx#complex-erc1155-interactions","125":"docs/pages/sdk/unity/write-to-blockchain.mdx#delayedencode","126":"docs/pages/sdk/unity/write-to-blockchain.mdx#batch-transactions","127":"docs/pages/sdk/unreal/api-integration.mdx#api-integration","128":"docs/pages/sdk/unreal/api-integration.mdx#sequence-api","129":"docs/pages/sdk/unreal/api-integration.mdx#sequence-unreal-api","130":"docs/pages/sdk/unreal/api-integration.mdx#usequencewallet","131":"docs/pages/sdk/unreal/api-integration.mdx#sequence-api-methods","132":"docs/pages/sdk/unreal/authentication.mdx#authentication","133":"docs/pages/sdk/unreal/authentication.mdx#custom-ui-integration","134":"docs/pages/sdk/unreal/authentication.mdx#email-based-authentication","135":"docs/pages/sdk/unreal/authentication.mdx#social-signin-based-authentication-on-desktop","136":"docs/pages/sdk/unreal/authentication.mdx#social-signin-based-authentication-on-mobile","137":"docs/pages/sdk/unreal/installation.mdx#installation","138":"docs/pages/sdk/unreal/installation.mdx#credentials","139":"docs/pages/sdk/unreal/installation.mdx#security","140":"docs/pages/sdk/unreal/overview.mdx#introduction","141":"docs/pages/sdk/unreal/overview.mdx#requirements","142":"docs/pages/sdk/unreal/packaging.mdx#packaging","143":"docs/pages/sdk/unreal/packaging.mdx#google-sso-setup","144":"docs/pages/sdk/unreal/packaging.mdx#ios","145":"docs/pages/sdk/unreal/packaging.mdx#unreal-and-xcode-specifics","146":"docs/pages/sdk/unreal/setup.mdx#setup","147":"docs/pages/solutions/builder/analytics.mdx#analytics-in-builder","148":"docs/pages/solutions/builder/analytics.mdx#how-it-works","149":"docs/pages/solutions/builder/analytics.mdx#overview","150":"docs/pages/solutions/builder/analytics.mdx#wallets-connected","151":"docs/pages/solutions/builder/analytics.mdx#marketplace-transactions","152":"docs/pages/solutions/builder/analytics.mdx#transaction-requests","153":"docs/pages/solutions/builder/embedded-wallet.mdx#embedded-wallet-in-builder","154":"docs/pages/solutions/builder/embedded-wallet.mdx#login-providers","155":"docs/pages/solutions/builder/embedded-wallet.mdx#google-auth","156":"docs/pages/solutions/builder/embedded-wallet.mdx#apple-auth","157":"docs/pages/solutions/builder/embedded-wallet.mdx#allowed-origins","158":"docs/pages/solutions/builder/embedded-wallet.mdx#recovery-wallet","159":"docs/pages/solutions/builder/embedded-wallet.mdx#initial-configuration-and-update-code","160":"docs/pages/solutions/builder/embedded-wallet.mdx#configuration-changes","161":"docs/pages/solutions/builder/embedded-wallet.mdx#sdk-integrations","162":"docs/pages/solutions/marketplaces/overview.mdx#marketplaces-overview","163":"docs/pages/solutions/marketplaces/overview.mdx#what-are-the-differences-between-these-options","164":"docs/pages/solutions/marketplaces/overview.mdx#getting-started","165":"docs/pages/solutions/wallets/overview.mdx#sequence-wallets-overview","166":"docs/pages/solutions/wallets/overview.mdx#getting-started","167":"docs/pages/api/indexer/examples/fetch-tokens.mdx#tokens-api","168":"docs/pages/api/indexer/examples/fetch-tokens.mdx#fetches-list-of-erc20-erc721-and-erc1155-tokens-and-metadata-in-any-wallet","169":"docs/pages/api/indexer/examples/fetch-tokens.mdx#fetch-token-ids-balances-and-metadata-of-erc721-and-erc1155-collections","170":"docs/pages/api/indexer/examples/native-network-balance.mdx#native-network-balances-ie-eth-matic-etc","171":"docs/pages/api/indexer/examples/native-network-balance.mdx#fetch-native-network-balance-aka-eth-on-ethereum-matic-on-polygon-avax-on-avalanche-bnb-on-bsc-etc","172":"docs/pages/api/indexer/examples/transaction-history.mdx#wallet-transaction-history","173":"docs/pages/api/indexer/examples/transaction-history.mdx#fetch-the-transaction-history-for-any-wallet-address","174":"docs/pages/api/indexer/examples/transation-history-token-contract.mdx#contract-token-history","175":"docs/pages/api/indexer/examples/transation-history-token-contract.mdx#fetch--listen-to-the-transaction-history-for-any-erc20-erc721-erc1155-contract","176":"docs/pages/api/indexer/examples/unique-tokens.mdx#tokens-in-a-contract","177":"docs/pages/api/indexer/examples/unique-tokens.mdx#fetch-all-unique-tokens-in-a-particular-erc207211155-contract-including-total-supplies","178":"docs/pages/api/indexer/examples/webhook-listener.mdx#webhook","179":"docs/pages/api/indexer/examples/webhook-listener.mdx#listen-to-blockchain-events-with-webhooks","180":"docs/pages/api/indexer/examples/webhook-listener.mdx#registering-a-webhook","181":"docs/pages/api/marketplace/examples/get-user-activities.mdx#getuseractivities","182":"docs/pages/api/marketplace/examples/get-user-activities.mdx#example","183":"docs/pages/api/marketplace/examples/get-user-activities.mdx#schema","184":"docs/pages/api/relayer/examples/fetch-fee-options.mdx#fetching-fee-options","185":"docs/pages/api/relayer/examples/fetch-transaction-receipts.mdx#fetching-transaction-receipts","186":"docs/pages/api/relayer/examples/send-transactions.mdx#sending-transactions","187":"docs/pages/sdk/typescript/connectors/FAQ.mdx#nextjs","188":"docs/pages/sdk/typescript/connectors/FAQ.mdx#why-does-my-wallet-integration-produce-an-error-when-used-with-nextjs","189":"docs/pages/sdk/typescript/connectors/FAQ.mdx#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-pages-directory-all-versions-of-nextjs","190":"docs/pages/sdk/typescript/connectors/FAQ.mdx#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-app-directory-version-13-and-above-only","191":"docs/pages/sdk/typescript/connectors/overview.mdx#wallet-connectors","192":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#using-rainbowkit","193":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#installation","194":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#usage","195":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#parameters","196":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#chains","197":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#connect-optional","198":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#defaultnetwork-optional","199":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#using-nextjs","200":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#using-older-versions-of-wagmi--012x","201":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#examples","202":"docs/pages/sdk/typescript/connectors/sequence-kit.mdx#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","203":"docs/pages/sdk/typescript/connectors/sequence-kit.mdx#key-features","204":"docs/pages/sdk/typescript/connectors/sequence-kit.mdx#next-steps","205":"docs/pages/sdk/typescript/connectors/wagmi.mdx#using-wagmi","206":"docs/pages/sdk/typescript/connectors/wagmi.mdx#installation","207":"docs/pages/sdk/typescript/connectors/wagmi.mdx#usage","208":"docs/pages/sdk/typescript/connectors/wagmi.mdx#parameters","209":"docs/pages/sdk/typescript/connectors/wagmi.mdx#chains","210":"docs/pages/sdk/typescript/connectors/wagmi.mdx#optionsconnect-optional","211":"docs/pages/sdk/typescript/connectors/wagmi.mdx#optionsdefaultnetwork-optional","212":"docs/pages/sdk/typescript/connectors/wagmi.mdx#using-older-versions-of-wagmi--012x","213":"docs/pages/sdk/typescript/connectors/wagmi.mdx#using-nextjs","214":"docs/pages/sdk/typescript/connectors/wagmi.mdx#examples","215":"docs/pages/sdk/typescript/connectors/web3-onboard.mdx#using-web3-onboard","216":"docs/pages/sdk/typescript/connectors/web3-onboard.mdx#installation","217":"docs/pages/sdk/typescript/connectors/web3-onboard.mdx#usage","218":"docs/pages/sdk/typescript/connectors/web3-onboard.mdx#parameters","219":"docs/pages/sdk/typescript/connectors/web3-onboard.mdx#network-optional","220":"docs/pages/sdk/typescript/connectors/web3-onboard.mdx#appname-optional","221":"docs/pages/sdk/typescript/connectors/web3-onboard.mdx#example","222":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#using-web3-react-v6","223":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#installation","224":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#usage","225":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#initialization","226":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#activationdeactivation","227":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#options","228":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#chainid","229":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#appname-optional","230":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#example","231":"docs/pages/sdk/typescript/connectors/web3modal.mdx#using-web3modal","232":"docs/pages/sdk/typescript/connectors/web3modal.mdx#usage","233":"docs/pages/sdk/typescript/connectors/web3modal.mdx#example","234":"docs/pages/sdk/typescript/guides/auth-address.mdx#authenticate-users-with-message-signature","235":"docs/pages/sdk/typescript/guides/auth-address.mdx#ask-for-the-wallet-address","236":"docs/pages/sdk/typescript/guides/auth-address.mdx#authenticate-wallet","237":"docs/pages/sdk/typescript/guides/auth-address.mdx#authenticate-wallet-server-side","238":"docs/pages/sdk/typescript/guides/building-backends.mdx#building-backends-with-sequence","239":"docs/pages/sdk/typescript/guides/building-backends.mdx#nodejs","240":"docs/pages/sdk/typescript/guides/building-backends.mdx#go","241":"docs/pages/sdk/typescript/guides/building-backends.mdx#ethkit","242":"docs/pages/sdk/typescript/guides/building-backends.mdx#support-for-other-backend-languages","243":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#connect-wallet","244":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#connecting-your-dapp-with-0xsequence","245":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#wallet-login-and-connect-options","246":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#app","247":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#appprotocol","248":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#origin","249":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#expiry","250":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#authorize","251":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#authorizenonce","252":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#refresh","253":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#keepwalletopened","254":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#askforemail","255":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingstheme","256":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingsbannerurl","257":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingssigninwith","258":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingssigninwithemail","259":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingssigninoptions","260":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingsincludedpaymentproviders","261":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingsdefaultfundingcurrency","262":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingsdefaultpurchaseamount","263":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingslockfundingcurrencytodefault","264":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#connecting-your-dapp-with-web3js-or-ethersjs","265":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#connecting-to-any-ethereum-dapp-with-the-sequence-wallet-chrome-extension","266":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#connecting-via-walletconnect","267":"docs/pages/sdk/typescript/guides/overview.mdx#install","268":"docs/pages/sdk/typescript/guides/overview.mdx#cdn-distribution-as-native-js","269":"docs/pages/sdk/typescript/guides/send-batch-transactions.mdx#sending-a-batch-of-transactions","270":"docs/pages/sdk/typescript/guides/send-erc1155.mdx#sending-erc-1155-collectible-tokens","271":"docs/pages/sdk/typescript/guides/send-erc20.mdx#sending-erc-20-tokens","272":"docs/pages/sdk/typescript/guides/send-erc721.mdx#sending-erc-721-nft-tokens","273":"docs/pages/sdk/typescript/guides/send-transaction.mdx#sending-transactions","274":"docs/pages/sdk/typescript/guides/session-keys.mdx#no-wallet-confirmation-signatures","275":"docs/pages/sdk/typescript/guides/session-keys.mdx#session-keys","276":"docs/pages/sdk/typescript/guides/session-keys.mdx#using-session-keys-with-sequence","277":"docs/pages/sdk/typescript/guides/session-keys.mdx#1-initialize-sequence-wallet-and-connect","278":"docs/pages/sdk/typescript/guides/session-keys.mdx#2-generate-a-session-key","279":"docs/pages/sdk/typescript/guides/session-keys.mdx#3-sign-authorization-message","280":"docs/pages/sdk/typescript/guides/session-keys.mdx#4-verify-authorization-signature","281":"docs/pages/sdk/typescript/guides/session-keys.mdx#5-sign-message-with-session-key","282":"docs/pages/sdk/typescript/guides/session-keys.mdx#6-verify-session-signature","283":"docs/pages/sdk/unity/Advanced/clients.mdx#clients","284":"docs/pages/sdk/unity/Advanced/clients.mdx#methods","285":"docs/pages/sdk/unity/Advanced/clients.mdx#balanceat","286":"docs/pages/sdk/unity/Advanced/clients.mdx#blockbynumber","287":"docs/pages/sdk/unity/Advanced/clients.mdx#blockbyhash","288":"docs/pages/sdk/unity/Advanced/clients.mdx#blocknumber","289":"docs/pages/sdk/unity/Advanced/clients.mdx#blockrange","290":"docs/pages/sdk/unity/Advanced/clients.mdx#chainid","291":"docs/pages/sdk/unity/Advanced/clients.mdx#codeat","292":"docs/pages/sdk/unity/Advanced/clients.mdx#estimategas","293":"docs/pages/sdk/unity/Advanced/clients.mdx#feehistory","294":"docs/pages/sdk/unity/Advanced/clients.mdx#networkid","295":"docs/pages/sdk/unity/Advanced/clients.mdx#nonceat","296":"docs/pages/sdk/unity/Advanced/clients.mdx#sendrawtransaction","297":"docs/pages/sdk/unity/Advanced/clients.mdx#suggestgasprice","298":"docs/pages/sdk/unity/Advanced/clients.mdx#suggestgastipcap","299":"docs/pages/sdk/unity/Advanced/clients.mdx#transactionbyhash","300":"docs/pages/sdk/unity/Advanced/clients.mdx#transactioncount","301":"docs/pages/sdk/unity/Advanced/clients.mdx#waitfortransactionreceipt","302":"docs/pages/sdk/unity/Advanced/contracts.mdx#contracts","303":"docs/pages/sdk/unity/Advanced/contracts.mdx#calling-smart-contract-functions","304":"docs/pages/sdk/unity/Advanced/contracts.mdx#understanding-data-type-mappings","305":"docs/pages/sdk/unity/Advanced/contracts.mdx#querying-contracts","306":"docs/pages/sdk/unity/Advanced/contracts.mdx#deploying-contracts","307":"docs/pages/sdk/unity/Advanced/introduction.mdx#advanced---introduction","308":"docs/pages/sdk/unity/Advanced/introduction.mdx#important-components","309":"docs/pages/sdk/unity/Advanced/tokens.mdx#tokens","310":"docs/pages/sdk/unity/Advanced/tokens.mdx#bonus-ownable","311":"docs/pages/sdk/unity/Advanced/transfers.mdx#transfers","312":"docs/pages/sdk/unity/Advanced/wallets.mdx#wallets","313":"docs/pages/sdk/unity/Advanced/wallets.mdx#1-ethwallet","314":"docs/pages/sdk/unity/Advanced/wallets.mdx#2-waastowalletadapter","315":"docs/pages/sdk/unity/Advanced/wallets.mdx#methods","316":"docs/pages/sdk/unity/Advanced/wallets.mdx#getaddress","317":"docs/pages/sdk/unity/Advanced/wallets.mdx#sendtransaction","318":"docs/pages/sdk/unity/Advanced/wallets.mdx#sendtransactionandwaitforreceipt","319":"docs/pages/sdk/unity/Advanced/wallets.mdx#sendtransactionbatch","320":"docs/pages/sdk/unity/Advanced/wallets.mdx#sendtransactionbatchandwaitforreceipts","321":"docs/pages/sdk/unity/Advanced/wallets.mdx#signmessage","322":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#how-to-manage-item-metadata-in-sequence-builder","323":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#introduction","324":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-1-prepare-your-token-images-and-metadata","325":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-2-set-up-on-pinatacloud","326":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-3-upload-your-metadata-files","327":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-4-get-the-folder-url","328":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-5-set-up-on-sequence-builder","329":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-6-deploy-your-contract","330":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-7-move-to-contract-details","331":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-8-update-contract-attributes","332":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-9-set-the-base-metadata-uri","333":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-10-minting-time","334":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-11-finalize-and-admire","335":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-12-updating-metadata","336":"docs/pages/solutions/marketplaces/orderbook/quickstart.mdx#quickstart","337":"docs/pages/solutions/marketplaces/orderbook/quickstart.mdx#try-a-demo","338":"docs/pages/solutions/marketplaces/orderbook/quickstart.mdx#template","339":"docs/pages/solutions/marketplaces/orderbook/quickstart.mdx#example-api-call","340":"docs/pages/solutions/marketplaces/orderbook/quickstart.mdx#walkthrough","341":"docs/pages/solutions/payments/onramps/fiat-on-ramps.mdx#fiat-on-ramps","342":"docs/pages/solutions/technical-references/wallet-contracts/why.mdx#why-smart-contracts-wallets","343":"docs/pages/solutions/technical-references/wallet-contracts/why.mdx#externally-owned-accounts","344":"docs/pages/solutions/technical-references/wallet-contracts/why.mdx#pros","345":"docs/pages/solutions/technical-references/wallet-contracts/why.mdx#popular-examples","346":"docs/pages/solutions/technical-references/wallet-contracts/why.mdx#smart-contract-wallets","347":"docs/pages/solutions/technical-references/wallet-contracts/why.mdx#pros-1","348":"docs/pages/solutions/technical-references/wallet-contracts/why.mdx#examples","349":"docs/pages/solutions/wallets/embedded-wallet/architecture.mdx#overview","350":"docs/pages/solutions/wallets/embedded-wallet/architecture.mdx#embedded-wallets-architecture","351":"docs/pages/solutions/wallets/embedded-wallet/architecture.mdx#signer-1-sequence-auth","352":"docs/pages/solutions/wallets/embedded-wallet/architecture.mdx#signer-2-sequence-guard","353":"docs/pages/solutions/wallets/embedded-wallet/architecture.mdx#threat-model","354":"docs/pages/solutions/wallets/embedded-wallet/architecture.mdx#waas-api-service","355":"docs/pages/solutions/wallets/embedded-wallet/overview.mdx#sequence-embedded-wallet","356":"docs/pages/solutions/wallets/embedded-wallet/overview.mdx#try-a-demo","357":"docs/pages/solutions/wallets/embedded-wallet/quickstart.mdx#quickstart","358":"docs/pages/solutions/wallets/embedded-wallet/quickstart.mdx#getting-started-with-typescript-sdk","359":"docs/pages/solutions/wallets/embedded-wallet/quickstart.mdx#sdk-installation","360":"docs/pages/solutions/wallets/embedded-wallet/quickstart.mdx#project-setup","361":"docs/pages/solutions/wallets/embedded-wallet/quickstart.mdx#library-setup","362":"docs/pages/solutions/wallets/universal-wallet/fiat-on-ramps.mdx#fiat-on-ramps","363":"docs/pages/solutions/wallets/universal-wallet/key-management.mdx#key-management","364":"docs/pages/solutions/wallets/universal-wallet/key-management.mdx#social-login-wallets","365":"docs/pages/solutions/wallets/universal-wallet/key-management.mdx#session-keys","366":"docs/pages/solutions/wallets/universal-wallet/key-management.mdx#guard-key","367":"docs/pages/solutions/wallets/universal-wallet/key-management.mdx#torus-key","368":"docs/pages/solutions/wallets/universal-wallet/platforms.mdx#platforms","369":"docs/pages/solutions/wallets/universal-wallet/platforms.mdx#web-wallet","370":"docs/pages/solutions/wallets/universal-wallet/platforms.mdx#mobile-wallet","371":"docs/pages/solutions/wallets/universal-wallet/platforms.mdx#browser-extension-wallet","372":"docs/pages/solutions/wallets/universal-wallet/quickstart.mdx#quickstart","373":"docs/pages/solutions/wallets/universal-wallet/quickstart.mdx#try-a-demo","374":"docs/pages/solutions/wallets/universal-wallet/quickstart.mdx#template","375":"docs/pages/solutions/wallets/universal-wallet/quickstart.mdx#install","376":"docs/pages/solutions/wallets/universal-wallet/quickstart.mdx#cdn-distribution-as-native-js","377":"docs/pages/solutions/wallets/universal-wallet/sequence-kit.mdx#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","378":"docs/pages/solutions/wallets/universal-wallet/sequence-kit.mdx#key-features","379":"docs/pages/solutions/wallets/universal-wallet/sequence-kit.mdx#next-steps","380":"docs/pages/solutions/technical-references/internals/v1/contract-audits.mdx#contract-audits","381":"docs/pages/solutions/technical-references/internals/v1/contract-audits.mdx#quantstamp","382":"docs/pages/solutions/technical-references/internals/v1/contract-audits.mdx#consensys-diligence","383":"docs/pages/solutions/technical-references/internals/v1/contract-audits.mdx#zellic","384":"docs/pages/solutions/technical-references/internals/v1/guest-module.mdx#guestmodule-and-on-demand-deployment","385":"docs/pages/solutions/technical-references/internals/v1/main-module-upgradeable.mdx#mainmoduleupgradeable--configuration-migration","386":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#modules--wallet-update","387":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#wallet-implementation","388":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#_updateconfiguration","389":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#parameters","390":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#reading-current-implementation","391":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#wallet-configuration-validation","392":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#_isvalidimage","393":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#parameters-1","394":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#return-values","395":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#mainmoduleupgradeable","396":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#updateimagehash","397":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#parameters-2","398":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#first-configuration-update","399":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#delegatecall-false","400":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#revertonerror-true","401":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#to-wallet","402":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#value-ethersconstantszero","403":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#gaslimit-ethersconstantszero","404":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#subsequent-configuration-updates","405":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#retrieving-the-current-configuration","406":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#retrieving-the-wallet-configuration","407":"docs/pages/solutions/technical-references/internals/v1/nested-transaction-batching.mdx#nested-transaction-batching","408":"docs/pages/solutions/technical-references/internals/v1/signature-encoding.mdx#signature-encoding","409":"docs/pages/solutions/technical-references/internals/v1/signature-encoding.mdx#erc-191-ethereum-signed-data","410":"docs/pages/solutions/technical-references/internals/v1/signature-encoding.mdx#erc-712-structured-data-signatures","411":"docs/pages/solutions/technical-references/internals/v1/signature-encoding.mdx#verification","412":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#wallet-configuration","413":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#configuration-layout","414":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#signer-layout","415":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#example","416":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#the-valid-combinations-of-signers-are","417":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#configuration-hash---imagehash","418":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#compute-image-hash","419":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#initial-wallet-configuration","420":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#compute-wallet-address","421":"docs/pages/solutions/technical-references/internals/v1/wallet-context.mdx#wallet-context","422":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#wallet-configuration","423":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#top-level-properties","424":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#threshold","425":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#checkpoint","426":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#tree","427":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#signer","428":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#subdigest","429":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#subtree-nested-configuration","430":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#imagehash","431":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#initial-configuration","432":"docs/pages/solutions/wallets/embedded-wallet/examples/manage-sessions.mdx#session-management","433":"docs/pages/solutions/wallets/embedded-wallet/examples/manage-sessions.mdx#sign-in--sign-up","434":"docs/pages/solutions/wallets/embedded-wallet/examples/manage-sessions.mdx#email-sign-in--sign-up","435":"docs/pages/solutions/wallets/embedded-wallet/examples/manage-sessions.mdx#google--apple-auth","436":"docs/pages/solutions/wallets/embedded-wallet/examples/manage-sessions.mdx#list-sessions","437":"docs/pages/solutions/wallets/embedded-wallet/examples/manage-sessions.mdx#close-session","438":"docs/pages/solutions/wallets/embedded-wallet/examples/transaction-receipts.mdx#transaction-receipts","439":"docs/pages/solutions/wallets/embedded-wallet/examples/transaction-receipts.mdx#successful-transaction-response","440":"docs/pages/solutions/wallets/embedded-wallet/examples/transaction-receipts.mdx#failed-transaction-response","441":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#validation","442":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#email-login-one-time-code","443":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#social-login","444":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#validation-status","445":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#trigger-session-validation","446":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#onvalidationrequired-callback","447":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#listen-for-session-validations","448":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#automatic-session-validation","449":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#action-payloads","450":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#payload-structure","451":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#signature-type","452":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#open-session-payload","453":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#sign-message-payload","454":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#send-transaction-payload","455":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#raw-transaction","456":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#senderc20","457":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#senderc721","458":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#senderc1155","459":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#delayedencode","460":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#close-session-payload","461":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx#enclave-verification","462":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx#the-easy-way","463":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx#prerequisites","464":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx#find-out-the-pcr0","465":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx#build-the-enclave-file","466":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx#the-hard-way","467":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/intents.mdx#intents","468":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/intents.mdx#what-are-they","469":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/intents.mdx#signatures","470":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/intents.mdx#name-and-data","471":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/intents.mdx#timestamps","472":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#response-payloads","473":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#general-response-structure","474":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#types-of-responses","475":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#transaction-receipt-response","476":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#example","477":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#how-to-detect","478":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#failed-transaction-response","479":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#how-to-detect-1","480":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#signed-message-response","481":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#example-1","482":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#how-to-detect-2","483":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#session-opened-response","484":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#example-2","485":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#how-to-detect-3","486":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#validation-required-response","487":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#how-to-detect-4","488":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#note","489":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow.mdx#trust-contract-recovery-flow","490":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow.mdx#trust-contract-architecture","491":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow.mdx#unlock-state-monitoring","492":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow.mdx#disaster-recovery-flow","493":"docs/pages/solutions/wallets/universal-wallet/examples/auth-address.mdx#authenticate-users-with-message-signature","494":"docs/pages/solutions/wallets/universal-wallet/examples/auth-address.mdx#ask-for-the-wallet-address","495":"docs/pages/solutions/wallets/universal-wallet/examples/auth-address.mdx#authenticate-wallet","496":"docs/pages/solutions/wallets/universal-wallet/examples/auth-address.mdx#authenticate-wallet-server-side","497":"docs/pages/solutions/wallets/universal-wallet/examples/building-backends.mdx#building-backends-with-sequence","498":"docs/pages/solutions/wallets/universal-wallet/examples/building-backends.mdx#nodejs","499":"docs/pages/solutions/wallets/universal-wallet/examples/building-backends.mdx#go","500":"docs/pages/solutions/wallets/universal-wallet/examples/building-backends.mdx#ethkit","501":"docs/pages/solutions/wallets/universal-wallet/examples/building-backends.mdx#support-for-other-backend-languages","502":"docs/pages/solutions/wallets/universal-wallet/examples/send-batch-transactions.mdx#sending-a-batch-of-transactions","503":"docs/pages/solutions/wallets/universal-wallet/examples/send-erc1155.mdx#sending-erc-1155-collectible-tokens","504":"docs/pages/solutions/wallets/universal-wallet/examples/send-erc20.mdx#sending-erc-20-tokens","505":"docs/pages/solutions/wallets/universal-wallet/examples/send-erc721.mdx#sending-erc-721-nft-tokens","506":"docs/pages/solutions/wallets/universal-wallet/examples/send-transaction.mdx#sending-transactions","507":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#no-wallet-confirmation-signatures","508":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#session-keys","509":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#using-session-keys-with-sequence","510":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#1-initialize-sequence-wallet-and-connect","511":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#2-generate-a-session-key","512":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#3-sign-authorization-message","513":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#4-verify-authorization-signature","514":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#5-sign-message-with-session-key","515":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#6-verify-session-signature"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,58],"1":[2,1,48],"2":[6,2,100],"3":[6,2,147],"4":[3,2,22],"5":[2,1,46],"6":[4,2,76],"7":[5,1,1],"8":[7,1,1],"9":[8,1,1],"10":[4,1,1],"11":[5,1,73],"12":[7,5,12],"13":[9,5,82],"14":[2,1,56],"15":[1,2,105],"16":[4,2,69],"17":[2,2,63],"18":[4,2,15],"19":[6,1,144],"20":[1,1,191],"21":[4,1,11],"22":[2,1,53],"23":[2,1,46],"24":[2,1,37],"25":[10,2,115],"26":[4,2,14],"27":[1,1,35],"28":[4,2,41],"29":[2,2,28],"30":[4,2,15],"31":[6,1,81],"32":[1,6,176],"33":[1,6,35],"34":[2,6,45],"35":[2,6,49],"36":[3,6,31],"37":[2,1,44],"38":[9,2,114],"39":[3,2,142],"40":[3,5,19],"41":[3,2,57],"42":[2,2,1],"43":[1,3,164],"44":[1,3,144],"45":[3,3,82],"46":[1,3,55],"47":[1,1,79],"48":[4,2,9],"49":[2,2,17],"50":[2,1,124],"51":[6,2,61],"52":[4,2,144],"53":[1,1,1],"54":[3,1,12],"55":[1,1,12],"56":[2,1,1],"57":[2,3,29],"58":[2,3,41],"59":[2,3,62],"60":[1,1,33],"61":[1,1,36],"62":[1,1,11],"63":[1,1,46],"64":[4,1,30],"65":[4,1,12],"66":[5,5,39],"67":[5,5,22],"68":[2,1,38],"69":[2,1,1],"70":[1,2,40],"71":[1,2,22],"72":[6,2,12],"73":[2,8,12],"74":[2,8,12],"75":[2,8,14],"76":[2,8,48],"77":[2,8,48],"78":[1,2,39],"79":[5,1,30],"80":[4,5,89],"81":[3,1,85],"82":[4,1,34],"83":[5,1,23],"84":[4,5,48],"85":[5,1,83],"86":[6,1,73],"87":[4,1,46],"88":[5,1,26],"89":[2,1,18],"90":[2,1,40],"91":[2,2,79],"92":[2,1,33],"93":[1,1,112],"94":[4,1,46],"95":[4,1,70],"96":[1,5,41],"97":[1,5,43],"98":[1,5,5],"99":[1,5,155],"100":[1,5,3],"101":[3,1,91],"102":[2,1,139],"103":[1,1,1],"104":[3,1,95],"105":[1,4,145],"106":[1,1,137],"107":[1,1,67],"108":[1,1,48],"109":[3,1,54],"110":[1,1,102],"111":[2,1,76],"112":[2,1,93],"113":[3,2,12],"114":[2,2,25],"115":[3,3,118],"116":[5,3,46],"117":[3,1,104],"118":[1,3,103],"119":[1,3,87],"120":[3,4,94],"121":[1,3,53],"122":[3,4,92],"123":[1,3,76],"124":[3,4,93],"125":[1,3,190],"126":[2,3,119],"127":[2,1,1],"128":[2,3,135],"129":[3,3,51],"130":[1,3,72],"131":[3,3,83],"132":[1,1,1],"133":[3,2,160],"134":[3,2,67],"135":[6,2,50],"136":[6,2,2],"137":[1,1,1],"138":[1,1,46],"139":[1,1,47],"140":[1,1,70],"141":[1,1,11],"142":[1,1,19],"143":[3,2,55],"144":[1,2,13],"145":[4,2,140],"146":[1,1,113],"147":[3,1,42],"148":[3,4,47],"149":[1,3,53],"150":[2,5,17],"151":[2,5,17],"152":[2,5,15],"153":[4,1,26],"154":[2,4,9],"155":[2,6,65],"156":[2,6,56],"157":[2,4,45],"158":[2,4,69],"159":[5,4,37],"160":[2,4,25],"161":[2,4,27],"162":[2,1,26],"163":[8,3,100],"164":[2,3,50],"165":[3,1,143],"166":[2,4,43],"167":[2,1,1],"168":[13,3,186],"169":[11,3,142],"170":[8,1,1],"171":[16,8,101],"172":[3,1,1],"173":[8,3,160],"174":[3,1,1],"175":[13,4,130],"176":[4,1,1],"177":[14,5,158],"178":[1,1,1],"179":[6,1,28],"180":[3,7,140],"181":[1,1,36],"182":[1,2,65],"183":[1,2,102],"184":[3,1,125],"185":[3,1,65],"186":[2,1,92],"187":[1,1,1],"188":[14,2,75],"189":[21,2,88],"190":[21,2,159],"191":[2,1,105],"192":[2,1,38],"193":[1,2,17],"194":[1,2,38],"195":[1,2,1],"196":[1,3,18],"197":[3,3,28],"198":[3,3,27],"199":[2,2,54],"200":[11,2,37],"201":[1,2,23],"202":[9,1,40],"203":[2,9,79],"204":[2,1,33],"205":[2,1,34],"206":[1,2,32],"207":[1,2,38],"208":[1,2,1],"209":[1,3,18],"210":[4,3,29],"211":[4,3,27],"212":[11,2,37],"213":[2,2,51],"214":[1,2,34],"215":[3,1,39],"216":[1,3,17],"217":[1,3,21],"218":[1,3,1],"219":[3,4,12],"220":[3,4,20],"221":[1,3,14],"222":[4,1,26],"223":[1,4,16],"224":[1,4,1],"225":[1,5,31],"226":[2,5,33],"227":[1,4,1],"228":[1,5,15],"229":[3,5,16],"230":[1,4,11],"231":[2,1,33],"232":[1,2,23],"233":[1,2,18],"234":[5,1,1],"235":[5,5,17],"236":[2,5,121],"237":[4,5,139],"238":[4,1,1],"239":[1,5,22],"240":[1,5,33],"241":[1,5,36],"242":[5,5,72],"243":[2,1,145],"244":[5,2,205],"245":[5,2,26],"246":[1,6,22],"247":[1,6,8],"248":[1,6,23],"249":[1,6,20],"250":[1,6,19],"251":[1,6,23],"252":[1,6,17],"253":[1,6,20],"254":[1,6,26],"255":[2,6,21],"256":[2,6,38],"257":[2,6,36],"258":[2,6,29],"259":[2,6,28],"260":[2,6,27],"261":[2,6,31],"262":[2,6,27],"263":[2,6,40],"264":[8,2,25],"265":[11,2,5],"266":[3,2,106],"267":[1,1,93],"268":[5,2,32],"269":[5,1,82],"270":[5,1,93],"271":[4,1,72],"272":[5,1,85],"273":[2,1,42],"274":[4,1,28],"275":[2,1,95],"276":[5,1,1],"277":[6,6,17],"278":[5,6,33],"279":[4,6,28],"280":[4,6,35],"281":[6,6,25],"282":[4,6,49],"283":[1,1,64],"284":[1,1,50],"285":[1,2,73],"286":[1,2,31],"287":[1,2,17],"288":[1,2,18],"289":[1,2,39],"290":[1,2,19],"291":[1,2,37],"292":[1,2,18],"293":[1,2,35],"294":[1,2,20],"295":[1,2,38],"296":[1,2,19],"297":[1,2,14],"298":[1,2,17],"299":[1,2,14],"300":[1,2,20],"301":[1,2,20],"302":[1,1,79],"303":[4,1,107],"304":[4,1,64],"305":[2,1,69],"306":[2,1,24],"307":[2,1,90],"308":[2,2,24],"309":[1,1,107],"310":[2,1,47],"311":[1,1,51],"312":[1,1,21],"313":[2,1,29],"314":[2,1,41],"315":[1,1,15],"316":[1,2,9],"317":[1,2,17],"318":[1,2,20],"319":[1,2,62],"320":[1,2,64],"321":[1,2,48],"322":[8,1,1],"323":[1,8,25],"324":[8,8,61],"325":[7,8,54],"326":[6,8,31],"327":[6,8,25],"328":[7,8,25],"329":[5,8,20],"330":[6,8,17],"331":[5,8,58],"332":[7,8,66],"333":[4,8,65],"334":[5,8,28],"335":[4,8,62],"336":[1,1,1],"337":[3,1,12],"338":[1,1,19],"339":[3,1,62],"340":[1,1,53],"341":[3,1,63],"342":[5,1,35],"343":[3,5,20],"344":[1,7,11],"345":[2,7,5],"346":[3,5,46],"347":[1,6,23],"348":[1,5,5],"349":[1,1,1],"350":[3,1,38],"351":[4,1,109],"352":[4,1,116],"353":[2,1,86],"354":[3,1,135],"355":[3,1,107],"356":[3,3,21],"357":[1,1,125],"358":[5,1,1],"359":[2,6,11],"360":[2,6,30],"361":[2,6,61],"362":[3,1,65],"363":[2,1,69],"364":[3,2,76],"365":[2,5,32],"366":[2,5,45],"367":[2,5,102],"368":[1,1,1],"369":[2,1,27],"370":[2,1,48],"371":[3,1,5],"372":[1,1,1],"373":[3,1,11],"374":[1,1,9],"375":[1,1,68],"376":[5,3,32],"377":[9,1,40],"378":[2,9,79],"379":[2,1,33],"380":[2,1,30],"381":[1,2,7],"382":[2,2,3],"383":[1,2,3],"384":[5,1,1],"385":[4,1,1],"386":[4,1,40],"387":[2,4,25],"388":[2,6,44],"389":[2,7,42],"390":[3,6,53],"391":[3,4,58],"392":[2,7,42],"393":[2,8,9],"394":[3,8,12],"395":[1,4,18],"396":[1,5,20],"397":[2,6,88],"398":[3,4,82],"399":[2,7,31],"400":[2,7,32],"401":[2,7,19],"402":[4,7,20],"403":[4,7,73],"404":[3,6,37],"405":[4,6,35],"406":[4,9,49],"407":[3,1,1],"408":[2,1,17],"409":[5,2,72],"410":[5,2,96],"411":[1,2,87],"412":[2,1,18],"413":[2,2,26],"414":[2,3,26],"415":[1,4,21],"416":[7,4,31],"417":[3,3,51],"418":[3,5,28],"419":[3,2,23],"420":[3,7,65],"421":[2,1,20],"422":[2,1,35],"423":[3,2,37],"424":[1,5,34],"425":[1,5,41],"426":[1,5,37],"427":[1,6,41],"428":[1,6,49],"429":[4,6,127],"430":[1,2,69],"431":[2,2,68],"432":[2,1,40],"433":[3,2,101],"434":[4,5,100],"435":[3,5,172],"436":[2,2,94],"437":[2,2,51],"438":[2,1,21],"439":[3,2,122],"440":[3,2,129],"441":[1,1,17],"442":[6,2,29],"443":[2,2,68],"444":[2,1,34],"445":[3,2,49],"446":[2,5,60],"447":[4,2,35],"448":[3,1,51],"449":[2,1,61],"450":[2,2,79],"451":[2,5,46],"452":[3,4,98],"453":[3,4,45],"454":[3,4,35],"455":[2,7,31],"456":[1,7,19],"457":[1,7,34],"458":[1,7,34],"459":[1,7,165],"460":[3,4,46],"461":[2,1,36],"462":[3,2,1],"463":[1,5,32],"464":[4,5,46],"465":[4,5,85],"466":[3,2,116],"467":[1,1,48],"468":[4,1,65],"469":[1,1,72],"470":[3,1,25],"471":[1,1,28],"472":[2,1,27],"473":[3,2,22],"474":[3,2,1],"475":[3,5,97],"476":[1,7,89],"477":[3,7,23],"478":[3,5,91],"479":[3,7,23],"480":[3,5,19],"481":[1,7,10],"482":[3,7,23],"483":[3,5,24],"484":[1,7,9],"485":[3,7,23],"486":[3,5,25],"487":[3,7,21],"488":[1,5,45],"489":[4,1,28],"490":[3,4,92],"491":[3,4,54],"492":[3,4,65],"493":[5,1,1],"494":[5,5,17],"495":[2,5,121],"496":[4,5,139],"497":[4,1,1],"498":[1,5,22],"499":[1,5,33],"500":[1,5,36],"501":[5,5,72],"502":[5,1,82],"503":[5,1,93],"504":[4,1,72],"505":[5,1,85],"506":[2,1,42],"507":[4,1,28],"508":[2,1,95],"509":[5,1,1],"510":[6,6,17],"511":[5,6,33],"512":[4,6,28],"513":[4,6,35],"514":[6,6,25],"515":[4,6,49]},"averageFieldLength":[2.9166666666666674,3.085271317829457,48.81395348837208],"storedFields":{"0":{"href":"/support#support","html":"\n

Sequence has a front line Support Team in multiple timezones to tackle problems that arise with the Stack, as well as answer any question for new projects in order to integrate web3 experiences in games and applications.

\n

If one of the members of the team does not know the answer, we'll further investigate (with backup support from the Sequence dev team) to get to the bottom of your troubles.

\n

Start talking to support today

","isPage":true,"text":"\nSequence has a front line Support Team in multiple timezones to tackle problems that arise with the Stack, as well as answer any question for new projects in order to integrate web3 experiences in games and applications.\nIf one of the members of the team does not know the answer, we'll further investigate (with backup support from the Sequence dev team) to get to the bottom of your troubles.\nStart talking to support today","title":"Support","titles":[]},"1":{"href":"/api/metadata#metadata-api","html":"\n\n

The Sequence Metadata API service offers a simple and fast API to query, manage, and update collections, token & NFT metadata for Ethereum-compatible chains.

\n\n","isPage":true,"text":"\nMetadata API documentation and endpoints\nThe Sequence Metadata API service offers a simple and fast API to query, manage, and update collections, token & NFT metadata for Ethereum-compatible chains.\nOur Metadata service is managed through Sequence Builder and requires a Service Account & Token in order to call the corresponding endpoints. Please follow the [section](/api/metadata#Obtaining a Service Account & Token) below prior to calling the endpoints\n","title":"Metadata API","titles":[]},"2":{"href":"/api/metadata#obtaining-a-service-account--token","html":"\n

Since the Metadata API requires write access in order to update on-chain state, you will need to first obtain a Service Account & Token to call this from your backend. Importantly, this is a secret key and should not be exposed publicly.

\n
    \n
  1. Create a New Project using our Builder. Navigate to Settings > API Keys > Add Service Account.
  2. \n
  3. In the modal that pops up, click the dropdown for Permission and change to Write. After completed click Add.
  4. \n
  5. On the next screen, you will be given your Secret API Token. Copy the key and store it securely as it is not possible to see it again. Once this is done, click Confirm and you are all set to utilize the API.
  6. \n
\n

Keep in mind, in contrast to our Public API Access key - this Secret API Token should be stored securely and not be used publicly. You will pass this token as a normal JWT in the Request Headers as X-Access-Key

\n","isPage":false,"text":"\nSince the Metadata API requires write access in order to update on-chain state, you will need to first obtain a Service Account & Token to call this from your backend. Importantly, this is a secret key and should not be exposed publicly.\n\nCreate a New Project using our Builder. Navigate to Settings > API Keys > Add Service Account.\nIn the modal that pops up, click the dropdown for Permission and change to Write. After completed click Add.\nOn the next screen, you will be given your Secret API Token. Copy the key and store it securely as it is not possible to see it again. Once this is done, click Confirm and you are all set to utilize the API.\n\nKeep in mind, in contrast to our Public API Access key - this Secret API Token should be stored securely and not be used publicly. You will pass this token as a normal JWT in the Request Headers as X-Access-Key\n","title":"Obtaining a Service Account & Token","titles":["Metadata API"]},"3":{"href":"/api/metadata#creating-collections-tokens-and-managing-metadata","html":"\n

The below steps walk through an end to end example utilizing our Metadata API in order to deploy an NFT collection, create tokens within that collection, and deploy asset metadata to such as an image to that token.

\n
    \n
  1. \n

    Call CreateCollection endpoint - ensure you pass in the Secret Service Token created in the prior section.

    \n
  2. \n
  3. \n

    CreateToken - use returned collectionId from previous request

    \n
  4. \n
  5. \n

    CreateAsset - use collectionId and your tokenId

    \n\n
  6. \n
  7. \n

    Upload file with PUT method to this endpoint PUT {metadata-server}/projects/{projectId}/collections/{collectionId}/tokens/{tokenId}/upload/{assetIdOrAssetType}- use assetId that is returned in step 3 OR, you can pass assetType, such as "image"

    \n
  8. \n
\n\n
    \n
  1. \n

    Asset is now privately accessible with JWT token at GET {metadata-server}/projects/{projectID}/collections/{collectionID}/tokens/{tokenID}/asset/{assetType}

    \n\n
  2. \n
  3. \n

    PublishCollection -- this sets the collection to be accessible by the public

    \n
  4. \n
  5. \n

    GetCollection -- will return both baseURIs for contract and token level metadata.

    \n
  6. \n
\n\n
    \n
  1. Finally, to use the metadata in your contract, simply update your contract's metadata base URIs to the values above, and everything will simply work.
  2. \n
\n

Below is an architecture demonstrating the steps above of how an NFT collection (ERC721 or ERC1155) is created and managed.\n\"Sequence

\n","isPage":false,"text":"\nThe below steps walk through an end to end example utilizing our Metadata API in order to deploy an NFT collection, create tokens within that collection, and deploy asset metadata to such as an image to that token.\n\n\nCall CreateCollection endpoint - ensure you pass in the Secret Service Token created in the prior section.\n\n\nCreateToken - use returned collectionId from previous request\n\n\nCreateAsset - use collectionId and your tokenId\n\nset metadataField (assetType) to one of the following\n\nimage\nanimation_url\naudio\nvideo\n\n\n\n\n\nUpload file with PUT method to this endpoint PUT {metadata-server}/projects/{projectId}/collections/{collectionId}/tokens/{tokenId}/upload/{assetIdOrAssetType}- use assetId that is returned in step 3 OR, you can pass assetType, such as "image"\n\n\n\nFor example you can upload to https://metadata.sequence.app/projects/486/collections/1/tokens/1/upload/image which will find the asset of the type "image" for the token, and will upload there.\n\nYou can also pass in the assetId if you prefer, i.e., PUT https://metadata.sequence.app/projects/486/collections/1/assets/1/upload\n\n\nAsset types include: image, audio, video, animation_url\n\n\n\nAsset is now privately accessible with JWT token at GET {metadata-server}/projects/{projectID}/collections/{collectionID}/tokens/{tokenID}/asset/{assetType}\n\nfor example: https://metadata.sequence.app/projects/486/collections/1/tokens/1/asset/image\n\n\n\nPublishCollection -- this sets the collection to be accessible by the public\n\n\nGetCollection -- will return both baseURIs for contract and token level metadata.\n\n\n\nCollection-level metadata (aka contract-level) metadata: https://metadata.sequence.app/projects/486/collections/1 or https://metadata.sequence.app/projects/486/collections/1.json\nToken-level metadata: https://metadata.sequence.app/projects/486/collections/1/tokens/{tokenId}\n\nie. https://metadata.sequence.app/projects/486/collections/1/tokens/1 or https://metadata.sequence.app/projects/486/collections/1/tokens/1.json\n\n\n\n\nFinally, to use the metadata in your contract, simply update your contract's metadata base URIs to the values above, and everything will simply work.\n\nBelow is an architecture demonstrating the steps above of how an NFT collection (ERC721 or ERC1155) is created and managed.\n\n","title":"Creating Collections, Tokens, and Managing Metadata","titles":["Metadata API"]},"4":{"href":"/api/metadata#pricing--usage","html":"\n

The Sequence Metadata is available for free with moderate request limits, but if your project requires higher limits, please contact the Sequence team.

","isPage":false,"text":"\nThe Sequence Metadata is available for free with moderate request limits, but if your project requires higher limits, please contact the Sequence team.","title":"Pricing & Usage","titles":["Metadata API"]},"5":{"href":"/api/node-gateway#node-gateway","html":"\n

Sequence Node gateway infrastructure enables you to have fail-over resilient RPC endpoints that can scale with your application.

\n

By using our infrastructure, you save money for not having to deploy your own stack, and benefits from the feature of aggregating multiple public RPC providers into a single endpoint for use.

\n","isPage":true,"text":"\nSequence Node gateway infrastructure enables you to have fail-over resilient RPC endpoints that can scale with your application.\nBy using our infrastructure, you save money for not having to deploy your own stack, and benefits from the feature of aggregating multiple public RPC providers into a single endpoint for use.\n","title":"Node Gateway","titles":[]},"6":{"href":"/api/node-gateway#give-it-a-try","html":"\n

Install ethers with pnpm install ethers or yarn add ethers

\n

Ensure to choose a network handle from our network options

\n

And acquire a Builder access key to authenticate your connection and append to the endpoint

\n
// Import the ethers library\nimport { ethers } from "ethers";\n \n// Function to create a provider and fetch the latest block\nasync function getLatestBlock() {\n  // Replace the following URL with your actual RPC endpoint\n  const rpcUrl =\n    "https://nodes.sequence.app/<chain_handle>/<project_access_key>";\n \n  // Create a provider using the RPC URL\n  const provider = new ethers.providers.JsonRpcProvider(rpcUrl);\n \n  // Fetch the latest block\n  const latestBlock = await provider.getBlock("latest");\n \n  console.log("Latest Block:", latestBlock);\n}\n \n// Call the function to get the latest block\ngetLatestBlock().catch(console.error);
","isPage":false,"text":"\nInstall ethers with pnpm install ethers or yarn add ethers\nEnsure to choose a network handle from our network options\nAnd acquire a Builder access key to authenticate your connection and append to the endpoint\n// Import the ethers library\nimport { ethers } from "ethers";\n \n// Function to create a provider and fetch the latest block\nasync function getLatestBlock() {\n // Replace the following URL with your actual RPC endpoint\n const rpcUrl =\n "https://nodes.sequence.app/<chain_handle>/<project_access_key>";\n \n // Create a provider using the RPC URL\n const provider = new ethers.providers.JsonRpcProvider(rpcUrl);\n \n // Fetch the latest block\n const latestBlock = await provider.getBlock("latest");\n \n console.log("Latest Block:", latestBlock);\n}\n \n// Call the function to get the latest block\ngetLatestBlock().catch(console.error);","title":"Give it a try","titles":["Node Gateway"]},"7":{"href":"/solutions/minter#mint-tokens-using-builder-manually","html":"\n","isPage":true,"text":"\n","title":"Mint tokens using Builder manually","titles":[null]},"8":{"href":"/solutions/minter#deploy-a-serverless-minter-on-cloudflare-workers","html":"\n","isPage":false,"text":"\n","title":"Deploy a serverless minter on Cloudflare Workers","titles":[null]},"9":{"href":"/solutions/nft-checkout#integrate-nft-checkout-on-web-coming-soon","html":"\n","isPage":true,"text":"\n","title":"Integrate NFT Checkout on web (coming soon)","titles":[null]},"10":{"href":"/solutions/onramps#integrate-onramp-on-web","html":"\n","isPage":true,"text":"\n","title":"Integrate onramp on web","titles":[null]},"11":{"href":"/support/restricted-regions#sequence-list-of-restricted-regions","html":"\n

In order to comply with regulations and policies mandated by Canada, USA and other global jurisdictions, Sequence will not be fully available in the following regions. Please be aware that external third-party money service providers that can help you on-ramp with crypto, at their own discretion, may deny funding to certain geographical locations

\n

At this time, Limited Access regions only refer to some states within the United States of America. Sequence can be accessed from these regions, however, the Skyweaver Market feature will not be available in the following US states:

\n","isPage":true,"text":"\nIn order to comply with regulations and policies mandated by Canada, USA and other global jurisdictions, Sequence will not be fully available in the following regions. Please be aware that external third-party money service providers that can help you on-ramp with crypto, at their own discretion, may deny funding to certain geographical locations\nAt this time, Limited Access regions only refer to some states within the United States of America. Sequence can be accessed from these regions, however, the Skyweaver Market feature will not be available in the following US states:\n","title":"Sequence list of Restricted Regions","titles":[]},"12":{"href":"/support/restricted-regions#us-states-with-limited-access-to-sequence","html":"\n\n","isPage":false,"text":"\n\nAlaska\nConnecticut\nHawaii\nLouisiana\nNebraska\nNew York\nRhode Island\nWashington State\n\n","title":"US states with limited access to Sequence","titles":["Sequence list of Restricted Regions"]},"13":{"href":"/support/restricted-regions#sequence-cannot-be-accessed-from-the-following-regions","html":"\n\n

Please note that this list is subject to change as regulations & policy decisions in the affected jurisdictions evolve. We will continue to look for opportunities to bring Sequence to as many people as possible across the globe. Please refer to our Terms of Service for more information.

","isPage":false,"text":"\n\nAfghanistan\nAlgeria\nBangladesh\nBelarus\nBurma (Myanmar)\nCentral African Republic\nChina\nCuba\nDemocratic Republic of Congo\nEgypt\nEthiopia\nHaiti\nIran\nIraq\nLebanon\nLibya\nMacao\nMali\nMoldova\nMorocco\nNepal\nNicaragua\nNorth Korea\nQatar\nRussian Federation\nSomalia\nSouth Sudan\nSri Lanka\nSudan\nSyria\nTunisia\nUkraine\nVenezuela\nYemen\nZimbabwe\n\nPlease note that this list is subject to change as regulations & policy decisions in the affected jurisdictions evolve. We will continue to look for opportunities to bring Sequence to as many people as possible across the globe. Please refer to our Terms of Service for more information.","title":"Sequence cannot be accessed from the following regions:","titles":["Sequence list of Restricted Regions"]},"14":{"href":"/api/indexer/installation#indexer-installation","html":"\n\n

Sequence Indexer is a simple API to query any blockchain token and NFT data. Below are instructions\non how to integrate the Sequence Indexer API into your Webapps, Games, and backends. In case you missed\nit, please also see the Indexer Overview.

\n","isPage":true,"text":"\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\nSequence Indexer is a simple API to query any blockchain token and NFT data. Below are instructions\non how to integrate the Sequence Indexer API into your Webapps, Games, and backends. In case you missed\nit, please also see the Indexer Overview.\n","title":"Indexer Installation","titles":[]},"15":{"href":"/api/indexer/installation#installation","html":"\n

The Sequence Indexer is built as a HTTP API with RPC endpoints that you may call directly\nfrom your Webapp, Game or server backend. Below you'll find information on the RPC endpoint\nschema with sample curl commands, along with examples in both Javascript/Typescript and Go.

\n

We provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Indexer with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Indexer API client as well.

\n\n
\n","isPage":false,"text":"\nThe Sequence Indexer is built as a HTTP API with RPC endpoints that you may call directly\nfrom your Webapp, Game or server backend. Below you'll find information on the RPC endpoint\nschema with sample curl commands, along with examples in both Javascript/Typescript and Go.\nWe provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Indexer with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Indexer API client as well.\nSequence Indexer offers the same API across a variety of EVM networks. Make sure to check the Indexer endpoints\nand use the corresponding host for your dapp/game. For example, on Ethereum mainnet the Sequence Indexer endpoint is\nhttps://mainnet-indexer.sequence.app and Polygon is https://polygon-indexer.sequence.app.🌄 View the full list of supported networks and Indexer endpoints here\n\n","title":"Installation","titles":["Indexer Installation"]},"16":{"href":"/api/indexer/installation#web--nodejs-installation","html":"\n
npm install 0xsequence ethers
\n

or

\n
pnpm install 0xsequence ethers
\n

or

\n
yarn add 0xsequence ethers
\n\n
import { SequenceIndexer } from '@0xsequence/indexer'\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nconst indexer = new SequenceIndexer('https://mainnet-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// see examples below for the kinds of queries you can make\nconst tokenBalances = await indexer.getTokenBalances(...)
\n

NOTE: if you're using @0xsequence/indexer from node.js, we recommend using node v18.x or newer.

\n
\n","isPage":false,"text":"\nnpm install 0xsequence ethers\nor\npnpm install 0xsequence ethers\nor\nyarn add 0xsequence ethers\nThis code requires an API Access Key from Sequence Builder.\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nconst indexer = new SequenceIndexer('https://mainnet-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// see examples below for the kinds of queries you can make\nconst tokenBalances = await indexer.getTokenBalances(...)\nNOTE: if you're using @0xsequence/indexer from node.js, we recommend using node v18.x or newer.\n\n","title":"Web / node.js Installation","titles":["Indexer Installation","Installation"]},"17":{"href":"/api/indexer/installation#go-installation","html":"\n
go get -u github.com/0xsequence/go-sequence@latest
\n

then in your app,

\n
import (\n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n// see examples below for the kinds of queries you can make\naccountAddress := "ACCOUNT_ADDRESS"\nincludeMetadata := true\nmetadataOptions := indexer.MetadataOptions{\n\tVerifiedOnly: true,\n}\n \n_, tokenBalances, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, nil, &includeMetadata, &metadataOptions, nil, nil)
\n
\n","isPage":false,"text":"\ngo get -u github.com/0xsequence/go-sequence@latest\nthen in your app,\nimport (\n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n// see examples below for the kinds of queries you can make\naccountAddress := "ACCOUNT_ADDRESS"\nincludeMetadata := true\nmetadataOptions := indexer.MetadataOptions{\n\tVerifiedOnly: true,\n}\n \n_, tokenBalances, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, nil, &includeMetadata, &metadataOptions, nil, nil)\n\n","title":"Go Installation","titles":["Indexer Installation","Installation"]},"18":{"href":"/api/indexer/installation#unity-or-unreal-installation","html":"\n

The Sequence Indexer is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.

\n
","isPage":false,"text":"\nThe Sequence Indexer is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.\n","title":"Unity or Unreal Installation","titles":["Indexer Installation","Installation"]},"19":{"href":"/api/indexer/metadata-tips#metadata-tips--notes-on-spam","html":"\n

The Sequence Indexer and Sequence Metadata services will pick up everything and anything\nthat is published on a blockchain. Our services are designed to provide data in real-time\nas blocks are mined, and adhere to all popular ERC20, ERC721 and ERC1155 metadata\nstandards so things just work.

\n

This is very helpful for your applications to be able to have access to the complete set of data\non-chain, but it also means it will include spam tokens when querying with default settings.

\n

To combat spam, we introduced metadataOptions arguments which can be passed to Indexer RPC\ncalls to control the results returned.

\n

The Sequence Metadata service keeps track of contracts which are "verified" by checking popular\nsources like Coingecko, OpenSea, Sequence Builder (https://sequence.build) and the Sequence Token\nDirectory (https://github.com/0xsequence/token-directory). By calling the Indexer RPC methods with\n"metadataOptions": { "verifiedOnly": true }, any contract address which has not been verified, will\nbe omitted from the results. We recommend using this option all the time, but, the downside is\nif your project's contracts are unverified, then they will also be omitted from the results. To help\nwith this, your options are to get verified with one of the sources above, or in your RPC calls to pass\n"metadataOptions": { "verifiedOnly": true, "includeContracts": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x8bb759bb68995343ff1e9d57ac85ff5c5fb79334"] }\nas an example.

","isPage":true,"text":"\nThe Sequence Indexer and Sequence Metadata services will pick up everything and anything\nthat is published on a blockchain. Our services are designed to provide data in real-time\nas blocks are mined, and adhere to all popular ERC20, ERC721 and ERC1155 metadata\nstandards so things just work.\nThis is very helpful for your applications to be able to have access to the complete set of data\non-chain, but it also means it will include spam tokens when querying with default settings.\nTo combat spam, we introduced metadataOptions arguments which can be passed to Indexer RPC\ncalls to control the results returned.\nThe Sequence Metadata service keeps track of contracts which are "verified" by checking popular\nsources like Coingecko, OpenSea, Sequence Builder (https://sequence.build) and the Sequence Token\nDirectory (https://github.com/0xsequence/token-directory). By calling the Indexer RPC methods with\n"metadataOptions": { "verifiedOnly": true }, any contract address which has not been verified, will\nbe omitted from the results. We recommend using this option all the time, but, the downside is\nif your project's contracts are unverified, then they will also be omitted from the results. To help\nwith this, your options are to get verified with one of the sources above, or in your RPC calls to pass\n"metadataOptions": { "verifiedOnly": true, "includeContracts": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x8bb759bb68995343ff1e9d57ac85ff5c5fb79334"] }\nas an example.","title":"Metadata Tips & Notes on Spam","titles":[]},"20":{"href":"/api/indexer/overview#indexer","html":"\n\n

The Sequence Indexer is a modular web3 service that makes it easy to query blockchain token and NFT data from Ethereum-compatible networks. The Indexer automatically indexes every ERC20, ERC721 and ERC1155 token from Ethereum-compatible chains.

\n

The Sequence Indexer is a powerful tool that can be used to build wallets, games, and dapps that\nneed to query on-chain data. It is designed to be fast, reliable, and easy to use. It leverages\nthe Sequence Node Gateway which monitors nodes health, intelligently routes\nrequests to the available nodes and caches the most recent request responses. This means that Node\nproviders going down are no longer a problem, as the Node Gateway will automatically route to a\nhealthy provider making sure that Indexer always stays at the top of the chain with no downtime.

\n

The other benefit of using the Indexer is that it is using built in-house, next-generation, LSM-tree\nbased databases to store the data. It makes it super fast to query and index data. The data is\navailable in real-time with low latency. You can query it using a simple REST API or one of our SDKs.

\n

The Indexer API allows you to query all token balances, history and other information for\nall Ethereum compatible chains. In order to make it one go to place for all your token data needs,\nwe have included Sequence Metadata support for all tokens. This means that\nyou can easily render tokens in your apps, games, or wallets without the need to fetch metadata from\na separate API.

\n

In fact, the Sequence Wallet uses the Indexer behind the scenes so it can seamlessly\nrender all token information in any wallet. But of course, the Indexer is a modular piece\nof infrastructure, and you may use it directly from your dapp, game, or even from\na server.

\nFeatures:\n\n","isPage":true,"text":"\nIndexer API documentation and testing\nThe Sequence Indexer is a modular web3 service that makes it easy to query blockchain token and NFT data from Ethereum-compatible networks. The Indexer automatically indexes every ERC20, ERC721 and ERC1155 token from Ethereum-compatible chains.\nThe Sequence Indexer is a powerful tool that can be used to build wallets, games, and dapps that\nneed to query on-chain data. It is designed to be fast, reliable, and easy to use. It leverages\nthe Sequence Node Gateway which monitors nodes health, intelligently routes\nrequests to the available nodes and caches the most recent request responses. This means that Node\nproviders going down are no longer a problem, as the Node Gateway will automatically route to a\nhealthy provider making sure that Indexer always stays at the top of the chain with no downtime.\nThe other benefit of using the Indexer is that it is using built in-house, next-generation, LSM-tree\nbased databases to store the data. It makes it super fast to query and index data. The data is\navailable in real-time with low latency. You can query it using a simple REST API or one of our SDKs.\nThe Indexer API allows you to query all token balances, history and other information for\nall Ethereum compatible chains. In order to make it one go to place for all your token data needs,\nwe have included Sequence Metadata support for all tokens. This means that\nyou can easily render tokens in your apps, games, or wallets without the need to fetch metadata from\na separate API.\nIn fact, the Sequence Wallet uses the Indexer behind the scenes so it can seamlessly\nrender all token information in any wallet. But of course, the Indexer is a modular piece\nof infrastructure, and you may use it directly from your dapp, game, or even from\na server.\nFeatures:\n\nSuper-fast API to query all token balances, history, metadata and NFTs with multi-chain support\nReal-time indexing of ERC20, ERC721 and ERC1155 transactions across EVM-compatible chains\nAutomatically detects all tokens on the chain, without the need for a contract registry\nResilient to node failures and chain re-organizations\nEasily listen for specific events and transactions on-chain accurately with a simple API\nBuilt-in token / nft metadata support to easily render tokens in your apps / games\nHigh uptime and availability\n\n","title":"Indexer","titles":[]},"21":{"href":"/api/indexer/overview#supported-networks--endpoints","html":"\n

You can see the full list of supported networks here.

\n","isPage":false,"text":"\nYou can see the full list of supported networks here.\n","title":"Supported Networks & Endpoints","titles":["Indexer"]},"22":{"href":"/api/indexer/overview#getting-started","html":"\n

Here are a few example queries you can make to a blockchain from your dapp, game, or wallet:

\n","isPage":false,"text":"\nHere are a few example queries you can make to a blockchain from your dapp, game, or wallet:\n\nFetch all tokens & NFTS in any wallet including all metadata\nFetch the transaction history for any wallet address\nFetch all unique tokens in a particular ERC20/721/1155 contract, including total supplies\nWhat is the total token supply of an ERC20 token? What is the total token supply of\nall the ERC1155 tokens in a particular contract?\nFetch the transaction history for any token contract address\nListen to transactions for particular tokens/contracts/addresses via webhooks\n","title":"Getting Started","titles":["Indexer"]},"23":{"href":"/api/marketplace/overview#marketplace-api","html":"\n\n

The Sequence Marketplace API service offers a simple and fast way to interact with sequence marketplace protocols. The API is designed to be easy to use and to have all the features you need to build a fully functional marketplace. Check out our various examples or our custom marketplace guide for an end to end walkthrough.

","isPage":true,"text":"\nMarketplace API documentation and testing\nThe Sequence Marketplace API service offers a simple and fast way to interact with sequence marketplace protocols. The API is designed to be easy to use and to have all the features you need to build a fully functional marketplace. Check out our various examples or our custom marketplace guide for an end to end walkthrough.","title":"Marketplace API","titles":[]},"24":{"href":"/api/metadata/contract-metadata#contract-metadata","html":"\n\n\n","isPage":true,"text":"\n\nLearn how to query contract-level metadata directly for any contract\nLearn about contract-level metadata for ERC20, ERC721 and ERC1155 tokens\n\nPRO TIP: Sequence Indexer also returns token metadataWhen using the Sequence Indexer, pass "includeMetadata": true to your request to\nquery token metadata for any ERC20, ERC721 or ERC1155 contract. See below how to fetch\ncontract-level metadata directly.\n","title":"Contract Metadata","titles":[]},"25":{"href":"/api/metadata/contract-metadata#fetch-contract-metadata-of-any-erc20-erc721-or-erc1155-contract-address","html":"\n

Sequence Metadata GetContractInfoBatch Method:

\n\n
\nExample: GetContractInfoBatch of some contracts on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetContractInfoBatch -d '{ "chainID": "polygon", "contractAddresses": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x17b66009af459dc8ebf37acf8a8b355379be2fe5", "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", "0x2953399124f0cbb46d2cbacd8a89cf0599974963", "0x7227e371540cf7b8e512544ba6871472031f3335", "0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d", "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", "0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4"] }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst contractMetadata = await metadataClient.getContractInfoBatch({\n  chainID: 'polygon',\n  contractAddresses: [\n    '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n    '0x17b66009af459dc8ebf37acf8a8b355379be2fe5',\n    '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n    '0x2953399124f0cbb46d2cbacd8a89cf0599974963',\n    '0x7227e371540cf7b8e512544ba6871472031f3335',\n    '0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d',\n    '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063',\n    '0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4'\n  ]\n})\n \nconsole.log('Contract info for above addresses:', contractMetadata)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")
Please [contact our team](/support) for assistance with integrations to another target.
\n
\n","isPage":false,"text":"\nSequence Metadata GetContractInfoBatch Method:\n\nRequest: POST /rpc/Metadata/GetContractInfoBatch\nContent-Type: application/json\nBody (in JSON):\n\nchainID (string) -- the chain id, as a name or number (ie. "1" or "mainnet", "137" or "polygon", etc.)\ncontractAddresses (string of strings) -- array of contract addresses\n\n\n\n\nExample: GetContractInfoBatch of some contracts on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\nThis code requires an API Access Key from Sequence Builder.\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetContractInfoBatch -d '{ "chainID": "polygon", "contractAddresses": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x17b66009af459dc8ebf37acf8a8b355379be2fe5", "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", "0x2953399124f0cbb46d2cbacd8a89cf0599974963", "0x7227e371540cf7b8e512544ba6871472031f3335", "0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d", "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", "0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4"] }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst contractMetadata = await metadataClient.getContractInfoBatch({\n chainID: 'polygon',\n contractAddresses: [\n '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n '0x17b66009af459dc8ebf37acf8a8b355379be2fe5',\n '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n '0x2953399124f0cbb46d2cbacd8a89cf0599974963',\n '0x7227e371540cf7b8e512544ba6871472031f3335',\n '0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d',\n '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063',\n '0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4'\n ]\n})\n \nconsole.log('Contract info for above addresses:', contractMetadata)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")Please [contact our team](/support) for assistance with integrations to another target.\n\n","title":"Fetch contract metadata of any ERC20, ERC721 or ERC1155 contract address","titles":["Contract Metadata"]},"26":{"href":"/api/metadata/contract-metadata#contract-level-metadata-standards","html":"\n

Additionally, OpenSea added something called contractURI (https://docs.opensea.io/docs/contract-level-metadata).

","isPage":false,"text":"\nAdditionally, OpenSea added something called contractURI (https://docs.opensea.io/docs/contract-level-metadata).","title":"Contract-level Metadata Standards","titles":["Contract Metadata"]},"27":{"href":"/api/metadata/overview#metadata","html":"\n

The Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.

\n

To learn how to use the Sequence Metadata service, please read:

\n\n
\n","isPage":true,"text":"\nThe Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.\nTo learn how to use the Sequence Metadata service, please read:\n\nToken metadata API & standards\nContract-level metadata API & standards\nAlternative, REST API Usage\n\n\n","title":"Metadata","titles":[]},"28":{"href":"/api/metadata/overview#web--nodejs-installation","html":"\n
npm install 0xsequence
\n

or

\n
npm install @0xsequence/metadata
\n\n

then in your app (using your API Access Key),

\n
import { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadata = new SequenceMetadata('https://metadata.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')
\n

NOTE: if you're using @0xsequence/metadata from node.js, we recommend using node v18.x or newer.

\n","isPage":false,"text":"\nnpm install 0xsequence\nor\nnpm install @0xsequence/metadata\nThis installation requires an API Access Key from Sequence Builder.\nthen in your app (using your API Access Key),\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadata = new SequenceMetadata('https://metadata.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\nNOTE: if you're using @0xsequence/metadata from node.js, we recommend using node v18.x or newer.\n","title":"Web / node.js Installation","titles":["Metadata",null]},"29":{"href":"/api/metadata/overview#go-installation","html":"\n
go get -u github.com/0xsequence/go-sequence@latest
\n

then in your app,

\n
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")
\n
\n","isPage":false,"text":"\ngo get -u github.com/0xsequence/go-sequence@latest\nthen in your app,\nimport (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")\n\n","title":"Go Installation","titles":["Metadata",null]},"30":{"href":"/api/metadata/overview#unity-or-unreal-installation","html":"\n

The Sequence Metadata is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.

\n
","isPage":false,"text":"\nThe Sequence Metadata is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.\n","title":"Unity or Unreal Installation","titles":["Metadata",null]},"31":{"href":"/api/metadata/rest-api#metadata-rest-api-reference--usage","html":"\n

The Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.

\n

Quite simply, the Metadata API allows you to query the token metadata of any ERC20, ERC721 or ERC1155\ncontract on a number of supported Ethereum chains.

\n

As well, the Sequence Metadata service is automatically integrated in the Sequence Indexer.\nBut as we demonstrate below, it's also useful to be able to query the token/contract metadata directly too :)

\n\n","isPage":true,"text":"\nThe Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.\nQuite simply, the Metadata API allows you to query the token metadata of any ERC20, ERC721 or ERC1155\ncontract on a number of supported Ethereum chains.\nAs well, the Sequence Metadata service is automatically integrated in the Sequence Indexer.\nBut as we demonstrate below, it's also useful to be able to query the token/contract metadata directly too :)\nPRO TIP: RPC vs REST endpointsSequence Metadata service is available with both RPC and REST endpoints. We recommend the RPC endpoints\nfor your application, but the REST endpoints are an available option for convenience.For RPC endpoint see Token metadata RPC and Contract metadata RPC.\n","title":"Metadata REST API Reference & Usage","titles":[]},"32":{"href":"/api/metadata/rest-api#example","html":"\n

Let's say you'd like to query the metadata of a Skyweaver 1155 card on the Polygon network. Of course, the\nbelow example will work for any network / contract / token combination as well.

\n

First, the Skyweaver 1155 assets contract is located at address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. Second, let's build the metadata lookup endpoint to query Skyweaver's contract\nfor token ID 20:

\n

Request:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20

\nResponse:\n
[\n  {\n    "tokenId": "20",\n    "contractAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n    "name": "Unstoppable Chop",\n    "description": "Attach Silence to target unit. Do 4 damage to it.",\n    "image": "https://assets.skyweaver.net/TNqWLuJZ/webapp/cards/full-cards/6x/20-silver.png",\n    "decimals": 2,\n    "properties": {\n      "baseCardId": 20,\n      "goldCardId": 131092,\n      "grade": "oldSilver",\n      "id": 20,\n      "silverCardId": 65556\n    },\n    "attributes": null\n  }\n]
\n

If you'd like to query a number of tokens at the same time, you can include more token ids comma-separated:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20,21,22 -- click\nto see the JSON response to query token ids 20, 21, and 22 in a single batched request.

\n

Feel free to try tweaking the metadata.sequence.app URL above for your own contract, or another popular\nproject to see how the responses come back. You can change the network to one of our supported networks\nand specify any contract and/or token id.

\n

In addition to easily querying token-level metadata like in the above example, you can also query contract-level metadata.\nContract-level metadata provides you more information about a contract address such as a name, contract type, logo, and description.\nSimply change the metadata URL above to just query the contract address: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E

\n

and see result:

\n
{\n  "chainId": 137,\n  "address": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n  "name": "Skyweaver",\n  "type": "ERC1155",\n  "symbol": "SKYWVR",\n  "logoURI": "https://assets.skyweaver.net/_tX5dRVi/webapp/icons/skyweaver-token.png",\n  "extensions": {\n    "link": "https://www.skyweaver.net/",\n    "description": "Skyweaver is a Free-to-Play, trading card game powered by Polygon and Ethereum.",\n    "ogImage": "https://skyweaver.net/images/skyweavercover.jpg",\n    "originAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e"\n  }\n}
\n
\n","isPage":false,"text":"\nLet's say you'd like to query the metadata of a Skyweaver 1155 card on the Polygon network. Of course, the\nbelow example will work for any network / contract / token combination as well.\nFirst, the Skyweaver 1155 assets contract is located at address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. Second, let's build the metadata lookup endpoint to query Skyweaver's contract\nfor token ID 20:\nRequest:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20\nResponse:\n[\n {\n "tokenId": "20",\n "contractAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n "name": "Unstoppable Chop",\n "description": "Attach Silence to target unit. Do 4 damage to it.",\n "image": "https://assets.skyweaver.net/TNqWLuJZ/webapp/cards/full-cards/6x/20-silver.png",\n "decimals": 2,\n "properties": {\n "baseCardId": 20,\n "goldCardId": 131092,\n "grade": "oldSilver",\n "id": 20,\n "silverCardId": 65556\n },\n "attributes": null\n }\n]\nIf you'd like to query a number of tokens at the same time, you can include more token ids comma-separated:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20,21,22 -- click\nto see the JSON response to query token ids 20, 21, and 22 in a single batched request.\nFeel free to try tweaking the metadata.sequence.app URL above for your own contract, or another popular\nproject to see how the responses come back. You can change the network to one of our supported networks\nand specify any contract and/or token id.\nIn addition to easily querying token-level metadata like in the above example, you can also query contract-level metadata.\nContract-level metadata provides you more information about a contract address such as a name, contract type, logo, and description.\nSimply change the metadata URL above to just query the contract address: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E\nand see result:\n{\n "chainId": 137,\n "address": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n "name": "Skyweaver",\n "type": "ERC1155",\n "symbol": "SKYWVR",\n "logoURI": "https://assets.skyweaver.net/_tX5dRVi/webapp/icons/skyweaver-token.png",\n "extensions": {\n "link": "https://www.skyweaver.net/",\n "description": "Skyweaver is a Free-to-Play, trading card game powered by Polygon and Ethereum.",\n "ogImage": "https://skyweaver.net/images/skyweavercover.jpg",\n "originAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e"\n }\n}\n\n","title":"Example","titles":["Metadata REST API Reference & Usage"]},"33":{"href":"/api/metadata/rest-api#usage","html":"\n

The Metadata API service is accessible either with a simple REST interface, or a RPC client.\nFor the RPC client, we offer Web browser, node and Go clients. We recommend the RPC client for most integrations, but\nmake the REST interface available for convenience.

\n
\n","isPage":false,"text":"\nThe Metadata API service is accessible either with a simple REST interface, or a RPC client.\nFor the RPC client, we offer Web browser, node and Go clients. We recommend the RPC client for most integrations, but\nmake the REST interface available for convenience.\n\n","title":"Usage","titles":["Metadata REST API Reference & Usage"]},"34":{"href":"/api/metadata/rest-api#rest-endpoints","html":"\n

As mentioned in the example above. The general format of the REST endpoint is:

\n
GET https://metadata.sequence.app/tokens/<network>/<contractAddress>[/<tokenID>]
\n

Where <network> must be one of the Chain ID or Chain Handle of the supported networks.

\n
\nFetch contract-level metadata:\n
GET https://metadata.sequence.app/tokens/<network>/<contractAddress>
\n

Example: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E

\n
\nFetch token-level metadata:\n
GET https://metadata.sequence.app/tokens/<network>/<contractAddress>/<tokenID>[,<tokenID>,...]
\n

Examples:

\n\n
\n","isPage":false,"text":"\nAs mentioned in the example above. The general format of the REST endpoint is:\nGET https://metadata.sequence.app/tokens/<network>/<contractAddress>[/<tokenID>]\nWhere <network> must be one of the Chain ID or Chain Handle of the supported networks.\n\nFetch contract-level metadata:\nGET https://metadata.sequence.app/tokens/<network>/<contractAddress>\nExample: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E\n\nFetch token-level metadata:\nGET https://metadata.sequence.app/tokens/<network>/<contractAddress>/<tokenID>[,<tokenID>,...]\nExamples:\n\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20,21\n\n\n","title":"REST endpoints","titles":["Metadata REST API Reference & Usage"]},"35":{"href":"/api/metadata/rest-api#rpc-client","html":"\n

The Metadata RPC interface offers the full capabilities of the Metadata service.

\n

We provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Metadata service with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Metadata RPC client as well.

\n","isPage":false,"text":"\nThe Metadata RPC interface offers the full capabilities of the Metadata service.\nWe provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Metadata service with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Metadata RPC client as well.\n","title":"RPC Client","titles":["Metadata REST API Reference & Usage"]},"36":{"href":"/api/metadata/rest-api#metadata-rpc-methods","html":"\n

Metadata API endpoint: https://metadata.sequence.app

\nMetadata RPC methods:\n","isPage":false,"text":"\nMetadata API endpoint: https://metadata.sequence.app\nMetadata RPC methods:\n\nGetTokenMetadata - fetch token metadata of ERC721 or ERC1155 tokens from a single contract\nGetTokenMetadataBatch - fetch token metadata of ERC721 or ERC1155 token from a batch of contracts\nGetContractInfo - fetch contract metadata of an ERC20, ERC721 or ERC1155 contract address\nGetContractInfoBatch - fetch contract metadata of a batch of ERC20, ERC721 or ERC1155 contract addresses\n","title":"Metadata RPC Methods","titles":["Metadata REST API Reference & Usage"]},"37":{"href":"/api/metadata/token-metadata#token-metadata","html":"\n

Sequence provides a metadata service for fetching token metadata for any ERC721 or ERC1155 contract, on any EVM chain.

\n\n\n","isPage":true,"text":"\nSequence provides a metadata service for fetching token metadata for any ERC721 or ERC1155 contract, on any EVM chain.\n\nLearn how to query token metadata directly for any contract\nLearn about token metadata standards and formats for ERC721 and ERC1155 tokens\n\nPRO TIP: Sequence Indexer also supports token metadataWhen using the Sequence Indexer, pass "includeMetadata": true to your request to\nquery token metadata for any ERC721 or ERC1155 contract. See below how to fetch\ntoken metadata directly.\n","title":"Token Metadata","titles":[]},"38":{"href":"/api/metadata/token-metadata#fetch-token-metadata-for-any-erc721-or-erc1155-contract","html":"\n

Sequence Metadata GetTokenMetadata Method:

\n\n
\nExample: GetTokenMetadata of some tokens using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenMetadata -d '{"chainID":"polygon", "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["65537", "65538", "65539"] }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst tokenMetadata = await metadataClient.getTokenMetadata({\n  chainID: 'polygon',\n  contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n  tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('token metadata: ', tokenMetadata)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncollectibleInfo, err := seqMetadata.GetTokenMetadata(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"})
To be completed
To be completed
Please [contact our team](/support) for assistance with integrations to another target.
\n","isPage":false,"text":"\nSequence Metadata GetTokenMetadata Method:\n\nRequest: POST /rpc/Metadata/GetTokenMetadata\nContent-Type: application/json\nBody (in JSON):\n\nchainID (string) -- the chain id, as a name or number (ie. "1" or "mainnet", "137" or "polygon", etc.)\ncontractAddress (string) -- the contract address\ntokenIDs (array of strings) -- array of strings containing token ids to fetch metadata\n\n\n\n\nExample: GetTokenMetadata of some tokens using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\nThis code requires an API Access Key from Sequence Builder.\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenMetadata -d '{"chainID":"polygon", "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["65537", "65538", "65539"] }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst tokenMetadata = await metadataClient.getTokenMetadata({\n chainID: 'polygon',\n contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('token metadata: ', tokenMetadata)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncollectibleInfo, err := seqMetadata.GetTokenMetadata(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"})To be completedTo be completedPlease [contact our team](/support) for assistance with integrations to another target.\n","title":"Fetch token metadata for any ERC721 or ERC1155 contract","titles":["Token Metadata"]},"39":{"href":"/api/metadata/token-metadata#refreshing-token-metadata","html":"\n

When deploying new contracts or metadata updates the refresh token metadata url should be called with an access key from (the Sequence Builder) via a HTTPS POST request by command line or via metadata SDK in a program for data to indexeable in the Sequence Indexer metadata service.

\n

Sequence Metadata enqueueTokensForRefresh Method:

\n\n
curl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/EnqueueTokensForRefresh -d '{"chainID":"polygon", "contractAddress":"0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["1","2"]}'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst jobID = await metadataClient.enqueueTokensForRefresh({\n    chainID: 'polygon',\n    contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n    tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('refresh job id: ', tokenMetadata)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJob, err := seqMetadata.EnqueueTokensForRefresh(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"}, nil)
Please [contact our team](/support) for assistance with integrations to another target.
\n

Sequence Metadata getTokenRefreshStatus Method:

\n\n
curl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenRefreshStatus -d '{"taskId": 1234}'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst refreshJobStatus = await metadataClient.getTokenRefreshStatus({\n    taskId: 1234\n})\n \nconsole.log('refresh job status: ', refreshJobStatus)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJobStatus, err := seqMetadata.GetTokenRefreshStatus(context.Background(), uint64(1234))
Please [contact our team](/support) for assistance with integrations to another target.
\n","isPage":false,"text":"\nWhen deploying new contracts or metadata updates the refresh token metadata url should be called with an access key from (the Sequence Builder) via a HTTPS POST request by command line or via metadata SDK in a program for data to indexeable in the Sequence Indexer metadata service.\nSequence Metadata enqueueTokensForRefresh Method:\n\nRequest: POST /rpc/Metadata/EnqueueTokensForRefresh\nContent-Type: application/json\nBody (in JSON):\n\nchainID (string) -- the chain id, as a name or number (ie. "1" or "mainnet", "137" or "polygon", etc.)\ncontractAddress (string) -- the contract address\ntokenIDs (array of strings) -- array of strings containing token ids to fetch metadata\n\n\n\ncurl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/EnqueueTokensForRefresh -d '{"chainID":"polygon", "contractAddress":"0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["1","2"]}'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst jobID = await metadataClient.enqueueTokensForRefresh({\n chainID: 'polygon',\n contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('refresh job id: ', tokenMetadata)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJob, err := seqMetadata.EnqueueTokensForRefresh(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"}, nil)Please [contact our team](/support) for assistance with integrations to another target.\nSequence Metadata getTokenRefreshStatus Method:\n\nRequest: POST /rpc/Metadata/GetTokenRefreshStatus\nContent-Type: application/json\nBody (in JSON):\n\ntaskId (uint) -- the task id returned from enqueueTokensForRefresh\n\n\n\ncurl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenRefreshStatus -d '{"taskId": 1234}'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst refreshJobStatus = await metadataClient.getTokenRefreshStatus({\n taskId: 1234\n})\n \nconsole.log('refresh job status: ', refreshJobStatus)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJobStatus, err := seqMetadata.GetTokenRefreshStatus(context.Background(), uint64(1234))Please [contact our team](/support) for assistance with integrations to another target.\n","title":"Refreshing token metadata","titles":["Token Metadata"]},"40":{"href":"/api/metadata/token-metadata#testing-instructions","html":"\n
    \n
  1. Check current token metadata using token metadata fetch
  2. \n
  3. Modify token metadata content either onchain or via token baseURI
  4. \n
  5. Call refresh token ID endpoints using refresh metadata
  6. \n
  7. Check token metadata changes using token metadata fetch
  8. \n
\n","isPage":false,"text":"\n\nCheck current token metadata using token metadata fetch\nModify token metadata content either onchain or via token baseURI\nCall refresh token ID endpoints using refresh metadata\nCheck token metadata changes using token metadata fetch\n\n","title":"Testing instructions:","titles":["Token Metadata","Refreshing token metadata"]},"41":{"href":"/api/metadata/token-metadata#token-metadata-standards","html":"\n

Popular token standards like EIP721 and EIP1155 both\nhave similar metadata standard formats with some subtle differences. In addition to the standards, we've seen in practice that projects\noften slightly deviate from the standards but are sensical, easy to parse and well supported in the ecosystem, include the Sequence Metadata service.\nBelow we describe the standards and common practices across projects to help demystify how to format your token metadata for your projects.

\n","isPage":false,"text":"\nPopular token standards like EIP721 and EIP1155 both\nhave similar metadata standard formats with some subtle differences. In addition to the standards, we've seen in practice that projects\noften slightly deviate from the standards but are sensical, easy to parse and well supported in the ecosystem, include the Sequence Metadata service.\nBelow we describe the standards and common practices across projects to help demystify how to format your token metadata for your projects.\n","title":"Token Metadata Standards","titles":["Token Metadata"]},"42":{"href":"/api/metadata/token-metadata#metadata-standards","html":"\n","isPage":false,"text":"\n","title":"Metadata Standards","titles":["Token Metadata"]},"43":{"href":"/api/metadata/token-metadata#erc721","html":"\n

ERC721 token contracts contain a method on the contract called tokenURI(uint256) string. When querying the tokenURI method on the contract, it will return a URI which contains additional metadata for that asset.

\n

See EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md

\n

Here is an example Bored Ape (token id 9):\nhttps://metadata.sequence.app/tokens/mainnet/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/9

\n

response:

\n
{\n  "tokenId": "9",\n  "contractAddress": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",\n  "name": "",\n  "description": "",\n  "image": "https://ipfs.sequence.info/ipfs/QmUQgKka8EW7exiUHnMwZ4UoXA11wV7NFjHAogVAbasSYy",\n  "decimals": 0,\n  "properties": null,\n  "attributes": [\n    {\n      "trait_type": "Earring",\n      "value": "Silver Stud"\n    },\n    {\n      "trait_type": "Eyes",\n      "value": "Sleepy"\n    },\n    {\n      "trait_type": "Mouth",\n      "value": "Small Grin"\n    },\n    {\n      "trait_type": "Fur",\n      "value": "Brown"\n    },\n    {\n      "trait_type": "Hat",\n      "value": "Seaman's Hat"\n    },\n    {\n      "trait_type": "Clothes",\n      "value": "Stunt Jacket"\n    },\n    {\n      "trait_type": "Background",\n      "value": "Purple"\n    }\n  ]\n}
\n

In the case of this Bored Ape, it appears there is no name or description set,\nbut they do have "attributes" as an array of { "trait_type": string, "value: string }.

\n

Additionally, see OpenSea for more information: https://docs.opensea.io/docs/metadata-standards

\n

Note that OpenSea technically breaks the ERC1155 standard by suggesting to use "attributes", where in fact,\nthe ERC1155 calls uses the field name "properties" instead of "attributes", see\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema (read section below).\nHowever this is completely okay and mixed use of properties / attributes is compatible in practice.\nOn Sequence Metadata, we support both structures for token contracts which use either format for their properties/attributes.

\n

Another example is from Neon District: https://metadata.sequence.app/tokens/polygon/0x7227e371540CF7b8e512544Ba6871472031F3335/158456331411102687640546264635

\n","isPage":false,"text":"\nERC721 token contracts contain a method on the contract called tokenURI(uint256) string. When querying the tokenURI method on the contract, it will return a URI which contains additional metadata for that asset.\nSee EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\nHere is an example Bored Ape (token id 9):\nhttps://metadata.sequence.app/tokens/mainnet/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/9\nresponse:\n{\n "tokenId": "9",\n "contractAddress": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",\n "name": "",\n "description": "",\n "image": "https://ipfs.sequence.info/ipfs/QmUQgKka8EW7exiUHnMwZ4UoXA11wV7NFjHAogVAbasSYy",\n "decimals": 0,\n "properties": null,\n "attributes": [\n {\n "trait_type": "Earring",\n "value": "Silver Stud"\n },\n {\n "trait_type": "Eyes",\n "value": "Sleepy"\n },\n {\n "trait_type": "Mouth",\n "value": "Small Grin"\n },\n {\n "trait_type": "Fur",\n "value": "Brown"\n },\n {\n "trait_type": "Hat",\n "value": "Seaman's Hat"\n },\n {\n "trait_type": "Clothes",\n "value": "Stunt Jacket"\n },\n {\n "trait_type": "Background",\n "value": "Purple"\n }\n ]\n}\nIn the case of this Bored Ape, it appears there is no name or description set,\nbut they do have "attributes" as an array of { "trait_type": string, "value: string }.\nAdditionally, see OpenSea for more information: https://docs.opensea.io/docs/metadata-standards\nNote that OpenSea technically breaks the ERC1155 standard by suggesting to use "attributes", where in fact,\nthe ERC1155 calls uses the field name "properties" instead of "attributes", see\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema (read section below).\nHowever this is completely okay and mixed use of properties / attributes is compatible in practice.\nOn Sequence Metadata, we support both structures for token contracts which use either format for their properties/attributes.\nAnother example is from Neon District: https://metadata.sequence.app/tokens/polygon/0x7227e371540CF7b8e512544Ba6871472031F3335/158456331411102687640546264635\n","title":"ERC721","titles":["Token Metadata","Metadata Standards"]},"44":{"href":"/api/metadata/token-metadata#erc1155","html":"\n

ERC1155 token contracts contain a method on the contract called uri(uint256) string. When querying the uri method on the\ncontract, it will return a URI which contains additional metadata for that asset.

\n

See EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema

\n

Here is an example Skyweaver card (token id 65548):\nhttps://metadata.sequence.app/tokens/polygon/0x27A11C1563a5dDa238379B95c91B3AbBaD9C0cf6/65548

\n
{\n  "tokenId": "65548",\n  "contractAddress": "0x27a11c1563a5dda238379b95c91b3abbad9c0cf6",\n  "name": "Weighted Die (Silver)",\n  "description": "Give +1/+1, armor, and guard to a random ally unit, six times.\\n\\n\\"I will not bow to fate. If the dice fall against me, I'll cut off the hand that cast them.\\"\\n -Horik",\n  "image": "https://assets.skyweaver.net/LV7xNcQh/webapp/cards/full-cards/6x/12-silver.png",\n  "decimals": 2,\n  "properties": {\n    "artists": {\n      "name": "Artist",\n      "value": [\n        {\n          "id": "xavi",\n          "name": "Henrique Xavier",\n          "url": "https://www.artstation.com/kitexavier"\n        }\n      ]\n    },\n    "baseCardId": 12,\n    "cardType": "Spell",\n    "element": "Metal",\n    "mana": 8,\n    "prism": "Strength",\n    "type": "Silver"\n  },\n  "attributes": null\n}
\n

As you can see, Skyweaver an ERC1155 token's metadata uses the properties object, which is an object/dictionary type of arbitrary data.

\n","isPage":false,"text":"\nERC1155 token contracts contain a method on the contract called uri(uint256) string. When querying the uri method on the\ncontract, it will return a URI which contains additional metadata for that asset.\nSee EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema\nHere is an example Skyweaver card (token id 65548):\nhttps://metadata.sequence.app/tokens/polygon/0x27A11C1563a5dDa238379B95c91B3AbBaD9C0cf6/65548\n{\n "tokenId": "65548",\n "contractAddress": "0x27a11c1563a5dda238379b95c91b3abbad9c0cf6",\n "name": "Weighted Die (Silver)",\n "description": "Give +1/+1, armor, and guard to a random ally unit, six times.\\n\\n\\"I will not bow to fate. If the dice fall against me, I'll cut off the hand that cast them.\\"\\n -Horik",\n "image": "https://assets.skyweaver.net/LV7xNcQh/webapp/cards/full-cards/6x/12-silver.png",\n "decimals": 2,\n "properties": {\n "artists": {\n "name": "Artist",\n "value": [\n {\n "id": "xavi",\n "name": "Henrique Xavier",\n "url": "https://www.artstation.com/kitexavier"\n }\n ]\n },\n "baseCardId": 12,\n "cardType": "Spell",\n "element": "Metal",\n "mana": 8,\n "prism": "Strength",\n "type": "Silver"\n },\n "attributes": null\n}\nAs you can see, Skyweaver an ERC1155 token's metadata uses the properties object, which is an object/dictionary type of arbitrary data.\n","title":"ERC1155","titles":["Token Metadata","Metadata Standards"]},"45":{"href":"/api/metadata/token-metadata#attributes-vs-properties","html":"\n

As you can see, the standard format of token metadata contains both attributes and properties. The attributes field is an array of\nobjects. The properties field is an object/dictionary of arbitrary data. In technical terms, the attributes type is defined as\n[]map<string,any> and the properties type is defined as map<string,any>.

\n

In practice, we've seen that many projects use both attributes and properties to store the same data, and in some cases, they use\nattributes to store data that should be in properties and vice versa. Sometimes project use both fields, and this is completely fine\nin practice, as marketplaces and services will parse both areas.

\n

Finally, if you are looking to extend the metadata format to suit your project, we recommend to utilize either or both the attributes\nand properties fields for either ERC721 or ERC1155.

\n","isPage":false,"text":"\nAs you can see, the standard format of token metadata contains both attributes and properties. The attributes field is an array of\nobjects. The properties field is an object/dictionary of arbitrary data. In technical terms, the attributes type is defined as\n[]map<string,any> and the properties type is defined as map<string,any>.\nIn practice, we've seen that many projects use both attributes and properties to store the same data, and in some cases, they use\nattributes to store data that should be in properties and vice versa. Sometimes project use both fields, and this is completely fine\nin practice, as marketplaces and services will parse both areas.\nFinally, if you are looking to extend the metadata format to suit your project, we recommend to utilize either or both the attributes\nand properties fields for either ERC721 or ERC1155.\n","title":"Attributes vs Properties","titles":["Token Metadata","Metadata Standards"]},"46":{"href":"/api/metadata/token-metadata#erc20","html":"\n

Finally, a note on ERC20 tokens. ERC20 tokens are just a single token, so they themselves do not have a token ID, but\nare represented entirely by their contract address. We can infer some information about the token by querying the contract\nmethods such as name and decimals. Additionally, ERC20 tokens can take advantage of the contractURI extension used\nby OpenSea and described in more detail in our Contract metadata section.

","isPage":false,"text":"\nFinally, a note on ERC20 tokens. ERC20 tokens are just a single token, so they themselves do not have a token ID, but\nare represented entirely by their contract address. We can infer some information about the token by querying the contract\nmethods such as name and decimals. Additionally, ERC20 tokens can take advantage of the contractURI extension used\nby OpenSea and described in more detail in our Contract metadata section.","title":"ERC20","titles":["Token Metadata","Metadata Standards"]},"47":{"href":"/api/relayer/installation#installation","html":"\n

We provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Relayer with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Relayer API client as well.

\n\n","isPage":true,"text":"\nWe provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Relayer with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Relayer API client as well.\nSequence Relayer offers the same API across a variety of EVM networks. Make sure to check the endpoints\nand use the corresponding host for your dapp/game. For example, on Ethereum mainnet the Sequence Relayer endpoint is\nhttps://mainnet-relayer.sequence.app and Polygon is https://polygon-relayer.sequence.app.🌄 View the full list of supported networks and Relayer endpoints here\n","title":"Installation","titles":[]},"48":{"href":"/api/relayer/installation#web--nodejs-installation","html":"\n
npm install 0xsequence ethers
\n

or

\n
pnpm install 0xsequence ethers
\n

or

\n
yarn add 0xsequence ethers
\n","isPage":false,"text":"\nnpm install 0xsequence ethers\nor\npnpm install 0xsequence ethers\nor\nyarn add 0xsequence ethers\n","title":"Web / node.js Installation","titles":["Installation",null]},"49":{"href":"/api/relayer/installation#go-installation","html":"\n
go get -u github.com/0xsequence/go-sequence@latest
\n

then in your app,

\n
import (\n\t"github.com/0xsequence/go-sequence/relayer"\n)
","isPage":false,"text":"\ngo get -u github.com/0xsequence/go-sequence@latest\nthen in your app,\nimport (\n\t"github.com/0xsequence/go-sequence/relayer"\n)","title":"Go Installation","titles":["Installation",null]},"50":{"href":"/api/relayer/overview#relayer-api","html":"\n\n

The Sequence Relayer service offers a simple interface for dispatching meta-transactions on Ethereum-compatible networks.

\n

Meta-transactions are the idea of a transaction inside of a transaction. The benefits of Sequence meta-transactions are that they allow:

\n\n

The best part: transactions with Sequence Relayer are compatible with any existing/deployed Ethereum contract, and thus, integrating the Sequence Relayer doesn't require any changes to your contracts or dapp.

\n

The Sequence Relayer is usable by frontend dapps, or even in your backends. Be sure to install the corresponding SDK for your preferred language such as Typescript or Go.

\n","isPage":true,"text":"\nRelayer API documentation and endpoints\nThe Sequence Relayer service offers a simple interface for dispatching meta-transactions on Ethereum-compatible networks.\nMeta-transactions are the idea of a transaction inside of a transaction. The benefits of Sequence meta-transactions are that they allow:\n\nGas abstraction -- whereby users can pay for network gas in a variety of tokens (ie. USDC, DAI, etc.)\nSponsored gas -- projects may sponsor the gas of specific contracts to allow free gas for their users\nBatched transactions -- group a bunch of independent transactions and allow them to be mined as a single transaction\nParallel transactions -- parallelize the dispatch of transactions in some cases\nFire + forget model -- easily send transactions to the relayer which will automatically manage nonces, bump gas, and other features which will ensure fast delivery\nOptimal gas pricing for transactions\n\nThe best part: transactions with Sequence Relayer are compatible with any existing/deployed Ethereum contract, and thus, integrating the Sequence Relayer doesn't require any changes to your contracts or dapp.\nThe Sequence Relayer is usable by frontend dapps, or even in your backends. Be sure to install the corresponding SDK for your preferred language such as Typescript or Go.\n","title":"Relayer API","titles":[]},"51":{"href":"/api/relayer/overview#anatomy-of-a-sequence-transaction-bundle","html":"\n

A Sequence transaction bundle consists of three things:

\n
    \n
  1. A list of Sequence transactions
  2. \n
  3. A Sequence nonce
  4. \n
  5. A Sequence signature
  6. \n
\n

Like Ethereum accounts, Sequence wallets use nonces to enforce transaction ordering and protect against replay attacks.\nUnlike Ethereum accounts, Sequence wallets have a virtually unlimited supply of independent nonces, allowing multiple independent transactions to be executed in parallel.\nA Sequence nonce is encoded as a 160-bit nonce space followed by the 96-bit nonce for that nonce space, big-endian.

\n
|<------------------------- uint256 -------------------------->|\n|<------ nonce space (160 bits) ------>||<- nonce (96 bits) -->|\nssssssssssssssssssssssssssssssssssssssssnnnnnnnnnnnnnnnnnnnnnnnn
\n","isPage":false,"text":"\nA Sequence transaction bundle consists of three things:\n\nA list of Sequence transactions\nA Sequence nonce\nA Sequence signature\n\nLike Ethereum accounts, Sequence wallets use nonces to enforce transaction ordering and protect against replay attacks.\nUnlike Ethereum accounts, Sequence wallets have a virtually unlimited supply of independent nonces, allowing multiple independent transactions to be executed in parallel.\nA Sequence nonce is encoded as a 160-bit nonce space followed by the 96-bit nonce for that nonce space, big-endian.\n|<------------------------- uint256 -------------------------->|\n|<------ nonce space (160 bits) ------>||<- nonce (96 bits) -->|\nssssssssssssssssssssssssssssssssssssssssnnnnnnnnnnnnnnnnnnnnnnnn\n","title":"Anatomy of a Sequence transaction bundle","titles":["Relayer API"]},"52":{"href":"/api/relayer/overview#gas-sponsorship-and-fees","html":"\n

The relayer only dispatches transactions that either:

\n
    \n
  1. Are sponsored in a project via the Sequence Builder, or
  2. \n
  3. Include a fee payment transaction to the relayer.
  4. \n
\n

You can sponsor:

\n
    \n
  1. Sequence wallets, so that they can send transactions without needing to pay fees,
  2. \n
  3. Token addresses, so that any user can send those tokens for free,
  4. \n
  5. Contracts, so that any user can interact with them for free,
  6. \n
  7. Arbitrary addresses, so that any user can transfer native tokens to it for free.
  8. \n
\n

To start sponsoring transactions, sign into https://sequence.build, and create a new project for the network you want to transact on.

\n

You can also pay the relayer directly to dispatch your transactions by adding an additional fee payment transaction to the relayer in your bundle.\nThe list of accepted fee tokens can be retrieved by calling the /FeeTokens endpoint for the network you are interested in:

\n
$ curl -s -X POST -H 'Content-Type: application/json' -d '{}' \\\n  https://mainnet-relayer.sequence.app/rpc/Relayer/FeeTokens | jq\n \n{\n  "isFeeRequired": true,\n  "tokens": [\n    {\n      "chainId": 1,\n      "name": "Matic",\n      "symbol": "MATIC",\n      "type": "ERC20_TOKEN",\n      "decimals": 18,\n      "logoURL": "https://raw.githubusercontent.com/spothq/cryptocurrency-icons/master/128/color/matic.png",\n      "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",\n      "tokenID": "0"\n    },\n    {\n      "chainId": 1,\n      "name": "USDC",\n      "symbol": "USDC",\n      "type": "ERC20_TOKEN",\n      "decimals": 6,\n      "logoURL": "https://logos.covalenthq.com/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png",\n      "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",\n      "tokenID": "0"\n    },\n    {\n      "chainId": 1,\n      "name": "Wrapped Ether",\n      "symbol": "WETH",\n      "type": "ERC20_TOKEN",\n      "decimals": 18,\n      "logoURL": "https://logos.covalenthq.com/tokens/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.png",\n      "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",\n      "tokenID": "0"\n    }\n  ]\n}
","isPage":false,"text":"\nThe relayer only dispatches transactions that either:\n\nAre sponsored in a project via the Sequence Builder, or\nInclude a fee payment transaction to the relayer.\n\nYou can sponsor:\n\nSequence wallets, so that they can send transactions without needing to pay fees,\nToken addresses, so that any user can send those tokens for free,\nContracts, so that any user can interact with them for free,\nArbitrary addresses, so that any user can transfer native tokens to it for free.\n\nTo start sponsoring transactions, sign into https://sequence.build, and create a new project for the network you want to transact on.\nYou can also pay the relayer directly to dispatch your transactions by adding an additional fee payment transaction to the relayer in your bundle.\nThe list of accepted fee tokens can be retrieved by calling the /FeeTokens endpoint for the network you are interested in:\n$ curl -s -X POST -H 'Content-Type: application/json' -d '{}' \\\n https://mainnet-relayer.sequence.app/rpc/Relayer/FeeTokens | jq\n \n{\n "isFeeRequired": true,\n "tokens": [\n {\n "chainId": 1,\n "name": "Matic",\n "symbol": "MATIC",\n "type": "ERC20_TOKEN",\n "decimals": 18,\n "logoURL": "https://raw.githubusercontent.com/spothq/cryptocurrency-icons/master/128/color/matic.png",\n "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",\n "tokenID": "0"\n },\n {\n "chainId": 1,\n "name": "USDC",\n "symbol": "USDC",\n "type": "ERC20_TOKEN",\n "decimals": 6,\n "logoURL": "https://logos.covalenthq.com/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png",\n "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",\n "tokenID": "0"\n },\n {\n "chainId": 1,\n "name": "Wrapped Ether",\n "symbol": "WETH",\n "type": "ERC20_TOKEN",\n "decimals": 18,\n "logoURL": "https://logos.covalenthq.com/tokens/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.png",\n "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",\n "tokenID": "0"\n }\n ]\n}","title":"Gas sponsorship and fees","titles":["Relayer API"]},"53":{"href":"/guides/templates/template-in-game-wallet#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"54":{"href":"/guides/templates/template-in-game-wallet#try-a-demo","html":"\n\n","isPage":false,"text":"\nTry out seamless UX of our in-game wallet at our demo\n","title":"Try a Demo","titles":["Quickstart"]},"55":{"href":"/guides/templates/template-in-game-wallet#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our in-game wallet.\n","title":"Template","titles":["Quickstart"]},"56":{"href":"/guides/templates/template-in-game-wallet#getting-started","html":"\n","isPage":false,"text":"\n","title":"Getting Started","titles":["Quickstart"]},"57":{"href":"/guides/templates/template-in-game-wallet#sdk-installation","html":"\n

We provide TypeScript and Unity SDKs for the Embedded Wallet authentication system. You can install the TypeScript SDK with:

\n
pnpm install @0xsequence/waas
\n

For more information on the Unity Embedded Wallet SDK, please refer to the Unity SDK documentation

\n","isPage":false,"text":"\nWe provide TypeScript and Unity SDKs for the Embedded Wallet authentication system. You can install the TypeScript SDK with:\npnpm install @0xsequence/waas\nFor more information on the Unity Embedded Wallet SDK, please refer to the Unity SDK documentation\n","title":"SDK Installation","titles":["Quickstart","Getting Started"]},"58":{"href":"/guides/templates/template-in-game-wallet#project-setup","html":"\n

Sequence Embedded Wallet is currently only available as a closed beta. To start using the Embedded Wallet SDKs, you'll need to contact the Sequence team and acquire API credentials. Once this is done, you will be provided with two keys:

\n\n","isPage":false,"text":"\nSequence Embedded Wallet is currently only available as a closed beta. To start using the Embedded Wallet SDKs, you'll need to contact the Sequence team and acquire API credentials. Once this is done, you will be provided with two keys:\n\nProject access key\nEmbedded Wallet configuration key\n\n","title":"Project Setup","titles":["Quickstart","Getting Started"]},"59":{"href":"/guides/templates/template-in-game-wallet#library-setup","html":"\n

To start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:

\n
import { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'mumbai'\n}, defaults.TEST)
\n

Note that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.

","isPage":false,"text":"\nTo start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:\nimport { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'mumbai'\n}, defaults.TEST)\nNote that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.","title":"Library Setup","titles":["Quickstart","Getting Started"]},"60":{"href":"/sdk/go/overview#go","html":"\n

A complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.

\n

go-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.

\n","isPage":true,"text":"\nA complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.\ngo-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.\n","title":"Go","titles":[null,null]},"61":{"href":"/sdk/go/overview#ethkit","html":"\n

As part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.

","isPage":false,"text":"\nAs part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.","title":"ethkit","titles":[null,null]},"62":{"href":"/sdk/sequence-kit/checkout#overview","html":"\n

The checkout modal enables developers to easily facilitate cryptocurrency payments.

\n
\n
","isPage":true,"text":"\nThe checkout modal enables developers to easily facilitate cryptocurrency payments.\n\n","title":"Overview","titles":[]},"63":{"href":"/sdk/sequence-kit/checkout#integration","html":"
\n

To integrate the checkout feature, follow these steps:

\n
    \n
  1. Install the kit-checkout module:
  2. \n
\n
npm install @0xsequence/kit-checkout\n# or\npnpm install @0xsequence/kit-checkout\n# or\nyarn add @0xsequence/kit-checkout
\n
    \n
  1. Place the KitCheckoutProvider below the Sequence Kit Core provider in your app:
  2. \n
\n
import { KitCheckoutProvider } from '@0xsequence/kit-checkout'\n \n \nconst App = () => {\n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider>\n          <KitCheckoutProvider>\n            <Page />\n          </KitCheckoutProvider>\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  )\n}
\n","isPage":false,"text":"\nTo integrate the checkout feature, follow these steps:\n\nInstall the kit-checkout module:\n\nnpm install @0xsequence/kit-checkout\n# or\npnpm install @0xsequence/kit-checkout\n# or\nyarn add @0xsequence/kit-checkout\n\nPlace the KitCheckoutProvider below the Sequence Kit Core provider in your app:\n\nimport { KitCheckoutProvider } from '@0xsequence/kit-checkout'\n \n \nconst App = () => {\n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider>\n <KitCheckoutProvider>\n <Page />\n </KitCheckoutProvider>\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n )\n}\n","title":"Integration","titles":[]},"64":{"href":"/sdk/sequence-kit/checkout#opening-the-checkout-modal","html":"\n

Use the useCheckoutModal hook to open the checkout modal and pass a settings object:

\n
  import { useCheckoutModal } from '@0xsequence/kit-checkout'\n \n \n  const MyComponent = () => {\n    const { triggerCheckout } = useCheckoutModal()\n  \n    const onClick = () => {\n      const checkoutSettings = {...}\n      triggerCheckout(checkoutSettings)\n    }\n \n    return (\n      <button onClick={onClick}>checkout</button>\n    )\n  }
\n","isPage":false,"text":"\nUse the useCheckoutModal hook to open the checkout modal and pass a settings object:\n import { useCheckoutModal } from '@0xsequence/kit-checkout'\n \n \n const MyComponent = () => {\n const { triggerCheckout } = useCheckoutModal()\n \n const onClick = () => {\n const checkoutSettings = {...}\n triggerCheckout(checkoutSettings)\n }\n \n return (\n <button onClick={onClick}>checkout</button>\n )\n }\n","title":"Opening the Checkout modal","titles":["Integration"]},"65":{"href":"/sdk/sequence-kit/checkout#configuring-the-checkout-modal","html":"\n

Configure the checkout modal using the checkoutSettings object:

\n
const checkoutSettings = {\n  cryptoCheckout: {...},\n  orderSummaryItems: {...}\n}
\n","isPage":false,"text":"\nConfigure the checkout modal using the checkoutSettings object:\nconst checkoutSettings = {\n cryptoCheckout: {...},\n orderSummaryItems: {...}\n}\n","title":"Configuring the Checkout modal","titles":["Integration"]},"66":{"href":"/sdk/sequence-kit/checkout#crypto-checkout-configuration-cryptocheckout","html":"\n

The cryptoCheckout field specifies settings for checking out with cryptocurrency, e.g., interacting with a minting contract or marketplace contract.

\n

Example configuration:

\n
cons checkoutConfig = {\n  // ...\n  cryptoCheckout: {\n    chainId: 137,\n    triggerTransaction: async () => { console.log('triggered transaction') },\n    coinQuantity: {\n      contractAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',\n      amountRequiredRaw: '10000000000'\n    },\n  },\n}
\n","isPage":false,"text":"\nThe cryptoCheckout field specifies settings for checking out with cryptocurrency, e.g., interacting with a minting contract or marketplace contract.\nExample configuration:\ncons checkoutConfig = {\n // ...\n cryptoCheckout: {\n chainId: 137,\n triggerTransaction: async () => { console.log('triggered transaction') },\n coinQuantity: {\n contractAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',\n amountRequiredRaw: '10000000000'\n },\n },\n}\n","title":"Crypto Checkout Configuration (cryptoCheckout)","titles":["Integration","Configuring the Checkout modal"]},"67":{"href":"/sdk/sequence-kit/checkout#order-summary-configuration-ordersummaryitems","html":"\n

The orderSummaryItems field specifies the list of collectibles shown in the order summary.

\n

Example configuration:

\n
    orderSummaryItems: [\n      {\n        contractAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e',\n        tokenId: '66597',\n        quantityRaw: '100'\n      },\n    ]
","isPage":false,"text":"\nThe orderSummaryItems field specifies the list of collectibles shown in the order summary.\nExample configuration:\n orderSummaryItems: [\n {\n contractAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e',\n tokenId: '66597',\n quantityRaw: '100'\n },\n ]","title":"Order Summary Configuration (orderSummaryItems)","titles":["Integration","Configuring the Checkout modal"]},"68":{"href":"/sdk/sequence-kit/configuration#configuration-options","html":"\n

Developers can customize the Sequence Kit experience by passing configuration options to the KitProvider wrapper.

\n

Here's how you can configure the kit using these options:

\n
 \n  const kitConfig =  {\n\t\tdefaultTheme: 'light',\n\t\tposition: 'top-left',\n\t\t...\n\t}\n \n  <KitProvider config={kitConfig}>\n    <App />\n  <KitProvider>\n 
\n
","isPage":true,"text":"\nDevelopers can customize the Sequence Kit experience by passing configuration options to the KitProvider wrapper.\nHere's how you can configure the kit using these options:\n \n const kitConfig = {\n\t\tdefaultTheme: 'light',\n\t\tposition: 'top-left',\n\t\t...\n\t}\n \n <KitProvider config={kitConfig}>\n <App />\n <KitProvider>\n \n","title":"Configuration Options","titles":[]},"69":{"href":"/sdk/sequence-kit/configuration#available-options","html":"
\n","isPage":false,"text":"\n","title":"Available Options","titles":[]},"70":{"href":"/sdk/sequence-kit/configuration#defaulttheme","html":"\n
TypeDefault
string or objectdark
\n

The defaultTheme determines the color palette used for styling the modal. Possible values include:

\n\n

Specific colors can be overwritten by passing a theme override object. The Sequence Builder provides a useful playground for toying with the colors in Sequence Kit.

\n","isPage":false,"text":"\nTypeDefaultstring or objectdark\nThe defaultTheme determines the color palette used for styling the modal. Possible values include:\n\n'light'\n'dark'\nobject\n\nSpecific colors can be overwritten by passing a theme override object. The Sequence Builder provides a useful playground for toying with the colors in Sequence Kit.\n","title":"defaultTheme","titles":["Available Options"]},"71":{"href":"/sdk/sequence-kit/configuration#position","html":"\n
TypeDefault
stringcenter
\n

The position parameter determines the location of the various modals on the screen. Possible values include:

\n\n","isPage":false,"text":"\nTypeDefaultstringcenter\nThe position parameter determines the location of the various modals on the screen. Possible values include:\n\ncenter\nmiddle-right\nmiddle-left\ntop-center\ntop-right\ntop-left\nbottom-center\nbottom-right\nbottom-left\n\n","title":"position","titles":["Available Options"]},"72":{"href":"/sdk/sequence-kit/configuration#sign-in-modal-configuration-signin","html":"\n

The signIn object is used to configure the sign in modal.

\n","isPage":false,"text":"\nThe signIn object is used to configure the sign in modal.\n","title":"Sign In Modal Configuration (signIn)","titles":["Available Options"]},"73":{"href":"/sdk/sequence-kit/configuration#signinlogourl","html":"\n
\n
TypeDefault
stringundefined
\n

URL of the logo to be shown in the sign in modal.

\n","isPage":false,"text":"\n\nTypeDefaultstringundefined\nURL of the logo to be shown in the sign in modal.\n","title":"signIn.logoUrl","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"74":{"href":"/sdk/sequence-kit/configuration#signinprojectname","html":"\n
\n
TypeDefault
stringundefined
\n

Name of the project to be shown in the sign in modal.

\n","isPage":false,"text":"\n\nTypeDefaultstringundefined\nName of the project to be shown in the sign in modal.\n","title":"signIn.projectName","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"75":{"href":"/sdk/sequence-kit/configuration#signinshowemailinput","html":"\n
\n
TypeDefault
booleantrue
\n

Determines whether the inline email input will be shown in the sign in modal.

\n","isPage":false,"text":"\n\nTypeDefaultbooleantrue\nDetermines whether the inline email input will be shown in the sign in modal.\n","title":"signIn.showEmailInput","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"76":{"href":"/sdk/sequence-kit/configuration#signinsocialauthoptions","html":"\n
\n
TypeDefault
string[]['google', 'facebook', 'twitch', 'apple']
\n

Determines which authentication options will be shown as social options in the sign in modal.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.

\n

For a full list of official connectors, see the connectors page.

\n","isPage":false,"text":"\n\nTypeDefaultstring[]['google', 'facebook', 'twitch', 'apple']\nDetermines which authentication options will be shown as social options in the sign in modal.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.\nFor a full list of official connectors, see the connectors page.\n","title":"signIn.socialAuthOptions","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"77":{"href":"/sdk/sequence-kit/configuration#signinwalletauthoptions","html":"\n
\n
TypeDefault
string[]['sequence', 'metamask', 'wallet-connect', 'coinbase-wallet']
\n

Determines which authentication options will be shown in the modal as web3 wallet options.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.

\n

For a full list of official connectors, see the connectors page.

\n","isPage":false,"text":"\n\nTypeDefaultstring[]['sequence', 'metamask', 'wallet-connect', 'coinbase-wallet']\nDetermines which authentication options will be shown in the modal as web3 wallet options.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.\nFor a full list of official connectors, see the connectors page.\n","title":"signIn.walletAuthOptions","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"78":{"href":"/sdk/sequence-kit/configuration#displayedassets","html":"\n
TypeDefault
[{ contractAddress: string, chainId: number }, ...]undefined
\n

If provided, this will determine which assets are to be displayed in the in-game wallet modal main view.\nBy passing a list of displayed assets, only assets from the provided list will be displayed in the main view.\nIn the case that no assets are provided, all owned assets can be displayed in the main view.

","isPage":false,"text":"\nTypeDefault[{ contractAddress: string, chainId: number }, ...]undefined\nIf provided, this will determine which assets are to be displayed in the in-game wallet modal main view.\nBy passing a list of displayed assets, only assets from the provided list will be displayed in the main view.\nIn the case that no assets are provided, all owned assets can be displayed in the main view.","title":"displayedAssets","titles":["Available Options"]},"79":{"href":"/sdk/sequence-kit/custom-connectors#custom-connectors-in-sequence-kit","html":"\n

Sequence Kit provides official connectors via the @0xsequence/kit-connectors package. However, you can also integrate custom connectors with Sequence Kit to support additional wallets. This guide will walk you through creating and using custom connectors.

\n","isPage":true,"text":"\nSequence Kit provides official connectors via the @0xsequence/kit-connectors package. However, you can also integrate custom connectors with Sequence Kit to support additional wallets. This guide will walk you through creating and using custom connectors.\n","title":"Custom Connectors in Sequence Kit","titles":[]},"80":{"href":"/sdk/sequence-kit/custom-connectors#creating-a-custom-connector","html":"\n

To create a custom connector, you can use an existing connector as a basis. For example, the Metamask Connector is a good starting point. Here's an example of how to create a custom connector:

\n
export const myCustomConnector = (options: MyCustomConnectorOptions) => ({\n  id: 'my-custom-connector',\n  name: 'My Custom Connector',\n  logoDark: MyCustomLogoDark,\n  logoLight: MyCustomLogoLight,\n  createConnector: () => {\n    const connector = myCustomConnector(options);\n    return connector;\n  },\n});
\n

Make sure to provide a unique id for your connector to avoid conflicts with other connectors. You can also customize fields such as name, logoDark, and logoLight to control how the connector appears in Sequence Kit.

\n

The createConnector function should return an initialized connector. Sequence Kit connectors are wrappers of Wagmi connectors, so you can use an official Wagmi connector if available, or create your own if needed.

\n

For more details on creating custom connectors, refer to Wagmi's guide on Custom Connectors.

\n
","isPage":false,"text":"\nTo create a custom connector, you can use an existing connector as a basis. For example, the Metamask Connector is a good starting point. Here's an example of how to create a custom connector:\nexport const myCustomConnector = (options: MyCustomConnectorOptions) => ({\n id: 'my-custom-connector',\n name: 'My Custom Connector',\n logoDark: MyCustomLogoDark,\n logoLight: MyCustomLogoLight,\n createConnector: () => {\n const connector = myCustomConnector(options);\n return connector;\n },\n});\nMake sure to provide a unique id for your connector to avoid conflicts with other connectors. You can also customize fields such as name, logoDark, and logoLight to control how the connector appears in Sequence Kit.\nThe createConnector function should return an initialized connector. Sequence Kit connectors are wrappers of Wagmi connectors, so you can use an official Wagmi connector if available, or create your own if needed.\nFor more details on creating custom connectors, refer to Wagmi's guide on Custom Connectors.\n","title":"Creating a Custom Connector","titles":["Custom Connectors in Sequence Kit"]},"81":{"href":"/sdk/sequence-kit/custom-connectors#using-custom-connectors","html":"
\n

When using custom connectors, you can't rely on the getDefaultConnectors utility function. Instead, you need to pass custom configurations to Sequence Kit.

\n

First, create a list of connectors, including your custom connector, and provide it to the Wagmi configuration:

\n
import { getKitConnectWallets } from '@0xsequence/kit';\n \nconst connectors = getKitConnectWallets([\n  google({\n    defaultNetwork: 137,\n    connect: {\n      app: 'my-app',\n      projectAccessKey: '<access-key>'\n    }\n  }),\n  // ... other connectors\n  myCustomConnector({ appName: 'my-app' }),\n]);\n \nconst config = createConfig({\n  transports,\n  connectors,\n  chains\n})
\n

Next, use your custom connector by specifying its id in either the socialAuthOptions or walletAuthOptions field of the Sequence Kit configuration:

\n
const kitConfig = {\n  signIn: {\n    socialAuthOptions: ['google', 'facebook'],\n    walletAuthOptions: ['metamask', 'my-custom-connector'],\n  }\n};\n \nreturn (\n  <WagmiConfig config={wagmiConfig}>\n    <QueryClientProvider client={queryClient}>\n      <KitProvider config={kitConfig}>\n        <App />\n      </KitProvider>\n    </QueryClientProvider>\n  </WagmiConfig>\n);
\n
","isPage":false,"text":"\nWhen using custom connectors, you can't rely on the getDefaultConnectors utility function. Instead, you need to pass custom configurations to Sequence Kit.\nFirst, create a list of connectors, including your custom connector, and provide it to the Wagmi configuration:\nimport { getKitConnectWallets } from '@0xsequence/kit';\n \nconst connectors = getKitConnectWallets([\n google({\n defaultNetwork: 137,\n connect: {\n app: 'my-app',\n projectAccessKey: '<access-key>'\n }\n }),\n // ... other connectors\n myCustomConnector({ appName: 'my-app' }),\n]);\n \nconst config = createConfig({\n transports,\n connectors,\n chains\n})\nNext, use your custom connector by specifying its id in either the socialAuthOptions or walletAuthOptions field of the Sequence Kit configuration:\nconst kitConfig = {\n signIn: {\n socialAuthOptions: ['google', 'facebook'],\n walletAuthOptions: ['metamask', 'my-custom-connector'],\n }\n};\n \nreturn (\n <WagmiConfig config={wagmiConfig}>\n <QueryClientProvider client={queryClient}>\n <KitProvider config={kitConfig}>\n <App />\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n);\n","title":"Using Custom Connectors","titles":[]},"82":{"href":"/sdk/sequence-kit/custom-connectors#share-your-custom-connectors","html":"
\n

Feel free to contribute your custom connectors by creating a pull request. This way, others can benefit from your work and enjoy seamless integration with Sequence Kit.

\n

Share the love ❤️ by expanding the ecosystem of custom connectors!

","isPage":false,"text":"\nFeel free to contribute your custom connectors by creating a pull request. This way, others can benefit from your work and enjoy seamless integration with Sequence Kit.\nShare the love ❤️ by expanding the ecosystem of custom connectors!","title":"Share Your Custom Connectors","titles":[]},"83":{"href":"/sdk/sequence-kit/getting-started#getting-started-with-sequence-kit","html":"\n

In this guide, we will walk you through installing Sequence Kit, triggering the connection modal, and displaying the embedded wallet in your application.

\n","isPage":true,"text":"\nIn this guide, we will walk you through installing Sequence Kit, triggering the connection modal, and displaying the embedded wallet in your application.\n","title":"Getting Started with Sequence Kit","titles":[]},"84":{"href":"/sdk/sequence-kit/getting-started#installing-sequence-kit-packages","html":"\n

Sequence Kit is modular, allowing you to install only the necessary packages. To get started, install the kit core package, the connectors package for interfacing with various wallet providers, and the wallet for the embedded wallet. Additionally, install other dependencies such as wagmi, viem, and 0xsequence.

\n
npm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\npnpm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\nyarn add @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query
\n
","isPage":false,"text":"\nSequence Kit is modular, allowing you to install only the necessary packages. To get started, install the kit core package, the connectors package for interfacing with various wallet providers, and the wallet for the embedded wallet. Additionally, install other dependencies such as wagmi, viem, and 0xsequence.\nnpm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\npnpm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\nyarn add @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n","title":"Installing Sequence Kit Packages","titles":["Getting Started with Sequence Kit"]},"85":{"href":"/sdk/sequence-kit/getting-started#setting-up-the-kit-wrapper","html":"
\n

To utilize the core kit wrapper for connecting web3 wallets to your application, follow these steps:

\n
    \n
  1. Configure wagmi for your app. Below is a basic wagmi configuration. For advanced configurations, please refer to the wagmi documentation.
  2. \n
\n
import MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n  const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n  \n  const projectAccessKey = '<access-key>'\n \n  const connectors = getDefaultConnectors({\n    walletConnectProjectId: 'wallet-connect-id',\n    defaultChainId: 137,\n    appName: 'demo app',\n    projectAccessKey\n  })\n \n  const transports = {}\n \n  chains.forEach(chain => {\n    transports[chain.id] = http()\n  })\n  \n  const config = createConfig({\n    transports,\n    connectors,\n    chains\n  })\n \n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider>\n          <MyPage />\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  );\n}
\n
    \n
  1. Wrap your app with the KitProvider within the WagmiConfig wrapper.
  2. \n
\n
","isPage":false,"text":"\nTo utilize the core kit wrapper for connecting web3 wallets to your application, follow these steps:\n\nConfigure wagmi for your app. Below is a basic wagmi configuration. For advanced configurations, please refer to the wagmi documentation.\n\nimport MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n \n const projectAccessKey = '<access-key>'\n \n const connectors = getDefaultConnectors({\n walletConnectProjectId: 'wallet-connect-id',\n defaultChainId: 137,\n appName: 'demo app',\n projectAccessKey\n })\n \n const transports = {}\n \n chains.forEach(chain => {\n transports[chain.id] = http()\n })\n \n const config = createConfig({\n transports,\n connectors,\n chains\n })\n \n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider>\n <MyPage />\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n );\n}\n\nWrap your app with the KitProvider within the WagmiConfig wrapper.\n\n","title":"Setting Up the Kit Wrapper","titles":[]},"86":{"href":"/sdk/sequence-kit/getting-started#setting-up-the-embedded-wallet-wrapper","html":"
\n

To install the optional in-game wallet, add the KitWalletProvider below the KitProvider wrapper.

\n
import { KitWalletProvider } from '@0xsequence/kit-wallet'\n \n// ...\n \nconst App = () => {\n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider config={kitConfig}>\n          <KitWalletProvider>\n            <Page />\n          </KitWalletProvider>\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  )\n}
\n

The complete code will then look like this:

\n
import MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { KitWalletProvider } from '@0xsequence/kit-wallet'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n  const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n  \n  const projectAccessKey = '<access-key>'\n \n  const connectors = getDefaultConnectors({\n    walletConnectProjectId: 'wallet-connect-id',\n    defaultChainId: 137,\n    appName: 'demo app',\n    projectAccessKey\n  })\n \n  const transports = {}\n \n  chains.forEach(chain => {\n    transports[chain.id] = http()\n  })\n  \n  const config = createConfig({\n    transports,\n    connectors,\n    chains\n  })\n \n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider>\n          <KitWalletProvider>\n            <MyPage />\n          </KitWalletProvider>\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  );\n}
\n
","isPage":false,"text":"\nTo install the optional in-game wallet, add the KitWalletProvider below the KitProvider wrapper.\nimport { KitWalletProvider } from '@0xsequence/kit-wallet'\n \n// ...\n \nconst App = () => {\n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider config={kitConfig}>\n <KitWalletProvider>\n <Page />\n </KitWalletProvider>\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n )\n}\nThe complete code will then look like this:\nimport MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { KitWalletProvider } from '@0xsequence/kit-wallet'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n \n const projectAccessKey = '<access-key>'\n \n const connectors = getDefaultConnectors({\n walletConnectProjectId: 'wallet-connect-id',\n defaultChainId: 137,\n appName: 'demo app',\n projectAccessKey\n })\n \n const transports = {}\n \n chains.forEach(chain => {\n transports[chain.id] = http()\n })\n \n const config = createConfig({\n transports,\n connectors,\n chains\n })\n \n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider>\n <KitWalletProvider>\n <MyPage />\n </KitWalletProvider>\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n );\n}\n","title":"Setting Up the Embedded Wallet Wrapper","titles":[]},"87":{"href":"/sdk/sequence-kit/getting-started#triggering-the-connect-modal","html":"
\n
\n

Invoke the connect modal using the useOpenConnectModal hook.

\n
import { useOpenConnectModal } from '@0xsequence/kit'\nimport { useDisconnect, useAccount } from 'wagmi'\n \n \nconst MyReactComponent = () => {\n  const { setOpenConnectModal } = useOpenConnectModal()\n \n  const { isConnected } = useAccount()\n \n  const onClick = () => {\n    setOpenConnectModal(true)\n  }\n \n  return (\n    <>\n      {!isConnected && (\n        <button onClick={onClick}>\n          Sign in\n        </button>\n      )}\n    </>\n  )\n}
\n

The modal will automatically close once the user signs in. You can utilize the useAccount hook from wagmi to detect the user's connection status.

\n
","isPage":false,"text":"\n\nInvoke the connect modal using the useOpenConnectModal hook.\nimport { useOpenConnectModal } from '@0xsequence/kit'\nimport { useDisconnect, useAccount } from 'wagmi'\n \n \nconst MyReactComponent = () => {\n const { setOpenConnectModal } = useOpenConnectModal()\n \n const { isConnected } = useAccount()\n \n const onClick = () => {\n setOpenConnectModal(true)\n }\n \n return (\n <>\n {!isConnected && (\n <button onClick={onClick}>\n Sign in\n </button>\n )}\n </>\n )\n}\nThe modal will automatically close once the user signs in. You can utilize the useAccount hook from wagmi to detect the user's connection status.\n","title":"Triggering the Connect Modal","titles":[]},"88":{"href":"/sdk/sequence-kit/getting-started#invoking-the-embedded-wallet-modal","html":"
\n
\n

Open the embedded wallet using the useOpenWalletModal react hook.

\n
import { useOpenWalletModal } from '@0xsequence/kit-wallet'\n \nconst MyComponent = () => {\n  const { setOpenWalletModal } = useOpenWalletModal()\n \n  const onClick = () => {\n    setOpenWalletModal(true)\n  }\n \n  return (\n    <button onClick={onClick}>open wallet</button>\n  )\n}
\n
","isPage":false,"text":"\n\nOpen the embedded wallet using the useOpenWalletModal react hook.\nimport { useOpenWalletModal } from '@0xsequence/kit-wallet'\n \nconst MyComponent = () => {\n const { setOpenWalletModal } = useOpenWalletModal()\n \n const onClick = () => {\n setOpenWalletModal(true)\n }\n \n return (\n <button onClick={onClick}>open wallet</button>\n )\n}\n","title":"Invoking the embedded wallet modal","titles":[]},"89":{"href":"/sdk/sequence-kit/getting-started#react-example","html":"
\n

The Sequence Kit Github repository contains an example app that you can use for learning and testing.

","isPage":false,"text":"\nThe Sequence Kit Github repository contains an example app that you can use for learning and testing.","title":"React Example","titles":[]},"90":{"href":"/sdk/sequence-kit/overview#sequencekit-sdk","html":"\n

Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.

\n","isPage":true,"text":"\nSequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.\n","title":"SequenceKit SDK","titles":[]},"91":{"href":"/sdk/sequence-kit/overview#key-features","html":"\n\n

Explore the potential of Sequence Kit by trying out our demo!

\n
","isPage":false,"text":"\n\n\nUniversal Connections: Seamlessly connect via popular social logins such as Facebook, Google, Discord, and more! Your users will enjoy a smooth, secure onboarding process. 🔐🪪\n\n\nWeb3 Wallet Integration: Effortlessly integrate with leading web3 wallets like WalletConnect and MetaMask. Unleash the power of blockchain with just a few clicks! 🦊 ⛓️\n\n\nEmbedded Wallet Experience: Provide your users with a comprehensive in-game wallet, enabling them to manage their coins and collectibles all within your own application. 👛 🖼️ 🪙\n\n\nExplore the potential of Sequence Kit by trying out our demo!\n","title":"Key Features","titles":["SequenceKit SDK"]},"92":{"href":"/sdk/sequence-kit/overview#next-steps","html":"
\n

Ready to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.

","isPage":false,"text":"\nReady to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.","title":"Next Steps","titles":[]},"93":{"href":"/sdk/unity/authentication#authentication","html":"\n

As a WaaS SDK, authentication is extremely important. Authentication works by establishing a session signing wallet through association with an OIDC idToken. For more on how our Embedded Wallet works, please see Embedded Wallet docs.

\n

To implement authentication, we recommend using our LoginPanel prefab. Locate this prefab under SequenceExamples > Prefabs and drag it under a Canvas in your scene.\nWe recommend having the Canvas Scaler component attached to your Canvas use the "Scale with Screen Size" UI Scale Mode. This will make it so that the LoginPanel (and any other UI elements under this Canvas) are scaled automatically when switching between build targets.

\n

Note: The LoginPanel is hidden by default. You can open it with the Open method and no arguments. To help with this, the LoginPanel GameObject is not disabled, so feel free to use GetComponentInChildren, FindObjectOfType, or similar to obtain a reference to the LoginPanel MonoBehaviour.

\n

This will provide you easy access to two authentication methods:

\n","isPage":true,"text":"\nAs a WaaS SDK, authentication is extremely important. Authentication works by establishing a session signing wallet through association with an OIDC idToken. For more on how our Embedded Wallet works, please see Embedded Wallet docs.\nTo implement authentication, we recommend using our LoginPanel prefab. Locate this prefab under SequenceExamples > Prefabs and drag it under a Canvas in your scene.\nWe recommend having the Canvas Scaler component attached to your Canvas use the "Scale with Screen Size" UI Scale Mode. This will make it so that the LoginPanel (and any other UI elements under this Canvas) are scaled automatically when switching between build targets.\nNote: The LoginPanel is hidden by default. You can open it with the Open method and no arguments. To help with this, the LoginPanel GameObject is not disabled, so feel free to use GetComponentInChildren, FindObjectOfType, or similar to obtain a reference to the LoginPanel MonoBehaviour.\nThis will provide you easy access to two authentication methods:\n","title":"Authentication","titles":[]},"94":{"href":"/sdk/unity/authentication#1-email-sign-in","html":"\n

Available on all platforms, email sign in leverages Amazon Cognito and provides the user with a 2FA challenge - a 6 digit code emailed to the entered address for the user to enter on the next page.\nOnce the user successfully completes the 2FA challenge, the SDK will receive an idToken in JWT format from Amazon Cognito and proceed to establish the session with WaaS API.

\n","isPage":false,"text":"\nAvailable on all platforms, email sign in leverages Amazon Cognito and provides the user with a 2FA challenge - a 6 digit code emailed to the entered address for the user to enter on the next page.\nOnce the user successfully completes the 2FA challenge, the SDK will receive an idToken in JWT format from Amazon Cognito and proceed to establish the session with WaaS API.\n","title":"1. Email Sign In","titles":["Authentication"]},"95":{"href":"/sdk/unity/authentication#2-social-sign-in","html":"\n

Available on all platforms except WebGL (currently), social sign in uses OIDC with the implicit flow to allow users to login via their existing Google, Discord, Facebook, or Apple accounts.\nOnce the user successfully signs in, an idToken is returned via deep link to the application.\nIn order to enable deep linking, we must register a custom URL scheme for our application. There are some platform specific requirements to set this up.

\nNote: social sign in does not work in the Editor as we cannot register a custom URL scheme.\n","isPage":false,"text":"\nAvailable on all platforms except WebGL (currently), social sign in uses OIDC with the implicit flow to allow users to login via their existing Google, Discord, Facebook, or Apple accounts.\nOnce the user successfully signs in, an idToken is returned via deep link to the application.\nIn order to enable deep linking, we must register a custom URL scheme for our application. There are some platform specific requirements to set this up.\nNote: social sign in does not work in the Editor as we cannot register a custom URL scheme.\n","title":"2. Social Sign in","titles":["Authentication"]},"96":{"href":"/sdk/unity/authentication#ios","html":"\n
    \n
  1. Open the iOS Player Settings window (menu: Edit > Project Settings > Player Settings, then select iOS).
  2. \n
  3. Select Other Settings, then scroll down to Configuration.
  4. \n
  5. Expand the Supported URL schemes section, and add 1 to the size.
  6. \n
  7. In the new Element N field, enter the URL scheme you've configured in SequenceConfig.
  8. \n
\n

\"iOS

\n","isPage":false,"text":"\n\nOpen the iOS Player Settings window (menu: Edit > Project Settings > Player Settings, then select iOS).\nSelect Other Settings, then scroll down to Configuration.\nExpand the Supported URL schemes section, and add 1 to the size.\nIn the new Element N field, enter the URL scheme you've configured in SequenceConfig.\n\n\n","title":"iOS","titles":["Authentication","2. Social Sign in"]},"97":{"href":"/sdk/unity/authentication#macos","html":"\n
    \n
  1. Open the Windows/Mac/Linux Player Settings window (menu: Edit > Project Settings > Player Settings, then select Windows/Mac/Linux).
  2. \n
  3. Select Other Settings, then scroll down to Mac Configuration.
  4. \n
  5. Expand the Supported URL schemes section, and add 1 to the size.
  6. \n
  7. In the new Element N field, enter the URL scheme you've configured in SequenceConfig.
  8. \n
\n

\"Mac

\n","isPage":false,"text":"\n\nOpen the Windows/Mac/Linux Player Settings window (menu: Edit > Project Settings > Player Settings, then select Windows/Mac/Linux).\nSelect Other Settings, then scroll down to Mac Configuration.\nExpand the Supported URL schemes section, and add 1 to the size.\nIn the new Element N field, enter the URL scheme you've configured in SequenceConfig.\n\n\n","title":"MacOS","titles":["Authentication","2. Social Sign in"]},"98":{"href":"/sdk/unity/authentication#pc","html":"\n

No additional steps required.

\n","isPage":false,"text":"\nNo additional steps required.\n","title":"PC","titles":["Authentication","2. Social Sign in"]},"99":{"href":"/sdk/unity/authentication#android","html":"\n
    \n
  1. In the Project window, browse to Assets > Plugins > Android.
  2. \n
\n

a) Note: in Unity versions 2021.2 and up this path doesn't exist by default. Please navigate to Edit > Project Settings > Player and under the Android Publishing Settings, enable Custom Main Manifest in the Build section. See https://docs.unity3d.com/Manual/deep-linking-android.html for more info.

\n
    \n
  1. If it doesn't already exist, create a new file and name it AndroidManifest.xml.
  2. \n
  3. Paste the following XML into the file, or, if you already have one, add the new keys from this XML to it.
  4. \n
  5. Make sure to replace 'sdk-powered-by-sequence' with the Url Scheme you set in SequenceConfig
  6. \n
\n
   <?xml version="1.0" encoding="utf-8"?>\n   <manifest\n     xmlns:android="http://schemas.android.com/apk/res/android"\n     xmlns:tools="http://schemas.android.com/tools"\n   >\n     <application>\n       <activity\n         android:name="com.unity3d.player.UnityPlayerActivity"\n         android:theme="@style/UnityThemeSelector"\n       >\n         <intent-filter>\n           <action android:name="android.intent.action.MAIN" />\n           <category android:name="android.intent.category.LAUNCHER" />\n         </intent-filter>\n         <intent-filter>\n           <action android:name="android.intent.action.VIEW" />\n           <category android:name="android.intent.category.DEFAULT" />\n           <category android:name="android.intent.category.BROWSABLE" />\n           <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n         </intent-filter>\n       </activity>\n     </application>\n   </manifest>
\n

b) Note: Unity 2022 versions prior to 2022.3.7f1 and 2023 versions prior to 2023.1.7f1, 2023.2.0b3, or 2023.3.0a1 contain a bug with Android deep-linking. Please use this XML instead.

\n
<?xml version="1.0" encoding="utf-8"?>\n<manifest\n        xmlns:android="http://schemas.android.com/apk/res/android"\n        xmlns:tools="http://schemas.android.com/tools"\n>\n    <application>\n        <activity\n                android:name="com.unity3d.player.UnityPlayerActivity"\n                android:theme="@style/UnityThemeSelector"\n                android:exported="true">\n            <intent-filter>\n                <action android:name="android.intent.action.MAIN" />\n                <category android:name="android.intent.category.LAUNCHER" />\n            </intent-filter>\n            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />\n            <intent-filter>\n                <action android:name="android.intent.action.VIEW" />\n                <category android:name="android.intent.category.DEFAULT" />\n                <category android:name="android.intent.category.BROWSABLE" />\n                <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n            </intent-filter>\n        </activity>\n    </application>\n</manifest>
\n

i.e. add <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> after your first intent-filter. Please see https://forum.unity.com/threads/deep-linking-in-unity-2022-the-app-is-restarted.1447300/ for more info.

\n","isPage":false,"text":"\n\nIn the Project window, browse to Assets > Plugins > Android.\n\na) Note: in Unity versions 2021.2 and up this path doesn't exist by default. Please navigate to Edit > Project Settings > Player and under the Android Publishing Settings, enable Custom Main Manifest in the Build section. See https://docs.unity3d.com/Manual/deep-linking-android.html for more info.\n\nIf it doesn't already exist, create a new file and name it AndroidManifest.xml.\nPaste the following XML into the file, or, if you already have one, add the new keys from this XML to it.\nMake sure to replace 'sdk-powered-by-sequence' with the Url Scheme you set in SequenceConfig\n\n <?xml version="1.0" encoding="utf-8"?>\n <manifest\n xmlns:android="http://schemas.android.com/apk/res/android"\n xmlns:tools="http://schemas.android.com/tools"\n >\n <application>\n <activity\n android:name="com.unity3d.player.UnityPlayerActivity"\n android:theme="@style/UnityThemeSelector"\n >\n <intent-filter>\n <action android:name="android.intent.action.MAIN" />\n <category android:name="android.intent.category.LAUNCHER" />\n </intent-filter>\n <intent-filter>\n <action android:name="android.intent.action.VIEW" />\n <category android:name="android.intent.category.DEFAULT" />\n <category android:name="android.intent.category.BROWSABLE" />\n <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n </intent-filter>\n </activity>\n </application>\n </manifest>\nb) Note: Unity 2022 versions prior to 2022.3.7f1 and 2023 versions prior to 2023.1.7f1, 2023.2.0b3, or 2023.3.0a1 contain a bug with Android deep-linking. Please use this XML instead.\n<?xml version="1.0" encoding="utf-8"?>\n<manifest\n xmlns:android="http://schemas.android.com/apk/res/android"\n xmlns:tools="http://schemas.android.com/tools"\n>\n <application>\n <activity\n android:name="com.unity3d.player.UnityPlayerActivity"\n android:theme="@style/UnityThemeSelector"\n android:exported="true">\n <intent-filter>\n <action android:name="android.intent.action.MAIN" />\n <category android:name="android.intent.category.LAUNCHER" />\n </intent-filter>\n <meta-data android:name="unityplayer.UnityActivity" android:value="true" />\n <intent-filter>\n <action android:name="android.intent.action.VIEW" />\n <category android:name="android.intent.category.DEFAULT" />\n <category android:name="android.intent.category.BROWSABLE" />\n <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n </intent-filter>\n </activity>\n </application>\n</manifest>\ni.e. add <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> after your first intent-filter. Please see https://forum.unity.com/threads/deep-linking-in-unity-2022-the-app-is-restarted.1447300/ for more info.\n","title":"Android","titles":["Authentication","2. Social Sign in"]},"100":{"href":"/sdk/unity/authentication#webgl","html":"\n

Coming soon.

\n","isPage":false,"text":"\nComing soon.\n","title":"WebGL","titles":["Authentication","2. Social Sign in"]},"101":{"href":"/sdk/unity/authentication#connecting-with-waas","html":"\n

Once we've received the idToken from either email login or social sign in, the SDK will handle connecting with WaaS servers for you. If you're curious how this is done, please see ConnectToWaaS in WaaSLogin.cs.\nYou'll want to subscribe to the WaaSWallet.OnWaaSWalletCreated event. This can be done with the following code snippet:

\n
WaaSWallet.OnWaaSWalletCreated += OnWaaSWalletCreatedHandler;\n\npublic void OnWaaSWalletCreatedHandler(WaaSWallet wallet) {\n  // Do something\n}
\n

where OnWaaSWalletCreatedHandler is a function accepting a WaaSWallet as it's only parameter. If you're unfamiliar with working with events in Unity, check out this great Reddit post!

\n

Congratulations! You've just connected your user with WaaS, creating them a new account and non-custodial smart contract wallet as needed.

","isPage":false,"text":"\nOnce we've received the idToken from either email login or social sign in, the SDK will handle connecting with WaaS servers for you. If you're curious how this is done, please see ConnectToWaaS in WaaSLogin.cs.\nYou'll want to subscribe to the WaaSWallet.OnWaaSWalletCreated event. This can be done with the following code snippet:\nWaaSWallet.OnWaaSWalletCreated += OnWaaSWalletCreatedHandler;\n\npublic void OnWaaSWalletCreatedHandler(WaaSWallet wallet) {\n // Do something\n}\nwhere OnWaaSWalletCreatedHandler is a function accepting a WaaSWallet as it's only parameter. If you're unfamiliar with working with events in Unity, check out this great Reddit post!\nCongratulations! You've just connected your user with WaaS, creating them a new account and non-custodial smart contract wallet as needed.","title":"Connecting with WaaS","titles":["Authentication"]},"102":{"href":"/sdk/unity/deploy-contracts#contract-deployment","html":"\n

While, in general, we would recommend deploying your smart contracts via the Builder, we recognize that there are some use cases where deploying a smart contract from Unity (or a Made-With-Unity application) is useful.

\n

Contract deployment involves sending a transaction, which is done via an asynchronous Task. You can use await when calling WaaSWallet.DeployContract from within an async Task if you wish to obtain the ContractDeploymentReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnDeployContractComplete and WaaSWallet.OnDeployContractFailed events and call the WaaSWallet.DeployContract method from anywhere (without await).

\n

WaaSWallet.DeployContract is essentially a wrapper for a very special WaaSWallet.SendTransaction call and therefore, you can expect to still receive the WaaSWallet.OnSendTransactionComplete or WaaSWallet.OnSendTransactionFailed events in addition.

\n
public void OnDeployContractCompleteHandler(SuccessfulContractDeploymentReturn result) {\n    Address newlyDeployedContractAddress = result.DeployedContractAddress;\n\n    // Do something\n}\n\npublic void OnDeployContractFailedHandler(FailedContractDeploymentReturn result) {\n    // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n    wallet.OnDeployContractComplete += OnDeployContractCompleteHandler;\n    wallet.OnDeployContractFailed += OnDeployContractFailedHandler;\n}
\n

If you're unfamiliar with working with events in Unity, check out this great Reddit post!

\n

To deploy a contract you'll need to first compile your smart contract code into bytecode and add the bytecode as a hexadecimal string in one of your C# scripts.

\n

To deploy a smart contract, you can use this code snippet:

\n
string bytecode = "Here you'll paste your compiled bytecode"\n_wallet.DeployContract(Chain.Polygon, bytecode);
","isPage":true,"text":"\nWhile, in general, we would recommend deploying your smart contracts via the Builder, we recognize that there are some use cases where deploying a smart contract from Unity (or a Made-With-Unity application) is useful.\nContract deployment involves sending a transaction, which is done via an asynchronous Task. You can use await when calling WaaSWallet.DeployContract from within an async Task if you wish to obtain the ContractDeploymentReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnDeployContractComplete and WaaSWallet.OnDeployContractFailed events and call the WaaSWallet.DeployContract method from anywhere (without await).\nWaaSWallet.DeployContract is essentially a wrapper for a very special WaaSWallet.SendTransaction call and therefore, you can expect to still receive the WaaSWallet.OnSendTransactionComplete or WaaSWallet.OnSendTransactionFailed events in addition.\npublic void OnDeployContractCompleteHandler(SuccessfulContractDeploymentReturn result) {\n Address newlyDeployedContractAddress = result.DeployedContractAddress;\n\n // Do something\n}\n\npublic void OnDeployContractFailedHandler(FailedContractDeploymentReturn result) {\n // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n wallet.OnDeployContractComplete += OnDeployContractCompleteHandler;\n wallet.OnDeployContractFailed += OnDeployContractFailedHandler;\n}\nIf you're unfamiliar with working with events in Unity, check out this great Reddit post!\nTo deploy a contract you'll need to first compile your smart contract code into bytecode and add the bytecode as a hexadecimal string in one of your C# scripts.\nTo deploy a smart contract, you can use this code snippet:\nstring bytecode = "Here you'll paste your compiled bytecode"\n_wallet.DeployContract(Chain.Polygon, bytecode);","title":"Contract Deployment","titles":[]},"103":{"href":"/sdk/unity/installation#installation","html":"\n","isPage":true,"text":"\n","title":"Installation","titles":[]},"104":{"href":"/sdk/unity/installation#package-manager---recommended","html":"\n
    \n
  1. Ensure you have Git 2.14.0 or above installed on your machine
  2. \n
  3. Open Package Manager (Window > Package Manager)
  4. \n
  5. Click the "+" icon in the Package Manager window > "Add package from git URL..."
  6. \n
  7. Paste this url and click Add or press Enter on your keyboard https://github.com/0xsequence/sequence-unity.git?path=/Assets
  8. \n
  9. From Package Manager, click on "Samples"
  10. \n
  11. Import "Setup" from Samples\n\"Setup\"/
  12. \n
\n

a) This will import a Resources folder with the SequenceConfig scriptable object (more on this in Setup).

\n

b) This will also import an Editor folder with a Post Process Build script that will setup social sign in for you automatically on MacOS and iOS.

\n
    \n
  1. Import TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.
  2. \n
\n

\"Import

\n","isPage":false,"text":"\n\nEnsure you have Git 2.14.0 or above installed on your machine\nOpen Package Manager (Window > Package Manager)\nClick the "+" icon in the Package Manager window > "Add package from git URL..."\nPaste this url and click Add or press Enter on your keyboard https://github.com/0xsequence/sequence-unity.git?path=/Assets\nFrom Package Manager, click on "Samples"\nImport "Setup" from Samples\n\n\na) This will import a Resources folder with the SequenceConfig scriptable object (more on this in Setup).\nb) This will also import an Editor folder with a Post Process Build script that will setup social sign in for you automatically on MacOS and iOS.\n\nImport TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.\n\n\n","title":"Package Manager - Recommended","titles":["Installation"]},"105":{"href":"/sdk/unity/installation#samples","html":"\n

In addition to this documentation, we've also provided you with a few samples to help with using our SDK.

\n

These can be found by:

\n
    \n
  1. Opening Package Manager
  2. \n
  3. Finding our SDK "Sequence WaaS SDK"
  4. \n
  5. Click on "Samples"
  6. \n
  7. Click "Import" next to any sample you wish to install. This will create a Samples folder under Assets and import the sample there. The sample will be completely mutable as it lives within your Assets folder.
  8. \n
\n

\"Samples\"/

\n

The second sample "Demo Scene" is sample scene that showcases some of the features of our SDK. It serves as a useful supplement to the documentation.

\n

The third sample "Demo Tower Defense Game" is a sample game. We began with Unity's Tower Defense Template project and ripped out the save system to replace it with ERC1155s. When importing this sample game into your project, you may get a message "Script Updating Consent" that asks if you want to update the source files to the a newer API. This is because the template project was made on a much earlier version of Unity and some of the scripting APIs used by Unity have changed since the template project was created. You can simply click "Yes, just for these files". Note that, in order to play the demo game, there is some config you need to setup. However, even without configuring the game, we believe the Scripts within the project can be a useful resource when starting out.

\n

\"Update

\n","isPage":false,"text":"\nIn addition to this documentation, we've also provided you with a few samples to help with using our SDK.\nThese can be found by:\n\nOpening Package Manager\nFinding our SDK "Sequence WaaS SDK"\nClick on "Samples"\nClick "Import" next to any sample you wish to install. This will create a Samples folder under Assets and import the sample there. The sample will be completely mutable as it lives within your Assets folder.\n\n\nThe second sample "Demo Scene" is sample scene that showcases some of the features of our SDK. It serves as a useful supplement to the documentation.\nThe third sample "Demo Tower Defense Game" is a sample game. We began with Unity's Tower Defense Template project and ripped out the save system to replace it with ERC1155s. When importing this sample game into your project, you may get a message "Script Updating Consent" that asks if you want to update the source files to the a newer API. This is because the template project was made on a much earlier version of Unity and some of the scripting APIs used by Unity have changed since the template project was created. You can simply click "Yes, just for these files". Note that, in order to play the demo game, there is some config you need to setup. However, even without configuring the game, we believe the Scripts within the project can be a useful resource when starting out.\n\n","title":"Samples","titles":["Installation","Package Manager - Recommended"]},"106":{"href":"/sdk/unity/installation#manual","html":"\n

Installing via Package Manager will put the SDK in a read-only state - note: you will still be able to modify the UI when using Package Manager.

\n

For most use cases, this is ideal. However, we recognize that some advanced users will want the flexibility to edit the SDK as they see fit.

\n

Please note that if you do chose this route that updating the SDK will become more challenging because any changes you make will be overwritten and these changes can easily go unnoticed in a version control system. In general, we feel it is safer to import the SDK in read-only mode via Package Manager and write wrappers to extend as needed, but we empower you to work with our SDK how you see fit.

\n
    \n
  1. Add Newtonsoft.json to your project (if it isn't there already) via package manager. Click on the "+" icon in the Package Manager window > "Add package by name..." and add com.unity.nuget.newtonsoft-json.
  2. \n
  3. Download the latest release of the Sequence Unity SDK UnityPackage
  4. \n
  5. Drag the .unitypackage file into your project window and import it
  6. \n
  7. Import TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.
  8. \n
","isPage":false,"text":"\nInstalling via Package Manager will put the SDK in a read-only state - note: you will still be able to modify the UI when using Package Manager.\nFor most use cases, this is ideal. However, we recognize that some advanced users will want the flexibility to edit the SDK as they see fit.\nPlease note that if you do chose this route that updating the SDK will become more challenging because any changes you make will be overwritten and these changes can easily go unnoticed in a version control system. In general, we feel it is safer to import the SDK in read-only mode via Package Manager and write wrappers to extend as needed, but we empower you to work with our SDK how you see fit.\n\nAdd Newtonsoft.json to your project (if it isn't there already) via package manager. Click on the "+" icon in the Package Manager window > "Add package by name..." and add com.unity.nuget.newtonsoft-json.\nDownload the latest release of the Sequence Unity SDK UnityPackage\nDrag the .unitypackage file into your project window and import it\nImport TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.\n","title":"Manual","titles":["Installation"]},"107":{"href":"/sdk/unity/overview#introduction","html":"\n

The Sequence Unity Embedded Wallet SDK provides full Sequence Embedded Wallet and Indexer integration for your Unity Games, integrated with our own purpose-built for Unity SequenceEthereum library. That's right, no Nethereum required!

\n

This SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.

\n","isPage":true,"text":"\nThe Sequence Unity Embedded Wallet SDK provides full Sequence Embedded Wallet and Indexer integration for your Unity Games, integrated with our own purpose-built for Unity SequenceEthereum library. That's right, no Nethereum required!\nThis SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.\n","title":"Introduction","titles":[]},"108":{"href":"/sdk/unity/overview#requirements","html":"\n

Unity 2021.3.6f1 or later

\n","isPage":false,"text":"\nUnity 2021.3.6f1 or later\n\nAndroid\niOS\nPC standalone\nMac standalone -> (Mono builds only when using Social Sign in -> in our testing MacOS doesn't pick up custom URL schemes automatically unless you run some system commands first; these system commands only work on Mono -> see OpenIdAuthentication.PlatformSpecificSetup)\nWebGL (excluding Social Sign in)\n","title":"Requirements","titles":["Introduction"]},"109":{"href":"/sdk/unity/read-from-blockchain#read-from-blockchain","html":"\n

Reading from the blockchain is done using Unity-Native implementation of our Sequence Indexer.

\n

We recommend creating an instance of the ChainIndexer class. This will expose you to all the functionality offered by the IIndexer interface.

\n
IIndexer polygonIndexer = new ChainIndexer(Chain.Polygon);

ChainIndexer is essentially a wrapper of the Indexer static class which is fully documented here: https://docs.sequence.xyz/unity-sdk/indexer/guides.

","isPage":true,"text":"\nReading from the blockchain is done using Unity-Native implementation of our Sequence Indexer.\nWe recommend creating an instance of the ChainIndexer class. This will expose you to all the functionality offered by the IIndexer interface.\nIIndexer polygonIndexer = new ChainIndexer(Chain.Polygon);ChainIndexer is essentially a wrapper of the Indexer static class which is fully documented here: https://docs.sequence.xyz/unity-sdk/indexer/guides.","title":"Read from Blockchain","titles":[]},"110":{"href":"/sdk/unity/setup#setup","html":"\n
    \n
  1. \n

    Navigate to the Resources folder imported via the Setup sample and locate the SequenceConfig ScriptableObject

    \n

    a) If you imported the SDK manually, you will need to create a Resources folder and SequenceConfig

    \n

    b) Create a Resources folder located at Assets/Resources. The SDK uses Resources.Load to load the config ScriptableObject we'll create in the next step.

    \n

    c) On the top bar, click Assets > Create > Sequence > SequenceConfig and place the newly created ScriptableObject at the root of your Resources folder.

    \n
  2. \n
  3. \n

    Fill in SequenceConfig with the appropriate values for your project.

    \n

    a) Url Scheme - You must replace this with a string that is unique to your application. This is very important. Failure to do so will cause unexpected behaviour when signing in with social sign in and it will not work.

    \n

    b) Builder API Keys - These are found in the Builder under Settings > API Access Keys

    \n

    c) WaaS Config Key - This will be given to you by the Sequence team during WaaS onboarding

    \n
  4. \n
","isPage":true,"text":"\n\n\nNavigate to the Resources folder imported via the Setup sample and locate the SequenceConfig ScriptableObject\na) If you imported the SDK manually, you will need to create a Resources folder and SequenceConfig\nb) Create a Resources folder located at Assets/Resources. The SDK uses Resources.Load to load the config ScriptableObject we'll create in the next step.\nc) On the top bar, click Assets > Create > Sequence > SequenceConfig and place the newly created ScriptableObject at the root of your Resources folder.\n\n\nFill in SequenceConfig with the appropriate values for your project.\na) Url Scheme - You must replace this with a string that is unique to your application. This is very important. Failure to do so will cause unexpected behaviour when signing in with social sign in and it will not work.\nb) Builder API Keys - These are found in the Builder under Settings > API Access Keys\nc) WaaS Config Key - This will be given to you by the Sequence team during WaaS onboarding\n\n","title":"Setup","titles":[]},"111":{"href":"/sdk/unity/sign-messages#sign-messages","html":"\n

Signing a message is an asynchronous Task. You can use await when calling WaaSWallet.SignMessage from within an async Task if you wish to obtain the SignMessageReturn object directly. Or, you can take the recommended approach which is to setup a handler function for the WaaSWallet.OnSignMessageComplete event and call the WaaSWallet.SignMessage method from anywhere (without await). For example:

\n
public void OnSignMessageCompleteHandler(string signature) {\n    // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n    wallet.OnSignMessageComplete += OnSignMessageCompleteHandler;\n}
\n
_wallet.SignMessage(Chain.Polygon, "Message to sign");
\n

If you're unfamiliar with working with events in Unity, check out this great Reddit post!

","isPage":true,"text":"\nSigning a message is an asynchronous Task. You can use await when calling WaaSWallet.SignMessage from within an async Task if you wish to obtain the SignMessageReturn object directly. Or, you can take the recommended approach which is to setup a handler function for the WaaSWallet.OnSignMessageComplete event and call the WaaSWallet.SignMessage method from anywhere (without await). For example:\npublic void OnSignMessageCompleteHandler(string signature) {\n // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n wallet.OnSignMessageComplete += OnSignMessageCompleteHandler;\n}\n_wallet.SignMessage(Chain.Polygon, "Message to sign");\nIf you're unfamiliar with working with events in Unity, check out this great Reddit post!","title":"Sign Messages","titles":[]},"112":{"href":"/sdk/unity/wallet-ui#wallet-ui","html":"\n

As a Wallet as a Service product, this SDK requires no UI. However, as we expect some apps will still choose to provide some form of wallet UI to users, we are making efforts to provide a default UI for you to use.

\n

This UI can be found under SequenceExamples.

\n

To add the UI to your scene, you can add the WalletPanel prefab found under SequenceExamples > Prefabs. It is opened using the Open method; you must provide an IWallet (e.g. a WaaSWallet) as an argument.

\n

You'll notice that the UI is still a work in progress and is also using mocks in some places (fetching transaction history and prices). These will be replaced in coming updates of the SDK, but please feel free to replace them on your own (and for bonus points, submit a PR!).

\n","isPage":true,"text":"\nAs a Wallet as a Service product, this SDK requires no UI. However, as we expect some apps will still choose to provide some form of wallet UI to users, we are making efforts to provide a default UI for you to use.\nThis UI can be found under SequenceExamples.\nTo add the UI to your scene, you can add the WalletPanel prefab found under SequenceExamples > Prefabs. It is opened using the Open method; you must provide an IWallet (e.g. a WaaSWallet) as an argument.\nYou'll notice that the UI is still a work in progress and is also using mocks in some places (fetching transaction history and prices). These will be replaced in coming updates of the SDK, but please feel free to replace them on your own (and for bonus points, submit a PR!).\n","title":"Wallet UI","titles":[]},"113":{"href":"/sdk/unity/wallet-ui#how-it-works","html":"\n

The sample Sequence UI is comprised of a few important components.

\n","isPage":false,"text":"\nThe sample Sequence UI is comprised of a few important components.\n","title":"How It Works","titles":["Wallet UI"]},"114":{"href":"/sdk/unity/wallet-ui#ui-customizability","html":"\n

Built on Unity's UI system, the UI is entirely customizable. We encourage you to make it your own and "beautify" it to suit your app!

\n","isPage":false,"text":"\nBuilt on Unity's UI system, the UI is entirely customizable. We encourage you to make it your own and "beautify" it to suit your app!\n","title":"UI Customizability","titles":["Wallet UI"]},"115":{"href":"/sdk/unity/wallet-ui#color-scheme-manager","html":"\n

To help you with the process, we've added a basic ColorSchemeManager script which you can experiment with in our Demo scene, which can be imported via Package Manager.

\n

To use the ColorSchemeManager, please perform the following in edit mode.

\n
    \n
  1. Create a Color Scheme scriptable object by navigating to the top bar Assets > Create > Sequence > Color Scheme and give it an appropriate name.
  2. \n
  3. Set the desired colors in your new scriptable object - don't forget to set the alpha values! Unity defaults these to 0.
  4. \n
  5. Locate the ColorSchemeManager MonoBehaviour in your scene in the inspector. In our demo scene, this is attached to the SequenceCanvas gameObject.
  6. \n
  7. Set your newly created scriptable object as the Color Scheme.
  8. \n
  9. Click "Apply". Note that this may take a few seconds to apply and you may need to click apply multiple times due to the way Unity refreshes after changes in the inspector (version dependant).
  10. \n
\n

The ColorSchemeManager isn't meant to give you perfect results and the perfect UI right out of the gate, but we hope it saves you some time on the way there!

\n","isPage":false,"text":"\nTo help you with the process, we've added a basic ColorSchemeManager script which you can experiment with in our Demo scene, which can be imported via Package Manager.\nTo use the ColorSchemeManager, please perform the following in edit mode.\n\nCreate a Color Scheme scriptable object by navigating to the top bar Assets > Create > Sequence > Color Scheme and give it an appropriate name.\nSet the desired colors in your new scriptable object - don't forget to set the alpha values! Unity defaults these to 0.\nLocate the ColorSchemeManager MonoBehaviour in your scene in the inspector. In our demo scene, this is attached to the SequenceCanvas gameObject.\nSet your newly created scriptable object as the Color Scheme.\nClick "Apply". Note that this may take a few seconds to apply and you may need to click apply multiple times due to the way Unity refreshes after changes in the inspector (version dependant).\n\nThe ColorSchemeManager isn't meant to give you perfect results and the perfect UI right out of the gate, but we hope it saves you some time on the way there!\n","title":"Color Scheme Manager","titles":["Wallet UI","UI Customizability"]},"116":{"href":"/sdk/unity/wallet-ui#more-customization-tools-coming-soon","html":"\n

We hope to bring you more convenience tools to help you customize the UI quicker and easier! While we have ideas of our own, nobody understands your needs better than you do, so please don't hesitate to reach out to us with any ideas you have! Or better yet, submit a PR!

","isPage":false,"text":"\nWe hope to bring you more convenience tools to help you customize the UI quicker and easier! While we have ideas of our own, nobody understands your needs better than you do, so please don't hesitate to reach out to us with any ideas you have! Or better yet, submit a PR!","title":"More Customization Tools Coming Soon","titles":["Wallet UI","UI Customizability"]},"117":{"href":"/sdk/unity/write-to-blockchain#write-to-blockchain","html":"\n

The blockchain can be thought of as a general-purpose, publically viewable and verified, database. To write to a blockchain, similar to with a typical database, you must make a transaction.

\n

Typically, creating a blockchain transaction is rather complex, but WaaS handles that complexity for you and exposes 5 types of Transactions.

\n

Sending a transaction is an asynchronous Task. You can use await when calling WaaSWallet.SendTransaction from within an async Task if you wish to obtain the TransactionReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnSendTransactionComplete and WaaSWallet.OnSendTransactionFailed events and call the WaaSWallet.SendTransaction method from anywhere (without await). For example:

\n
public void OnSendTransactionCompleteHandler(SuccessfulTransactionReturn result) {\n    // Do something\n}\n\npublic void OnSendTransactionFailedHandler(FailedTransactionReturn result) {\n    // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n    wallet.OnSendTransactionComplete += OnSendTransactionCompleteHandler;\n    wallet.OnSendTransactionFailed += OnSendTransactionFailedHandler;\n}
\n

If you're unfamiliar with working with events in Unity, check out this great Reddit post!

\n","isPage":true,"text":"\nThe blockchain can be thought of as a general-purpose, publically viewable and verified, database. To write to a blockchain, similar to with a typical database, you must make a transaction.\nTypically, creating a blockchain transaction is rather complex, but WaaS handles that complexity for you and exposes 5 types of Transactions.\nSending a transaction is an asynchronous Task. You can use await when calling WaaSWallet.SendTransaction from within an async Task if you wish to obtain the TransactionReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnSendTransactionComplete and WaaSWallet.OnSendTransactionFailed events and call the WaaSWallet.SendTransaction method from anywhere (without await). For example:\npublic void OnSendTransactionCompleteHandler(SuccessfulTransactionReturn result) {\n // Do something\n}\n\npublic void OnSendTransactionFailedHandler(FailedTransactionReturn result) {\n // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n wallet.OnSendTransactionComplete += OnSendTransactionCompleteHandler;\n wallet.OnSendTransactionFailed += OnSendTransactionFailedHandler;\n}\nIf you're unfamiliar with working with events in Unity, check out this great Reddit post!\n","title":"Write to Blockchain","titles":[]},"118":{"href":"/sdk/unity/write-to-blockchain#rawtransaction","html":"\n

The most basic form of a Transaction, a raw transaction is very useful to send ETH or the gas currency of the network you are interacting with to an Address.

\n

For example, to send one MATIC to 0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f you can use this snippet:

\n
_wallet.SendTransaction(\n    Chain.Polygon,\n    new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction("0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f", DecimalNormalizer.Normalize(1))\n    });
\n

where _wallet is a WaaSWallet.

\n

Note: the EVM does not support floating point numbers. As a result, token (and gas currency) values are represented by whole numbers and a "decimals" value. 1 ETH (or in the example above 1 MATIC) is represented as 1000000000000000000 (1 * 10^18) as ETH, MATIC, and most gas currencies have a "decimals" value of 18. DecimalNormalizer.Normalize (above) is a basic helper function that will return input value * 10^decimals and optionally accepts a "decimals" value as a second parameter (defaulting to 18 when not provided).

\n

Additionally, you can include data with a raw transaction in hexadecimal format as a string. For more on this, please see the advanced section of this documentation.

\n","isPage":false,"text":"\nThe most basic form of a Transaction, a raw transaction is very useful to send ETH or the gas currency of the network you are interacting with to an Address.\nFor example, to send one MATIC to 0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f you can use this snippet:\n_wallet.SendTransaction(\n Chain.Polygon,\n new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction("0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f", DecimalNormalizer.Normalize(1))\n });\nwhere _wallet is a WaaSWallet.\nNote: the EVM does not support floating point numbers. As a result, token (and gas currency) values are represented by whole numbers and a "decimals" value. 1 ETH (or in the example above 1 MATIC) is represented as 1000000000000000000 (1 * 10^18) as ETH, MATIC, and most gas currencies have a "decimals" value of 18. DecimalNormalizer.Normalize (above) is a basic helper function that will return input value * 10^decimals and optionally accepts a "decimals" value as a second parameter (defaulting to 18 when not provided).\nAdditionally, you can include data with a raw transaction in hexadecimal format as a string. For more on this, please see the advanced section of this documentation.\n","title":"RawTransaction","titles":["Write to Blockchain"]},"119":{"href":"/sdk/unity/write-to-blockchain#senderc20","html":"\n

An ERC20 token is the fungible token standard. You can easily deploy an ERC20 contract and mint tokens using our Builder. Learn how in our Builder documentation.

\n

To send an ERC20 token transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new SendERC20(\n            erc20TokenAddress,\n            ToAddress,\n            AmountAsString),\n    });
\n

Note: as above, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format. Please make sure to include the optional "decimals" int parameter if your ERC20 token has a "decimals" value that is not 18. If you're not sure how many "decimals" your ERC20 has, this can be easily read on the Builder using the "decimals" method under "Read Contract".

\n","isPage":false,"text":"\nAn ERC20 token is the fungible token standard. You can easily deploy an ERC20 contract and mint tokens using our Builder. Learn how in our Builder documentation.\nTo send an ERC20 token transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new SendERC20(\n erc20TokenAddress,\n ToAddress,\n AmountAsString),\n });\nNote: as above, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format. Please make sure to include the optional "decimals" int parameter if your ERC20 token has a "decimals" value that is not 18. If you're not sure how many "decimals" your ERC20 has, this can be easily read on the Builder using the "decimals" method under "Read Contract".\n","title":"sendERC20","titles":["Write to Blockchain"]},"120":{"href":"/sdk/unity/write-to-blockchain#complex-erc20-interactions","html":"\n

For interactions with ERC20 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC20 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.

\n

First, you'll need to create an ERC20 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC20 standard (not recommended).

\n
ERC20 myToken = new ERC20(myTokenAddress);
\n

with this reference, you'll have access to all of the methods implemented by the ERC20 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:

\n
ERC20 myToken = new ERC20(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(myToken.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(amount))),\n    });
\n","isPage":false,"text":"\nFor interactions with ERC20 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC20 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.\nFirst, you'll need to create an ERC20 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC20 standard (not recommended).\nERC20 myToken = new ERC20(myTokenAddress);\nwith this reference, you'll have access to all of the methods implemented by the ERC20 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:\nERC20 myToken = new ERC20(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(myToken.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(amount))),\n });\n","title":"Complex ERC20 Interactions","titles":["Write to Blockchain","sendERC20"]},"121":{"href":"/sdk/unity/write-to-blockchain#senderc721","html":"\n

An ERC721 token is the non-fungible standard, you've probably heard of them as NFTs. You can easily deploy an ERC721 contract and mint tokens using our Builder. Learn how in our Builder documentation.

\n

To send an ERC721 token transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new SendERC721(\n            erc721TokenAddress,\n            ToAddress,\n            TokenIdAsString),\n    });
\n","isPage":false,"text":"\nAn ERC721 token is the non-fungible standard, you've probably heard of them as NFTs. You can easily deploy an ERC721 contract and mint tokens using our Builder. Learn how in our Builder documentation.\nTo send an ERC721 token transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new SendERC721(\n erc721TokenAddress,\n ToAddress,\n TokenIdAsString),\n });\n","title":"sendERC721","titles":["Write to Blockchain"]},"122":{"href":"/sdk/unity/write-to-blockchain#complex-erc721-interactions","html":"\n

For interactions with ERC721 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC21 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.

\n

First, you'll need to create an ERC721 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC721 standard (not recommended).

\n
ERC721 myToken = new ERC721(myTokenAddress);
\n

with this reference, you'll have access to all of the methods implemented by the ERC721 class. Any method that returns a CallContractFunction, e.g. SafeMint, can be used when creating a RawTransaction with WaaS. For example:

\n
ERC721 myToken = new ERC721(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(myToken.SafeMint(toAddress)),\n    });
\n","isPage":false,"text":"\nFor interactions with ERC721 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC21 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.\nFirst, you'll need to create an ERC721 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC721 standard (not recommended).\nERC721 myToken = new ERC721(myTokenAddress);\nwith this reference, you'll have access to all of the methods implemented by the ERC721 class. Any method that returns a CallContractFunction, e.g. SafeMint, can be used when creating a RawTransaction with WaaS. For example:\nERC721 myToken = new ERC721(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(myToken.SafeMint(toAddress)),\n });\n","title":"Complex ERC721 Interactions","titles":["Write to Blockchain","sendERC721"]},"123":{"href":"/sdk/unity/write-to-blockchain#senderc1155","html":"\n

An ERC1155 token is the multi token standard, often referred to as SFTs (semi-fungible tokens). As co-creators of the ERC1155 standard we are firm believers in its unparalleled usefulness for games. You can easily deploy an ERC1155 contract and mint tokens using our Builder. Learn how in our Builder documentation.

\n

To send an ERC1155 token transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new SendERC1155(\n            erc1155TokenAddress,\n            ToAddress,\n            new SendERC1155Values[]\n            {\n                new SendERC1155Values(TokenIdAsString, AmountAsString),\n                ...\n            }),\n    });
\n

Note: you can send multiple token ids from the same ERC1155 contract in a single transaction by including multiple SendERC1155Values objects in the transaction

\n","isPage":false,"text":"\nAn ERC1155 token is the multi token standard, often referred to as SFTs (semi-fungible tokens). As co-creators of the ERC1155 standard we are firm believers in its unparalleled usefulness for games. You can easily deploy an ERC1155 contract and mint tokens using our Builder. Learn how in our Builder documentation.\nTo send an ERC1155 token transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new SendERC1155(\n erc1155TokenAddress,\n ToAddress,\n new SendERC1155Values[]\n {\n new SendERC1155Values(TokenIdAsString, AmountAsString),\n ...\n }),\n });\nNote: you can send multiple token ids from the same ERC1155 contract in a single transaction by including multiple SendERC1155Values objects in the transaction\n","title":"sendERC1155","titles":["Write to Blockchain"]},"124":{"href":"/sdk/unity/write-to-blockchain#complex-erc1155-interactions","html":"\n

For interactions with ERC1155 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC1155 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.

\n

First, you'll need to create an ERC1155 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC1155 standard (not recommended).

\n
ERC1155 myToken = new ERC1155(myTokenAddress);
\n

with this reference, you'll have access to all of the methods implemented by the ERC1155 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:

\n
ERC1155 myToken = new ERC1155(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(myToken.Mint(toAddress, tokenId, amount)),\n    });
\n","isPage":false,"text":"\nFor interactions with ERC1155 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC1155 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.\nFirst, you'll need to create an ERC1155 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC1155 standard (not recommended).\nERC1155 myToken = new ERC1155(myTokenAddress);\nwith this reference, you'll have access to all of the methods implemented by the ERC1155 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:\nERC1155 myToken = new ERC1155(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(myToken.Mint(toAddress, tokenId, amount)),\n });\n","title":"Complex ERC1155 Interactions","titles":["Write to Blockchain","sendERC1155"]},"125":{"href":"/sdk/unity/write-to-blockchain#delayedencode","html":"\n

When calling a smart contract on an EVM-based network, the client goes through a complex process known as "ABI encoding" where the function signature you want to call as well as the parameters you're providing are encoded into a binary format. This process is complicated and error-prone so we've abstracted it all away so that you don't have to deal with it. But, if you're curious to learn how it works, please see this document.

\n

A DelayedEncode transaction allows you to call any method on an arbitrary smart contract, allowing us to handle the complicated ABI encoding process.

\n

To send a DelayedEncode transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n            ContractABIAsString,\n            ParametersAsObjectArray,\n            FunctionNameAsString)),\n    });
\n

Let's examine the above to get a better understanding of some of the variables that may be non-obvious.

\n

ValueAsString: This will usually be "0" unless you are calling a payable method denoted by the payable keyword in the smart contract definition. If you are calling a payable method, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format.

\n

ContractABIAsString: This can either be the entire ABI or just the function you plan on interacting with. If you're not familiar with ABIs, we'd recommend copy-pasting the function signature (with parameters) from the contract source code on Etherscan (or the appropriate block explorer for your network) and removing the whitespace and variable names.

\n

ParametersAsObjectArray: The parameters you want to provide to the method you wish to call. No need to provide the parameter names, just their values in the order they appear in the ABI. Provide parameters in string format when in doubt.

\n

FunctionNameAsString: The name of the function you want to call as it appears in the ABI (or source code). Exclude parentheses and parameters.

\n

Putting this together, an example of using delayed encode to call the "mint" function on an ERC20 would look like this:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new DelayedEncode(ContractAddress, "0", new DelayedEncodeData(\n            "mint(address,uint256)",\n            new object[]\n            {\n                ToAddress, DecimalNormalizer.Normalize(1)\n            },\n            "mint")),\n    });
\n","isPage":false,"text":"\nWhen calling a smart contract on an EVM-based network, the client goes through a complex process known as "ABI encoding" where the function signature you want to call as well as the parameters you're providing are encoded into a binary format. This process is complicated and error-prone so we've abstracted it all away so that you don't have to deal with it. But, if you're curious to learn how it works, please see this document.\nA DelayedEncode transaction allows you to call any method on an arbitrary smart contract, allowing us to handle the complicated ABI encoding process.\nTo send a DelayedEncode transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n ContractABIAsString,\n ParametersAsObjectArray,\n FunctionNameAsString)),\n });\nLet's examine the above to get a better understanding of some of the variables that may be non-obvious.\nValueAsString: This will usually be "0" unless you are calling a payable method denoted by the payable keyword in the smart contract definition. If you are calling a payable method, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format.\nContractABIAsString: This can either be the entire ABI or just the function you plan on interacting with. If you're not familiar with ABIs, we'd recommend copy-pasting the function signature (with parameters) from the contract source code on Etherscan (or the appropriate block explorer for your network) and removing the whitespace and variable names.\nParametersAsObjectArray: The parameters you want to provide to the method you wish to call. No need to provide the parameter names, just their values in the order they appear in the ABI. Provide parameters in string format when in doubt.\nFunctionNameAsString: The name of the function you want to call as it appears in the ABI (or source code). Exclude parentheses and parameters.\nPutting this together, an example of using delayed encode to call the "mint" function on an ERC20 would look like this:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new DelayedEncode(ContractAddress, "0", new DelayedEncodeData(\n "mint(address,uint256)",\n new object[]\n {\n ToAddress, DecimalNormalizer.Normalize(1)\n },\n "mint")),\n });\n","title":"DelayedEncode","titles":["Write to Blockchain"]},"126":{"href":"/sdk/unity/write-to-blockchain#batch-transactions","html":"\n

Using the magic of the Sequence Smart Contract wallet, our SDK allows you to seemlessly batch transactions together. Batching transactions together is extremely beneficial as it provides material gas savings and allows you to create complex transactions, that either all pass or all fail, without deploying custom smart contracts for each bespoke use case, opening a whole new realm of design possibilities!

\n

Sending a batch transaction is easy! Simply include multiple transactions, of any type, in your transaction array when making the SendTransaction request.

\n

For example - sending a transaction of each type in a batch:

\n
_wallet.SendTransaction(\n    Chain.Polygon,\n    new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(ToAddress, DecimalNormalizer.Normalize(1)),\n        new SendERC20(\n            erc20TokenAddress,\n            ToAddress,\n            AmountAsString),\n        new RawTransaction(new ERC20(erc20TokenAddress).Burn(DecimalNormalizer.NormalizeAsBigInteger(amount))),\n        new SendERC721(\n            erc721TokenAddress,\n            ToAddress,\n            TokenIdAsString),\n        new SendERC1155(\n            erc1155TokenAddress,\n            ToAddress,\n            new SendERC1155Values[]\n            {\n                new SendERC1155Values(TokenIdAsString, AmountAsString),\n                ...\n            }),\n        new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n            ContractABIAsString,\n            ParametersAsObjectArray,\n            FunctionNameAsString)),\n    });
\n

Since these transactions are all batched into a single transaction by the Sequence Smart Contract Wallet before being submitted to the network, you will receive only one transaction receipt.

","isPage":false,"text":"\nUsing the magic of the Sequence Smart Contract wallet, our SDK allows you to seemlessly batch transactions together. Batching transactions together is extremely beneficial as it provides material gas savings and allows you to create complex transactions, that either all pass or all fail, without deploying custom smart contracts for each bespoke use case, opening a whole new realm of design possibilities!\nSending a batch transaction is easy! Simply include multiple transactions, of any type, in your transaction array when making the SendTransaction request.\nFor example - sending a transaction of each type in a batch:\n_wallet.SendTransaction(\n Chain.Polygon,\n new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(ToAddress, DecimalNormalizer.Normalize(1)),\n new SendERC20(\n erc20TokenAddress,\n ToAddress,\n AmountAsString),\n new RawTransaction(new ERC20(erc20TokenAddress).Burn(DecimalNormalizer.NormalizeAsBigInteger(amount))),\n new SendERC721(\n erc721TokenAddress,\n ToAddress,\n TokenIdAsString),\n new SendERC1155(\n erc1155TokenAddress,\n ToAddress,\n new SendERC1155Values[]\n {\n new SendERC1155Values(TokenIdAsString, AmountAsString),\n ...\n }),\n new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n ContractABIAsString,\n ParametersAsObjectArray,\n FunctionNameAsString)),\n });\nSince these transactions are all batched into a single transaction by the Sequence Smart Contract Wallet before being submitted to the network, you will receive only one transaction receipt.","title":"Batch Transactions","titles":["Write to Blockchain"]},"127":{"href":"/sdk/unreal/api-integration#api-integration","html":"\n","isPage":true,"text":"\n","title":"API Integration","titles":[]},"128":{"href":"/sdk/unreal/api-integration#sequence-api","html":"\n

After you've completed initial authentication and have intercepted the credentials either through your UI or ours, to use the Sequence API you'll need to create a [USequenceWallet] by using:

\n
`[USequenceWallet * Api = USequenceWallet(CredentialsIn)]` or `[USequenceWallet * Api = USequenceWallet::Make(CredentialsIn, ProviderURL)]`
\n

Once you have your [USequenceWallet] UObject call [Api>RegisterSession(OnSuccess,GenericFailure)] this will register your credentials with the Sequence API. Note not calling Register prior to make any others calls will result in errors as a UserWallet hasn't been supplied until this point.

\n

`*

\n

Assuming you've setup your controlling Actor with the [Sequence_Pawn_Component_BP]\nThe sequence pawn component has functions to do the following:

\n

Setup Sequence (sets up the sequence based systems), requires playerController input

\n

Show GUI Shows the UI

\n

Hide GUI Hides the UI

\n

GUI Visible Simple Visibility test for the UI

\n

Switch Platform (Switches which mode the UI will be in and how it will be displayed)

\n

Note: this doesn't rotate the application into any one view it just make the UI responsive to that type of view.

\n

Modes:

\n\n

`*

\n","isPage":false,"text":"\nAfter you've completed initial authentication and have intercepted the credentials either through your UI or ours, to use the Sequence API you'll need to create a [USequenceWallet] by using:\n`[USequenceWallet * Api = USequenceWallet(CredentialsIn)]` or `[USequenceWallet * Api = USequenceWallet::Make(CredentialsIn, ProviderURL)]`\nOnce you have your [USequenceWallet] UObject call [Api>RegisterSession(OnSuccess,GenericFailure)] this will register your credentials with the Sequence API. Note not calling Register prior to make any others calls will result in errors as a UserWallet hasn't been supplied until this point.\n`*\nAssuming you've setup your controlling Actor with the [Sequence_Pawn_Component_BP]\nThe sequence pawn component has functions to do the following:\nSetup Sequence (sets up the sequence based systems), requires playerController input\nShow GUI Shows the UI\nHide GUI Hides the UI\nGUI Visible Simple Visibility test for the UI\nSwitch Platform (Switches which mode the UI will be in and how it will be displayed)\nNote: this doesn't rotate the application into any one view it just make the UI responsive to that type of view.\nModes:\n\nDesktop (default)\nMobile Portrait (Custom built for portrait mode reducing the X width where ever possible)\nMobile Landscape\n\n`*\n","title":"Sequence API","titles":["API Integration",null]},"129":{"href":"/sdk/unreal/api-integration#sequence-unreal-api","html":"\n

The Sequence Unreal plugin is broken up into a few different parts in order to manage all of the differing functionality. Here we'll go through each parts purpose then summarize how to use them all together below

\n

The SDK automatically stores credentials on disk in the following cases:

\n
    \n
  1. On Successful Auth
  2. \n
  3. On Successful Registering of a session
  4. \n
  5. On Successful Closing of a session
  6. \n
\n","isPage":false,"text":"\nThe Sequence Unreal plugin is broken up into a few different parts in order to manage all of the differing functionality. Here we'll go through each parts purpose then summarize how to use them all together below\nThe SDK automatically stores credentials on disk in the following cases:\n\nOn Successful Auth\nOn Successful Registering of a session\nOn Successful Closing of a session\n\n","title":"Sequence Unreal API","titles":["API Integration",null]},"130":{"href":"/sdk/unreal/api-integration#usequencewallet","html":"\n

To get a USequenceWallet call either:

\n
USequenceWallet::Make(FCredentials_BE CredentialsIn)\nUSequenceWallet::Make(FCredentials_BE CredentialsIn, FString ProviderURL)
\n

Where the Credentials you give are the credentials you received from the UAuthenticator when [AuthSuccess] fires, or you can use the call Auth->[GetStoredCredentials](), where Auth is of the type [UAuthenticator]. If you are using StoredCredentials please ensure they are valid by checking the wrapping Structs FStoredCredentials_BE.GetValid() flag returned from [GetStoredCredentials], the providerURL is the url of the provider you wish to use.

\n

Once you have your [USequenceWallet] UObject please ensure that you've registered the session using [RegisterSession] before attempting to make other calls to the API.

\n","isPage":false,"text":"\nTo get a USequenceWallet call either:\nUSequenceWallet::Make(FCredentials_BE CredentialsIn)\nUSequenceWallet::Make(FCredentials_BE CredentialsIn, FString ProviderURL)\nWhere the Credentials you give are the credentials you received from the UAuthenticator when [AuthSuccess] fires, or you can use the call Auth->[GetStoredCredentials](), where Auth is of the type [UAuthenticator]. If you are using StoredCredentials please ensure they are valid by checking the wrapping Structs FStoredCredentials_BE.GetValid() flag returned from [GetStoredCredentials], the providerURL is the url of the provider you wish to use.\nOnce you have your [USequenceWallet] UObject please ensure that you've registered the session using [RegisterSession] before attempting to make other calls to the API.\n","title":"USequenceWallet","titles":["API Integration",null]},"131":{"href":"/sdk/unreal/api-integration#sequence-api-methods","html":"\n

We make use of TFunctions with some callbacks:

\n
TSuccessCallback\nconst TFunction<void(FString)> OnResponse = `[Capturable variables]`(const FString& Response)\n{\n//callback body where we can process Response\n};\n \nFFailureCallback\nconst TFunction<void(FSequenceError)> OnFailureTest = `[Capturable variables]`(const FSequenceError& Error)\n{\n//callback body where we can process Error\n};
\n

One thing to be aware of is keep an eye on capturables if you have lots of nested TFunctions it's very easy to miss something and start over writing memory. If you require lots of nesting swapping to a better approach using UFUNCTION callbacks helps to avoid these problems similar to how things are done in [UAuthenticator.h/cpp]

","isPage":false,"text":"\nWe make use of TFunctions with some callbacks:\nTSuccessCallback\nconst TFunction<void(FString)> OnResponse = `[Capturable variables]`(const FString& Response)\n{\n//callback body where we can process Response\n};\n \nFFailureCallback\nconst TFunction<void(FSequenceError)> OnFailureTest = `[Capturable variables]`(const FSequenceError& Error)\n{\n//callback body where we can process Error\n};\nOne thing to be aware of is keep an eye on capturables if you have lots of nested TFunctions it's very easy to miss something and start over writing memory. If you require lots of nesting swapping to a better approach using UFUNCTION callbacks helps to avoid these problems similar to how things are done in [UAuthenticator.h/cpp]","title":"Sequence API Methods","titles":["API Integration",null]},"132":{"href":"/sdk/unreal/authentication#authentication","html":"\n","isPage":true,"text":"\n","title":"Authentication","titles":[]},"133":{"href":"/sdk/unreal/authentication#custom-ui-integration","html":"\n

In a C++ backend with a series of pass through [UFUNCTIONS] setup similarly to [SequenceBackendManager.h/.cpp]. Each of these calls are implemented in [UAuthenticator] you just need to pass through the data with YOUR UAuthenticator UObject

\n
//This call is platform dependent on windows & mac this is required for SSO WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nFString GetLoginURL(const ESocialSigninType& Type); \n \n//This Call is made after you've collected the ID_Token (Mac & Windows only) WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid SocialLogin(const FString& IDTokenIn);\n \n//This Call is made after you've collected the email address from the Users in the UI\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailLogin(const FString& EmailIn);\n \n//This is call is made after the Delegate `[AuthRequiresCode]` is fired\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailCode(const FString& CodeIn);\n \n//Optional call used to check if the credentials on disk are valid or not//\nUFUNCTION(BlueprintCallable, Category = "Login")\nbool StoredCredentialsValid();
\n

To start you'll want to create a [UAuthenticator] UObject like so [UAuthenticator + Auth = NewObject<UAuthenticator>()], this UObject manages the authentication side of Sequence.

\n

Be sure to bind to the Delegates for [AuthSuccess], [AuthFailure], [AuthRequiresCode] prior to making any signin calls You can bind to these delegates like so:

\n
this->authenticator->AuthRequiresCode.AddDynamic(this, &AYourClass::YourCallReadyToReceiveCode);\nthis->authenticator->AuthFailure.AddDynamic(this, &AYourClass::YourCallShowAuthFailureScreen);
\n

In the case of [AuthSuccess] since a parameter is also passed we bind to it like this

\n
FScriptDelegate del;\ndel.BindUFunction(this, "CallShowAuthSuccessScreen");\nthis->authenticator->AuthSuccess.Add(del);
\n

Where [CallShowAuthSuccessScreen] is defined in SequenceBackendManager.h like so:

\n
UFUNCTION()\nvoid CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn);
\n

And in SequenceBackendManager.cpp like so:

\n
void ASequenceBackendManager::CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn) \n{\nthis->Credentials = CredentialsIn;\nif (this->ShowAuthSuccessDelegate.IsBound())\n  this->ShowAuthSuccessDelegate.Broadcast(Credentials);\nelse\n  UE_LOG(LogTemp, Error, TEXT("`[Nothing bound to: ShowAuthSuccessDelegate]`"));\n}
\n","isPage":false,"text":"\nIn a C++ backend with a series of pass through [UFUNCTIONS] setup similarly to [SequenceBackendManager.h/.cpp]. Each of these calls are implemented in [UAuthenticator] you just need to pass through the data with YOUR UAuthenticator UObject\n//This call is platform dependent on windows & mac this is required for SSO WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nFString GetLoginURL(const ESocialSigninType& Type); \n \n//This Call is made after you've collected the ID_Token (Mac & Windows only) WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid SocialLogin(const FString& IDTokenIn);\n \n//This Call is made after you've collected the email address from the Users in the UI\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailLogin(const FString& EmailIn);\n \n//This is call is made after the Delegate `[AuthRequiresCode]` is fired\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailCode(const FString& CodeIn);\n \n//Optional call used to check if the credentials on disk are valid or not//\nUFUNCTION(BlueprintCallable, Category = "Login")\nbool StoredCredentialsValid();\nTo start you'll want to create a [UAuthenticator] UObject like so [UAuthenticator + Auth = NewObject<UAuthenticator>()], this UObject manages the authentication side of Sequence.\nBe sure to bind to the Delegates for [AuthSuccess], [AuthFailure], [AuthRequiresCode] prior to making any signin calls You can bind to these delegates like so:\nthis->authenticator->AuthRequiresCode.AddDynamic(this, &AYourClass::YourCallReadyToReceiveCode);\nthis->authenticator->AuthFailure.AddDynamic(this, &AYourClass::YourCallShowAuthFailureScreen);\nIn the case of [AuthSuccess] since a parameter is also passed we bind to it like this\nFScriptDelegate del;\ndel.BindUFunction(this, "CallShowAuthSuccessScreen");\nthis->authenticator->AuthSuccess.Add(del);\nWhere [CallShowAuthSuccessScreen] is defined in SequenceBackendManager.h like so:\nUFUNCTION()\nvoid CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn);\nAnd in SequenceBackendManager.cpp like so:\nvoid ASequenceBackendManager::CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn) \n{\nthis->Credentials = CredentialsIn;\nif (this->ShowAuthSuccessDelegate.IsBound())\n this->ShowAuthSuccessDelegate.Broadcast(Credentials);\nelse\n UE_LOG(LogTemp, Error, TEXT("`[Nothing bound to: ShowAuthSuccessDelegate]`"));\n}\n","title":"Custom UI Integration","titles":["Authentication",null]},"134":{"href":"/sdk/unreal/authentication#email-based-authentication","html":"\n
    \n
  1. \n

    To start email based authentication you'll start it with this call [EmailLogin(const FString& EmailIn)], supplying an email you've collected from the User in your GUI.

    \n
  2. \n
  3. \n

    Next [AuthRequiresCode] will fire when the backend is ready to receive the Code from your UI. Collect this code from your GUI and send it to the authenticator using [EmailCode(CodeIn)].

    \n
  4. \n
  5. \n

    Finally [AuthSuccess] will fire with a Credentials_BE struct as a parameter. This is your non registered credentials from EmailAuth. You are done Email Based Auth.

    \n
  6. \n
\n","isPage":false,"text":"\n\n\nTo start email based authentication you'll start it with this call [EmailLogin(const FString& EmailIn)], supplying an email you've collected from the User in your GUI.\n\n\nNext [AuthRequiresCode] will fire when the backend is ready to receive the Code from your UI. Collect this code from your GUI and send it to the authenticator using [EmailCode(CodeIn)].\n\n\nFinally [AuthSuccess] will fire with a Credentials_BE struct as a parameter. This is your non registered credentials from EmailAuth. You are done Email Based Auth.\n\n\n","title":"Email based Authentication","titles":["Authentication",null]},"135":{"href":"/sdk/unreal/authentication#social-signin-based-authentication-on-desktop","html":"\n
    \n
  1. \n

    To start SSO based authentication with desktop you can either use your own implementation to get the necessary id_token or you can make use of Unreal's web browser plugin.

    \n
  2. \n
  3. \n

    With whatever implementation you chose you can forward the colleted id_token to the UAuthenticator object with [SocialLogin(const FString& IDTokenIn)], after which [AuthSuccess] will fire and you're done desktop based SSO.

    \n
  4. \n
\n","isPage":false,"text":"\n\n\nTo start SSO based authentication with desktop you can either use your own implementation to get the necessary id_token or you can make use of Unreal's web browser plugin.\n\n\nWith whatever implementation you chose you can forward the colleted id_token to the UAuthenticator object with [SocialLogin(const FString& IDTokenIn)], after which [AuthSuccess] will fire and you're done desktop based SSO.\n\n\n","title":"Social Signin based Authentication on Desktop","titles":["Authentication",null]},"136":{"href":"/sdk/unreal/authentication#social-signin-based-authentication-on-mobile","html":"\n

WIP

","isPage":false,"text":"\nWIP","title":"Social Signin based Authentication on Mobile","titles":["Authentication",null]},"137":{"href":"/sdk/unreal/installation#installation","html":"\n","isPage":true,"text":"\n","title":"Installation","titles":[]},"138":{"href":"/sdk/unreal/installation#credentials","html":"\n

Before you can use this plugin, you need to acquire the following credentials from Sequence:

\n\n

You can then add these credentials in the [Config.h] file under SequencePlugin/Source/SequencePlugin/Private/Config/Config.h.

\n","isPage":false,"text":"\nBefore you can use this plugin, you need to acquire the following credentials from Sequence:\n\nWaaSTenantKey: This key will be given to you by the Sequence team during WaaS onboarding\nProjectAccessKey: This key can be found in Sequence Builder under Settings > API Access Keys\n\nYou can then add these credentials in the [Config.h] file under SequencePlugin/Source/SequencePlugin/Private/Config/Config.h.\n","title":"Credentials","titles":["Installation"]},"139":{"href":"/sdk/unreal/installation#security","html":"\n

You must provide an encryption key implementation at [SequenceEncryptor.cpp] function [GetStoredKey]. This function must be implemented to provide a securely stored private key that will be used to encrypt and decrypt client information. Failure to do so will result in NO information being stored or in the event you do not use a securely stored key, can result in client information being stored insecurely on their systems.

","isPage":false,"text":"\nYou must provide an encryption key implementation at [SequenceEncryptor.cpp] function [GetStoredKey]. This function must be implemented to provide a securely stored private key that will be used to encrypt and decrypt client information. Failure to do so will result in NO information being stored or in the event you do not use a securely stored key, can result in client information being stored insecurely on their systems.","title":"Security","titles":["Installation"]},"140":{"href":"/sdk/unreal/overview#introduction","html":"\n

The Sequence Unreal Embedded Wallet SDK provides full Sequence Embedded Wallet and Indexer integration for games built on the Unreal Framework.

\n

This SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.

\n

Sequence Unreal SDK is only available as a private beta at the moment. To get access, get in touch with Sequence BD Team.

\n","isPage":true,"text":"\nThe Sequence Unreal Embedded Wallet SDK provides full Sequence Embedded Wallet and Indexer integration for games built on the Unreal Framework.\nThis SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.\nSequence Unreal SDK is only available as a private beta at the moment. To get access, get in touch with Sequence BD Team.\n","title":"Introduction","titles":[]},"141":{"href":"/sdk/unreal/overview#requirements","html":"\n","isPage":false,"text":"\n\nUnreal 5.2 or later\nAndroid\niOS\nPC standalone\nMac standalone\n","title":"Requirements","titles":["Introduction"]},"142":{"href":"/sdk/unreal/packaging#packaging","html":"\n

To set your system up for Packaging please refer to the following links:

\n\n","isPage":true,"text":"\nTo set your system up for Packaging please refer to the following links:\n\nWindows and macOS\nAndroid\niOS\n\n","title":"Packaging","titles":[]},"143":{"href":"/sdk/unreal/packaging#google-sso-setup","html":"\n

In order to be able to properly use Google Auth, create and place the Keystore file by following these instructions.

\n

You will also need to generate an [Android client ID] and a [Web Application client ID] for your application, as well as place the [Web Application client ID] in the Config/Config.h FAuthenticatorConfig.GoogleClientID field.

\n

Refer to these docs to generate [Android client ID] and [Web Application client ID].

\n

This guide helps explain how to collect SHA-1 key fingerprints for the [Android client ID].

\n","isPage":false,"text":"\nIn order to be able to properly use Google Auth, create and place the Keystore file by following these instructions.\nYou will also need to generate an [Android client ID] and a [Web Application client ID] for your application, as well as place the [Web Application client ID] in the Config/Config.h FAuthenticatorConfig.GoogleClientID field.\nRefer to these docs to generate [Android client ID] and [Web Application client ID].\nThis guide helps explain how to collect SHA-1 key fingerprints for the [Android client ID].\n","title":"Google SSO Setup","titles":["Packaging",null]},"144":{"href":"/sdk/unreal/packaging#ios","html":"\n

For iOS apps you also need to setup provisioning, following these docs.

\n","isPage":false,"text":"\nFor iOS apps you also need to setup provisioning, following these docs.\n","title":"iOS","titles":["Packaging",null]},"145":{"href":"/sdk/unreal/packaging#unreal-and-xcode-specifics","html":"\n

During the Unreal Package process there is a very high chance that it will fail due to a code signing error, in the event that this happens please take the following steps within XCode to get your packaged .app file

\n
    \n
  1. After packaging the project in Unreal, open the Xcode project (Sequence-unreal folder -> Intermediate -> ProjectFilesIOS -> SequenceUnreal.xcodeproj)
  2. \n
  3. Click on the project name on the left hand side to open up project settings
  4. \n
  5. Click the Build Phase Tab
  6. \n
  7. Click on the "+" icon at the top left
  8. \n
  9. Select Run Script
  10. \n
  11. Drag the new run script to one below from the last item in the phase list
  12. \n
  13. Expand the run script
  14. \n
  15. In the script box, add the following command: xattr -cr /path-to-your-project/sequence-unreal/Binaries/IOS/Payload/SequenceUnreal.app
  16. \n
  17. Click on the Build Settings tab
  18. \n
  19. Click on each item under the Architectures header that contains macOS and hit the delete key
  20. \n
  21. Click on the General tab
  22. \n
  23. Click on Mac and Applevision Pro under supported destinations and hit the delete key
  24. \n
  25. Now the project can be built (if the build fails at first, wait a few moments then try again. It can sometimes take a bit before the build registers the run script)
  26. \n
  27. Once you have finished running the project, and want to make changes to the code, REMEMBER to delete this xcodeproj file in the sequence-unreal folder to ensure that a new xcodeproj is creating when you packaging the project again.
  28. \n
","isPage":false,"text":"\nDuring the Unreal Package process there is a very high chance that it will fail due to a code signing error, in the event that this happens please take the following steps within XCode to get your packaged .app file\n\nAfter packaging the project in Unreal, open the Xcode project (Sequence-unreal folder -> Intermediate -> ProjectFilesIOS -> SequenceUnreal.xcodeproj)\nClick on the project name on the left hand side to open up project settings\nClick the Build Phase Tab\nClick on the "+" icon at the top left\nSelect Run Script\nDrag the new run script to one below from the last item in the phase list\nExpand the run script\nIn the script box, add the following command: xattr -cr /path-to-your-project/sequence-unreal/Binaries/IOS/Payload/SequenceUnreal.app\nClick on the Build Settings tab\nClick on each item under the Architectures header that contains macOS and hit the delete key\nClick on the General tab\nClick on Mac and Applevision Pro under supported destinations and hit the delete key\nNow the project can be built (if the build fails at first, wait a few moments then try again. It can sometimes take a bit before the build registers the run script)\nOnce you have finished running the project, and want to make changes to the code, REMEMBER to delete this xcodeproj file in the sequence-unreal folder to ensure that a new xcodeproj is creating when you packaging the project again.\n","title":"Unreal and Xcode Specifics","titles":["Packaging",null]},"146":{"href":"/sdk/unreal/setup#setup","html":"\n
    \n
  1. \n

    Once you have the the SequencePlugin folder, you'll need to go to your project directory and create a Plugins folder in it, then copy over the SequencePlugin folder into the Plugins folder. If a Plugins folder already exists just copy the SequencePlugin folder into it.

    \n
  2. \n
  3. \n

    Launch your project, then allow it to update the UProject Settings.

    \n
  4. \n
  5. \n

    To find the SequencePlugin content folder in your content drawer enable view plugin content

    \n
  6. \n
  7. \n

    If you wish to use the in built sequence UI for login\na) Create an [Actor] you wish to be responsible for the SequenceUI then attach the [Sequence_Pawn_Component_BP] to it\nb) Setup your [Actor] Blueprint similar to how it's setup in [Custom_Spectator_Pawn] being sure to bind to the delegate that gives you Credentials [Auth_Success_Forwarder]

    \n
  8. \n
  9. \n

    Once you have those credentials you'll need to forward them to your own C++ backend in order to use the Sequence API, an example of this can be found in the [Custom_Spectator_Pawn]. This Pawn inherits from a C++ class [Sqnc_Spec_Pawn], which implements a blueprint Callable function [SetupCredentials(FCredentials_BE CredentialsIn)]. This is callable within the child class [Custom_Spectator_Pawn]. Calling this function will forward the credentials to a C++ backend.

    \n
  10. \n
","isPage":true,"text":"\n\n\nOnce you have the the SequencePlugin folder, you'll need to go to your project directory and create a Plugins folder in it, then copy over the SequencePlugin folder into the Plugins folder. If a Plugins folder already exists just copy the SequencePlugin folder into it.\n\n\nLaunch your project, then allow it to update the UProject Settings.\n\n\nTo find the SequencePlugin content folder in your content drawer enable view plugin content\n\n\nIf you wish to use the in built sequence UI for login\na) Create an [Actor] you wish to be responsible for the SequenceUI then attach the [Sequence_Pawn_Component_BP] to it\nb) Setup your [Actor] Blueprint similar to how it's setup in [Custom_Spectator_Pawn] being sure to bind to the delegate that gives you Credentials [Auth_Success_Forwarder]\n\n\nOnce you have those credentials you'll need to forward them to your own C++ backend in order to use the Sequence API, an example of this can be found in the [Custom_Spectator_Pawn]. This Pawn inherits from a C++ class [Sqnc_Spec_Pawn], which implements a blueprint Callable function [SetupCredentials(FCredentials_BE CredentialsIn)]. This is callable within the child class [Custom_Spectator_Pawn]. Calling this function will forward the credentials to a C++ backend.\n\n","title":"Setup","titles":[]},"147":{"href":"/solutions/builder/analytics#analytics-in-builder","html":"\n

When you use Sequence, via our SDKs, to build your application, you can see key insights in Sequence Builder.\nYou don't need to do any additional work to see valuable metrics about your project, such as the number\nof connected wallets or daily transaction requests.

\n","isPage":true,"text":"\nWhen you use Sequence, via our SDKs, to build your application, you can see key insights in Sequence Builder.\nYou don't need to do any additional work to see valuable metrics about your project, such as the number\nof connected wallets or daily transaction requests.\n","title":"Analytics in Builder","titles":[]},"148":{"href":"/solutions/builder/analytics#how-it-works","html":"\n

When requests are made with Sequence SDKs/APIs, analytics events are fired and sent to our internal analytics system, Databeat.\nDatabeat anonymizes the data and stores it in a secure database designed for high-volume, real-time applications. The metrics you see in Builder are\nqueried from the database, in real-time, for your project and presented in insightful visualizations.

\n","isPage":false,"text":"\nWhen requests are made with Sequence SDKs/APIs, analytics events are fired and sent to our internal analytics system, Databeat.\nDatabeat anonymizes the data and stores it in a secure database designed for high-volume, real-time applications. The metrics you see in Builder are\nqueried from the database, in real-time, for your project and presented in insightful visualizations.\n","title":"How it works","titles":["Analytics in Builder",null,null]},"149":{"href":"/solutions/builder/analytics#overview","html":"\n

In the Overview tab of Builder, you will see the key, high-level metrics for your project. Metric cards will show the total value for that metric, and\nclicking on one will change the chart to show time-series data for that metric.

\n\n","isPage":false,"text":"\nIn the Overview tab of Builder, you will see the key, high-level metrics for your project. Metric cards will show the total value for that metric, and\nclicking on one will change the chart to show time-series data for that metric.\nYou also have the option to look back at your data beyond the default Last 30 days\nby toggling the filter in the top right corner.\n","title":"Overview","titles":["Analytics in Builder"]},"150":{"href":"/solutions/builder/analytics#wallets-connected","html":"\n

Wallets connected represents the count of distinct wallet addresses connected via Sequence SDKs for the selected time period.

\n

\"Sequence

\n","isPage":false,"text":"\nWallets connected represents the count of distinct wallet addresses connected via Sequence SDKs for the selected time period.\n\n","title":"Wallets connected","titles":["Analytics in Builder","Overview",null]},"151":{"href":"/solutions/builder/analytics#marketplace-transactions","html":"\n

Marketplace transactions shows the total number of buy and sell events that occure via the Sequence Marketplace API.

\n

\"Sequence

\n","isPage":false,"text":"\nMarketplace transactions shows the total number of buy and sell events that occure via the Sequence Marketplace API.\n\n","title":"Marketplace transactions","titles":["Analytics in Builder","Overview",null]},"152":{"href":"/solutions/builder/analytics#transaction-requests","html":"\n

Transaction requests represents the total number of transactions sent by wallets associated with the project.

\n

\"Sequence

","isPage":false,"text":"\nTransaction requests represents the total number of transactions sent by wallets associated with the project.\n","title":"Transaction requests","titles":["Analytics in Builder","Overview",null]},"153":{"href":"/solutions/builder/embedded-wallet#embedded-wallet-in-builder","html":"\n

You can configure a Sequence Embedded Wallet in Builder and integrate your own OAuth accounts to enable easy onboarding to your games. Configuration page in Builder is available here.

\n","isPage":true,"text":"\nYou can configure a Sequence Embedded Wallet in Builder and integrate your own OAuth accounts to enable easy onboarding to your games. Configuration page in Builder is available here.\n","title":"Embedded Wallet in Builder","titles":[]},"154":{"href":"/solutions/builder/embedded-wallet#login-providers","html":"\n

Sequence Embedded Wallet supports the following login providers:

\n","isPage":false,"text":"\nSequence Embedded Wallet supports the following login providers:\n","title":"Login Providers","titles":["Embedded Wallet in Builder"]},"155":{"href":"/solutions/builder/embedded-wallet#google-auth","html":"\n

If you would like to support Google Auth, you need to make sure that a project is configured at your Google Cloud Console along with the proper OAuth 2.0 client ID. You can find the relevant section under APIs & Services > Credentials. After setting up the proper origins and redirect URIs for your project, copy the Client ID and paste it into the Google Client ID field after adding a Google login provider.

\n

You can find a detailed tutorial on how to configure Google Auth here.

\n","isPage":false,"text":"\nIf you would like to support Google Auth, you need to make sure that a project is configured at your Google Cloud Console along with the proper OAuth 2.0 client ID. You can find the relevant section under APIs & Services > Credentials. After setting up the proper origins and redirect URIs for your project, copy the Client ID and paste it into the Google Client ID field after adding a Google login provider.\nYou can find a detailed tutorial on how to configure Google Auth here.\n","title":"Google Auth","titles":["Embedded Wallet in Builder","Login Providers"]},"156":{"href":"/solutions/builder/embedded-wallet#apple-auth","html":"\n

If you would like to offer Apple Auth, you need to make sure that an application is configured at your Apple Developer Console account. More information on how to configure Sign in with Apple can be found here. Once you have all requirements completed, share the unique identifier for the Services ID you created as part of your onboarding package after adding an Apple login provider.

\n","isPage":false,"text":"\nIf you would like to offer Apple Auth, you need to make sure that an application is configured at your Apple Developer Console account. More information on how to configure Sign in with Apple can be found here. Once you have all requirements completed, share the unique identifier for the Services ID you created as part of your onboarding package after adding an Apple login provider.\n","title":"Apple Auth","titles":["Embedded Wallet in Builder","Login Providers"]},"157":{"href":"/solutions/builder/embedded-wallet#allowed-origins","html":"\n

This additional security measure will prevent unauthorized usage of your WaaS configuration outside of domains you whitelisted. Add any development and production URLs under Allowed Origins. By default all subpaths under theses hosts will be allowed.

\n

You must define allowed origins with a valid scheme (i.e. https).

\n","isPage":false,"text":"\nThis additional security measure will prevent unauthorized usage of your WaaS configuration outside of domains you whitelisted. Add any development and production URLs under Allowed Origins. By default all subpaths under theses hosts will be allowed.\nYou must define allowed origins with a valid scheme (i.e. https).\n","title":"Allowed Origins","titles":["Embedded Wallet in Builder"]},"158":{"href":"/solutions/builder/embedded-wallet#recovery-wallet","html":"\n

WaaS requires the public address for a recovery wallet that you control. This recovery wallet will be used for recovering user wallets in a disaster scenario, so it must be controlled by you and must be kept safe at all times.

\n

We recommend that:

\n\n

Once the recovery wallet is setup properly, provide the public address for it. Recovery wallet cannot be modified once your configuration is saved.

\n","isPage":false,"text":"\nWaaS requires the public address for a recovery wallet that you control. This recovery wallet will be used for recovering user wallets in a disaster scenario, so it must be controlled by you and must be kept safe at all times.\nWe recommend that:\n\nYou use Gnosis Safe for setting up the wallet\nYou ensure you have at least 2, ideally 3+ signers configured and required for every transaction\nEvery signer is protected by a hardware wallet\n\nOnce the recovery wallet is setup properly, provide the public address for it. Recovery wallet cannot be modified once your configuration is saved.\n","title":"Recovery Wallet","titles":["Embedded Wallet in Builder"]},"159":{"href":"/solutions/builder/embedded-wallet#initial-configuration-and-update-code","html":"\n

Once you have all information prepared, go ahead and create your Embedded Wallet configuration. During initial setup, Builder will provide you with an update code. This code will be required for all subsequent modifications to your Embedded Wallet configuration, so it must be stored safely.

\n","isPage":false,"text":"\nOnce you have all information prepared, go ahead and create your Embedded Wallet configuration. During initial setup, Builder will provide you with an update code. This code will be required for all subsequent modifications to your Embedded Wallet configuration, so it must be stored safely.\n","title":"Initial Configuration and Update Code","titles":["Embedded Wallet in Builder"]},"160":{"href":"/solutions/builder/embedded-wallet#configuration-changes","html":"\n

To make modifications to your Embedded Wallet configuration, navigate to the Embedded Wallet section again and make the necessary changes. Then click "Save Configuration" and enter your update code to deploy the changes.

\n","isPage":false,"text":"\nTo make modifications to your Embedded Wallet configuration, navigate to the Embedded Wallet section again and make the necessary changes. Then click "Save Configuration" and enter your update code to deploy the changes.\n","title":"Configuration Changes","titles":["Embedded Wallet in Builder"]},"161":{"href":"/solutions/builder/embedded-wallet#sdk-integrations","html":"\n

Now that you have your Embedded Wallet configuration up, go ahead and follow our guides on how to integrate with the SDKs:

\n","isPage":false,"text":"\nNow that you have your Embedded Wallet configuration up, go ahead and follow our guides on how to integrate with the SDKs:\n\nTypeScript SDK\nUnity SDK\nUnreal SDK\n","title":"SDK Integrations","titles":["Embedded Wallet in Builder"]},"162":{"href":"/solutions/marketplaces/overview#marketplaces-overview","html":"\n

Sequence provides a variety of options for your marketplace and in-game store to accelerate your development, namely our white-label marketplace as well as our suite of Marketplace APIs.

\n","isPage":true,"text":"\nSequence provides a variety of options for your marketplace and in-game store to accelerate your development, namely our white-label marketplace as well as our suite of Marketplace APIs.\n","title":"Marketplaces Overview","titles":[]},"163":{"href":"/solutions/marketplaces/overview#what-are-the-differences-between-these-options","html":"\n

White-Label Marketplace:\nStart your browser-based marketplace in minutes, even if you have no coding experience. Customize the marketplace with your branding - choose your fonts, colors, and logos. Our white-label marketplace is perfect for those looking to save time on development, focus on a web-based user experience, and begin selling assets.

\n

Marketplace APIs:\nTake full control and customize your marketplace with our Marketplace APIs. Build your own UI while we handle the complexity of blockchain and backend orchestration. Use our APIs in game engines like Unity or Unreal to create an in-game marketplace or store. Alternatively, integrate them into a browser-based experience - the choice is yours.

\n

Combine these options as you see fit! Start with a white-label marketplace to sell your initial game assets while developing your game. Then, use our marketplace APIs to showcase and offer these assets in your in-game store. Provide a seamless user experience by keeping everything within the game environment.

\n","isPage":false,"text":"\nWhite-Label Marketplace:\nStart your browser-based marketplace in minutes, even if you have no coding experience. Customize the marketplace with your branding - choose your fonts, colors, and logos. Our white-label marketplace is perfect for those looking to save time on development, focus on a web-based user experience, and begin selling assets.\nMarketplace APIs:\nTake full control and customize your marketplace with our Marketplace APIs. Build your own UI while we handle the complexity of blockchain and backend orchestration. Use our APIs in game engines like Unity or Unreal to create an in-game marketplace or store. Alternatively, integrate them into a browser-based experience - the choice is yours.\nCombine these options as you see fit! Start with a white-label marketplace to sell your initial game assets while developing your game. Then, use our marketplace APIs to showcase and offer these assets in your in-game store. Provide a seamless user experience by keeping everything within the game environment.\n","title":"What are the differences between these options?","titles":["Marketplaces Overview",null]},"164":{"href":"/solutions/marketplaces/overview#getting-started","html":"\n

To get started with the white-label marketplace, check out our page for more information and a helpful video to walk you through the process.

\n

Additionally, our quickstart page for the Marketplace APIs has a variety of templates, demos, and common integration patterns needed to get you started. We also provide a step by step guide of leveraging the APIs for (building a custom marketplace)[/guides/template-marketplace-api]

","isPage":false,"text":"\nTo get started with the white-label marketplace, check out our page for more information and a helpful video to walk you through the process.\nAdditionally, our quickstart page for the Marketplace APIs has a variety of templates, demos, and common integration patterns needed to get you started. We also provide a step by step guide of leveraging the APIs for (building a custom marketplace)[/guides/template-marketplace-api]","title":"Getting Started","titles":["Marketplaces Overview",null]},"165":{"href":"/solutions/wallets/overview#sequence-wallets-overview","html":"\n

Sequence offers multiple wallet options to integrate into your products. We have two main choices: the Embedded Wallet and the Universal Wallet. Both are completely non-custodial.

\n

The Embedded Wallet is designed for a traditional gaming experience. It operates without intrusive pop-ups, modals, or transaction signing that might distract players. Users can easily log in using common social logins or other authentication methods and dive straight into the game. We support popular game engines like Unreal and Unity, as well as Typescript for seamless integration into your preferred framework.

\n

On the other hand, the Universal Wallet targets native blockchain users, particularly those involved in gaming and gaming assets. It provides a familiar environment for existing blockchain users and enables developers to create compelling web3 experiences. The Typescript SDK makes integration straightforward.

\n

\"Wallets\"/

\n

As for the benefits, both wallets offer non-custodial smart contract wallets with advantages like gasless transactions. If you prioritize a smooth, web2/2.5-like experience, the Embedded Wallet is the way to go. For a focus on web2.5/web3 native users, the Universal Wallet is recommended.

\n

Furthermore, our SequenceKit wallet connector merges both options into a customizable UI written in Typescript. This allows you to cater to users with existing wallets like Metamask, as well as millions of potential new users who prefer the convenience of social login.

\n","isPage":true,"text":"\nSequence offers multiple wallet options to integrate into your products. We have two main choices: the Embedded Wallet and the Universal Wallet. Both are completely non-custodial.\nThe Embedded Wallet is designed for a traditional gaming experience. It operates without intrusive pop-ups, modals, or transaction signing that might distract players. Users can easily log in using common social logins or other authentication methods and dive straight into the game. We support popular game engines like Unreal and Unity, as well as Typescript for seamless integration into your preferred framework.\nOn the other hand, the Universal Wallet targets native blockchain users, particularly those involved in gaming and gaming assets. It provides a familiar environment for existing blockchain users and enables developers to create compelling web3 experiences. The Typescript SDK makes integration straightforward.\n\nAs for the benefits, both wallets offer non-custodial smart contract wallets with advantages like gasless transactions. If you prioritize a smooth, web2/2.5-like experience, the Embedded Wallet is the way to go. For a focus on web2.5/web3 native users, the Universal Wallet is recommended.\nFurthermore, our SequenceKit wallet connector merges both options into a customizable UI written in Typescript. This allows you to cater to users with existing wallets like Metamask, as well as millions of potential new users who prefer the convenience of social login.\n","title":"Sequence Wallets Overview","titles":[]},"166":{"href":"/solutions/wallets/overview#getting-started","html":"\n

Please check out Sequence Builder to create a project and select Wallets to get started. This will provide the corresponding code snippets with our convenient SDKs to get started.

\n

Alternatively, our quickstart page for Embedded Wallets and Universal Wallets has all the templates, demos, and common integration patterns needed to accelerate your development.

","isPage":false,"text":"\nPlease check out Sequence Builder to create a project and select Wallets to get started. This will provide the corresponding code snippets with our convenient SDKs to get started.\nAlternatively, our quickstart page for Embedded Wallets and Universal Wallets has all the templates, demos, and common integration patterns needed to accelerate your development.","title":"Getting Started","titles":["Sequence Wallets Overview",null]},"167":{"href":"/api/indexer/examples/fetch-tokens#tokens-api","html":"\n","isPage":true,"text":"\n","title":"Tokens API","titles":[]},"168":{"href":"/api/indexer/examples/fetch-tokens#fetches-list-of-erc20-erc721-and-erc1155-tokens-and-metadata-in-any-wallet","html":"\n

Sequence Indexer GetTokenBalances Method:

\n\n
\nExample: GetTokenBalances of a wallet account address on Polygon using an API_Access_Key\n\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all token balances of the account on Polygon\nconst tokenBalances = await indexer.getTokenBalances({\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\nconsole.log('tokens in your account:', tokenBalances)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}
Please [contact our team](/support) for assistance with integrations to another target.
\n
\n\n","isPage":false,"text":"\nSequence Indexer GetTokenBalances Method:\n\nRequest: POST /rpc/Indexer/GetTokenBalances\nContent-Type: application/json\nBody (in JSON):\n\naccountAddress (string) -- the wallet account address\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\nincludeCollectionTokens (boolean - optional - default: true) -- toggle to represent ERC721 / ERC1155 tokens as a single summary item in the response\n\n\n\n\nExample: GetTokenBalances of a wallet account address on Polygon using an API_Access_Key\nThis code requires an API Access Key from Sequence Builder.\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all token balances of the account on Polygon\nconst tokenBalances = await indexer.getTokenBalances({\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\nconsole.log('tokens in your account:', tokenBalances)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}Please [contact our team](/support) for assistance with integrations to another target.\n\nPRO TIP: fetching ERC721/1155 token IDsYou'll notice that, by default, GetTokenBalances will return at most one token instance from each contract.\nIn order to fetch ERC721/1155 token balances, you must pass the contractAddress to the GetTokenBalances method.\nThis will return all of the tokens owned by accountAddress from the specified contractAddress.\nSee section below for more information.\n","title":"Fetches list of ERC20, ERC721 and ERC1155 tokens and metadata in any wallet.","titles":["Tokens API",null]},"169":{"href":"/api/indexer/examples/fetch-tokens#fetch-token-ids-balances-and-metadata-of-erc721-and-erc1155-collections","html":"\n

Sequence Indexer GetTokenBalances Method:

\n\n
\nExample: GetTokenBalances of a contract + account address on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any contract and account address you'd like :)\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all nft balances of the account on Polygon\nconst nftBalances = await indexer.getTokenBalances({\n\tcontractAddress: contractAddress,\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\n \nconsole.log('collection of items:', nftBalances)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(contractAddress, accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\tnftBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, &contractAddress, &includeMetadata, nil, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("nftBalances:", nftBalances)\n}
","isPage":false,"text":"\nSequence Indexer GetTokenBalances Method:\n\nRequest: POST /rpc/Indexer/GetTokenBalances\nContent-Type: application/json\nBody (in JSON):\n\naccountAddress (string) -- the wallet account address\ncontractAddress (string) -- the contract address of the ERC721 / ERC1155 collection\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\n\n\n\n\nExample: GetTokenBalances of a contract + account address on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any contract and account address you'd like :)\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all nft balances of the account on Polygon\nconst nftBalances = await indexer.getTokenBalances({\n\tcontractAddress: contractAddress,\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\n \nconsole.log('collection of items:', nftBalances)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(contractAddress, accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\tnftBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, &contractAddress, &includeMetadata, nil, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("nftBalances:", nftBalances)\n}","title":"Fetch token IDs, balances and metadata of ERC721 and ERC1155 collections.","titles":["Tokens API",null]},"170":{"href":"/api/indexer/examples/native-network-balance#native-network-balances-ie-eth-matic-etc","html":"\n","isPage":true,"text":"\n","title":"Native network balances (ie. ETH, MATIC, etc.)","titles":[]},"171":{"href":"/api/indexer/examples/native-network-balance#fetch-native-network-balance-aka-eth-on-ethereum-matic-on-polygon-avax-on-avalanche-bnb-on-bsc-etc","html":"\n

Sequence Indexer GetEtherBalance Method:

\n\n
\nExample: GetEtherBalance MATIC balance of a wallet account address on Polygon using an API_Access_Key\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetEtherBalance -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for the MATIC balance on Polygon\nconst balance = await indexer.getEtherBalance({\n\taccountAddress: accountAddress,\n})\n\t\nconsole.log('tokens in your account:', tokenBalances)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}
","isPage":false,"text":"\nSequence Indexer GetEtherBalance Method:\n\nRequest: POST /rpc/Indexer/GetEtherBalance\nContent-Type: application/json\nBody (in JSON):\n\naccountAddress (string) -- the wallet account address\n\n\n\n\nExample: GetEtherBalance MATIC balance of a wallet account address on Polygon using an API_Access_Key\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetEtherBalance -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for the MATIC balance on Polygon\nconst balance = await indexer.getEtherBalance({\n\taccountAddress: accountAddress,\n})\n\t\nconsole.log('tokens in your account:', tokenBalances)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}","title":"Fetch native network balance (aka ETH on Ethereum, MATIC on Polygon, AVAX on Avalanche, BNB on BSC, etc.)","titles":["Native network balances (ie. ETH, MATIC, etc.)",null]},"172":{"href":"/api/indexer/examples/transaction-history#wallet-transaction-history","html":"\n","isPage":true,"text":"\n","title":"Wallet transaction history","titles":[]},"173":{"href":"/api/indexer/examples/transaction-history#fetch-the-transaction-history-for-any-wallet-address","html":"\n

Fetches the transaction / token history for any wallet address of any ERC20, ERC721 and ERC1155 token.\nThe response includes decoded transaction details for easy consumption / rendering.

\n

Sequence Indexer GetTransactionHistory Method:

\n\n
\nExample: GetTransactionHistory of a wallet account address on Polygon using an API_Access_Key\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }, "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst filter = {\n\taccountAddress: "0xabc..."\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter,\n\tincludeMetadata: true\n})\n\t\nconsole.log('transaction history in account:', transactionHistory)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tAccountAddress: &accountAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}
","isPage":false,"text":"\nFetches the transaction / token history for any wallet address of any ERC20, ERC721 and ERC1155 token.\nThe response includes decoded transaction details for easy consumption / rendering.\nSequence Indexer GetTransactionHistory Method:\n\nRequest: POST /rpc/Indexer/GetTransactionHistory\nContent-Type: application/json\nBody (in JSON):\n\nfilter (object)\n\naccountAddress (string) -- the wallet account address\ncontractAddress (string) -- optionally specify a contract address to filter\naccountAddresses (string array) -- optionally specify a list of wallet account addresses\ncontractAddresses (string array) -- optionally specify a list of contract address\ntransactionHashes (string array) -- optionally specify a list of transaction hashes\nmetaTransactionIDs (string array) -- optionally specify a list of meta transaction IDs\n\n\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\n\n\n\n\nExample: GetTransactionHistory of a wallet account address on Polygon using an API_Access_Key\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }, "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst filter = {\n\taccountAddress: "0xabc..."\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter,\n\tincludeMetadata: true\n})\n\t\nconsole.log('transaction history in account:', transactionHistory)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tAccountAddress: &accountAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}","title":"Fetch the transaction history for any wallet address","titles":["Wallet transaction history"]},"174":{"href":"/api/indexer/examples/transation-history-token-contract#contract-token-history","html":"\n","isPage":true,"text":"\n","title":"Contract token history","titles":[]},"175":{"href":"/api/indexer/examples/transation-history-token-contract#fetch--listen-to-the-transaction-history-for-any-erc20-erc721-erc1155-contract","html":"\n

This query is helpful to track transaction history of a particular token contract.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).

\n

Sequence Indexer GetTransactionHistory Method:

\n\n
\nExample: GetTransactionHistory of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E" }, "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\n// try any contract address you'd like :)\nconst filter = {\n\tcontractAddress: contractAddress\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter\n})\n\t\nconsole.log('transaction history of contract:', transactionHistory)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}
","isPage":false,"text":"\nThis query is helpful to track transaction history of a particular token contract.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).\nSequence Indexer GetTransactionHistory Method:\n\nRequest: POST /rpc/Indexer/GetTransactionHistory\nContent-Type: application/json\nBody (in JSON):\n\nfilter (object)\n\ncontractAddress (string) -- a ERC20 / ERC721 / ERC1155 contract address\n\n\n\n\n\n\nExample: GetTransactionHistory of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E" }, "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\n// try any contract address you'd like :)\nconst filter = {\n\tcontractAddress: contractAddress\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter\n})\n\t\nconsole.log('transaction history of contract:', transactionHistory)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}","title":"Fetch / listen to the transaction history for any ERC20, ERC721, ERC1155 contract.","titles":["Contract token history",null]},"176":{"href":"/api/indexer/examples/unique-tokens#tokens-in-a-contract","html":"\n","isPage":true,"text":"\n","title":"Tokens in a contract","titles":[]},"177":{"href":"/api/indexer/examples/unique-tokens#fetch-all-unique-tokens-in-a-particular-erc207211155-contract-including-total-supplies","html":"\nFetches token supplies and metadata for any ERC20, ERC721, ERC1155 contract.\n

This query is helpful to render all tokens in a token contract, or to query the total token supplies.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).

\n

Sequence Indexer GetTokenSupplies Method:

\n\n
\nExample: GetTokenSupplies of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenSupplies -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\nconst tokenDetails = await indexer.getTokenSupplies({\n\tcontractAddress: contractAddress,\n\tincludeMetadata: true\n})\nconsole.log('token details of contract:', tokenDetails)
go\nimport (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenSupplies(contractAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, tokenDetails, err := seqIndexer.GetTokenSupplies(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("token details:", tokenDetails)\n}
","isPage":false,"text":"\nFetches token supplies and metadata for any ERC20, ERC721, ERC1155 contract.\nThis query is helpful to render all tokens in a token contract, or to query the total token supplies.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).\nSequence Indexer GetTokenSupplies Method:\n\nRequest: POST /rpc/Indexer/GetTokenSupplies\nContent-Type: application/json\nBody (in JSON):\n\ncontractAddress (string) -- a ERC20 / ERC721 / ERC1155 contract address\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\n\n\n\n\nExample: GetTokenSupplies of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenSupplies -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\nconst tokenDetails = await indexer.getTokenSupplies({\n\tcontractAddress: contractAddress,\n\tincludeMetadata: true\n})\nconsole.log('token details of contract:', tokenDetails)go\nimport (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenSupplies(contractAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, tokenDetails, err := seqIndexer.GetTokenSupplies(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("token details:", tokenDetails)\n}","title":"Fetch all unique tokens in a particular ERC20/721/1155 contract, including total supplies","titles":["Tokens in a contract",null]},"178":{"href":"/api/indexer/examples/webhook-listener#webhook","html":"\n","isPage":true,"text":"\n","title":"Webhook","titles":[]},"179":{"href":"/api/indexer/examples/webhook-listener#listen-to-blockchain-events-with-webhooks","html":"\n

You can listen to transactions via webhooks using the Sequence Indexer. Our filters allow you to listen to events with a particular contract address and/or account address and specific token ids.

\n","isPage":false,"text":"\nYou can listen to transactions via webhooks using the Sequence Indexer. Our filters allow you to listen to events with a particular contract address and/or account address and specific token ids.\n","title":"Listen to Blockchain Events with Webhooks","titles":["Webhook"]},"180":{"href":"/api/indexer/examples/webhook-listener#registering-a-webhook","html":"\n

Sequence Indexer AddWebhookListener Method:

\n\n
\n

One of contractAddresses, accounts must be provided in the filter.

\nExample: AddWebhookListener\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/AddWebhookListener -d '{ "url": "https://webhook.site/27c266b7-ee69-4046-8319-75ce91ec2bcf", "filters": [{"accounts": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E"]}]'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \nconst req = {\n    url: 'https://webhook.site/27c266b7-ee69-4046-8319-75ce91ec2bcf',\n    filters: [\n        {\n            accounts: ['0x631998e91476DA5B870D741192fc5Cbc55F5a52E']\n        }\n    ]\n}\n \n \nconst ok = await indexer.addWebhookListener({\n\tUrl: req.url,\n    Filters: req.filters\n})\n\t\nconsole.log('ok', ok)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tok, err := seqIndexer.AddWebhookListener(context.Background(),\n\t\t&proto.WebhookListener{\n\t\t\tUrl: "https://webhook.site/27c266b7-ee69-4046-8319-75ce91ec2bcf",\n\t\t\tFilters: &proto.WebhookEventFilter{\n\t\t\t\tAccounts: []prototyp.Hash{prototyp.HashFromString("0xd4Bbf5d234CC95441A8Af0a317D8874eE425e74d")},\n                // ContractAddresses: []prototyp.Hash{prototyp.HashFromString("0xC852bf35CB7B54a33844B181e6fD163387D85868")},\n\t\t\t\t// TokenIDs:          []prototyp.BigInt{prototyp.NewBigInt(1)},\n\t\t\t},\n\t\t},\n\t)\n\tfmt.Println(ok, err)\n}
\n

Now you can listen to events on the blockchain with your webhook.

","isPage":false,"text":"\nSequence Indexer AddWebhookListener Method:\n\nRequest: POST /rpc/Indexer/AddWebhookListener\nContent-Type: application/json\nBody (in JSON):\n\nUrl (string) -- the URL to send the webhook to\nFilters ([]object) -- an array of filters\n\ncontractAddresses ([]string) -- a ERC20 / ERC721 / ERC1155 contract address\naccounts ([]string) -- wallet addresses\ntokenIDs ([]int) optional -- an array of token ids\n\n\n\n\n\n\nOne of contractAddresses, accounts must be provided in the filter.\nExample: AddWebhookListener\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/AddWebhookListener -d '{ "url": "https://webhook.site/27c266b7-ee69-4046-8319-75ce91ec2bcf", "filters": [{"accounts": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E"]}]'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \nconst req = {\n url: 'https://webhook.site/27c266b7-ee69-4046-8319-75ce91ec2bcf',\n filters: [\n {\n accounts: ['0x631998e91476DA5B870D741192fc5Cbc55F5a52E']\n }\n ]\n}\n \n \nconst ok = await indexer.addWebhookListener({\n\tUrl: req.url,\n Filters: req.filters\n})\n\t\nconsole.log('ok', ok)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tok, err := seqIndexer.AddWebhookListener(context.Background(),\n\t\t&proto.WebhookListener{\n\t\t\tUrl: "https://webhook.site/27c266b7-ee69-4046-8319-75ce91ec2bcf",\n\t\t\tFilters: &proto.WebhookEventFilter{\n\t\t\t\tAccounts: []prototyp.Hash{prototyp.HashFromString("0xd4Bbf5d234CC95441A8Af0a317D8874eE425e74d")},\n // ContractAddresses: []prototyp.Hash{prototyp.HashFromString("0xC852bf35CB7B54a33844B181e6fD163387D85868")},\n\t\t\t\t// TokenIDs: []prototyp.BigInt{prototyp.NewBigInt(1)},\n\t\t\t},\n\t\t},\n\t)\n\tfmt.Println(ok, err)\n}\nNow you can listen to events on the blockchain with your webhook.","title":"Registering a Webhook","titles":["Webhook","Listen to Blockchain Events with Webhooks"]},"181":{"href":"/api/marketplace/examples/get-user-activities#getuseractivities","html":"\n

Enables you to retrieve activity data for a specific user, including orders and trades. With the use of the GetUserActivities api developers can build custom and personalized social or tracking experiences to follow certain users in various interfaces.

\n

\"GetUserActivities\"/

\n","isPage":true,"text":"\nEnables you to retrieve activity data for a specific user, including orders and trades. With the use of the GetUserActivities api developers can build custom and personalized social or tracking experiences to follow certain users in various interfaces.\n\n","title":"GetUserActivities","titles":[null]},"182":{"href":"/api/marketplace/examples/get-user-activities#example","html":"\n

GetUserActivities for a user with specific token IDs:

\n
curl -X POST -H "Content-Type: application/json" https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities -d '{\n    "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n    "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n    "currencyAddresses": [\n        "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n    ],\n    "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n    "tokenIDs": ["1"]\n}'
// Works in both a Webapp (browser) or Node.js:\nimport fetch from "cross-fetch";\n \n(async () => {\n  const res = await fetch(\n    "https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities",\n    {\n      method: "POST",\n      headers: {\n        "Content-Type": "application/json",\n      },\n      body: JSON.stringify({\n        "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n        "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n        "currencyAddresses": [\n            "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n        ],\n        "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n        "tokenIDs": ["1"]\n      }),\n    }\n  );\n \n  console.log("res", await res.json());\n})();
\n","isPage":false,"text":"\nGetUserActivities for a user with specific token IDs:\ncurl -X POST -H "Content-Type: application/json" https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities -d '{\n "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n "currencyAddresses": [\n "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n ],\n "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n "tokenIDs": ["1"]\n}'// Works in both a Webapp (browser) or Node.js:\nimport fetch from "cross-fetch";\n \n(async () => {\n const res = await fetch(\n "https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities",\n {\n method: "POST",\n headers: {\n "Content-Type": "application/json",\n },\n body: JSON.stringify({\n "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n "currencyAddresses": [\n "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n ],\n "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n "tokenIDs": ["1"]\n }),\n }\n );\n \n console.log("res", await res.json());\n})();\n","title":"Example","titles":[null,"GetUserActivities"]},"183":{"href":"/api/marketplace/examples/get-user-activities#schema","html":"\n","isPage":false,"text":"\n\nRequest: POST /api/Marketplace/GetUserActivities\nContent-Type: application/json\nBody (in JSON):\n\norderbookContractAddress (string) -- the address of the protocol contract.\ncollectionAddress (string) -- the address of the NFT collection.\ncurrencyAddresses (string[]) -- an array of currency contract addresses.\nuserAddress (string) -- the address of the user whose activities are being queried.\ntokenIDs (string[]) -- an array of token IDs to filter the activities by.\n\n\nResponse (in JSON):\n\npage\n\npage (i32) -- number of the page\npageSize (i32) -- number of orders on the page\nmore (bool) -- if there are more orders\n\n\norders (OrderbookOrder[])\n[\n\norderId (string) -- order id\ntokenContract (string) -- the collection contract\ntokenId (string) -- the tokenId of the collection in the order\nisListing (bool) -- is true if it's a listing for sale, or false if it's an offer\nquantity (string) -- the number of tokens the order is for\nquantityRemaining (string) -- the number of tokens after the order\ncurrencyAddress (string) -- the currency the token is trading in\npricePerToken (string) -- the price per token\nexpiry (string) -- the expiry of when the order is no longer valid\norderStatus (OrderStatus) -- the status of the order as an enum fom "OPEN", "CLOSED", "CANCELLED"\ncreatedBy (string) -- the address the order was created by\ncreatedAt (uint64) -- the time the order was created\norderbookContractAddress (string) -- the orderbook contract address\n]\n\n\n\n\n","title":"Schema","titles":[null,"GetUserActivities"]},"184":{"href":"/api/relayer/examples/fetch-fee-options#fetching-fee-options","html":"\n\n
import { Session } from '@0xsequence/auth'\nimport { ethers } from 'ethers'\n \nconst config = {\n  mnemonic: 'YOUR MNEMONIC',\n  projectAccessKey: 'YOUR PROJECT ACCESS KEY',\n  chainId: ChainId.YOUR_CHAIN_ID // e.g. ChainId.MAINNET, ChainId.POLYGON, etc.\n}\n \nconst signer = ethers.Wallet.fromMnemonic(config.mnemonic)\n \nconst session = await Session.singleSigner({ signer, projectAccessKey: config.projectAccessKey })\n \nconst account = session.account.getSigner(config.chainId, {\n  async selectFee(_transactions, options) {\n    // This callback is called with the list of candidate fee options.\n \n    console.log('Fee options:', JSON.stringify(options, undefined, 2))\n \n    // Select the USDC fee option.\n    return options.find(option => option.token.symbol === 'USDC')\n  }\n})
mnemonic := "YOUR MNEMONIC"\nprojectAccessKey := "YOUR PROJECT ACCESS KEY"\nrpcURL := fmt.Sprintf("https://nodes.sequence.app/YOUR-NETWORK/%v", projectAccessKey)\nrelayerURL := "https://YOUR-NETWORK-relayer.sequence.app"\n \nsigner, _ := ethwallet.NewWalletFromMnemonic(mnemonic)\n \nwallet, _ := sequence.NewWalletSingleOwner(signer)\n \nprovider, _ := ethrpc.NewProvider(rpcURL)\nwallet.SetProvider(provider)\n \nrelayer, _ := relayer.NewRpcRelayer(relayerURL, projectAccessKey, provider, nil)\nwallet.SetRelayer(relayer)\n \ntransactions := sequence.Transactions{\n  &sequence.Transaction{\n    To:    common.HexToAddress("0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04"),\n    Value: big.NewInt(1000000000000000000),\n  },\n}\n \noptions, quote, _ := wallet.FeeOptions(ctx, transactions)
","isPage":true,"text":"\nFee selection is only necessary if you aren't already using Sequence Builder's gas sponsorship capabilities!\nCreate your project in Sequence Builder for ease of development today!\nimport { Session } from '@0xsequence/auth'\nimport { ethers } from 'ethers'\n \nconst config = {\n mnemonic: 'YOUR MNEMONIC',\n projectAccessKey: 'YOUR PROJECT ACCESS KEY',\n chainId: ChainId.YOUR_CHAIN_ID // e.g. ChainId.MAINNET, ChainId.POLYGON, etc.\n}\n \nconst signer = ethers.Wallet.fromMnemonic(config.mnemonic)\n \nconst session = await Session.singleSigner({ signer, projectAccessKey: config.projectAccessKey })\n \nconst account = session.account.getSigner(config.chainId, {\n async selectFee(_transactions, options) {\n // This callback is called with the list of candidate fee options.\n \n console.log('Fee options:', JSON.stringify(options, undefined, 2))\n \n // Select the USDC fee option.\n return options.find(option => option.token.symbol === 'USDC')\n }\n})mnemonic := "YOUR MNEMONIC"\nprojectAccessKey := "YOUR PROJECT ACCESS KEY"\nrpcURL := fmt.Sprintf("https://nodes.sequence.app/YOUR-NETWORK/%v", projectAccessKey)\nrelayerURL := "https://YOUR-NETWORK-relayer.sequence.app"\n \nsigner, _ := ethwallet.NewWalletFromMnemonic(mnemonic)\n \nwallet, _ := sequence.NewWalletSingleOwner(signer)\n \nprovider, _ := ethrpc.NewProvider(rpcURL)\nwallet.SetProvider(provider)\n \nrelayer, _ := relayer.NewRpcRelayer(relayerURL, projectAccessKey, provider, nil)\nwallet.SetRelayer(relayer)\n \ntransactions := sequence.Transactions{\n &sequence.Transaction{\n To: common.HexToAddress("0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04"),\n Value: big.NewInt(1000000000000000000),\n },\n}\n \noptions, quote, _ := wallet.FeeOptions(ctx, transactions)","title":"Fetching fee options","titles":[null]},"185":{"href":"/api/relayer/examples/fetch-transaction-receipts#fetching-transaction-receipts","html":"\n

To fetch a transaction receipt for an arbitrary transaction that was dispatched via the relayer, call the /GetMetaTxnReceipt endpoint.\nThe metaTxID is the txnHash from the response of the /SendMetaTxn endpoint.

\n
curl -s -X POST -H 'Content-Type: application/json' \\\n  -d '{"metaTxID":"462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b"}' \\\n  https://polygon-relayer.sequence.app/rpc/Relayer/GetMetaTxnReceipt | jq\n \n{\n  "receipt": {\n    "id": "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b",\n    "status": "SUCCEEDED",\n    "revertReason": null,\n    "index": 0,\n    "logs": []\n  }\n}\n \n...
const { receipt } = await session.account.relayer(config.chainId).wait('462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b')
status, receipt, _ := relayer.Wait(ctx, "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b")
","isPage":true,"text":"\nTo fetch a transaction receipt for an arbitrary transaction that was dispatched via the relayer, call the /GetMetaTxnReceipt endpoint.\nThe metaTxID is the txnHash from the response of the /SendMetaTxn endpoint.\ncurl -s -X POST -H 'Content-Type: application/json' \\\n -d '{"metaTxID":"462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b"}' \\\n https://polygon-relayer.sequence.app/rpc/Relayer/GetMetaTxnReceipt | jq\n \n{\n "receipt": {\n "id": "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b",\n "status": "SUCCEEDED",\n "revertReason": null,\n "index": 0,\n "logs": []\n }\n}\n \n...const { receipt } = await session.account.relayer(config.chainId).wait('462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b')status, receipt, _ := relayer.Wait(ctx, "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b")","title":"Fetching transaction receipts","titles":[null]},"186":{"href":"/api/relayer/examples/send-transactions#sending-transactions","html":"\n
const transactions = [\n  {\n    to: '0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04',\n    value: '1000000000000000000'\n  }\n]\n \n// This sends the transaction to the relayer, and returns immediately once the relayer responds.\nconst response = await account.sendTransaction(transactions)\n \n// This waits for the transaction to be confirmed on-chain.\nconst receipt = await response.wait()\n \nconsole.log(JSON.stringify(receipt, undefined, 2))
// Select the USDC fee option.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\nvar selectedOption *sequence.RelayerFeeOption\nfor _, option := range options {\n  if option.Token.Symbol == "USDC" {\n    selectedOption = option\n    break\n  }\n}\n \n// Pay the relayer.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\ndata, _ := contracts.IERC20.Encode("transfer", selectedOption.To, selectedOption.Value)\ntransactions.Append(sequence.Transactions{&sequence.Transaction{\n  To:            *selectedOption.Token.ContractAddress,\n  Data:          data,\n  RevertOnError: true,\n}})\n \nsigned, _ := wallet.SignTransactions(ctx, transactions)\n \n// Send the transaction to the relayer.\nmetaTxnID, _, wait, _ := wallet.SendTransaction(ctx, signed, quote)\n \nfmt.Println("meta-transaction ID", metaTxnID)\n \nreceipt, _ := wait(ctx)\n \nfmt.Println("transaction hash", receipt.TxHash)
","isPage":true,"text":"\nconst transactions = [\n {\n to: '0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04',\n value: '1000000000000000000'\n }\n]\n \n// This sends the transaction to the relayer, and returns immediately once the relayer responds.\nconst response = await account.sendTransaction(transactions)\n \n// This waits for the transaction to be confirmed on-chain.\nconst receipt = await response.wait()\n \nconsole.log(JSON.stringify(receipt, undefined, 2))// Select the USDC fee option.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\nvar selectedOption *sequence.RelayerFeeOption\nfor _, option := range options {\n if option.Token.Symbol == "USDC" {\n selectedOption = option\n break\n }\n}\n \n// Pay the relayer.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\ndata, _ := contracts.IERC20.Encode("transfer", selectedOption.To, selectedOption.Value)\ntransactions.Append(sequence.Transactions{&sequence.Transaction{\n To: *selectedOption.Token.ContractAddress,\n Data: data,\n RevertOnError: true,\n}})\n \nsigned, _ := wallet.SignTransactions(ctx, transactions)\n \n// Send the transaction to the relayer.\nmetaTxnID, _, wait, _ := wallet.SendTransaction(ctx, signed, quote)\n \nfmt.Println("meta-transaction ID", metaTxnID)\n \nreceipt, _ := wait(ctx)\n \nfmt.Println("transaction hash", receipt.TxHash)","title":"Sending transactions","titles":[null]},"187":{"href":"/sdk/typescript/connectors/FAQ#nextjs","html":"\n","isPage":true,"text":"\n","title":"NextJs","titles":[null]},"188":{"href":"/sdk/typescript/connectors/FAQ#why-does-my-wallet-integration-produce-an-error-when-used-with-nextjs","html":"\n

Wallet libraries and connectors must be rendered in the browser. This is particularly true for Wagmi and Wagmi-based libraries. Attempts to render the page elsewhere, such as on backend server, can produce errors in some situations. Rendering on the server is therefore highly discouraged.

\n

The method for fixing this issue will depend on the folder structure. The pages folder structure is available for all versions of NextJs, while the app folder structure is only available for NextJs version 13 and above and may require being turned on through an experimental setting.

\n

See using wallet libraries with next.js pages directory

\n

See using wallet libraries with next.js app directory(NextJs 13+ feature)

\n","isPage":false,"text":"\nWallet libraries and connectors must be rendered in the browser. This is particularly true for Wagmi and Wagmi-based libraries. Attempts to render the page elsewhere, such as on backend server, can produce errors in some situations. Rendering on the server is therefore highly discouraged.\nThe method for fixing this issue will depend on the folder structure. The pages folder structure is available for all versions of NextJs, while the app folder structure is only available for NextJs version 13 and above and may require being turned on through an experimental setting.\nSee using wallet libraries with next.js pages directory\nSee using wallet libraries with next.js app directory(NextJs 13+ feature)\n","title":"Why does my wallet integration produce an error when used with next.js?","titles":[null,"NextJs"]},"189":{"href":"/sdk/typescript/connectors/FAQ#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-pages-directory-all-versions-of-nextjs","html":"\n

The content of the application which depends on Wagmi hooks must be mounted only once the application is rendered in the client. This is a limitation due to wagmi when used with NextJs, and all wagmi-based libraries will inherit this limitation. To do so we can use a useEffect hook to wait before rendering the application.

\n

In the example below, we wait until the app is mounted in the client before rendering the rest of the application:

\n
import { useIsMounted } from '../hooks'\nimport Home from '../components/Home'\n \nconst Page = () => {\n  const isMounted = useIsMounted()\n \n  if (!isMounted) return null\n  return (\n    <>\n      <Home />\n    </>\n  )\n}\n \nexport default Page
\n

A full code example of this setup working with the Wagmi library can be found on github.\nThe method described above is the one recommended by Wagmi and is demonstrated in their official example.

\n","isPage":false,"text":"\nThe content of the application which depends on Wagmi hooks must be mounted only once the application is rendered in the client. This is a limitation due to wagmi when used with NextJs, and all wagmi-based libraries will inherit this limitation. To do so we can use a useEffect hook to wait before rendering the application.\nIn the example below, we wait until the app is mounted in the client before rendering the rest of the application:\nimport { useIsMounted } from '../hooks'\nimport Home from '../components/Home'\n \nconst Page = () => {\n const isMounted = useIsMounted()\n \n if (!isMounted) return null\n return (\n <>\n <Home />\n </>\n )\n}\n \nexport default Page\nA full code example of this setup working with the Wagmi library can be found on github.\nThe method described above is the one recommended by Wagmi and is demonstrated in their official example.\n","title":"How do I use a wallet library and connector with next.js using the pages directory (all versions of NextJs)?","titles":[null,"NextJs"]},"190":{"href":"/sdk/typescript/connectors/FAQ#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-app-directory-version-13-and-above-only","html":"\n

NextJs 13 and above allows using a new folder structure in which the content is placed in an app directory. Enabling this feature may require explicitly indicating it with an experimental setting.\nWhen using such a folder structure, NextJs allows the declaration of Client Components which are components that will be rendered in the browser.\nA wrapper component containing the wallet library initialized with all the connectors must be declared with the "use client" directive. The "use client" directive is what will turn the wrapper component into a Client Component to be rendered in the browser.

\n

In addition, there is a bug with wagmi and nextJs when using the autoConnect feature which causes

\n

In the example below, we declare a wrapper component with the "use client" directive:

\n
"use client" // this directive informs next.js that the component is a Client Component to be rendered in the browser\n \nconst WagmiWrapper = ({ children }) => {\n  const wagmiClient = createClient({\n    autoConnect: true,\n    connectors,\n    provider,\n    webSocketProvider,\n  });\n \n \n  return (\n    <WagmiConfig client={wagmiClient}>\n      {children}\n    </WagmiConfig>\n  );\n}\n \nexport default WagmiWrapper
\n

This wrapper component can then be imported normally and wrap the rest of the application. The child components can be a combination of Client and Server components.

\n
// We import a custom wrapper component that initializes the wallet library and all its connectors\n// An example of the content of this wrapper component can be found here: https://github.com/0xsequence/demo-dapp-wagmi-next/blob/master/components/WagmiProvider.tsx\nimport WagmiWrapper from './WagmiWrapper'\n \n// We can then wrap our entire app with this browser's rendered component\nfunction MyApp({ Component, pageProps }: AppProps) {\n  return (\n    <WagmiWrapper>\n      <Component {...pageProps} />\n    </WagmiWrapper>\n  );\n}
\n

A full code example using Nextjs and the app directory can be found on github.\nThe method described above is the one recommended by Wagmi through their NextJs example which can be consulted by running the command npx create-wagmi and selecting the nextJs option.

\n

Click here for more information about Client Components.

","isPage":false,"text":"\nNextJs 13 and above allows using a new folder structure in which the content is placed in an app directory. Enabling this feature may require explicitly indicating it with an experimental setting.\nWhen using such a folder structure, NextJs allows the declaration of Client Components which are components that will be rendered in the browser.\nA wrapper component containing the wallet library initialized with all the connectors must be declared with the "use client" directive. The "use client" directive is what will turn the wrapper component into a Client Component to be rendered in the browser.\nIn addition, there is a bug with wagmi and nextJs when using the autoConnect feature which causes\nIn the example below, we declare a wrapper component with the "use client" directive:\n"use client" // this directive informs next.js that the component is a Client Component to be rendered in the browser\n \nconst WagmiWrapper = ({ children }) => {\n const wagmiClient = createClient({\n autoConnect: true,\n connectors,\n provider,\n webSocketProvider,\n });\n \n \n return (\n <WagmiConfig client={wagmiClient}>\n {children}\n </WagmiConfig>\n );\n}\n \nexport default WagmiWrapper\nThis wrapper component can then be imported normally and wrap the rest of the application. The child components can be a combination of Client and Server components.\n// We import a custom wrapper component that initializes the wallet library and all its connectors\n// An example of the content of this wrapper component can be found here: https://github.com/0xsequence/demo-dapp-wagmi-next/blob/master/components/WagmiProvider.tsx\nimport WagmiWrapper from './WagmiWrapper'\n \n// We can then wrap our entire app with this browser's rendered component\nfunction MyApp({ Component, pageProps }: AppProps) {\n return (\n <WagmiWrapper>\n <Component {...pageProps} />\n </WagmiWrapper>\n );\n}\nA full code example using Nextjs and the app directory can be found on github.\nThe method described above is the one recommended by Wagmi through their NextJs example which can be consulted by running the command npx create-wagmi and selecting the nextJs option.\nClick here for more information about Client Components.","title":"How do I use a wallet library and connector with next.js using the app directory (version 13 and above only)?","titles":[null,"NextJs"]},"191":{"href":"/sdk/typescript/connectors/overview#wallet-connectors","html":"\n

Sequence is compatible with all standard Ethereum libraries and connectors. If you've\ndeveloped your dapp to with work Metamask, it will also automatically work with Sequence.

\n

Our SDKs offer all the functionality you'd need to build a web3 dapp, but you can also\ncombine other libraries, tools, and wallet connectors :) Please see our open sourced Demo Dapp\nproject for an example use of Sequence, or see below on usage with additional connectors.

\n

For your dapps, you may also want to support many different kinds of wallets in addition\nto the Sequence Wallet. You may do this by using sequence.js or using one of the connectors below:

\n\n

Additionally, if you are building a mobile app or video game, please see the docs for\nthe respective SDK. Feel free to reach out to our team for help/questions too.

","isPage":true,"text":"\nSequence is compatible with all standard Ethereum libraries and connectors. If you've\ndeveloped your dapp to with work Metamask, it will also automatically work with Sequence.\nOur SDKs offer all the functionality you'd need to build a web3 dapp, but you can also\ncombine other libraries, tools, and wallet connectors :) Please see our open sourced Demo Dapp\nproject for an example use of Sequence, or see below on usage with additional connectors.\nFor your dapps, you may also want to support many different kinds of wallets in addition\nto the Sequence Wallet. You may do this by using sequence.js or using one of the connectors below:\n\nSequence Kit\nWagmi\nWeb3Modal\nRainbowKit\nweb3-onboard\nweb3-react\n\nAdditionally, if you are building a mobile app or video game, please see the docs for\nthe respective SDK. Feel free to reach out to our team for help/questions too.","title":"Wallet Connectors","titles":[]},"192":{"href":"/sdk/typescript/connectors/rainbow-kit#using-rainbowkit","html":"\n

The Sequence wallet can be added to RainbowKit through the connector.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Rainbow + Wallet Connect with RainbowKit.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-rainbowkit\n:::

\n","isPage":true,"text":"\nThe Sequence wallet can be added to RainbowKit through the connector.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Rainbow + Wallet Connect with RainbowKit.\nSource code is available too: https://github.com/0xsequence/demo-dapp-rainbowkit\n:::\n","title":"Using RainbowKit","titles":[]},"193":{"href":"/sdk/typescript/connectors/rainbow-kit#installation","html":"\n

The connector is installed via the npm package @0xsequence/rainbowkit-plugin.

\n
npm install @0xsequence/rainbowkit-plugin 0xsequence ethers
\n

or

\n
yarn add @0xsequence/rainbowkit-plugin 0xsequence ethers
\n","isPage":false,"text":"\nThe connector is installed via the npm package @0xsequence/rainbowkit-plugin.\nnpm install @0xsequence/rainbowkit-plugin 0xsequence ethers\nor\nyarn add @0xsequence/rainbowkit-plugin 0xsequence ethers\n","title":"Installation","titles":["Using RainbowKit"]},"194":{"href":"/sdk/typescript/connectors/rainbow-kit#usage","html":"\n

The connector is then imported and added to the list of connectors alongside the other RainbowKit wallets.

\n
import { sequenceWallet } from '@0xsequence/rainbowkit-plugin'\nimport { connectorsForWallets } from '@rainbow-me/rainbowkit';\n \nconst connectors = connectorsForWallets([\n  {\n    groupName: 'Recommended',\n    wallets: [\n      sequenceWallet({\n        chains,\n        defaultNetwork: 'polygon',\n        connect: {\n          app: 'Demo-app'\n        }\n      }),\n      ...otherRainbowKitWallets\n    ]\n  }\n 
\n","isPage":false,"text":"\nThe connector is then imported and added to the list of connectors alongside the other RainbowKit wallets.\nimport { sequenceWallet } from '@0xsequence/rainbowkit-plugin'\nimport { connectorsForWallets } from '@rainbow-me/rainbowkit';\n \nconst connectors = connectorsForWallets([\n {\n groupName: 'Recommended',\n wallets: [\n sequenceWallet({\n chains,\n defaultNetwork: 'polygon',\n connect: {\n app: 'Demo-app'\n }\n }),\n ...otherRainbowKitWallets\n ]\n }\n \n","title":"Usage","titles":["Using RainbowKit"]},"195":{"href":"/sdk/typescript/connectors/rainbow-kit#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using RainbowKit"]},"196":{"href":"/sdk/typescript/connectors/rainbow-kit#chains","html":"\n

Chains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.

\n","isPage":false,"text":"\nChains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.\n","title":"chains","titles":["Using RainbowKit","Parameters"]},"197":{"href":"/sdk/typescript/connectors/rainbow-kit#connect-optional","html":"\n

Connect options for Sequence, including the name of the app and the default network id the wallet will attempt connection to.\nA more in depth description of the connect options is available here.

\n","isPage":false,"text":"\nConnect options for Sequence, including the name of the app and the default network id the wallet will attempt connection to.\nA more in depth description of the connect options is available here.\n","title":"connect (optional)","titles":["Using RainbowKit","Parameters"]},"198":{"href":"/sdk/typescript/connectors/rainbow-kit#defaultnetwork-optional","html":"\n

The default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).

\n","isPage":false,"text":"\nThe default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).\n","title":"defaultNetwork (optional)","titles":["Using RainbowKit","Parameters"]},"199":{"href":"/sdk/typescript/connectors/rainbow-kit#using-nextjs","html":"\n

There are special considerations to take into account when using NextJs with Wagmi-based libraries like RainbowKit, such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.

\n

See this section for an explanation on using Wagmi or Wagmi-based libraries with app router.
\nSee the example app which uses the app router structure.

\n

See this section for an explanation on using Wagmi or Wagmi-based libraries with pages router.
\nSee the example app which uses the pages router structure.

\n","isPage":false,"text":"\nThere are special considerations to take into account when using NextJs with Wagmi-based libraries like RainbowKit, such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.\nSee this section for an explanation on using Wagmi or Wagmi-based libraries with app router.\nSee the example app which uses the app router structure.\nSee this section for an explanation on using Wagmi or Wagmi-based libraries with pages router.\nSee the example app which uses the pages router structure.\n","title":"Using NextJs","titles":["Using RainbowKit"]},"200":{"href":"/sdk/typescript/connectors/rainbow-kit#using-older-versions-of-wagmi--012x","html":"\n

If you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:

\n
npm install @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n

or

\n
yarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n","isPage":false,"text":"\nIf you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:\nnpm install @0xsequence/wagmi-connector@1.0 0xsequence ethers\nor\nyarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers\n","title":"Using older versions of Wagmi (<= 0.12.x)","titles":["Using RainbowKit"]},"201":{"href":"/sdk/typescript/connectors/rainbow-kit#examples","html":"\n

A demo app for RainbowKit is available here

\n

A demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the app router structure here.
\nA demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the older pages router structure here.

","isPage":false,"text":"\nA demo app for RainbowKit is available here\nA demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the app router structure here.\nA demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the older pages router structure here.","title":"Examples","titles":["Using RainbowKit"]},"202":{"href":"/sdk/typescript/connectors/sequence-kit#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","html":"\n

Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.

\n","isPage":true,"text":"\nSequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.\n","title":"Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications","titles":[]},"203":{"href":"/sdk/typescript/connectors/sequence-kit#key-features","html":"\n\n

Explore the potential of Sequence Kit by trying out our demo!

\n
","isPage":false,"text":"\n\n\nUniversal Connections: Seamlessly connect via popular social logins such as Facebook, Google, Discord, and more! Your users will enjoy a smooth, secure onboarding process. 🔐🪪\n\n\nWeb3 Wallet Integration: Effortlessly integrate with leading web3 wallets like WalletConnect and MetaMask. Unleash the power of blockchain with just a few clicks! 🦊 ⛓️\n\n\nEmbedded Wallet Experience: Provide your users with a comprehensive in-game wallet, enabling them to manage their coins and collectibles all within your own application. 👛 🖼️ 🪙\n\n\nExplore the potential of Sequence Kit by trying out our demo!\n","title":"Key Features","titles":["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications"]},"204":{"href":"/sdk/typescript/connectors/sequence-kit#next-steps","html":"
\n

Ready to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.

","isPage":false,"text":"\nReady to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.","title":"Next Steps","titles":[]},"205":{"href":"/sdk/typescript/connectors/wagmi#using-wagmi","html":"\n

The Sequence wallet used with Wagmi through the connector.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with wagmi.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-wagmi\n:::

\n","isPage":true,"text":"\nThe Sequence wallet used with Wagmi through the connector.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with wagmi.\nSource code is available too: https://github.com/0xsequence/demo-dapp-wagmi\n:::\n","title":"Using Wagmi","titles":[]},"206":{"href":"/sdk/typescript/connectors/wagmi#installation","html":"\n

The connector is installed via the npm package @0xsequence/wagmi-connector. If you are using the latest version of wagmi (>= 1.0.0) the latest version of the wagmi-connector package can be installed with the following command:

\n
npm install @0xsequence/wagmi-connector 0xsequence ethers
\n

or

\n
yarn add @0xsequence/wagmi-connector 0xsequence ethers
\n","isPage":false,"text":"\nThe connector is installed via the npm package @0xsequence/wagmi-connector. If you are using the latest version of wagmi (>= 1.0.0) the latest version of the wagmi-connector package can be installed with the following command:\nnpm install @0xsequence/wagmi-connector 0xsequence ethers\nor\nyarn add @0xsequence/wagmi-connector 0xsequence ethers\n","title":"Installation","titles":["Using Wagmi"]},"207":{"href":"/sdk/typescript/connectors/wagmi#usage","html":"\n

The connector is then imported and added to the list of connectors alongside the other wagmi connectors.

\n
import { SequenceConnector } from "@0xsequence/wagmi-connector";\n \nconst connectors = [\n  new SequenceConnector({\n    chains,\n    options: {\n      defaultNetwork: "polygon",\n      connect: {\n        app: "Demo-app",\n      },\n    },\n  }),\n  ...otherConnectors,\n];\n \nconst wagmiConfig = createConfig({\n  autoConnect: true,\n  connectors,\n  publicClient,\n  webSocketPublicClient,\n});
\n","isPage":false,"text":"\nThe connector is then imported and added to the list of connectors alongside the other wagmi connectors.\nimport { SequenceConnector } from "@0xsequence/wagmi-connector";\n \nconst connectors = [\n new SequenceConnector({\n chains,\n options: {\n defaultNetwork: "polygon",\n connect: {\n app: "Demo-app",\n },\n },\n }),\n ...otherConnectors,\n];\n \nconst wagmiConfig = createConfig({\n autoConnect: true,\n connectors,\n publicClient,\n webSocketPublicClient,\n});\n","title":"Usage","titles":["Using Wagmi"]},"208":{"href":"/sdk/typescript/connectors/wagmi#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using Wagmi"]},"209":{"href":"/sdk/typescript/connectors/wagmi#chains","html":"\n

Chains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.

\n","isPage":false,"text":"\nChains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.\n","title":"chains","titles":["Using Wagmi","Parameters"]},"210":{"href":"/sdk/typescript/connectors/wagmi#optionsconnect-optional","html":"\n

Connection details that will be passed to Sequence upon connection, including app name, network id, etc...\nA more in depth description of the connect options is available here.

\n","isPage":false,"text":"\nConnection details that will be passed to Sequence upon connection, including app name, network id, etc...\nA more in depth description of the connect options is available here.\n","title":"options.connect (optional)","titles":["Using Wagmi","Parameters"]},"211":{"href":"/sdk/typescript/connectors/wagmi#optionsdefaultnetwork-optional","html":"\n

The default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).

\n","isPage":false,"text":"\nThe default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).\n","title":"options.defaultNetwork (optional)","titles":["Using Wagmi","Parameters"]},"212":{"href":"/sdk/typescript/connectors/wagmi#using-older-versions-of-wagmi--012x","html":"\n

If you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:

\n
npm install @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n

or

\n
yarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n","isPage":false,"text":"\nIf you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:\nnpm install @0xsequence/wagmi-connector@1.0 0xsequence ethers\nor\nyarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers\n","title":"Using older versions of Wagmi (<= 0.12.x)","titles":["Using Wagmi"]},"213":{"href":"/sdk/typescript/connectors/wagmi#using-nextjs","html":"\n

There are special considerations to take into account when using Wagmi with NextJs such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.

\n

See this section for an explanation on using the Wagmi connector with app router.
\nSee the example app which uses the app router structure.

\n

See this section for an explanation on using the Wagmi connector with pages router.
\nSee the example app which uses the pages router structure.

\n","isPage":false,"text":"\nThere are special considerations to take into account when using Wagmi with NextJs such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.\nSee this section for an explanation on using the Wagmi connector with app router.\nSee the example app which uses the app router structure.\nSee this section for an explanation on using the Wagmi connector with pages router.\nSee the example app which uses the pages router structure.\n","title":"Using NextJs","titles":["Using Wagmi"]},"214":{"href":"/sdk/typescript/connectors/wagmi#examples","html":"\n

Below are example dapps using various versions of wagmi and libraries.

\n

A demo app for the lastest version of Wagmi is available here.
\nA demo app is available for older version of Wagmi(<=0.12.x) is available here.

\n

A demo app for Wagmi + NextJs with the app router structure here.
\nA demo app for Wagmi + NextJs with the older pages router structure here.

","isPage":false,"text":"\nBelow are example dapps using various versions of wagmi and libraries.\nA demo app for the lastest version of Wagmi is available here.\nA demo app is available for older version of Wagmi(<=0.12.x) is available here.\nA demo app for Wagmi + NextJs with the app router structure here.\nA demo app for Wagmi + NextJs with the older pages router structure here.","title":"Examples","titles":["Using Wagmi"]},"215":{"href":"/sdk/typescript/connectors/web3-onboard#using-web3-onboard","html":"\n

The Sequence wallet can be added through the Blocknative web3-onboard package.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with Web3-Onboard.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-web3-onboard\n:::

\n","isPage":true,"text":"\nThe Sequence wallet can be added through the Blocknative web3-onboard package.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with Web3-Onboard.\nSource code is available too: https://github.com/0xsequence/demo-dapp-web3-onboard\n:::\n","title":"Using Web3-Onboard","titles":[]},"216":{"href":"/sdk/typescript/connectors/web3-onboard#installation","html":"\n

The Sequence module is available through npm:

\n
npm install @web3-onboard/sequence 0xsequence ethers
\n

or

\n
yarn add @web3-onboard/sequence 0xsequence ethers
\n","isPage":false,"text":"\nThe Sequence module is available through npm:\nnpm install @web3-onboard/sequence 0xsequence ethers\nor\nyarn add @web3-onboard/sequence 0xsequence ethers\n","title":"Installation","titles":["Using Web3-Onboard"]},"217":{"href":"/sdk/typescript/connectors/web3-onboard#usage","html":"\n
import sequenceModule from '@web3-onboard/sequence'\n \nconst sequenceOptions = {\n  network: 137,\n  appName: 'My app'\n}\n \nconst sequenceOnboard = sequenceModule({})\n \nconst onboard = Onboard({\n  wallets: [\n    sequenceOnboard,\n    ...restWallets\n  ],\n  ...restofOnboardParams\n})\n 
\n","isPage":false,"text":"\nimport sequenceModule from '@web3-onboard/sequence'\n \nconst sequenceOptions = {\n network: 137,\n appName: 'My app'\n}\n \nconst sequenceOnboard = sequenceModule({})\n \nconst onboard = Onboard({\n wallets: [\n sequenceOnboard,\n ...restWallets\n ],\n ...restofOnboardParams\n})\n \n","title":"Usage","titles":["Using Web3-Onboard"]},"218":{"href":"/sdk/typescript/connectors/web3-onboard#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using Web3-Onboard"]},"219":{"href":"/sdk/typescript/connectors/web3-onboard#network-optional","html":"\n

The default network that the Sequence wallet will attempt to connect to.

\n","isPage":false,"text":"\nThe default network that the Sequence wallet will attempt to connect to.\n","title":"network (optional)","titles":["Using Web3-Onboard","Parameters"]},"220":{"href":"/sdk/typescript/connectors/web3-onboard#appname-optional","html":"\n

The name of the app which will show up in Sequence's prompt upon an attempt to connect.

\n","isPage":false,"text":"\nThe name of the app which will show up in Sequence's prompt upon an attempt to connect.\n","title":"appName (optional)","titles":["Using Web3-Onboard","Parameters"]},"221":{"href":"/sdk/typescript/connectors/web3-onboard#example","html":"\n

An example demo of an integration of Sequence + Web3 Onboard is available here

","isPage":false,"text":"\nAn example demo of an integration of Sequence + Web3 Onboard is available here","title":"Example","titles":["Using Web3-Onboard"]},"222":{"href":"/sdk/typescript/connectors/web3-react-v6#using-web3-react-v6","html":"\n

The connector is available for web3-react V6. Please note that later versions of web3-react cannot be used with the Web3-React V6 connector due to breaking changes.

\n","isPage":true,"text":"\nThe connector is available for web3-react V6. Please note that later versions of web3-react cannot be used with the Web3-React V6 connector due to breaking changes.\n","title":"Using Web3-React V6","titles":[]},"223":{"href":"/sdk/typescript/connectors/web3-react-v6#installation","html":"\n

The connector may be installed via the npm package:

\n
 npm install @0xsequence/web3-react-v6-connector 0xsequence ethers
\n","isPage":false,"text":"\nThe connector may be installed via the npm package:\n npm install @0xsequence/web3-react-v6-connector 0xsequence ethers\n","title":"Installation","titles":["Using Web3-React V6"]},"224":{"href":"/sdk/typescript/connectors/web3-react-v6#usage","html":"\n","isPage":false,"text":"\n","title":"Usage","titles":["Using Web3-React V6"]},"225":{"href":"/sdk/typescript/connectors/web3-react-v6#initialization","html":"\n

The connector must be initialized similarly to other connectors.

\n
import { SequenceConnector } from '@0xsequence/web3-react-v6-connector'\n \nconst options = {\n  appName: 'Web3 React Demo app'\n}\n \nexport const sequence = new SequenceConnector({ chainId: 137, appName: options.appName  })
\n","isPage":false,"text":"\nThe connector must be initialized similarly to other connectors.\nimport { SequenceConnector } from '@0xsequence/web3-react-v6-connector'\n \nconst options = {\n appName: 'Web3 React Demo app'\n}\n \nexport const sequence = new SequenceConnector({ chainId: 137, appName: options.appName })\n","title":"Initialization","titles":["Using Web3-React V6","Usage"]},"226":{"href":"/sdk/typescript/connectors/web3-react-v6#activationdeactivation","html":"\n

The connection can be activated and deactivated from the initialized connector similarly to other connectors.

\n
import { useWeb3React } from '@web3-react/core'\nimport { sequence as sequenceConnector } from './connectors/sequence'\n \nconst { activate } = useWeb3React()\n \nconst connectWeb3React = async () => {\n  activate(sequenceConnector);\n}\n \nconst disconnectWeb3React = async () => {\n  sequenceConnector.deactivate();\n}
\n","isPage":false,"text":"\nThe connection can be activated and deactivated from the initialized connector similarly to other connectors.\nimport { useWeb3React } from '@web3-react/core'\nimport { sequence as sequenceConnector } from './connectors/sequence'\n \nconst { activate } = useWeb3React()\n \nconst connectWeb3React = async () => {\n activate(sequenceConnector);\n}\n \nconst disconnectWeb3React = async () => {\n sequenceConnector.deactivate();\n}\n","title":"Activation/Deactivation","titles":["Using Web3-React V6","Usage"]},"227":{"href":"/sdk/typescript/connectors/web3-react-v6#options","html":"\n","isPage":false,"text":"\n","title":"Options","titles":["Using Web3-React V6"]},"228":{"href":"/sdk/typescript/connectors/web3-react-v6#chainid","html":"\n

The default chain id as number that the Sequence wallet will attempt to connect to.

\n","isPage":false,"text":"\nThe default chain id as number that the Sequence wallet will attempt to connect to.\n","title":"chainId","titles":["Using Web3-React V6","Options"]},"229":{"href":"/sdk/typescript/connectors/web3-react-v6#appname-optional","html":"\n

The value of appName will be displayed by the Sequence wallet when initiating a connection.

\n","isPage":false,"text":"\nThe value of appName will be displayed by the Sequence wallet when initiating a connection.\n","title":"appName (optional)","titles":["Using Web3-React V6","Options"]},"230":{"href":"/sdk/typescript/connectors/web3-react-v6#example","html":"\n

A demo app for Web3-React v6 is available here

","isPage":false,"text":"\nA demo app for Web3-React v6 is available here","title":"Example","titles":["Using Web3-React V6"]},"231":{"href":"/sdk/typescript/connectors/web3modal#using-web3modal","html":"\n

The Sequence wallet can easily be used with Web3Modal.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Wallet Connect with Web3Modal.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-web3modal\n:::

\n","isPage":true,"text":"\nThe Sequence wallet can easily be used with Web3Modal.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Wallet Connect with Web3Modal.\nSource code is available too: https://github.com/0xsequence/demo-dapp-web3modal\n:::\n","title":"Using Web3Modal","titles":[]},"232":{"href":"/sdk/typescript/connectors/web3modal#usage","html":"\n

The sequence wallet is compatible with wallet connect V2 and is therefore fully compatible with web3modal by default.\nUsers can use the Scan button in the sequence wallet to connect.

\n\n","isPage":false,"text":"\nThe sequence wallet is compatible with wallet connect V2 and is therefore fully compatible with web3modal by default.\nUsers can use the Scan button in the sequence wallet to connect.\n\n","title":"Usage","titles":["Using Web3Modal"]},"233":{"href":"/sdk/typescript/connectors/web3modal#example","html":"\n

An example demo for the sequence Wallet + web3modal is available [here] (https://github.com/0xsequence/demo-dapp-web3modal)

","isPage":false,"text":"\nAn example demo for the sequence Wallet + web3modal is available [here] (https://github.com/0xsequence/demo-dapp-web3modal)","title":"Example","titles":["Using Web3Modal"]},"234":{"href":"/sdk/typescript/guides/auth-address#authenticate-users-with-message-signature","html":"\n","isPage":true,"text":"\n","title":"Authenticate Users with Message Signature","titles":[]},"235":{"href":"/sdk/typescript/guides/auth-address#ask-for-the-wallet-address","html":"\n

To get the user's Sequence wallet address:

\n
const wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)
\n","isPage":false,"text":"\nTo get the user's Sequence wallet address:\nconst wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)\n","title":"Ask for the wallet address","titles":["Authenticate Users with Message Signature"]},"236":{"href":"/sdk/typescript/guides/auth-address#authenticate-wallet","html":"\n

In many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.

\n

As this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.

\n
import { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n  app: 'Your Dapp name',\n  authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})
\n

It will look like this to your users:

\n\"Sequence\n

In the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.

\n

You can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.

\n","isPage":false,"text":"\nIn many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.\nAs this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.\nimport { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n app: 'Your Dapp name',\n authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})\nIt will look like this to your users:\n\nIn the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.\nYou can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.\n","title":"Authenticate wallet","titles":["Authenticate Users with Message Signature"]},"237":{"href":"/sdk/typescript/guides/auth-address#authenticate-wallet-server-side","html":"\n

The above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:

\n
import { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n  () => new commons.reader.OnChainReader(provider),\n  new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n  v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n  const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n  console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n  console.log(`invalid proof -- do not trust address: ${err}`)\n}
\n

See the Go Sequence SDK on using Sequence in your Go applications.

\n

If your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.

\n

As always, if you have any questions or require help, reach out to us on Discord.

","isPage":false,"text":"\nThe above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:\nimport { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n () => new commons.reader.OnChainReader(provider),\n new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n console.log(`invalid proof -- do not trust address: ${err}`)\n}\nSee the Go Sequence SDK on using Sequence in your Go applications.\nIf your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.\nAs always, if you have any questions or require help, reach out to us on Discord.","title":"Authenticate wallet server-side","titles":["Authenticate Users with Message Signature"]},"238":{"href":"/sdk/typescript/guides/building-backends#building-backends-with-sequence","html":"\n","isPage":true,"text":"\n","title":"Building Backends with Sequence","titles":[]},"239":{"href":"/sdk/typescript/guides/building-backends#nodejs","html":"\n

The 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.

\n","isPage":false,"text":"\nThe 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.\n","title":"nodejs","titles":["Building Backends with Sequence",null]},"240":{"href":"/sdk/typescript/guides/building-backends#go","html":"\n

A complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.

\n

go-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.

\n","isPage":false,"text":"\nA complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.\ngo-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.\n","title":"Go","titles":["Building Backends with Sequence",null]},"241":{"href":"/sdk/typescript/guides/building-backends#ethkit","html":"\n

As part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.

\n","isPage":false,"text":"\nAs part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.\n","title":"ethkit","titles":["Building Backends with Sequence",null]},"242":{"href":"/sdk/typescript/guides/building-backends#support-for-other-backend-languages","html":"\n

If your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.

\n

If your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.

\n

If you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.

","isPage":false,"text":"\nIf your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.\nIf your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.\nIf you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.","title":"Support for other backend languages","titles":["Building Backends with Sequence",null]},"243":{"href":"/sdk/typescript/guides/connect-wallet#connect-wallet","html":"\n

Sequence is a very flexible wallet which allow users multiple ways to connect / access their wallet. This includes:

\n
    \n
  1. \n

    On-demand Ethereum web wallet for new users via 0xsequence npm package + https://sequence.app -- this option allows\ndevelopers to offer users an on-demand web3 wallet. No user install required -- any browser will just work, and users\ncan onboard with a familiar Web2 experience. Think of it like Paypal / Stripe but for web3.

    \n
  2. \n
  3. \n

    Surf all of web3 via Sequence Wallet Chrome Extension -- users\nwho have the Sequence Wallet Chrome Extension installed are able to access any Ethereum-compatible Dapp on the Web :) Just like how MetaMask works,\nbut of course with a bunch of the benefits of Sequence.

    \n
  4. \n
  5. \n

    Mobile phone access via WalletConnect support within Sequence Wallet -- users are able to communicate with their wallets remotely\nvia the awesome Wallet Connect protocol. This is an excellent option if using Sequence Wallet from your mobile phone and want to connect\nyour wallet to a desktop dapp.

    \n
  6. \n
\n

Sequence Wallet is built on Web Browser (W3C) and Ethereum web3 standards -- and is available everywhere that a modern browser is able to run.\nWe've carefully designed the wallet for simple onboarding, while maintaining security for users, and allowing users to progressively\nincrease the level of their security through additional keys and measures.

\n

This means, that if you've developed a dapp to work with MetaMask, then Sequence will work too without any changes. If you're\nusing web3.js or ethers.js, Sequence will just work too. This is the beauty of interoperability on web3 :)

\n","isPage":true,"text":"\nSequence is a very flexible wallet which allow users multiple ways to connect / access their wallet. This includes:\n\n\nOn-demand Ethereum web wallet for new users via 0xsequence npm package + https://sequence.app -- this option allows\ndevelopers to offer users an on-demand web3 wallet. No user install required -- any browser will just work, and users\ncan onboard with a familiar Web2 experience. Think of it like Paypal / Stripe but for web3.\n\n\nSurf all of web3 via Sequence Wallet Chrome Extension -- users\nwho have the Sequence Wallet Chrome Extension installed are able to access any Ethereum-compatible Dapp on the Web :) Just like how MetaMask works,\nbut of course with a bunch of the benefits of Sequence.\n\n\nMobile phone access via WalletConnect support within Sequence Wallet -- users are able to communicate with their wallets remotely\nvia the awesome Wallet Connect protocol. This is an excellent option if using Sequence Wallet from your mobile phone and want to connect\nyour wallet to a desktop dapp.\n\n\nSequence Wallet is built on Web Browser (W3C) and Ethereum web3 standards -- and is available everywhere that a modern browser is able to run.\nWe've carefully designed the wallet for simple onboarding, while maintaining security for users, and allowing users to progressively\nincrease the level of their security through additional keys and measures.\nThis means, that if you've developed a dapp to work with MetaMask, then Sequence will work too without any changes. If you're\nusing web3.js or ethers.js, Sequence will just work too. This is the beauty of interoperability on web3 :)\n","title":"Connect Wallet","titles":[]},"244":{"href":"/sdk/typescript/guides/connect-wallet#connecting-your-dapp-with-0xsequence","html":"\n

:::info A delightful wallet without requiring your users to install anything

\nBy integrating 0xsequence, users may access your dapp without having to install any special extensions,\nand the wallet also works on mobile browsers!\n:::

\n

Your dapp can connect to your user's wallet by first instantiating the Wallet provider:

\n
import { sequence } from "0xsequence";\n \nconst projectAccessKey = '<access_key>'\n \n// This assumes your dapp runs on Ethereum mainnet\nconst wallet = sequence.initWallet(projectAccessKey);\n \n// If your dapp runs on a different EVM-compatible blockchain, you can specify its name\n// const wallet = sequence.initWallet(projectAccessKey, { defaultNetwork: 'polygon' });
\n

Note that is possible to retrieve the above instance by using the getWallet() method:

\n
import { sequence } from "0xsequence";\nconst wallet = sequence.getWallet();
\n

Once you have the instance, you can connect to the wallet:

\n
const connectDetails = await wallet.connect({\n  app: "Your Dapp name",\n  authorize: true,\n  // And pass settings if you would like to customize further\n  settings: {\n    theme: "light",\n    bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n    includedPaymentProviders: ["moonpay", "ramp"],\n    defaultFundingCurrency: "matic",\n    lockFundingCurrencyToDefault: false,\n  },\n});\n \nconsole.log("user accepted connect?", connectDetails.connected);\nconsole.log(\n  "users signed connect proof to valid their account address:",\n  connectDetails.proof\n);
\n

You can pick/limit the available sign in options with signInOptions. Will be ignored if user is already signed in.

\n
const wallet = sequence.getWallet();\n \nawait wallet.connect({\n  app: "Your Dapp name",\n  settings: { signInOptions: ["google"] },\n});
\n

After you connect, you can use wallet.openWallet() to open the wallet:

\n
const wallet = sequence.getWallet();\nwallet.openWallet();
\n

You can also optionally pass a path, and use openWithOptions intent to pass settings when you open the wallet:

\n
const settings: Settings = {\n  theme: "dark",\n  bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n  includedPaymentProviders: ["moonpay", "ramp"],\n  defaultFundingCurrency: "eth",\n  lockFundingCurrencyToDefault: false,\n};\n \nconst intent: OpenWalletIntent = {\n  type: "openWithOptions",\n  options: {\n    settings: settings,\n  },\n};\n \nconst wallet = sequence.getWallet();\n \nconst path = "wallet/add-funds";\nwallet.openWallet(path, intent);
\n

:::tip Check out some example Dapp source code\nFor a complete examples, see Demo-Dapp and Demo-Dapp-Web3Modal.\n:::

\n

:::caution Avoid Browsers Blocking Sequence Popup\nMost browsers will block popups if they are called outside of user-triggered event handlers like onclick, or when it takes too long to process between the user action and the actual window

\n

Read more about browser popup-blocking here.\n:::

\n

\"Sequence

\n

\"Sequence

\n","isPage":false,"text":"\n:::info A delightful wallet without requiring your users to install anything \nBy integrating 0xsequence, users may access your dapp without having to install any special extensions,\nand the wallet also works on mobile browsers!\n:::\nYour dapp can connect to your user's wallet by first instantiating the Wallet provider:\nimport { sequence } from "0xsequence";\n \nconst projectAccessKey = '<access_key>'\n \n// This assumes your dapp runs on Ethereum mainnet\nconst wallet = sequence.initWallet(projectAccessKey);\n \n// If your dapp runs on a different EVM-compatible blockchain, you can specify its name\n// const wallet = sequence.initWallet(projectAccessKey, { defaultNetwork: 'polygon' });\nNote that is possible to retrieve the above instance by using the getWallet() method:\nimport { sequence } from "0xsequence";\nconst wallet = sequence.getWallet();\nOnce you have the instance, you can connect to the wallet:\nconst connectDetails = await wallet.connect({\n app: "Your Dapp name",\n authorize: true,\n // And pass settings if you would like to customize further\n settings: {\n theme: "light",\n bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n includedPaymentProviders: ["moonpay", "ramp"],\n defaultFundingCurrency: "matic",\n lockFundingCurrencyToDefault: false,\n },\n});\n \nconsole.log("user accepted connect?", connectDetails.connected);\nconsole.log(\n "users signed connect proof to valid their account address:",\n connectDetails.proof\n);\nYou can pick/limit the available sign in options with signInOptions. Will be ignored if user is already signed in.\nconst wallet = sequence.getWallet();\n \nawait wallet.connect({\n app: "Your Dapp name",\n settings: { signInOptions: ["google"] },\n});\nAfter you connect, you can use wallet.openWallet() to open the wallet:\nconst wallet = sequence.getWallet();\nwallet.openWallet();\nYou can also optionally pass a path, and use openWithOptions intent to pass settings when you open the wallet:\nconst settings: Settings = {\n theme: "dark",\n bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n includedPaymentProviders: ["moonpay", "ramp"],\n defaultFundingCurrency: "eth",\n lockFundingCurrencyToDefault: false,\n};\n \nconst intent: OpenWalletIntent = {\n type: "openWithOptions",\n options: {\n settings: settings,\n },\n};\n \nconst wallet = sequence.getWallet();\n \nconst path = "wallet/add-funds";\nwallet.openWallet(path, intent);\n:::tip Check out some example Dapp source code\nFor a complete examples, see Demo-Dapp and Demo-Dapp-Web3Modal.\n:::\n:::caution Avoid Browsers Blocking Sequence Popup\nMost browsers will block popups if they are called outside of user-triggered event handlers like onclick, or when it takes too long to process between the user action and the actual window\nRead more about browser popup-blocking here.\n:::\n\n\n","title":"Connecting your dapp with 0xsequence","titles":["Connect Wallet"]},"245":{"href":"/sdk/typescript/guides/connect-wallet#wallet-login-and-connect-options","html":"\n

Dapps with direct sequence integration can specify a ConnectOptions object when running wallet.connect().

\n
const connectDetails = await wallet.connect(connectOptions)
\n

The option parameters are described below.

\n","isPage":false,"text":"\nDapps with direct sequence integration can specify a ConnectOptions object when running wallet.connect().\nconst connectDetails = await wallet.connect(connectOptions)\nThe option parameters are described below.\n","title":"Wallet Login and Connect Options","titles":["Connect Wallet"]},"246":{"href":"/sdk/typescript/guides/connect-wallet#app","html":"\n

App name of the dapp which will be announced to user on connect screen.

\n

Example: await wallet.connect({ app: 'My defi app' })

\n","isPage":false,"text":"\nApp name of the dapp which will be announced to user on connect screen.\nExample: await wallet.connect({ app: 'My defi app' })\n","title":"app","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"247":{"href":"/sdk/typescript/guides/connect-wallet#appprotocol","html":"\n

Custom protocol for auth redirect (unity/unreal).

\n","isPage":false,"text":"\nCustom protocol for auth redirect (unity/unreal).\n","title":"appProtocol","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"248":{"href":"/sdk/typescript/guides/connect-wallet#origin","html":"\n

Origin hint of the dapp's host opening the wallet. This value will automatically be determined and verified for integrity, and can be omitted.

\n","isPage":false,"text":"\nOrigin hint of the dapp's host opening the wallet. This value will automatically be determined and verified for integrity, and can be omitted.\n","title":"origin","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"249":{"href":"/sdk/typescript/guides/connect-wallet#expiry","html":"\n

Expiry number (in seconds) that is used for ETHAuth proof. Default is 1 week in seconds.

\n

Example: await wallet.connect({ expiry: 36000 })

\n","isPage":false,"text":"\nExpiry number (in seconds) that is used for ETHAuth proof. Default is 1 week in seconds.\nExample: await wallet.connect({ expiry: 36000 })\n","title":"expiry","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"250":{"href":"/sdk/typescript/guides/connect-wallet#authorize","html":"\n

authorize will perform an ETHAuth eip712 signing and return the proof to the dapp.

\n

Example: await wallet.connect({ authorize: true })

\n","isPage":false,"text":"\nauthorize will perform an ETHAuth eip712 signing and return the proof to the dapp.\nExample: await wallet.connect({ authorize: true })\n","title":"authorize","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"251":{"href":"/sdk/typescript/guides/connect-wallet#authorizenonce","html":"\n

authorizeNonce is an optional number to be passed as ETHAuth's nonce claim for replay protection.

\n

Example: await wallet.connect({ authorizeNonce: 123 })

\n","isPage":false,"text":"\nauthorizeNonce is an optional number to be passed as ETHAuth's nonce claim for replay protection.\nExample: await wallet.connect({ authorizeNonce: 123 })\n","title":"authorizeNonce","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"252":{"href":"/sdk/typescript/guides/connect-wallet#refresh","html":"\n

refresh flag will force a full re-connect (ie. disconnect then connect again).

\n

Example: await wallet.connect({ refresh: true })

\n","isPage":false,"text":"\nrefresh flag will force a full re-connect (ie. disconnect then connect again).\nExample: await wallet.connect({ refresh: true })\n","title":"refresh","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"253":{"href":"/sdk/typescript/guides/connect-wallet#keepwalletopened","html":"\n

keepWalletOpened will keep the wallet window open after connecting. The default is to automatically close the wallet after connecting.

\n

Example: await wallet.connect({ keepWalletOpened: true })

\n","isPage":false,"text":"\nkeepWalletOpened will keep the wallet window open after connecting. The default is to automatically close the wallet after connecting.\nExample: await wallet.connect({ keepWalletOpened: true })\n","title":"keepWalletOpened","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"254":{"href":"/sdk/typescript/guides/connect-wallet#askforemail","html":"\n

askForEmail will ask user whether they want to share the email they use to sign in to wallet while connecting, and will be returned in connectDetails.

\n

Example: await wallet.connect({ askForEmail: true })

\n","isPage":false,"text":"\naskForEmail will ask user whether they want to share the email they use to sign in to wallet while connecting, and will be returned in connectDetails.\nExample: await wallet.connect({ askForEmail: true })\n","title":"askForEmail","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"255":{"href":"/sdk/typescript/guides/connect-wallet#settingstheme","html":"\n

Name of one of the available theme provided by sequence the sequence wallet will be rendered with.

\n

Example: await wallet.connect({ settings: {theme: "light"}}

\n","isPage":false,"text":"\nName of one of the available theme provided by sequence the sequence wallet will be rendered with.\nExample: await wallet.connect({ settings: {theme: "light"}}\n","title":"settings.theme","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"256":{"href":"/sdk/typescript/guides/connect-wallet#settingsbannerurl","html":"\n

URL of a banner image users will see when connecting or logging into your dapp. The banner image should follow a 3:1 aspect ration where 1200x400 works best.

\n

Example: await wallet.connect({ settings: {bannerUrl: "https://yoursite.com/banner-image.png"}}

\n","isPage":false,"text":"\nURL of a banner image users will see when connecting or logging into your dapp. The banner image should follow a 3:1 aspect ration where 1200x400 works best.\nExample: await wallet.connect({ settings: {bannerUrl: "https://yoursite.com/banner-image.png"}}\n","title":"settings.bannerUrl","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"257":{"href":"/sdk/typescript/guides/connect-wallet#settingssigninwith","html":"\n

Specify signInWith with a supported auth provider to automatically sign in the user with that provider only. Will be ignored if user is already signed in.

\n

Example: await wallet.connect({ settings: {signInWith: "google"}}

\n

Supported Providers: "google", "discord", "twitch", "apple", "facebook"

\n","isPage":false,"text":"\nSpecify signInWith with a supported auth provider to automatically sign in the user with that provider only. Will be ignored if user is already signed in.\nExample: await wallet.connect({ settings: {signInWith: "google"}}\nSupported Providers: "google", "discord", "twitch", "apple", "facebook"\n","title":"settings.signInWith","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"258":{"href":"/sdk/typescript/guides/connect-wallet#settingssigninwithemail","html":"\n

Specify signInWithEmail with an email address to allow user automatically sign in with the email option. Will be ignored if user is already signed in.

\n

Example: await wallet.connect({ settings: {signInWithEmail: "user@email.com"}}

\n","isPage":false,"text":"\nSpecify signInWithEmail with an email address to allow user automatically sign in with the email option. Will be ignored if user is already signed in.\nExample: await wallet.connect({ settings: {signInWithEmail: "user@email.com"}}\n","title":"settings.signInWithEmail","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"259":{"href":"/sdk/typescript/guides/connect-wallet#settingssigninoptions","html":"\n

Specify signInOptions to pick/limit the available sign in options. Will be ignored if user is already signed in.

\n

Example: await wallet.connect({ settings: {signInOptions: ["email", "google", "apple"]}}

\n","isPage":false,"text":"\nSpecify signInOptions to pick/limit the available sign in options. Will be ignored if user is already signed in.\nExample: await wallet.connect({ settings: {signInOptions: ["email", "google", "apple"]}}\n","title":"settings.signInOptions","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"260":{"href":"/sdk/typescript/guides/connect-wallet#settingsincludedpaymentproviders","html":"\n

List of payment providers users will be able to access. By default, users can access all payment providers integrated in Sequence.

\n

Example: await wallet.connect({ settings: {includedPaymentProviders: ["moonpay", "ramp"]}}

\n","isPage":false,"text":"\nList of payment providers users will be able to access. By default, users can access all payment providers integrated in Sequence.\nExample: await wallet.connect({ settings: {includedPaymentProviders: ["moonpay", "ramp"]}}\n","title":"settings.includedPaymentProviders","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"261":{"href":"/sdk/typescript/guides/connect-wallet#settingsdefaultfundingcurrency","html":"\n

The tag of the default currency to show when users open the payment provider page. The currency has to be supported by the payment providers integrated in sequence.

\n

Example: await wallet.connect({ settings: {defaultFundingCurrency: "usdc"}}

\n","isPage":false,"text":"\nThe tag of the default currency to show when users open the payment provider page. The currency has to be supported by the payment providers integrated in sequence.\nExample: await wallet.connect({ settings: {defaultFundingCurrency: "usdc"}}\n","title":"settings.defaultFundingCurrency","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"262":{"href":"/sdk/typescript/guides/connect-wallet#settingsdefaultpurchaseamount","html":"\n

Use to specify a default purchase amount, as an integer, for prefilling the funding amount. If not specified, the default is 100.

\n

Example: await wallet.connect({ settings: {defaultPurchaseAmount: 200}}

\n","isPage":false,"text":"\nUse to specify a default purchase amount, as an integer, for prefilling the funding amount. If not specified, the default is 100.\nExample: await wallet.connect({ settings: {defaultPurchaseAmount: 200}}\n","title":"settings.defaultPurchaseAmount","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"263":{"href":"/sdk/typescript/guides/connect-wallet#settingslockfundingcurrencytodefault","html":"\n

Whether to only allow users to purchase the default currency specified by the defaultFundingCurrency option. If set to false, users will also be able to purchase other tokens. locking the default funding currency can be useful to prevent users from purchasing the wrong currency or the currency on the wrong chain.

\n

Example: await wallet.connect({ settings: {defaultFundingCurrency: true}}

\n","isPage":false,"text":"\nWhether to only allow users to purchase the default currency specified by the defaultFundingCurrency option. If set to false, users will also be able to purchase other tokens. locking the default funding currency can be useful to prevent users from purchasing the wrong currency or the currency on the wrong chain.\nExample: await wallet.connect({ settings: {defaultFundingCurrency: true}}\n","title":"settings.lockFundingCurrencyToDefault","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"264":{"href":"/sdk/typescript/guides/connect-wallet#connecting-your-dapp-with-web3js-or-ethersjs","html":"\n

For a full example of a dapp which supports Sequence (on-demand + chrome extension), Metamask, and WalletConnect\nplease see the Demo-Dapp-Web3Modal repo.

\n

\"Sequence

\n","isPage":false,"text":"\nFor a full example of a dapp which supports Sequence (on-demand + chrome extension), Metamask, and WalletConnect\nplease see the Demo-Dapp-Web3Modal repo.\n\n","title":"Connecting your dapp with web3.js or ethers.js","titles":["Connect Wallet"]},"265":{"href":"/sdk/typescript/guides/connect-wallet#connecting-to-any-ethereum-dapp-with-the-sequence-wallet-chrome-extension","html":"\n

Sequence Chrome Extension: Install

\n

\"Sequence

\n","isPage":false,"text":"\nSequence Chrome Extension: Install\n\n","title":"Connecting to any Ethereum dapp with the Sequence Wallet Chrome Extension","titles":["Connect Wallet"]},"266":{"href":"/sdk/typescript/guides/connect-wallet#connecting-via-walletconnect","html":"\n

Sequence already supports connecting to dapps via WalletConnect.\nIf your dapp already supports WalletConnect, and you don't need Sequence-specific functionality, nothing more needs to be done.\nFrom the user's perspective, the WalletConnect flow behaves as follows.

\n

Taking Uniswap as an example, the user is prompted to connect their wallet using one of multiple possible protocols.

\n\n

The user selects the WalletConnect option.

\n\n

A QR code is displayed, which can be scanned by Sequence.\nAlternatively, the user can also choose to copy the connection details via their OS clipboard.

\n\n

Back in the Sequence interface, the user chooses "Scan".

\n\n

The QR code from the dapp is scanned.\nAlternatively, the code is pasted from the OS clipboard if the user chose that previously.

\n\n

The user confirms the connection request.

\n\n

The connection succeeded, and the dapp is updated to reflect that.

\n\n

While connected, the dapp is able to make signing requests to Sequence.\nSequence will always prompt for confirmation from the user for any activity initiated by the dapp.

\n\n

Once the user has finished using the dapp, they can disconnect the wallet via the session menu.

\n","isPage":false,"text":"\nSequence already supports connecting to dapps via WalletConnect.\nIf your dapp already supports WalletConnect, and you don't need Sequence-specific functionality, nothing more needs to be done.\nFrom the user's perspective, the WalletConnect flow behaves as follows.\nTaking Uniswap as an example, the user is prompted to connect their wallet using one of multiple possible protocols.\n\nThe user selects the WalletConnect option.\n\nA QR code is displayed, which can be scanned by Sequence.\nAlternatively, the user can also choose to copy the connection details via their OS clipboard.\n\nBack in the Sequence interface, the user chooses "Scan".\n\nThe QR code from the dapp is scanned.\nAlternatively, the code is pasted from the OS clipboard if the user chose that previously.\n\nThe user confirms the connection request.\n\nThe connection succeeded, and the dapp is updated to reflect that.\n\nWhile connected, the dapp is able to make signing requests to Sequence.\nSequence will always prompt for confirmation from the user for any activity initiated by the dapp.\n\nOnce the user has finished using the dapp, they can disconnect the wallet via the session menu.\n","title":"Connecting via WalletConnect","titles":["Connect Wallet"]},"267":{"href":"/sdk/typescript/guides/overview#install","html":"\n

Sequence.js is a modular web3 stack and smart wallet package for Ethereum chains. You can think of it similar to ethers.js, but tailored to the Sequence stack which streamlines common functions needed for blockchain-enabled game development. The sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:

\n
npm install 0xsequence ethers
\n

or

\n
pnpm install 0xsequence ethers
\n

or

\n
yarn add 0xsequence ethers
\n

If you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.

\n

Your package.json should look something like this (actual version may vary):

\n
{\n  "name": "my-dapp",\n  ...\n  "dependencies": {\n    "0xsequence": "^1.0.0",\n    "ethers": ^5.7.0"\n    ...\n  }\n}
\n","isPage":true,"text":"\nSequence.js is a modular web3 stack and smart wallet package for Ethereum chains. You can think of it similar to ethers.js, but tailored to the Sequence stack which streamlines common functions needed for blockchain-enabled game development. The sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:\nnpm install 0xsequence ethers\nor\npnpm install 0xsequence ethers\nor\nyarn add 0xsequence ethers\nIf you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.\nYour package.json should look something like this (actual version may vary):\n{\n "name": "my-dapp",\n ...\n "dependencies": {\n "0xsequence": "^1.0.0",\n "ethers": ^5.7.0"\n ...\n }\n}\n","title":"Install","titles":[null]},"268":{"href":"/sdk/typescript/guides/overview#cdn-distribution-as-native-js","html":"\n

Optionally, 0xsequence can be installed as a JS script source (UMD distribution) via:

\n
<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>
","isPage":false,"text":"\nOptionally, 0xsequence can be installed as a JS script source (UMD distribution) via:\n<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>","title":"CDN distribution as native JS","titles":[null,"Install",null]},"269":{"href":"/sdk/typescript/guides/send-batch-transactions#sending-a-batch-of-transactions","html":"\n

Likewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:

\n
const transaction1 = {\n  to: recipient1Address,\n  value: 1000000000000000000\n}\n \nconst transaction2 = {\n  to: recipient2Address,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)
\n

The transactions don't have to be the same token or even token standard either.\nYou can mix and match:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n  { to: recipient1Address, value: '1000000000000000000' },\n  { to: daiContractAddress, data: erc20Data },\n  { to: erc721ContractAddress, data: erc721Data },\n  { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)
","isPage":true,"text":"\nLikewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:\nconst transaction1 = {\n to: recipient1Address,\n value: 1000000000000000000\n}\n \nconst transaction2 = {\n to: recipient2Address,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)\nThe transactions don't have to be the same token or even token standard either.\nYou can mix and match:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n { to: recipient1Address, value: '1000000000000000000' },\n { to: daiContractAddress, data: erc20Data },\n { to: erc721ContractAddress, data: erc721Data },\n { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)","title":"Sending a Batch of Transactions","titles":[]},"270":{"href":"/sdk/typescript/guides/send-erc1155#sending-erc-1155-collectible-tokens","html":"\n

Sending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n  to: erc1155TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n  to: erc1155ContractAddress,\n  data: data1\n}\nconst transaction2 = {\n  to: erc1155ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n to: erc1155TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n to: erc1155ContractAddress,\n data: data1\n}\nconst transaction2 = {\n to: erc1155ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-1155 (Collectible) Tokens","titles":[]},"271":{"href":"/sdk/typescript/guides/send-erc20#sending-erc-20-tokens","html":"\n

You can ask the wallet to send a single ERC-20 token transfer:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n  'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n  to: daiContractAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: daiContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: daiContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nYou can ask the wallet to send a single ERC-20 token transfer:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n 'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n to: daiContractAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: daiContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: daiContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-20 Tokens","titles":[]},"272":{"href":"/sdk/typescript/guides/send-erc721#sending-erc-721-nft-tokens","html":"\n

Sending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n  to: erc721TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: erc721ContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: erc721ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n to: erc721TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: erc721ContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: erc721ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-721 (NFT) Tokens","titles":[]},"273":{"href":"/sdk/typescript/guides/send-transaction#sending-transactions","html":"\n

Signing a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):

\n
const transaction = {\n  to: recipientAddress,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSigning a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):\nconst transaction = {\n to: recipientAddress,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n ","title":"Sending Transactions","titles":[]},"274":{"href":"/sdk/typescript/guides/session-keys#no-wallet-confirmation-signatures","html":"\n

It is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.

\n
","isPage":true,"text":"\nIt is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.\n","title":"No-Wallet-Confirmation Signatures","titles":[]},"275":{"href":"/sdk/typescript/guides/session-keys#session-keys","html":"
\n

Session keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.

\n

By signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.

\n

Session keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.

\n
","isPage":false,"text":"\nSession keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.\nBy signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.\nSession keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.\n","title":"Session Keys","titles":[]},"276":{"href":"/sdk/typescript/guides/session-keys#using-session-keys-with-sequence","html":"
\n","isPage":false,"text":"\n","title":"Using Session keys with Sequence","titles":[]},"277":{"href":"/sdk/typescript/guides/session-keys#1-initialize-sequence-wallet-and-connect","html":"\n
import { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()
\n","isPage":false,"text":"\nimport { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()\n","title":"1. Initialize Sequence Wallet and Connect","titles":["Using Session keys with Sequence",null]},"278":{"href":"/sdk/typescript/guides/session-keys#2-generate-a-session-key","html":"\n

Create a new ephemeral private key, store it in local storage, and derive the associated address:

\n
const sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()
\n","isPage":false,"text":"\nCreate a new ephemeral private key, store it in local storage, and derive the associated address:\nconst sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()\n","title":"2. Generate a Session Key","titles":["Using Session keys with Sequence",null]},"279":{"href":"/sdk/typescript/guides/session-keys#3-sign-authorization-message","html":"\n

Sign a message with the user's Sequence Wallet to authorize the session key:

\n
const authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)
\n","isPage":false,"text":"\nSign a message with the user's Sequence Wallet to authorize the session key:\nconst authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)\n","title":"3. Sign Authorization Message","titles":["Using Session keys with Sequence",null]},"280":{"href":"/sdk/typescript/guides/session-keys#4-verify-authorization-signature","html":"\n

Verify the signature on the server or client side using Sequence utility functions:

\n
const provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n  userAddress,\n  authorizationMessage,\n  signature,\n  chainId\n)\n \nif (isValid) {\n  console.log('Session key authorized')\n} else {\n  console.log('Session key not authorized')\n}
\n","isPage":false,"text":"\nVerify the signature on the server or client side using Sequence utility functions:\nconst provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n userAddress,\n authorizationMessage,\n signature,\n chainId\n)\n \nif (isValid) {\n console.log('Session key authorized')\n} else {\n console.log('Session key not authorized')\n}\n","title":"4. Verify Authorization Signature","titles":["Using Session keys with Sequence",null]},"281":{"href":"/sdk/typescript/guides/session-keys#5-sign-message-with-session-key","html":"\n

Use the session key to sign a message client-side without user interaction:

\n
const message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)
\n","isPage":false,"text":"\nUse the session key to sign a message client-side without user interaction:\nconst message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)\n","title":"5. Sign Message with Session Key","titles":["Using Session keys with Sequence",null]},"282":{"href":"/sdk/typescript/guides/session-keys#6-verify-session-signature","html":"\n

Verify the session signature on the server or client side:

\n
const recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n  console.log('Session signature valid')\n} else {\n  console.log('Session signature invalid')\n}
\n

Note: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.

","isPage":false,"text":"\nVerify the session signature on the server or client side:\nconst recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n console.log('Session signature valid')\n} else {\n console.log('Session signature invalid')\n}\nNote: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.","title":"6. Verify Session Signature","titles":["Using Session keys with Sequence",null]},"283":{"href":"/sdk/unity/Advanced/clients#clients","html":"\n

In the context of SequenceEthereum, a Client is defined by the IEthClient interface.

\n

Creating a client requires a Chain. This will use our highly available and responsive Node Gateway service for your RPC requests; accessed using the API key from the Builder you've provided in your SequenceConfig scriptable object. If you prefer to use your own RPC URL, you can create a SequenceEthClient using a URL string as a parameter instead.

\n

You can create a client using this snippet:

\n
IEthClient client = new SequenceEthClient(Chain.Polygon);
\n","isPage":true,"text":"\nIn the context of SequenceEthereum, a Client is defined by the IEthClient interface.\nCreating a client requires a Chain. This will use our highly available and responsive Node Gateway service for your RPC requests; accessed using the API key from the Builder you've provided in your SequenceConfig scriptable object. If you prefer to use your own RPC URL, you can create a SequenceEthClient using a URL string as a parameter instead.\nYou can create a client using this snippet:\nIEthClient client = new SequenceEthClient(Chain.Polygon);\n","title":"Clients","titles":[]},"284":{"href":"/sdk/unity/Advanced/clients#methods","html":"\n

As your connection point to Ethereum nodes, there are a number of methods that can be performed by a client, these can be found in the IEthClient interface and are implemented by SequenceEthClient.

\n

Note: with the exception of BalanceAt (potentially), most users will not need to make use of these methods, but we have included them in our documentation for completeness.

\n","isPage":false,"text":"\nAs your connection point to Ethereum nodes, there are a number of methods that can be performed by a client, these can be found in the IEthClient interface and are implemented by SequenceEthClient.\nNote: with the exception of BalanceAt (potentially), most users will not need to make use of these methods, but we have included them in our documentation for completeness.\n","title":"Methods","titles":["Clients"]},"285":{"href":"/sdk/unity/Advanced/clients#balanceat","html":"\n

Used to get the gas currency balance of a given wallet at a given blockNumber (in hexadecimal format provided as a string)

\n
BigIntegar balance = await client.BalanceAt(wallet.GetAddress()); // By default, if no blockNumber string is provided, check the latest block\nBigIntegar balance = await client.BalanceAt(wallet.GetAddress(), blockNumber);
\n

Note: there are two special values for blockNumber. "earliest" will get the balance at the earliest block on the chain. "latest" will get the balance at the latest block on the chain and is the default parameter when none is provided. Otherwise, you'll want to provide the blockNumber string in hexadecimal format.

\nUnless you really want to get into the weeds with how things work, it is HIGHLY recommended to move on to the next page of the documentation at this point\n","isPage":false,"text":"\nUsed to get the gas currency balance of a given wallet at a given blockNumber (in hexadecimal format provided as a string)\nBigIntegar balance = await client.BalanceAt(wallet.GetAddress()); // By default, if no blockNumber string is provided, check the latest block\nBigIntegar balance = await client.BalanceAt(wallet.GetAddress(), blockNumber);\nNote: there are two special values for blockNumber. "earliest" will get the balance at the earliest block on the chain. "latest" will get the balance at the latest block on the chain and is the default parameter when none is provided. Otherwise, you'll want to provide the blockNumber string in hexadecimal format.\nUnless you really want to get into the weeds with how things work, it is HIGHLY recommended to move on to the next page of the documentation at this point\n","title":"BalanceAt","titles":["Clients","Methods"]},"286":{"href":"/sdk/unity/Advanced/clients#blockbynumber","html":"\n

Used to get the Block with a specific block number.

\n
Block block = await client.BlockByNumber(blockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get the Block with a specific block number.\nBlock block = await client.BlockByNumber(blockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"BlockByNumber","titles":["Clients","Methods"]},"287":{"href":"/sdk/unity/Advanced/clients#blockbyhash","html":"\n

Used to get the Block by a specified block hash (string)

\n
Block block = await client.BlockByHash(blockHash);
\n","isPage":false,"text":"\nUsed to get the Block by a specified block hash (string)\nBlock block = await client.BlockByHash(blockHash);\n","title":"BlockByHash","titles":["Clients","Methods"]},"288":{"href":"/sdk/unity/Advanced/clients#blocknumber","html":"\n

Used to get the most recent block number in hexadecimal format

\n
string blockNumber = await client.BlockNumber();
\n","isPage":false,"text":"\nUsed to get the most recent block number in hexadecimal format\nstring blockNumber = await client.BlockNumber();\n","title":"BlockNumber","titles":["Clients","Methods"]},"289":{"href":"/sdk/unity/Advanced/clients#blockrange","html":"\n

Used to get a List<Block> from the blocks in a range specified by blockNumbers

\n
List<Block> blockRange = await client.BlockRange(startingBlockNumber, endingBlockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get a List<Block> from the blocks in a range specified by blockNumbers\nList<Block> blockRange = await client.BlockRange(startingBlockNumber, endingBlockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"BlockRange","titles":["Clients","Methods"]},"290":{"href":"/sdk/unity/Advanced/clients#chainid","html":"\n

Used to get the chain id in hexadecimal format for the chain the client is connected to

\n
string chainId = await client.ChainID();
\n","isPage":false,"text":"\nUsed to get the chain id in hexadecimal format for the chain the client is connected to\nstring chainId = await client.ChainID();\n","title":"ChainID","titles":["Clients","Methods"]},"291":{"href":"/sdk/unity/Advanced/clients#codeat","html":"\n

Used to get the bytecode for a smart contract at a given address in hexadecimal format at a specified blockNumber

\n
string code = await client.CodeAt(contractAddress, blockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get the bytecode for a smart contract at a given address in hexadecimal format at a specified blockNumber\nstring code = await client.CodeAt(contractAddress, blockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"CodeAt","titles":["Clients","Methods"]},"292":{"href":"/sdk/unity/Advanced/clients#estimategas","html":"\n

Given a TransactionCall estimate the amount of gas required for the transaction

\n
BigIntegar gas = await client.EstimateGas(transactionCall);
\n","isPage":false,"text":"\nGiven a TransactionCall estimate the amount of gas required for the transaction\nBigIntegar gas = await client.EstimateGas(transactionCall);\n","title":"EstimateGas","titles":["Clients","Methods"]},"293":{"href":"/sdk/unity/Advanced/clients#feehistory","html":"\n

Get a FeeHistoryResult for gas fees paid blockCount blocks since newestBlock (blockNumber)

\n
FeeHistoryResult feeHistory = await client.FeeHistory(blockCount, newestBlock, new int[] { });
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nGet a FeeHistoryResult for gas fees paid blockCount blocks since newestBlock (blockNumber)\nFeeHistoryResult feeHistory = await client.FeeHistory(blockCount, newestBlock, new int[] { });\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"FeeHistory","titles":["Clients","Methods"]},"294":{"href":"/sdk/unity/Advanced/clients#networkid","html":"\n

Used to get the chain id in integer format (as string) for the chain the client is connected to

\n
string networkId = await client.NetworkId();
\n","isPage":false,"text":"\nUsed to get the chain id in integer format (as string) for the chain the client is connected to\nstring networkId = await client.NetworkId();\n","title":"NetworkId","titles":["Clients","Methods"]},"295":{"href":"/sdk/unity/Advanced/clients#nonceat","html":"\n

Used to get the recommended nonce for a given Address at a given blockNumber (defaults to "latest")

\n
BigInteger nonce = await client.NonceAt(wallet.GetAddress()); // Nonce at latest\nBigIntegar nonce = await client.NonceAt(wallet.GetAddress(), blockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get the recommended nonce for a given Address at a given blockNumber (defaults to "latest")\nBigInteger nonce = await client.NonceAt(wallet.GetAddress()); // Nonce at latest\nBigIntegar nonce = await client.NonceAt(wallet.GetAddress(), blockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"NonceAt","titles":["Clients","Methods"]},"296":{"href":"/sdk/unity/Advanced/clients#sendrawtransaction","html":"\n

Given a signed transaction string, submit the transaction to the network and return a transaction hash

\n
string transactionHash = await client.SendRawTransaction(signedTransactionString);
\n","isPage":false,"text":"\nGiven a signed transaction string, submit the transaction to the network and return a transaction hash\nstring transactionHash = await client.SendRawTransaction(signedTransactionString);\n","title":"SendRawTransaction","titles":["Clients","Methods"]},"297":{"href":"/sdk/unity/Advanced/clients#suggestgasprice","html":"\n

Used to get a suggested gas price

\n
BigIntegar gasPrice = await client.SuggestGasPrice();
\n","isPage":false,"text":"\nUsed to get a suggested gas price\nBigIntegar gasPrice = await client.SuggestGasPrice();\n","title":"SuggestGasPrice","titles":["Clients","Methods"]},"298":{"href":"/sdk/unity/Advanced/clients#suggestgastipcap","html":"\n

Used to get the max suggested priority fee for gas

\n
BigIntegar gasTipCap = await client.SuggestGasTipCap();
\n","isPage":false,"text":"\nUsed to get the max suggested priority fee for gas\nBigIntegar gasTipCap = await client.SuggestGasTipCap();\n","title":"SuggestGasTipCap","titles":["Clients","Methods"]},"299":{"href":"/sdk/unity/Advanced/clients#transactionbyhash","html":"\n

Used to get a Transaction by transaction hash

\n
Transaction transaction = await client.TransactionByHash(transactionHash);
\n","isPage":false,"text":"\nUsed to get a Transaction by transaction hash\nTransaction transaction = await client.TransactionByHash(transactionHash);\n","title":"TransactionByHash","titles":["Clients","Methods"]},"300":{"href":"/sdk/unity/Advanced/clients#transactioncount","html":"\n

Used to get the number of transactions in a block by block hash

\n
BigIntegar transactionCount = await client.TransactionCount(blockHash);
\n","isPage":false,"text":"\nUsed to get the number of transactions in a block by block hash\nBigIntegar transactionCount = await client.TransactionCount(blockHash);\n","title":"TransactionCount","titles":["Clients","Methods"]},"301":{"href":"/sdk/unity/Advanced/clients#waitfortransactionreceipt","html":"\n

Provide a transaction hash in order to wait for and return the TransactionReceipt

\n
TransactionReceipt receipt = await client.WaitForTransactionReceipt(transactionHash);
","isPage":false,"text":"\nProvide a transaction hash in order to wait for and return the TransactionReceipt\nTransactionReceipt receipt = await client.WaitForTransactionReceipt(transactionHash);","title":"WaitForTransactionReceipt","titles":["Clients","Methods"]},"302":{"href":"/sdk/unity/Advanced/contracts#contracts","html":"\n

Creating a Contract object for an already deployed contract is rather straightforward.

\n
Contract contract = new Contract(contractAddress, abi);
\n

While it is not strictly required, it is highly recommended to provide the contract ABI as a string when creating a contract object. Failure to do so will make it so that you cannot fully take advantage of our ABI encoding and decoding.\nIf you do chose to go down this route, you will need to provide the entire function signature (function name + parameter types in brackets - e.g. transfer(address,uint256) for the ERC20 transfer method) when calling a function or querying the contract and you will only ever receive a string as a response to queries.

\n","isPage":true,"text":"\nCreating a Contract object for an already deployed contract is rather straightforward.\nContract contract = new Contract(contractAddress, abi);\nWhile it is not strictly required, it is highly recommended to provide the contract ABI as a string when creating a contract object. Failure to do so will make it so that you cannot fully take advantage of our ABI encoding and decoding.\nIf you do chose to go down this route, you will need to provide the entire function signature (function name + parameter types in brackets - e.g. transfer(address,uint256) for the ERC20 transfer method) when calling a function or querying the contract and you will only ever receive a string as a response to queries.\n","title":"Contracts","titles":[]},"303":{"href":"/sdk/unity/Advanced/contracts#calling-smart-contract-functions","html":"\n

To call a smart contract, you'll use the CallFunction method to create a CallContractFunction object which will determine the appropriate gasPrice, gasLimit, nonce, and data to include in a newly assembled EthTransaction when provided with a client and a ContractCall object to the Create async Task

\n

An example of calling a smart contract would look like:

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nTransactionReceipt receipt = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).SendTransactionMethodAndWaitForReceipt(wallet, client);
\n

Note: if you don't want to wait for the receipt, you can use SendTransactionMethod instead.

\n

Alternatively, if you want to simply create the EthTransaction and send it at a later time, you can use the CallContractFunction object from CallFunction directly.

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nEthTransaction transaction = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nTransactionReceipt receipt = await transactionCreator.SendTransactionMethodAndWaitForReceipt(wallet, client);
\n

You'll notice that the CallFunction method accepts an arbitrary number of arguments. You'll want to provide the arguments in the order they are provided in the ABI/function signature.

\n","isPage":false,"text":"\nTo call a smart contract, you'll use the CallFunction method to create a CallContractFunction object which will determine the appropriate gasPrice, gasLimit, nonce, and data to include in a newly assembled EthTransaction when provided with a client and a ContractCall object to the Create async Task\nAn example of calling a smart contract would look like:\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nTransactionReceipt receipt = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).SendTransactionMethodAndWaitForReceipt(wallet, client);\nNote: if you don't want to wait for the receipt, you can use SendTransactionMethod instead.\nAlternatively, if you want to simply create the EthTransaction and send it at a later time, you can use the CallContractFunction object from CallFunction directly.\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nEthTransaction transaction = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nTransactionReceipt receipt = await transactionCreator.SendTransactionMethodAndWaitForReceipt(wallet, client);\nYou'll notice that the CallFunction method accepts an arbitrary number of arguments. You'll want to provide the arguments in the order they are provided in the ABI/function signature.\n","title":"Calling Smart Contract Functions","titles":["Contracts"]},"304":{"href":"/sdk/unity/Advanced/contracts#understanding-data-type-mappings","html":"\n

When interacting with smart contracts, it is important to understand how EVM datatypes are mapped to C# datatypes in the SequenceEthereum library.

\n

bool -> bool

\n

Integers (int, uint, int256, uint8, ...) -> BigInteger

\n

address -> Address or string

\n

string -> string

\n

Fixed bytes (bytesN for any N value) -> FixedByte

\n

bytes -> byte[]

\n

If you were to, for example, provide a string where the ABI expects an Integer, you will receive an exception, even if that string could be converted into an integer.

\n","isPage":false,"text":"\nWhen interacting with smart contracts, it is important to understand how EVM datatypes are mapped to C# datatypes in the SequenceEthereum library.\nbool -> bool\nIntegers (int, uint, int256, uint8, ...) -> BigInteger\naddress -> Address or string\nstring -> string\nFixed bytes (bytesN for any N value) -> FixedByte\nbytes -> byte[]\nIf you were to, for example, provide a string where the ABI expects an Integer, you will receive an exception, even if that string could be converted into an integer.\n","title":"Understanding data type mappings","titles":["Contracts"]},"305":{"href":"/sdk/unity/Advanced/contracts#querying-contracts","html":"\n

To query a smart contract (read data from it), you'll use the SendQuery<T> method to query the contract and return the result as type T (if possible).\nAn example of querying a smart contract would look like:

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nBigIntegar balance = await erc20Contract.SendQuery<BigIntegar>(client, "balanceOf", address);
\n

Alternatively, if you wish to simply construct the query and send it at a later time, you can use QueryContract<T> to create a delegate.

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nQueryContractMessageSender<BigIntegar> balanceQuery = erc20Contract.QueryContract<BigIntegar>("balanceOf", address);\nBigIntegar balance = await balanceQuery(client);\n// or\nBigIntegar balance = await balanceQuery.SendQuery(client);
\n","isPage":false,"text":"\nTo query a smart contract (read data from it), you'll use the SendQuery<T> method to query the contract and return the result as type T (if possible).\nAn example of querying a smart contract would look like:\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nBigIntegar balance = await erc20Contract.SendQuery<BigIntegar>(client, "balanceOf", address);\nAlternatively, if you wish to simply construct the query and send it at a later time, you can use QueryContract<T> to create a delegate.\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nQueryContractMessageSender<BigIntegar> balanceQuery = erc20Contract.QueryContract<BigIntegar>("balanceOf", address);\nBigIntegar balance = await balanceQuery(client);\n// or\nBigIntegar balance = await balanceQuery.SendQuery(client);\n","title":"Querying Contracts","titles":["Contracts"]},"306":{"href":"/sdk/unity/Advanced/contracts#deploying-contracts","html":"\n

If you want to deploy a contract, you can use the ContractDeployer

\n
ContractDeploymentResult deploymentResult = await ContractDeployer.Deploy(client, wallet, contractBytecodeAsString);\nstring newlyDeployedContractAddress = deploymentResult.Receipt.contractAddress;
","isPage":false,"text":"\nIf you want to deploy a contract, you can use the ContractDeployer\nContractDeploymentResult deploymentResult = await ContractDeployer.Deploy(client, wallet, contractBytecodeAsString);\nstring newlyDeployedContractAddress = deploymentResult.Receipt.contractAddress;","title":"Deploying Contracts","titles":["Contracts"]},"307":{"href":"/sdk/unity/Advanced/introduction#advanced---introduction","html":"\n

For advanced users with experience developing applications on EVM-based blockchains, we've provided our own lightweight, custom-made for Unity, Ethereum library: SequenceEthereum.\nSequenceEthereum should provide everything you need to build your Unity app on the EVM, without all the extra bells and whistles that the popular Nethereum library provides.

\n

While SequenceEthereum is heavily tested, in general, when working with asynchronous methods in the library, you should consider them to be "unsafe", in that they may throw Exceptions when used improperly.\nIn general, wrapping async calls that can potentially throw Exceptions in try catch blocks is a best practice; particularly in Unity, where Tasks can fail silently when throwing exceptions - making debugging difficult when not wrapping calls in try catch blocks.

\n","isPage":true,"text":"\nFor advanced users with experience developing applications on EVM-based blockchains, we've provided our own lightweight, custom-made for Unity, Ethereum library: SequenceEthereum.\nSequenceEthereum should provide everything you need to build your Unity app on the EVM, without all the extra bells and whistles that the popular Nethereum library provides.\nWhile SequenceEthereum is heavily tested, in general, when working with asynchronous methods in the library, you should consider them to be "unsafe", in that they may throw Exceptions when used improperly.\nIn general, wrapping async calls that can potentially throw Exceptions in try catch blocks is a best practice; particularly in Unity, where Tasks can fail silently when throwing exceptions - making debugging difficult when not wrapping calls in try catch blocks.\n","title":"Advanced - Introduction","titles":[]},"308":{"href":"/sdk/unity/Advanced/introduction#important-components","html":"\n

When working with the SequenceEthereum library it can be helpful to understand some of the main "components" and how they logically fit together.

\n","isPage":false,"text":"\nWhen working with the SequenceEthereum library it can be helpful to understand some of the main "components" and how they logically fit together.\n","title":"Important Components","titles":["Advanced - Introduction"]},"309":{"href":"/sdk/unity/Advanced/tokens#tokens","html":"\n

Since their use is so ubiquitous, we've provided ERC20, ERC721, and ERC1155 wrappers of the Contract class with pre-defined ABIs for your convenience. When interacting with tokens, it is recommended to use these.

\n

Any of these contract wrappers can be created via a standard constructor requiring only the contract address. For example:

\n
ERC20 erc20 = new ERC20(contractAddress);
\n

You may also provide your own ABI should you need to rewrite our default; however, doing so may require you to modify or rewrite the contract wrappers.

\n

An example of querying:

\n
string symbol = await erc20.Symbol(client);\nBigIntegar balance = await erc20.BalanceOf(client, address);
\n

An example of sending a transaction:

\n
TransactionReceipt receipt = await erc20.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1)).SendTransactionMethodAndWaitForReceipt(wallet, client);
\n

As a wrapper of Contract, you also have the option to not create the EthTransaction and send later on.

\n
CallContractFunction transactionCreator = erc20.Transfer(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1));\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);
\n
","isPage":true,"text":"\nSince their use is so ubiquitous, we've provided ERC20, ERC721, and ERC1155 wrappers of the Contract class with pre-defined ABIs for your convenience. When interacting with tokens, it is recommended to use these.\nAny of these contract wrappers can be created via a standard constructor requiring only the contract address. For example:\nERC20 erc20 = new ERC20(contractAddress);\nYou may also provide your own ABI should you need to rewrite our default; however, doing so may require you to modify or rewrite the contract wrappers.\nAn example of querying:\nstring symbol = await erc20.Symbol(client);\nBigIntegar balance = await erc20.BalanceOf(client, address);\nAn example of sending a transaction:\nTransactionReceipt receipt = await erc20.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1)).SendTransactionMethodAndWaitForReceipt(wallet, client);\nAs a wrapper of Contract, you also have the option to not create the EthTransaction and send later on.\nCallContractFunction transactionCreator = erc20.Transfer(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1));\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n","title":"Tokens","titles":[]},"310":{"href":"/sdk/unity/Advanced/tokens#bonus-ownable","html":"
\n

Similar to with tokens, we have also provided an Ownable wrapper for your convenience as well which has a pre-defined ABI for methods implementing the Ownable interface.\nERC20, ERC721, and ERC1155 all inherit from this, but we encourage you to use Ownable whenever you wish to interact with the Ownable methods on any arbitrary contract for convenience and safety.

","isPage":false,"text":"\nSimilar to with tokens, we have also provided an Ownable wrapper for your convenience as well which has a pre-defined ABI for methods implementing the Ownable interface.\nERC20, ERC721, and ERC1155 all inherit from this, but we encourage you to use Ownable whenever you wish to interact with the Ownable methods on any arbitrary contract for convenience and safety.","title":"Bonus: Ownable","titles":[]},"311":{"href":"/sdk/unity/Advanced/transfers#transfers","html":"\n

In order to transfer ETH (or the gas currency for your network), it is recommended to use TranferEth.CreateTransaction

\n
EthTransaction transferTransaction = await TransferEth.CreateTransaction(client, wallet, recipientAddress, DecimalNormalizer.Normalize(1));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transferTransaction);
\n

Behind the scenes, this will create a GasLimitEstimator which will construct the transaction for you - including determining the appropriate gasPrice, gasLimit, and nonce.

","isPage":true,"text":"\nIn order to transfer ETH (or the gas currency for your network), it is recommended to use TranferEth.CreateTransaction\nEthTransaction transferTransaction = await TransferEth.CreateTransaction(client, wallet, recipientAddress, DecimalNormalizer.Normalize(1));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transferTransaction);\nBehind the scenes, this will create a GasLimitEstimator which will construct the transaction for you - including determining the appropriate gasPrice, gasLimit, and nonce.","title":"Transfers","titles":[]},"312":{"href":"/sdk/unity/Advanced/wallets#wallets","html":"\n

In the context of SequenceEthereum, a Wallet is defined by the IWallet interface. There are currently 2 implementations of the IWallet interface in this SDK.

\n","isPage":true,"text":"\nIn the context of SequenceEthereum, a Wallet is defined by the IWallet interface. There are currently 2 implementations of the IWallet interface in this SDK.\n","title":"Wallets","titles":[]},"313":{"href":"/sdk/unity/Advanced/wallets#1-ethwallet","html":"\n

EthWallet is a standard EOA wallet for EVM chains.

\n

An EthWallet is easily created:

\n
IWallet eoaWallet = new EthWallet(); // This will generate a cryptographically random private key\nIWallet eoaWallet = new EthWallet(privateKeyString); // Create a wallet using a previously generated private key
\n","isPage":false,"text":"\nEthWallet is a standard EOA wallet for EVM chains.\nAn EthWallet is easily created:\nIWallet eoaWallet = new EthWallet(); // This will generate a cryptographically random private key\nIWallet eoaWallet = new EthWallet(privateKeyString); // Create a wallet using a previously generated private key\n","title":"1.","titles":["Wallets"]},"314":{"href":"/sdk/unity/Advanced/wallets#2-waastowalletadapter","html":"\n

WaaSToWalletAdapter is an adapter that allows you to use a WaaSWallet with the same IWallet interface as an EthWallet so that it may be used interchangeably with EOA wallets throughout the rest of the SequenceEthereum library.

\n

A WaaSToWalletAdapter is easily created once you have a WaaSWallet:

\n
IWallet waasAdapter = new WaaSToWalletAdapter(waasWallet);
\n","isPage":false,"text":"\nWaaSToWalletAdapter is an adapter that allows you to use a WaaSWallet with the same IWallet interface as an EthWallet so that it may be used interchangeably with EOA wallets throughout the rest of the SequenceEthereum library.\nA WaaSToWalletAdapter is easily created once you have a WaaSWallet:\nIWallet waasAdapter = new WaaSToWalletAdapter(waasWallet);\n","title":"2.","titles":["Wallets"]},"315":{"href":"/sdk/unity/Advanced/wallets#methods","html":"\n

The IWallet interface provides a number of methods for you. The most important of which are:

\n","isPage":false,"text":"\nThe IWallet interface provides a number of methods for you. The most important of which are:\n","title":"Methods","titles":["Wallets"]},"316":{"href":"/sdk/unity/Advanced/wallets#getaddress","html":"\n

Returns the Address for the wallet

\n
Address address = wallet.GetAddress();
\n","isPage":false,"text":"\nReturns the Address for the wallet\nAddress address = wallet.GetAddress();\n","title":"GetAddress","titles":["Wallets","Methods"]},"317":{"href":"/sdk/unity/Advanced/wallets#sendtransaction","html":"\n

Signs the given EthTransaction and submits it via the given client

\n
string transactionHash = await wallet.SendTransaction(client, transaction);
\n","isPage":false,"text":"\nSigns the given EthTransaction and submits it via the given client\nstring transactionHash = await wallet.SendTransaction(client, transaction);\n","title":"SendTransaction","titles":["Wallets","Methods"]},"318":{"href":"/sdk/unity/Advanced/wallets#sendtransactionandwaitforreceipt","html":"\n

Signs the given EthTransaction and submits it via the given client then waits for the TransactionReceipt

\n
TransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);
\n","isPage":false,"text":"\nSigns the given EthTransaction and submits it via the given client then waits for the TransactionReceipt\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n","title":"SendTransactionAndWaitForReceipt","titles":["Wallets","Methods"]},"319":{"href":"/sdk/unity/Advanced/wallets#sendtransactionbatch","html":"\n

Signs the given EthTransaction[] and submits them via the given client.\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the string[] (transaction hashes) you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction hash (string[] of length 1)

\n
string[] transactionHashes = await wallet.SendTransactionBatch(client, transactions);
\n","isPage":false,"text":"\nSigns the given EthTransaction[] and submits them via the given client.\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the string[] (transaction hashes) you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction hash (string[] of length 1)\nstring[] transactionHashes = await wallet.SendTransactionBatch(client, transactions);\n","title":"SendTransactionBatch","titles":["Wallets","Methods"]},"320":{"href":"/sdk/unity/Advanced/wallets#sendtransactionbatchandwaitforreceipts","html":"\n

Signs the given EthTransaction[] and submits them via the given client then waits for the TransactionReceipt[].\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the TransactionReceipt[] you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction receipt (TransactionReceipt[] of length 1)

\n
TransactionReceipt[] receipts = await wallet.SendTransactionAndWaitForReceipt(client, transactions);
\n","isPage":false,"text":"\nSigns the given EthTransaction[] and submits them via the given client then waits for the TransactionReceipt[].\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the TransactionReceipt[] you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction receipt (TransactionReceipt[] of length 1)\nTransactionReceipt[] receipts = await wallet.SendTransactionAndWaitForReceipt(client, transactions);\n","title":"SendTransactionBatchAndWaitForReceipts","titles":["Wallets","Methods"]},"321":{"href":"/sdk/unity/Advanced/wallets#signmessage","html":"\n

Given a message and an optional chain id, sign the message using the wallet. Omit the chain id from the signature if not provided

\n
string signedMessage = await wallet.SignMessage(message, chainId)
\n

Note: the chainId is expected to be in hexadecimal format. If you are working with a Chain object (recommended), you can use the AsString method to get the hexadecimal format of the chain id

\n
string signedMessage = await wallet.SignMessage(message, Chain.Polygon.AsString());
","isPage":false,"text":"\nGiven a message and an optional chain id, sign the message using the wallet. Omit the chain id from the signature if not provided\nstring signedMessage = await wallet.SignMessage(message, chainId)\nNote: the chainId is expected to be in hexadecimal format. If you are working with a Chain object (recommended), you can use the AsString method to get the hexadecimal format of the chain id\nstring signedMessage = await wallet.SignMessage(message, Chain.Polygon.AsString());","title":"SignMessage","titles":["Wallets","Methods"]},"322":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#how-to-manage-item-metadata-in-sequence-builder","html":"\n","isPage":true,"text":"\n","title":"How to Manage Item Metadata in Sequence Builder","titles":[]},"323":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#introduction","html":"\n

Following this guide, you can easily manage token metadata for your contract items in Sequence Builder, with a little help from Pinata for IPFS hosting.

\n","isPage":false,"text":"\nFollowing this guide, you can easily manage token metadata for your contract items in Sequence Builder, with a little help from Pinata for IPFS hosting.\n","title":"Introduction","titles":["How to Manage Item Metadata in Sequence Builder"]},"324":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-1-prepare-your-token-images-and-metadata","html":"\n

First things first, gather all your token images. For each token, you'll need a metadata file named id.json (like 1.json, 2.json, etc.). These files should look something like this at a minimum:

\n
{\n    "name": "Token Name",\n    "description": "Token Description",\n    "image": "ipfs://"\n}
\n

As you can guess, you can build from these basics. You could have your unique item attributes embedded in this token and generated on the fly.

\n","isPage":false,"text":"\nFirst things first, gather all your token images. For each token, you'll need a metadata file named id.json (like 1.json, 2.json, etc.). These files should look something like this at a minimum:\n{\n "name": "Token Name",\n "description": "Token Description",\n "image": "ipfs://"\n}\nAs you can guess, you can build from these basics. You could have your unique item attributes embedded in this token and generated on the fly.\n","title":"Step 1: Prepare Your Token Images and Metadata","titles":["How to Manage Item Metadata in Sequence Builder"]},"325":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-2-set-up-on-pinatacloud","html":"\n

Head over to Pinata.cloud and create an account. Upload each of your token images as separate files. Next, update the metadata JSON files with the ipfs address for each token. To do this, simply copy the CID (Content Identifier) for each file from Pinata and paste it after ipfs:// in your JSON files. It should look like this:

\n
{\n    "name": "Token Name",\n    "description": "Token Description",\n    "image": "ipfs://QmdJzQExj2wnNY7pNNn4KauzckjH4vA5xhoxmmis919Ev3"\n}
\n

\"Configure

\n","isPage":false,"text":"\nHead over to Pinata.cloud and create an account. Upload each of your token images as separate files. Next, update the metadata JSON files with the ipfs address for each token. To do this, simply copy the CID (Content Identifier) for each file from Pinata and paste it after ipfs:// in your JSON files. It should look like this:\n{\n "name": "Token Name",\n "description": "Token Description",\n "image": "ipfs://QmdJzQExj2wnNY7pNNn4KauzckjH4vA5xhoxmmis919Ev3"\n}\n\n","title":"Step 2: Set Up on Pinata.cloud","titles":["How to Manage Item Metadata in Sequence Builder"]},"326":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-3-upload-your-metadata-files","html":"\n

Now, gather all your JSON metadata files into a single folder on your computer. Use Pinata's 'Upload > Folder' feature to upload this folder. Then, copy the CID for the entire folder.

\n

\"Upload

\n","isPage":false,"text":"\nNow, gather all your JSON metadata files into a single folder on your computer. Use Pinata's 'Upload > Folder' feature to upload this folder. Then, copy the CID for the entire folder.\n\n","title":"Step 3: Upload Your Metadata Files","titles":["How to Manage Item Metadata in Sequence Builder"]},"327":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-4-get-the-folder-url","html":"\n

Click on name of the folder you created on Pinata. This will open a new tab showing all your uploaded JSON files. Copy the URL of this folder.

\n

\"Get

\n","isPage":false,"text":"\nClick on name of the folder you created on Pinata. This will open a new tab showing all your uploaded JSON files. Copy the URL of this folder.\n\n","title":"Step 4: Get the Folder URL","titles":["How to Manage Item Metadata in Sequence Builder"]},"328":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-5-set-up-on-sequence-builder","html":"\n

Navigate to Sequence Builder, set up your account, and create your project on the network of your choice. In the Contracts section, click on "Deploy New Contract".

\n

\"Configure

\n","isPage":false,"text":"\nNavigate to Sequence Builder, set up your account, and create your project on the network of your choice. In the Contracts section, click on "Deploy New Contract".\n\n","title":"Step 5: Set Up on Sequence Builder","titles":["How to Manage Item Metadata in Sequence Builder"]},"329":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-6-deploy-your-contract","html":"\n

Select "Web3 Game Item Collection (ERC-1155)" and name your contract. Sequence Builder will automatically deploy your contract on-chain.

\n

\"Deploy

\n","isPage":false,"text":"\nSelect "Web3 Game Item Collection (ERC-1155)" and name your contract. Sequence Builder will automatically deploy your contract on-chain.\n\n","title":"Step 6: Deploy Your Contract","titles":["How to Manage Item Metadata in Sequence Builder"]},"330":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-7-move-to-contract-details","html":"\n

Once you sign the transaction, your contract is ready! Click on it to view the details screen.

\n

\"Contract

\n","isPage":false,"text":"\nOnce you sign the transaction, your contract is ready! Click on it to view the details screen.\n\n","title":"Step 7: Move to Contract Details","titles":["How to Manage Item Metadata in Sequence Builder"]},"331":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-8-update-contract-attributes","html":"\n

Navigate to the “Write Contract” section. This is where you can modify attributes of your freshly deployed ERC-1155 contract. Two methods are what you should focus on for now:

\n\n","isPage":false,"text":"\nNavigate to the “Write Contract” section. This is where you can modify attributes of your freshly deployed ERC-1155 contract. Two methods are what you should focus on for now:\n\nsetBaseMetadataURI allows the creator to set the base metadata URL for this contract. You want this to point to the JSON files you’ve created, depending on NFT ID.\nmint mints one of your tokens and sends it to an address of your choosing.\n\n","title":"Step 8: Update Contract Attributes","titles":["How to Manage Item Metadata in Sequence Builder"]},"332":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-9-set-the-base-metadata-uri","html":"\n

Scroll to setBaseMetadataURI, expand it, and under tokenBaseURI paste the URL for the JSON folder preview you got from Pinata earlier. It should look something like this:

\n
https://azure-wooden-lemur-911.mypinata.cloud/ipfs/QmW5gvYGWb98GsN8VjTRWu4pLn6jryEXNxZKNWpPhVwtDm/
\n

Click “Write” and you will be prompted to sign again. This will modify the contract on chain to set the metadata base. Essentially any token ID you provide will be appended to this URL, along with the .json suffix. So if you mint token ID 123, it will look for tokenBaseURI + 123.json.

\n

\"Base

\n","isPage":false,"text":"\nScroll to setBaseMetadataURI, expand it, and under tokenBaseURI paste the URL for the JSON folder preview you got from Pinata earlier. It should look something like this:\nhttps://azure-wooden-lemur-911.mypinata.cloud/ipfs/QmW5gvYGWb98GsN8VjTRWu4pLn6jryEXNxZKNWpPhVwtDm/\nClick “Write” and you will be prompted to sign again. This will modify the contract on chain to set the metadata base. Essentially any token ID you provide will be appended to this URL, along with the .json suffix. So if you mint token ID 123, it will look for tokenBaseURI + 123.json.\n\n","title":"Step 9: Set the Base Metadata URI","titles":["How to Manage Item Metadata in Sequence Builder"]},"333":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-10-minting-time","html":"\n

Finally, it's time to mint! Scroll up to mint, expand it, and fill in the details:

\n\n

\"Mint

\n","isPage":false,"text":"\nFinally, it's time to mint! Scroll up to mint, expand it, and fill in the details:\n\nto (address): This is the address that the token will be sent to. Use your Sequence wallet address or any other valid address.\ntokenId (uint256): This is your token ID. As long as you have a tokenId.json file already uploaded to pinata.cloud under the folder, it will work.\namount (uint256): The number of tokens to mint (usually 1).\ndata (bytes): Enter 0x00 for this simple process.\n\n\n","title":"Step 10: Minting Time","titles":["How to Manage Item Metadata in Sequence Builder"]},"334":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-11-finalize-and-admire","html":"\n

Click "Write" and sign the transaction. Congratulations, you've just minted a token! Head over to the "Tokens" section to see your minted tokens with their names and images.

\n

\"Finalize

\n","isPage":false,"text":"\nClick "Write" and sign the transaction. Congratulations, you've just minted a token! Head over to the "Tokens" section to see your minted tokens with their names and images.\n\n","title":"Step 11: Finalize and Admire","titles":["How to Manage Item Metadata in Sequence Builder"]},"335":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-12-updating-metadata","html":"\n

If you make mistakes with the token metadata, you can always update it and then call the Sequence Metadata refresh endpoint to reload the specific tokens:

\n
curl -X GET "https://metadata.sequence.app/tokens/mumbai/0xb392c99d9f8e3e0b248e5c283818be5bf5cecca7/1/refresh"
\n

This is in the format: https://metadata.sequence.app/tokens/<chain-name>/<contract-address>/<token-id>/refresh

\n

Now that you are ready to mint, you might want to read about how you can launch your own serverless endpoint for securely minting tokens.

","isPage":false,"text":"\nIf you make mistakes with the token metadata, you can always update it and then call the Sequence Metadata refresh endpoint to reload the specific tokens:\ncurl -X GET "https://metadata.sequence.app/tokens/mumbai/0xb392c99d9f8e3e0b248e5c283818be5bf5cecca7/1/refresh"\nThis is in the format: https://metadata.sequence.app/tokens/<chain-name>/<contract-address>/<token-id>/refresh\nNow that you are ready to mint, you might want to read about how you can launch your own serverless endpoint for securely minting tokens.","title":"Step 12: Updating Metadata","titles":["How to Manage Item Metadata in Sequence Builder"]},"336":{"href":"/solutions/marketplaces/orderbook/quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"337":{"href":"/solutions/marketplaces/orderbook/quickstart#try-a-demo","html":"\n\n","isPage":false,"text":"\nCheck out our demo to see a custom marketplace in action.\n","title":"Try a Demo","titles":["Quickstart"]},"338":{"href":"/solutions/marketplaces/orderbook/quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our Marketplace API to use as a starting point for your own.\n","title":"Template","titles":["Quickstart"]},"339":{"href":"/solutions/marketplaces/orderbook/quickstart#example-api-call","html":"\n

Pulling top orders for a specific collection:

\n
curl --request POST \\\n--url https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetTopOrders \\\n--header 'Content-Type: application/json' \\\n--data '{\n    "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n    "currencyAddresses": [\n        "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n    ],\n    "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n    "tokenIDs": ["0","1", "2", "3", "4", "5"],\n    "isListing": true,\n    "priceSort": "DESC"\n}'
\n

For more resources on leveraging the Sequence Market Protocol, check out the in-depth documentation.

\n","isPage":false,"text":"\nPulling top orders for a specific collection:\ncurl --request POST \\\n--url https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetTopOrders \\\n--header 'Content-Type: application/json' \\\n--data '{\n "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n "currencyAddresses": [\n "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n ],\n "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n "tokenIDs": ["0","1", "2", "3", "4", "5"],\n "isListing": true,\n "priceSort": "DESC"\n}'\nFor more resources on leveraging the Sequence Market Protocol, check out the in-depth documentation.\n","title":"Example API Call","titles":["Quickstart"]},"340":{"href":"/solutions/marketplaces/orderbook/quickstart#walkthrough","html":"\n

Lastly, take a look at our end to end guide to get you off the ground running with your own marketplace & learn about the infrastructure that powers Sequence. This guide leverages several components of the sequence stack such as our Marketplace APIs and Indexer - all the components needed for accelerating development time & building a scalable in-game or browser based marketplace.

","isPage":false,"text":"\nLastly, take a look at our end to end guide to get you off the ground running with your own marketplace & learn about the infrastructure that powers Sequence. This guide leverages several components of the sequence stack such as our Marketplace APIs and Indexer - all the components needed for accelerating development time & building a scalable in-game or browser based marketplace.","title":"Walkthrough","titles":["Quickstart"]},"341":{"href":"/solutions/payments/onramps/fiat-on-ramps#fiat-on-ramps","html":"\n

Sequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;

\n\n

Only providers that support the region the users are in will be displayed.

\n

\"Sequence

\n

As a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.

\n

To learn more on how to configure the on-ramp options, see Sequence Connect Options.

","isPage":true,"text":"\nSequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;\n\nMoonpay\nRamp\nUPI via Onmeta\nSardine\nPayTrie\n\nOnly providers that support the region the users are in will be displayed.\n\nAs a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.\nTo learn more on how to configure the on-ramp options, see Sequence Connect Options.","title":"Fiat On-Ramps","titles":[]},"342":{"href":"/solutions/technical-references/wallet-contracts/why#why-smart-contracts-wallets","html":"\n

Ethereum wallets may take two different forms, Externally owned accounts (EOAs) or Smart Contract Wallets.\nThe Sequence wallet is implemented as a smart contract, which allows the system to provide additional security and functionality.

\n","isPage":true,"text":"\nEthereum wallets may take two different forms, Externally owned accounts (EOAs) or Smart Contract Wallets.\nThe Sequence wallet is implemented as a smart contract, which allows the system to provide additional security and functionality.\n","title":"Why smart contracts wallets?","titles":[]},"343":{"href":"/solutions/technical-references/wallet-contracts/why#externally-owned-accounts","html":"\n

Externally owned accounts are the most primitive form of wallet on Ethereum; EOAs are accounts composed of a single ECDSA key pair.

\n","isPage":false,"text":"\nExternally owned accounts are the most primitive form of wallet on Ethereum; EOAs are accounts composed of a single ECDSA key pair.\n","title":"Externally owned accounts","titles":["Why smart contracts wallets?"]},"344":{"href":"/solutions/technical-references/wallet-contracts/why#pros","html":"\n\n","isPage":false,"text":"\n\nSimple to implement\nCheap to use (in some scenarios)\nEasy to backup\n\n","title":"Pros","titles":["Why smart contracts wallets?","Externally owned accounts"]},"345":{"href":"/solutions/technical-references/wallet-contracts/why#popular-examples","html":"\n\n","isPage":false,"text":"\n\nMetaMask\nRainbow\nMyEtherWallet\nTrust\n\n","title":"Popular examples","titles":["Why smart contracts wallets?","Externally owned accounts"]},"346":{"href":"/solutions/technical-references/wallet-contracts/why#smart-contract-wallets","html":"\n

Smart contract wallets are wallets that are implemented as smart contracts; it allows the wallets to implement arbitrary logic within the bounds of what's supported by the underlying virtual machine.\nBecause of this, these contracts can implement functionality that's not available for EOAs, and can also be upgraded if they are prepared to do so.

\n","isPage":false,"text":"\nSmart contract wallets are wallets that are implemented as smart contracts; it allows the wallets to implement arbitrary logic within the bounds of what's supported by the underlying virtual machine.\nBecause of this, these contracts can implement functionality that's not available for EOAs, and can also be upgraded if they are prepared to do so.\n","title":"Smart contract wallets","titles":["Why smart contracts wallets?"]},"347":{"href":"/solutions/technical-references/wallet-contracts/why#pros-1","html":"\n\n","isPage":false,"text":"\n\nMultiple keys\nKey rotation\nPay fees using ERC20 tokens (e.g. USDC)\nUpgradeability\nSocial recovery support\nMeta-transactions\nMore flexible design space\n\n","title":"Pros","titles":["Why smart contracts wallets?","Smart contract wallets"]},"348":{"href":"/solutions/technical-references/wallet-contracts/why#examples","html":"\n","isPage":false,"text":"\n\nSequence\nGnosis Safe\nArgent\n","title":"Examples","titles":["Why smart contracts wallets?"]},"349":{"href":"/solutions/wallets/embedded-wallet/architecture#overview","html":"\n","isPage":true,"text":"\n","title":"Overview","titles":[]},"350":{"href":"/solutions/wallets/embedded-wallet/architecture#embedded-wallets-architecture","html":"\n

Sequence Embedded Wallets are native smart contract multisigs, the configuration of the multisig can be seen as a 2/2, both of which are required to sign in order to operate them; each one of the signers protects the wallet from a different facet of possible threats.

\n","isPage":false,"text":"\nSequence Embedded Wallets are native smart contract multisigs, the configuration of the multisig can be seen as a 2/2, both of which are required to sign in order to operate them; each one of the signers protects the wallet from a different facet of possible threats.\n","title":"Embedded Wallets Architecture","titles":["Overview"]},"351":{"href":"/solutions/wallets/embedded-wallet/architecture#signer-1-sequence-auth","html":"\n

Sequence Auth provides a simple way to add account creation, login, session management, and wallet support to your app, enabling applications to provide traditional web experiences (e.g. social login, email login, etc.) while providing access to crypto wallets to interact with smart contracts.

\n

All user and session data is encrypted by a Hardware Security Module operated by a third party. This makes it protected from both external attackers and internal access by Sequence Team or anyone else. Nobody can access a user's wallet but the user themselves.

\n

You won't need to trust us, this is a guarantee you can verify yourself: this service is hosted in a cryptographically attested secure enclave on Amazon Nitro platform. And we offer publicly available independently audited source code, so you can rest assured that it hasn't been tampered with.

\n","isPage":false,"text":"\nSequence Auth provides a simple way to add account creation, login, session management, and wallet support to your app, enabling applications to provide traditional web experiences (e.g. social login, email login, etc.) while providing access to crypto wallets to interact with smart contracts.\nAll user and session data is encrypted by a Hardware Security Module operated by a third party. This makes it protected from both external attackers and internal access by Sequence Team or anyone else. Nobody can access a user's wallet but the user themselves.\nYou won't need to trust us, this is a guarantee you can verify yourself: this service is hosted in a cryptographically attested secure enclave on Amazon Nitro platform. And we offer publicly available independently audited source code, so you can rest assured that it hasn't been tampered with.\n","title":"Signer 1: Sequence Auth","titles":["Overview"]},"352":{"href":"/solutions/wallets/embedded-wallet/architecture#signer-2-sequence-guard","html":"\n

Sequence Guard is a service hosted by Sequence and contains the other key of the wallets. It's meant to be another line of defense, verifying not only user's identity but also their intent. It achieves this in two different ways:

\n

1 - Limits and allowlists: you can (from the development dashboard) configure what kind of actions are allowed, this means that the guard will only sign transactions within these constraints. For example, you can define that only NFT contract X can be called, and the guard will enforce that no other transactions can take place.

\n

2 - Authenticating the user: the Sequence Guard will authenticate the user independently of the Sequence Auth, it performs this action either by using a 3rd party OAuth 2.0 id token (from Meta, Google, X, etc.) or by directly communicating with the user via email/phone number with an OTP code. The direct communication is not always required and, when it does happen, it's seamless and branded with your project details.

\n","isPage":false,"text":"\nSequence Guard is a service hosted by Sequence and contains the other key of the wallets. It's meant to be another line of defense, verifying not only user's identity but also their intent. It achieves this in two different ways:\n1 - Limits and allowlists: you can (from the development dashboard) configure what kind of actions are allowed, this means that the guard will only sign transactions within these constraints. For example, you can define that only NFT contract X can be called, and the guard will enforce that no other transactions can take place.\n2 - Authenticating the user: the Sequence Guard will authenticate the user independently of the Sequence Auth, it performs this action either by using a 3rd party OAuth 2.0 id token (from Meta, Google, X, etc.) or by directly communicating with the user via email/phone number with an OTP code. The direct communication is not always required and, when it does happen, it's seamless and branded with your project details.\n","title":"Signer 2: Sequence Guard","titles":["Overview"]},"353":{"href":"/solutions/wallets/embedded-wallet/architecture#threat-model","html":"\n

With these safeguards in place wallets are safe against the following scenarios:

\n
    \n
  1. \n

    Sequence.app backend is compromised, or guard keys are leaked: in this scenario, the user's identity must still be verified by Sequence Auth.

    \n
  2. \n
  3. \n

    Sequence Auth is compromised: in this scenario the Sequence Guard protects the wallets, because it independently authenticates the user, an attacker in this scenario wouldn't be able to access any wallets.

    \n
  4. \n
\n

The model also provides partial protection against the scenario:

\n
    \n
  1. Partner frontend is compromised, or MITM on the partner side: If an attacker were to be able to vulnerate the frontend of the partner, it could gain access to wallets at the time of login, but it cannot gain access to wallets of users who are currently inactive. This means that recovery from such a scenario is possible, with limited damage.
  2. \n
\n","isPage":false,"text":"\nWith these safeguards in place wallets are safe against the following scenarios:\n\n\nSequence.app backend is compromised, or guard keys are leaked: in this scenario, the user's identity must still be verified by Sequence Auth.\n\n\nSequence Auth is compromised: in this scenario the Sequence Guard protects the wallets, because it independently authenticates the user, an attacker in this scenario wouldn't be able to access any wallets.\n\n\nThe model also provides partial protection against the scenario:\n\nPartner frontend is compromised, or MITM on the partner side: If an attacker were to be able to vulnerate the frontend of the partner, it could gain access to wallets at the time of login, but it cannot gain access to wallets of users who are currently inactive. This means that recovery from such a scenario is possible, with limited damage.\n\n","title":"Threat model","titles":["Overview"]},"354":{"href":"/solutions/wallets/embedded-wallet/architecture#waas-api-service","html":"\n

Sequence WaaS (Wallet as a Service) is an API service that runs on the AWS Nitro Enclaves platform and allows for secure wallet management. It is the technology that powers the Embedded Wallet.

\n

Wallet private keys are stored encrypted using a split responsibility strategy between Sequence and a trusted third party:

\n
    \n
  1. Sequence is able to access only the encrypted blobs stored in the database with no means of decryption.
  2. \n
  3. A Trusted Third Party owns and operates the KMS (AWS' hardware security module) used to encrypt the wallet key data. They have no way to export the key material and no access to the encrypted data itself.
  4. \n
\n

The WaaS Enclave is the only entity able to use the encrypted wallet data. Its security is guaranteed by:

\n
    \n
  1. The AWS Nitro hypervisor generates and signs a cryptographic attestation based on the actually running enclave code. The document includes a PCR0 (a hash of the enclave code) signed by the Amazon Public Key Infrastructure.
  2. \n
  3. The KMS operated by the Trusted Third Party specifies a policy that only allows access to the cryptographic operations if the attestation is valid and the PCR0 hash of the enclave matches the expected value. This means that any - even the smallest - change to the enclave will result in a different attestation and PCR0 hash, effectively invalidating it.
  4. \n
  5. The enclave code is open source and anyone may audit it and verify that the service uses the exact audited version of the source code. Learn more about verification.
  6. \n
","isPage":false,"text":"\nSequence WaaS (Wallet as a Service) is an API service that runs on the AWS Nitro Enclaves platform and allows for secure wallet management. It is the technology that powers the Embedded Wallet.\nWallet private keys are stored encrypted using a split responsibility strategy between Sequence and a trusted third party:\n\nSequence is able to access only the encrypted blobs stored in the database with no means of decryption.\nA Trusted Third Party owns and operates the KMS (AWS' hardware security module) used to encrypt the wallet key data. They have no way to export the key material and no access to the encrypted data itself.\n\nThe WaaS Enclave is the only entity able to use the encrypted wallet data. Its security is guaranteed by:\n\nThe AWS Nitro hypervisor generates and signs a cryptographic attestation based on the actually running enclave code. The document includes a PCR0 (a hash of the enclave code) signed by the Amazon Public Key Infrastructure.\nThe KMS operated by the Trusted Third Party specifies a policy that only allows access to the cryptographic operations if the attestation is valid and the PCR0 hash of the enclave matches the expected value. This means that any - even the smallest - change to the enclave will result in a different attestation and PCR0 hash, effectively invalidating it.\nThe enclave code is open source and anyone may audit it and verify that the service uses the exact audited version of the source code. Learn more about verification.\n","title":"WaaS API Service","titles":["Overview"]},"355":{"href":"/solutions/wallets/embedded-wallet/overview#sequence-embedded-wallet","html":"\n

Sequence Embedded Wallet enables the creation, management and usage of fully functional EVM compatible wallets that can be easily integrated into your game or experience through our various SDKs such as TypeScript, Unity and Unreal

\n

These headless wallets can be created on-demand for each user and allow you to integrate an application with an Ethereum compatible blockchain, while using familiar constructions like RPC APIs. Additionally, no necessary pop-up modals, user-facing confirmations, and other distractions so you can provide a truly native and seamless gaming experience.

\n

Sequence Embedded Wallet offers real non-custodial wallets and the system guarantees that each created wallet can only be accessed with the consent of the owner of the wallet. This is made possible by utilizing the power of AWS Nitro Enclaves to handle sensitive data in a secure environment that nobody can access - not even Sequence.

\n","isPage":true,"text":"\nSequence Embedded Wallet enables the creation, management and usage of fully functional EVM compatible wallets that can be easily integrated into your game or experience through our various SDKs such as TypeScript, Unity and Unreal\nThese headless wallets can be created on-demand for each user and allow you to integrate an application with an Ethereum compatible blockchain, while using familiar constructions like RPC APIs. Additionally, no necessary pop-up modals, user-facing confirmations, and other distractions so you can provide a truly native and seamless gaming experience.\nSequence Embedded Wallet offers real non-custodial wallets and the system guarantees that each created wallet can only be accessed with the consent of the owner of the wallet. This is made possible by utilizing the power of AWS Nitro Enclaves to handle sensitive data in a secure environment that nobody can access - not even Sequence.\n","title":"Sequence Embedded Wallet","titles":[]},"356":{"href":"/solutions/wallets/embedded-wallet/overview#try-a-demo","html":"\n\n

Once you are ready dive into implementation, follow the quickstart guide.

","isPage":false,"text":"\nTry out the seamless onboarding of Sequence Embedded Wallet here\nOnce you are ready dive into implementation, follow the quickstart guide.","title":"Try a Demo","titles":["Sequence Embedded Wallet"]},"357":{"href":"/solutions/wallets/embedded-wallet/quickstart#quickstart","html":"\n

You can quickly try out a Sequence Embedded Wallet integration before doing a complete configuration specific to your application. There are several ways to test out the features:

\n\n

You can also do a quick integration of Embedded Wallet into your own application by using the following test configuration keys:

\n\n

These will leverage Sequence's own Google and Apple test authentication configurations and are whitelisted for localhost usage only. They cannot be used in a production setup.

\n

To see how to integrate these keys into a sample demo application, you can browse the Demo WaaS repository.

\n

You can also view SDK-specific guides here:

\n\n

When you are ready to configure your own Embedded Wallet, you can follow the Builder guide here.

\n","isPage":true,"text":"\nYou can quickly try out a Sequence Embedded Wallet integration before doing a complete configuration specific to your application. There are several ways to test out the features:\n\nTry out Sequence WaaS demo, showcasing a sample authentication and transaction flow leveraging Sequence Kit for web applications\nPlay with Aviator, a complete WebGL game built using the Embedded Wallet, leveraging Sequence Marketplace API as well as serverless Cloudflare Worker for minting\nBrowse Jelly Forest source code, our Unity WaaS SDK demo implementation that natively runs on iOS and Android\n\nYou can also do a quick integration of Embedded Wallet into your own application by using the following test configuration keys:\n\nProject Access Key: AQAAAAAAAEGvyZiWA9FMslYeG_yayXaHnSI\nWaaS Configuration Key: eyJwcm9qZWN0SWQiOjE2ODE1LCJycGNTZXJ2ZXIiOiJodHRwczovL3dhYXMuc2VxdWVuY2UuYXBwIn0=\n\nThese will leverage Sequence's own Google and Apple test authentication configurations and are whitelisted for localhost usage only. They cannot be used in a production setup.\nTo see how to integrate these keys into a sample demo application, you can browse the Demo WaaS repository.\nYou can also view SDK-specific guides here:\n\nTypeScript SDK\nUnity SDK\nUnreal SDK\n\nWhen you are ready to configure your own Embedded Wallet, you can follow the Builder guide here.\n","title":"Quickstart","titles":[]},"358":{"href":"/solutions/wallets/embedded-wallet/quickstart#getting-started-with-typescript-sdk","html":"\n","isPage":false,"text":"\n","title":"Getting Started with TypeScript SDK","titles":["Quickstart"]},"359":{"href":"/solutions/wallets/embedded-wallet/quickstart#sdk-installation","html":"\n

You can install the TypeScript SDK with:

\n
pnpm install @0xsequence/waas
\n","isPage":false,"text":"\nYou can install the TypeScript SDK with:\npnpm install @0xsequence/waas\n","title":"SDK Installation","titles":["Quickstart","Getting Started with TypeScript SDK"]},"360":{"href":"/solutions/wallets/embedded-wallet/quickstart#project-setup","html":"\n

You can test out the library with the Project Access Key and WaaS Configuration Key provided above. Once you are ready to configure your own Embedded Wallet, follow the Builder guide here.

\n","isPage":false,"text":"\nYou can test out the library with the Project Access Key and WaaS Configuration Key provided above. Once you are ready to configure your own Embedded Wallet, follow the Builder guide here.\n","title":"Project Setup","titles":["Quickstart","Getting Started with TypeScript SDK"]},"361":{"href":"/solutions/wallets/embedded-wallet/quickstart#library-setup","html":"\n

To start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:

\n
import { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'arbitrum-nova'\n})
\n

Note that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.

","isPage":false,"text":"\nTo start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:\nimport { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'arbitrum-nova'\n})\nNote that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.","title":"Library Setup","titles":["Quickstart","Getting Started with TypeScript SDK"]},"362":{"href":"/solutions/wallets/universal-wallet/fiat-on-ramps#fiat-on-ramps","html":"\n

Sequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;

\n\n

Only providers that support the region the users are in will be displayed.

\n

\"Sequence

\n

As a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.

\n

To learn more on how to configure the on-ramp options, see Sequence Connect Options.

","isPage":true,"text":"\nSequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;\n\nMoonpay\nRamp\nUPI via Onmeta\nSardine\nPayTrie\nWyre (deprecated)\n\nOnly providers that support the region the users are in will be displayed.\n\nAs a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.\nTo learn more on how to configure the on-ramp options, see Sequence Connect Options.","title":"Fiat On-Ramps","titles":[]},"363":{"href":"/solutions/wallets/universal-wallet/key-management#key-management","html":"\n

Each Sequence wallet can be controlled by multiple private keys, acting like a multisignature wallet. Users can either create a Sequence wallet using one of the supported social login options or create a wallet with a private key stored only on that device.

\n

The improved security compared to traditional blockchain wallet comes from the fact that multiple independent keys need to be compromised for a malicious actor to take control of a user’s wallet, instead of a single key. The philosophy is that the more independent private-keys the user adds to their wallet, the more secure their wallet becomes, even if each individual key is only moderately secure on their own.

\n","isPage":true,"text":"\nEach Sequence wallet can be controlled by multiple private keys, acting like a multisignature wallet. Users can either create a Sequence wallet using one of the supported social login options or create a wallet with a private key stored only on that device.\nThe improved security compared to traditional blockchain wallet comes from the fact that multiple independent keys need to be compromised for a malicious actor to take control of a user’s wallet, instead of a single key. The philosophy is that the more independent private-keys the user adds to their wallet, the more secure their wallet becomes, even if each individual key is only moderately secure on their own.\n","title":"Key Management","titles":[]},"364":{"href":"/solutions/wallets/universal-wallet/key-management#social-login-wallets","html":"\n

Sequence Wallet created with social logins are currently secured using three private keys: Session keys, a Guard key and a Torus key. The Session key and Torus key are both generated for the first time when a user creates their Sequence Wallet via social login or email authentication.\nAt least two of the three keys are needed to unlock an account. This means that if one of the three keys is lost or compromised, a user can use the two remaining keys to replace the lost/compromised key. For example, if a user lost their device containing their Session Key, they can unlock their Sequence Wallet account by email or social login for the Torus key combined with the Guard key. Once done, another session key is auto-generated and the user is back in their account with all 3 keys accessible again.

\n","isPage":false,"text":"\nSequence Wallet created with social logins are currently secured using three private keys: Session keys, a Guard key and a Torus key. The Session key and Torus key are both generated for the first time when a user creates their Sequence Wallet via social login or email authentication.\nAt least two of the three keys are needed to unlock an account. This means that if one of the three keys is lost or compromised, a user can use the two remaining keys to replace the lost/compromised key. For example, if a user lost their device containing their Session Key, they can unlock their Sequence Wallet account by email or social login for the Torus key combined with the Guard key. Once done, another session key is auto-generated and the user is back in their account with all 3 keys accessible again.\n","title":"Social Login Wallets","titles":["Key Management"]},"365":{"href":"/solutions/wallets/universal-wallet/key-management#session-keys","html":"\n

Session keys are stored in the browser's IndexedDB.\nUsers should be prudent in safeguarding their devices from unauthorized access since an attacker with access to their IndexedDB effectively has control of their session key.

\n","isPage":false,"text":"\nSession keys are stored in the browser's IndexedDB.\nUsers should be prudent in safeguarding their devices from unauthorized access since an attacker with access to their IndexedDB effectively has control of their session key.\n","title":"Session Keys","titles":["Key Management","Social Login Wallets"]},"366":{"href":"/solutions/wallets/universal-wallet/key-management#guard-key","html":"\n

A Guard key is a key owned by Horizon. This key allows Horizon to help users that lost their Session key and can require additional information from the user in case of suspicious activity, if the user wants this additional protection. This key would be compromised if a malicious actor took control over Horizon servers hosting the Guard key.

\n","isPage":false,"text":"\nA Guard key is a key owned by Horizon. This key allows Horizon to help users that lost their Session key and can require additional information from the user in case of suspicious activity, if the user wants this additional protection. This key would be compromised if a malicious actor took control over Horizon servers hosting the Guard key.\n","title":"Guard Key","titles":["Key Management","Social Login Wallets"]},"367":{"href":"/solutions/wallets/universal-wallet/key-management#torus-key","html":"\n

A Torus key is a key generated by the Torus network, and is generated using a user’s email or social login credentials such as Google or AppleID. Torus uses threshold cryptography to ensure that only the user can access their private key, making these keys non-custodial. A Torus key would be compromised if a malicious actor had control over the social account or email a user used to generate their Torus key. All Torus keys could be compromised if the Torus network itself was compromised.

\n

:::info DEFAULTS + CUSTOMIZATION

\n

While this is the default setup for new Sequence Wallets, we intend to add the ability for users to add, remove and replace the keys controlling their wallet such that users can choose their preference in terms of security and user experience tradeoff. Even the Guard key will be able to be removed. Security tips and recommendations will be added to ensure users are well informed of the risks and how to protect themselves against them.

\n

:::

","isPage":false,"text":"\nA Torus key is a key generated by the Torus network, and is generated using a user’s email or social login credentials such as Google or AppleID. Torus uses threshold cryptography to ensure that only the user can access their private key, making these keys non-custodial. A Torus key would be compromised if a malicious actor had control over the social account or email a user used to generate their Torus key. All Torus keys could be compromised if the Torus network itself was compromised.\n:::info DEFAULTS + CUSTOMIZATION\nWhile this is the default setup for new Sequence Wallets, we intend to add the ability for users to add, remove and replace the keys controlling their wallet such that users can choose their preference in terms of security and user experience tradeoff. Even the Guard key will be able to be removed. Security tips and recommendations will be added to ensure users are well informed of the risks and how to protect themselves against them.\n:::","title":"Torus Key","titles":["Key Management","Social Login Wallets"]},"368":{"href":"/solutions/wallets/universal-wallet/platforms#platforms","html":"\n","isPage":true,"text":"\n","title":"Platforms","titles":[]},"369":{"href":"/solutions/wallets/universal-wallet/platforms#web-wallet","html":"\n

Sequence works beautifully on all modern Web Browsers! Try it at https://sequence.app from any computer, phone or tablet.

\n

See Build With Sequence to get started.

\n","isPage":false,"text":"\nSequence works beautifully on all modern Web Browsers! Try it at https://sequence.app from any computer, phone or tablet.\nSee Build With Sequence to get started.\n","title":"Web Wallet","titles":["Platforms"]},"370":{"href":"/solutions/wallets/universal-wallet/platforms#mobile-wallet","html":"\n

Sequence works beautifully on your Mobile Web Browser! Try it at https://sequence.app from any phone or tablet.

\n

This means dapps which integrate the Sequence Wallet will automatically support users on all mobile devices,\nwhile using standard Ethereum web3 dapp-to-wallet communication. See Build With Sequence to get started.

\n","isPage":false,"text":"\nSequence works beautifully on your Mobile Web Browser! Try it at https://sequence.app from any phone or tablet.\nThis means dapps which integrate the Sequence Wallet will automatically support users on all mobile devices,\nwhile using standard Ethereum web3 dapp-to-wallet communication. See Build With Sequence to get started.\n","title":"Mobile Wallet","titles":["Platforms"]},"371":{"href":"/solutions/wallets/universal-wallet/platforms#browser-extension-wallet","html":"\n

Sequence Chrome Extension: Install

\n

\"Sequence

\n

\"Sequence

","isPage":false,"text":"\nSequence Chrome Extension: Install\n\n","title":"Browser Extension Wallet","titles":["Platforms"]},"372":{"href":"/solutions/wallets/universal-wallet/quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"373":{"href":"/solutions/wallets/universal-wallet/quickstart#try-a-demo","html":"\n\n","isPage":false,"text":"\nTry out the Universal Wallet leveraging SequenceKit at our demo\n","title":"Try a Demo","titles":["Quickstart"]},"374":{"href":"/solutions/wallets/universal-wallet/quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template using SequenceKit\n","title":"Template","titles":["Quickstart"]},"375":{"href":"/solutions/wallets/universal-wallet/quickstart#install","html":"\n

The sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:

\n
npm install 0xsequence ethers
\n

or

\n
pnpm install 0xsequence ethers
\n

or

\n
yarn add 0xsequence ethers
\n

If you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.

\n

Your package.json should look something like this (actual version may vary):

\n
{\n  "name": "my-dapp",\n  ...\n  "dependencies": {\n    "0xsequence": "^1.0.0",\n    "ethers": ^5.7.0"\n    ...\n  }\n}
\n","isPage":false,"text":"\nThe sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:\nnpm install 0xsequence ethers\nor\npnpm install 0xsequence ethers\nor\nyarn add 0xsequence ethers\nIf you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.\nYour package.json should look something like this (actual version may vary):\n{\n "name": "my-dapp",\n ...\n "dependencies": {\n "0xsequence": "^1.0.0",\n "ethers": ^5.7.0"\n ...\n }\n}\n","title":"Install","titles":["Quickstart"]},"376":{"href":"/solutions/wallets/universal-wallet/quickstart#cdn-distribution-as-native-js","html":"\n

Optionally, 0xsequence can be installed as a JS script source (UMD distribution) via:

\n
<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>
","isPage":false,"text":"\nOptionally, 0xsequence can be installed as a JS script source (UMD distribution) via:\n<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>","title":"CDN distribution as native JS","titles":["Quickstart","Install",null]},"377":{"href":"/solutions/wallets/universal-wallet/sequence-kit#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","html":"\n

Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.

\n","isPage":true,"text":"\nSequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.\n","title":"Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications","titles":[]},"378":{"href":"/solutions/wallets/universal-wallet/sequence-kit#key-features","html":"\n\n

Explore the potential of Sequence Kit by trying out our demo!

\n
","isPage":false,"text":"\n\n\nUniversal Connections: Seamlessly connect via popular social logins such as Facebook, Google, Discord, and more! Your users will enjoy a smooth, secure onboarding process. 🔐🪪\n\n\nWeb3 Wallet Integration: Effortlessly integrate with leading web3 wallets like WalletConnect and MetaMask. Unleash the power of blockchain with just a few clicks! 🦊 ⛓️\n\n\nEmbedded Wallet Experience: Provide your users with a comprehensive in-game wallet, enabling them to manage their coins and collectibles all within your own application. 👛 🖼️ 🪙\n\n\nExplore the potential of Sequence Kit by trying out our demo!\n","title":"Key Features","titles":["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications"]},"379":{"href":"/solutions/wallets/universal-wallet/sequence-kit#next-steps","html":"
\n

Ready to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.

","isPage":false,"text":"\nReady to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.","title":"Next Steps","titles":[]},"380":{"href":"/solutions/technical-references/internals/v1/contract-audits#contract-audits","html":"\n

Sequence wallet contracts underwent two independent audits by Consensys Diligence and Quantstamp.

\n

Note: Sequence Wallet was formerly known as "Arcadeum Wallet". Any references of "Arcadeum" in these reports are synonymous with "Sequence".

\n","isPage":true,"text":"\nSequence wallet contracts underwent two independent audits by Consensys Diligence and Quantstamp.\nNote: Sequence Wallet was formerly known as "Arcadeum Wallet". Any references of "Arcadeum" in these reports are synonymous with "Sequence".\n","title":"Contract Audits","titles":[]},"381":{"href":"/solutions/technical-references/internals/v1/contract-audits#quantstamp","html":"\n\n","isPage":false,"text":"\n\nJuly 2nd, 2020\nFeb 24th, 2021\n\n","title":"Quantstamp","titles":["Contract Audits"]},"382":{"href":"/solutions/technical-references/internals/v1/contract-audits#consensys-diligence","html":"\n\n","isPage":false,"text":"\n\nMay 2020\n\n","title":"Consensys Diligence","titles":["Contract Audits"]},"383":{"href":"/solutions/technical-references/internals/v1/contract-audits#zellic","html":"\n","isPage":false,"text":"\n\nMarch 2023\n","title":"Zellic","titles":["Contract Audits"]},"384":{"href":"/solutions/technical-references/internals/v1/guest-module#guestmodule-and-on-demand-deployment","html":"","isPage":true,"text":"","title":"GuestModule and on-demand deployment","titles":[]},"385":{"href":"/solutions/technical-references/internals/v1/main-module-upgradeable#mainmoduleupgradeable--configuration-migration","html":"","isPage":true,"text":"","title":"MainModuleUpgradeable & configuration migration","titles":[]},"386":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#modules--wallet-update","html":"\n

Sequence modules are the underlying program implementation of the wallets; wallets can change modules at runtime.

\n

The MainModule is the initial module of every Sequence wallet; it differs from the other modules because it doesn't store the set of signers on contract storage; it uses the salt provided to the Factory contract.

\n","isPage":true,"text":"\nSequence modules are the underlying program implementation of the wallets; wallets can change modules at runtime.\nThe MainModule is the initial module of every Sequence wallet; it differs from the other modules because it doesn't store the set of signers on contract storage; it uses the salt provided to the Factory contract.\n","title":"Modules & wallet update","titles":[]},"387":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#wallet-implementation","html":"\n

Sequence modules can be assigned to wallets either by the factory or by updating it after the initial deployment. Only one module can be assigned to a wallet at a time.

\n","isPage":false,"text":"\nSequence modules can be assigned to wallets either by the factory or by updating it after the initial deployment. Only one module can be assigned to a wallet at a time.\n","title":"Wallet implementation","titles":["Modules & wallet update"]},"388":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#_updateconfiguration","html":"\n

The updateImplementation allows to update the underlying implementation of the wallet proxy. This implementation contains all the core code that defines the wallet's behaviour.

\n

:::warning Dangerous operation\nCalling updateImplementation with an invalid implementation will result in the corruption of the wallet.

\n

Corrupt wallets may lead to the loss of funds.\n:::

\n
function updateImplementation(\n  address _implementation\n) external override onlySelf {
\n","isPage":false,"text":"\nThe updateImplementation allows to update the underlying implementation of the wallet proxy. This implementation contains all the core code that defines the wallet's behaviour.\n:::warning Dangerous operation\nCalling updateImplementation with an invalid implementation will result in the corruption of the wallet.\nCorrupt wallets may lead to the loss of funds.\n:::\nfunction updateImplementation(\n address _implementation\n) external override onlySelf {\n","title":"_updateConfiguration","titles":["Modules & wallet update","Wallet implementation"]},"389":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#parameters","html":"\n
NameTypeDescription
_implementationaddressAddress of the new wallet implementation.
\n

This method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.

\n","isPage":false,"text":"\nNameTypeDescription_implementationaddressAddress of the new wallet implementation.\nThis method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.\n","title":"Parameters:","titles":["Modules & wallet update","Wallet implementation","_updateConfiguration"]},"390":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#reading-current-implementation","html":"\n

The wallet implementation is stored on the contract storage slot defined by the address of the wallet itself. Given that every wallet has a unique address, the implementation slot varies from wallet to wallet.

\n
import "ethers"\n \nconst address = "0x596af90cecdbf9a768886e771178fd5561dd27ab"\nconst provider = new ethers.providers.JsonRpcProvider("http://localhost:8545")\n \n// Read storage slot address(address)\nconst slot = await provider.getStorageAt(address, ethers.utils.defaultAbiCoder.encode(['address'], [address]))\n \n// Decode bytes32 as address value\nconst implementation = ethers.utils.defaultAbiCoder.decode(['address'], slot)[0]\n \nconsole.log(implementation)
\n","isPage":false,"text":"\nThe wallet implementation is stored on the contract storage slot defined by the address of the wallet itself. Given that every wallet has a unique address, the implementation slot varies from wallet to wallet.\nimport "ethers"\n \nconst address = "0x596af90cecdbf9a768886e771178fd5561dd27ab"\nconst provider = new ethers.providers.JsonRpcProvider("http://localhost:8545")\n \n// Read storage slot address(address)\nconst slot = await provider.getStorageAt(address, ethers.utils.defaultAbiCoder.encode(['address'], [address]))\n \n// Decode bytes32 as address value\nconst implementation = ethers.utils.defaultAbiCoder.decode(['address'], slot)[0]\n \nconsole.log(implementation)\n","title":"Reading current implementation","titles":["Modules & wallet update","Wallet implementation"]},"391":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#wallet-configuration-validation","html":"\n

:::info Fixed configuration\nSigner's configuration on wallets using MainModule can't be changed. The only way to change the set of signers or threshold is by updating the module of the wallet.\n:::

\n

All sequence modules must implement the ModuleAuth interface, this interface allows the rest of the module to validate signatures for the wallet. In the case of MainModule this interface is implemented as a counter-factual validation of hash passed to the factory during the contract wallet creation.

\n","isPage":false,"text":"\n:::info Fixed configuration\nSigner's configuration on wallets using MainModule can't be changed. The only way to change the set of signers or threshold is by updating the module of the wallet.\n:::\nAll sequence modules must implement the ModuleAuth interface, this interface allows the rest of the module to validate signatures for the wallet. In the case of MainModule this interface is implemented as a counter-factual validation of hash passed to the factory during the contract wallet creation.\n","title":"Wallet configuration validation","titles":["Modules & wallet update"]},"392":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#_isvalidimage","html":"\n
  function _isValidImage(\n    bytes32 _imageHash\n  ) internal override view returns (bool _isValid)
\n

Validates if the provided imageHash corresponds to the one configured in the wallet. This function is called internally to validate transaction and message signatures.

\n

The imageHash is a hash of the wallet configuration, which contains the wallet's threshold, signers and weights.

\n","isPage":false,"text":"\n function _isValidImage(\n bytes32 _imageHash\n ) internal override view returns (bool _isValid)\nValidates if the provided imageHash corresponds to the one configured in the wallet. This function is called internally to validate transaction and message signatures.\nThe imageHash is a hash of the wallet configuration, which contains the wallet's threshold, signers and weights.\n","title":"_isValidImage","titles":["Modules & wallet update","Wallet configuration validation"]},"393":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#parameters-1","html":"\n
NameTypeDescription
_imageHashbytes32Hash of wallet configuration to be validated.
\n","isPage":false,"text":"\nNameTypeDescription_imageHashbytes32Hash of wallet configuration to be validated.\n","title":"Parameters:","titles":["Modules & wallet update","Wallet configuration validation","_isValidImage"]},"394":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#return-values","html":"\n
NameTypeDescription
_isValidboolTrue if the given imageHash corresponds to the current wallet configuration.
\n","isPage":false,"text":"\nNameTypeDescription_isValidboolTrue if the given imageHash corresponds to the current wallet configuration.\n","title":"Return Values:","titles":["Modules & wallet update","Wallet configuration validation","_isValidImage"]},"395":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#mainmoduleupgradeable","html":"\n

MainModuleUpgradable is a module that mimics the behaviour of the MainModule but allows the wallet configuration to be updated.

\n","isPage":false,"text":"\nMainModuleUpgradable is a module that mimics the behaviour of the MainModule but allows the wallet configuration to be updated.\n","title":"MainModuleUpgradeable","titles":["Modules & wallet update"]},"396":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#updateimagehash","html":"\n

Updates the wallet imageHash, this is the hash that defines the wallet configuration (signers, weights, threshold).

\n
  function updateImageHash(\n    bytes32 _imageHash\n  ) external override onlySelf {
\n","isPage":false,"text":"\nUpdates the wallet imageHash, this is the hash that defines the wallet configuration (signers, weights, threshold).\n function updateImageHash(\n bytes32 _imageHash\n ) external override onlySelf {\n","title":"updateImageHash","titles":["Modules & wallet update","MainModuleUpgradeable"]},"397":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#parameters-2","html":"\n
NameTypeDescription
_imageHashbytes32Hash of the new configuration for the wallet.
\n

:::caution Unsanitized input\nThe imageHash is not validated, it is the responsibility of the caller to ensure that the hash is correct. Reasons for incorrect hashes include:

\n\n

In any of this cases the wallet will be rendered unusable.\n:::

\n

This method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.

\n","isPage":false,"text":"\nNameTypeDescription_imageHashbytes32Hash of the new configuration for the wallet.\n:::caution Unsanitized input\nThe imageHash is not validated, it is the responsibility of the caller to ensure that the hash is correct. Reasons for incorrect hashes include:\n\nThe combined weight of the signers is below the threshold.\nThe signers are not valid addresses.\nThe signers are smart contract wallets without proper support for EIP-1271.\nThe imageHash doesn't correspond to any wallet configuration (may be a random string).\nThe imageHash corresponds to an unknown wallet configuration.\n\nIn any of this cases the wallet will be rendered unusable.\n:::\nThis method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.\n","title":"Parameters:","titles":["Modules & wallet update","MainModuleUpgradeable","updateImageHash"]},"398":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#first-configuration-update","html":"\n

When Sequence wallets are created, the factory contract doesn't call an initialize function. The configuration is instead defined by the salt provided to the factory, the MainModule then checks the counterfactual validity of all signatures against the wallet address.

\n

This means there is no direct way to update the configuration of a wallet while still using the MainModule. Given that the first configuration update needs to also change the wallet implementation to the MainModuleUpgradable, the MainModule is updated to the MainModuleUpgradable and the updateImageHash method is called to update the wallet configuration.

\n
const transactions = [\n  {\n    delegateCall: false,\n    revertOnError: true,\n    to: wallet,\n    data: walletInterface.encodeFunctionData(\n      walletInterface.getFunction('updateImplementation'), [this.context.mainModuleUpgradable]\n    ),\n    value: ethers.constants.Zero,\n    gasLimit: ethers.constants.Zero,\n  },\n  {\n    delegateCall: false,\n    revertOnError: true,\n    to: wallet,\n    data: mainModuleInterface.encodeFunctionData(\n      mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n    ),\n    value: ethers.constants.Zero,\n    gasLimit: ethers.constants.Zero,\n  }\n]
\n","isPage":false,"text":"\nWhen Sequence wallets are created, the factory contract doesn't call an initialize function. The configuration is instead defined by the salt provided to the factory, the MainModule then checks the counterfactual validity of all signatures against the wallet address.\nThis means there is no direct way to update the configuration of a wallet while still using the MainModule. Given that the first configuration update needs to also change the wallet implementation to the MainModuleUpgradable, the MainModule is updated to the MainModuleUpgradable and the updateImageHash method is called to update the wallet configuration.\nconst transactions = [\n {\n delegateCall: false,\n revertOnError: true,\n to: wallet,\n data: walletInterface.encodeFunctionData(\n walletInterface.getFunction('updateImplementation'), [this.context.mainModuleUpgradable]\n ),\n value: ethers.constants.Zero,\n gasLimit: ethers.constants.Zero,\n },\n {\n delegateCall: false,\n revertOnError: true,\n to: wallet,\n data: mainModuleInterface.encodeFunctionData(\n mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n ),\n value: ethers.constants.Zero,\n gasLimit: ethers.constants.Zero,\n }\n]\n","title":"First configuration update","titles":["Modules & wallet update"]},"399":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#delegatecall-false","html":"\n

delegateCall is used to extend the wallet functionality beyond what's allowed by the module. In this case the called methods are defined on the modules themselves, so there is no need to use delegateCall.

\n","isPage":false,"text":"\ndelegateCall is used to extend the wallet functionality beyond what's allowed by the module. In this case the called methods are defined on the modules themselves, so there is no need to use delegateCall.\n","title":"delegateCall: false","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"400":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#revertonerror-true","html":"\n

revertOnError is used to revert the whole transaction bundle if a transaction flagged by it fails. In this case the operation should be atomic given that a partial wallet configuration update will render the wallet unusable.

\n","isPage":false,"text":"\nrevertOnError is used to revert the whole transaction bundle if a transaction flagged by it fails. In this case the operation should be atomic given that a partial wallet configuration update will render the wallet unusable.\n","title":"revertOnError: true","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"401":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#to-wallet","html":"\n

The methods being called are defined on the wallet itself, but need to be called externally, so the to address is the wallet itself.

\n","isPage":false,"text":"\nThe methods being called are defined on the wallet itself, but need to be called externally, so the to address is the wallet itself.\n","title":"to: wallet","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"402":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#value-ethersconstantszero","html":"\n

The value of the transaction is always zero, since the transaction is a self-referencing transaction and doesn't require transferring funds.

\n","isPage":false,"text":"\nThe value of the transaction is always zero, since the transaction is a self-referencing transaction and doesn't require transferring funds.\n","title":"value: ethers.constants.Zero","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"403":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#gaslimit-ethersconstantszero","html":"\n

The gasLimit of the transaction is always zero, since it represents an unlimited amount of gas.

\n

:::warning Dangerous operation

\n

When the wallet is first updated to the MainModuleUpgradable it doesn't have a valid imageHash yet. It's imperative that the imageHash is updated before the transaction bundle finishes executing.\nIf the imageHash is not updated before the transaction bundle finishes executing, the wallet will be rendered unusable.

\n

For this reason the following considerations should be taken when updating the wallet for the first time:

\n\n

:::

\n","isPage":false,"text":"\nThe gasLimit of the transaction is always zero, since it represents an unlimited amount of gas.\n:::warning Dangerous operation\nWhen the wallet is first updated to the MainModuleUpgradable it doesn't have a valid imageHash yet. It's imperative that the imageHash is updated before the transaction bundle finishes executing.\nIf the imageHash is not updated before the transaction bundle finishes executing, the wallet will be rendered unusable.\nFor this reason the following considerations should be taken when updating the wallet for the first time:\n\nAll transactions should be marked revertOnError = true.\nupdateImplementation and updateImageHash should both be declared on the same transaction bundle.\nThe gasLimit of both transactions should be set to unlimited (0).\n\n:::\n","title":"gasLimit: ethers.constants.Zero","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"404":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#subsequent-configuration-updates","html":"\n

Once the wallet is updated to the MainModuleUpgradable it can be updated by calling the updateImageHash method, without any additional transaction.

\n
const transactions = [\n  {\n    delegateCall: false,\n    revertOnError: true,\n    to: wallet,\n    data: mainModuleInterface.encodeFunctionData(\n      mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n    ),\n    value: ethers.constants.Zero,\n    gasLimit: ethers.constants.Zero,\n  }\n]
\n","isPage":false,"text":"\nOnce the wallet is updated to the MainModuleUpgradable it can be updated by calling the updateImageHash method, without any additional transaction.\nconst transactions = [\n {\n delegateCall: false,\n revertOnError: true,\n to: wallet,\n data: mainModuleInterface.encodeFunctionData(\n mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n ),\n value: ethers.constants.Zero,\n gasLimit: ethers.constants.Zero,\n }\n]\n","title":"Subsequent configuration updates","titles":["Modules & wallet update","First configuration update"]},"405":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#retrieving-the-current-configuration","html":"\n

If the wallet is updated to the MainModuleUpgradable it can be queried for the current configuration by calling the getImageHash method.

\n

This method should return the wallet's current configuration hash, which can be compared to a list of known wallet configurations to find the correct one.

\n","isPage":false,"text":"\nIf the wallet is updated to the MainModuleUpgradable it can be queried for the current configuration by calling the getImageHash method.\nThis method should return the wallet's current configuration hash, which can be compared to a list of known wallet configurations to find the correct one.\n","title":"Retrieving the current configuration","titles":["Modules & wallet update","First configuration update"]},"406":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#retrieving-the-wallet-configuration","html":"\n

The imageHash method returns bytes32(0) if the wallet is not yet updated to the MainModuleUpgradable.\nIn this case the wallet is in a counter-factual state and the imageHash can't be directly queried.

\n

This is also the case for non-deployed wallets.

\n

To find the imageHash of a non-deployed or non-updated wallet, a candidate known imageHash needs to be compared against the wallet address.

\n

See Compute wallet address.

","isPage":false,"text":"\nThe imageHash method returns bytes32(0) if the wallet is not yet updated to the MainModuleUpgradable.\nIn this case the wallet is in a counter-factual state and the imageHash can't be directly queried.\nThis is also the case for non-deployed wallets.\nTo find the imageHash of a non-deployed or non-updated wallet, a candidate known imageHash needs to be compared against the wallet address.\nSee Compute wallet address.","title":"Retrieving the wallet configuration","titles":["Modules & wallet update","First configuration update","Retrieving the current configuration"]},"407":{"href":"/solutions/technical-references/internals/v1/nested-transaction-batching#nested-transaction-batching","html":"","isPage":true,"text":"","title":"Nested Transaction Batching","titles":[]},"408":{"href":"/solutions/technical-references/internals/v1/signature-encoding#signature-encoding","html":"\n

Sequence Wallets support ERC-1271 Standard Contract Signature Verification to allow signing of transactions and messages.

\n","isPage":true,"text":"\nSequence Wallets support ERC-1271 Standard Contract Signature Verification to allow signing of transactions and messages.\n","title":"Signature Encoding","titles":[]},"409":{"href":"/solutions/technical-references/internals/v1/signature-encoding#erc-191-ethereum-signed-data","html":"\n

Messages encoded with as ERC-191 Ethereum Signed Data are able to be created and signed as follows.

\n
import { Wallet } from '@0xsequence/wallet'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \nconst message = "Hello, World!"\n \nconst prefixedMessage = "\\x19Ethereum Signed Message:\\n" + len(message) + message\nconst signature = await wallet.signMessage(prefixedMessage)
\n

The above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.

\n","isPage":false,"text":"\nMessages encoded with as ERC-191 Ethereum Signed Data are able to be created and signed as follows.\nimport { Wallet } from '@0xsequence/wallet'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \nconst message = "Hello, World!"\n \nconst prefixedMessage = "\\x19Ethereum Signed Message:\\n" + len(message) + message\nconst signature = await wallet.signMessage(prefixedMessage)\nThe above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.\n","title":"ERC-191 Ethereum Signed Data","titles":["Signature Encoding"]},"410":{"href":"/solutions/technical-references/internals/v1/signature-encoding#erc-712-structured-data-signatures","html":"\n

ERC-712 Structured Data can also be signed in a similar fashion.

\n
import { Wallet } from '@0xsequence/wallet'\nimport { encodeTypedDataDigest } from '@0xsequence/utils'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \n// Encode the typed data\nconst chainId = 1\nconst typedData = {\n\ttypes: {\n\t\tPerson: [\n\t\t\t{ name: 'name', type: 'string' },\n\t\t\t{ name: 'wallet', type: 'address' },\n\t\t\t{ name: 'count', type: 'uint8' }\n\t\t]\n\t},\n\tprimaryType: 'Person' as const,\n\tdomain: {\n\t\tname: 'Ether Mail',\n\t\tversion: '1',\n\t\tchainId: chainId,\n\t\tverifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC'\n\t},\n\tmessage: {\n\t\tname: 'Bob',\n\t\twallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n\t\tcount: 4\n\t}\n} \nconst hashedData = encodeTypedDataDigest(typedData)\n \nconst signature = await wallet.signMessage(hashedData)
\n

The above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.

\n","isPage":false,"text":"\nERC-712 Structured Data can also be signed in a similar fashion.\nimport { Wallet } from '@0xsequence/wallet'\nimport { encodeTypedDataDigest } from '@0xsequence/utils'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \n// Encode the typed data\nconst chainId = 1\nconst typedData = {\n\ttypes: {\n\t\tPerson: [\n\t\t\t{ name: 'name', type: 'string' },\n\t\t\t{ name: 'wallet', type: 'address' },\n\t\t\t{ name: 'count', type: 'uint8' }\n\t\t]\n\t},\n\tprimaryType: 'Person' as const,\n\tdomain: {\n\t\tname: 'Ether Mail',\n\t\tversion: '1',\n\t\tchainId: chainId,\n\t\tverifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC'\n\t},\n\tmessage: {\n\t\tname: 'Bob',\n\t\twallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n\t\tcount: 4\n\t}\n} \nconst hashedData = encodeTypedDataDigest(typedData)\n \nconst signature = await wallet.signMessage(hashedData)\nThe above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.\n","title":"ERC-712 Structured Data Signatures","titles":["Signature Encoding"]},"411":{"href":"/solutions/technical-references/internals/v1/signature-encoding#verification","html":"\n

The signature can be verified by calling the isValidSignature method on the wallet.

\n
  /**\n   * @notice Verifies whether the provided signature is valid with respect to the provided hash\n   * @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n   *   > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256("isValidSignature(bytes32,bytes)"))\n   * @param _hash       keccak256 hash that was signed\n   * @param _signatures Signature byte array associated with _data.\n   *                    Encoded as abi.encode(Signature[], Configs)\n   * @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\n   */\n  function isValidSignature(\n    bytes32 _hash,\n    bytes calldata _signatures\n  ) public override virtual view returns (bytes4) {\n    // Validate signatures\n    (bool isValid,) = _signatureValidation(_hash, _signatures);\n    if (isValid) {\n      return SELECTOR_ERC1271_BYTES32_BYTES;\n    }\n\n    return bytes4(0);\n  }
\n

This will iterate through the combined signatures and validate that the resulting signature breaches the wallet's threshold.

","isPage":false,"text":"\nThe signature can be verified by calling the isValidSignature method on the wallet.\n /**\n * @notice Verifies whether the provided signature is valid with respect to the provided hash\n * @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n * > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256("isValidSignature(bytes32,bytes)"))\n * @param _hash keccak256 hash that was signed\n * @param _signatures Signature byte array associated with _data.\n * Encoded as abi.encode(Signature[], Configs)\n * @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\n */\n function isValidSignature(\n bytes32 _hash,\n bytes calldata _signatures\n ) public override virtual view returns (bytes4) {\n // Validate signatures\n (bool isValid,) = _signatureValidation(_hash, _signatures);\n if (isValid) {\n return SELECTOR_ERC1271_BYTES32_BYTES;\n }\n\n return bytes4(0);\n }\nThis will iterate through the combined signatures and validate that the resulting signature breaches the wallet's threshold.","title":"Verification","titles":["Signature Encoding"]},"412":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#wallet-configuration","html":"\n

Every Sequence wallet has a configuration defined by a threshold and a list of signers with their corresponding weights.

\n","isPage":true,"text":"\nEvery Sequence wallet has a configuration defined by a threshold and a list of signers with their corresponding weights.\n","title":"Wallet Configuration","titles":[]},"413":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#configuration-layout","html":"\n
NameTypeRangeDescription
Thresholduint161 - 65535Required combined total "weight" of signers for a signature to be considered valid.
Signerssigner[]unlimited - bounded by gasList of signers that with their corresponding "weight"s.
\n","isPage":false,"text":"\nNameTypeRangeDescriptionThresholduint161 - 65535Required combined total "weight" of signers for a signature to be considered valid.Signerssigner[]unlimited - bounded by gasList of signers that with their corresponding "weight"s.\n","title":"Configuration layout","titles":["Wallet Configuration"]},"414":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#signer-layout","html":"\n
NameTypeRangeDescription
"weight"uint80 - 255"weight" of every signature of the signer.
"address""address"--"address" of the signer, it may be an EOA or another smart contract wallet with EIP-1271 support.
\n","isPage":false,"text":"\nNameTypeRangeDescription"weight"uint80 - 255"weight" of every signature of the signer."address""address"--"address" of the signer, it may be an EOA or another smart contract wallet with EIP-1271 support.\n","title":"Signer layout","titles":["Wallet Configuration","Configuration layout"]},"415":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#example","html":"\n
{\n  "threshold": 5,\n  "signers": [\n    {\n      "address": "0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea",\n      "weight": 2\n    },\n    {\n      "address": "0x596af90cecdbf9a768886e771178fd5561dd27ab",\n      "weight": 3\n    },\n    {\n      "address": "0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1",\n      "weight": 2\n    },\n    {\n      "address": "0xec9a7204a43d3f4a82c84fde92d25bfc9110981e",\n      "weight": 1\n    }\n  ]\n}
\n

This example has a threshold of 5 and 4 signers.

\n","isPage":false,"text":"\n{\n "threshold": 5,\n "signers": [\n {\n "address": "0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea",\n "weight": 2\n },\n {\n "address": "0x596af90cecdbf9a768886e771178fd5561dd27ab",\n "weight": 3\n },\n {\n "address": "0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1",\n "weight": 2\n },\n {\n "address": "0xec9a7204a43d3f4a82c84fde92d25bfc9110981e",\n "weight": 1\n }\n ]\n}\nThis example has a threshold of 5 and 4 signers.\n","title":"Example","titles":["Wallet Configuration","Configuration layout","Signer layout"]},"416":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#the-valid-combinations-of-signers-are","html":"\n
- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea, 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0xec9a7204a43d3f4a82c84fde92d25bfc9110981e - combined weight of 2 + 2 + 1 = 5
\n

Any combination of signers with a combined weight under the threshold is considered invalid; any additional signers above the threshold are ignored.

\n","isPage":false,"text":"\n- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea, 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0xec9a7204a43d3f4a82c84fde92d25bfc9110981e - combined weight of 2 + 2 + 1 = 5\nAny combination of signers with a combined weight under the threshold is considered invalid; any additional signers above the threshold are ignored.\n","title":"The valid combinations of signers are:","titles":["Wallet Configuration","Configuration layout","Signer layout"]},"417":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#configuration-hash---imagehash","html":"\n

The configuration is never stored directly on the contract, but instead is hashed and checked against every time a signature is validated. This allows the wallet contracts to reduce the usage of storage and therefore the gas cost.

\n

Wallets that never have been updated don't store the imageHash directly, instead the imageHash is used as the salt during the contract creation, and signatures are validated against the address of the wallet.

\n","isPage":false,"text":"\nThe configuration is never stored directly on the contract, but instead is hashed and checked against every time a signature is validated. This allows the wallet contracts to reduce the usage of storage and therefore the gas cost.\nWallets that never have been updated don't store the imageHash directly, instead the imageHash is used as the salt during the contract creation, and signatures are validated against the address of the wallet.\n","title":"Configuration hash - ImageHash","titles":["Wallet Configuration","Configuration layout"]},"418":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#compute-image-hash","html":"\n
  keccak256(abi.encode( uint8 weight_1, address signer_1,\n  keccak256(abi.encode( uint8 weight_2, address signer_2,\n  keccak256(abi.encode( uint8 weight_3, address signer_3,\n  keccak256(abi.encode( uint256 threshold )) )) )) )) 
  let tmp = ethers.utils.solidityPack(['uint256'], [configuration.threshold])\n \n  for (const signer of configuration.signers) {\n    tmp = ethers.utils.keccak256(\n      ethers.utils.defaultAbiCoder.encode(\n        ['bytes32', 'uint8', 'address'],\n        [tmp, signer.weight, signer.address]\n      )\n    )\n  }\n \n  const imageHash = tmp
\n","isPage":false,"text":"\n keccak256(abi.encode( uint8 weight_1, address signer_1,\n keccak256(abi.encode( uint8 weight_2, address signer_2,\n keccak256(abi.encode( uint8 weight_3, address signer_3,\n keccak256(abi.encode( uint256 threshold )) )) )) )) let tmp = ethers.utils.solidityPack(['uint256'], [configuration.threshold])\n \n for (const signer of configuration.signers) {\n tmp = ethers.utils.keccak256(\n ethers.utils.defaultAbiCoder.encode(\n ['bytes32', 'uint8', 'address'],\n [tmp, signer.weight, signer.address]\n )\n )\n }\n \n const imageHash = tmp\n","title":"Compute image hash","titles":["Wallet Configuration","Configuration layout","Configuration hash - ImageHash"]},"419":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#initial-wallet-configuration","html":"\n

The initial wallet configuration determines the address of the wallet, subsequent updates don't change the address.

\n

The wallet address can be computed using the imageHash, the factory and mainModule of the wallet.

\n","isPage":false,"text":"\nThe initial wallet configuration determines the address of the wallet, subsequent updates don't change the address.\nThe wallet address can be computed using the imageHash, the factory and mainModule of the wallet.\n","title":"Initial wallet configuration","titles":["Wallet Configuration"]},"420":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#compute-wallet-address","html":"\n
// The code of the wallet proxy contract\nconst WalletProxyBytecode =\n"0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3";\n \n// These values are defined by the wallet context\n// they must be known in order to validate the counter-factual wallet imageHash\nconst factory = "0xf9D09D634Fb818b05149329C1dcCFAeA53639d96";\nconst mainModule = "0xd01F11855bCcb95f88D7A48492F66410d4637313";\n \n// Append the `mainModule` to the `WalletProxyBytecode`\n// this completed the creation code of the proxy contract\n// used for computing the wallet address as defined by the CREATE2 opcode\nconst codeHash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes", "bytes32"],\n[WalletContractBytecode, ethers.utils.hexZeroPad(mainModule, 32)]\n)\n);\n \n// Compute the wallet address\nconst hash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes1", "address", "bytes32", "bytes32"],\n["0xff", factory, salt, codeHash]\n)\n);\n \nconst address = ethers.utils.getAddress(ethers.utils.hexDataSlice(hash, 12));
","isPage":false,"text":"\n// The code of the wallet proxy contract\nconst WalletProxyBytecode =\n"0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3";\n \n// These values are defined by the wallet context\n// they must be known in order to validate the counter-factual wallet imageHash\nconst factory = "0xf9D09D634Fb818b05149329C1dcCFAeA53639d96";\nconst mainModule = "0xd01F11855bCcb95f88D7A48492F66410d4637313";\n \n// Append the `mainModule` to the `WalletProxyBytecode`\n// this completed the creation code of the proxy contract\n// used for computing the wallet address as defined by the CREATE2 opcode\nconst codeHash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes", "bytes32"],\n[WalletContractBytecode, ethers.utils.hexZeroPad(mainModule, 32)]\n)\n);\n \n// Compute the wallet address\nconst hash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes1", "address", "bytes32", "bytes32"],\n["0xff", factory, salt, codeHash]\n)\n);\n \nconst address = ethers.utils.getAddress(ethers.utils.hexDataSlice(hash, 12));","title":"Compute wallet address","titles":["Wallet Configuration","Initial wallet configuration","Configuration hash - ImageHash"]},"421":{"href":"/solutions/technical-references/internals/v1/wallet-context#wallet-context","html":"\n
export const sequenceContext: WalletContext = {\n  factory: '0xf9D09D634Fb818b05149329C1dcCFAeA53639d96',\n  mainModule: '0xd01F11855bCcb95f88D7A48492F66410d4637313',\n  mainModuleUpgradable: '0x7EFE6cE415956c5f80C6530cC6cc81b4808F6118',\n  guestModule: '0x02390F3E6E5FD1C6786CB78FD3027C117a9955A7',\n  sequenceUtils: '0xd130B43062D875a4B7aF3f8fc036Bc6e9D3E1B3E',\n  libs: {\n    requireFreshSigner: '0xE6B9B21C077F382333220a072e4c44280b873907'\n  }\n}
","isPage":true,"text":"\nexport const sequenceContext: WalletContext = {\n factory: '0xf9D09D634Fb818b05149329C1dcCFAeA53639d96',\n mainModule: '0xd01F11855bCcb95f88D7A48492F66410d4637313',\n mainModuleUpgradable: '0x7EFE6cE415956c5f80C6530cC6cc81b4808F6118',\n guestModule: '0x02390F3E6E5FD1C6786CB78FD3027C117a9955A7',\n sequenceUtils: '0xd130B43062D875a4B7aF3f8fc036Bc6e9D3E1B3E',\n libs: {\n requireFreshSigner: '0xE6B9B21C077F382333220a072e4c44280b873907'\n }\n}","title":"Wallet Context","titles":[]},"422":{"href":"/solutions/technical-references/internals/v2/configuration#wallet-configuration","html":"\n

In the context of Sequence Wallets, the "Wallet Configuration" is a set of parameters that defines the behavior of the wallet, primarily used to define the access control of the wallet, meaning who can sign transactions and how many signatures are needed.

\n","isPage":true,"text":"\nIn the context of Sequence Wallets, the "Wallet Configuration" is a set of parameters that defines the behavior of the wallet, primarily used to define the access control of the wallet, meaning who can sign transactions and how many signatures are needed.\n","title":"Wallet Configuration","titles":[]},"423":{"href":"/solutions/technical-references/internals/v2/configuration#top-level-properties","html":"\n

Sequence v2 configurations contain the following 3 properties:

\n\n","isPage":false,"text":"\nSequence v2 configurations contain the following 3 properties:\n\nthreshold - The required "weight sum" needed for a signature to be considered valid.\ncheckpoint - Used as a salt and ordering mechanism for wallet updates.\ntree - Determines the signers and their weights for the wallet.\n\n","title":"Top level properties","titles":["Wallet Configuration"]},"424":{"href":"/solutions/technical-references/internals/v2/configuration#threshold","html":"\n

The threshold is a uint16; it can have any value between 0 and 65535. Signatures are only considered valid or invalid if the sum of the weights of the signers that signed the transaction is greater or equal to the threshold.

\n","isPage":false,"text":"\nThe threshold is a uint16; it can have any value between 0 and 65535. Signatures are only considered valid or invalid if the sum of the weights of the signers that signed the transaction is greater or equal to the threshold.\n","title":"Threshold","titles":["Wallet Configuration","Top level properties"]},"425":{"href":"/solutions/technical-references/internals/v2/configuration#checkpoint","html":"\n

The checkpoint is a uint32. During wallet creation, a semi-random value can be provided to generate independent wallets with the same initial configuration. Then, during normal operation, the checkpoint is used by Light State Sync to ensure that wallet updates are applied in the correct order.

\n","isPage":false,"text":"\nThe checkpoint is a uint32. During wallet creation, a semi-random value can be provided to generate independent wallets with the same initial configuration. Then, during normal operation, the checkpoint is used by Light State Sync to ensure that wallet updates are applied in the correct order.\n","title":"Checkpoint","titles":["Wallet Configuration","Top level properties"]},"426":{"href":"/solutions/technical-references/internals/v2/configuration#tree","html":"\n

The tree is an unbalanced binary Merkle tree, where each leaf may contain a signer, a static signature, or a subtree. The tree can represent any combination of signers and weights and can be used to create complex multi-signature wallets.

\n

The possible leaf types are:

\n","isPage":false,"text":"\nThe tree is an unbalanced binary Merkle tree, where each leaf may contain a signer, a static signature, or a subtree. The tree can represent any combination of signers and weights and can be used to create complex multi-signature wallets.\nThe possible leaf types are:\n","title":"Tree","titles":["Wallet Configuration","Top level properties"]},"427":{"href":"/solutions/technical-references/internals/v2/configuration#signer","html":"\n

Signers are represented by a signer address and a uint8 weight. The weight is how much the signer contributes to the threshold.\nThe address can belong to either an ERC1271 compliant contract or an EOA wallet.

\n

The leaf hash is calculated as follows:

\n
bytes32(uint256(weight) << 160 | uint256(uint160(addr)))
\n","isPage":false,"text":"\nSigners are represented by a signer address and a uint8 weight. The weight is how much the signer contributes to the threshold.\nThe address can belong to either an ERC1271 compliant contract or an EOA wallet.\nThe leaf hash is calculated as follows:\nbytes32(uint256(weight) << 160 | uint256(uint160(addr)))\n","title":"Signer","titles":["Wallet Configuration","Top level properties","Tree"]},"428":{"href":"/solutions/technical-references/internals/v2/configuration#subdigest","html":"\n

This represents a static subdigest for which any signature is valid. If a signature for this subdigest is provided, the total weight of the signature is automatically set to Infinity.

\n

Notice static subdigests that exist within nested trees will have their "Infinity" weight reduced to the weight of the nested tree.

\n

The leaf hash is calculated as follows:

\n
keccak256(abi.encodePacked('Sequence static digest:\\n', subdigest));
\n","isPage":false,"text":"\nThis represents a static subdigest for which any signature is valid. If a signature for this subdigest is provided, the total weight of the signature is automatically set to Infinity.\nNotice static subdigests that exist within nested trees will have their "Infinity" weight reduced to the weight of the nested tree.\nThe leaf hash is calculated as follows:\nkeccak256(abi.encodePacked('Sequence static digest:\\n', subdigest));\n","title":"Subdigest","titles":["Wallet Configuration","Top level properties","Tree"]},"429":{"href":"/solutions/technical-references/internals/v2/configuration#subtree-nested-configuration","html":"\n

This represents a whole new wallet configuration, this "nested configuration" has its own:

\n\n

The way it works is that if a signature reaches the internal threshold within the subtree it is considered valid, and the external weight is added to the parent tree. Any number of nested configurations can be created, and it is possible to create multiple nesting levels.

\n

This pattern can be used, among other things, to express the following scenarios:

\n\n

The leaf hash is calculated as follows:

\n
keccak256(abi.encodePacked(\n  'Sequence nested config:\\n',\n  imageHash(tree),\n  threshold,\n  weight\n))
\n\n","isPage":false,"text":"\nThis represents a whole new wallet configuration, this "nested configuration" has its own:\n\nExternal weight (uint8)\nInternal threshold (uint16)\nInternal tree\n\nThe way it works is that if a signature reaches the internal threshold within the subtree it is considered valid, and the external weight is added to the parent tree. Any number of nested configurations can be created, and it is possible to create multiple nesting levels.\nThis pattern can be used, among other things, to express the following scenarios:\n\nNon-linear weight distribution, A and B signers can provide 1 weight each, but together they can provide 3 weight.\nLimited total weight contribution, A, B, and C signers can provide 1 weight each, but together they can only provide 2 weight.\n"Department configurations", N departments are required to sign, and each department has its own inner configuration.\n\nThe leaf hash is calculated as follows:\nkeccak256(abi.encodePacked(\n 'Sequence nested config:\\n',\n imageHash(tree),\n threshold,\n weight\n))\nThe wallet contracts have no way of validating the correctness of the configuration, the responsibility of ensuring the configuration is correct is on the SDKs interacting with the contracts.Things like threshold == 0 or threshold > total weight will result in fully unauthenticated wallets or inaccessible wallets respectively.\n","title":"Subtree (nested configuration)","titles":["Wallet Configuration","Top level properties","Tree"]},"430":{"href":"/solutions/technical-references/internals/v2/configuration#imagehash","html":"\n

The configuration is never stored as a whole; instead, the Merkle tree is hashed into a single bytes32 value, this is internally called the imageHash of the configuration.

\n

The imageHash is calculated as follows:

\n
imageHash := keccak256(abi.encode(\n  keccak256(abi.encode(\n    hashTree(tree),\n    threshold\n  )),\n  checkpoint\n))
\n

The hashTree function is a recursive function that hashes the tree into a single bytes32 value, pseudo code for the hashTree function is as follows:

\n
export function hashTree(node: Node | Leaf): string {\n  if (isSignerLeaf(node)) {\n    return ethers.utils.solidityPack(\n      ['uint96', 'address'],\n      [node.weight, node.address]\n    )\n  }\n \n  if (isSubdigestLeaf(node)) {\n    return ethers.utils.solidityKeccak256(\n      ['string', 'bytes32'],\n      ['Sequence static digest:\\n', node.subdigest]\n    )\n  }\n \n  if (isNestedLeaf(node)) {\n    const nested = hashTree(node.tree)\n    return ethers.utils.solidityKeccak256(\n      ['string', 'bytes32', 'uint256', 'uint256'],\n      ['Sequence nested config:\\n', nested, node.threshold, node.weight]\n    )\n  }\n \n  return ethers.utils.solidityKeccak256(\n    ['bytes32', 'bytes32'],\n    [hashTree(node.left), hashTree(node.right)]\n  )\n}
\n","isPage":false,"text":"\nThe configuration is never stored as a whole; instead, the Merkle tree is hashed into a single bytes32 value, this is internally called the imageHash of the configuration.\nThe imageHash is calculated as follows:\nimageHash := keccak256(abi.encode(\n keccak256(abi.encode(\n hashTree(tree),\n threshold\n )),\n checkpoint\n))\nThe hashTree function is a recursive function that hashes the tree into a single bytes32 value, pseudo code for the hashTree function is as follows:\nexport function hashTree(node: Node | Leaf): string {\n if (isSignerLeaf(node)) {\n return ethers.utils.solidityPack(\n ['uint96', 'address'],\n [node.weight, node.address]\n )\n }\n \n if (isSubdigestLeaf(node)) {\n return ethers.utils.solidityKeccak256(\n ['string', 'bytes32'],\n ['Sequence static digest:\\n', node.subdigest]\n )\n }\n \n if (isNestedLeaf(node)) {\n const nested = hashTree(node.tree)\n return ethers.utils.solidityKeccak256(\n ['string', 'bytes32', 'uint256', 'uint256'],\n ['Sequence nested config:\\n', nested, node.threshold, node.weight]\n )\n }\n \n return ethers.utils.solidityKeccak256(\n ['bytes32', 'bytes32'],\n [hashTree(node.left), hashTree(node.right)]\n )\n}\n","title":"ImageHash","titles":["Wallet Configuration"]},"431":{"href":"/solutions/technical-references/internals/v2/configuration#initial-configuration","html":"\n

All Sequence Wallets have an "initial configuration", implemented by using the imageHash of the initial configuration as the SALT during the CREATE2 deployment of the wallet.

\n

Wallets are deployed by calling the deploy function of the Factory contract, which takes the following parameters:

\n\n","isPage":false,"text":"\nAll Sequence Wallets have an "initial configuration", implemented by using the imageHash of the initial configuration as the SALT during the CREATE2 deployment of the wallet.\nWallets are deployed by calling the deploy function of the Factory contract, which takes the following parameters:\n\nmainModule: The address of the initial code implementation of the wallet.\nsalt: The imageHash of the initial configuration.\n\nThe MainModule should always be used as the initial code implementation of the wallet. The MainModule validates the imageHash (during signature validation) by re-computing the counterfactual address of the wallet, hence it does not require any storage initialization.If the imageHash is ever changed, MainModule will automatically replace the wallet code implementation with MainModuleUpgradeable, while handling the storage initialization.","title":"Initial Configuration","titles":["Wallet Configuration"]},"432":{"href":"/solutions/wallets/embedded-wallet/examples/manage-sessions#session-management","html":"\n

Sequence Auth + Embedded Wallet handles the following aspects of your application:

\n\n

This means you don't need to implement an account system yourself; instead, you interact with the Auth + WaaS SDK whenever you need to authenticate a user.

\n","isPage":true,"text":"\nSequence Auth + Embedded Wallet handles the following aspects of your application:\n\nUser creation\nUser authentication\nSession management\n\nThis means you don't need to implement an account system yourself; instead, you interact with the Auth + WaaS SDK whenever you need to authenticate a user.\n","title":"Session Management","titles":[]},"433":{"href":"/solutions/wallets/embedded-wallet/examples/manage-sessions#sign-in--sign-up","html":"\n

Signing in and signing up are the same operation; the account is automatically created if it doesn't already exist.

\n
import { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'arbitrum-nova'\n})\n \n// Get a sessionHash\nconst sessionHash = await waas.getSessionHash()\n \n// Get an idToken using the social auth provider of your choice\n// (Google, Facebook, Twitter, etc.)\n// Note: remember to pass the sessionHash as a nonce!\n \n// Then sign in with Sequence WaaS\nconst res = await waas.signIn({ idToken }, "MacBook Pro - Chrome")\n \nconsole.log(res)
\n
{\n  "sessionId": "0x63A21cCa14ed7454B9cF6466af422B5c597c6b57",\n  "wallet": "0xd6043fe6f06d90ec2cB36cA5CD1B193A8515f350",\n}
\n\n","isPage":false,"text":"\nSigning in and signing up are the same operation; the account is automatically created if it doesn't already exist.\nimport { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'arbitrum-nova'\n})\n \n// Get a sessionHash\nconst sessionHash = await waas.getSessionHash()\n \n// Get an idToken using the social auth provider of your choice\n// (Google, Facebook, Twitter, etc.)\n// Note: remember to pass the sessionHash as a nonce!\n \n// Then sign in with Sequence WaaS\nconst res = await waas.signIn({ idToken }, "MacBook Pro - Chrome")\n \nconsole.log(res)\n{\n "sessionId": "0x63A21cCa14ed7454B9cF6466af422B5c597c6b57",\n "wallet": "0xd6043fe6f06d90ec2cB36cA5CD1B193A8515f350",\n}\nSessions opened with some providers might require a second step in order to be usable for sending transactions.See Email validation.\n","title":"Sign in / Sign Up","titles":["Session Management"]},"434":{"href":"/solutions/wallets/embedded-wallet/examples/manage-sessions#email-sign-in--sign-up","html":"\n

Email sign-in is directly supported by the SDK, as long as the used key has been generated with the email scope. Email logins work similarly to social logins, except that the idToken is generated by the SDK itself.

\n

To open a session using an email, you will need to provide an email for the user. The Embedded Wallet Nitro API will then send an email to the user with a One-Time Password (OTP) that can be used to open a session. This OTP has to be provided to the SDK to obtain an idToken.

\n

Once the idToken is obtained, the session can be opened as usual.

\n
import { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'arbitrum-nova'\n})\n \n// Send validation email to the user with an OTP code\nconst { instance } = await waas.email.initiateAuth({ email })\nconst sessionHash = await sequence.getSessionHash()\n \n// Obtain OTP code from user and pass to finalizeAuth for validation\nconst { idToken } = await waas.email.finalizeAuth({ instance, answer, email, sessionHash })\n \n// Log in using the idToken, as usual\nawait waas.signIn({ idToken })
\n","isPage":false,"text":"\nEmail sign-in is directly supported by the SDK, as long as the used key has been generated with the email scope. Email logins work similarly to social logins, except that the idToken is generated by the SDK itself.\nTo open a session using an email, you will need to provide an email for the user. The Embedded Wallet Nitro API will then send an email to the user with a One-Time Password (OTP) that can be used to open a session. This OTP has to be provided to the SDK to obtain an idToken.\nOnce the idToken is obtained, the session can be opened as usual.\nimport { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'arbitrum-nova'\n})\n \n// Send validation email to the user with an OTP code\nconst { instance } = await waas.email.initiateAuth({ email })\nconst sessionHash = await sequence.getSessionHash()\n \n// Obtain OTP code from user and pass to finalizeAuth for validation\nconst { idToken } = await waas.email.finalizeAuth({ instance, answer, email, sessionHash })\n \n// Log in using the idToken, as usual\nawait waas.signIn({ idToken })\n","title":"Email Sign In / Sign Up","titles":["Session Management","Sign in / Sign Up"]},"435":{"href":"/solutions/wallets/embedded-wallet/examples/manage-sessions#google--apple-auth","html":"\n

Google and Apple auth are directly supported by the SDK. The idToken is obtained from the social auth provider and used to open a session. You can see a sample React application using Google auth below. To see a complete application, see the demo-waas-auth repository. A functional demo is also available here.

\n

Begin with a simple main.tsx file that sets up the WaaS SDK, the router, and the Google OAuth provider.

\n
import { SequenceWaaS } from '@0xsequence/waas'\nimport { GoogleOAuthProvider } from '@react-oauth/google'\nimport { createHashRouter, RouterProvider } from 'react-router-dom'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'arbitrum-nova'\n})\n \nexport const router = createHashRouter([\n  {\n    path: '/login',\n    element: <Login />\n  },\n  {\n    path: '/',\n    element: <App />\n  }\n])\n \nReactDOM.createRoot(document.getElementById('root')!).render(\n  <React.StrictMode>\n      <GoogleOAuthProvider clientId={GOOGLE_CLIENT_ID}>\n        <RouterProvider router={router} />\n      </GoogleOAuthProvider>\n  </React.StrictMode>\n)
\n

The useSessionHash hook is used to obtain a session hash that is used to prevent replay attacks. The sequence.getSessionHash function is used to obtain the session hash, and the sequence.onSessionStateChanged function is used to update the session hash when the session state changes.

\n
import { sequence } from './main'\nimport { useEffect, useState } from "react";\n \nexport function useSessionHash() {\n    const [sessionHash, setSessionHash] = useState("")\n    const [error, setError] = useState<any>(undefined)\n \n    useEffect(() => {\n        const handler = async () => {\n            try {\n                setSessionHash(await sequence.getSessionHash())\n            } catch (error) {\n                console.error(error)\n                setError(error)\n            }\n        }\n        handler()\n        return sequence.onSessionStateChanged(handler)\n    }, [setSessionHash, setError])\n \n    return {\n        sessionHash,\n        error,\n        loading: !!sessionHash,\n    }\n}
\n

To handle the Google login, you can use the GoogleLogin component from the @react-oauth/google package. The handleGoogleLogin function is called when the user successfully logs in.

\n
import { router, sequence } from './main'\nimport { CredentialResponse, GoogleLogin } from '@react-oauth/google'\nimport { useSessionHash } from "./useSessionHash.ts";\n \nfunction Login() {\n  const { sessionHash } = useSessionHash()\n  const [signingIn, setSigningIn] = useState(false)\n \n  useEffect(() => {\n    (async () => {\n      if (await sequence.isSignedIn()) {\n        router.navigate('/')\n      }\n    })()\n  }, [])\n \n  const handleGoogleLogin = async (tokenResponse: CredentialResponse) => {\n    const walletAddress = await sequence.signIn({\n      idToken: tokenResponse.credential!\n    }, "MacBook Pro - Chrome")\n \n    console.log(`Wallet address: ${walletAddress}`)\n    router.navigate('/')\n  }\n \n  return (\n    {!!sessionHash && (<>\n      <GoogleLogin onSuccess={handleGoogleLogin} shape="circle" width={230} nonce={sessionHash} />\n    </>)}\n )\n}\n \nexport default Login
\n","isPage":false,"text":"\nGoogle and Apple auth are directly supported by the SDK. The idToken is obtained from the social auth provider and used to open a session. You can see a sample React application using Google auth below. To see a complete application, see the demo-waas-auth repository. A functional demo is also available here.\nBegin with a simple main.tsx file that sets up the WaaS SDK, the router, and the Google OAuth provider.\nimport { SequenceWaaS } from '@0xsequence/waas'\nimport { GoogleOAuthProvider } from '@react-oauth/google'\nimport { createHashRouter, RouterProvider } from 'react-router-dom'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'arbitrum-nova'\n})\n \nexport const router = createHashRouter([\n {\n path: '/login',\n element: <Login />\n },\n {\n path: '/',\n element: <App />\n }\n])\n \nReactDOM.createRoot(document.getElementById('root')!).render(\n <React.StrictMode>\n <GoogleOAuthProvider clientId={GOOGLE_CLIENT_ID}>\n <RouterProvider router={router} />\n </GoogleOAuthProvider>\n </React.StrictMode>\n)\nThe useSessionHash hook is used to obtain a session hash that is used to prevent replay attacks. The sequence.getSessionHash function is used to obtain the session hash, and the sequence.onSessionStateChanged function is used to update the session hash when the session state changes.\nimport { sequence } from './main'\nimport { useEffect, useState } from "react";\n \nexport function useSessionHash() {\n const [sessionHash, setSessionHash] = useState("")\n const [error, setError] = useState<any>(undefined)\n \n useEffect(() => {\n const handler = async () => {\n try {\n setSessionHash(await sequence.getSessionHash())\n } catch (error) {\n console.error(error)\n setError(error)\n }\n }\n handler()\n return sequence.onSessionStateChanged(handler)\n }, [setSessionHash, setError])\n \n return {\n sessionHash,\n error,\n loading: !!sessionHash,\n }\n}\nTo handle the Google login, you can use the GoogleLogin component from the @react-oauth/google package. The handleGoogleLogin function is called when the user successfully logs in.\nimport { router, sequence } from './main'\nimport { CredentialResponse, GoogleLogin } from '@react-oauth/google'\nimport { useSessionHash } from "./useSessionHash.ts";\n \nfunction Login() {\n const { sessionHash } = useSessionHash()\n const [signingIn, setSigningIn] = useState(false)\n \n useEffect(() => {\n (async () => {\n if (await sequence.isSignedIn()) {\n router.navigate('/')\n }\n })()\n }, [])\n \n const handleGoogleLogin = async (tokenResponse: CredentialResponse) => {\n const walletAddress = await sequence.signIn({\n idToken: tokenResponse.credential!\n }, "MacBook Pro - Chrome")\n \n console.log(`Wallet address: ${walletAddress}`)\n router.navigate('/')\n }\n \n return (\n {!!sessionHash && (<>\n <GoogleLogin onSuccess={handleGoogleLogin} shape="circle" width={230} nonce={sessionHash} />\n </>)}\n )\n}\n \nexport default Login\n","title":"Google / Apple Auth","titles":["Session Management","Sign in / Sign Up"]},"436":{"href":"/solutions/wallets/embedded-wallet/examples/manage-sessions#list-sessions","html":"\n

This function returns a list of sessions for the current user and only includes sessions that are still valid.

\n
import { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'arbitrum-nova'\n})\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome")\n \nconst sessions = await waas.listSessions()\nconsole.log(sessions)
\n
[\n  {\n    "id": "0x574372ff1A0Eede68B5358Cce7bbb93155A9dfe0",\n    "address": "0x574372ff1a0eede68b5358cce7bbb93155a9dfe0",\n    "userId": "42#https://accounts.google.com#109234880945084120673",\n    "projectId": 42,\n    "issuer": "https://accounts.google.com",\n    "subject": "109234880945084120673",\n    "friendlyName": "Pixel 3 - Brave",\n    "createdAt": "2023-11-02T18:22:03.102950917Z",\n    "refreshedAt": "2023-11-02T18:22:03.109787921Z",\n    "expiresAt": "2123-10-09T18:22:03.102951017Z",\n    "isThis": false\n  },\n  {\n    "id": "0x3C4E11E4dbF23B87C14bd75d0Da9C75707392D21",\n    "address": "0x3c4e11e4dbf23b87c14bd75d0da9c75707392d21",\n    "userId": "42#https://accounts.google.com#109234880945084120673",\n    "projectId": 42,\n    "issuer": "https://accounts.google.com",\n    "subject": "109234880945084120673",\n    "friendlyName": "MacBook Pro - Chrome",\n    "createdAt": "2023-11-02T18:50:32.815189174Z",\n    "refreshedAt": "2023-11-02T18:50:32.819722082Z",\n    "expiresAt": "2123-10-09T18:50:32.815189234Z",\n    "isThis": true\n  }\n]
\n","isPage":false,"text":"\nThis function returns a list of sessions for the current user and only includes sessions that are still valid.\nimport { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'arbitrum-nova'\n})\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome")\n \nconst sessions = await waas.listSessions()\nconsole.log(sessions)\n[\n {\n "id": "0x574372ff1A0Eede68B5358Cce7bbb93155A9dfe0",\n "address": "0x574372ff1a0eede68b5358cce7bbb93155a9dfe0",\n "userId": "42#https://accounts.google.com#109234880945084120673",\n "projectId": 42,\n "issuer": "https://accounts.google.com",\n "subject": "109234880945084120673",\n "friendlyName": "Pixel 3 - Brave",\n "createdAt": "2023-11-02T18:22:03.102950917Z",\n "refreshedAt": "2023-11-02T18:22:03.109787921Z",\n "expiresAt": "2123-10-09T18:22:03.102951017Z",\n "isThis": false\n },\n {\n "id": "0x3C4E11E4dbF23B87C14bd75d0Da9C75707392D21",\n "address": "0x3c4e11e4dbf23b87c14bd75d0da9c75707392d21",\n "userId": "42#https://accounts.google.com#109234880945084120673",\n "projectId": 42,\n "issuer": "https://accounts.google.com",\n "subject": "109234880945084120673",\n "friendlyName": "MacBook Pro - Chrome",\n "createdAt": "2023-11-02T18:50:32.815189174Z",\n "refreshedAt": "2023-11-02T18:50:32.819722082Z",\n "expiresAt": "2123-10-09T18:50:32.815189234Z",\n "isThis": true\n }\n]\n","title":"List Sessions","titles":["Session Management"]},"437":{"href":"/solutions/wallets/embedded-wallet/examples/manage-sessions#close-session","html":"\n

A session can be closed using the id of the session. Any session can be closed from any device with an active session.

\n
import { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'arbitrum-nova'\n})\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome")\n \nconst sessions = await waas.listSessions()\nawait waas.dropSession({ sessionId: sessions[0].id })
","isPage":false,"text":"\nA session can be closed using the id of the session. Any session can be closed from any device with an active session.\nimport { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'arbitrum-nova'\n})\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome")\n \nconst sessions = await waas.listSessions()\nawait waas.dropSession({ sessionId: sessions[0].id })","title":"Close Session","titles":["Session Management"]},"438":{"href":"/solutions/wallets/embedded-wallet/examples/transaction-receipts#transaction-receipts","html":"\n

Any methods that involve sending transactions will return either successful or failed transaction receipts. Failed transaction receipts are generated without executing the transaction.

\n","isPage":true,"text":"\nAny methods that involve sending transactions will return either successful or failed transaction receipts. Failed transaction receipts are generated without executing the transaction.\n","title":"Transaction receipts","titles":[]},"439":{"href":"/solutions/wallets/embedded-wallet/examples/transaction-receipts#successful-transaction-response","html":"\n

Any transaction that is successfully included in a block will return a SentTransactionResponse object. This must be checked for before accessing the transaction hash, using the isSentTransactionResponse type guard.

\n
import { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "arbitrum-nova",\n  }\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n  chainId: 42161,\n  transactions: [\n    {\n      to: "0xD72C236Be524Ec24F72329317e2785E687105B69",\n      value: "0",\n    },\n  ],\n});\n \nif (isSentTransactionResponse(tx)) {\n  console.log(tx);\n}
\n

The relevant fields are:

\n\n

To view the full response object, see the Response payloads section.

\n
{\n  "code": "transactionReceipt",\n  "data": {\n    "txHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n    "metaTxHash": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n    "nativeReceipt": { ... },\n    "receipt": {\n      "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n      "index": 0,\n      "logs": [\n        {\n          "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n          "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n          "topics": [\n            "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n          ]\n        },\n        {\n          "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n          "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n          "topics": [\n            "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n            "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n          ]\n        }\n      ],\n      "receipts": [ ... ],\n      "revertReason": null,\n      "status": "SUCCEEDED"\n    },\n    "request": { ... },\n    "simulations": [ ... ]\n  }\n}
\n","isPage":false,"text":"\nAny transaction that is successfully included in a block will return a SentTransactionResponse object. This must be checked for before accessing the transaction hash, using the isSentTransactionResponse type guard.\nimport { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "arbitrum-nova",\n }\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n chainId: 42161,\n transactions: [\n {\n to: "0xD72C236Be524Ec24F72329317e2785E687105B69",\n value: "0",\n },\n ],\n});\n \nif (isSentTransactionResponse(tx)) {\n console.log(tx);\n}\nThe relevant fields are:\n\ntxHash: The transaction hash of the transaction that was sent to the network.\nreceipt.logs: Logs emitted by the transaction.\nreceipt.status: The status of the transaction. SUCCEEDED or FAILED.\nreceipt.revertReason: If the transaction was executed but reverted, it includes the reason.\n\nTo view the full response object, see the Response payloads section.\n{\n "code": "transactionReceipt",\n "data": {\n "txHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n "metaTxHash": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n "nativeReceipt": { ... },\n "receipt": {\n "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n "index": 0,\n "logs": [\n {\n "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n "topics": [\n "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n ]\n },\n {\n "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n "topics": [\n "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n ]\n }\n ],\n "receipts": [ ... ],\n "revertReason": null,\n "status": "SUCCEEDED"\n },\n "request": { ... },\n "simulations": [ ... ]\n }\n}\n","title":"Successful transaction response","titles":["Transaction receipts"]},"440":{"href":"/solutions/wallets/embedded-wallet/examples/transaction-receipts#failed-transaction-response","html":"\n

An In-Game Wallet will try to catch any failing transactions before they are sent to the network. This is done by simulating the transaction on the network before sending it. If the simulation fails, the transaction will not be sent to the network and a FailedTransactionResponse will be returned.

\n

To view the full response object, see the wallet Response payloads section.

\n
import { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "arbitrum-nova",\n  }\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n  chainId: 137,\n  transactions: [\n    {\n      // This address always fails on Polygon, give it a try :D\n      to: "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n      value: "0",\n    },\n  ],\n});\n \nif (isSentTransactionResponse(tx)) {\n  // ... This will never be executed\n} else {\n  // tx can only be `SentTransactionResponse` or `FailedTransactionResponse`\n  console.log(tx);\n}
\n
{\n  "code": "transactionFailed",\n  "data": {\n    "error": "This is an error message",\n    "request": {\n      "code": "sendTransaction",\n      "expires": 1699443005,\n      "identifier": "ts-sdk-1699442705965-0x153824576D03629b264683B430bBF9AcEA1d0975",\n      "issued": 1699442705,\n      "network": "137",\n      "transactions": [\n        {\n          "data": "0x",\n          "to": "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n          "type": "transaction",\n          "value": "0x00"\n        }\n      ],\n      "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n    },\n    "simulations": [\n      {\n        "executed": true,\n        "gasLimit": 7908,\n        "gasUsed": 5931,\n        "reason": "This is an error message :)",\n        "result": null,\n        "succeeded": false\n      }\n    ]\n  }\n}
","isPage":false,"text":"\nAn In-Game Wallet will try to catch any failing transactions before they are sent to the network. This is done by simulating the transaction on the network before sending it. If the simulation fails, the transaction will not be sent to the network and a FailedTransactionResponse will be returned.\nTo view the full response object, see the wallet Response payloads section.\nimport { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "arbitrum-nova",\n }\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n chainId: 137,\n transactions: [\n {\n // This address always fails on Polygon, give it a try :D\n to: "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n value: "0",\n },\n ],\n});\n \nif (isSentTransactionResponse(tx)) {\n // ... This will never be executed\n} else {\n // tx can only be `SentTransactionResponse` or `FailedTransactionResponse`\n console.log(tx);\n}\n{\n "code": "transactionFailed",\n "data": {\n "error": "This is an error message",\n "request": {\n "code": "sendTransaction",\n "expires": 1699443005,\n "identifier": "ts-sdk-1699442705965-0x153824576D03629b264683B430bBF9AcEA1d0975",\n "issued": 1699442705,\n "network": "137",\n "transactions": [\n {\n "data": "0x",\n "to": "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n "type": "transaction",\n "value": "0x00"\n }\n ],\n "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n },\n "simulations": [\n {\n "executed": true,\n "gasLimit": 7908,\n "gasUsed": 5931,\n "reason": "This is an error message :)",\n "result": null,\n "succeeded": false\n }\n ]\n }\n}","title":"Failed transaction response","titles":["Transaction receipts"]},"441":{"href":"/solutions/wallets/embedded-wallet/examples/validation#validation","html":"\n

Users with Auth + Embedded Wallet go through two distinct flows based on the login method:

\n","isPage":true,"text":"\nUsers with Auth + Embedded Wallet go through two distinct flows based on the login method:\n","title":"Validation","titles":[]},"442":{"href":"/solutions/wallets/embedded-wallet/examples/validation#email-login-one-time-code","html":"\n

For users logging in with an email, Amazon Cognito sends a one-time code to validate their identity. This is a trusted method that does not require additional verification.

\n","isPage":false,"text":"\nFor users logging in with an email, Amazon Cognito sends a one-time code to validate their identity. This is a trusted method that does not require additional verification.\n","title":"Email login (one-time code)","titles":["Validation",null]},"443":{"href":"/solutions/wallets/embedded-wallet/examples/validation#social-login","html":"\n

Users who log in via established social auth providers like Google or Facebook don't need additional validation. However, when logging in using a custom provider, we cannot guarantee sufficient protection of user's identity. Due to this, we might require additional verification by asking the user to provide a one-time code we send to their email address.

\n

Please contact Sequence support if you wish to discuss whether your authentication provider can be considered trusted.

\n","isPage":false,"text":"\nUsers who log in via established social auth providers like Google or Facebook don't need additional validation. However, when logging in using a custom provider, we cannot guarantee sufficient protection of user's identity. Due to this, we might require additional verification by asking the user to provide a one-time code we send to their email address.\nPlease contact Sequence support if you wish to discuss whether your authentication provider can be considered trusted.\n","title":"Social login","titles":["Validation",null]},"444":{"href":"/solutions/wallets/embedded-wallet/examples/validation#validation-status","html":"\n

To check the validation status of the current session, use the isSessionValid method. This returns true for email login and trusted social logins and false for custom logins until email validation is complete.

\n
const isValid = await waas.isSessionValid();\nconsole.log(isValid);
\n
true
\n","isPage":false,"text":"\nTo check the validation status of the current session, use the isSessionValid method. This returns true for email login and trusted social logins and false for custom logins until email validation is complete.\nconst isValid = await waas.isSessionValid();\nconsole.log(isValid);\ntrue\n","title":"Validation status","titles":["Validation"]},"445":{"href":"/solutions/wallets/embedded-wallet/examples/validation#trigger-session-validation","html":"\n

Manually trigger a session validation with the validateSession method. This will send a code to the user's email. If validated within 10 minutes, the method returns true; otherwise, it returns false.

\n
const result = await waas.validateSession();
\n
true
\n

Once user receives the code, he can validate the session with the finishValidateSession method that takes the code as an argument. If the code is valid, the method returns true; otherwise, it returns false.

\n
const result = await waas.finishValidateSession("123456");
\n
true
\n","isPage":false,"text":"\nManually trigger a session validation with the validateSession method. This will send a code to the user's email. If validated within 10 minutes, the method returns true; otherwise, it returns false.\nconst result = await waas.validateSession();\ntrue\nOnce user receives the code, he can validate the session with the finishValidateSession method that takes the code as an argument. If the code is valid, the method returns true; otherwise, it returns false.\nconst result = await waas.finishValidateSession("123456");\ntrue\n","title":"Trigger session validation","titles":["Validation","Validation status"]},"446":{"href":"/solutions/wallets/embedded-wallet/examples/validation#onvalidationrequired-callback","html":"\n

The onValidationRequired callback is triggered when a session validation is required. This can happen when a user tries to perform an action that requires validation, such as sending a transaction or signing a message. It determines whether the session validation should be triggered or not. If the callback returns true, the session validation is triggered. If it returns false, the action is cancelled.

\n
const tx = await waas.sendERC20({\n  validation: {\n    onValidationRequired: () => true,\n  },\n  chainId: 42161,\n  token: "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI\n  to: "0x27CabC9700EE6Db2797b6AC1e1eCe81C72A2cD8D", // Recipient\n  value: "200000000000000000000", // 200 DAI\n});
\n","isPage":false,"text":"\nThe onValidationRequired callback is triggered when a session validation is required. This can happen when a user tries to perform an action that requires validation, such as sending a transaction or signing a message. It determines whether the session validation should be triggered or not. If the callback returns true, the session validation is triggered. If it returns false, the action is cancelled.\nconst tx = await waas.sendERC20({\n validation: {\n onValidationRequired: () => true,\n },\n chainId: 42161,\n token: "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI\n to: "0x27CabC9700EE6Db2797b6AC1e1eCe81C72A2cD8D", // Recipient\n value: "200000000000000000000", // 200 DAI\n});\n","title":"onValidationRequired callback","titles":["Validation","Validation status","Trigger session validation"]},"447":{"href":"/solutions/wallets/embedded-wallet/examples/validation#listen-for-session-validations","html":"\n

Events like transaction sends may silently prompt session validation. Use the onValidationRequired hook to catch such instances.

\n
waas.onValidationRequired(() => {\n  console.log("Session has been triggered for validation");\n});\n \nawait waas.sendTransaction({ chainId: 1 }, { to: "0x...", value: "1" });
\n
Session has been triggered for validation
\n","isPage":false,"text":"\nEvents like transaction sends may silently prompt session validation. Use the onValidationRequired hook to catch such instances.\nwaas.onValidationRequired(() => {\n console.log("Session has been triggered for validation");\n});\n \nawait waas.sendTransaction({ chainId: 1 }, { to: "0x...", value: "1" });\nSession has been triggered for validation\n","title":"Listen for session validations","titles":["Validation","Validation status"]},"448":{"href":"/solutions/wallets/embedded-wallet/examples/validation#automatic-session-validation","html":"\n

Session validation is automatic when certain actions requiring validation are performed. This can be managed using the onValidationRequired hook.

\n
const tx = await waas.sendTransaction({\n  chainId: 1,\n  validation: {\n    onValidationRequired: () => {\n      console.log("Session has been triggered for validation");\n      return true;\n    },\n  },\n  to: "0x061150e5574716DBb1a2cdf54b3DcE9F94395f65",\n  value: "1",\n});
\n

By returning true or false from the onValidationRequired hook, you either continue or cancel the action, respectively.

","isPage":false,"text":"\nSession validation is automatic when certain actions requiring validation are performed. This can be managed using the onValidationRequired hook.\nconst tx = await waas.sendTransaction({\n chainId: 1,\n validation: {\n onValidationRequired: () => {\n console.log("Session has been triggered for validation");\n return true;\n },\n },\n to: "0x061150e5574716DBb1a2cdf54b3DcE9F94395f65",\n value: "1",\n});\nBy returning true or false from the onValidationRequired hook, you either continue or cancel the action, respectively.","title":"Automatic session validation","titles":["Validation"]},"449":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#action-payloads","html":"\n

Every Sequence Embedded Wallet action that involves a write operation makes use of a payload. Payloads are JSON objects that contain all information about the intent of the action, alongside with the signature of the user that is performing the action.

\n

Payloads are generated with the Embedded Wallet SDK and should be sent to the Embedded Wallet API in order to complete the action.

\n\n","isPage":true,"text":"\nEvery Sequence Embedded Wallet action that involves a write operation makes use of a payload. Payloads are JSON objects that contain all information about the intent of the action, alongside with the signature of the user that is performing the action.\nPayloads are generated with the Embedded Wallet SDK and should be sent to the Embedded Wallet API in order to complete the action.\nCalls to the Embedded Wallet API are authenticated with the Embedded Wallet API key, including calls to the /sendPayload endpoint.The Embedded Wallet API key is a secret key that should be kept safe and should never be shared with anyone, nor stored in a client-side application.\n","title":"Action payloads","titles":[]},"450":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#payload-structure","html":"\n

It's important to notice that integrating Embedded Wallet does not require you to manually manipulate the contents of the payload; yet they are strictly defined, and you can use them if you need to.

\n

The payload structure is as follows:

\n
NameTypeDescriptionOptional
versionstringThe version of the SDK that generated the payloadNo
* packetobjectContents, defined by each payload typeNo
signaturessignature[]Payload signatures by existing sessionsYes
packet.codestringIdentifier of the payload typeNo
packet.issuednumberTimestamp of when the payload was issued, in secondsNo
packet.expiresnumberTimestamp of when the payload will expire, in secondsNo
\n

* packet must be organized such that its fields (in JSON structure) appear alphabetically by name.

\n
\n

The wallet is optional when openning a new session

\n
\n","isPage":false,"text":"\nIt's important to notice that integrating Embedded Wallet does not require you to manually manipulate the contents of the payload; yet they are strictly defined, and you can use them if you need to.\nThe payload structure is as follows:\nNameTypeDescriptionOptionalversionstringThe version of the SDK that generated the payloadNo* packetobjectContents, defined by each payload typeNosignaturessignature[]Payload signatures by existing sessionsYespacket.codestringIdentifier of the payload typeNopacket.issuednumberTimestamp of when the payload was issued, in secondsNopacket.expiresnumberTimestamp of when the payload will expire, in secondsNo\n* packet must be organized such that its fields (in JSON structure) appear alphabetically by name.\n\nThe wallet is optional when openning a new session\n\n","title":"Payload structure","titles":["Action payloads"]},"451":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#signature-type","html":"\n
NameTypeDescriptionOptional
sessionstringIdentifier of the signing sessionNo
* signaturestringSignature of the session for the given payloadNo
\n

* signature should be an EIP-191 signature. See https://eips.ethereum.org/EIPS/eip-191

\n
{\n  "version": "1.0.0",\n  "packet": {\n    "code": "signMessage",\n    "expires": 1600086400,\n    "issued": 1600000000,\n    "message": "Join game: #284892",\n    "network": "137",\n    "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8"\n  },\n  "signatures": [{\n    "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n    "signature": "0x4b0fc0c7d42566958d60f92115ab95167c837c891e2f4fa62a75bfed30d86af7291051fe5c88985269286548a42bed5b70bb16588e48998206a2e7a547f527d101"\n  }]\n}
\n","isPage":false,"text":"\nNameTypeDescriptionOptionalsessionstringIdentifier of the signing sessionNo* signaturestringSignature of the session for the given payloadNo\n* signature should be an EIP-191 signature. See https://eips.ethereum.org/EIPS/eip-191\n{\n "version": "1.0.0",\n "packet": {\n "code": "signMessage",\n "expires": 1600086400,\n "issued": 1600000000,\n "message": "Join game: #284892",\n "network": "137",\n "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8"\n },\n "signatures": [{\n "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n "signature": "0x4b0fc0c7d42566958d60f92115ab95167c837c891e2f4fa62a75bfed30d86af7291051fe5c88985269286548a42bed5b70bb16588e48998206a2e7a547f527d101"\n }]\n}\n","title":"signature type","titles":["Action payloads","Payload structure",null]},"452":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#open-session-payload","html":"\n

This payload is generated when openning a new client-side session on the Embedded Wallet SDK. It contains the "proof" that will be used to authenticate the user, and the session data to associate to it.

\n
NameTypeDescriptionOptional
codestringThe "code" of the payload (openSession).No
sessionstringThe unique identifier for the sessionNo
proofobjectContains authentication details like JWT and emailNo
proof.idTokenstringOAuth2 id tokenYes
proof.emailstringUser's email addressYes
\n

Notice that either idToken, email or a valid signature MUST be present. If email is provided, the Embedded Wallet will send an email on the user's first transaction with this session, asking them to confirm it.

\n\n
{\n  "version": "1.0.0",\n  "packet": {\n    "code": "openSession",\n    "expires": 1600086400,\n    "issued": 1600000000,\n    "proof": {\n      "idToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwOi8vbXktZG9tYWluLmF1dGgwLmNvbSIsInN1YiI6ImF1dGgwfDEyMzQ1NiIsImF1ZCI6IjEyMzRhYmNkZWYiLCJleHAiOjEzMTEyODE5NzAsImlhdCI6MTMxMTI4MDk3MCwibmFtZSI6IkphbmUgRG9lIiwiZ2l2ZW5fbmFtZSI6IkphbmUiLCJmYW1pbHlfbmFtZSI6IkRvZSJ9.bql-jxlG9B_bielkqOnjTY9Di9FillFb6IMQINXoYsw",\n      "email": "user@email.com"\n    },\n    "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696"\n  }\n}
\n","isPage":false,"text":"\nThis payload is generated when openning a new client-side session on the Embedded Wallet SDK. It contains the "proof" that will be used to authenticate the user, and the session data to associate to it.\nNameTypeDescriptionOptionalcodestringThe "code" of the payload (openSession).NosessionstringThe unique identifier for the sessionNoproofobjectContains authentication details like JWT and emailNoproof.idTokenstringOAuth2 id tokenYesproof.emailstringUser's email addressYes\nNotice that either idToken, email or a valid signature MUST be present. If email is provided, the Embedded Wallet will send an email on the user's first transaction with this session, asking them to confirm it.\nThe wallet parameter is optional ONLY for this payload. If passed it will enforce that the opened session matches the requested wallet.\n{\n "version": "1.0.0",\n "packet": {\n "code": "openSession",\n "expires": 1600086400,\n "issued": 1600000000,\n "proof": {\n "idToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwOi8vbXktZG9tYWluLmF1dGgwLmNvbSIsInN1YiI6ImF1dGgwfDEyMzQ1NiIsImF1ZCI6IjEyMzRhYmNkZWYiLCJleHAiOjEzMTEyODE5NzAsImlhdCI6MTMxMTI4MDk3MCwibmFtZSI6IkphbmUgRG9lIiwiZ2l2ZW5fbmFtZSI6IkphbmUiLCJmYW1pbHlfbmFtZSI6IkRvZSJ9.bql-jxlG9B_bielkqOnjTY9Di9FillFb6IMQINXoYsw",\n "email": "user@email.com"\n },\n "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696"\n }\n}\n","title":"Open session payload","titles":["Action payloads","Payload structure"]},"453":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#sign-message-payload","html":"\n

This payload is generated when signMessage is called on the SDK.

\n
NameTypeDescriptionOptional
codestringThe "code" of the payload (signMessage).No
walletstringAddress of the wallet.No
networkstringNetwork on which to send the transactions.No
messagestringMessage to be signed.No
\n
{\n  "version": "1.0.0",\n  "packet": {\n    "code": "signMessage",\n    "expires": 1600086400,\n    "issued": 1600000000,\n    "message": "Join game: #284892"\n    "network": "1",\n    "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8",\n  },\n  "signatures": [{\n    "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n    "signature": "0x4f9555c73908b6a5b61e0a744cb4e00fce7b20743d5799e4cb1774081bc6b2ec192c740e50f1adec84605636e09c9cdf4d2f6629f9ce64d8d0f3ae10305ef90400"\n  }]\n}
\n","isPage":false,"text":"\nThis payload is generated when signMessage is called on the SDK.\nNameTypeDescriptionOptionalcodestringThe "code" of the payload (signMessage).NowalletstringAddress of the wallet.NonetworkstringNetwork on which to send the transactions.NomessagestringMessage to be signed.No\n{\n "version": "1.0.0",\n "packet": {\n "code": "signMessage",\n "expires": 1600086400,\n "issued": 1600000000,\n "message": "Join game: #284892"\n "network": "1",\n "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8",\n },\n "signatures": [{\n "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n "signature": "0x4f9555c73908b6a5b61e0a744cb4e00fce7b20743d5799e4cb1774081bc6b2ec192c740e50f1adec84605636e09c9cdf4d2f6629f9ce64d8d0f3ae10305ef90400"\n }]\n}\n","title":"Sign message payload","titles":["Action payloads","Payload structure"]},"454":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#send-transaction-payload","html":"\n

This payload is generated when sendTransaction is called on the SDK.

\n
NameTypeDescriptionOptional
codestringThe "code" of the payload (sendTransaction).No
identifierstringUnique identifier for the transactionNo
walletstringAddress of the wallet.No
networkstringNetwork on which to send the transactions.No
transactions(transaction | erc20send | erc721send | erc1155send | delayedEncode)[]Array of transaction objects.No
\n","isPage":false,"text":"\nThis payload is generated when sendTransaction is called on the SDK.\nNameTypeDescriptionOptionalcodestringThe "code" of the payload (sendTransaction).NoidentifierstringUnique identifier for the transactionNowalletstringAddress of the wallet.NonetworkstringNetwork on which to send the transactions.Notransactions(transaction | erc20send | erc721send | erc1155send | delayedEncode)[]Array of transaction objects.No\n","title":"Send transaction payload","titles":["Action payloads","Payload structure"]},"455":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#raw-transaction","html":"\n
NameTypeDescriptionOptional
typestringTransaction type, should be "transaction"No
tostringThe recipient Ethereum addressNo
valuestringThe value to be transferredYes
datastringAdditional data for the transactionYes
\n

Notice that transactions with to === wallet are strictly forbidden, and will get rejected.

\n","isPage":false,"text":"\nNameTypeDescriptionOptionaltypestringTransaction type, should be "transaction"NotostringThe recipient Ethereum addressNovaluestringThe value to be transferredYesdatastringAdditional data for the transactionYes\nNotice that transactions with to === wallet are strictly forbidden, and will get rejected.\n","title":"Raw transaction","titles":["Action payloads","Payload structure","Send transaction payload"]},"456":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#senderc20","html":"\n
NameTypeDescriptionOptional
typestringTransaction type, should be "erc20send"No
tokenstringThe ERC20 token contract addressNo
tostringThe recipient Ethereum addressNo
valuestringAmount of tokens to sendNo
\n","isPage":false,"text":"\nNameTypeDescriptionOptionaltypestringTransaction type, should be "erc20send"NotokenstringThe ERC20 token contract addressNotostringThe recipient Ethereum addressNovaluestringAmount of tokens to sendNo\n","title":"sendERC20","titles":["Action payloads","Payload structure","Send transaction payload"]},"457":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#senderc721","html":"\n
NameTypeDescriptionOptional
typestringTransaction type, should be "erc721send"No
tokenstringThe ERC721 token contract addressNo
tostringThe recipient Ethereum addressNo
idstringToken ID to sendNo
safeboolWhether to use the safeTransferFrom functionYes
datastringAdditional data for the transactionYes
\n

Notice that data can only be used if safe === true.

\n","isPage":false,"text":"\nNameTypeDescriptionOptionaltypestringTransaction type, should be "erc721send"NotokenstringThe ERC721 token contract addressNotostringThe recipient Ethereum addressNoidstringToken ID to sendNosafeboolWhether to use the safeTransferFrom functionYesdatastringAdditional data for the transactionYes\nNotice that data can only be used if safe === true.\n","title":"sendERC721","titles":["Action payloads","Payload structure","Send transaction payload"]},"458":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#senderc1155","html":"\n
NameTypeDescriptionOptional
typestringTransaction type, should be "erc1155send"No
tokenstringThe ERC1155 token contract addressNo
tostringThe recipient Ethereum addressNo
valsobject[]Array of objects with id and amountNo
vals[].idstringThe ID of the tokenNo
vals[].amountstringAmount of tokens with this ID to sendNo
datastringAdditional data for the transactionYes
\n","isPage":false,"text":"\nNameTypeDescriptionOptionaltypestringTransaction type, should be "erc1155send"NotokenstringThe ERC1155 token contract addressNotostringThe recipient Ethereum addressNovalsobject[]Array of objects with id and amountNovals[].idstringThe ID of the tokenNovals[].amountstringAmount of tokens with this ID to sendNodatastringAdditional data for the transactionYes\n","title":"sendERC1155","titles":["Action payloads","Payload structure","Send transaction payload"]},"459":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#delayedencode","html":"\n

Delayed encode transactions have their payload data not encoded on the client, it instead is left to be encoded by the Embedded Wallet API. This reduces the burden on the client, and makes it easier to integrate in environments with limited libraries.

\n
TypeFieldData TypeDescription
DelayedEncodeDataabistringThe ABI (Application Binary Interface) for the contract.
funcstringThe function to call within the smart contract.
args(string | DelayedEncodeData)[] | { [key: string]: (string | DelayedEncodeData) }The arguments to pass to the function. Can be an array or an object.
DelayedEncodeSubpackettype'delayedEncode'The type of the subpacket, in this case, it's 'delayedEncode'.
tostringThe address to which the transaction is sent.
valuestringThe value being sent in the transaction, usually in Ether for Ethereum.
dataDelayedEncodeDataThe data payload, containing the ABI, function to call, and arguments.
\n

Hope this helps!

\n
{\n  "version": "1.0.0",\n  "packet": {\n    "code": "sendTransaction",\n    "expires": 1600086400,\n    "identifier": "tx-id1-1600000000",\n    "issued": 1600000000,\n    "network": "137",\n    "transactions": [\n      {\n        "data": "0x3251ba32",\n        "to": "0x479F6a5b0C1728947318714963a583C56A78366A",\n        "type": "transaction",\n        "value": "39381"\n      },\n      {\n        "to": "0x7b1Bd3474D789e18e2E329E2c53F819B6E687b4A",\n        "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",\n        "type": "erc20send",\n        "value": "1000"\n      },\n      {\n        "data": "0x112233",\n        "id": "7",\n        "safe": true,\n        "to": "0x17fFA2d95b58228e1ECb0C6Ac25A6EfD20BA08E4",\n        "token": "0xF87E31492Faf9A91B02Ee0dEAAd50d51d56D5d4d",\n        "type": "erc721send"\n      },\n      {\n        "data": "0x223344",\n        "to": "0x91E8aC543C5fEDf9F3Ef8b9dA1500dB84305681F",\n        "token": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n        "type": "erc1155send",\n        "vals": [{\n          "amount": "5",\n          "id": "2"\n        }, {\n          "amount": "1",\n          "id": "500"\n        }]\n      },\n\t\t\t{\n\t\t\t\t"data": {\n\t\t\t\t\t"abi": "[{\\"inputs\\":[{\\"internalType\\":\\"bytes32\\",\\"name\\":\\"_orderId\\",\\"type\\":\\"bytes32\\"},{\\"internalType\\":\\"uint256\\",\\"name\\":\\"_maxCost\\",\\"type\\":\\"uint256\\"},{\\"internalType\\":\\"address\\",\\"name\\":\\"_fees\\",\\"type\\":\\"address\\"},{\\"internalType\\":\\"bytes\\",\\"name\\":\\"_data\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"fillOrKillOrder\\",\\"outputs\\":[],\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"inputs\\":[],\\"name\\":\\"otherMethods\\",\\"outputs\\":[],\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"}]",\n\t\t\t\t\t"args": [\n\t\t\t\t\t\t"0x6bd55a2877890bd58871eefe886770a7734077a74981910a75d7b1f044b5bf28",\n\t\t\t\t\t\t"1000000000000000000",\n\t\t\t\t\t\t"[\\"0x095aE61E8207C7856eA273235D6BAdb69d815F5e\\", \\"0xC9D9B33231d24dd8cC53fDD64F7ABdd156f2a7E2\\"]",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t"abi": "notExpired(uint256,string)",\n\t\t\t\t\t\t\t"args": [\n\t\t\t\t\t\t\t\t"1600000000",\n\t\t\t\t\t\t\t\t"Nov 1st, 2020"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t"func": "notExpired"\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t"func": "fillOrKillOrder"\n\t\t\t\t},\n        "to": "0x140d72763D1ce39Ad4E2e73EC6e8FC53E5b73B64",\n\t\t\t\t"type": "delayedEncode",\n        "value": "0"\n\t\t\t}\n    ],\n    "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8"\n  },\n  "signatures": [{\n    "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n    "signature": "0x4f9555c73908b6a5b61e0a744cb4e00fce7b20743d5799e4cb1774081bc6b2ec192c740e50f1adec84605636e09c9cdf4d2f6629f9ce64d8d0f3ae10305ef90400"\n  }]\n}
\n","isPage":false,"text":"\nDelayed encode transactions have their payload data not encoded on the client, it instead is left to be encoded by the Embedded Wallet API. This reduces the burden on the client, and makes it easier to integrate in environments with limited libraries.\nTypeFieldData TypeDescriptionDelayedEncodeDataabistringThe ABI (Application Binary Interface) for the contract.funcstringThe function to call within the smart contract.args(string | DelayedEncodeData)[] | { [key: string]: (string | DelayedEncodeData) }The arguments to pass to the function. Can be an array or an object.DelayedEncodeSubpackettype'delayedEncode'The type of the subpacket, in this case, it's 'delayedEncode'.tostringThe address to which the transaction is sent.valuestringThe value being sent in the transaction, usually in Ether for Ethereum.dataDelayedEncodeDataThe data payload, containing the ABI, function to call, and arguments.\nHope this helps!\n{\n "version": "1.0.0",\n "packet": {\n "code": "sendTransaction",\n "expires": 1600086400,\n "identifier": "tx-id1-1600000000",\n "issued": 1600000000,\n "network": "137",\n "transactions": [\n {\n "data": "0x3251ba32",\n "to": "0x479F6a5b0C1728947318714963a583C56A78366A",\n "type": "transaction",\n "value": "39381"\n },\n {\n "to": "0x7b1Bd3474D789e18e2E329E2c53F819B6E687b4A",\n "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",\n "type": "erc20send",\n "value": "1000"\n },\n {\n "data": "0x112233",\n "id": "7",\n "safe": true,\n "to": "0x17fFA2d95b58228e1ECb0C6Ac25A6EfD20BA08E4",\n "token": "0xF87E31492Faf9A91B02Ee0dEAAd50d51d56D5d4d",\n "type": "erc721send"\n },\n {\n "data": "0x223344",\n "to": "0x91E8aC543C5fEDf9F3Ef8b9dA1500dB84305681F",\n "token": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n "type": "erc1155send",\n "vals": [{\n "amount": "5",\n "id": "2"\n }, {\n "amount": "1",\n "id": "500"\n }]\n },\n\t\t\t{\n\t\t\t\t"data": {\n\t\t\t\t\t"abi": "[{\\"inputs\\":[{\\"internalType\\":\\"bytes32\\",\\"name\\":\\"_orderId\\",\\"type\\":\\"bytes32\\"},{\\"internalType\\":\\"uint256\\",\\"name\\":\\"_maxCost\\",\\"type\\":\\"uint256\\"},{\\"internalType\\":\\"address\\",\\"name\\":\\"_fees\\",\\"type\\":\\"address\\"},{\\"internalType\\":\\"bytes\\",\\"name\\":\\"_data\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"fillOrKillOrder\\",\\"outputs\\":[],\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"inputs\\":[],\\"name\\":\\"otherMethods\\",\\"outputs\\":[],\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"}]",\n\t\t\t\t\t"args": [\n\t\t\t\t\t\t"0x6bd55a2877890bd58871eefe886770a7734077a74981910a75d7b1f044b5bf28",\n\t\t\t\t\t\t"1000000000000000000",\n\t\t\t\t\t\t"[\\"0x095aE61E8207C7856eA273235D6BAdb69d815F5e\\", \\"0xC9D9B33231d24dd8cC53fDD64F7ABdd156f2a7E2\\"]",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t"abi": "notExpired(uint256,string)",\n\t\t\t\t\t\t\t"args": [\n\t\t\t\t\t\t\t\t"1600000000",\n\t\t\t\t\t\t\t\t"Nov 1st, 2020"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t"func": "notExpired"\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t"func": "fillOrKillOrder"\n\t\t\t\t},\n "to": "0x140d72763D1ce39Ad4E2e73EC6e8FC53E5b73B64",\n\t\t\t\t"type": "delayedEncode",\n "value": "0"\n\t\t\t}\n ],\n "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8"\n },\n "signatures": [{\n "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n "signature": "0x4f9555c73908b6a5b61e0a744cb4e00fce7b20743d5799e4cb1774081bc6b2ec192c740e50f1adec84605636e09c9cdf4d2f6629f9ce64d8d0f3ae10305ef90400"\n }]\n}\n","title":"delayedEncode","titles":["Action payloads","Payload structure","Send transaction payload"]},"460":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#close-session-payload","html":"\n

This payload is generated when the client requests clossing a given session. Notice that the client MAY close the current session, or some other session.

\n
NameTypeDescriptionOptional
codestringThe "code" of the payload (closeSession).No
walletstringAddress of the wallet.No
sessionstringIdentifier for the session to be closedNo
\n
{\n  "version": "1.0.0",\n  "packet": {\n    "code": "closeSession",\n    "expires": 1600086400,\n    "issued": 1600000000,\n    "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n    "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8"\n  },\n  "signatures": [{\n    "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n    "signature": "0x4f9555c73908b6a5b61e0a744cb4e00fce7b20743d5799e4cb1774081bc6b2ec192c740e50f1adec84605636e09c9cdf4d2f6629f9ce64d8d0f3ae10305ef90400"\n  }]\n}
","isPage":false,"text":"\nThis payload is generated when the client requests clossing a given session. Notice that the client MAY close the current session, or some other session.\nNameTypeDescriptionOptionalcodestringThe "code" of the payload (closeSession).NowalletstringAddress of the wallet.NosessionstringIdentifier for the session to be closedNo\n{\n "version": "1.0.0",\n "packet": {\n "code": "closeSession",\n "expires": 1600086400,\n "issued": 1600000000,\n "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8"\n },\n "signatures": [{\n "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n "signature": "0x4f9555c73908b6a5b61e0a744cb4e00fce7b20743d5799e4cb1774081bc6b2ec192c740e50f1adec84605636e09c9cdf4d2f6629f9ce64d8d0f3ae10305ef90400"\n }]\n}","title":"Close session payload","titles":["Action payloads","Payload structure"]},"461":{"href":"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification#enclave-verification","html":"\n

The security of an WaaS enclave depends on being able to independently verify the integrity of the code that powers it.

\n

You have two options when it comes to verifying the integrity of a running enclave depending on your risk tolerance and technical means.

\n","isPage":true,"text":"\nThe security of an WaaS enclave depends on being able to independently verify the integrity of the code that powers it.\nYou have two options when it comes to verifying the integrity of a running enclave depending on your risk tolerance and technical means.\n","title":"Enclave verification","titles":[]},"462":{"href":"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification#the-easy-way","html":"\n","isPage":false,"text":"\n","title":"The easy way","titles":["Enclave verification"]},"463":{"href":"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification#prerequisites","html":"\n

The verification procedure will currently only work on Linux or macOS systems. Additionally, you need to have a recent versions of the following tools installed and configured locally:

\n\n","isPage":false,"text":"\nThe verification procedure will currently only work on Linux or macOS systems. Additionally, you need to have a recent versions of the following tools installed and configured locally:\n\nDocker\ngit\nmake\n\n","title":"Prerequisites","titles":["Enclave verification","The easy way"]},"464":{"href":"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification#find-out-the-pcr0","html":"\n

Open the following page in the browser or through curl: https://waas.sequence.app/status.

\n

Note the values of ver and pcr0 - these will be needed later.

\n

Sample output might look like:

\n
{\n  "healthOK": true,\n  "startTime": "2024-04-08T17:06:20.177514099Z",\n  "uptime": 167168,\n  "ver": "v1.1.1",\n  "pcr0": "77541a3d09cdf2728417c1537d190be0998cc84f8aec95a4f1e823c91a007d97f276c2453be7f653fd73fb862b42fcee"\n}
\n","isPage":false,"text":"\nOpen the following page in the browser or through curl: https://waas.sequence.app/status.\nNote the values of ver and pcr0 - these will be needed later.\nSample output might look like:\n{\n "healthOK": true,\n "startTime": "2024-04-08T17:06:20.177514099Z",\n "uptime": 167168,\n "ver": "v1.1.1",\n "pcr0": "77541a3d09cdf2728417c1537d190be0998cc84f8aec95a4f1e823c91a007d97f276c2453be7f653fd73fb862b42fcee"\n}\n","title":"Find out the PCR0","titles":["Enclave verification","The easy way"]},"465":{"href":"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification#build-the-enclave-file","html":"\n
    \n
  1. Clone the repository locally, substituting v1.1.1 with the value of ver from the previous step:
  2. \n
\n
git clone -b v1.1.1 https://github.com/0xsequence/waas-authenticator.git\ncd waas-authenticator
\n
    \n
  1. Run the following command, again substituting the version as before:
  2. \n
\n
make VERSION=v1.1.1 eif
\n
    \n
  1. Compare the output of the command with the previously noted PCR0 value, for example:
  2. \n
\n
Output written into /out/waas-auth.v1.1.1.eif\nBootMeasurement: Sha384 { ... }: {"HashAlgorithm": "Sha384 { ... }", "PCR0": "77541a3d09cdf2728417c1537d190be0998cc84f8aec95a4f1e823c91a007d97f276c2453be7f653fd73fb862b42fcee", "PCR1": "b7ada9ee8a3fa0a2c74c23ddd04a58f0b095d0465327b2d8461b9b81bcbc7236563ff0326c8614fe9205669636955199", "PCR2": "365294f408bcc5913b44110544bb611255d05666f89fd182900330bc117744fa563c2afcf74808b719ac7a29492099c6"}\nSHA256 checksum:\n3843b48b32b98fa311cbcd1604c0c6931f03c75075212e8bb4c06d02a3d53509  waas-auth.v1.1.1.eif
\n

Please note that the checksum might differ between runs as it's only used to verify the integrity of the file. However, the PCR0 for the same code will always be the same, as can be seen in the example above.

\n","isPage":false,"text":"\n\nClone the repository locally, substituting v1.1.1 with the value of ver from the previous step:\n\ngit clone -b v1.1.1 https://github.com/0xsequence/waas-authenticator.git\ncd waas-authenticator\n\nRun the following command, again substituting the version as before:\n\nmake VERSION=v1.1.1 eif\n\nCompare the output of the command with the previously noted PCR0 value, for example:\n\nOutput written into /out/waas-auth.v1.1.1.eif\nBootMeasurement: Sha384 { ... }: {"HashAlgorithm": "Sha384 { ... }", "PCR0": "77541a3d09cdf2728417c1537d190be0998cc84f8aec95a4f1e823c91a007d97f276c2453be7f653fd73fb862b42fcee", "PCR1": "b7ada9ee8a3fa0a2c74c23ddd04a58f0b095d0465327b2d8461b9b81bcbc7236563ff0326c8614fe9205669636955199", "PCR2": "365294f408bcc5913b44110544bb611255d05666f89fd182900330bc117744fa563c2afcf74808b719ac7a29492099c6"}\nSHA256 checksum:\n3843b48b32b98fa311cbcd1604c0c6931f03c75075212e8bb4c06d02a3d53509 waas-auth.v1.1.1.eif\nPlease note that the checksum might differ between runs as it's only used to verify the integrity of the file. However, the PCR0 for the same code will always be the same, as can be seen in the example above.\n","title":"Build the enclave file","titles":["Enclave verification","The easy way"]},"466":{"href":"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification#the-hard-way","html":"\n

The above lets us compare the PCR0 of the built enclave file with the "live" enclave. But it's not foolproof. You might notice that such a simple comparison of two values is not real proof. After all, the enclave might have been tampered with and what we see is make believe. Indeed, the PCR0 values for each release are publicly available.

\n

This is where cryptographic attestation comes in. While we haven't yet published tools that would do the validation, it can be performed using this great guide by AWS.

\n

Every enclave request returns the attestation document in a Base64-encoded format in the X-Attestation-Document response header. A request might optionally include a X-Attestation-Nonce header containing a value that will be signed and included in the attestation document as well.

\n

For example, you can get the attestation document by running:

\n
curl -si https://waas.sequence.app/health -H X-Attestation-Nonce:0123456789abcdef | grep x-attestation-document
","isPage":false,"text":"\nThe above lets us compare the PCR0 of the built enclave file with the "live" enclave. But it's not foolproof. You might notice that such a simple comparison of two values is not real proof. After all, the enclave might have been tampered with and what we see is make believe. Indeed, the PCR0 values for each release are publicly available.\nThis is where cryptographic attestation comes in. While we haven't yet published tools that would do the validation, it can be performed using this great guide by AWS.\nEvery enclave request returns the attestation document in a Base64-encoded format in the X-Attestation-Document response header. A request might optionally include a X-Attestation-Nonce header containing a value that will be signed and included in the attestation document as well.\nFor example, you can get the attestation document by running:\ncurl -si https://waas.sequence.app/health -H X-Attestation-Nonce:0123456789abcdef | grep x-attestation-document","title":"The hard way","titles":["Enclave verification"]},"467":{"href":"/solutions/wallets/embedded-wallet/implementation-details/intents#intents","html":"\n

All user interactions with their account, sessions and wallet are performed through actions called "intents." This page provides details on how they work internally. While it will further your understanding of the entire system as a whole, it is not required as the official SDKs handle all the complexity transparently.

\n","isPage":true,"text":"\nAll user interactions with their account, sessions and wallet are performed through actions called "intents." This page provides details on how they work internally. While it will further your understanding of the entire system as a whole, it is not required as the official SDKs handle all the complexity transparently.\n","title":"Intents","titles":[]},"468":{"href":"/solutions/wallets/embedded-wallet/implementation-details/intents#what-are-they","html":"\n

At a high level an intent is simply a JSON object specifying the action the user intents to perform and signed using their session key. For example, to sign a message, the client would send the following intent to the WaaS API:

\n
{\n    "version": "0.0.0",\n    "issuedAt": 1712775116,\n    "expiresAt": 1712775416,\n    "name": "signMessage",\n    "data": {\n      "wallet": "0x7B7D7BA79542584f9AeF539F6696c070a4e1Ced6",\n      "network": "1",\n      "message": "0x48656c6c6f2c20686176652061206e69636520646179"\n    },\n    "signatures": [\n      {\n        "sessionId": "0x01047de46debeeb83e1270b80ae65996ea64ad2c033e330cfffe9b725bf078423140124dce0cfe0cab9a61b385ca74fe77cd5e8a7147bfd87052f334cfbadc45c79a",\n        "signature": "0x28ec6ddcdbc0987a99dde19792ff0c9be69ad2be873fb9351353171b74d2df3380f0ffcae2b8cb37a0659e374859420500b4399a2aab0209ee7919aaea575ac7"\n      }\n    ]\n}
\n

Let's take a closer look at the intent anatomy, starting from the bottom.

\n","isPage":false,"text":"\nAt a high level an intent is simply a JSON object specifying the action the user intents to perform and signed using their session key. For example, to sign a message, the client would send the following intent to the WaaS API:\n{\n "version": "0.0.0",\n "issuedAt": 1712775116,\n "expiresAt": 1712775416,\n "name": "signMessage",\n "data": {\n "wallet": "0x7B7D7BA79542584f9AeF539F6696c070a4e1Ced6",\n "network": "1",\n "message": "0x48656c6c6f2c20686176652061206e69636520646179"\n },\n "signatures": [\n {\n "sessionId": "0x01047de46debeeb83e1270b80ae65996ea64ad2c033e330cfffe9b725bf078423140124dce0cfe0cab9a61b385ca74fe77cd5e8a7147bfd87052f334cfbadc45c79a",\n "signature": "0x28ec6ddcdbc0987a99dde19792ff0c9be69ad2be873fb9351353171b74d2df3380f0ffcae2b8cb37a0659e374859420500b4399a2aab0209ee7919aaea575ac7"\n }\n ]\n}\nLet's take a closer look at the intent anatomy, starting from the bottom.\n","title":"What are they?","titles":["Intents"]},"469":{"href":"/solutions/wallets/embedded-wallet/implementation-details/intents#signatures","html":"\n

Normally a single signature is specified, representing the user's session. A session here is nothing more but a locally created assymmetric key pair where the public key becomes part of the sessionId while the private key never leaves the device. As it gives anyone access to the user's wallet, it must be stored securely, in a secure on-device enclave whenever possible. The session must be registered with the WaaS API before use.

\n

The signature is an EIP-191 of the canonical representation of the intent (keys ordered alphabetically, without whitespace) JSON without the signatures field.

\n","isPage":false,"text":"\nNormally a single signature is specified, representing the user's session. A session here is nothing more but a locally created assymmetric key pair where the public key becomes part of the sessionId while the private key never leaves the device. As it gives anyone access to the user's wallet, it must be stored securely, in a secure on-device enclave whenever possible. The session must be registered with the WaaS API before use.\nThe signature is an EIP-191 of the canonical representation of the intent (keys ordered alphabetically, without whitespace) JSON without the signatures field.\n","title":"Signatures","titles":["Intents"]},"470":{"href":"/solutions/wallets/embedded-wallet/implementation-details/intents#name-and-data","html":"\n

These depend on the intent in question and will be different for each intent. The type of the intent and thus the data it contains is specified by the name.

\n","isPage":false,"text":"\nThese depend on the intent in question and will be different for each intent. The type of the intent and thus the data it contains is specified by the name.\n","title":"Name and data","titles":["Intents"]},"471":{"href":"/solutions/wallets/embedded-wallet/implementation-details/intents#timestamps","html":"\n

These are unix timestamps of when the intent becomes and stops being valid. They are validated by the API to ensure old intents cannot be reused again in the future.

","isPage":false,"text":"\nThese are unix timestamps of when the intent becomes and stops being valid. They are validated by the API to ensure old intents cannot be reused again in the future.","title":"Timestamps","titles":["Intents"]},"472":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#response-payloads","html":"\n

When interacting with the Sequence Embedded Wallet API, each intent payload will trigger a corresponding response payload. This could be either a successful response or a prompt for a different action.

\n","isPage":true,"text":"\nWhen interacting with the Sequence Embedded Wallet API, each intent payload will trigger a corresponding response payload. This could be either a successful response or a prompt for a different action.\n","title":"Response Payloads","titles":[]},"473":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#general-response-structure","html":"\n

Regardless of the specific response type, all responses have a standard structure with the following fields:

\n
NameTypeDescriptionOptional
codestringIdentifies the type of responseNo
dataobjectHolds content defined by response typeNo
\n","isPage":false,"text":"\nRegardless of the specific response type, all responses have a standard structure with the following fields:\nNameTypeDescriptionOptionalcodestringIdentifies the type of responseNodataobjectHolds content defined by response typeNo\n","title":"General Response Structure","titles":["Response Payloads"]},"474":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#types-of-responses","html":"\n","isPage":false,"text":"\n","title":"Types of Responses","titles":["Response Payloads"]},"475":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#transaction-receipt-response","html":"\n

Triggered upon successful execution of a send transaction intent. The code for this response is transactionReceipt.

\n

The data field contains:

\n
NameTypeDescriptionOptional
txHashstringTransaction hash of the Ethereum transactionNo
metaTxHashstringHash of the meta transactionNo
requestSendTransactionPayloadThe original request packet of the transactionNo
receiptMetaTxnReceiptReceipt of the meta transactionNo
nativeReceiptanyNative receipt of the Ethereum transactionYes
simulationsSimulateResult[]Array of simulation resultsYes
\n

MetaTxnReceipt:

\n
NameTypeDescriptionOptional
idstringUnique identifier for the receiptNo
statusstringStatus of the transactionNo
revertReasonstring | nullReason for transaction revert, if anyYes
indexnumberIndex number of the receiptNo
logsMetaTxnReceiptLog[]Array of logs for the meta transactionNo
receiptsMetaTxnReceipt[]Array of meta transaction receiptsNo
txnReceiptstringString representation of the transactionNo
\n

MetaTxnReceiptLog:

\n
NameTypeDescriptionOptional
addressstringThe address that generated the logNo
topicsstring[]List of topics associated with the logNo
datastringData sent with the logNo
blockNumbernumberThe block number where this log was emittedNo
transactionHashstringHash of the transaction that generated the logNo
transactionIndexnumberIndex of the transaction in the blockNo
blockHashstringHash of the block containing the logNo
logIndexnumberIndex of the log in the blockNo
removedbooleanWhether the log was removed due to a chain reorganizationNo
\n

SimulateResult:

\n
NameTypeDescriptionOptional
executedbooleanWhether the simulation was executedNo
succeededbooleanWhether the simulation succeededNo
resultstring | nullThe result of the simulationYes
reasonstring | nullReason for failure, if simulation failedYes
gasUsednumberAmount of gas used in the simulationNo
gasLimitnumberGas limit for the simulationNo
\n","isPage":false,"text":"\nTriggered upon successful execution of a send transaction intent. The code for this response is transactionReceipt.\nThe data field contains:\nNameTypeDescriptionOptionaltxHashstringTransaction hash of the Ethereum transactionNometaTxHashstringHash of the meta transactionNorequestSendTransactionPayloadThe original request packet of the transactionNoreceiptMetaTxnReceiptReceipt of the meta transactionNonativeReceiptanyNative receipt of the Ethereum transactionYessimulationsSimulateResult[]Array of simulation resultsYes\nMetaTxnReceipt:\nNameTypeDescriptionOptionalidstringUnique identifier for the receiptNostatusstringStatus of the transactionNorevertReasonstring | nullReason for transaction revert, if anyYesindexnumberIndex number of the receiptNologsMetaTxnReceiptLog[]Array of logs for the meta transactionNoreceiptsMetaTxnReceipt[]Array of meta transaction receiptsNotxnReceiptstringString representation of the transactionNo\nMetaTxnReceiptLog:\nNameTypeDescriptionOptionaladdressstringThe address that generated the logNotopicsstring[]List of topics associated with the logNodatastringData sent with the logNoblockNumbernumberThe block number where this log was emittedNotransactionHashstringHash of the transaction that generated the logNotransactionIndexnumberIndex of the transaction in the blockNoblockHashstringHash of the block containing the logNologIndexnumberIndex of the log in the blockNoremovedbooleanWhether the log was removed due to a chain reorganizationNo\nSimulateResult:\nNameTypeDescriptionOptionalexecutedbooleanWhether the simulation was executedNosucceededbooleanWhether the simulation succeededNoresultstring | nullThe result of the simulationYesreasonstring | nullReason for failure, if simulation failedYesgasUsednumberAmount of gas used in the simulationNogasLimitnumberGas limit for the simulationNo\n","title":"Transaction Receipt Response","titles":["Response Payloads","Types of Responses"]},"476":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#example","html":"\n
{\n  "code": "transactionReceipt",\n  "data": {\n    "txHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n    "metaTxHash": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n    "nativeReceipt": {\n      "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n      "blockNumber": "0x2f63834",\n      "contractAddress": "0x0000000000000000000000000000000000000000",\n      "cumulativeGasUsed": "0xdb374",\n      "gasUsed": "0x14a00",\n      "logs": [\n        {\n          "address": "0x4d4ee1b8583e31fe789eaf2e1b6e011c220c10b6",\n          "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n          "blockNumber": "0x2f63834",\n          "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n          "logIndex": "0x14",\n          "removed": false,\n          "topics": [\n            "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n          ],\n          "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n          "transactionIndex": "0x5"\n        },\n        {\n          "address": "0x4d4ee1b8583e31fe789eaf2e1b6e011c220c10b6",\n          "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n          "blockNumber": "0x2f63834",\n          "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n          "logIndex": "0x15",\n          "removed": false,\n          "topics": [\n            "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n            "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n          ],\n          "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n          "transactionIndex": "0x5"\n        },\n        {\n          "address": "0x0000000000000000000000000000000000001010",\n          "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n          "blockNumber": "0x2f63834",\n          "data": "0x000000000000000000000000000000000000000000000000001284e7c67266000000000000000000000000000000000000000000000000014c0fa753f2298415000000000000000000000000000000000000000000001386f7e2c243dcc978070000000000000000000000000000000000000000000000014bfd226c2bb71e15000000000000000000000000000000000000000000001386f7f5472ba33bde07",\n          "logIndex": "0x16",\n          "removed": false,\n          "topics": [\n            "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",\n            "0x0000000000000000000000000000000000000000000000000000000000001010",\n            "0x00000000000000000000000000e91788bcb998379027d36e6407a9187d7f313c",\n            "0x000000000000000000000000959c65b72147faf3450d8b50a0de57e72ffc5e0d"\n          ],\n          "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n          "transactionIndex": "0x5"\n        }\n      ],\n      "logsBloom": "0x00000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000008800000002000000000001004000000000000000000000000000000000800000000000000000000100000000400000000200400000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000002000000000000000000000000000000004000008000000000000001000000000000000000000000000000100000020000000000000000000000002000000020020002020040000000000000000040100000",\n      "root": "0x",\n      "status": "0x1",\n      "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n      "transactionIndex": "0x5"\n    },\n    "receipt": {\n      "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n      "index": 0,\n      "logs": [\n        {\n          "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n          "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n          "topics": [\n            "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n          ]\n        },\n        {\n          "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n          "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n          "topics": [\n            "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n            "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n          ]\n        }\n      ],\n      "receipts": [\n        {\n          "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n          "index": 0,\n          "logs": null,\n          "receipts": null,\n          "revertReason": null,\n          "status": "SUCCEEDED",\n          "txnReceipt": ""\n        }\n      ],\n      "revertReason": null,\n      "status": "SUCCEEDED"\n    },\n    "request": {\n      "code": "sendTransaction",\n      "expires": 1699440762,\n      "identifier": "ts-sdk-1699440462686-0x153824576D03629b264683B430bBF9AcEA1d0975",\n      "issued": 1699440462,\n      "network": "137",\n      "transactions": [\n        {\n          "data": "0x",\n          "to": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n          "type": "transaction",\n          "value": "0x00"\n        }\n      ],\n      "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n    },\n    "simulations": [\n      {\n        "executed": true,\n        "gasLimit": 1147,\n        "gasUsed": 860,\n        "reason": null,\n        "result": "0x",\n        "succeeded": true\n      }\n    ]\n  }\n}
\n","isPage":false,"text":"\n{\n "code": "transactionReceipt",\n "data": {\n "txHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n "metaTxHash": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n "nativeReceipt": {\n "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n "blockNumber": "0x2f63834",\n "contractAddress": "0x0000000000000000000000000000000000000000",\n "cumulativeGasUsed": "0xdb374",\n "gasUsed": "0x14a00",\n "logs": [\n {\n "address": "0x4d4ee1b8583e31fe789eaf2e1b6e011c220c10b6",\n "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n "blockNumber": "0x2f63834",\n "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n "logIndex": "0x14",\n "removed": false,\n "topics": [\n "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n ],\n "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n "transactionIndex": "0x5"\n },\n {\n "address": "0x4d4ee1b8583e31fe789eaf2e1b6e011c220c10b6",\n "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n "blockNumber": "0x2f63834",\n "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n "logIndex": "0x15",\n "removed": false,\n "topics": [\n "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n ],\n "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n "transactionIndex": "0x5"\n },\n {\n "address": "0x0000000000000000000000000000000000001010",\n "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n "blockNumber": "0x2f63834",\n "data": "0x000000000000000000000000000000000000000000000000001284e7c67266000000000000000000000000000000000000000000000000014c0fa753f2298415000000000000000000000000000000000000000000001386f7e2c243dcc978070000000000000000000000000000000000000000000000014bfd226c2bb71e15000000000000000000000000000000000000000000001386f7f5472ba33bde07",\n "logIndex": "0x16",\n "removed": false,\n "topics": [\n "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",\n "0x0000000000000000000000000000000000000000000000000000000000001010",\n "0x00000000000000000000000000e91788bcb998379027d36e6407a9187d7f313c",\n "0x000000000000000000000000959c65b72147faf3450d8b50a0de57e72ffc5e0d"\n ],\n "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n "transactionIndex": "0x5"\n }\n ],\n "logsBloom": "0x00000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000008800000002000000000001004000000000000000000000000000000000800000000000000000000100000000400000000200400000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000002000000000000000000000000000000004000008000000000000001000000000000000000000000000000100000020000000000000000000000002000000020020002020040000000000000000040100000",\n "root": "0x",\n "status": "0x1",\n "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n "transactionIndex": "0x5"\n },\n "receipt": {\n "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n "index": 0,\n "logs": [\n {\n "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n "topics": [\n "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n ]\n },\n {\n "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n "topics": [\n "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n ]\n }\n ],\n "receipts": [\n {\n "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n "index": 0,\n "logs": null,\n "receipts": null,\n "revertReason": null,\n "status": "SUCCEEDED",\n "txnReceipt": ""\n }\n ],\n "revertReason": null,\n "status": "SUCCEEDED"\n },\n "request": {\n "code": "sendTransaction",\n "expires": 1699440762,\n "identifier": "ts-sdk-1699440462686-0x153824576D03629b264683B430bBF9AcEA1d0975",\n "issued": 1699440462,\n "network": "137",\n "transactions": [\n {\n "data": "0x",\n "to": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n "type": "transaction",\n "value": "0x00"\n }\n ],\n "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n },\n "simulations": [\n {\n "executed": true,\n "gasLimit": 1147,\n "gasUsed": 860,\n "reason": null,\n "result": "0x",\n "succeeded": true\n }\n ]\n }\n}\n","title":"Example","titles":["Response Payloads","Types of Responses","Transaction Receipt Response"]},"477":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#how-to-detect","html":"\n
import { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isSentTransactionResponse(res)) {\n  // It's a transaction receipt\n}
\n","isPage":false,"text":"\nimport { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isSentTransactionResponse(res)) {\n // It's a transaction receipt\n}\n","title":"How to Detect","titles":["Response Payloads","Types of Responses","Transaction Receipt Response"]},"478":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#failed-transaction-response","html":"\n

Triggered upon failed to execute a send transaction intent. The code for this response is transactionFailed.

\n

The data field contains:

\n
FieldTypeDescription
errorstringThe error message describing why the transaction failed.
requestSendTransactionPayloadThe packet of transactions that were attempted.
simulationsSimulateResult[]Results from the transaction simulation attempts.
\n

SimulateResult:

\n
NameTypeDescriptionOptional
executedbooleanWhether the simulation was executedNo
succeededbooleanWhether the simulation succeededNo
resultstring | nullThe result of the simulationYes
reasonstring | nullReason for failure, if simulation failedYes
gasUsednumberAmount of gas used in the simulationNo
gasLimitnumberGas limit for the simulationNo
\n
{\n  "code": "transactionFailed",\n  "data": {\n    "error": "This is an error message",\n    "request": {\n      "code": "sendTransaction",\n      "expires": 1699443005,\n      "identifier": "ts-sdk-1699442705965-0x153824576D03629b264683B430bBF9AcEA1d0975",\n      "issued": 1699442705,\n      "network": "137",\n      "transactions": [\n        {\n          "data": "0x",\n          "to": "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n          "type": "transaction",\n          "value": "0x00"\n        }\n      ],\n      "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n    },\n    "simulations": [\n      {\n        "executed": true,\n        "gasLimit": 7908,\n        "gasUsed": 5931,\n        "reason": "This is an error message",\n        "result": null,\n        "succeeded": false\n      }\n    ]\n  }\n}
\n","isPage":false,"text":"\nTriggered upon failed to execute a send transaction intent. The code for this response is transactionFailed.\nThe data field contains:\nFieldTypeDescriptionerrorstringThe error message describing why the transaction failed.requestSendTransactionPayloadThe packet of transactions that were attempted.simulationsSimulateResult[]Results from the transaction simulation attempts.\nSimulateResult:\nNameTypeDescriptionOptionalexecutedbooleanWhether the simulation was executedNosucceededbooleanWhether the simulation succeededNoresultstring | nullThe result of the simulationYesreasonstring | nullReason for failure, if simulation failedYesgasUsednumberAmount of gas used in the simulationNogasLimitnumberGas limit for the simulationNo\n{\n "code": "transactionFailed",\n "data": {\n "error": "This is an error message",\n "request": {\n "code": "sendTransaction",\n "expires": 1699443005,\n "identifier": "ts-sdk-1699442705965-0x153824576D03629b264683B430bBF9AcEA1d0975",\n "issued": 1699442705,\n "network": "137",\n "transactions": [\n {\n "data": "0x",\n "to": "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n "type": "transaction",\n "value": "0x00"\n }\n ],\n "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n },\n "simulations": [\n {\n "executed": true,\n "gasLimit": 7908,\n "gasUsed": 5931,\n "reason": "This is an error message",\n "result": null,\n "succeeded": false\n }\n ]\n }\n}\n","title":"Failed Transaction Response","titles":["Response Payloads","Types of Responses"]},"479":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#how-to-detect-1","html":"\n
import { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isFailedTransactionResponse(res)) {\n  // It's a failed transaction\n}
\n","isPage":false,"text":"\nimport { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isFailedTransactionResponse(res)) {\n // It's a failed transaction\n}\n","title":"How to Detect","titles":["Response Payloads","Types of Responses","Failed Transaction Response"]},"480":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#signed-message-response","html":"\n

Triggered after a successful sign message intent. The code is signedMessage.

\n

The data field contains:

\n
NameTypeDescriptionOptional
messagestringThe signed messageNo
signaturestringThe signatureNo
\n","isPage":false,"text":"\nTriggered after a successful sign message intent. The code is signedMessage.\nThe data field contains:\nNameTypeDescriptionOptionalmessagestringThe signed messageNosignaturestringThe signatureNo\n","title":"Signed Message Response","titles":["Response Payloads","Types of Responses"]},"481":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#example-1","html":"\n
{\n  "code": "signedMessage",\n  "data": {\n    "message": "Hello World",\n    "signature": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"\n  }\n}
\n","isPage":false,"text":"\n{\n "code": "signedMessage",\n "data": {\n "message": "Hello World",\n "signature": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"\n }\n}\n","title":"Example","titles":["Response Payloads","Types of Responses","Signed Message Response"]},"482":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#how-to-detect-2","html":"\n
import { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isSignedMessageResponse(res)) {\n  // It's a signed message\n}
\n","isPage":false,"text":"\nimport { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isSignedMessageResponse(res)) {\n // It's a signed message\n}\n","title":"How to Detect","titles":["Response Payloads","Types of Responses","Signed Message Response"]},"483":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#session-opened-response","html":"\n

Occurs after successfully executing an open session intent. The code is sessionOpened.

\n

The data field contains:

\n
NameTypeDescriptionOptional
sessionIdstringSession ID (resembling an address)No
walletstringThe Sequence wallet addressNo
\n","isPage":false,"text":"\nOccurs after successfully executing an open session intent. The code is sessionOpened.\nThe data field contains:\nNameTypeDescriptionOptionalsessionIdstringSession ID (resembling an address)NowalletstringThe Sequence wallet addressNo\n","title":"Session Opened Response","titles":["Response Payloads","Types of Responses"]},"484":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#example-2","html":"\n
{\n  "code": "sessionOpened",\n  "data": {\n    "sessionId": "0xBdeAfd3ee0550a73f615D2BaEA2E3D6d48FC857D",\n    "wallet": "0x44c2Ea42Fb006a613a7b41D142576eD6B5055902"\n  }\n}
\n","isPage":false,"text":"\n{\n "code": "sessionOpened",\n "data": {\n "sessionId": "0xBdeAfd3ee0550a73f615D2BaEA2E3D6d48FC857D",\n "wallet": "0x44c2Ea42Fb006a613a7b41D142576eD6B5055902"\n }\n}\n","title":"Example","titles":["Response Payloads","Types of Responses","Session Opened Response"]},"485":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#how-to-detect-3","html":"\n
import { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isOpenSessionResponse(res)) {\n  // It's a session opened\n}
\n","isPage":false,"text":"\nimport { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isOpenSessionResponse(res)) {\n // It's a session opened\n}\n","title":"How to Detect","titles":["Response Payloads","Types of Responses","Session Opened Response"]},"486":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#validation-required-response","html":"\n

Some actions may necessitate additional validation. In such cases, the response code is validationRequired.

\n

The data field contains:

\n
NameTypeDescriptionOptional
sessionIdstringSession ID (resembling an address)No
\n","isPage":false,"text":"\nSome actions may necessitate additional validation. In such cases, the response code is validationRequired.\nThe data field contains:\nNameTypeDescriptionOptionalsessionIdstringSession ID (resembling an address)No\n","title":"Validation Required Response","titles":["Response Payloads","Types of Responses"]},"487":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#how-to-detect-4","html":"\n
import { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isValidationRequiredResponse(res)) {\n  // Validation is required\n}
\n","isPage":false,"text":"\nimport { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isValidationRequiredResponse(res)) {\n // Validation is required\n}\n","title":"How to Detect","titles":["Response Payloads","Types of Responses","Validation Required Response"]},"488":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#note","html":"\n

Both sendTransaction and signMessage intents could require validation. Always check for a validationRequired response before assuming you've received a transaction receipt or a signed message.

\n
import { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isValidationRequiredResponse(res)) {\n  // Handle validation\n}\n \nif (payloads.responses.isSendTransactionResponse(res)) {\n  // It's a transaction receipt\n}
","isPage":false,"text":"\nBoth sendTransaction and signMessage intents could require validation. Always check for a validationRequired response before assuming you've received a transaction receipt or a signed message.\nimport { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isValidationRequiredResponse(res)) {\n // Handle validation\n}\n \nif (payloads.responses.isSendTransactionResponse(res)) {\n // It's a transaction receipt\n}","title":"Note","titles":["Response Payloads","Types of Responses"]},"489":{"href":"/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow#trust-contract-recovery-flow","html":"\n

Sequence WaaS accounts are protected by a disaster recovery mechanism contract called Trust. This document outlines the working mechanism behind the Trust contract, as well as the recovery flow to be triggered during a disaster scenario.

\n","isPage":true,"text":"\nSequence WaaS accounts are protected by a disaster recovery mechanism contract called Trust. This document outlines the working mechanism behind the Trust contract, as well as the recovery flow to be triggered during a disaster scenario.\n","title":"Trust Contract Recovery Flow","titles":[]},"490":{"href":"/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow#trust-contract-architecture","html":"\n

Trust is essentially a time lock contract. For every configured WaaS tenant project, there are two Trust contract instances deployed. One instance is controlled by the recovery wallet of the project. The other instance is controlled by the Sequence recovery wallet. In their default state, Trust contracts are in locked status. While locked, neither party can access WaaS accounts created under the tenant configuration.

\n

The only way for a Trust contract to be unlocked is for one of the controlling parties to call the setUnlocksAt method on the Trust contract instance controlled by the other party. When this method is called, Trust contract instance goes into countdown state, beginning an enforced 90-day countdown. Since the countdown state is on-chain, it's publicly available for either party to observe.

\n

Once the countdown is over, the party that called setUnlocksAt gains control over the Trust instance of the counterparty. Having control over both instances, they can recover all accounts created with the WaaS tenant configuration.

\n","isPage":false,"text":"\nTrust is essentially a time lock contract. For every configured WaaS tenant project, there are two Trust contract instances deployed. One instance is controlled by the recovery wallet of the project. The other instance is controlled by the Sequence recovery wallet. In their default state, Trust contracts are in locked status. While locked, neither party can access WaaS accounts created under the tenant configuration.\nThe only way for a Trust contract to be unlocked is for one of the controlling parties to call the setUnlocksAt method on the Trust contract instance controlled by the other party. When this method is called, Trust contract instance goes into countdown state, beginning an enforced 90-day countdown. Since the countdown state is on-chain, it's publicly available for either party to observe.\nOnce the countdown is over, the party that called setUnlocksAt gains control over the Trust instance of the counterparty. Having control over both instances, they can recover all accounts created with the WaaS tenant configuration.\n","title":"Trust Contract Architecture","titles":["Trust Contract Recovery Flow"]},"491":{"href":"/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow#unlock-state-monitoring","html":"\n

Sequence provides unlock state monitoring for all deployed Trust contract instances. This service runs under the existing Sequence WaaS implementation deployed on AWS Nitro Secure Enclave instances. Monitoring system checks every Trust contract instance and notifies both Sequence team and the project owner when an unlock state is detected on a deployed contract. This ensures that neither party can call setUnlocksAt on another party's contract without notifying them.

\n","isPage":false,"text":"\nSequence provides unlock state monitoring for all deployed Trust contract instances. This service runs under the existing Sequence WaaS implementation deployed on AWS Nitro Secure Enclave instances. Monitoring system checks every Trust contract instance and notifies both Sequence team and the project owner when an unlock state is detected on a deployed contract. This ensures that neither party can call setUnlocksAt on another party's contract without notifying them.\n","title":"Unlock State Monitoring","titles":["Trust Contract Recovery Flow"]},"492":{"href":"/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow#disaster-recovery-flow","html":"\n

Trust contracts are deployed to recover accounts in the unlikely case that one of the parties disappears and accounts created with the WaaS configuration are inaccessible. In such a case, the counterparty can initiate the recovery flow by calling the setUnlocksAt method on the other party's Trust contract instance. This will automatically trigger unlock notifications for both parties until the countdown period is over. Once the 90-day countdown period concludes, accounts created as well as the tokens held in the accounts can be recovered.

","isPage":false,"text":"\nTrust contracts are deployed to recover accounts in the unlikely case that one of the parties disappears and accounts created with the WaaS configuration are inaccessible. In such a case, the counterparty can initiate the recovery flow by calling the setUnlocksAt method on the other party's Trust contract instance. This will automatically trigger unlock notifications for both parties until the countdown period is over. Once the 90-day countdown period concludes, accounts created as well as the tokens held in the accounts can be recovered.","title":"Disaster Recovery Flow","titles":["Trust Contract Recovery Flow"]},"493":{"href":"/solutions/wallets/universal-wallet/examples/auth-address#authenticate-users-with-message-signature","html":"\n","isPage":true,"text":"\n","title":"Authenticate Users with Message Signature","titles":[]},"494":{"href":"/solutions/wallets/universal-wallet/examples/auth-address#ask-for-the-wallet-address","html":"\n

To get the user's Sequence wallet address:

\n
const wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)
\n","isPage":false,"text":"\nTo get the user's Sequence wallet address:\nconst wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)\n","title":"Ask for the wallet address","titles":["Authenticate Users with Message Signature"]},"495":{"href":"/solutions/wallets/universal-wallet/examples/auth-address#authenticate-wallet","html":"\n

In many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.

\n

As this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.

\n
import { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n  app: 'Your Dapp name',\n  authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})
\n

It will look like this to your users:

\n\"Sequence\n

In the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.

\n

You can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.

\n","isPage":false,"text":"\nIn many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.\nAs this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.\nimport { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n app: 'Your Dapp name',\n authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})\nIt will look like this to your users:\n\nIn the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.\nYou can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.\n","title":"Authenticate wallet","titles":["Authenticate Users with Message Signature"]},"496":{"href":"/solutions/wallets/universal-wallet/examples/auth-address#authenticate-wallet-server-side","html":"\n

The above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:

\n
import { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n  () => new commons.reader.OnChainReader(provider),\n  new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n  v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n  const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n  console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n  console.log(`invalid proof -- do not trust address: ${err}`)\n}
\n

See the Go Sequence SDK on using Sequence in your Go applications.

\n

If your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.

\n

As always, if you have any questions or require help, reach out to us on Discord.

","isPage":false,"text":"\nThe above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:\nimport { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n () => new commons.reader.OnChainReader(provider),\n new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n console.log(`invalid proof -- do not trust address: ${err}`)\n}\nSee the Go Sequence SDK on using Sequence in your Go applications.\nIf your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.\nAs always, if you have any questions or require help, reach out to us on Discord.","title":"Authenticate wallet server-side","titles":["Authenticate Users with Message Signature"]},"497":{"href":"/solutions/wallets/universal-wallet/examples/building-backends#building-backends-with-sequence","html":"\n","isPage":true,"text":"\n","title":"Building Backends with Sequence","titles":[]},"498":{"href":"/solutions/wallets/universal-wallet/examples/building-backends#nodejs","html":"\n

The 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.

\n","isPage":false,"text":"\nThe 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.\n","title":"nodejs","titles":["Building Backends with Sequence",null]},"499":{"href":"/solutions/wallets/universal-wallet/examples/building-backends#go","html":"\n

A complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.

\n

go-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.

\n","isPage":false,"text":"\nA complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.\ngo-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.\n","title":"Go","titles":["Building Backends with Sequence",null]},"500":{"href":"/solutions/wallets/universal-wallet/examples/building-backends#ethkit","html":"\n

As part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.

\n","isPage":false,"text":"\nAs part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.\n","title":"ethkit","titles":["Building Backends with Sequence",null]},"501":{"href":"/solutions/wallets/universal-wallet/examples/building-backends#support-for-other-backend-languages","html":"\n

If your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.

\n

If your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.

\n

If you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.

","isPage":false,"text":"\nIf your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.\nIf your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.\nIf you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.","title":"Support for other backend languages","titles":["Building Backends with Sequence",null]},"502":{"href":"/solutions/wallets/universal-wallet/examples/send-batch-transactions#sending-a-batch-of-transactions","html":"\n

Likewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:

\n
const transaction1 = {\n  to: recipient1Address,\n  value: 1000000000000000000\n}\n \nconst transaction2 = {\n  to: recipient2Address,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)
\n

The transactions don't have to be the same token or even token standard either.\nYou can mix and match:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n  { to: recipient1Address, value: '1000000000000000000' },\n  { to: daiContractAddress, data: erc20Data },\n  { to: erc721ContractAddress, data: erc721Data },\n  { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)
","isPage":true,"text":"\nLikewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:\nconst transaction1 = {\n to: recipient1Address,\n value: 1000000000000000000\n}\n \nconst transaction2 = {\n to: recipient2Address,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)\nThe transactions don't have to be the same token or even token standard either.\nYou can mix and match:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n { to: recipient1Address, value: '1000000000000000000' },\n { to: daiContractAddress, data: erc20Data },\n { to: erc721ContractAddress, data: erc721Data },\n { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)","title":"Sending a Batch of Transactions","titles":[]},"503":{"href":"/solutions/wallets/universal-wallet/examples/send-erc1155#sending-erc-1155-collectible-tokens","html":"\n

Sending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n  to: erc1155TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n  to: erc1155ContractAddress,\n  data: data1\n}\nconst transaction2 = {\n  to: erc1155ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n to: erc1155TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n to: erc1155ContractAddress,\n data: data1\n}\nconst transaction2 = {\n to: erc1155ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-1155 (Collectible) Tokens","titles":[]},"504":{"href":"/solutions/wallets/universal-wallet/examples/send-erc20#sending-erc-20-tokens","html":"\n

You can ask the wallet to send a single ERC-20 token transfer:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n  'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n  to: daiContractAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: daiContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: daiContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nYou can ask the wallet to send a single ERC-20 token transfer:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n 'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n to: daiContractAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: daiContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: daiContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-20 Tokens","titles":[]},"505":{"href":"/solutions/wallets/universal-wallet/examples/send-erc721#sending-erc-721-nft-tokens","html":"\n

Sending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n  to: erc721TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: erc721ContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: erc721ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n to: erc721TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: erc721ContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: erc721ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-721 (NFT) Tokens","titles":[]},"506":{"href":"/solutions/wallets/universal-wallet/examples/send-transaction#sending-transactions","html":"\n

Signing a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):

\n
const transaction = {\n  to: recipientAddress,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSigning a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):\nconst transaction = {\n to: recipientAddress,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n ","title":"Sending Transactions","titles":[]},"507":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#no-wallet-confirmation-signatures","html":"\n

It is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.

\n
","isPage":true,"text":"\nIt is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.\n","title":"No-Wallet-Confirmation Signatures","titles":[]},"508":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#session-keys","html":"
\n

Session keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.

\n

By signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.

\n

Session keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.

\n
","isPage":false,"text":"\nSession keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.\nBy signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.\nSession keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.\n","title":"Session Keys","titles":[]},"509":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#using-session-keys-with-sequence","html":"
\n","isPage":false,"text":"\n","title":"Using Session keys with Sequence","titles":[]},"510":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#1-initialize-sequence-wallet-and-connect","html":"\n
import { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()
\n","isPage":false,"text":"\nimport { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()\n","title":"1. Initialize Sequence Wallet and Connect","titles":["Using Session keys with Sequence",null]},"511":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#2-generate-a-session-key","html":"\n

Create a new ephemeral private key, store it in local storage, and derive the associated address:

\n
const sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()
\n","isPage":false,"text":"\nCreate a new ephemeral private key, store it in local storage, and derive the associated address:\nconst sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()\n","title":"2. Generate a Session Key","titles":["Using Session keys with Sequence",null]},"512":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#3-sign-authorization-message","html":"\n

Sign a message with the user's Sequence Wallet to authorize the session key:

\n
const authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)
\n","isPage":false,"text":"\nSign a message with the user's Sequence Wallet to authorize the session key:\nconst authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)\n","title":"3. Sign Authorization Message","titles":["Using Session keys with Sequence",null]},"513":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#4-verify-authorization-signature","html":"\n

Verify the signature on the server or client side using Sequence utility functions:

\n
const provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n  userAddress,\n  authorizationMessage,\n  signature,\n  chainId\n)\n \nif (isValid) {\n  console.log('Session key authorized')\n} else {\n  console.log('Session key not authorized')\n}
\n","isPage":false,"text":"\nVerify the signature on the server or client side using Sequence utility functions:\nconst provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n userAddress,\n authorizationMessage,\n signature,\n chainId\n)\n \nif (isValid) {\n console.log('Session key authorized')\n} else {\n console.log('Session key not authorized')\n}\n","title":"4. Verify Authorization Signature","titles":["Using Session keys with Sequence",null]},"514":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#5-sign-message-with-session-key","html":"\n

Use the session key to sign a message client-side without user interaction:

\n
const message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)
\n","isPage":false,"text":"\nUse the session key to sign a message client-side without user interaction:\nconst message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)\n","title":"5. Sign Message with Session Key","titles":["Using Session keys with Sequence",null]},"515":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#6-verify-session-signature","html":"\n

Verify the session signature on the server or client side:

\n
const recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n  console.log('Session signature valid')\n} else {\n  console.log('Session signature invalid')\n}
\n

Note: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.

","isPage":false,"text":"\nVerify the session signature on the server or client side:\nconst recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n console.log('Session signature valid')\n} else {\n console.log('Session signature invalid')\n}\nNote: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.","title":"6. Verify Session Signature","titles":["Using Session keys with Sequence",null]}},"dirtCount":0,"index":[["zero",{"0":{"402":1,"403":1},"2":{"398":4,"402":1,"403":1,"404":2}}],["zellic",{"0":{"383":1}}],["zimbabwe",{"2":{"13":1}}],["^5",{"2":{"267":1,"375":1}}],["^1",{"2":{"267":1,"375":1}}],["🖼️",{"2":{"91":1,"203":1,"378":1}}],["👛",{"2":{"91":1,"203":1,"378":1}}],["🔐🪪",{"2":{"91":1,"203":1,"378":1}}],["⛓️",{"2":{"91":1,"203":1,"378":1}}],["🪙",{"2":{"91":1,"203":1,"378":1}}],["🦊",{"2":{"91":1,"203":1,"378":1}}],["🧰",{"2":{"90":1,"202":1,"377":1}}],["77541a3d09cdf2728417c1537d190be0998cc84f8aec95a4f1e823c91a007d97f276c2453be7f653fd73fb862b42fcee",{"2":{"464":1,"465":1}}],["7908",{"2":{"440":1,"478":1}}],["712",{"0":{"410":1},"2":{"410":1}}],["75ce91ec2bcf",{"2":{"180":3}}],["7f1",{"2":{"99":2}}],["7",{"0":{"330":1},"2":{"84":3,"267":1,"268":1,"375":1,"376":1,"459":1}}],["721",{"0":{"177":1,"272":1,"505":1},"2":{"22":1,"43":1,"272":2,"505":2}}],["5931",{"2":{"440":1,"478":1}}],["500",{"2":{"459":1}}],["50",{"2":{"436":3}}],["5",{"0":{"281":1,"328":1,"514":1},"2":{"84":3,"117":1,"141":1,"165":2,"198":1,"211":1,"268":1,"339":1,"376":1,"415":2,"416":3,"459":1}}],["❤️",{"2":{"82":1}}],["`failedtransactionresponse`",{"2":{"440":1}}],["`senttransactionresponse`",{"2":{"440":1}}],["`sequenceconfig`",{"2":{"99":2}}],["`wallet",{"2":{"435":1}}],["`walletproxybytecode`",{"2":{"420":1}}],["`mainmodule`",{"2":{"420":1}}],["`authorize",{"2":{"279":1,"512":1}}],["`invalid",{"2":{"237":1,"496":1}}],["`proof",{"2":{"237":1,"496":1}}],["`",{"2":{"59":2,"128":6,"131":4,"133":4,"237":1,"279":1,"361":2,"433":2,"434":2,"435":3,"436":2,"437":2,"439":2,"440":2,"496":1,"512":1}}],["`$",{"2":{"59":2,"361":2,"433":2,"434":2,"435":2,"436":2,"437":2,"439":2,"440":2}}],["$",{"2":{"52":1,"237":2,"435":1,"496":2}}],["||",{"2":{"51":1}}],["|",{"2":{"51":4,"52":1,"185":1,"427":1,"430":1,"454":4,"459":3,"466":1,"475":3,"478":2}}],["+=",{"2":{"101":1,"102":2,"111":1,"117":2}}],["+",{"2":{"50":1,"104":1,"106":1,"133":1,"145":1,"169":1,"192":3,"201":2,"205":2,"214":2,"215":2,"221":1,"231":1,"233":1,"243":1,"264":1,"302":1,"332":1,"367":1,"409":2,"416":4,"432":2,"441":1}}],["+1",{"2":{"44":2}}],["860",{"2":{"476":1}}],["815189234z",{"2":{"436":1}}],["815189174z",{"2":{"436":1}}],["819722082z",{"2":{"436":1}}],["8545",{"2":{"390":1}}],["8319",{"2":{"180":3}}],["8",{"0":{"331":1},"2":{"44":1,"99":2}}],["0123456789abcdef",{"2":{"466":1}}],["06",{"2":{"464":1}}],["08t17",{"2":{"464":1}}],["04",{"2":{"464":1}}],["09t18",{"2":{"436":2}}],["03",{"2":{"436":3}}],["02t18",{"2":{"436":4}}],["0a1",{"2":{"99":1}}],["0b3",{"2":{"99":1}}],["0",{"0":{"200":1,"212":1},"2":{"43":1,"52":3,"99":2,"104":1,"107":3,"115":1,"125":2,"140":3,"155":1,"185":1,"200":3,"206":2,"212":3,"267":3,"339":1,"352":1,"375":3,"390":1,"403":1,"406":1,"411":1,"424":1,"429":1,"437":1,"439":2,"440":1,"451":2,"452":2,"453":2,"459":3,"460":2,"468":3,"476":2}}],["0x91e8ac543c5fedf9f3ef8b9da1500db84305681f",{"2":{"459":1}}],["0x9766bf76b2e3e7bcb8c61410a3fc873f1e89b43f",{"2":{"118":2}}],["0x3251ba32",{"2":{"459":1}}],["0x3c4e11e4dbf23b87c14bd75d0da9c75707392d21",{"2":{"436":2}}],["0x5",{"2":{"476":4}}],["0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",{"2":{"439":1,"476":2}}],["0x574372ff1a0eede68b5358cce7bbb93155a9dfe0",{"2":{"436":2}}],["0x596af90cecdbf9a768886e771178fd5561dd27ab",{"2":{"390":1,"415":1,"416":2}}],["0xe6b9b21c077f382333220a072e4c44280b873907",{"2":{"421":1}}],["0xec9a7204a43d3f4a82c84fde92d25bfc9110981e",{"2":{"415":1,"416":1}}],["0xf87e31492faf9a91b02ee0deaad50d51d56d5d4d",{"2":{"459":1}}],["0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",{"2":{"439":1,"476":5}}],["0xff",{"2":{"420":1}}],["0xf9d09d634fb818b05149329c1dccfaea53639d96",{"2":{"420":1,"421":1}}],["0xdb374",{"2":{"476":1}}],["0xd72c236be524ec24f72329317e2785e687105b69",{"2":{"439":1}}],["0xd6043fe6f06d90ec2cb36ca5cd1b193a8515f350",{"2":{"433":1}}],["0xd130b43062d875a4b7af3f8fc036bc6e9d3e1b3e",{"2":{"421":1}}],["0xd01f11855bccb95f88d7a48492f66410d4637313",{"2":{"420":1,"421":1}}],["0xd4bbf5d234cc95441a8af0a317d8874ee425e74d",{"2":{"180":1}}],["0x6bd55a2877890bd58871eefe886770a7734077a74981910a75d7b1f044b5bf28",{"2":{"459":1}}],["0x6b175474e89094c44da98b954eedeac495271d0f",{"2":{"446":1}}],["0x63a21cca14ed7454b9cf6466af422b5c597c6b57",{"2":{"433":1}}],["0x631998e91476da5b870d741192fc5cbc55f5a52e",{"2":{"19":1,"25":3,"29":1,"32":7,"34":3,"38":3,"39":3,"67":1,"169":2,"175":3,"177":3,"180":2,"459":1}}],["0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3",{"2":{"420":1}}],["0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1",{"2":{"415":1,"416":2}}],["0x44c2ea42fb006a613a7b41d142576ed6b5055902",{"2":{"484":1}}],["0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",{"2":{"476":1}}],["0x4d4ee1b8583e31fe789eaf2e1b6e011c220c10b6",{"2":{"439":2,"440":1,"476":6,"478":1}}],["0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",{"2":{"476":4}}],["0x48656c6c6f2c20686176652061206e69636520646179",{"2":{"468":1}}],["0x479f6a5b0c1728947318714963a583c56a78366a",{"2":{"459":1}}],["0x4f9555c73908b6a5b61e0a744cb4e00fce7b20743d5799e4cb1774081bc6b2ec192c740e50f1adec84605636e09c9cdf4d2f6629f9ce64d8d0f3ae10305ef90400",{"2":{"453":1,"459":1,"460":1}}],["0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea",{"2":{"415":1,"416":2}}],["0x4b0fc0c7d42566958d60f92115ab95167c837c891e2f4fa62a75bfed30d86af7291051fe5c88985269286548a42bed5b70bb16588e48998206a2e7a547f527d101",{"2":{"451":1}}],["0x468e8e29f6cfb0f6b7ff10ec6a1ab516ec849c04",{"2":{"184":1,"186":1}}],["0x01047de46debeeb83e1270b80ae65996ea64ad2c033e330cfffe9b725bf078423140124dce0cfe0cab9a61b385ca74fe77cd5e8a7147bfd87052f334cfbadc45c79a",{"2":{"468":1}}],["0x095ae61e8207c7856ea273235d6badb69d815f5e",{"2":{"459":1}}],["0x061150e5574716dbb1a2cdf54b3dce9f94395f65",{"2":{"448":1}}],["0x02390f3e6e5fd1c6786cb78fd3027c117a9955a7",{"2":{"421":1}}],["0x0",{"2":{"411":1}}],["0x000000000000000000000000959c65b72147faf3450d8b50a0de57e72ffc5e0d",{"2":{"476":1}}],["0x00000000000000000000000000e91788bcb998379027d36e6407a9187d7f313c",{"2":{"476":1}}],["0x0000000000000000000000000000000000001010",{"2":{"476":1}}],["0x00000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000008800000002000000000001004000000000000000000000000000000000800000000000000000000100000000400000000200400000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000002000000000000000000000000000000004000008000000000000001000000000000000000000000000000100000020000000000000000000000002000000020020002020040000000000000000040100000",{"2":{"476":1}}],["0x0000000000000000000000000000000000000000000000000000000000001010",{"2":{"476":1}}],["0x0000000000000000000000000000000000000000000000000000000000000000",{"2":{"439":1,"476":2}}],["0x000000000000000000000000000000000000000000000000001284e7c67266000000000000000000000000000000000000000000000000014c0fa753f2298415000000000000000000000000000000000000000000001386f7e2c243dcc978070000000000000000000000000000000000000000000000014bfd226c2bb71e15000000000000000000000000000000000000000000001386f7f5472ba33bde07",{"2":{"476":1}}],["0x0000000000000000000000000000000000000000",{"2":{"476":1}}],["0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",{"2":{"439":1,"476":2}}],["0x00",{"2":{"333":1,"440":1,"476":1,"478":1}}],["0x",{"2":{"269":1,"270":3,"440":1,"447":1,"476":3,"478":1,"502":1,"503":3}}],["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",{"2":{"481":1}}],["0x1",{"2":{"476":1}}],["0x15",{"2":{"476":1}}],["0x153824576d03629b264683b430bbf9acea1d0975",{"2":{"440":1,"476":1,"478":1}}],["0x14",{"2":{"476":1}}],["0x14a00",{"2":{"476":1}}],["0x140d72763d1ce39ad4e2e73ec6e8fc53e5b73b64",{"2":{"459":1}}],["0x17ffa2d95b58228e1ecb0c6ac25a6efd20ba08e4",{"2":{"459":1}}],["0x17b66009af459dc8ebf37acf8a8b355379be2fe5",{"2":{"25":2}}],["0x112233",{"2":{"459":1}}],["0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881",{"2":{"439":1,"476":2}}],["0x16",{"2":{"476":1}}],["0x1626ba7e",{"2":{"411":2}}],["0x1693ffc74edbb50d6138517fe5cd64fd1c917709",{"2":{"182":2,"339":1}}],["0xbdeafd3ee0550a73f615d2baea2e3d6d48fc857d",{"2":{"484":1}}],["0xbc5f07a5852fdf3dbd57a76835109220d0add8e8",{"2":{"451":1,"453":1,"459":1,"460":1}}],["0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",{"2":{"43":2}}],["0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",{"2":{"410":1}}],["0xb392c99d9f8e3e0b248e5c283818be5bf5cecca7",{"2":{"335":1}}],["0xb537a160472183f2150d42eb1c3dd6684a55f74c",{"2":{"182":2,"339":1}}],["0xc9d9b33231d24dd8cc53fdd64f7abdd156f2a7e2",{"2":{"459":1}}],["0xcf67bcbd9d5dfd373b03f4fc8143e1c6744b5696",{"2":{"451":1,"452":1,"453":1,"459":1,"460":2}}],["0xcccccccccccccccccccccccccccccccccccccccc",{"2":{"410":1}}],["0xc2be9cf6d9ee4fd211f88620760e829792659b16",{"2":{"182":2}}],["0xc852bf35cb7b54a33844b181e6fd163387d85868",{"2":{"180":1}}],["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",{"2":{"52":2}}],["0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",{"2":{"439":1,"476":2}}],["0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7",{"2":{"182":2,"339":1}}],["0xabc",{"2":{"168":1,"169":1,"171":1,"173":1}}],["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",{"2":{"52":2,"459":1}}],["0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4",{"2":{"25":2}}],["0x839ee023b21f4ffe2294025de0ac30ba7278d6fd",{"2":{"440":2,"478":1}}],["0x8e3e38fe7367dd3b52d1e281e4e8400447c8d8b9",{"2":{"168":1,"169":1,"171":1,"173":1}}],["0x8f3cf7ad23cd3cadbd9735aff958023239c6a063",{"2":{"25":2}}],["0x8bb759bb68995343ff1e9d57ac85ff5c5fb79334",{"2":{"19":1}}],["0x7b7d7ba79542584f9aef539f6696c070a4e1ced6",{"2":{"468":1}}],["0x7b1bd3474d789e18e2e329e2c53f819b6e687b4a",{"2":{"459":1}}],["0x7efe6ce415956c5f80c6530cc6cc81b4808f6118",{"2":{"421":1}}],["0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0",{"2":{"52":1}}],["0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d",{"2":{"25":2}}],["0x7227e371540cf7b8e512544ba6871472031f3335",{"2":{"25":2,"43":1}}],["0x2f63834",{"2":{"476":4}}],["0x28ec6ddcdbc0987a99dde19792ff0c9be69ad2be873fb9351353171b74d2df3380f0ffcae2b8cb37a0659e374859420500b4399a2aab0209ee7919aaea575ac7",{"2":{"468":1}}],["0x223344",{"2":{"459":1}}],["0x27cabc9700ee6db2797b6ac1e1ece81c72a2cd8d",{"2":{"446":1}}],["0x27a11c1563a5dda238379b95c91b3abbad9c0cf6",{"2":{"44":2}}],["0x2791bca1f2de4661ed88a30c99a7a9449aa84174",{"2":{"25":2,"66":1}}],["0x2953399124f0cbb46d2cbacd8a89cf0599974963",{"2":{"25":2}}],["0xsequence",{"0":{"244":1},"2":{"16":5,"17":2,"19":1,"25":2,"28":4,"29":2,"38":2,"39":4,"48":3,"49":2,"57":1,"59":1,"60":2,"63":4,"64":1,"79":1,"81":1,"84":10,"85":2,"86":4,"87":1,"88":1,"104":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"184":1,"190":1,"192":1,"193":5,"194":1,"200":4,"205":1,"206":5,"207":1,"212":4,"215":1,"216":2,"223":2,"225":1,"231":1,"233":1,"236":1,"237":4,"239":1,"240":2,"243":1,"244":3,"267":7,"268":3,"277":1,"359":1,"361":1,"375":7,"376":3,"409":1,"410":2,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1,"465":1,"477":1,"479":1,"482":1,"485":1,"487":1,"488":1,"495":1,"496":4,"498":1,"499":2,"510":1}}],["90",{"2":{"490":1,"492":1}}],["911",{"2":{"332":1}}],["96",{"2":{"51":2}}],["9",{"0":{"332":1},"2":{"43":3}}],["6492",{"2":{"237":1,"496":1}}],["6f1",{"2":{"108":1}}],["66597",{"2":{"67":1}}],["6",{"0":{"282":1,"329":1,"515":1},"2":{"52":1,"94":1,"341":1,"362":1}}],["65548",{"2":{"44":3}}],["65535",{"2":{"424":1}}],["65535required",{"2":{"413":1}}],["65539",{"2":{"38":2,"39":1}}],["65538",{"2":{"38":2,"39":1}}],["65537",{"2":{"38":2,"39":1}}],["65556",{"2":{"32":1}}],["6x",{"2":{"32":1,"44":1}}],["284892",{"2":{"451":1,"453":1}}],["230",{"2":{"435":1}}],["255",{"2":{"414":1}}],["24th",{"2":{"381":1}}],["2nd",{"2":{"381":1}}],["27c266b7",{"2":{"180":3}}],["2fa",{"2":{"94":2}}],["22",{"2":{"32":2,"436":3}}],["2123",{"2":{"436":2}}],["21",{"2":{"32":2,"34":1}}],["2",{"0":{"95":1,"278":1,"314":1,"325":1,"352":1,"511":1},"1":{"96":1,"97":1,"98":1,"99":1,"100":1},"2":{"32":1,"38":1,"39":2,"44":1,"84":3,"99":2,"104":1,"141":1,"155":1,"158":1,"165":1,"184":1,"186":1,"312":1,"324":1,"339":1,"350":2,"352":2,"415":2,"416":4,"418":2,"429":1,"459":1}}],["200000000000000000000",{"2":{"446":1}}],["200",{"2":{"262":1,"446":1}}],["2024",{"2":{"464":1}}],["2020",{"2":{"381":1,"382":1,"459":1}}],["2023",{"2":{"99":4,"383":1,"436":4}}],["2022",{"2":{"99":3}}],["2021",{"2":{"99":1,"108":1,"381":1}}],["20",{"0":{"271":1,"504":1},"2":{"32":8,"34":2,"270":1,"271":3,"272":1,"464":1,"503":1,"504":3,"505":1}}],["42161",{"2":{"439":1,"446":1}}],["42",{"2":{"436":4}}],["462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b",{"2":{"185":4}}],["4046",{"2":{"180":3}}],["4",{"0":{"280":1,"327":1,"513":1},"2":{"32":1,"339":1,"410":1,"415":1}}],["486",{"2":{"3":8}}],["\tmessage",{"2":{"410":1}}],["\tdomain",{"2":{"410":1}}],["\tprimarytype",{"2":{"410":1}}],["\ttypes",{"2":{"410":1}}],["\ttokenbalances",{"2":{"168":1,"171":1}}],["\tok",{"2":{"180":1}}],["\turl",{"2":{"180":1}}],["\tfilter",{"2":{"173":2,"175":2,"177":1}}],["\tfmt",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1}}],["\tnftbalances",{"2":{"169":1}}],["\tcontractaddress",{"2":{"169":1,"175":1,"177":1}}],["\tif",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1}}],["\tincludemetadata",{"2":{"168":2,"169":2,"171":1,"173":2,"175":1,"177":2}}],["\tseqindexer",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1}}],["\taccountaddress",{"2":{"168":1,"169":1,"171":1,"173":1}}],["\t\twallet",{"2":{"410":1}}],["\t\tverifyingcontract",{"2":{"410":1}}],["\t\tversion",{"2":{"410":1}}],["\t\tcount",{"2":{"410":1}}],["\t\tcontractaddress",{"2":{"175":1,"177":1}}],["\t\tchainid",{"2":{"410":1}}],["\t\tname",{"2":{"410":2}}],["\t\tperson",{"2":{"410":1}}],["\t\tposition",{"2":{"68":1}}],["\t\t\t",{"2":{"180":1,"410":3,"459":2}}],["\t\t\t\t\t\t\t\t",{"2":{"459":2}}],["\t\t\t\t\t\t\t",{"2":{"459":4}}],["\t\t\t\t\t\t",{"2":{"459":5}}],["\t\t\t\t\t",{"2":{"459":4}}],["\t\t\t\t",{"2":{"180":1,"459":3}}],["\t\t\t\taccounts",{"2":{"180":1}}],["\t\t\tfilters",{"2":{"180":1}}],["\t\t\turl",{"2":{"180":1}}],["\t\taccountaddress",{"2":{"173":1}}],["\t\tlog",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1}}],["\t\t",{"2":{"68":1,"180":2,"410":1}}],["\t\tdefaulttheme",{"2":{"68":1}}],["\tverifiedonly",{"2":{"17":1}}],["\t",{"2":{"17":1,"25":1,"29":1,"38":1,"39":2,"49":1,"68":1,"168":6,"169":6,"171":7,"173":9,"175":9,"177":8,"180":7,"410":3}}],["🌄",{"2":{"15":1,"47":1}}],["qmw5gvygwb98gsn8vjtrwu4pln6jryexnxzknwpphvwtdm",{"2":{"332":1}}],["qmdjzqexj2wnny7pnnn4kauzckjh4va5xhoxmmis919ev3",{"2":{"325":1}}],["qmuqgkka8ew7exiuhnmwz4uoxa11wv7nfjhaogvabassyy",{"2":{"43":1}}],["qr",{"2":{"266":2}}],["qatar",{"2":{"13":1}}],["quantstamp",{"0":{"381":1},"2":{"380":1}}],["quantityremaining",{"2":{"183":1}}],["quantityraw",{"2":{"67":1}}],["quantity",{"2":{"183":1}}],["quick",{"2":{"357":1}}],["quicker",{"2":{"116":1}}],["quickly",{"2":{"55":1,"338":1,"357":1,"374":1}}],["quickstart",{"0":{"53":1,"336":1,"357":1,"372":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"337":1,"338":1,"339":1,"340":1,"358":1,"359":1,"360":1,"361":1,"373":1,"374":1,"375":1,"376":1},"2":{"164":1,"166":1,"356":1}}],["quite",{"2":{"31":1}}],["quote",{"2":{"184":1,"186":1}}],["quot",{"2":{"3":4,"6":8,"17":8,"19":16,"24":2,"25":46,"29":8,"32":78,"37":2,"38":44,"39":56,"43":93,"44":68,"49":2,"52":88,"93":2,"99":58,"102":2,"104":8,"105":14,"106":4,"111":2,"114":2,"115":2,"118":8,"119":10,"125":12,"133":14,"145":2,"160":2,"168":26,"169":30,"171":24,"173":30,"175":28,"177":26,"180":34,"182":54,"183":6,"184":10,"185":22,"186":8,"190":8,"207":6,"236":2,"244":38,"255":2,"256":2,"257":12,"258":2,"259":6,"260":4,"261":2,"266":2,"267":13,"268":4,"285":4,"286":4,"289":4,"291":4,"293":4,"295":6,"303":8,"305":4,"307":2,"308":2,"324":12,"325":12,"328":2,"329":2,"334":4,"335":2,"339":32,"375":13,"376":4,"380":6,"390":6,"409":4,"411":2,"413":4,"414":10,"415":28,"420":20,"422":2,"423":2,"428":2,"429":4,"431":2,"433":10,"435":10,"436":82,"437":2,"439":74,"440":76,"445":2,"446":6,"447":6,"448":6,"451":36,"452":32,"453":38,"454":2,"455":2,"456":2,"457":2,"458":2,"459":254,"460":34,"464":16,"465":16,"466":2,"467":2,"468":36,"476":288,"478":66,"481":14,"484":14,"495":2}}],["queried",{"2":{"148":1,"183":1,"405":1,"406":1}}],["queries",{"2":{"16":1,"17":1,"22":1,"302":1}}],["querycontractmessagesender",{"2":{"305":1}}],["querycontract",{"2":{"305":2}}],["queryclient",{"2":{"63":1,"81":1,"85":4,"86":5}}],["queryclientprovider",{"2":{"63":2,"81":2,"85":3,"86":5}}],["querying",{"0":{"305":1},"2":{"19":1,"32":1,"43":1,"44":1,"46":1,"302":1,"305":1,"309":1}}],["query",{"2":{"1":1,"14":1,"16":1,"17":1,"20":6,"24":2,"27":1,"31":3,"32":6,"37":2,"84":3,"85":1,"86":1,"168":1,"169":1,"171":1,"173":1,"175":6,"177":6,"305":3}}],["questions",{"2":{"191":1,"237":1,"496":1}}],["question",{"2":{"0":1,"470":1}}],["=0",{"2":{"214":1}}],["==",{"2":{"186":1,"429":1}}],["===",{"2":{"184":1,"282":1,"455":1,"457":1,"515":1}}],["=",{"0":{"200":1,"212":1},"2":{"6":3,"16":2,"17":5,"25":4,"28":1,"29":2,"38":4,"39":8,"59":1,"63":2,"64":6,"65":1,"66":2,"68":1,"80":4,"81":3,"85":8,"86":10,"87":6,"88":5,"102":2,"109":1,"120":2,"122":2,"124":2,"128":2,"131":2,"133":7,"168":7,"169":8,"171":7,"173":8,"175":9,"177":8,"180":5,"182":2,"184":15,"185":2,"186":9,"189":3,"190":3,"194":1,"200":1,"206":1,"207":2,"212":1,"217":3,"225":2,"226":5,"235":2,"236":2,"237":6,"244":11,"245":1,"269":13,"270":13,"271":12,"272":13,"273":3,"277":3,"278":3,"279":2,"280":3,"281":2,"282":1,"283":1,"285":2,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":2,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":10,"305":6,"306":2,"309":7,"311":2,"313":2,"314":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":2,"361":1,"390":4,"398":1,"403":1,"404":1,"409":3,"410":4,"411":1,"416":3,"418":3,"420":6,"421":1,"430":2,"433":3,"434":4,"435":14,"436":2,"437":2,"439":2,"440":2,"444":1,"445":2,"446":2,"447":1,"448":2,"477":1,"479":1,"482":1,"485":1,"487":1,"488":1,"494":2,"495":2,"496":6,"502":13,"503":13,"504":12,"505":13,"506":3,"510":3,"511":3,"512":2,"513":3,"514":2,"515":1}}],["yayxahnsi",{"2":{"357":1}}],["yarn",{"2":{"6":1,"16":1,"48":1,"63":1,"84":1,"193":1,"200":1,"206":1,"212":1,"216":1,"267":1,"375":1}}],["y",{"2":{"107":1,"140":1}}],["yet",{"2":{"116":1,"403":1,"406":1,"450":1,"466":1}}],["yes",{"2":{"105":1}}],["yemen",{"2":{"13":1}}],["york",{"2":{"12":1}}],["you",{"2":{"2":4,"3":5,"5":2,"11":1,"14":1,"15":3,"16":3,"17":2,"20":4,"21":1,"22":1,"23":1,"28":1,"31":1,"32":6,"35":1,"44":1,"45":2,"47":1,"52":4,"57":1,"58":2,"59":2,"61":1,"68":1,"79":2,"80":3,"81":2,"83":1,"84":1,"87":1,"89":1,"92":1,"93":2,"96":1,"97":1,"99":4,"101":5,"102":8,"104":5,"105":6,"106":8,"108":1,"109":1,"110":4,"111":4,"112":4,"114":1,"115":5,"116":4,"117":6,"118":3,"119":3,"120":5,"121":3,"122":5,"123":3,"124":5,"125":13,"126":3,"128":4,"130":7,"131":2,"133":5,"134":3,"135":5,"138":4,"139":2,"143":1,"144":1,"145":2,"146":7,"147":3,"148":1,"149":2,"153":1,"155":4,"156":4,"157":2,"158":5,"159":2,"161":1,"163":2,"164":2,"165":2,"168":2,"169":1,"171":1,"173":1,"175":3,"177":2,"179":2,"180":1,"181":1,"184":1,"191":6,"200":1,"204":1,"206":1,"212":1,"236":4,"237":4,"241":1,"242":4,"243":2,"244":9,"266":1,"267":3,"269":1,"270":1,"271":2,"272":1,"273":1,"282":1,"283":4,"285":2,"302":4,"303":7,"304":2,"305":3,"306":2,"307":2,"309":4,"310":2,"311":1,"314":2,"315":1,"319":3,"320":3,"321":2,"323":1,"324":4,"327":1,"330":1,"331":4,"332":4,"333":1,"334":1,"335":5,"340":1,"341":2,"351":3,"352":2,"355":2,"356":1,"357":6,"359":1,"360":2,"361":2,"362":2,"375":2,"379":1,"432":3,"434":1,"435":2,"443":1,"448":1,"450":3,"461":1,"463":1,"466":2,"488":1,"495":4,"496":4,"500":1,"501":4,"502":1,"503":1,"504":2,"505":1,"506":1,"515":1}}],["yourself",{"2":{"351":1,"432":1}}],["yoursite",{"2":{"244":2,"256":1}}],["yours",{"2":{"163":1}}],["yourcallshowauthfailurescreen",{"2":{"133":1}}],["yourcallreadytoreceivecode",{"2":{"133":1}}],["your",{"0":{"82":1,"202":1,"244":1,"264":1,"324":1,"326":1,"329":1,"377":1},"1":{"203":1,"378":1},"2":{"0":1,"2":2,"3":3,"4":1,"5":2,"6":2,"14":2,"15":2,"17":1,"19":4,"20":4,"22":1,"24":1,"28":2,"29":1,"31":1,"32":1,"37":1,"41":2,"45":1,"47":1,"49":1,"50":3,"52":2,"63":1,"80":2,"81":2,"82":2,"83":1,"85":3,"90":2,"91":3,"92":1,"93":2,"99":1,"101":1,"102":4,"104":3,"105":2,"106":3,"107":1,"110":3,"112":2,"114":2,"115":3,"116":1,"119":2,"120":1,"122":1,"124":1,"125":1,"126":1,"128":4,"130":1,"133":1,"134":4,"135":1,"142":1,"143":1,"145":2,"146":5,"147":2,"148":1,"149":2,"153":2,"155":2,"156":2,"157":1,"158":1,"159":2,"160":2,"161":1,"162":2,"163":8,"165":2,"166":1,"168":1,"171":1,"180":1,"184":8,"191":2,"202":2,"203":3,"204":1,"236":4,"237":5,"242":3,"243":2,"244":8,"256":1,"266":1,"267":4,"283":3,"284":1,"307":1,"309":2,"310":1,"311":1,"323":1,"324":2,"325":2,"326":2,"327":1,"328":3,"329":2,"330":1,"331":3,"333":2,"334":1,"335":1,"338":1,"340":1,"351":1,"352":1,"355":1,"357":3,"360":1,"370":1,"375":4,"377":2,"378":3,"379":1,"409":1,"410":1,"432":1,"433":1,"443":1,"461":1,"467":1,"495":4,"496":5,"501":3}}],["runtime",{"2":{"386":1}}],["runs",{"2":{"244":2,"354":1,"357":1,"465":1,"491":1}}],["running",{"2":{"145":1,"190":1,"245":1,"340":1,"354":1,"461":1,"466":1}}],["run",{"2":{"108":1,"145":4,"243":1,"465":1}}],["russian",{"2":{"13":1}}],["risk",{"2":{"461":1}}],["risks",{"2":{"367":1}}],["ripped",{"2":{"105":1}}],["right",{"2":{"71":3,"107":1,"115":1,"149":1,"430":1}}],["rotation",{"2":{"347":1}}],["rotate",{"2":{"128":1}}],["root",{"2":{"110":1,"435":1,"476":1}}],["robust",{"2":{"90":1,"202":1,"377":1}}],["router=",{"2":{"435":1}}],["routerprovider",{"2":{"435":2}}],["router",{"2":{"199":6,"201":2,"213":6,"214":2,"435":7}}],["route",{"2":{"20":1,"106":1,"302":1}}],["routes",{"2":{"20":1}}],["ration",{"2":{"256":1}}],["ratio",{"2":{"244":2}}],["rather",{"2":{"117":1,"302":1}}],["rainbow",{"2":{"192":1,"194":1,"345":1}}],["rainbowkit",{"0":{"192":1},"1":{"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1},"2":{"191":1,"192":3,"193":3,"194":3,"196":1,"199":1,"201":1,"209":1}}],["range",{"2":{"186":1,"289":1}}],["randombytes",{"2":{"278":1,"511":1}}],["random",{"2":{"44":1,"313":1,"397":1,"425":1}}],["rawtransactions",{"2":{"120":1,"122":1,"124":1}}],["rawtransaction",{"0":{"118":1},"2":{"118":1,"120":2,"122":2,"124":2,"126":2}}],["raw",{"0":{"455":1},"2":{"52":1,"118":2}}],["ramps",{"0":{"341":1,"362":1}}],["ramp",{"2":{"11":1,"244":2,"260":1,"341":5,"362":5}}],["rhode",{"2":{"12":1}}],["rpcurl",{"2":{"6":2,"184":2,"237":3,"496":3}}],["rpc",{"0":{"35":1,"36":1},"2":{"5":2,"6":2,"15":2,"19":3,"25":2,"31":6,"33":3,"35":2,"36":1,"38":2,"39":4,"52":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":2,"185":1,"283":2,"339":1,"355":1}}],["reorganizationno",{"2":{"475":1}}],["reused",{"2":{"471":1}}],["rejected",{"2":{"389":1,"397":1,"455":1}}],["rewrite",{"2":{"309":2}}],["reverted",{"2":{"439":1}}],["revert",{"2":{"400":1,"475":1}}],["revertonerror",{"0":{"400":1},"2":{"186":1,"398":2,"400":1,"403":1,"404":1}}],["revertreason",{"2":{"185":1,"439":2,"476":2}}],["req",{"2":{"180":3}}],["requiring",{"2":{"244":1,"274":1,"275":1,"309":1,"448":1,"507":1,"508":1}}],["requirefreshsigner",{"2":{"421":1}}],["required",{"0":{"486":1},"1":{"487":1},"2":{"98":1,"107":1,"133":1,"158":1,"159":1,"186":2,"243":1,"292":1,"302":1,"350":1,"352":1,"423":1,"429":1,"446":1,"467":1,"487":1}}],["requirements",{"0":{"108":1,"141":1},"2":{"95":1,"156":1}}],["require",{"2":{"50":1,"131":1,"188":1,"190":1,"237":1,"275":1,"309":1,"366":1,"402":1,"431":1,"433":1,"442":1,"443":1,"450":1,"488":1,"496":1,"508":1}}],["requires",{"2":{"1":1,"2":1,"4":1,"16":1,"25":1,"28":1,"38":1,"112":1,"128":1,"158":1,"168":1,"267":1,"273":1,"283":1,"375":1,"446":1,"506":1}}],["requested",{"2":{"452":1}}],["requestsendtransactionpayloadthe",{"2":{"478":1}}],["requests",{"0":{"152":1},"2":{"15":1,"20":1,"35":1,"47":1,"147":1,"148":1,"152":1,"266":1,"283":1,"460":1}}],["request",{"2":{"2":1,"3":1,"4":1,"20":1,"24":1,"25":1,"32":2,"37":1,"38":1,"39":3,"82":1,"126":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"183":1,"266":1,"339":1,"439":1,"440":1,"466":2,"475":1,"476":1,"478":1}}],["remaining",{"2":{"364":1}}],["removed",{"2":{"367":1,"475":1,"476":3}}],["remove",{"2":{"367":1}}],["removing",{"2":{"125":1}}],["remotely",{"2":{"243":1}}],["remoteconfigtracker",{"2":{"237":1,"496":1}}],["remote",{"2":{"237":1,"409":1,"410":1,"496":1}}],["remember",{"2":{"145":1,"433":1}}],["reduces",{"2":{"459":1}}],["reduced",{"2":{"428":1}}],["reduce",{"2":{"168":1,"169":1,"173":1,"177":1,"275":1,"417":1,"508":1}}],["reducing",{"2":{"128":1}}],["redirect",{"2":{"155":1,"247":1}}],["reddit",{"2":{"101":1,"102":1,"111":1,"117":1}}],["retrieving",{"0":{"405":1,"406":1},"1":{"406":1}}],["retrieve",{"2":{"181":1,"244":1,"273":1,"282":1,"506":1,"515":1}}],["retrieved",{"2":{"52":1}}],["returning",{"2":{"448":1}}],["returns",{"2":{"24":1,"120":1,"122":1,"124":1,"186":1,"316":1,"392":1,"406":1,"411":1,"436":1,"444":1,"445":4,"446":2,"466":1}}],["return",{"0":{"394":1},"2":{"3":1,"43":1,"44":1,"63":1,"64":1,"80":2,"81":1,"85":1,"86":2,"87":1,"88":1,"118":1,"168":3,"169":1,"173":1,"177":1,"184":1,"189":2,"190":2,"250":1,"296":1,"301":1,"305":1,"405":1,"411":5,"430":4,"435":3,"438":1,"439":1,"448":1}}],["returned",{"2":{"3":2,"19":1,"39":1,"95":1,"130":1,"236":1,"254":1,"409":1,"410":1,"440":1,"495":1}}],["reload",{"2":{"335":1}}],["relaying",{"2":{"242":1,"501":1}}],["relayerfeeoption",{"2":{"186":1}}],["relayerurl",{"2":{"184":2}}],["relayer",{"0":{"50":1},"1":{"51":1,"52":1},"2":{"47":7,"49":1,"50":6,"52":6,"184":4,"185":5,"186":4}}],["relevant",{"2":{"155":1,"439":1}}],["release",{"2":{"106":1,"466":1}}],["rely",{"2":{"81":1}}],["reliable",{"2":{"20":1}}],["reflect",{"2":{"266":1}}],["refreshedat",{"2":{"436":2}}],["refreshes",{"2":{"115":1}}],["refreshjobstatus",{"2":{"39":3}}],["refreshjob",{"2":{"39":1}}],["refresh",{"0":{"252":1},"2":{"39":3,"40":2,"252":2,"335":3}}],["refreshing",{"0":{"39":1},"1":{"40":1}}],["referencing",{"2":{"389":1,"397":1,"402":1}}],["references",{"2":{"16":1,"17":1,"380":1}}],["reference",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1},"2":{"15":2,"35":2,"47":2,"93":1,"120":1,"122":1,"124":1}}],["referred",{"2":{"123":1}}],["refer",{"2":{"11":1,"13":1,"57":1,"80":1,"85":1,"142":1,"143":1}}],["rendered",{"2":{"188":1,"189":1,"190":4,"255":1,"397":1,"403":1}}],["rendering",{"2":{"173":1,"188":1,"189":2,"199":1,"213":1}}],["render",{"2":{"20":3,"177":1,"188":1,"400":1,"435":1}}],["recursive",{"2":{"430":1}}],["recipientaddress",{"2":{"270":1,"271":1,"272":1,"273":1,"311":1,"503":1,"504":1,"505":1,"506":1}}],["recipient",{"2":{"270":1,"271":1,"272":1,"446":1,"455":1,"456":1,"457":1,"458":1,"503":1,"504":1,"505":1}}],["recipient4address",{"2":{"269":1,"502":1}}],["recipient3address",{"2":{"269":1,"502":1}}],["recipient2address",{"2":{"269":2,"270":1,"271":1,"272":1,"502":2,"503":1,"504":1,"505":1}}],["recipient1address",{"2":{"269":2,"270":1,"271":1,"272":1,"502":2,"503":1,"504":1,"505":1}}],["recovered",{"2":{"492":1}}],["recoveredsessionaddress",{"2":{"282":2,"515":2}}],["recover",{"2":{"490":1,"492":1}}],["recovering",{"2":{"158":1}}],["recovery",{"0":{"158":1,"489":1,"492":1},"1":{"490":1,"491":1,"492":1},"2":{"158":4,"347":1,"353":1,"489":2,"490":2,"492":1}}],["recognize",{"2":{"102":1,"106":1}}],["recommendations",{"2":{"367":1}}],["recommended",{"0":{"104":1},"1":{"105":1},"2":{"102":1,"111":1,"117":1,"119":1,"120":1,"122":1,"124":1,"125":1,"165":1,"189":1,"190":1,"194":1,"285":1,"295":1,"302":1,"309":1,"311":1,"321":1}}],["recommend",{"2":{"16":1,"19":1,"28":1,"31":1,"33":1,"45":1,"93":2,"102":1,"109":1,"125":1,"158":1}}],["receiptnologsmetatxnreceiptlog",{"2":{"475":1}}],["receiptnostatusstringstatus",{"2":{"475":1}}],["receiptsnotxnreceiptstringstring",{"2":{"475":1}}],["receipts",{"0":{"185":1,"438":1},"1":{"439":1,"440":1},"2":{"320":1,"438":2,"439":1,"476":2}}],["receipt",{"0":{"475":1},"1":{"476":1,"477":1},"2":{"126":1,"185":4,"186":4,"301":1,"303":5,"306":1,"309":2,"311":1,"318":1,"320":1,"439":4,"475":1,"476":1,"477":1,"488":2}}],["receives",{"2":{"445":1}}],["received",{"2":{"101":1,"130":1,"488":1}}],["receive",{"2":{"94":1,"102":1,"126":1,"134":1,"302":1,"304":1,"319":2,"320":2}}],["recent",{"2":{"20":1,"199":1,"213":1,"288":1,"463":1}}],["reason",{"2":{"403":1,"439":1,"440":1,"476":1,"478":1}}],["reasons",{"2":{"397":1}}],["reaches",{"2":{"429":1}}],["reached",{"2":{"409":1,"410":1}}],["reach",{"2":{"116":1,"191":1,"237":1,"496":1}}],["reactdom",{"2":{"435":1}}],["react",{"0":{"89":1,"222":1},"1":{"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1},"2":{"84":3,"85":1,"86":1,"88":1,"191":1,"222":3,"223":1,"225":2,"226":1,"230":1,"435":8}}],["really",{"2":{"242":1,"285":1,"501":1}}],["realm",{"2":{"90":1,"126":1,"202":1,"377":1}}],["real",{"2":{"19":1,"20":2,"148":2,"355":1,"466":1}}],["reader",{"2":{"237":1,"496":1}}],["readable",{"2":{"119":1,"125":1}}],["reading",{"0":{"390":1},"2":{"109":1}}],["ready",{"2":{"92":1,"134":1,"204":1,"330":1,"335":1,"356":1,"357":1,"360":1,"379":1}}],["read",{"0":{"109":1},"2":{"15":1,"27":1,"35":1,"43":1,"47":1,"106":2,"119":2,"244":1,"305":1,"335":1,"390":1}}],["re",{"2":{"16":1,"20":1,"28":1,"92":1,"101":2,"102":1,"107":1,"111":1,"117":1,"119":1,"125":3,"135":1,"140":1,"204":1,"243":1,"252":1,"379":1,"431":1}}],["reports",{"2":{"380":1}}],["repo",{"2":{"264":1}}],["repository",{"2":{"89":1,"357":1,"435":1,"465":1}}],["representation",{"2":{"469":1,"475":1}}],["representing",{"2":{"469":1}}],["represent",{"2":{"168":1,"426":1}}],["represents",{"2":{"150":1,"152":1,"403":1,"428":1,"429":1}}],["represented",{"2":{"46":1,"118":2,"427":1}}],["replay",{"2":{"51":1,"251":1,"435":1}}],["replaced",{"2":{"112":1}}],["replace",{"2":{"6":1,"99":1,"105":1,"110":1,"112":1,"364":1,"367":1,"431":1}}],["republic",{"2":{"13":2}}],["regardless",{"2":{"473":1}}],["region",{"2":{"341":1,"362":1}}],["regions",{"0":{"11":1,"13":1},"1":{"12":1,"13":1},"2":{"11":3}}],["registers",{"2":{"145":1}}],["registersession",{"2":{"128":1,"130":1}}],["registered",{"2":{"130":1,"134":1,"469":1}}],["registering",{"0":{"180":1},"2":{"129":1}}],["register",{"2":{"95":2,"128":2}}],["registry",{"2":{"20":1}}],["regulations",{"2":{"11":1,"13":1}}],["resembling",{"2":{"483":1,"486":1}}],["resource",{"2":{"105":1}}],["resources",{"2":{"104":1,"110":6,"339":1}}],["res",{"2":{"99":2,"182":3,"433":2,"477":2,"479":2,"482":2,"485":2,"487":2,"488":3}}],["resulting",{"2":{"409":1,"410":1,"411":1}}],["result",{"2":{"32":1,"102":3,"117":2,"118":1,"128":1,"139":2,"305":1,"354":1,"388":1,"429":1,"440":1,"445":2,"475":1,"476":1,"478":2}}],["resultsyes",{"2":{"475":1}}],["results",{"2":{"19":3,"115":1,"478":1}}],["restofonboardparams",{"2":{"217":1}}],["restwallets",{"2":{"217":1}}],["restarted",{"2":{"99":1}}],["rest",{"0":{"31":1,"34":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1},"2":{"20":1,"27":1,"31":3,"33":2,"34":1,"189":1,"190":1,"314":1,"351":1,"391":1}}],["restricted",{"0":{"11":1},"1":{"12":1,"13":1}}],["respect",{"2":{"411":1}}],["respectively",{"2":{"429":1,"448":1}}],["respective",{"2":{"18":1,"30":1,"191":1}}],["responds",{"2":{"186":1}}],["responsibility",{"2":{"354":1,"397":1,"429":1}}],["responsible",{"2":{"146":1}}],["responsive",{"2":{"128":1,"283":1}}],["responsenodataobjectholds",{"2":{"473":1}}],["response",{"0":{"439":1,"440":1,"472":1,"473":1,"475":1,"478":1,"480":1,"483":1,"486":1},"1":{"473":1,"474":1,"475":1,"476":2,"477":2,"478":1,"479":2,"480":1,"481":2,"482":2,"483":1,"484":2,"485":2,"486":1,"487":2,"488":1},"2":{"32":2,"43":1,"131":2,"168":2,"169":1,"173":2,"177":1,"183":1,"185":1,"186":2,"269":4,"302":1,"439":2,"440":2,"466":1,"472":2,"473":2,"475":1,"477":1,"478":1,"479":1,"482":1,"485":1,"486":1,"487":1,"488":2,"502":4}}],["responses",{"0":{"474":1},"1":{"475":1,"476":1,"477":1,"478":1,"479":1,"480":1,"481":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"488":1},"2":{"20":1,"32":1,"473":1,"477":1,"479":1,"482":1,"485":1,"487":1,"488":2}}],["resilient",{"2":{"5":1,"20":1}}],["v1",{"2":{"464":1,"465":4}}],["v18",{"2":{"16":1,"28":1}}],["vulnerate",{"2":{"353":1}}],["v3",{"2":{"237":1,"496":1}}],["v2",{"2":{"232":1,"237":2,"423":1,"496":2}}],["v6",{"0":{"222":1},"1":{"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1},"2":{"222":2,"223":1,"225":1,"230":1}}],["volume",{"2":{"148":1}}],["void",{"2":{"101":1,"102":3,"111":2,"117":3,"131":2,"133":5}}],["v",{"2":{"39":2,"184":1}}],["vs",{"0":{"45":1},"2":{"31":1}}],["ve",{"2":{"41":1,"45":1,"96":1,"97":1,"101":2,"105":1,"115":1,"120":1,"121":1,"122":1,"124":1,"125":1,"128":2,"130":1,"133":2,"134":1,"191":1,"243":2,"283":1,"307":1,"309":1,"331":1,"334":1,"488":1}}],["ver",{"2":{"464":2,"465":1}}],["verifies",{"2":{"411":1}}],["verifiedonly",{"2":{"19":2,"168":2,"169":2,"173":2,"177":2}}],["verified",{"2":{"19":3,"117":1,"168":1,"169":1,"173":1,"177":1,"248":1,"353":1,"411":1}}],["verification",{"0":{"411":1,"461":1},"1":{"462":1,"463":1,"464":1,"465":1,"466":1},"2":{"354":1,"408":1,"442":1,"443":1,"463":1}}],["verifiable",{"2":{"275":1,"508":1}}],["verifying",{"2":{"352":1,"461":1}}],["verifymessage",{"2":{"282":1,"515":1}}],["verify",{"0":{"280":1,"282":1,"513":1,"515":1},"2":{"236":2,"237":1,"242":1,"280":1,"282":1,"351":1,"354":1,"461":1,"465":1,"495":2,"496":1,"501":1,"513":1,"515":1}}],["versioning",{"2":{"107":1,"140":1}}],["version",{"0":{"190":1},"2":{"105":1,"106":1,"107":3,"115":1,"140":3,"188":1,"200":2,"206":2,"212":2,"214":2,"267":1,"354":1,"375":1,"450":1,"451":1,"452":1,"453":1,"459":1,"460":1,"465":1,"468":1}}],["version=v1",{"2":{"465":1}}],["version=",{"2":{"99":2}}],["versions",{"0":{"189":1,"200":1,"212":1},"2":{"99":3,"188":1,"214":1,"222":1,"463":1}}],["versa",{"2":{"45":1}}],["very",{"2":{"19":1,"102":1,"110":1,"118":1,"131":1,"145":1,"243":1}}],["venezuela",{"2":{"13":1}}],["virtual",{"2":{"346":1,"411":1}}],["virtually",{"2":{"51":1}}],["visualizations",{"2":{"148":1}}],["visibility",{"2":{"128":1}}],["visible",{"2":{"128":1,"341":1,"362":1}}],["viem",{"2":{"84":4,"200":1,"212":1}}],["viewable",{"2":{"117":1}}],["view",{"2":{"15":1,"47":1,"78":3,"99":2,"128":2,"146":1,"330":1,"357":1,"392":1,"411":1,"439":1,"440":1,"459":1}}],["vice",{"2":{"45":1}}],["via",{"0":{"266":1},"2":{"22":1,"39":2,"40":1,"52":1,"79":1,"91":1,"95":2,"102":2,"106":3,"110":1,"115":1,"147":1,"150":1,"151":1,"179":1,"185":1,"193":1,"203":1,"206":1,"223":1,"243":4,"266":3,"268":1,"309":1,"317":1,"318":1,"319":1,"320":1,"341":3,"352":1,"362":3,"364":1,"376":1,"378":1,"443":1}}],["video",{"2":{"3":2,"164":1,"191":1}}],["vary",{"2":{"267":1,"375":1}}],["var",{"2":{"186":1}}],["varies",{"2":{"390":1}}],["variety",{"2":{"15":1,"47":1,"50":1,"162":1,"164":1}}],["variable",{"2":{"125":1}}],["variables",{"2":{"125":1,"131":2}}],["variation",{"2":{"120":1,"122":1,"124":1}}],["various",{"2":{"23":1,"71":1,"84":1,"181":1,"214":1,"355":1}}],["vals",{"2":{"459":1}}],["valuable",{"2":{"147":1}}],["valueasstring",{"2":{"125":2,"126":1}}],["value=",{"2":{"99":2}}],["value",{"0":{"402":1},"2":{"43":8,"44":1,"118":4,"119":1,"149":1,"184":1,"186":2,"229":1,"248":1,"269":5,"270":2,"271":2,"273":1,"304":1,"354":1,"390":1,"398":2,"402":1,"404":1,"411":3,"424":1,"425":1,"430":2,"439":1,"440":2,"446":1,"447":1,"448":1,"455":1,"459":4,"465":2,"466":1,"476":1,"478":1,"502":5,"503":2,"504":2,"506":1}}],["valuestringthe",{"2":{"459":1}}],["values",{"0":{"394":1},"2":{"3":1,"70":1,"71":1,"76":1,"77":1,"110":1,"115":1,"118":1,"125":1,"285":1,"286":1,"289":1,"291":1,"293":1,"295":1,"420":1,"464":1,"466":2}}],["validity",{"2":{"398":1}}],["valid`",{"2":{"237":1,"496":1}}],["validationrequired",{"2":{"486":1,"488":1}}],["validations",{"0":{"447":1}}],["validation",{"0":{"391":1,"441":1,"444":1,"445":1,"448":1,"486":1},"1":{"392":1,"393":1,"394":1,"442":1,"443":1,"444":1,"445":2,"446":3,"447":2,"448":1,"487":1},"2":{"391":1,"431":1,"433":1,"434":2,"443":1,"444":2,"445":1,"446":5,"447":3,"448":4,"466":1,"486":1,"487":1,"488":2}}],["validating",{"2":{"237":1,"429":1,"496":1}}],["validated",{"2":{"393":1,"397":1,"417":2,"445":1,"471":1}}],["validatesession",{"2":{"445":2}}],["validatesequencewalletproof",{"2":{"237":2,"496":2}}],["validates",{"2":{"392":1,"431":1}}],["validate",{"2":{"237":1,"391":1,"392":1,"411":2,"420":1,"442":1,"445":1,"496":1}}],["validator",{"2":{"237":3,"496":3}}],["valid",{"0":{"416":1},"2":{"130":1,"133":1,"157":1,"183":1,"244":1,"282":1,"333":1,"354":1,"397":1,"403":1,"411":4,"413":1,"423":1,"424":1,"428":1,"429":1,"436":1,"445":1,"452":1,"471":1,"515":1}}],["jxlg9b",{"2":{"452":1}}],["join",{"2":{"451":1,"453":1}}],["joined",{"2":{"409":1,"410":1}}],["job",{"2":{"39":2}}],["jobid",{"2":{"39":1}}],["jelly",{"2":{"357":1}}],["jq",{"2":{"52":1,"185":1}}],["java",{"2":{"242":1,"501":1}}],["javascript",{"2":{"15":1,"237":1,"239":1,"496":1,"498":1}}],["jacket",{"2":{"43":1}}],["jpg",{"2":{"32":1}}],["july",{"2":{"381":1}}],["just",{"2":{"19":1,"32":1,"46":1,"91":1,"101":1,"105":1,"125":2,"128":1,"133":1,"146":1,"203":1,"236":1,"242":1,"243":3,"334":1,"378":1,"495":1,"501":1}}],["jurisdictions",{"2":{"11":1,"13":1}}],["js",{"0":{"16":1,"28":1,"48":1,"188":1,"189":1,"190":1,"264":2,"268":1,"376":1},"2":{"15":1,"16":1,"25":1,"28":1,"35":1,"38":1,"39":2,"47":1,"61":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"188":2,"190":1,"191":1,"241":1,"242":1,"243":2,"267":3,"268":3,"375":1,"376":3,"500":1,"501":1}}],["jsonrpcprovider",{"2":{"6":1,"237":1,"390":1,"496":1}}],["json",{"2":{"3":2,"25":3,"32":1,"38":3,"39":6,"43":1,"44":1,"52":1,"106":2,"168":3,"169":3,"171":3,"173":3,"175":3,"177":3,"180":3,"182":4,"183":3,"184":1,"185":1,"186":1,"267":2,"324":3,"325":2,"326":1,"327":1,"331":1,"332":3,"333":1,"339":1,"375":2,"449":1,"450":1,"468":1,"469":1}}],["jwt",{"2":{"2":1,"3":1,"94":1,"452":1}}],["1712775416",{"2":{"468":1}}],["1712775116",{"2":{"468":1}}],["177514099z",{"2":{"464":1}}],["1st",{"2":{"459":1}}],["167168",{"2":{"464":1}}],["1699440462",{"2":{"476":1}}],["1699440462686",{"2":{"476":1}}],["1699440762",{"2":{"476":1}}],["1699442705",{"2":{"440":1,"478":1}}],["1699442705965",{"2":{"440":1,"478":1}}],["1699443005",{"2":{"440":1,"478":1}}],["1600000000",{"2":{"451":1,"452":1,"453":1,"459":3,"460":1}}],["1600086400",{"2":{"451":1,"452":1,"453":1,"459":1,"460":1}}],["160",{"2":{"51":2,"427":1}}],["191",{"0":{"409":1},"2":{"409":1,"451":2,"469":1}}],["1147",{"2":{"476":1}}],["11",{"0":{"334":1},"2":{"436":4}}],["1155",{"0":{"177":1,"270":1,"503":1},"2":{"22":1,"32":2,"43":2,"44":2,"168":2,"270":2,"329":1,"331":1,"503":2}}],["102951017z",{"2":{"436":1}}],["102950917z",{"2":{"436":1}}],["109787921z",{"2":{"436":1}}],["109234880945084120673",{"2":{"436":4}}],["10",{"0":{"333":1},"2":{"436":2,"445":1}}],["10^decimals",{"2":{"118":1}}],["10^18",{"2":{"118":1}}],["1000",{"2":{"459":1}}],["1000000000000000000",{"2":{"118":1,"184":1,"186":1,"269":3,"273":1,"459":1,"502":3,"506":1}}],["10000000000",{"2":{"66":1}}],["100",{"2":{"67":1,"262":1}}],["14",{"2":{"104":1}}],["1447300",{"2":{"99":1}}],["18",{"2":{"52":2,"118":2,"119":1}}],["1271",{"2":{"397":1,"408":1,"414":1}}],["123",{"2":{"251":1,"332":2}}],["123456",{"2":{"445":1}}],["1234",{"2":{"39":3}}],["1200x400",{"2":{"244":2,"256":1}}],["128",{"2":{"52":1}}],["12",{"0":{"200":1,"212":1,"335":1},"2":{"44":2,"200":1,"212":1,"214":1,"420":1}}],["158456331411102687640546264635",{"2":{"43":1}}],["13+",{"2":{"188":1}}],["13",{"0":{"190":1},"2":{"188":1,"190":1}}],["131092",{"2":{"32":1}}],["137",{"2":{"25":1,"32":1,"38":1,"39":1,"66":1,"81":1,"85":1,"86":1,"217":1,"225":1,"440":2,"451":1,"459":1,"476":1,"478":1}}],["1",{"0":{"94":1,"277":1,"313":1,"324":1,"351":1,"510":1},"2":{"3":13,"25":1,"38":2,"39":3,"52":3,"96":1,"97":1,"99":3,"107":1,"118":4,"125":1,"126":1,"140":1,"143":1,"180":1,"182":2,"198":1,"200":2,"206":1,"211":1,"212":2,"244":2,"249":1,"256":1,"309":2,"311":1,"319":1,"320":1,"324":1,"333":1,"335":1,"339":1,"352":1,"410":2,"415":1,"416":1,"418":2,"429":2,"447":2,"448":2,"451":1,"452":1,"453":2,"459":2,"460":1,"464":2,"465":10,"468":1}}],["3843b48b32b98fa311cbcd1604c0c6931f03c75075212e8bb4c06d02a3d53509",{"2":{"465":1}}],["365294f408bcc5913b44110544bb611255d05666f89fd182900330bc117744fa563c2afcf74808b719ac7a29492099c6",{"2":{"465":1}}],["36000",{"2":{"249":1}}],["39381",{"2":{"459":1}}],["3rd",{"2":{"352":1}}],["32",{"2":{"278":1,"420":1,"436":3,"511":1}}],["3+",{"2":{"158":1}}],["30",{"2":{"149":1}}],["3",{"0":{"279":1,"326":1,"512":1},"2":{"3":1,"99":2,"108":1,"244":2,"256":1,"339":1,"364":1,"415":1,"416":2,"418":2,"423":1,"429":1,"436":1}}],["x19ethereum",{"2":{"409":1}}],["xattr",{"2":{"145":1}}],["xavier",{"2":{"44":1}}],["xavi",{"2":{"44":1}}],["xcodeproj",{"2":{"145":3}}],["xcode",{"0":{"145":1},"2":{"145":2}}],["xmlns",{"2":{"99":4}}],["xml",{"2":{"99":6}}],["xyz",{"2":{"16":1,"17":1,"109":1}}],["x",{"0":{"200":1,"212":1},"2":{"2":1,"16":1,"25":2,"28":1,"38":2,"39":4,"52":1,"107":1,"128":1,"140":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":1,"185":1,"200":1,"212":1,"214":1,"335":1,"352":2,"466":4}}],["x27",{"2":{"0":1,"3":1,"15":2,"16":8,"17":1,"19":1,"25":24,"28":7,"31":1,"32":5,"35":1,"38":16,"39":22,"41":1,"43":1,"44":2,"45":1,"47":1,"50":1,"52":4,"58":1,"59":6,"60":1,"63":2,"64":2,"66":6,"67":6,"68":5,"70":4,"76":9,"77":9,"80":6,"81":17,"85":18,"86":22,"87":5,"88":2,"92":1,"96":1,"97":1,"99":8,"101":6,"102":3,"104":1,"105":2,"106":2,"107":2,"108":1,"110":1,"111":1,"112":1,"114":1,"115":3,"116":1,"117":1,"119":1,"120":4,"121":1,"122":4,"124":4,"125":7,"128":5,"129":1,"130":1,"131":1,"133":3,"134":2,"135":2,"140":1,"146":3,"147":1,"168":16,"169":17,"171":13,"173":13,"175":13,"177":14,"180":14,"182":2,"183":2,"184":14,"185":6,"186":6,"189":4,"190":3,"191":2,"194":10,"204":1,"217":4,"220":1,"225":4,"226":4,"235":1,"236":5,"237":16,"240":1,"242":3,"243":3,"244":5,"246":2,"248":1,"251":1,"266":2,"269":17,"270":16,"271":10,"272":10,"275":2,"277":4,"278":2,"279":1,"280":4,"281":2,"282":4,"283":1,"285":1,"303":6,"305":3,"307":1,"309":1,"324":1,"326":3,"333":1,"334":1,"339":4,"346":2,"351":3,"352":3,"353":2,"354":1,"357":1,"361":6,"365":1,"379":1,"386":1,"388":1,"390":4,"391":2,"392":1,"397":1,"398":5,"399":1,"402":1,"403":2,"404":2,"405":1,"406":1,"409":2,"410":28,"411":1,"417":1,"418":8,"419":1,"421":12,"428":2,"429":2,"430":24,"432":1,"433":5,"434":4,"435":24,"436":4,"437":4,"443":2,"445":1,"450":1,"452":2,"459":5,"465":1,"466":2,"468":1,"469":2,"477":3,"479":3,"482":3,"485":3,"487":2,"488":4,"490":1,"491":1,"492":1,"494":1,"495":5,"496":16,"499":1,"501":3,"502":17,"503":16,"504":10,"505":10,"508":2,"510":4,"511":2,"512":1,"513":4,"514":2,"515":4}}],["hypervisor",{"2":{"354":1}}],["human",{"2":{"119":1,"125":1}}],["html",{"2":{"99":1}}],["http",{"2":{"15":2,"35":1,"47":1,"85":2,"86":2,"99":4,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"390":1}}],["https",{"2":{"3":8,"6":1,"15":2,"16":2,"17":2,"19":2,"25":2,"26":1,"28":1,"32":7,"34":6,"36":1,"38":2,"39":5,"43":6,"44":4,"47":2,"52":5,"60":1,"99":2,"104":1,"109":1,"157":1,"168":3,"169":3,"171":3,"173":3,"175":3,"177":3,"180":6,"182":2,"184":2,"185":1,"190":1,"192":1,"205":1,"215":1,"231":1,"233":1,"237":2,"240":1,"243":1,"244":2,"256":1,"268":2,"332":1,"335":2,"339":1,"369":1,"370":1,"376":2,"436":4,"451":1,"464":1,"465":1,"466":1,"496":2,"499":1}}],["h",{"2":{"25":2,"38":2,"39":4,"52":1,"131":1,"133":2,"138":2,"143":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":1,"185":1,"466":1}}],["hint",{"2":{"248":1}}],["hit",{"2":{"145":2}}],["hides",{"2":{"128":1}}],["hide",{"2":{"128":1}}],["hidden",{"2":{"93":1}}],["highly",{"2":{"188":1,"283":1,"285":1,"302":1}}],["high",{"2":{"20":1,"145":1,"148":1,"149":1,"468":1}}],["higher",{"2":{"4":1}}],["history",{"0":{"172":1,"173":1,"174":1,"175":1},"1":{"173":1,"175":1},"2":{"20":2,"22":2,"112":1,"173":6,"175":6}}],["horizon",{"2":{"366":3}}],["horik",{"2":{"44":1}}],["home",{"2":{"189":3}}],["hope",{"2":{"115":1,"116":1,"459":1}}],["hooks",{"2":{"189":2}}],["hook",{"2":{"64":1,"87":2,"88":1,"189":1,"435":1,"447":1,"448":2}}],["house",{"2":{"20":1}}],["hosted",{"2":{"351":1,"352":1}}],["hosting",{"2":{"323":1,"366":1}}],["hosts",{"2":{"16":1,"17":1,"157":1}}],["host",{"2":{"15":1,"47":1,"248":1}}],["however",{"2":{"11":1,"43":1,"79":1,"105":1,"106":1,"112":1,"309":1,"443":1,"465":1}}],["how",{"0":{"113":1,"148":1,"189":1,"190":1,"322":1,"477":1,"479":1,"482":1,"485":1,"487":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1},"2":{"3":1,"14":1,"24":2,"27":1,"32":1,"37":2,"41":1,"68":1,"80":2,"93":1,"101":1,"106":1,"119":2,"121":1,"123":1,"125":1,"128":1,"129":1,"131":1,"143":1,"146":1,"155":1,"156":1,"161":1,"237":1,"243":1,"285":1,"304":1,"308":1,"335":1,"341":1,"357":1,"362":1,"367":1,"422":1,"427":1,"467":1,"496":1}}],["he",{"2":{"445":1}}],["hence",{"2":{"431":1}}],["henrique",{"2":{"44":1}}],["held",{"2":{"492":1}}],["hello",{"2":{"409":1,"481":1}}],["helps",{"2":{"131":1,"143":1,"459":1}}],["helper",{"2":{"118":1}}],["helpful",{"2":{"19":1,"164":1,"175":1,"177":1,"308":1}}],["help",{"2":{"11":1,"19":1,"41":1,"93":1,"105":1,"115":1,"116":1,"168":1,"169":1,"173":1,"177":1,"191":1,"237":1,"275":1,"323":1,"366":1,"496":1,"508":1}}],["hexdataslice",{"2":{"420":1}}],["hexzeropad",{"2":{"420":1}}],["hex",{"2":{"409":1,"410":1}}],["hexlify",{"2":{"278":1,"511":1}}],["hextoaddress",{"2":{"184":1}}],["hexadecimal",{"2":{"102":1,"118":1,"285":2,"286":1,"288":1,"289":1,"290":1,"291":2,"293":1,"295":1,"321":2}}],["hesitate",{"2":{"116":1}}],["headless",{"2":{"355":1}}],["head",{"2":{"325":1,"334":1}}],["header",{"2":{"145":1,"339":1,"466":2}}],["headers",{"2":{"2":1,"182":1}}],["heavily",{"2":{"307":1}}],["heard",{"2":{"121":1}}],["healthok",{"2":{"464":1}}],["healthy",{"2":{"20":1}}],["health",{"2":{"20":1,"466":1}}],["here",{"2":{"15":1,"21":1,"22":1,"43":1,"44":1,"47":1,"68":1,"80":1,"102":1,"109":1,"129":1,"153":1,"155":1,"156":1,"175":1,"177":1,"190":2,"197":1,"201":3,"210":1,"214":4,"221":1,"230":1,"233":1,"237":1,"244":1,"356":1,"357":2,"360":1,"435":1,"469":1,"496":1}}],["had",{"2":{"367":1}}],["happen",{"2":{"352":1,"446":1}}],["happens",{"2":{"145":1}}],["hard",{"0":{"466":1}}],["hardware",{"2":{"158":1,"351":1,"354":1}}],["harmoniously",{"2":{"199":1,"213":1}}],["handling",{"2":{"431":1}}],["handlegooglelogin",{"2":{"435":3}}],["handles",{"2":{"117":1,"432":1}}],["handlers",{"2":{"244":1}}],["handler",{"2":{"102":1,"111":1,"117":1,"435":3}}],["handle",{"2":{"6":2,"34":1,"101":1,"125":1,"163":1,"355":1,"435":1,"467":1,"488":1}}],["hand",{"2":{"44":1,"145":1,"165":1}}],["hat",{"2":{"43":2}}],["haiti",{"2":{"13":1}}],["hawaii",{"2":{"12":1}}],["having",{"2":{"5":1,"93":1,"244":1,"490":1}}],["haven",{"2":{"104":1,"106":1,"466":1}}],["have",{"2":{"5":1,"19":1,"20":1,"23":1,"41":1,"43":1,"46":1,"51":1,"59":1,"99":1,"104":1,"105":1,"116":2,"118":1,"120":1,"122":1,"124":1,"125":1,"128":2,"130":1,"131":1,"145":1,"146":2,"149":1,"156":1,"158":1,"159":1,"161":1,"163":1,"165":1,"236":1,"237":2,"243":1,"244":1,"269":1,"284":1,"309":1,"310":1,"314":1,"324":1,"333":1,"354":1,"361":1,"403":1,"417":1,"424":1,"428":1,"429":1,"431":1,"459":1,"461":1,"463":1,"466":1,"473":1,"495":1,"496":2,"502":1}}],["hashalgorithm",{"2":{"465":1}}],["hashtree",{"2":{"430":7}}],["hashed",{"2":{"417":1,"430":1}}],["hasheddata",{"2":{"410":2}}],["hashes",{"2":{"173":1,"319":1,"397":1,"430":1}}],["hashfromstring",{"2":{"180":2}}],["hash",{"0":{"417":1,"418":1},"1":{"418":1,"420":1},"2":{"180":2,"186":1,"287":1,"296":1,"299":1,"300":1,"301":1,"319":1,"354":3,"391":1,"392":1,"396":1,"397":1,"405":1,"411":6,"420":2,"427":1,"428":1,"429":1,"435":3,"439":2,"475":1}}],["hasn",{"2":{"128":1,"351":1}}],["has",{"2":{"0":1,"19":1,"61":1,"119":2,"128":1,"164":1,"166":1,"241":1,"261":1,"266":1,"310":1,"365":1,"389":1,"390":1,"397":1,"412":1,"415":1,"429":2,"434":2,"447":2,"448":1,"500":1}}],["ubiquitous",{"2":{"309":1}}],["umd",{"2":{"268":3,"376":3}}],["ue",{"2":{"133":1}}],["ufunctions",{"2":{"133":1}}],["ufunction",{"2":{"131":1,"133":6}}],["uauthenticator",{"2":{"130":2,"131":1,"133":5,"135":1}}],["uobject",{"2":{"128":1,"130":1,"133":3}}],["utils",{"2":{"269":3,"270":2,"271":2,"272":2,"278":2,"280":1,"282":1,"390":2,"410":1,"418":3,"420":7,"430":4,"502":3,"503":2,"504":2,"505":2,"511":2,"513":1,"515":1}}],["utility",{"2":{"81":1,"280":1,"513":1}}],["utilizing",{"2":{"3":1,"355":1}}],["utilized",{"2":{"242":1,"501":1}}],["utilize",{"2":{"2":1,"45":1,"85":1,"87":1}}],["utf",{"2":{"99":2}}],["ui",{"0":{"112":1,"114":1,"133":1},"1":{"113":1,"114":1,"115":2,"116":2},"2":{"93":2,"106":1,"112":6,"113":1,"114":2,"115":1,"116":1,"128":6,"133":1,"134":1,"146":1,"163":1,"165":1}}],["uint96",{"2":{"430":1}}],["uint32",{"2":{"425":1}}],["uint160",{"2":{"427":1}}],["uint16",{"2":{"424":1,"429":1}}],["uint80",{"2":{"414":1}}],["uint8",{"2":{"304":1,"410":1,"418":4,"427":1,"429":1}}],["uint256",{"2":{"43":1,"44":1,"51":1,"125":1,"269":4,"270":4,"271":2,"272":2,"302":1,"333":2,"418":2,"427":2,"430":2,"459":3,"502":4,"503":4,"504":2,"505":2}}],["uint64",{"2":{"39":1,"183":1}}],["uint",{"2":{"39":1,"304":1}}],["ultimate",{"2":{"90":1,"202":1,"377":1}}],["ux",{"2":{"54":1}}],["unauthenticated",{"2":{"429":1}}],["unauthorized",{"2":{"157":1,"365":1}}],["unbalanced",{"2":{"426":1}}],["unusable",{"2":{"397":1,"400":1,"403":1}}],["unknown",{"2":{"397":1}}],["unsanitized",{"2":{"397":1}}],["unsafe",{"2":{"307":1}}],["unstoppable",{"2":{"32":1}}],["unpkg",{"2":{"268":1,"376":1}}],["unparalleled",{"2":{"123":1}}],["unexpected",{"2":{"110":1}}],["unnoticed",{"2":{"106":1}}],["unfamiliar",{"2":{"101":1,"102":1,"111":1,"117":1}}],["underwent",{"2":{"380":1}}],["underlying",{"2":{"346":1,"386":1,"388":1}}],["understand",{"2":{"304":1,"308":1}}],["understanding",{"0":{"304":1},"2":{"125":1,"467":1}}],["understands",{"2":{"116":1}}],["under",{"2":{"93":3,"99":1,"105":1,"110":1,"112":2,"119":1,"138":2,"145":2,"155":1,"157":2,"332":1,"333":1,"416":1,"490":1,"491":1}}],["undefined",{"2":{"78":1,"184":1,"186":1,"435":1}}],["unless",{"2":{"108":1,"125":1,"285":1}}],["unleash",{"2":{"91":1,"203":1,"378":1}}],["unlocked",{"2":{"490":1}}],["unlock",{"0":{"491":1},"2":{"90":1,"202":1,"364":2,"377":1,"491":2,"492":1}}],["unlimited",{"2":{"51":1,"403":2,"413":1}}],["unlikely",{"2":{"492":1}}],["unlike",{"2":{"51":1}}],["until",{"2":{"59":1,"128":1,"189":1,"361":1,"444":1,"492":1}}],["unix",{"2":{"471":1}}],["uniswap",{"2":{"266":1}}],["universal",{"2":{"91":1,"165":3,"166":1,"203":1,"373":1,"378":1}}],["unique",{"0":{"177":1},"2":{"22":1,"80":1,"110":1,"156":1,"324":1,"390":1,"452":1}}],["unit",{"2":{"32":1,"44":1}}],["unitypackage",{"2":{"106":2}}],["unityplayer",{"2":{"99":2}}],["unityplayeractivity",{"2":{"99":2}}],["unityactivity",{"2":{"99":2}}],["unitythemeselector",{"2":{"99":2}}],["unity3d",{"2":{"99":3}}],["unity",{"0":{"18":1,"30":1},"2":{"18":1,"30":1,"57":3,"99":4,"101":1,"102":3,"104":2,"105":3,"106":3,"107":3,"108":1,"109":2,"111":1,"114":1,"115":2,"117":1,"161":1,"163":1,"165":1,"247":1,"307":3,"355":1,"357":2}}],["united",{"2":{"11":1}}],["unverified",{"2":{"19":1}}],["unreal",{"0":{"18":1,"30":1,"129":1,"145":1},"2":{"18":1,"30":1,"129":1,"135":1,"140":3,"141":1,"145":5,"161":1,"163":1,"165":1,"247":1,"355":1,"357":1}}],["u",{"2":{"17":1,"29":1,"49":1}}],["ukraine",{"2":{"13":1}}],["uri",{"0":{"332":1},"2":{"43":2,"44":4}}],["uris",{"2":{"3":1,"155":1}}],["urls",{"2":{"157":1}}],["url",{"0":{"327":1},"2":{"3":2,"6":2,"32":2,"39":1,"44":1,"73":1,"95":2,"96":2,"97":2,"99":3,"104":2,"108":1,"110":1,"130":1,"180":5,"256":1,"283":2,"327":1,"331":1,"332":2,"339":1}}],["usual",{"2":{"434":2}}],["usually",{"2":{"125":1,"333":1,"459":1}}],["usdc",{"2":{"50":1,"52":2,"184":2,"186":2,"261":1,"347":1}}],["us",{"0":{"12":1},"2":{"11":1,"116":1,"125":1,"237":1,"351":1,"466":1,"496":1}}],["usable",{"2":{"50":1,"433":1}}],["usa",{"2":{"11":1}}],["usage",{"0":{"4":1,"31":1,"33":1,"194":1,"207":1,"217":1,"224":1,"232":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"225":1,"226":1},"2":{"27":1,"157":1,"191":1,"355":1,"357":1,"417":1}}],["useweb3react",{"2":{"226":2}}],["useismounted",{"2":{"189":2}}],["useeffect",{"2":{"189":1,"435":3}}],["usequencewallet",{"0":{"130":1},"2":{"128":6,"130":4}}],["useopenwalletmodal",{"2":{"88":3}}],["useopenconnectmodal",{"2":{"87":3}}],["useaccount",{"2":{"87":3}}],["usecheckoutmodal",{"2":{"64":3}}],["userid",{"2":{"436":2}}],["useraddress",{"2":{"182":2,"183":1,"277":1,"280":1,"510":1,"513":1}}],["userwallet",{"2":{"128":1}}],["user",{"2":{"52":3,"59":1,"87":2,"94":3,"95":1,"101":1,"134":1,"158":1,"163":2,"181":1,"182":1,"183":1,"235":1,"236":6,"237":1,"243":1,"244":5,"246":1,"254":1,"257":2,"258":3,"259":1,"266":9,"275":4,"279":1,"281":1,"351":3,"352":4,"353":2,"355":2,"361":1,"363":2,"364":4,"366":2,"367":4,"432":3,"434":4,"435":1,"436":1,"443":2,"445":2,"446":1,"449":1,"452":3,"467":1,"468":1,"469":2,"494":1,"495":6,"496":1,"508":4,"512":1,"514":1}}],["users",{"0":{"234":1,"493":1},"1":{"235":1,"236":1,"237":1,"494":1,"495":1,"496":1},"2":{"50":2,"90":1,"91":2,"95":1,"106":1,"112":1,"133":1,"165":6,"181":1,"202":1,"203":2,"232":1,"236":2,"243":8,"244":3,"256":1,"260":2,"261":1,"263":3,"274":1,"275":2,"284":1,"307":1,"341":3,"353":1,"362":3,"363":1,"365":1,"366":1,"367":3,"370":1,"377":1,"378":2,"441":1,"442":1,"443":1,"495":2,"507":1,"508":2}}],["usefulness",{"2":{"123":1}}],["useful",{"2":{"31":1,"70":1,"102":1,"105":2,"118":1,"263":1,"275":1,"508":1}}],["usestate",{"2":{"435":4}}],["usesessionhash",{"2":{"435":5}}],["uses",{"2":{"20":1,"43":1,"44":1,"95":1,"110":1,"199":3,"213":3,"354":1,"367":1,"386":1}}],["use",{"0":{"189":1,"190":1},"2":{"3":4,"5":1,"15":1,"20":2,"23":1,"27":1,"43":3,"45":3,"47":1,"51":1,"64":1,"80":2,"81":1,"89":1,"93":2,"99":1,"102":3,"106":1,"111":1,"112":1,"115":1,"117":1,"118":1,"119":2,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":1,"128":1,"129":1,"130":2,"131":1,"135":2,"138":1,"139":1,"143":1,"146":2,"147":1,"158":1,"163":2,"175":2,"177":2,"181":1,"189":1,"190":4,"191":1,"199":1,"200":1,"212":1,"213":1,"232":1,"236":1,"239":1,"242":1,"244":2,"254":1,"262":1,"281":1,"283":2,"284":1,"303":5,"305":4,"306":1,"309":2,"310":1,"311":1,"314":1,"321":1,"326":1,"333":1,"338":1,"344":1,"354":1,"364":1,"399":1,"435":1,"444":1,"447":1,"449":1,"450":1,"457":1,"469":1,"495":1,"498":1,"501":1,"514":1}}],["usedisconnect",{"2":{"87":1}}],["used",{"0":{"188":1},"2":{"2":1,"20":1,"46":1,"59":1,"70":1,"72":1,"105":1,"120":1,"122":1,"124":1,"133":1,"139":1,"158":1,"189":1,"205":1,"222":1,"231":1,"249":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"294":1,"295":1,"297":1,"298":1,"299":1,"300":1,"307":1,"314":1,"354":1,"357":1,"361":1,"367":1,"399":1,"400":1,"417":1,"420":1,"422":1,"423":1,"425":1,"426":1,"429":1,"431":1,"434":2,"435":5,"452":1,"457":1,"465":1,"475":1,"478":1}}],["using",{"0":{"7":1,"81":1,"189":1,"190":1,"192":1,"199":1,"200":1,"205":1,"212":1,"213":1,"215":1,"222":1,"231":1,"276":1,"509":1},"1":{"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"232":1,"233":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"510":1,"511":1,"512":1,"513":1,"514":1,"515":1},"2":{"2":1,"5":1,"6":1,"16":2,"19":1,"20":3,"24":1,"25":1,"28":3,"37":1,"38":1,"40":3,"58":1,"59":1,"65":1,"68":1,"79":1,"81":1,"87":1,"88":1,"93":1,"105":1,"106":1,"108":1,"109":1,"112":2,"119":2,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"128":1,"130":2,"131":1,"134":1,"165":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"179":1,"184":1,"186":2,"188":2,"190":4,"191":2,"192":1,"198":1,"199":3,"200":1,"205":1,"206":1,"211":1,"212":1,"213":3,"214":1,"215":1,"231":1,"236":1,"237":1,"243":2,"244":1,"266":2,"274":1,"280":1,"283":3,"313":1,"321":1,"347":1,"352":1,"354":1,"355":1,"357":2,"361":1,"363":1,"364":1,"367":1,"370":1,"374":1,"389":1,"391":1,"397":1,"398":1,"419":1,"431":1,"433":1,"434":2,"435":1,"437":1,"439":1,"443":1,"448":1,"466":1,"468":1,"495":1,"496":1,"507":1,"513":1}}],["upgradeability",{"2":{"347":1}}],["upgraded",{"2":{"346":1}}],["upi",{"2":{"341":1,"362":1}}],["upon",{"2":{"210":1,"220":1,"282":1,"475":1,"478":1,"515":1}}],["ups",{"2":{"165":1}}],["uproject",{"2":{"146":1}}],["updating",{"0":{"335":1},"2":{"105":1,"106":1,"387":1,"391":1,"403":1}}],["updateimagehash",{"0":{"396":1},"1":{"397":1,"399":1,"400":1,"401":1,"402":1,"403":1},"2":{"396":1,"398":2,"403":1,"404":2}}],["updateimplementation",{"2":{"388":3,"398":1,"403":1}}],["updateconfiguration",{"0":{"388":1},"1":{"389":1}}],["updated",{"2":{"266":1,"395":1,"398":1,"403":3,"404":2,"405":1,"406":2,"417":1}}],["updates",{"0":{"404":1},"2":{"39":1,"112":1,"396":1,"419":1,"423":1,"425":1}}],["update",{"0":{"159":1,"331":1,"386":1,"398":1},"1":{"387":1,"388":1,"389":1,"390":1,"391":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":1,"398":1,"399":2,"400":2,"401":2,"402":2,"403":2,"404":2,"405":2,"406":2},"2":{"1":1,"2":1,"3":1,"105":1,"146":1,"159":1,"160":1,"325":1,"335":1,"388":1,"398":3,"400":1,"435":1}}],["uptime",{"2":{"20":1,"464":1}}],["uploaded",{"2":{"327":1,"333":1}}],["upload",{"0":{"326":1},"2":{"3":6,"325":1,"326":2}}],["up",{"0":{"85":1,"86":1,"325":1,"328":1,"433":1,"434":1},"1":{"434":1,"435":1},"2":{"2":1,"14":1,"19":1,"95":1,"99":1,"108":1,"128":1,"129":1,"142":1,"145":1,"155":1,"158":1,"161":1,"220":1,"328":1,"333":1,"355":1,"433":1,"435":1}}],["kms",{"2":{"354":2}}],["kind",{"2":{"352":1}}],["kinds",{"2":{"16":1,"17":1,"191":1}}],["kitwalletprovider",{"2":{"86":7}}],["kitconfig",{"2":{"68":2,"81":2,"86":1}}],["kitcheckoutprovider",{"2":{"63":4}}],["kitprovider",{"2":{"63":2,"68":3,"81":2,"85":4,"86":6}}],["kit",{"0":{"79":1,"83":1,"84":1,"85":1,"202":1,"377":1},"1":{"80":1,"84":1,"203":1,"378":1},"2":{"63":6,"64":1,"68":2,"70":1,"79":3,"80":2,"81":3,"82":1,"83":1,"84":8,"85":3,"86":4,"87":1,"88":1,"89":1,"90":1,"91":1,"92":2,"191":1,"202":1,"203":1,"204":2,"357":1,"377":1,"378":1,"379":2}}],["kitexavier",{"2":{"44":1}}],["korea",{"2":{"13":1}}],["keccak256",{"2":{"411":2,"418":5,"420":2,"428":1,"429":1,"430":2}}],["kept",{"2":{"158":1,"449":1}}],["keepwalletopened",{"0":{"253":1},"2":{"253":2}}],["keeping",{"2":{"163":1}}],["keeps",{"2":{"19":1}}],["keep",{"2":{"2":1,"131":1,"253":1}}],["keyword",{"2":{"125":1}}],["keyboard",{"2":{"104":1}}],["keystore",{"2":{"143":1}}],["keys",{"0":{"275":1,"276":1,"365":1,"508":1,"509":1},"1":{"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"510":1,"511":1,"512":1,"513":1,"514":1,"515":1},"2":{"2":1,"58":1,"99":1,"110":2,"138":1,"243":1,"274":2,"275":3,"347":1,"353":1,"354":1,"357":2,"363":3,"364":6,"365":1,"367":3,"469":1,"507":2,"508":3}}],["key",{"0":{"91":1,"203":1,"278":1,"281":1,"363":1,"366":1,"367":1,"378":1,"511":1,"514":1},"1":{"364":1,"365":1,"366":1,"367":1},"2":{"2":4,"6":2,"14":1,"16":1,"25":2,"28":2,"38":2,"39":3,"58":2,"59":2,"81":1,"85":1,"86":1,"110":1,"138":2,"139":3,"143":1,"145":2,"147":1,"149":1,"168":3,"169":1,"171":2,"173":2,"175":1,"177":1,"180":1,"184":2,"237":1,"244":1,"275":2,"278":1,"279":1,"280":2,"281":1,"282":2,"283":1,"313":2,"343":1,"347":1,"352":1,"354":3,"357":2,"360":2,"361":2,"363":3,"364":9,"365":1,"366":6,"367":6,"433":2,"434":3,"435":2,"436":2,"437":2,"439":2,"440":2,"449":3,"459":1,"468":1,"469":3,"496":1,"508":2,"511":1,"512":1,"513":2,"514":1,"515":2}}],["known",{"2":{"125":1,"303":2,"305":2,"380":1,"405":1,"406":1,"420":1}}],["know",{"2":{"0":1,"267":1,"375":1}}],["pseudo",{"2":{"430":1}}],["philosophy",{"2":{"363":1}}],["phone",{"2":{"243":2,"352":1,"369":1,"370":1}}],["phase",{"2":{"145":2}}],["python",{"2":{"242":1,"501":1}}],["pcr2",{"2":{"465":1}}],["pcr1",{"2":{"465":1}}],["pcr0",{"0":{"464":1},"2":{"354":3,"464":2,"465":3,"466":2}}],["pc",{"0":{"98":1},"2":{"108":1,"141":1}}],["png",{"2":{"32":2,"44":1,"52":3,"244":2,"256":1}}],["pnpm",{"2":{"6":1,"16":1,"48":1,"57":1,"63":1,"84":1,"267":1,"359":1,"375":1}}],["pixel",{"2":{"436":1}}],["pinata",{"0":{"325":1},"2":{"323":1,"325":2,"326":1,"327":1,"332":1,"333":1}}],["piece",{"2":{"20":1}}],["pick",{"2":{"19":1,"108":1,"244":1,"259":1}}],["plugin",{"2":{"129":1,"135":1,"138":1,"146":1,"193":3,"194":1}}],["plugins",{"2":{"99":1,"146":3}}],["plain",{"2":{"236":1,"495":1}}],["platform",{"2":{"95":1,"128":1,"133":1,"351":1,"354":1}}],["platformspecificsetup",{"2":{"108":1}}],["platforms",{"0":{"368":1},"1":{"369":1,"370":1,"371":1},"2":{"94":1,"95":1}}],["players",{"2":{"165":1}}],["playercontroller",{"2":{"128":1}}],["player",{"2":{"96":2,"97":2,"99":3}}],["playground",{"2":{"70":1}}],["play",{"2":{"32":1,"104":1,"105":1,"106":1,"279":1,"357":1,"512":1}}],["placed",{"2":{"190":1}}],["places",{"2":{"112":1}}],["place",{"2":{"20":1,"63":1,"110":1,"143":2,"352":1,"353":1}}],["plan",{"2":{"14":1,"125":1}}],["please",{"2":{"1":1,"4":1,"11":1,"13":2,"14":1,"25":1,"27":1,"39":2,"57":1,"85":1,"93":1,"99":3,"101":1,"106":1,"112":1,"115":1,"116":1,"118":1,"119":1,"125":1,"130":2,"142":1,"145":1,"166":1,"168":1,"191":2,"222":1,"264":1,"443":1,"465":1}}],["person",{"2":{"410":1}}],["personalized",{"2":{"181":1}}],["perspective",{"2":{"266":1}}],["per",{"2":{"183":1}}],["period",{"2":{"150":1,"492":2}}],["perfectly",{"2":{"239":1,"498":1}}],["perfect",{"2":{"115":2,"163":1}}],["performing",{"2":{"449":1}}],["performs",{"2":{"352":1}}],["performed",{"2":{"284":1,"448":1,"466":1,"467":1}}],["perform",{"2":{"115":1,"250":1,"281":1,"446":1,"468":1,"514":1}}],["permission",{"2":{"2":1}}],["people",{"2":{"13":1}}],["packet",{"2":{"450":1,"451":1,"452":1,"453":1,"459":1,"460":1,"475":1,"478":1}}],["packetobjectcontents",{"2":{"450":1}}],["packaging",{"0":{"142":1},"1":{"143":1,"144":1,"145":1},"2":{"142":1,"145":2}}],["packaged",{"2":{"145":1}}],["packages",{"0":{"84":1},"2":{"84":1,"267":2,"375":2}}],["package",{"0":{"104":1},"1":{"105":1},"2":{"79":1,"84":2,"104":5,"105":1,"106":6,"115":1,"145":1,"156":1,"193":1,"206":2,"215":1,"223":1,"239":1,"243":1,"267":5,"375":4,"435":1,"498":1}}],["pair",{"2":{"343":1,"469":1}}],["paid",{"2":{"293":1}}],["pawn",{"2":{"128":2,"146":6}}],["pattern",{"2":{"429":1}}],["patterns",{"2":{"164":1,"166":1}}],["patch",{"2":{"107":2,"140":2}}],["path=",{"2":{"104":1}}],["path",{"2":{"99":1,"145":1,"244":3,"435":2}}],["pasting",{"2":{"125":1}}],["pasted",{"2":{"266":1}}],["paste",{"2":{"99":1,"102":1,"104":1,"155":1,"325":1,"332":1}}],["password",{"2":{"434":1}}],["passes",{"2":{"319":1,"320":1}}],["passed",{"2":{"19":1,"76":2,"77":2,"133":1,"196":1,"209":1,"210":1,"251":1,"391":1,"452":1}}],["passing",{"2":{"68":1,"70":1,"78":1}}],["pass",{"2":{"2":1,"3":3,"19":1,"24":1,"37":1,"64":1,"81":1,"126":1,"133":2,"168":1,"236":1,"244":3,"319":1,"320":1,"433":1,"434":1,"459":1,"495":1}}],["palette",{"2":{"70":1}}],["pageprops",{"2":{"190":2}}],["pages",{"0":{"189":1},"2":{"188":2,"199":3,"201":1,"213":3,"214":1}}],["pagesize",{"2":{"183":1}}],["page",{"2":{"63":1,"76":1,"77":1,"86":1,"94":1,"153":1,"164":2,"166":1,"183":4,"188":1,"189":2,"261":1,"285":1,"464":1,"467":1}}],["paytrie",{"2":{"341":1,"362":1}}],["paypal",{"2":{"243":1}}],["payloadno",{"2":{"450":1,"451":1}}],["payloads",{"0":{"449":1,"472":1},"1":{"450":1,"451":1,"452":1,"453":1,"454":1,"455":1,"456":1,"457":1,"458":1,"459":1,"460":1,"473":1,"474":1,"475":1,"476":1,"477":1,"478":1,"479":1,"480":1,"481":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"488":1},"2":{"439":1,"440":1,"449":2,"477":2,"479":2,"482":2,"485":2,"487":2,"488":3}}],["payload",{"0":{"450":1,"452":1,"453":1,"454":1,"460":1},"1":{"451":1,"452":1,"453":1,"454":1,"455":2,"456":2,"457":2,"458":2,"459":2,"460":1},"2":{"145":1,"273":1,"449":1,"450":7,"452":3,"453":2,"454":2,"459":2,"460":2,"472":2,"506":1}}],["payable",{"2":{"125":3}}],["payments",{"2":{"62":1}}],["payment",{"2":{"52":2,"260":2,"261":2,"341":1,"362":1}}],["pay",{"2":{"50":1,"52":2,"186":1,"347":1}}],["parent",{"2":{"429":1}}],["parentheses",{"2":{"125":1}}],["param",{"2":{"411":2}}],["parametersasobjectarray",{"2":{"125":2,"126":1}}],["parameters",{"0":{"195":1,"208":1,"218":1,"389":1,"393":1,"397":1},"1":{"196":1,"197":1,"198":1,"209":1,"210":1,"211":1,"219":1,"220":1},"2":{"125":5,"245":1,"422":1,"431":1}}],["parameter",{"2":{"71":1,"101":1,"118":1,"119":1,"125":1,"133":1,"134":1,"196":1,"209":1,"283":1,"285":1,"302":1,"452":1}}],["parallelize",{"2":{"50":1}}],["parallel",{"2":{"50":1,"51":1}}],["parse",{"2":{"41":1,"45":1}}],["partner",{"2":{"353":3}}],["parties",{"2":{"490":1,"492":2}}],["partial",{"2":{"353":1,"400":1}}],["particularly",{"2":{"165":1,"188":1,"275":1,"307":1,"508":1}}],["particular",{"0":{"177":1},"2":{"22":3,"175":1,"179":1}}],["parts",{"2":{"129":2}}],["part",{"2":{"50":1,"61":1,"156":1,"241":1,"469":1,"500":1}}],["party",{"2":{"11":1,"351":1,"352":1,"354":3,"490":4,"491":2,"492":1}}],["purchasing",{"2":{"263":1}}],["purchase",{"2":{"262":1,"263":2,"341":2,"362":2}}],["purpose",{"2":{"107":1,"117":1,"129":1}}],["purple",{"2":{"43":1}}],["pulling",{"2":{"339":1}}],["pull",{"2":{"82":1}}],["publishing",{"2":{"99":1}}],["published",{"2":{"19":1,"466":1}}],["publishcollection",{"2":{"3":1}}],["publicclient",{"2":{"207":1}}],["publically",{"2":{"117":1}}],["public",{"2":{"2":1,"3":1,"5":1,"101":1,"102":3,"111":2,"117":3,"158":2,"354":1,"411":1,"469":1}}],["publicly",{"2":{"2":2,"351":1,"466":1,"490":1}}],["putting",{"2":{"125":1}}],["put",{"2":{"3":3,"106":1}}],["portrait",{"2":{"128":2}}],["potentially",{"2":{"284":1,"307":1}}],["potential",{"2":{"91":1,"165":1,"203":1,"378":1}}],["points",{"2":{"112":1}}],["point",{"2":{"80":1,"118":1,"128":1,"284":1,"285":1,"331":1,"338":1}}],["powers",{"2":{"340":1,"354":1,"461":1}}],["power",{"2":{"91":1,"203":1,"355":1,"378":1}}],["powered",{"2":{"32":1,"99":5}}],["powerful",{"2":{"20":1}}],["possibilities",{"2":{"90":1,"126":1,"202":1,"377":1}}],["possible",{"2":{"2":1,"13":1,"70":1,"71":1,"128":1,"244":1,"266":1,"274":2,"305":1,"350":1,"353":1,"355":1,"426":1,"429":1,"469":1,"507":2}}],["position",{"0":{"71":1},"2":{"71":1}}],["post",{"2":{"25":2,"38":2,"39":5,"52":1,"101":1,"102":1,"104":1,"111":1,"117":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":2,"183":1,"185":1,"339":1}}],["popups",{"2":{"244":1}}],["popup",{"2":{"244":2}}],["popular",{"0":{"345":1},"2":{"19":2,"32":1,"41":1,"90":1,"91":1,"165":1,"202":1,"203":1,"307":1,"377":1,"378":1}}],["pop",{"2":{"165":1,"355":1}}],["pops",{"2":{"2":1}}],["polygonindexer",{"2":{"109":1}}],["polygon",{"0":{"171":1},"2":{"15":2,"17":1,"25":5,"29":1,"32":6,"34":3,"38":4,"39":4,"43":1,"44":1,"47":2,"85":2,"86":2,"102":1,"109":1,"111":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":1,"168":5,"169":5,"171":5,"173":5,"175":6,"177":5,"180":3,"184":1,"185":1,"194":1,"207":1,"237":1,"244":1,"283":1,"321":1,"440":1,"496":1}}],["policy",{"2":{"13":1,"354":1}}],["policies",{"2":{"11":1}}],["prudent",{"2":{"365":1}}],["pr",{"2":{"112":1,"116":1}}],["practices",{"2":{"41":1}}],["practice",{"2":{"41":1,"43":1,"45":2,"307":1}}],["primarily",{"2":{"422":1}}],["primary",{"2":{"275":2,"508":2}}],["primitive",{"2":{"343":1}}],["println",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"186":2}}],["privatekeystring",{"2":{"313":1}}],["private",{"2":{"138":1,"139":1,"140":1,"275":1,"278":1,"313":2,"354":1,"363":3,"364":1,"367":1,"469":1,"508":1,"511":1}}],["privately",{"2":{"3":1}}],["price",{"2":{"183":1,"297":1}}],["pricepertoken",{"2":{"183":1}}],["pricesort",{"2":{"339":1}}],["prices",{"2":{"112":1}}],["pricing",{"0":{"4":1},"2":{"50":1}}],["prism",{"2":{"44":1}}],["priority",{"2":{"298":1}}],["prioritize",{"2":{"165":1}}],["prior",{"2":{"1":1,"3":1,"99":2,"128":1,"133":1}}],["prerequisites",{"0":{"463":1}}],["prepare",{"0":{"324":1}}],["prepared",{"2":{"159":1,"346":1}}],["pre",{"2":{"309":1,"310":1}}],["preview",{"2":{"332":1}}],["previously",{"2":{"266":1,"313":1,"465":1}}],["previous",{"2":{"3":1,"273":1,"465":1,"506":1}}],["prevent",{"2":{"157":1,"263":1,"435":1}}],["present",{"2":{"452":1}}],["presented",{"2":{"148":1}}],["press",{"2":{"104":1}}],["prefixedmessage",{"2":{"409":2}}],["prefilling",{"2":{"262":1}}],["prefabs",{"2":{"93":1,"112":1}}],["prefab",{"2":{"93":2,"112":1}}],["preference",{"2":{"367":1}}],["preferred",{"2":{"50":1,"165":1}}],["prefer",{"2":{"3":1,"165":1,"283":1}}],["proxy",{"2":{"388":1,"420":2}}],["pros",{"0":{"344":1,"347":1}}],["proofstring",{"2":{"237":1,"496":1}}],["proof",{"2":{"236":2,"237":6,"244":2,"249":1,"250":1,"452":2,"466":1,"495":2,"496":6}}],["prove",{"2":{"236":1,"495":1}}],["provisioning",{"2":{"144":1}}],["providing",{"2":{"90":1,"120":1,"122":1,"124":1,"125":1,"202":1,"351":1,"377":1}}],["provided",{"2":{"58":1,"78":3,"105":1,"118":1,"120":1,"122":1,"124":1,"180":1,"255":1,"283":1,"285":3,"303":2,"307":1,"309":1,"310":1,"321":1,"360":1,"386":1,"392":1,"398":1,"411":4,"425":1,"428":1,"434":1,"452":1}}],["provides",{"2":{"32":1,"37":1,"70":1,"79":1,"94":1,"107":1,"126":1,"140":1,"162":1,"165":1,"307":1,"315":1,"351":1,"353":1,"467":1,"491":1}}],["provide",{"2":{"15":1,"19":1,"35":1,"47":1,"57":1,"80":1,"81":1,"91":1,"93":1,"112":3,"125":3,"139":2,"158":1,"159":1,"163":1,"164":1,"166":1,"203":1,"275":1,"285":1,"301":1,"302":2,"303":1,"304":1,"307":1,"309":1,"332":1,"342":1,"351":1,"355":1,"378":1,"429":4,"434":1,"443":1,"508":1}}],["providerurl",{"2":{"128":1,"130":2}}],["provider",{"2":{"6":4,"20":1,"63":1,"130":1,"155":1,"156":1,"184":3,"190":1,"237":2,"244":1,"257":2,"261":1,"280":1,"341":1,"362":1,"390":2,"433":1,"435":2,"443":2,"496":2,"513":1}}],["providers",{"0":{"154":1},"1":{"155":1,"156":1},"2":{"5":1,"6":1,"11":1,"20":1,"84":1,"154":1,"237":1,"257":1,"260":2,"261":1,"341":4,"362":4,"390":1,"433":1,"443":1,"496":1}}],["produce",{"0":{"188":1},"2":{"188":1}}],["products",{"2":{"165":1}}],["production",{"2":{"157":1,"357":1}}],["product",{"2":{"112":1}}],["proper",{"2":{"155":2,"397":1}}],["properly",{"2":{"143":1,"158":1}}],["properties",{"0":{"45":1,"423":1},"1":{"424":1,"425":1,"426":1,"427":1,"428":1,"429":1},"2":{"32":1,"43":4,"44":2,"45":6,"423":1}}],["prone",{"2":{"125":1}}],["probably",{"2":{"121":1}}],["problem",{"2":{"20":1}}],["problems",{"2":{"0":1,"131":1}}],["progressively",{"2":{"243":1}}],["progress",{"2":{"112":1}}],["program",{"2":{"39":1,"386":1}}],["prompted",{"2":{"266":1,"332":1}}],["prompt",{"2":{"104":1,"106":1,"220":1,"236":1,"266":1,"447":1,"472":1,"495":1}}],["procedure",{"2":{"463":1}}],["proceed",{"2":{"94":1}}],["process",{"2":{"59":2,"91":1,"104":1,"115":1,"125":3,"131":2,"145":1,"164":1,"203":1,"244":1,"275":1,"333":1,"361":2,"378":1,"433":2,"434":2,"435":2,"436":2,"437":2,"439":2,"440":2,"508":1}}],["protocol",{"2":{"183":1,"243":1,"247":1,"339":1}}],["protocols",{"2":{"23":1,"266":1}}],["prototyp",{"2":{"180":6}}],["proto",{"2":{"180":2}}],["protects",{"2":{"350":1,"353":1}}],["protection",{"2":{"251":1,"353":1,"366":1,"443":1}}],["protected",{"2":{"158":1,"351":1,"489":1}}],["protect",{"2":{"51":1,"367":1}}],["pro",{"2":{"24":1,"31":1,"37":1,"145":1,"168":1,"433":1,"435":1,"436":2,"437":1}}],["projectfilesios",{"2":{"145":1}}],["projectname",{"0":{"74":1}}],["projectaccesskey",{"2":{"59":1,"81":1,"85":2,"86":2,"138":1,"184":6,"244":3,"361":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1}}],["projectid",{"2":{"3":2,"436":2}}],["project",{"0":{"58":1,"360":1},"2":{"2":1,"4":1,"6":1,"19":1,"32":1,"45":2,"52":2,"58":1,"59":1,"74":1,"96":1,"97":1,"99":2,"105":5,"106":2,"110":1,"145":8,"146":2,"147":1,"148":1,"149":1,"152":1,"155":2,"166":1,"184":3,"191":1,"267":2,"328":1,"352":1,"357":1,"360":1,"361":1,"375":2,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1,"490":2,"491":1}}],["projects",{"2":{"0":1,"3":10,"41":3,"45":1,"50":1}}],["cd",{"2":{"465":1}}],["cdn",{"0":{"268":1,"376":1},"2":{"268":1,"376":1}}],["circle",{"2":{"435":1}}],["cid",{"2":{"325":1,"326":1}}],["ctx",{"2":{"184":1,"185":1,"186":3}}],["c++",{"2":{"133":1,"146":3}}],["cpp",{"2":{"131":1,"133":2,"139":1}}],["c",{"2":{"102":1,"110":2,"304":1,"429":1}}],["cs",{"2":{"101":1}}],["c3bgcu3lkfr9bp9jfsslenpaaaaaaaaaa",{"2":{"16":1,"17":1,"25":4,"28":1,"29":1,"38":4,"39":4,"168":3,"169":4,"171":3,"173":3,"175":4,"177":4,"180":3}}],["cumulativegasused",{"2":{"476":1}}],["custodial",{"2":{"101":1,"165":2,"355":1,"367":1}}],["customization",{"0":{"116":1},"2":{"367":1}}],["customizable",{"2":{"114":1,"165":1}}],["customizability",{"0":{"114":1},"1":{"115":1,"116":1}}],["customize",{"2":{"68":1,"80":1,"116":1,"163":2,"244":1}}],["custom",{"0":{"79":1,"80":1,"81":1,"82":1,"133":1},"1":{"80":1},"2":{"23":1,"79":2,"80":6,"81":5,"82":2,"95":2,"99":1,"108":1,"120":1,"122":1,"124":1,"126":1,"128":1,"146":3,"164":1,"181":1,"190":1,"247":1,"307":1,"337":1,"443":1,"444":1}}],["cut",{"2":{"44":1}}],["currencies",{"2":{"118":1}}],["currencyaddress",{"2":{"183":1}}],["currencyaddresses",{"2":{"182":2,"183":1,"339":1}}],["currency",{"2":{"118":2,"183":2,"261":2,"263":4,"285":1,"311":1}}],["currently",{"2":{"58":1,"95":1,"312":1,"341":1,"353":1,"362":1,"364":1,"463":1}}],["current",{"0":{"390":1,"405":1},"1":{"406":1},"2":{"40":1,"394":1,"405":2,"436":1,"444":1,"460":1}}],["curious",{"2":{"101":1,"125":1}}],["curl",{"2":{"15":1,"25":1,"38":1,"39":2,"52":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"185":1,"335":1,"339":1,"464":1,"466":1}}],["cuba",{"2":{"13":1}}],["center",{"2":{"71":3}}],["central",{"2":{"13":1}}],["certainty",{"2":{"236":1,"495":1}}],["certain",{"2":{"11":1,"181":1,"448":1}}],["cross",{"2":{"182":1}}],["cr",{"2":{"145":1}}],["credential",{"2":{"435":1}}],["credentialresponse",{"2":{"435":2}}],["credentialsin",{"2":{"128":2,"130":2,"133":3,"146":1}}],["credentials",{"0":{"138":1},"2":{"58":1,"128":2,"129":1,"130":2,"133":3,"134":2,"138":2,"146":3,"155":1,"367":1}}],["credit",{"2":{"341":1,"362":1}}],["creation",{"2":{"351":1,"355":1,"391":1,"417":1,"420":1,"425":1,"432":1}}],["creating",{"0":{"3":1,"80":1},"2":{"79":1,"80":1,"82":1,"101":1,"109":1,"117":1,"120":1,"122":1,"124":1,"145":1,"283":1,"302":2}}],["creator",{"2":{"331":1}}],["creators",{"2":{"123":1}}],["createroot",{"2":{"435":1}}],["createhashrouter",{"2":{"435":2}}],["create2",{"2":{"420":1,"431":1}}],["creates",{"2":{"364":1}}],["createtransaction",{"2":{"311":2}}],["createtoken",{"2":{"3":1}}],["createclient",{"2":{"190":1}}],["createconfig",{"2":{"81":1,"85":2,"86":2,"207":1}}],["createconnector",{"2":{"80":2}}],["createcollection",{"2":{"3":1}}],["createasset",{"2":{"3":1}}],["createdat",{"2":{"183":1,"436":2}}],["createdby",{"2":{"183":1}}],["created",{"2":{"3":2,"105":1,"110":1,"115":1,"120":1,"122":1,"124":1,"156":1,"183":2,"309":1,"313":1,"314":1,"327":1,"331":1,"355":2,"364":1,"398":1,"409":1,"429":1,"433":1,"469":1,"490":2,"492":2}}],["create",{"2":{"2":1,"3":1,"6":2,"52":1,"59":1,"80":3,"81":1,"99":1,"105":1,"110":4,"115":2,"120":2,"122":2,"124":2,"126":1,"128":1,"133":1,"143":1,"146":2,"159":1,"163":1,"165":1,"166":1,"184":1,"190":1,"237":1,"278":1,"282":1,"283":2,"303":5,"305":1,"309":2,"311":1,"313":1,"325":1,"328":1,"361":1,"363":2,"426":1,"429":1,"496":1,"511":1,"515":1}}],["cryptography",{"2":{"367":1}}],["cryptographic",{"2":{"354":2,"466":1}}],["cryptographically",{"2":{"313":1,"351":1}}],["cryptocurrencies",{"2":{"341":1,"362":1}}],["cryptocurrency",{"2":{"52":1,"62":1,"66":1}}],["cryptocheckout",{"0":{"66":1},"2":{"65":1,"66":2}}],["crypto",{"0":{"66":1},"2":{"11":1,"351":1}}],["claim",{"2":{"251":1}}],["class",{"2":{"59":1,"109":2,"120":1,"122":1,"124":1,"146":2,"309":1,"361":1}}],["clone",{"2":{"465":2}}],["cloud",{"0":{"325":1},"2":{"155":1,"325":1,"332":1,"333":1}}],["cloudflare",{"0":{"8":1},"2":{"357":1}}],["clossing",{"2":{"460":1}}],["closing",{"2":{"129":1}}],["closer",{"2":{"468":1}}],["closesession",{"2":{"460":2}}],["close",{"0":{"437":1,"460":1},"2":{"87":1,"253":1,"460":1}}],["closedno",{"2":{"460":1}}],["closed",{"2":{"58":1,"183":1,"437":2}}],["clothes",{"2":{"43":1}}],["clipboard",{"2":{"266":2}}],["clientid=",{"2":{"435":1}}],["client=",{"2":{"63":1,"81":1,"85":1,"86":2,"190":1}}],["clients",{"0":{"283":1},"1":{"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1},"2":{"33":1}}],["client",{"0":{"35":1},"2":{"15":2,"33":3,"35":2,"47":2,"125":1,"139":2,"143":6,"155":3,"189":2,"190":9,"237":1,"239":1,"242":2,"275":1,"280":1,"281":1,"282":1,"283":4,"284":1,"285":2,"286":1,"287":1,"288":1,"289":1,"290":2,"291":1,"292":1,"293":1,"294":2,"295":2,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"303":7,"305":3,"306":1,"309":5,"311":2,"317":2,"318":2,"319":2,"320":2,"435":1,"449":1,"452":1,"459":2,"460":2,"468":1,"496":1,"498":1,"501":2,"508":1,"513":1,"514":1,"515":1}}],["clicking",{"2":{"149":1}}],["clicks",{"2":{"91":1,"203":1,"236":1,"378":1,"495":1}}],["click",{"2":{"2":3,"32":1,"104":3,"105":3,"106":1,"110":1,"115":2,"145":7,"160":1,"190":1,"327":1,"328":1,"330":1,"332":1,"334":1}}],["cheap",{"2":{"344":1}}],["checkpoint",{"0":{"425":1},"2":{"423":1,"425":2,"430":1}}],["checked",{"2":{"417":1,"439":1}}],["checksum",{"2":{"465":2}}],["checks",{"2":{"398":1,"491":1}}],["checking",{"2":{"19":1,"66":1,"130":1}}],["check",{"2":{"15":1,"23":1,"40":2,"47":1,"92":1,"101":1,"102":1,"111":1,"117":1,"133":1,"164":1,"166":1,"204":1,"244":1,"285":1,"337":1,"339":1,"379":1,"444":1,"488":1}}],["checkoutconfig",{"2":{"66":1}}],["checkoutsettings",{"2":{"64":2,"65":2}}],["checkout",{"0":{"9":1,"64":1,"65":1,"66":1},"1":{"66":1,"67":1},"2":{"62":1,"63":6,"64":3,"65":1,"92":1,"204":1,"379":1}}],["chrome",{"0":{"265":1},"2":{"243":2,"264":1,"265":1,"371":1,"433":1,"435":1,"436":2,"437":1}}],["children",{"2":{"190":2}}],["child",{"2":{"146":1,"190":1}}],["china",{"2":{"13":1}}],["choosing",{"2":{"331":1}}],["chooses",{"2":{"266":1}}],["choose",{"2":{"6":1,"112":1,"163":1,"266":1,"341":1,"362":1,"367":1}}],["choices",{"2":{"165":1}}],["choice",{"2":{"163":1,"328":1,"433":1}}],["chose",{"2":{"106":1,"135":1,"266":1,"302":1}}],["chop",{"2":{"32":1}}],["chart",{"2":{"149":1}}],["chance",{"2":{"145":1}}],["changed",{"2":{"105":1,"391":1,"431":1}}],["changes",{"0":{"160":1},"2":{"40":1,"50":1,"106":2,"107":2,"115":1,"140":2,"145":1,"160":2,"222":1,"243":1,"435":1}}],["change",{"2":{"2":1,"13":1,"32":2,"149":1,"273":1,"354":1,"386":1,"391":1,"398":1,"419":1,"506":1}}],["challenging",{"2":{"106":1}}],["challenge",{"2":{"94":2}}],["chainindexer",{"2":{"109":3}}],["chainid",{"0":{"228":1,"290":1},"2":{"25":3,"32":1,"38":3,"39":3,"52":3,"66":1,"78":1,"184":5,"185":1,"225":1,"280":2,"290":2,"321":2,"410":2,"439":1,"440":1,"446":1,"447":1,"448":1,"513":2}}],["chain",{"2":{"2":1,"6":1,"16":2,"17":2,"19":1,"20":6,"25":1,"34":2,"37":1,"38":1,"39":1,"85":5,"86":5,"102":1,"109":1,"111":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":1,"184":1,"186":1,"228":1,"263":1,"270":1,"271":1,"272":1,"283":2,"285":2,"290":2,"294":2,"321":5,"329":1,"332":1,"335":1,"475":1,"490":1,"503":1,"504":1,"505":1}}],["chains",{"0":{"196":1,"209":1},"2":{"1":1,"20":3,"27":1,"31":2,"81":1,"85":4,"86":4,"194":1,"196":1,"207":1,"209":1,"267":1,"313":1}}],["calculated",{"2":{"427":1,"428":1,"429":1,"430":1}}],["caller",{"2":{"397":1}}],["called",{"2":{"26":1,"39":1,"43":1,"44":1,"184":1,"244":1,"267":1,"352":1,"375":1,"389":1,"392":1,"397":1,"398":1,"399":1,"401":2,"430":1,"435":1,"453":1,"454":1,"467":1,"489":1,"490":2}}],["callfunction",{"2":{"303":7}}],["calldata",{"2":{"269":1,"270":2,"411":1,"502":1,"503":2}}],["callable",{"2":{"146":2}}],["callback",{"0":{"446":1},"2":{"131":2,"184":1,"446":2}}],["callbacks",{"2":{"131":2}}],["callcontractfunction",{"2":{"120":1,"122":1,"124":1,"303":4,"309":1}}],["callshowauthsuccessscreen",{"2":{"133":4}}],["calls",{"2":{"19":2,"43":1,"128":1,"130":1,"133":2,"307":2,"389":1,"397":1,"449":2}}],["calling",{"0":{"303":1},"2":{"1":1,"19":1,"52":1,"102":1,"111":1,"117":1,"125":3,"128":1,"146":1,"302":1,"303":1,"388":1,"404":1,"405":1,"411":1,"431":1,"492":1}}],["call",{"0":{"339":1},"2":{"1":1,"2":1,"3":1,"6":1,"15":1,"40":1,"102":2,"111":1,"117":1,"125":5,"128":1,"130":2,"133":5,"134":1,"185":1,"242":1,"303":1,"335":1,"398":1,"459":2,"490":1,"491":1,"501":1}}],["caution",{"2":{"244":1,"397":1}}],["causes",{"2":{"190":1}}],["cause",{"2":{"107":3,"110":1,"140":3}}],["carefully",{"2":{"243":1}}],["cardtype",{"2":{"44":1}}],["cards",{"2":{"32":2,"44":2,"149":1}}],["card",{"2":{"32":2,"44":1,"341":2,"362":2}}],["capturables",{"2":{"131":1}}],["capturable",{"2":{"131":2}}],["capabilities",{"2":{"35":1,"184":1,"186":2,"242":1,"501":1}}],["cater",{"2":{"165":1}}],["category",{"2":{"99":12,"133":5}}],["catch",{"2":{"6":1,"237":1,"307":2,"435":1,"440":1,"447":1,"496":1}}],["cast",{"2":{"44":1}}],["cases",{"2":{"45":1,"50":1,"102":1,"106":1,"129":1,"236":1,"242":1,"397":1,"486":1,"495":1,"501":1}}],["case",{"2":{"14":1,"43":1,"78":1,"126":1,"133":1,"303":2,"305":2,"366":1,"391":1,"399":1,"400":1,"406":2,"459":1,"492":2}}],["caches",{"2":{"20":1}}],["canonical",{"2":{"469":1}}],["cancel",{"2":{"448":1}}],["cancelled",{"2":{"183":1,"446":1}}],["candidate",{"2":{"184":1,"406":1}}],["canvas",{"2":{"93":4}}],["cannot",{"0":{"13":1},"2":{"95":1,"158":1,"222":1,"302":1,"353":1,"357":1,"443":1,"471":1}}],["canada",{"2":{"11":1}}],["can",{"2":{"3":3,"5":1,"11":2,"16":1,"17":1,"19":1,"20":4,"21":1,"22":1,"32":3,"44":1,"45":1,"46":2,"50":1,"52":7,"57":1,"59":1,"61":1,"68":2,"70":1,"78":1,"79":1,"80":3,"81":1,"82":1,"87":1,"89":1,"93":1,"101":1,"102":4,"105":3,"106":1,"107":1,"111":2,"112":2,"115":2,"117":3,"118":2,"119":3,"120":1,"121":2,"122":1,"123":3,"124":1,"125":2,"130":1,"131":2,"133":1,"135":3,"138":3,"139":1,"140":1,"145":2,"146":1,"147":1,"153":1,"155":2,"156":1,"165":1,"175":1,"177":1,"179":1,"180":1,"181":1,"188":1,"189":2,"190":6,"191":1,"192":1,"198":1,"206":1,"211":1,"215":1,"226":1,"231":1,"232":1,"236":2,"237":1,"241":1,"242":2,"243":1,"244":6,"245":1,"248":1,"260":1,"263":1,"266":3,"267":2,"268":1,"269":1,"270":1,"271":2,"272":1,"275":3,"282":1,"283":2,"284":2,"303":2,"305":1,"306":1,"307":2,"308":1,"309":1,"321":1,"323":1,"324":2,"331":1,"335":2,"341":3,"346":2,"350":1,"351":3,"352":4,"355":5,"357":5,"359":1,"360":1,"361":1,"362":3,"363":2,"364":2,"366":1,"367":2,"375":1,"376":1,"386":1,"387":2,"389":1,"391":1,"397":1,"404":1,"405":2,"406":1,"410":1,"411":1,"419":1,"422":1,"424":1,"425":1,"426":2,"427":1,"429":6,"434":2,"435":2,"437":2,"440":1,"443":1,"445":1,"446":1,"448":1,"450":1,"457":1,"459":1,"465":1,"466":2,"490":2,"491":1,"492":2,"495":2,"496":1,"500":1,"501":2,"502":1,"503":1,"504":2,"505":1,"508":3,"515":1}}],["cost",{"2":{"417":1}}],["coding",{"2":{"163":1}}],["codestringidentifier",{"2":{"450":1}}],["codehash",{"2":{"420":2}}],["codeat",{"0":{"291":1},"2":{"291":1}}],["codein",{"2":{"133":1,"134":1}}],["code",{"0":{"159":1,"442":1},"2":{"15":1,"16":1,"25":1,"35":1,"38":1,"47":1,"86":1,"94":1,"101":1,"102":2,"119":1,"121":1,"123":1,"125":3,"134":2,"145":2,"159":2,"160":1,"166":1,"168":1,"189":1,"190":1,"192":1,"205":1,"215":1,"231":1,"244":1,"266":3,"291":1,"351":1,"352":1,"354":4,"357":1,"388":1,"420":2,"430":1,"431":3,"434":2,"439":1,"440":2,"442":1,"443":1,"445":4,"451":1,"452":2,"453":2,"454":1,"459":1,"460":2,"461":1,"465":1,"475":1,"476":2,"478":3,"480":1,"481":1,"483":1,"484":1,"486":1}}],["could",{"2":{"304":1,"324":1,"353":1,"367":1,"472":1,"488":1}}],["countdown",{"2":{"490":4,"492":2}}],["counterparty",{"2":{"490":1,"492":1}}],["counterfactual",{"2":{"398":1,"431":1}}],["counter",{"2":{"391":1,"406":1,"420":1}}],["count",{"2":{"150":1,"410":1}}],["course",{"2":{"20":1,"32":1,"243":1}}],["co",{"2":{"123":1}}],["cognito",{"2":{"94":2,"442":1}}],["coins",{"2":{"91":1,"203":1,"378":1}}],["coinbase",{"2":{"77":1}}],["coinquantity",{"2":{"66":1}}],["coingecko",{"2":{"19":1}}],["corrupt",{"2":{"388":1}}],["corruption",{"2":{"388":1}}],["correctness",{"2":{"429":1}}],["correct",{"2":{"199":1,"213":1,"397":1,"405":1,"411":1,"425":1,"429":1}}],["corresponds",{"2":{"392":1,"394":1,"397":1}}],["correspond",{"2":{"76":1,"77":1,"397":1}}],["corresponding",{"2":{"1":1,"15":1,"47":1,"50":1,"76":1,"77":1,"166":1,"175":1,"177":1,"412":1,"413":1,"472":1}}],["corner",{"2":{"149":1}}],["core",{"2":{"63":1,"84":1,"85":1,"226":1,"237":1,"388":1,"496":1}}],["covalenthq",{"2":{"52":2}}],["colleted",{"2":{"135":1}}],["collect",{"2":{"134":1,"143":1}}],["collected",{"2":{"133":2,"134":1}}],["collectible",{"0":{"270":1,"503":1},"2":{"270":2,"503":2}}],["collectibles",{"2":{"67":1,"91":1,"203":1,"378":1}}],["collectibleinfo",{"2":{"38":1}}],["collectionaddress",{"2":{"182":2,"183":1,"339":1}}],["collectionid",{"2":{"3":4}}],["collection",{"2":{"3":5,"169":2,"183":3,"329":1,"339":1}}],["collections",{"0":{"3":1,"169":1},"2":{"1":1,"3":10}}],["colorschememanager",{"2":{"115":4}}],["colors",{"2":{"70":2,"115":1,"163":1}}],["color",{"0":{"115":1},"2":{"52":1,"70":1,"115":3}}],["communication",{"2":{"352":1,"370":1}}],["communicating",{"2":{"352":1}}],["communicate",{"2":{"243":1}}],["commons",{"2":{"237":2,"496":2}}],["common",{"2":{"41":1,"164":1,"165":1,"166":1,"184":1,"236":1,"267":1,"495":1}}],["command",{"2":{"39":1,"145":1,"190":1,"200":1,"206":1,"212":1,"465":2}}],["commands",{"2":{"15":1,"108":2}}],["comma",{"2":{"32":1}}],["comes",{"2":{"363":1,"461":1,"466":1}}],["come",{"2":{"32":1}}],["combined",{"2":{"267":1,"364":1,"375":1,"397":1,"411":1,"413":1,"416":4}}],["combine",{"2":{"163":1,"191":1}}],["combinations",{"0":{"416":1}}],["combination",{"2":{"32":1,"190":1,"416":1,"426":1}}],["combat",{"2":{"19":1}}],["com",{"2":{"17":2,"19":1,"25":1,"29":2,"38":1,"39":2,"43":2,"44":2,"49":2,"52":3,"60":1,"99":8,"104":1,"106":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"190":1,"192":1,"205":1,"215":1,"231":1,"233":1,"240":1,"244":2,"256":1,"258":1,"268":1,"376":1,"436":4,"452":1,"465":1,"499":1}}],["coming",{"0":{"9":1,"116":1},"2":{"100":1,"112":1,"275":1,"389":1,"397":1,"508":1}}],["computing",{"2":{"420":1,"431":1}}],["computed",{"2":{"419":1}}],["compute",{"0":{"418":1,"420":1},"2":{"406":1,"420":1}}],["computer",{"2":{"326":1,"369":1}}],["comparison",{"2":{"466":1}}],["compare",{"2":{"465":1,"466":1}}],["compared",{"2":{"363":1,"405":1,"406":1}}],["compatible",{"2":{"1":1,"20":4,"27":1,"31":1,"43":1,"50":2,"191":1,"232":2,"243":1,"244":1,"355":2}}],["composed",{"2":{"267":1,"343":1,"375":1}}],["component",{"2":{"93":1,"128":2,"146":1,"190":12,"435":1}}],["components",{"0":{"308":1},"2":{"85":1,"86":1,"113":1,"189":1,"190":6,"308":1,"340":2}}],["compelling",{"2":{"165":1}}],["compromised",{"2":{"353":3,"363":1,"364":2,"366":1,"367":3}}],["comprised",{"2":{"113":1}}],["comprehensive",{"2":{"91":1,"203":1,"378":1}}],["compiled",{"2":{"102":1}}],["compile",{"2":{"102":1}}],["compliant",{"2":{"427":1}}],["complicated",{"2":{"125":2}}],["complexity",{"2":{"117":1,"163":1,"467":1}}],["complex",{"0":{"120":1,"122":1,"124":1},"2":{"117":1,"125":1,"126":1,"426":1}}],["completeness",{"2":{"284":1}}],["completes",{"2":{"94":1}}],["completely",{"2":{"43":1,"45":1,"105":1,"165":1}}],["complete",{"2":{"19":1,"60":1,"86":1,"240":1,"244":1,"357":2,"435":1,"444":1,"449":1,"499":1}}],["completedplease",{"2":{"38":1}}],["completedto",{"2":{"38":1}}],["completed",{"2":{"2":1,"128":1,"156":1,"420":1}}],["comply",{"2":{"11":1}}],["concludes",{"2":{"492":1}}],["convention",{"2":{"236":1,"495":1}}],["convenient",{"2":{"166":1,"275":1,"508":1}}],["convenience",{"2":{"31":1,"33":1,"116":1,"120":1,"122":1,"124":1,"165":1,"309":1,"310":2}}],["converted",{"2":{"304":1}}],["convert",{"2":{"119":1,"125":1}}],["congratulations",{"2":{"101":1,"334":1}}],["congo",{"2":{"13":1}}],["conflicts",{"2":{"80":1}}],["configs",{"2":{"411":1}}],["configjsonrpcprovider",{"2":{"237":1,"496":1}}],["configured",{"2":{"96":1,"97":1,"155":1,"156":1,"158":1,"392":1,"463":1,"490":1}}],["configure",{"2":{"65":1,"68":1,"72":1,"85":1,"153":1,"155":1,"156":1,"341":1,"352":1,"357":1,"360":1,"362":1}}],["configuring",{"0":{"65":1},"1":{"66":1,"67":1},"2":{"105":1}}],["configurations",{"2":{"81":1,"85":1,"357":1,"405":1,"423":1,"429":2}}],["configuration",{"0":{"66":1,"67":1,"68":1,"72":1,"159":1,"160":1,"385":1,"391":1,"398":1,"404":1,"405":1,"406":1,"412":1,"413":1,"417":1,"419":1,"422":1,"429":1,"431":1},"1":{"73":1,"74":1,"75":1,"76":1,"77":1,"392":1,"393":1,"394":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":2,"413":1,"414":2,"415":2,"416":2,"417":2,"418":3,"419":1,"420":3,"423":1,"424":1,"425":1,"426":1,"427":1,"428":1,"429":1,"430":1,"431":1},"2":{"58":1,"66":1,"67":1,"68":1,"81":2,"85":1,"92":1,"96":1,"97":1,"153":1,"157":1,"158":1,"159":2,"160":2,"161":1,"204":1,"350":1,"357":3,"360":1,"379":1,"391":2,"392":1,"393":1,"394":1,"395":1,"396":1,"397":3,"398":4,"400":1,"405":2,"412":1,"417":1,"418":2,"419":1,"422":1,"425":1,"429":5,"430":2,"431":3,"490":2,"492":1}}],["config=",{"2":{"63":1,"68":1,"81":2,"85":1,"86":3}}],["config",{"2":{"59":1,"63":1,"81":1,"85":2,"86":3,"105":1,"110":2,"138":3,"143":2,"184":4,"185":1,"361":1,"429":1,"430":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1}}],["confirmations",{"2":{"275":1,"355":1,"508":1}}],["confirmation",{"0":{"274":1,"507":1},"2":{"266":1,"274":1,"281":1,"507":1,"514":1}}],["confirms",{"2":{"266":1}}],["confirmed",{"2":{"186":1}}],["confirm",{"2":{"2":1,"275":1,"452":1,"508":1}}],["connectoptions",{"2":{"245":2}}],["connectorsforwallets",{"2":{"194":2}}],["connectors",{"0":{"79":1,"81":1,"82":1,"191":1},"1":{"80":1},"2":{"76":2,"77":2,"79":4,"80":5,"81":5,"82":2,"84":4,"85":3,"86":3,"188":1,"190":3,"191":4,"194":2,"207":4,"225":1,"226":2}}],["connector",{"0":{"80":1,"189":1,"190":1},"2":{"76":2,"77":2,"80":12,"81":3,"165":1,"192":1,"193":1,"194":1,"200":3,"205":1,"206":5,"207":2,"212":3,"213":2,"222":2,"223":2,"225":2,"226":1}}],["connectdetails",{"2":{"236":2,"237":1,"244":3,"245":1,"254":1,"495":2,"496":1}}],["connectweb3react",{"2":{"226":1}}],["connected",{"0":{"150":1},"2":{"101":1,"147":1,"150":2,"236":1,"244":1,"266":1,"290":1,"294":1,"495":1}}],["connecttowaas",{"2":{"101":1}}],["connect",{"0":{"87":1,"197":1,"210":1,"243":1,"245":1,"277":1,"510":1},"1":{"244":1,"245":1,"246":2,"247":2,"248":2,"249":2,"250":2,"251":2,"252":2,"253":2,"254":2,"255":2,"256":2,"257":2,"258":2,"259":2,"260":2,"261":2,"262":2,"263":2,"264":1,"265":1,"266":1},"2":{"77":1,"81":1,"85":1,"86":1,"87":1,"91":1,"192":1,"194":1,"197":2,"198":1,"203":1,"205":1,"207":1,"210":1,"211":1,"215":1,"219":1,"220":1,"228":1,"231":1,"232":2,"236":5,"237":1,"243":3,"244":7,"245":2,"246":2,"249":1,"250":1,"251":1,"252":3,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"266":1,"277":1,"341":1,"362":1,"378":1,"495":5,"496":1,"510":1}}],["connecting",{"0":{"101":1,"244":1,"264":1,"265":1,"266":1},"2":{"85":1,"101":1,"253":2,"254":1,"256":1,"266":1}}],["connecticut",{"2":{"12":1}}],["connections",{"2":{"91":1,"203":1,"378":1}}],["connection",{"2":{"6":1,"83":1,"87":1,"197":1,"210":2,"226":1,"229":1,"266":3,"284":1}}],["consensys",{"0":{"382":1},"2":{"380":1}}],["consent",{"2":{"105":1,"355":1}}],["considered",{"2":{"413":1,"416":1,"423":1,"424":1,"429":1,"443":1}}],["consider",{"2":{"307":1}}],["considerations",{"2":{"199":1,"213":1,"403":1}}],["consists",{"2":{"51":1}}],["consulted",{"2":{"190":1}}],["consumption",{"2":{"173":1}}],["cons",{"2":{"66":1}}],["console",{"2":{"6":2,"25":1,"38":1,"39":2,"66":1,"155":1,"156":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"184":1,"186":1,"235":1,"237":2,"244":2,"269":2,"270":2,"271":2,"272":2,"273":1,"280":2,"282":2,"390":1,"433":1,"435":2,"436":1,"439":1,"440":1,"444":1,"447":1,"448":1,"494":1,"496":2,"502":2,"503":2,"504":2,"505":2,"506":1,"513":2,"515":2}}],["constants",{"0":{"402":1,"403":1},"2":{"398":4,"404":2}}],["constraints",{"2":{"352":1}}],["constructions",{"2":{"355":1}}],["constructor",{"2":{"309":1}}],["construct",{"2":{"305":1,"311":1,"409":1,"410":1}}],["const",{"2":{"6":3,"16":2,"25":2,"28":1,"38":2,"39":4,"59":1,"63":1,"64":4,"65":1,"68":1,"80":2,"81":3,"85":6,"86":7,"87":4,"88":3,"131":4,"133":6,"134":1,"135":1,"168":3,"169":4,"171":3,"173":3,"175":4,"177":3,"180":3,"182":1,"184":4,"185":1,"186":3,"189":2,"190":2,"194":1,"207":2,"217":3,"225":2,"226":3,"235":2,"236":2,"237":5,"244":11,"245":1,"269":13,"270":13,"271":12,"272":13,"273":3,"277":3,"278":3,"279":2,"280":3,"281":2,"282":1,"361":1,"390":4,"398":1,"404":1,"409":4,"410":6,"418":2,"420":6,"421":1,"430":1,"433":3,"434":4,"435":9,"436":2,"437":2,"439":2,"440":2,"444":1,"445":2,"446":1,"448":1,"477":1,"479":1,"482":1,"485":1,"487":1,"488":1,"494":2,"495":2,"496":5,"502":13,"503":13,"504":12,"505":13,"506":3,"510":3,"511":3,"512":2,"513":3,"514":2,"515":1}}],["contains",{"2":{"43":1,"44":1,"45":1,"89":1,"145":1,"352":1,"388":1,"392":1,"452":1,"470":1,"475":1,"478":1,"480":1,"483":1,"486":1}}],["contain",{"2":{"43":1,"44":1,"99":1,"423":1,"426":1,"449":1}}],["containing",{"2":{"38":1,"39":1,"190":1,"364":1,"459":1,"466":1,"475":1}}],["contact",{"2":{"4":1,"25":1,"38":1,"39":2,"58":1,"168":1,"443":1}}],["contents",{"2":{"450":1}}],["content",{"2":{"25":2,"38":2,"39":4,"40":1,"52":1,"146":3,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":2,"183":1,"185":1,"189":1,"190":2,"325":1,"339":1,"473":1}}],["context",{"0":{"421":1},"2":{"17":1,"25":1,"29":1,"38":1,"39":2,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"283":1,"312":1,"398":1,"420":1,"422":1}}],["contribution",{"2":{"429":1}}],["contributes",{"2":{"427":1}}],["contribute",{"2":{"82":1}}],["controlled",{"2":{"158":1,"363":1,"490":3}}],["controlling",{"2":{"128":1,"367":1,"490":1}}],["control",{"2":{"19":1,"80":1,"106":1,"158":1,"163":1,"236":1,"363":1,"365":1,"366":1,"367":1,"422":1,"490":2,"495":1}}],["contractbytecodeasstring",{"2":{"306":1}}],["contractdeploymentresult",{"2":{"306":1}}],["contractdeploymentreturn",{"2":{"102":1}}],["contractdeployer",{"2":{"306":2}}],["contractcall",{"2":{"303":3,"309":1}}],["contractabi",{"2":{"303":2,"305":2}}],["contractabiasstring",{"2":{"125":2,"126":1}}],["contractaddress",{"2":{"32":1,"34":3,"38":3,"39":3,"43":1,"44":1,"52":3,"66":1,"67":1,"78":1,"125":2,"126":1,"168":2,"169":6,"173":1,"175":4,"177":6,"186":1,"291":1,"302":1,"303":2,"305":2,"306":1,"309":1,"476":1}}],["contractaddresses",{"2":{"25":3,"173":1,"180":3}}],["contracturi",{"2":{"26":1,"46":1}}],["contractinfo",{"2":{"25":1,"29":1}}],["contractmetadata",{"2":{"25":2}}],["contracts",{"0":{"302":1,"305":1,"306":1,"342":1},"1":{"303":1,"304":1,"305":1,"306":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"19":2,"22":1,"25":1,"36":1,"39":1,"43":2,"44":1,"50":2,"52":1,"102":1,"126":1,"168":1,"169":1,"173":1,"177":1,"186":1,"304":1,"328":1,"346":2,"351":1,"380":1,"417":1,"429":2,"490":1,"492":1}}],["contract",{"0":{"24":1,"25":2,"26":1,"38":1,"102":1,"174":1,"175":1,"176":1,"177":1,"303":1,"329":1,"330":1,"331":1,"346":1,"380":1,"489":1,"490":1},"1":{"25":1,"26":1,"175":1,"177":1,"347":1,"381":1,"382":1,"383":1,"490":1,"491":1,"492":1},"2":{"3":4,"19":1,"20":1,"22":3,"24":5,"25":2,"26":1,"27":1,"31":3,"32":10,"34":1,"36":5,"37":3,"38":1,"39":1,"43":2,"44":2,"46":3,"50":1,"66":2,"101":1,"102":5,"119":2,"120":2,"121":1,"122":2,"123":2,"124":2,"125":4,"126":2,"165":1,"168":2,"169":4,"173":3,"175":8,"177":9,"179":1,"180":1,"183":4,"270":1,"272":1,"291":1,"302":8,"303":8,"305":9,"306":1,"309":5,"310":1,"323":1,"328":1,"329":2,"330":1,"331":3,"332":1,"335":1,"342":2,"346":1,"350":1,"352":1,"386":2,"390":1,"391":1,"397":1,"398":1,"408":1,"414":1,"417":2,"420":2,"427":1,"431":1,"456":1,"457":1,"458":1,"459":2,"489":2,"490":5,"491":4,"492":1,"503":1,"505":1}}],["contrast",{"2":{"2":1}}],["continue",{"2":{"13":1,"448":1}}],["copy",{"2":{"2":1,"125":1,"146":2,"155":1,"266":1,"325":1,"326":1,"327":1}}],["eyjpc3mioijodhrwoi8vbxktzg9tywlulmf1dggwlmnvbsisinn1yii6imf1dggwfdeymzq1niisimf1zci6ijeymzrhymnkzwyilcjlehaiojezmteyode5nzasimlhdci6mtmxmti4mdk3mcwibmftzsi6ikphbmugrg9liiwiz2l2zw5fbmftzsi6ikphbmuilcjmyw1pbhlfbmftzsi6ikrvzsj9",{"2":{"452":1}}],["eyjhbgcioijiuzi1niisinr5cci6ikpxvcj9",{"2":{"452":1}}],["eyjwcm9qzwn0swqioje2ode1lcjycgntzxj2zxiioijodhrwczovl3dhyxmuc2vxdwvuy2uuyxbwin0=",{"2":{"357":1}}],["eye",{"2":{"131":1}}],["eyes",{"2":{"43":1}}],["effectively",{"2":{"354":1,"365":1}}],["efforts",{"2":{"112":1}}],["effortlessly",{"2":{"90":1,"91":1,"202":1,"203":1,"377":1,"378":1}}],["ecdsa",{"2":{"343":1}}],["ecosystem",{"2":{"41":1,"82":1}}],["ephemeral",{"2":{"274":1,"275":1,"278":1,"507":1,"508":1,"511":1}}],["equal",{"2":{"319":1,"320":1,"424":1}}],["equally",{"2":{"269":1,"502":1}}],["equivalent",{"2":{"60":1,"240":1,"499":1}}],["ee69",{"2":{"180":3}}],["elsewhere",{"2":{"188":1}}],["else",{"2":{"133":1,"280":1,"282":1,"351":1,"440":1,"513":1,"515":1}}],["elements",{"2":{"93":1}}],["element",{"2":{"44":1,"96":1,"97":1,"435":2}}],["estimate",{"2":{"292":1}}],["estimategas",{"0":{"292":1},"2":{"292":1}}],["established",{"2":{"443":1}}],["establish",{"2":{"94":1}}],["establishing",{"2":{"93":1}}],["esocialsignintype",{"2":{"133":1}}],["essentials",{"2":{"104":1,"106":1}}],["essentially",{"2":{"102":1,"109":1,"332":1,"490":1}}],["edit",{"2":{"96":1,"97":1,"99":1,"106":1,"115":1}}],["editor",{"2":{"95":1,"104":1}}],["emittednotransactionhashstringhash",{"2":{"475":1}}],["emitted",{"2":{"439":1}}],["empower",{"2":{"106":1}}],["emailstringuser",{"2":{"452":1}}],["emailnoproof",{"2":{"452":1}}],["emailauth",{"2":{"134":1}}],["emailcode",{"2":{"133":1,"134":1}}],["emailin",{"2":{"133":1,"134":1}}],["emaillogin",{"2":{"133":1,"134":1}}],["emailed",{"2":{"94":1}}],["email",{"0":{"94":1,"134":1,"434":1,"442":1},"2":{"75":1,"94":1,"101":1,"133":1,"134":3,"254":1,"258":3,"259":1,"351":1,"352":1,"364":2,"367":2,"433":1,"434":11,"442":1,"443":1,"444":2,"445":1,"452":6}}],["embedded",{"0":{"86":1,"88":1,"153":1,"350":1,"355":1},"1":{"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"356":1},"2":{"57":2,"58":3,"59":1,"83":1,"84":1,"88":1,"91":1,"93":2,"107":2,"140":2,"153":1,"154":1,"159":2,"160":2,"161":1,"165":3,"166":1,"203":1,"324":1,"350":1,"354":1,"355":2,"356":1,"357":4,"360":1,"361":1,"378":1,"432":1,"434":1,"441":1,"449":6,"450":1,"452":2,"459":1,"472":1,"477":1,"479":1,"482":1,"485":1,"487":1,"488":1}}],["eoas",{"2":{"342":1,"343":1,"346":1}}],["eoawallet",{"2":{"313":2}}],["eoa",{"2":{"61":1,"241":1,"313":1,"314":1,"414":1,"427":1,"500":1}}],["ealiest",{"2":{"286":1,"289":1,"291":1,"293":1,"295":1}}],["each",{"2":{"126":2,"129":1,"133":1,"145":1,"168":1,"275":1,"319":1,"320":1,"324":1,"325":3,"350":1,"355":2,"363":2,"426":1,"429":3,"450":1,"466":1,"470":1,"472":1,"508":1}}],["earliest",{"2":{"285":2}}],["earlier",{"2":{"105":1,"332":1}}],["earring",{"2":{"43":1}}],["ease",{"2":{"184":1}}],["easier",{"2":{"116":1,"459":1}}],["easily",{"2":{"20":3,"32":1,"50":1,"62":1,"106":1,"119":2,"121":1,"123":1,"165":1,"231":1,"236":1,"242":1,"313":1,"314":1,"323":1,"355":1,"495":1,"501":1}}],["easy",{"0":{"462":1},"1":{"463":1,"464":1,"465":1},"2":{"20":2,"23":1,"41":1,"93":1,"126":1,"131":1,"153":1,"173":1,"269":1,"344":1,"502":1}}],["eif",{"2":{"465":3}}],["eip1271",{"2":{"237":1,"242":1,"496":1,"501":1}}],["eip1155",{"2":{"41":1}}],["eip712",{"2":{"236":4,"250":1,"495":4}}],["eip721",{"2":{"41":1}}],["eips",{"2":{"43":4,"44":2,"451":2}}],["eip",{"2":{"43":3,"44":2,"237":1,"397":1,"414":1,"451":2,"469":1,"496":1}}],["either",{"2":{"33":1,"40":1,"43":1,"45":2,"52":1,"81":1,"101":1,"125":1,"126":1,"128":1,"130":1,"135":1,"269":1,"319":1,"320":1,"352":1,"363":1,"387":1,"427":1,"438":1,"448":1,"452":1,"472":1,"490":1,"502":1}}],["etc",{"0":{"170":1,"171":1},"1":{"171":1},"2":{"25":1,"38":1,"39":1,"50":1,"184":1,"198":1,"210":1,"211":1,"324":1,"351":1,"352":1,"433":1}}],["ethtransaction",{"2":{"303":4,"309":2,"311":1,"317":1,"318":1,"319":2,"320":2}}],["ethauth",{"2":{"236":1,"237":7,"249":1,"250":1,"251":1,"495":1,"496":7}}],["ethrpc",{"2":{"184":1}}],["ethwallet",{"2":{"184":1,"313":4,"314":1,"319":2,"320":2}}],["eth",{"0":{"170":1,"171":1},"1":{"171":1},"2":{"118":3,"244":1,"311":1}}],["ethkit",{"0":{"61":1,"241":1,"500":1},"2":{"61":2,"241":2,"500":2}}],["ethiopia",{"2":{"13":1}}],["ether",{"2":{"52":1,"410":1,"459":1}}],["etherscan",{"2":{"125":1}}],["ethers",{"0":{"264":1,"402":1,"403":1},"2":{"6":7,"16":3,"48":3,"61":1,"84":3,"184":3,"193":2,"200":3,"206":2,"212":3,"216":2,"223":1,"237":3,"241":1,"243":1,"267":5,"268":2,"269":3,"270":2,"271":2,"272":2,"277":2,"278":3,"282":1,"375":4,"376":2,"390":4,"398":4,"404":2,"418":3,"420":7,"430":4,"496":3,"500":1,"502":3,"503":2,"504":2,"505":2,"510":2,"511":3,"515":1}}],["ethereum",{"0":{"171":1,"265":1,"409":1},"2":{"1":1,"15":1,"20":3,"27":1,"31":2,"32":1,"43":2,"44":1,"47":1,"50":2,"51":2,"61":1,"191":1,"241":1,"242":1,"243":3,"244":1,"267":1,"284":1,"307":1,"342":1,"343":1,"355":1,"370":1,"409":1,"451":1,"455":1,"456":1,"457":1,"458":1,"459":1,"475":2,"500":1,"501":1}}],["ever",{"2":{"128":1,"302":1,"431":1}}],["everywhere",{"2":{"243":1}}],["every",{"2":{"20":1,"158":2,"274":1,"386":1,"390":1,"412":1,"414":1,"417":1,"449":1,"466":1,"490":1,"491":1,"507":1}}],["everything",{"2":{"3":1,"19":1,"163":1,"307":1}}],["event",{"2":{"101":1,"111":1,"139":1,"145":1,"244":1}}],["events",{"0":{"179":1},"1":{"180":1},"2":{"20":1,"101":1,"102":3,"111":1,"117":2,"148":1,"151":1,"179":1,"180":1,"447":1}}],["even",{"2":{"20":1,"50":1,"105":1,"163":1,"168":1,"169":1,"173":1,"177":1,"269":1,"304":1,"354":1,"355":1,"363":1,"367":1,"389":1,"397":1,"502":1}}],["evm",{"2":{"15":1,"20":1,"37":1,"47":1,"118":1,"119":1,"125":2,"244":1,"304":1,"307":2,"313":1,"355":1}}],["evolve",{"2":{"13":1}}],["egypt",{"2":{"13":1}}],["err",{"2":{"17":1,"25":1,"29":1,"38":1,"39":2,"168":3,"169":3,"171":3,"173":3,"175":3,"177":3,"180":2,"237":2,"496":2}}],["errors",{"2":{"128":1,"188":1}}],["error",{"0":{"188":1},"2":{"6":1,"125":1,"131":2,"133":1,"145":1,"435":6,"440":3,"478":4}}],["erc1271",{"2":{"411":1,"427":1}}],["erc1155contractaddress",{"2":{"269":1,"270":2,"502":1,"503":2}}],["erc1155data",{"2":{"269":2,"502":2}}],["erc1155interface",{"2":{"269":2,"270":5,"502":2,"503":5}}],["erc1155tokenaddress",{"2":{"123":1,"126":1,"270":1,"503":1}}],["erc1155send",{"2":{"454":1,"458":1,"459":1}}],["erc1155s",{"2":{"105":1}}],["erc1155",{"0":{"25":1,"38":1,"44":1,"124":1,"168":1,"169":1,"175":1},"2":{"3":1,"19":1,"20":2,"22":1,"24":2,"31":1,"32":1,"36":4,"37":3,"43":2,"44":2,"45":1,"123":5,"124":9,"168":1,"169":1,"173":1,"175":1,"177":2,"180":1,"309":1,"310":1,"458":1}}],["erc21",{"2":{"122":1}}],["erc20send",{"2":{"454":1,"456":1,"459":1}}],["erc20contract",{"2":{"303":6,"305":4}}],["erc20data",{"2":{"269":2,"502":2}}],["erc20interface",{"2":{"269":2,"271":5,"502":2,"504":5}}],["erc20tokenaddress",{"2":{"119":1,"126":2}}],["erc20",{"0":{"25":1,"46":1,"120":1,"168":1,"175":1,"177":1},"2":{"19":1,"20":2,"22":2,"24":2,"31":1,"36":2,"46":3,"52":3,"119":5,"120":9,"125":1,"126":1,"173":1,"175":1,"177":2,"180":1,"302":1,"303":2,"305":2,"309":8,"310":1,"347":1,"456":1}}],["erc",{"0":{"270":1,"271":1,"272":1,"409":1,"410":1,"503":1,"504":1,"505":1},"2":{"43":1,"44":1,"270":3,"271":3,"272":3,"329":1,"331":1,"408":1,"409":1,"410":1,"503":3,"504":3,"505":3}}],["erc721send",{"2":{"454":1,"457":1,"459":1}}],["erc721contractaddress",{"2":{"269":1,"272":2,"502":1,"505":2}}],["erc721data",{"2":{"269":2,"502":2}}],["erc721interface",{"2":{"269":2,"272":5,"502":2,"505":5}}],["erc721tokenaddress",{"2":{"121":1,"126":1,"272":1,"505":1}}],["erc721",{"0":{"25":1,"38":1,"43":1,"122":1,"168":1,"169":1,"175":1},"2":{"3":1,"19":1,"20":2,"24":2,"31":1,"36":4,"37":3,"43":1,"45":1,"121":3,"122":8,"168":3,"169":1,"173":1,"175":1,"177":2,"180":1,"309":1,"310":1,"457":1}}],["e",{"2":{"3":1,"66":1,"99":1,"112":1,"120":1,"122":1,"124":1,"157":1,"184":1,"198":1,"211":1,"275":1,"302":1,"347":1,"351":1,"508":1}}],["ensuring",{"2":{"429":1}}],["ensures",{"2":{"491":1}}],["ensure",{"2":{"3":1,"6":1,"50":1,"104":1,"130":2,"145":1,"158":1,"236":1,"367":2,"397":1,"425":1,"471":1,"495":1}}],["enum",{"2":{"183":1}}],["engines",{"2":{"163":1,"165":1}}],["enclaves",{"2":{"354":1,"355":1}}],["enclave",{"0":{"461":1,"465":1},"1":{"462":1,"463":1,"464":1,"465":1,"466":1},"2":{"351":1,"354":6,"461":2,"466":4,"469":1,"491":1}}],["encrypted",{"2":{"351":1,"354":4}}],["encrypt",{"2":{"139":1,"354":1}}],["encryption",{"2":{"139":1}}],["encourage",{"2":{"114":1,"310":1}}],["encodepacked",{"2":{"428":1,"429":1}}],["encodetypeddatadigest",{"2":{"410":2}}],["encodefunctiondata",{"2":{"269":3,"270":3,"271":3,"272":3,"398":2,"404":1,"502":3,"503":3,"504":3,"505":3}}],["encode",{"2":{"125":1,"186":1,"270":2,"271":2,"272":2,"390":1,"410":1,"411":1,"418":5,"430":2,"459":1,"503":2,"504":2,"505":2}}],["encoded",{"2":{"51":1,"125":1,"409":2,"410":1,"411":1,"459":2,"466":1}}],["encoding",{"0":{"408":1},"1":{"409":1,"410":1,"411":1},"2":{"125":2,"302":1}}],["encoding=",{"2":{"99":2}}],["entity",{"2":{"354":1}}],["entire",{"2":{"125":1,"190":1,"302":1,"326":1,"467":1}}],["entirely",{"2":{"46":1,"114":1}}],["enter",{"2":{"94":1,"96":1,"97":1,"104":1,"160":1,"333":1}}],["entered",{"2":{"94":1}}],["enabled",{"2":{"168":1,"169":1,"173":1,"177":1,"267":1}}],["enable",{"2":{"95":1,"99":1,"146":1,"153":1}}],["enables",{"2":{"5":1,"62":1,"165":1,"181":1,"355":1}}],["enabling",{"2":{"91":1,"190":1,"203":1,"351":1,"378":1}}],["enjoy",{"2":{"82":1,"91":1,"203":1,"378":1}}],["environments",{"2":{"459":1}}],["environment",{"2":{"163":1,"165":1,"355":1}}],["env",{"2":{"59":2,"361":2,"433":2,"434":2,"435":2,"436":2,"437":2,"439":2,"440":2}}],["enforced",{"2":{"490":1}}],["enforce",{"2":{"51":1,"352":1,"452":1}}],["enqueuetokensforrefresh",{"2":{"39":6}}],["endingblocknumber",{"2":{"289":1}}],["endian",{"2":{"51":1}}],["endpoint",{"2":{"3":2,"5":1,"6":2,"15":2,"31":1,"32":1,"34":1,"36":1,"47":1,"52":1,"185":2,"335":2,"449":1}}],["endpointssequence",{"2":{"31":1}}],["endpoints",{"0":{"21":1,"34":1},"2":{"1":3,"5":1,"15":3,"31":3,"40":1,"47":2,"50":1}}],["end",{"2":{"3":2,"23":2,"340":2}}],["execute",{"2":{"478":1}}],["executednosucceededbooleanwhether",{"2":{"475":1,"478":1}}],["executed",{"2":{"51":1,"270":1,"271":1,"272":1,"439":1,"440":2,"476":1,"478":1,"503":1,"504":1,"505":1}}],["execution",{"2":{"475":1}}],["executing",{"2":{"403":2,"438":1,"483":1}}],["exact",{"2":{"354":1}}],["examine",{"2":{"125":1}}],["examples",{"0":{"201":1,"214":1,"345":1,"348":1},"2":{"15":1,"16":1,"17":1,"23":1,"34":1,"244":1}}],["example",{"0":{"32":1,"89":1,"182":1,"221":1,"230":1,"233":1,"339":1,"415":1,"476":1,"481":1,"484":1},"2":{"3":3,"15":1,"19":1,"22":1,"25":1,"32":2,"34":2,"38":1,"43":2,"44":1,"47":1,"66":1,"67":1,"80":2,"89":1,"111":1,"117":1,"118":2,"120":1,"122":1,"124":1,"125":1,"126":1,"146":1,"168":1,"169":1,"171":1,"173":1,"175":2,"177":2,"180":1,"189":3,"190":4,"191":1,"192":1,"199":2,"205":1,"213":2,"214":1,"215":1,"221":1,"231":1,"233":1,"236":1,"237":1,"242":1,"244":1,"246":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"266":1,"273":1,"303":3,"304":1,"305":3,"309":3,"352":1,"364":1,"415":1,"465":2,"466":1,"468":1,"495":1,"496":1,"501":1,"506":1}}],["excellent",{"2":{"243":1}}],["exceptions",{"2":{"307":3}}],["exception",{"2":{"284":1,"304":1}}],["except",{"2":{"95":1,"434":1}}],["exclude",{"2":{"125":1}}],["excluding",{"2":{"108":1}}],["exists",{"2":{"146":1}}],["exist",{"2":{"99":2,"428":1,"433":1}}],["existing",{"2":{"50":1,"80":1,"95":1,"165":2,"450":1,"491":1}}],["extra",{"2":{"242":2,"307":1,"501":2}}],["extremely",{"2":{"93":1,"126":1}}],["extension",{"0":{"265":1,"371":1},"2":{"46":1,"243":2,"264":1,"265":1,"371":1}}],["extensions",{"2":{"32":1,"244":1}}],["extend",{"2":{"45":1,"106":1,"399":1}}],["externally",{"0":{"343":1},"1":{"344":1,"345":1},"2":{"342":1,"343":1,"401":1}}],["external",{"2":{"11":1,"351":1,"388":1,"396":1,"429":2}}],["expire",{"2":{"450":1}}],["expiresnumbertimestamp",{"2":{"450":1}}],["expires",{"2":{"440":1,"451":1,"452":1,"453":1,"459":1,"460":1,"476":1,"478":1}}],["expiresat",{"2":{"436":2,"468":1}}],["expiry",{"0":{"249":1},"2":{"183":2,"249":2}}],["express",{"2":{"429":1}}],["explanation",{"2":{"199":2,"213":2}}],["explain",{"2":{"143":1}}],["explicitly",{"2":{"190":1}}],["explorer",{"2":{"125":1}}],["explore",{"2":{"91":1,"203":1,"378":1}}],["experimental",{"2":{"188":1,"190":1}}],["experiment",{"2":{"115":1}}],["experience",{"2":{"68":1,"90":1,"91":1,"163":4,"165":2,"202":1,"203":1,"236":1,"243":1,"275":1,"307":1,"355":2,"367":1,"377":1,"378":1,"495":1,"508":1}}],["experiences",{"2":{"0":1,"165":1,"181":1,"351":1}}],["expected",{"2":{"321":1,"354":1}}],["expects",{"2":{"304":1}}],["expect",{"2":{"102":1,"112":1}}],["expand",{"2":{"96":1,"97":1,"145":1,"332":1,"333":1}}],["expanding",{"2":{"82":1}}],["exposes",{"2":{"117":1}}],["expose",{"2":{"109":1}}],["exposed",{"2":{"2":1}}],["exported=",{"2":{"99":1}}],["export",{"2":{"80":1,"189":1,"190":1,"225":1,"354":1,"421":1,"430":1,"435":3}}],["b7ada9ee8a3fa0a2c74c23ddd04a58f0b095d0465327b2d8461b9b81bcbc7236563ff0326c8614fe9205669636955199",{"2":{"465":1}}],["bql",{"2":{"452":1}}],["bsc",{"0":{"171":1}}],["bnb",{"0":{"171":1}}],["bd",{"2":{"140":1}}],["blueprint",{"2":{"146":2}}],["blueprintcallable",{"2":{"133":5}}],["blobs",{"2":{"354":1}}],["blob",{"2":{"43":2,"44":1,"190":1}}],["blockcount",{"2":{"293":2}}],["blockchains",{"2":{"307":1}}],["blockchain",{"0":{"109":1,"117":1,"179":1},"1":{"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"180":1},"2":{"14":1,"19":1,"20":1,"22":1,"91":1,"109":1,"117":3,"163":1,"165":2,"180":1,"203":1,"244":1,"267":1,"355":1,"363":1,"378":1}}],["blockrange",{"0":{"289":1},"2":{"289":2}}],["blockhash",{"2":{"287":1,"300":1,"476":4}}],["blockbyhash",{"0":{"287":1},"2":{"287":1}}],["blockbynumber",{"0":{"286":1},"2":{"286":1}}],["blocknoremovedbooleanwhether",{"2":{"475":1}}],["blocknoblockhashstringhash",{"2":{"475":1}}],["blocknumbers",{"2":{"289":1}}],["blocknumber",{"0":{"288":1},"2":{"285":5,"286":2,"288":2,"289":1,"291":3,"293":2,"295":3,"476":4}}],["blocknative",{"2":{"215":1}}],["blocking",{"2":{"244":2}}],["blocks",{"2":{"19":1,"289":1,"293":1,"307":2}}],["block",{"2":{"6":4,"125":1,"244":1,"285":3,"286":4,"287":4,"288":1,"289":2,"300":2,"439":1,"475":2}}],["bp",{"2":{"128":1,"146":1}}],["b",{"2":{"99":1,"104":1,"110":2,"146":1,"429":2,"465":1}}],["bielkqonjty9di9fillfb6imqinxoysw",{"2":{"452":1}}],["binaries",{"2":{"145":1}}],["binary",{"2":{"125":1,"426":1,"459":1}}],["bindufunction",{"2":{"133":1}}],["bind",{"2":{"133":3,"146":1}}],["biginteger",{"2":{"295":1,"304":1}}],["bigintegar",{"2":{"285":2,"292":1,"295":1,"297":1,"298":1,"300":1,"305":6,"309":1}}],["bigint",{"2":{"180":1}}],["big",{"2":{"51":1,"184":1}}],["bits",{"2":{"51":2}}],["bit",{"2":{"51":2,"145":1}}],["breaches",{"2":{"411":1}}],["break",{"2":{"186":1}}],["breaking",{"2":{"107":3,"140":3,"222":1}}],["breaks",{"2":{"43":1}}],["brave",{"2":{"436":1}}],["branded",{"2":{"352":1}}],["branding",{"2":{"163":1}}],["brackets",{"2":{"302":1}}],["broadcast",{"2":{"133":1}}],["broken",{"2":{"129":1}}],["browsable",{"2":{"99":2}}],["browse",{"2":{"99":1,"357":2}}],["browsers",{"2":{"244":3,"369":1}}],["browser",{"0":{"371":1},"2":{"25":1,"33":1,"38":1,"39":2,"135":1,"163":2,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"188":1,"190":4,"239":1,"243":3,"244":1,"340":1,"365":1,"370":1,"464":1,"498":1}}],["brown",{"2":{"43":1}}],["bring",{"2":{"13":1,"116":1}}],["bootmeasurement",{"2":{"465":1}}],["boolean",{"2":{"168":3,"169":2,"173":2,"177":2}}],["bool",{"2":{"133":1,"183":2,"304":2,"392":1,"411":1}}],["bob",{"2":{"410":1}}],["box",{"2":{"145":1}}],["bounded",{"2":{"413":1}}],["bounds",{"2":{"346":1}}],["bound",{"2":{"133":1}}],["bonus",{"0":{"310":1},"2":{"112":1}}],["bow",{"2":{"44":1}}],["bored",{"2":{"43":2}}],["body",{"2":{"25":1,"38":1,"39":2,"131":2,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"183":1}}],["both",{"2":{"3":1,"15":1,"25":1,"31":1,"38":1,"39":2,"41":1,"43":1,"45":5,"165":3,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"350":1,"351":1,"364":1,"403":2,"488":1,"490":1,"491":1,"492":1}}],["bottom",{"2":{"0":1,"71":3,"468":1}}],["buy",{"2":{"151":1}}],["burden",{"2":{"459":1}}],["burn",{"2":{"126":1}}],["burma",{"2":{"13":1}}],["bugfixes",{"2":{"107":1,"140":1}}],["bug",{"2":{"99":1,"190":1}}],["bundling",{"2":{"269":1,"502":1}}],["bundle",{"0":{"51":1},"2":{"51":1,"52":1,"270":1,"271":1,"272":1,"400":1,"403":3,"503":1,"504":1,"505":1}}],["bunch",{"2":{"50":1,"243":1}}],["bump",{"2":{"50":1}}],["building",{"0":{"238":1,"497":1},"1":{"239":1,"240":1,"241":1,"242":1,"498":1,"499":1,"500":1,"501":1},"2":{"164":1,"191":1,"242":1,"340":1,"501":1}}],["builds",{"2":{"107":1,"108":1,"140":1}}],["build",{"0":{"465":1},"2":{"19":1,"20":1,"23":1,"32":1,"52":1,"93":1,"99":1,"104":2,"106":1,"145":4,"147":1,"163":1,"181":1,"191":1,"274":1,"307":1,"324":1,"369":1,"370":1,"507":1}}],["builder",{"0":{"7":1,"147":1,"153":1,"322":1,"328":1},"1":{"148":1,"149":1,"150":1,"151":1,"152":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1},"2":{"1":1,"2":1,"6":1,"14":3,"16":1,"19":1,"25":1,"28":1,"38":1,"39":1,"52":1,"70":1,"102":1,"110":2,"119":3,"121":2,"123":2,"138":1,"147":1,"148":1,"149":1,"153":2,"159":1,"166":1,"168":1,"184":2,"186":2,"283":1,"323":1,"328":1,"329":1,"357":1,"360":1}}],["built",{"2":{"15":1,"20":2,"60":1,"61":1,"90":1,"107":1,"114":1,"128":1,"140":1,"145":1,"146":1,"202":1,"240":1,"241":1,"243":1,"357":1,"377":1,"466":1,"499":1,"500":1}}],["button",{"2":{"64":2,"87":2,"88":2,"232":1}}],["but",{"2":{"4":1,"19":2,"20":1,"31":2,"33":1,"41":1,"43":1,"46":1,"59":1,"60":1,"61":1,"106":1,"112":1,"115":1,"117":1,"125":1,"175":2,"177":2,"191":1,"237":1,"240":1,"241":1,"243":2,"267":1,"284":1,"310":1,"351":1,"352":1,"353":1,"361":1,"395":1,"401":1,"417":1,"429":2,"439":1,"466":1,"469":1,"496":1,"499":1,"500":1}}],["banner",{"2":{"244":2,"256":3}}],["bannerurl",{"0":{"256":1},"2":{"244":2,"256":1}}],["bangladesh",{"2":{"13":1}}],["balancequery",{"2":{"305":3}}],["balanceof",{"2":{"305":2,"309":1}}],["balanceat",{"0":{"285":1},"2":{"284":1,"285":2}}],["balance",{"0":{"171":1},"2":{"171":3,"285":5,"305":3,"309":1}}],["balances",{"0":{"169":1,"170":1},"1":{"171":1},"2":{"20":2,"168":2,"169":1}}],["bar",{"2":{"110":1,"115":1}}],["basics",{"2":{"324":1}}],["basic",{"2":{"85":1,"115":1,"118":2,"120":1,"122":1,"124":1}}],["basis",{"2":{"80":1}}],["base64",{"2":{"466":1}}],["baseuri",{"2":{"40":1}}],["baseuris",{"2":{"3":1}}],["basecardid",{"2":{"32":1,"44":1}}],["based",{"0":{"134":1,"135":1,"136":1},"2":{"20":1,"125":1,"128":1,"134":2,"135":2,"163":3,"188":1,"189":1,"199":3,"200":1,"201":2,"212":1,"307":1,"340":1,"354":1,"441":1}}],["base",{"0":{"332":1},"2":{"3":1,"331":1,"332":1}}],["batching",{"0":{"407":1},"2":{"126":1,"270":1,"271":1,"272":1,"503":1,"504":1,"505":1}}],["batch",{"0":{"126":1,"269":1,"502":1},"2":{"36":2,"126":3}}],["batched",{"2":{"32":1,"50":1,"126":1,"319":1,"320":1}}],["back",{"2":{"32":1,"149":1,"266":1,"364":1}}],["background",{"2":{"17":1,"25":1,"29":1,"38":1,"39":2,"43":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1}}],["backends",{"0":{"238":1,"497":1},"1":{"239":1,"240":1,"241":1,"242":1,"498":1,"499":1,"500":1,"501":1},"2":{"14":1,"50":1,"60":1,"61":1,"239":1,"240":1,"241":1,"498":1,"499":1,"500":1}}],["backend",{"0":{"242":1,"501":1},"2":{"2":1,"15":1,"133":1,"134":1,"146":2,"163":1,"188":1,"242":3,"353":1,"501":3}}],["backup",{"2":{"0":1,"344":1}}],["byte",{"2":{"304":1,"411":1}}],["bytes1",{"2":{"420":1}}],["bytes4",{"2":{"411":4}}],["bytes32",{"2":{"390":1,"392":1,"396":1,"406":1,"411":3,"418":1,"420":3,"427":1,"430":6,"459":2}}],["bytesn",{"2":{"304":1}}],["bytes",{"2":{"269":1,"270":2,"304":2,"333":1,"411":3,"420":1,"459":2,"502":1,"503":2}}],["bytecode",{"2":{"102":5,"291":1}}],["by",{"2":{"3":1,"5":1,"11":1,"19":2,"32":1,"39":1,"43":1,"46":3,"50":1,"51":1,"52":2,"68":1,"70":1,"78":1,"81":1,"82":2,"91":1,"93":2,"99":6,"105":2,"106":1,"109":1,"110":1,"115":1,"118":1,"120":2,"122":2,"123":1,"124":2,"125":1,"126":1,"128":1,"130":1,"138":1,"143":1,"149":1,"152":1,"157":1,"158":2,"163":1,"164":1,"168":2,"183":2,"189":1,"190":2,"191":1,"196":1,"203":1,"209":1,"229":1,"232":1,"236":1,"244":3,"255":1,"260":1,"261":1,"263":1,"266":2,"275":1,"283":1,"284":2,"285":1,"287":1,"289":1,"299":1,"300":1,"312":1,"346":1,"351":3,"352":3,"353":1,"354":3,"355":1,"357":1,"363":1,"364":1,"366":1,"367":1,"378":1,"380":1,"387":2,"389":1,"390":1,"391":1,"397":1,"398":1,"399":1,"400":1,"404":1,"405":1,"411":1,"412":1,"413":1,"420":2,"425":1,"427":1,"431":3,"434":2,"435":1,"439":1,"440":1,"443":1,"448":1,"450":3,"459":1,"466":2,"470":1,"471":1,"473":1,"489":1,"490":3,"492":1,"495":1,"508":1}}],["beautifully",{"2":{"369":1,"370":1}}],["beautify",{"2":{"114":1}}],["beauty",{"2":{"243":1}}],["beginning",{"2":{"490":1}}],["begin",{"2":{"163":1,"435":1}}],["began",{"2":{"105":1}}],["beyond",{"2":{"149":1,"399":1}}],["being",{"2":{"126":1,"139":2,"146":1,"183":1,"188":1,"401":1,"459":1,"461":1,"471":1}}],["before",{"2":{"126":1,"130":1,"138":1,"145":1,"189":2,"357":1,"403":2,"439":1,"440":2,"465":1,"469":1,"488":1}}],["bespoke",{"2":{"126":1}}],["best",{"2":{"50":1,"242":1,"244":2,"256":1,"307":1,"501":1}}],["beneficial",{"2":{"126":1}}],["benefit",{"2":{"20":1,"82":1}}],["benefits",{"2":{"5":1,"50":1,"165":1,"243":1}}],["behalf",{"2":{"275":1,"508":1}}],["behavior",{"2":{"422":1}}],["behaviour",{"2":{"110":1,"388":1,"395":1}}],["behaves",{"2":{"266":1}}],["behind",{"2":{"20":1,"311":1,"489":1}}],["becomes",{"2":{"363":1,"469":1,"471":1}}],["become",{"2":{"106":1}}],["because",{"2":{"105":1,"106":1,"346":1,"353":1,"386":1}}],["better",{"2":{"116":2,"125":1,"131":1}}],["between",{"0":{"163":1},"2":{"93":1,"244":1,"354":1,"424":1,"465":1}}],["beta",{"2":{"58":1,"140":1}}],["been",{"2":{"19":1,"128":1,"351":1,"417":1,"434":1,"447":2,"448":1,"466":1}}],["belong",{"2":{"427":1}}],["below",{"2":{"1":1,"3":2,"14":1,"15":2,"16":1,"17":1,"24":1,"31":1,"32":1,"35":1,"37":1,"41":1,"43":1,"47":1,"63":1,"85":1,"86":1,"129":1,"145":1,"168":1,"189":1,"190":1,"191":2,"214":1,"245":1,"397":1,"435":1}}],["bells",{"2":{"307":1}}],["believers",{"2":{"123":1}}],["believe",{"2":{"105":1,"466":1}}],["belarus",{"2":{"13":1}}],["be",{"0":{"13":1},"2":{"2":4,"3":1,"11":4,"19":4,"20":2,"23":1,"31":1,"34":1,"38":2,"39":1,"45":1,"50":2,"51":1,"52":1,"58":1,"59":1,"70":1,"73":1,"74":1,"75":1,"76":3,"77":3,"78":3,"101":1,"105":3,"106":2,"107":1,"110":1,"112":2,"115":1,"117":1,"119":1,"120":1,"122":1,"124":1,"125":3,"128":2,"130":3,"131":1,"133":3,"134":1,"138":2,"139":2,"140":1,"143":1,"145":1,"146":3,"156":1,"157":1,"158":4,"159":2,"168":2,"169":2,"173":2,"177":2,"180":1,"186":1,"188":1,"189":2,"190":9,"192":1,"196":1,"198":1,"206":1,"209":1,"210":1,"211":1,"215":1,"222":1,"223":1,"225":1,"226":1,"229":1,"231":1,"236":1,"244":1,"246":1,"248":2,"251":1,"254":1,"255":1,"257":1,"258":1,"259":1,"260":1,"261":1,"263":2,"266":2,"268":1,"269":2,"275":1,"282":1,"284":2,"286":1,"289":1,"291":1,"293":1,"295":1,"304":1,"307":1,"308":1,"309":1,"314":1,"319":3,"320":3,"321":1,"332":2,"333":1,"341":3,"346":1,"350":1,"352":2,"353":3,"355":3,"357":1,"361":1,"362":3,"363":2,"365":1,"366":1,"367":5,"376":1,"387":2,"389":2,"391":1,"393":1,"395":1,"397":4,"400":1,"401":1,"403":5,"404":1,"405":2,"406":2,"409":1,"410":1,"411":1,"413":1,"414":1,"419":1,"420":1,"423":1,"425":1,"426":1,"429":2,"431":1,"433":1,"434":3,"437":2,"439":1,"440":4,"443":1,"446":1,"448":1,"449":3,"450":1,"451":1,"452":2,"453":1,"455":2,"456":1,"457":2,"458":1,"459":2,"460":1,"464":1,"465":2,"466":2,"469":2,"470":1,"471":1,"472":1,"489":1,"490":1,"492":1,"495":1,"502":2,"508":1,"515":1}}],["gnosis",{"2":{"158":1,"348":1}}],["g",{"2":{"66":1,"112":1,"120":1,"122":1,"124":1,"184":1,"198":1,"211":1,"275":1,"302":1,"347":1,"351":1,"508":1}}],["guestmodule",{"0":{"384":1},"2":{"421":1}}],["guess",{"2":{"324":1}}],["guarantees",{"2":{"355":1}}],["guaranteed",{"2":{"354":1}}],["guarantee",{"2":{"351":1,"443":1}}],["guard",{"0":{"352":1,"366":1},"2":{"44":1,"352":4,"353":2,"364":2,"366":2,"367":1,"439":1}}],["gui",{"2":{"128":3,"134":2}}],["guides",{"2":{"109":1,"161":1,"164":1,"357":1}}],["guide",{"2":{"23":1,"79":1,"80":1,"83":1,"92":1,"143":1,"164":1,"204":1,"323":1,"340":2,"356":1,"357":1,"360":1,"379":1,"466":1}}],["grep",{"2":{"466":1}}],["greater",{"2":{"424":1}}],["great",{"2":{"101":1,"102":1,"111":1,"117":1,"466":1}}],["ground",{"2":{"340":1}}],["groupname",{"2":{"194":1}}],["group",{"2":{"50":1}}],["grin",{"2":{"43":1}}],["grade",{"2":{"32":1}}],["grab",{"2":{"14":1}}],["git",{"2":{"104":3,"463":1,"465":2}}],["githubusercontent",{"2":{"52":1}}],["github",{"2":{"17":2,"19":1,"25":1,"29":2,"38":1,"39":2,"43":2,"44":1,"49":2,"60":1,"89":1,"104":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"189":1,"190":2,"192":1,"205":1,"215":1,"231":1,"233":1,"240":1,"465":1,"499":1}}],["gives",{"2":{"146":1,"469":1}}],["give",{"0":{"6":1},"2":{"44":1,"115":2,"130":1,"440":1}}],["given",{"2":{"2":1,"110":1,"138":1,"285":2,"291":1,"292":1,"295":2,"296":1,"317":2,"318":2,"319":2,"320":2,"321":1,"390":1,"394":1,"398":1,"400":1,"451":1,"460":1}}],["got",{"2":{"332":1}}],["goerli",{"2":{"198":1,"211":1}}],["goes",{"2":{"125":1,"490":1}}],["good",{"2":{"80":1}}],["googlelogin",{"2":{"435":3}}],["googleoauthprovider",{"2":{"435":3}}],["googleclientid",{"2":{"143":1}}],["google",{"0":{"143":1,"155":1,"435":1},"2":{"76":1,"81":2,"91":1,"95":1,"143":1,"155":5,"203":1,"244":1,"257":2,"259":1,"352":1,"357":1,"367":1,"378":1,"433":1,"435":8,"436":4,"443":1}}],["golang",{"2":{"60":1,"240":1,"499":1}}],["goldcardid",{"2":{"32":1}}],["going",{"2":{"20":1}}],["go",{"0":{"17":1,"29":1,"49":1,"60":1,"240":1,"499":1},"2":{"15":2,"17":3,"20":1,"25":1,"29":3,"33":1,"35":1,"38":1,"39":2,"47":1,"49":3,"50":1,"60":6,"61":2,"106":1,"129":1,"146":1,"159":1,"161":1,"165":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":2,"180":1,"237":3,"240":6,"241":2,"242":1,"302":1,"441":1,"496":3,"499":6,"500":2,"501":1}}],["globe",{"2":{"13":1}}],["global",{"2":{"11":1}}],["genericfailure",{"2":{"128":1}}],["generates",{"2":{"354":1}}],["generated",{"2":{"275":1,"313":1,"324":1,"364":2,"367":2,"434":2,"438":1,"449":1,"450":1,"452":1,"453":1,"454":1,"460":1,"475":2,"508":1}}],["generate",{"0":{"278":1,"511":1},"2":{"143":2,"313":1,"367":1,"425":1}}],["generation",{"2":{"20":1}}],["general",{"0":{"473":1},"2":{"34":1,"102":1,"106":1,"117":1,"145":1,"307":2}}],["geographical",{"2":{"11":1}}],["getelementbyid",{"2":{"435":1}}],["getetherbalance",{"2":{"171":5}}],["getimagehash",{"2":{"405":1}}],["getfunction",{"2":{"398":2,"404":1}}],["getchainid",{"2":{"280":1,"513":1}}],["getcomponentinchildren",{"2":{"93":1}}],["getcontractinfo",{"2":{"25":1,"29":1,"36":1}}],["getcontractinfobatch",{"2":{"25":5,"36":1}}],["getcollection",{"2":{"3":1}}],["getprovider",{"2":{"280":1,"513":1}}],["getaddress",{"0":{"316":1},"2":{"235":1,"270":1,"272":1,"277":1,"278":1,"285":2,"295":2,"303":2,"309":1,"316":1,"420":1,"494":1,"503":1,"505":1,"510":1,"511":1}}],["getwallet",{"2":{"235":1,"236":1,"244":5,"494":1,"495":1}}],["getmetatxnreceipt",{"2":{"185":2}}],["getsessionhash",{"2":{"433":1,"434":1,"435":2}}],["getstorageat",{"2":{"390":1}}],["getstoredkey",{"2":{"139":1}}],["getstoredcredentials",{"2":{"130":2}}],["getsigner",{"2":{"184":1,"269":2,"270":2,"271":2,"272":2,"273":1,"277":1,"502":2,"503":2,"504":2,"505":2,"506":1,"510":1}}],["getuseractivities",{"0":{"181":1},"1":{"182":1,"183":1},"2":{"181":1,"182":3,"183":1}}],["getloginurl",{"2":{"133":1}}],["getlatestblock",{"2":{"6":2}}],["getvalid",{"2":{"130":1}}],["getkitconnectwallets",{"2":{"81":2}}],["getdefaultconnectors",{"2":{"81":1,"85":2,"86":2}}],["gettoporders",{"2":{"339":1}}],["gettokensupplies",{"2":{"177":7}}],["gettokenrefreshstatus",{"2":{"39":5}}],["gettokenmetadatabatch",{"2":{"36":1}}],["gettokenmetadata",{"2":{"36":1,"38":6}}],["gettokenbalances",{"2":{"16":1,"17":1,"168":9,"169":7,"171":2}}],["gettransactionhistory",{"2":{"173":7,"175":7,"180":1}}],["getting",{"0":{"22":1,"56":1,"83":1,"164":1,"166":1,"358":1},"1":{"57":1,"58":1,"59":1,"84":1,"359":1,"360":1,"361":1},"2":{"92":1,"204":1,"379":1}}],["getblock",{"2":{"6":1}}],["get",{"0":{"327":1},"2":{"0":1,"3":1,"6":1,"14":1,"17":1,"19":1,"29":1,"34":3,"49":1,"55":1,"84":1,"105":1,"125":1,"130":1,"135":1,"140":2,"145":1,"164":2,"166":2,"235":1,"285":4,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"293":1,"294":1,"295":1,"297":1,"298":1,"299":1,"300":1,"321":1,"335":1,"338":1,"340":1,"369":1,"370":1,"374":1,"433":2,"455":1,"466":1,"494":1}}],["gains",{"2":{"490":1}}],["gain",{"2":{"353":2}}],["gather",{"2":{"324":1,"326":1}}],["gate",{"2":{"115":1}}],["gateway",{"0":{"5":1},"1":{"6":1},"2":{"5":1,"20":2,"283":1}}],["gaming",{"2":{"165":3,"355":1}}],["gameobject",{"2":{"93":1,"115":1}}],["game",{"2":{"15":2,"20":1,"22":1,"32":1,"47":1,"54":1,"55":1,"78":1,"86":1,"91":1,"105":5,"162":1,"163":6,"165":2,"191":1,"203":1,"267":1,"279":1,"329":1,"340":1,"355":1,"357":1,"378":1,"440":1,"451":1,"453":1,"512":1}}],["games",{"2":{"0":1,"14":1,"20":3,"107":1,"123":1,"140":1,"153":1}}],["gasused",{"2":{"440":1,"476":2,"478":1}}],["gaslist",{"2":{"413":1}}],["gaslimitestimator",{"2":{"311":1}}],["gaslimit",{"0":{"403":1},"2":{"303":1,"311":1,"398":2,"403":2,"404":1,"440":1,"476":1,"478":1}}],["gasless",{"2":{"165":1}}],["gastipcap",{"2":{"298":1}}],["gasprice",{"2":{"297":1,"303":1,"311":1}}],["gas",{"0":{"52":1},"2":{"50":7,"118":3,"126":1,"184":1,"186":2,"285":1,"292":2,"293":1,"297":1,"298":1,"311":1,"403":1,"417":1,"475":1,"478":1}}],["gt",{"2":{"2":2,"6":2,"34":10,"45":2,"51":3,"63":10,"64":4,"66":1,"68":3,"80":2,"81":8,"85":9,"86":21,"87":6,"88":4,"93":1,"96":2,"97":2,"99":42,"104":2,"106":1,"108":3,"110":4,"112":1,"115":3,"128":1,"130":1,"131":2,"133":10,"138":1,"145":3,"155":1,"182":1,"184":1,"189":4,"190":6,"206":1,"226":2,"237":2,"244":1,"267":1,"268":4,"289":2,"304":6,"305":5,"326":1,"335":3,"375":1,"376":4,"411":1,"429":1,"435":16,"446":1,"447":1,"448":1,"496":2}}],["due",{"2":{"115":1,"145":1,"189":1,"222":1,"443":1,"475":1}}],["during",{"2":{"110":1,"138":1,"145":1,"159":1,"391":1,"417":1,"425":2,"431":2,"489":1}}],["dropsession",{"2":{"437":1}}],["dropdown",{"2":{"2":1}}],["drawer",{"2":{"146":1}}],["drag",{"2":{"93":1,"106":1,"145":1}}],["day",{"2":{"490":1,"492":1}}],["days",{"2":{"149":1}}],["dangerous",{"2":{"388":1,"403":1}}],["dashboard",{"2":{"352":1}}],["dark",{"2":{"70":1,"244":1}}],["daicontractaddress",{"2":{"269":1,"271":3,"502":1,"504":3}}],["daily",{"2":{"147":1}}],["dai",{"2":{"50":1,"446":2}}],["damage",{"2":{"32":1,"353":1}}],["dapps",{"2":{"20":1,"50":1,"191":1,"214":1,"245":1,"266":1,"370":1}}],["dapp",{"0":{"244":1,"264":1,"265":1},"2":{"15":1,"20":1,"22":1,"47":1,"50":1,"190":1,"191":3,"192":2,"205":2,"215":2,"231":2,"233":1,"236":2,"237":1,"242":1,"243":3,"244":9,"246":1,"248":1,"250":1,"256":1,"264":2,"266":6,"267":1,"370":1,"375":1,"495":2,"496":1,"501":1}}],["datadelayedencodedatathe",{"2":{"459":1}}],["datatypes",{"2":{"304":2}}],["data2",{"2":{"270":2,"271":2,"272":2,"503":2,"504":2,"505":2}}],["data1",{"2":{"270":2,"271":2,"272":2,"503":2,"504":2,"505":2}}],["databeat",{"2":{"148":2}}],["database",{"2":{"117":2,"148":2,"354":1}}],["databases",{"2":{"20":1}}],["data",{"0":{"304":1,"409":1,"410":1,"470":1},"2":{"14":1,"19":2,"20":6,"39":1,"44":1,"45":3,"99":4,"118":1,"133":1,"148":1,"149":2,"181":1,"186":3,"269":4,"270":6,"271":4,"272":4,"303":1,"305":1,"333":1,"339":1,"351":1,"354":3,"355":1,"398":2,"404":1,"409":1,"410":2,"411":1,"439":3,"440":2,"452":1,"455":1,"457":2,"458":1,"459":7,"468":1,"470":1,"475":1,"476":7,"478":3,"480":1,"481":1,"483":1,"484":1,"486":1,"502":4,"503":6,"504":4,"505":4}}],["d",{"2":{"15":1,"16":1,"17":1,"25":1,"32":2,"35":1,"38":1,"39":2,"47":1,"52":1,"125":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":1,"180":1,"182":1,"185":1,"191":1,"237":1,"242":2,"440":1,"496":1,"501":2}}],["digest",{"2":{"428":1,"430":1}}],["digit",{"2":{"94":1}}],["diligence",{"0":{"382":1},"2":{"380":1}}],["difficult",{"2":{"307":1}}],["differ",{"2":{"465":1}}],["differs",{"2":{"199":1,"213":1,"386":1}}],["differing",{"2":{"129":1}}],["difference",{"2":{"270":1,"272":1,"503":1,"505":1}}],["differences",{"0":{"163":1},"2":{"41":1}}],["different",{"2":{"129":1,"191":1,"244":1,"270":1,"271":1,"272":1,"342":1,"350":1,"352":1,"354":1,"470":1,"472":1,"503":1,"504":1,"505":1}}],["dive",{"2":{"92":1,"165":1,"204":1,"356":1,"379":1}}],["dictionary",{"2":{"44":1,"45":1}}],["dice",{"2":{"44":1}}],["die",{"2":{"44":1}}],["disappears",{"2":{"492":1}}],["disaster",{"0":{"492":1},"2":{"158":1,"489":2}}],["disabled",{"2":{"93":1}}],["dist",{"2":{"268":1,"376":1}}],["distribution",{"0":{"268":1,"376":1},"2":{"268":1,"376":1,"429":1}}],["district",{"2":{"43":1}}],["distractions",{"2":{"355":1}}],["distract",{"2":{"165":1}}],["distinct",{"2":{"150":1,"441":1}}],["disk",{"2":{"129":1,"133":1}}],["discuss",{"2":{"443":1}}],["disconnect",{"2":{"252":1,"266":1}}],["disconnectweb3react",{"2":{"226":1}}],["discouraged",{"2":{"188":1}}],["discord",{"2":{"91":1,"95":1,"203":1,"237":1,"257":1,"378":1,"496":1}}],["discretion",{"2":{"11":1}}],["displaying",{"2":{"83":1}}],["displayedassets",{"0":{"78":1}}],["displayed",{"2":{"76":1,"77":1,"78":4,"128":1,"229":1,"266":1,"341":1,"362":1}}],["dispatched",{"2":{"185":1}}],["dispatches",{"2":{"52":1}}],["dispatch",{"2":{"50":1,"52":1,"273":1,"506":1}}],["dispatching",{"2":{"50":1}}],["direct",{"2":{"245":1,"352":1,"398":1}}],["directive",{"2":{"190":4}}],["directory",{"0":{"189":1,"190":1},"2":{"19":2,"146":1,"188":2,"190":2}}],["directly",{"2":{"15":1,"18":1,"20":1,"24":2,"30":1,"31":1,"37":2,"52":1,"102":1,"111":1,"117":1,"267":1,"275":1,"303":1,"341":1,"352":1,"362":1,"375":1,"406":1,"417":2,"434":1,"435":1,"508":1}}],["debit",{"2":{"341":1,"362":1}}],["debugging",{"2":{"307":1}}],["derive",{"2":{"278":1,"511":1}}],["deactivate",{"2":{"226":1}}],["deactivated",{"2":{"226":1}}],["deactivation",{"0":{"226":1}}],["deal",{"2":{"125":1}}],["decoding",{"2":{"302":1}}],["decode",{"2":{"390":2}}],["decodeproof",{"2":{"237":1,"496":1}}],["decoded",{"2":{"173":1}}],["decentralized",{"2":{"275":1,"508":1}}],["declare",{"2":{"190":1}}],["declared",{"2":{"190":1,"403":1}}],["declaration",{"2":{"190":1}}],["decryption",{"2":{"354":1}}],["decrypt",{"2":{"139":1}}],["decimalnormalizer",{"2":{"118":2,"119":1,"120":1,"125":2,"126":2,"309":2,"311":1}}],["decimals",{"2":{"32":1,"43":1,"44":1,"46":1,"52":3,"118":3,"119":4}}],["decisions",{"2":{"13":1}}],["denoted",{"2":{"125":1}}],["deny",{"2":{"11":1}}],["delightful",{"2":{"244":1}}],["delivery",{"2":{"50":1}}],["delete",{"2":{"145":3}}],["delegatecall",{"0":{"399":1},"2":{"398":2,"399":2,"404":1}}],["delegates",{"2":{"133":2}}],["delegate",{"2":{"133":1,"146":1,"305":1}}],["del",{"2":{"133":3}}],["delayed",{"2":{"125":1,"459":1}}],["delayedencodesubpackettype",{"2":{"459":1}}],["delayedencodedata",{"2":{"125":2,"126":1,"459":2}}],["delayedencode",{"0":{"125":1,"459":1},"2":{"125":4,"126":1,"454":1,"459":3}}],["deep",{"2":{"95":2,"99":3}}],["departments",{"2":{"429":1}}],["department",{"2":{"429":2}}],["deprecated",{"2":{"362":1}}],["depth",{"2":{"197":1,"210":1,"339":1}}],["depending",{"2":{"199":1,"213":1,"331":1,"461":1}}],["depends",{"2":{"189":1,"461":1}}],["depend",{"2":{"188":1,"267":1,"375":1,"470":1}}],["dependency",{"2":{"267":1,"375":1}}],["dependencies",{"2":{"84":1,"267":1,"375":1}}],["dependent",{"2":{"133":1}}],["dependant",{"2":{"115":1}}],["deploycontract",{"2":{"102":4}}],["deploymentresult",{"2":{"306":2}}],["deployment",{"0":{"102":1,"384":1},"2":{"102":1,"387":1,"431":1}}],["deployedwalletcontext",{"2":{"237":1,"496":1}}],["deployedcontractaddress",{"2":{"102":1}}],["deployed",{"2":{"50":1,"302":1,"331":1,"406":2,"431":1,"490":1,"491":3,"492":1}}],["deploying",{"0":{"306":1},"2":{"39":1,"102":2,"126":1}}],["deploy",{"0":{"8":1,"329":1},"2":{"3":2,"5":1,"102":2,"119":1,"121":1,"123":1,"160":1,"306":2,"328":1,"329":1,"431":1}}],["defi",{"2":{"246":1}}],["defines",{"2":{"388":1,"396":1,"422":1}}],["define",{"2":{"157":1,"352":1,"422":1}}],["defined",{"2":{"45":2,"133":1,"198":1,"211":1,"283":1,"309":1,"310":1,"312":1,"390":1,"398":1,"399":1,"401":1,"412":1,"420":2,"450":2,"473":1}}],["definition",{"2":{"125":1}}],["defense",{"2":{"105":2,"352":1}}],["defaultabicoder",{"2":{"390":2,"418":1}}],["defaultpurchaseamount",{"0":{"262":1},"2":{"262":1}}],["defaultfundingcurrency",{"0":{"261":1},"2":{"244":2,"261":1,"263":2}}],["defaulting",{"2":{"118":1}}],["defaultchainid",{"2":{"85":1,"86":1}}],["defaultnetwork",{"0":{"198":1,"211":1},"2":{"81":1,"194":1,"207":1,"244":1}}],["defaulttheme",{"0":{"70":1},"2":{"70":1}}],["defaults",{"2":{"59":1,"115":1,"295":1,"367":1}}],["default",{"2":{"19":1,"93":1,"99":3,"112":1,"128":1,"149":1,"157":1,"168":3,"169":1,"173":1,"177":1,"189":1,"190":1,"197":1,"198":2,"211":2,"219":1,"228":1,"232":1,"249":1,"253":1,"260":1,"261":1,"262":2,"263":2,"285":2,"309":1,"367":1,"435":1,"490":1}}],["determining",{"2":{"311":1}}],["determined",{"2":{"248":1}}],["determine",{"2":{"78":1,"303":1}}],["determines",{"2":{"70":1,"71":1,"75":1,"76":1,"77":1,"419":1,"423":1,"446":1}}],["detected",{"2":{"491":1}}],["detect",{"0":{"477":1,"479":1,"482":1,"485":1,"487":1},"2":{"87":1}}],["detects",{"2":{"20":1}}],["detailed",{"2":{"155":1}}],["detail",{"2":{"46":1}}],["details",{"0":{"330":1},"2":{"43":1,"44":1,"80":1,"173":1,"175":1,"177":3,"210":1,"266":1,"330":1,"333":1,"352":1,"452":1,"467":1}}],["demand",{"0":{"384":1},"2":{"243":2,"264":1,"355":1}}],["demystify",{"2":{"41":1}}],["demos",{"2":{"164":1,"166":1}}],["demo",{"0":{"54":1,"337":1,"356":1,"373":1},"2":{"54":1,"85":1,"86":1,"91":1,"105":3,"115":2,"190":1,"191":1,"192":1,"194":1,"201":3,"203":1,"205":1,"207":1,"214":4,"215":1,"221":1,"225":1,"230":1,"231":1,"233":2,"244":2,"264":1,"337":1,"357":4,"373":1,"378":1,"435":2}}],["demonstrates",{"2":{"237":1,"496":1}}],["demonstrated",{"2":{"189":1}}],["demonstrate",{"2":{"31":1}}],["demonstrating",{"2":{"3":1}}],["democratic",{"2":{"13":1}}],["desc",{"2":{"339":1}}],["describing",{"2":{"478":1}}],["described",{"2":{"46":1,"189":1,"190":1,"245":1}}],["describe",{"2":{"41":1}}],["description",{"2":{"32":3,"43":2,"44":1,"197":1,"210":1,"324":2,"325":2}}],["destinations",{"2":{"145":1}}],["desktop",{"0":{"135":1},"2":{"128":1,"135":2,"243":1}}],["design",{"2":{"126":1,"347":1}}],["designed",{"2":{"19":1,"20":1,"23":1,"148":1,"165":1,"243":1}}],["desired",{"2":{"115":1}}],["devices",{"2":{"365":1,"370":1}}],["device",{"2":{"279":1,"363":1,"364":1,"437":1,"469":2,"512":1}}],["deviate",{"2":{"41":1}}],["developed",{"2":{"191":1,"243":1}}],["developer",{"2":{"156":1,"341":1,"362":1}}],["developers",{"2":{"62":1,"68":1,"165":1,"181":1,"243":1}}],["developing",{"2":{"163":1,"307":1}}],["development",{"2":{"157":1,"162":1,"163":1,"166":1,"184":1,"267":1,"340":1,"352":1}}],["dev",{"2":{"0":1,"61":1,"182":2,"241":1,"339":1,"411":1,"500":1}}],["dom",{"2":{"435":1}}],["domains",{"2":{"157":1}}],["doing",{"2":{"309":1,"357":1}}],["doubt",{"2":{"125":1}}],["don",{"2":{"115":1,"116":1,"125":1,"147":1,"266":1,"269":1,"303":1,"417":1,"419":1,"432":1,"443":1,"502":1}}],["done",{"2":{"2":1,"58":1,"101":2,"102":1,"109":1,"131":1,"134":1,"135":1,"266":1,"364":1,"440":1}}],["do",{"0":{"189":1,"190":1},"2":{"32":1,"43":1,"46":1,"101":1,"102":2,"104":1,"106":2,"110":1,"111":1,"116":1,"117":2,"128":1,"139":2,"147":1,"189":1,"191":1,"236":2,"237":3,"302":2,"325":1,"346":1,"357":1,"466":1,"495":2,"496":3}}],["download",{"2":{"106":1}}],["downtime",{"2":{"20":1}}],["down",{"2":{"20":1,"76":1,"77":1,"96":1,"97":1,"302":1}}],["downside",{"2":{"19":1}}],["docker",{"2":{"463":1}}],["document",{"2":{"125":1,"354":1,"435":1,"466":5,"489":1}}],["documented",{"2":{"109":1}}],["documentation",{"2":{"1":1,"20":1,"23":1,"50":1,"57":1,"85":1,"105":2,"118":1,"119":1,"121":1,"123":1,"284":1,"285":1,"339":1}}],["docs",{"2":{"16":1,"17":1,"26":2,"43":2,"93":1,"99":1,"109":1,"143":1,"144":1,"191":1}}],["doesn",{"2":{"50":1,"99":2,"108":1,"128":1,"386":1,"397":1,"398":1,"402":1,"403":1,"433":1}}],["does",{"0":{"188":1},"2":{"0":1,"95":1,"118":1,"352":1,"431":1,"442":1,"450":1}}],["lv7xncqh",{"2":{"44":1}}],["lsm",{"2":{"20":1}}],["layout",{"0":{"413":1,"414":1},"1":{"414":1,"415":2,"416":2,"417":1,"418":1}}],["label",{"2":{"162":1,"163":3,"164":1}}],["launch",{"2":{"146":1,"335":1}}],["launcher",{"2":{"99":2}}],["lastly",{"2":{"340":1}}],["lastest",{"2":{"214":1}}],["last",{"2":{"145":1,"149":1}}],["later",{"2":{"108":1,"141":1,"222":1,"303":1,"305":1,"309":1,"464":1}}],["latency",{"2":{"20":1}}],["latestblock",{"2":{"6":2}}],["latest",{"2":{"6":5,"17":1,"29":1,"49":1,"106":1,"206":2,"268":1,"285":3,"286":1,"289":1,"291":1,"293":1,"295":3,"376":1}}],["landscape",{"2":{"128":1}}],["languages",{"0":{"242":1,"501":1}}],["language",{"2":{"15":1,"35":1,"47":1,"50":1,"237":1,"242":1,"496":1,"501":1}}],["lanka",{"2":{"13":1}}],["len",{"2":{"409":1}}],["length",{"2":{"319":2,"320":2}}],["lemur",{"2":{"332":1}}],["leaves",{"2":{"469":1}}],["leaf",{"2":{"426":2,"427":1,"428":1,"429":1,"430":1}}],["lead",{"2":{"388":1}}],["leading",{"2":{"91":1,"203":1,"378":1}}],["leaked",{"2":{"353":1}}],["least",{"2":{"158":1,"364":1}}],["learning",{"2":{"89":1}}],["learn",{"2":{"24":2,"27":1,"37":2,"119":1,"121":1,"123":1,"125":1,"340":1,"341":1,"354":1,"362":1}}],["left",{"2":{"68":1,"71":3,"145":2,"430":1,"459":1}}],["lets",{"2":{"466":1}}],["let",{"2":{"32":2,"125":1,"418":1,"468":1}}],["leverage",{"2":{"357":1}}],["leverages",{"2":{"20":1,"94":1,"340":1}}],["leveraging",{"2":{"55":1,"164":1,"338":1,"339":1,"357":2,"373":1}}],["levels",{"2":{"429":1}}],["level",{"0":{"26":1,"423":1},"1":{"424":1,"425":1,"426":1,"427":1,"428":1,"429":1},"2":{"3":4,"24":3,"26":1,"27":1,"32":3,"34":2,"149":1,"243":1,"468":1}}],["lebanon",{"2":{"13":1}}],["loss",{"2":{"388":1}}],["lost",{"2":{"364":3,"366":1}}],["long",{"2":{"244":1,"333":1,"434":1}}],["longer",{"2":{"20":1,"183":1}}],["locally",{"2":{"463":1,"465":1,"469":1}}],["localhost",{"2":{"357":1,"390":1}}],["localstorage",{"2":{"278":1,"511":1}}],["local",{"2":{"275":1,"278":1,"282":1,"409":1,"410":1,"508":1,"511":1,"515":1}}],["locate",{"2":{"93":1,"110":1,"115":1}}],["located",{"2":{"32":1,"110":1}}],["location",{"2":{"71":1}}],["locations",{"2":{"11":1}}],["locked",{"2":{"490":2}}],["lock",{"2":{"490":1}}],["locking",{"2":{"263":1}}],["lockfundingcurrencytodefault",{"0":{"263":1},"2":{"244":2}}],["lots",{"2":{"131":2}}],["loading",{"2":{"282":1,"435":1,"515":1}}],["load",{"2":{"110":2}}],["love",{"2":{"82":1}}],["low",{"2":{"20":1}}],["looking",{"2":{"45":1,"163":1}}],["lookup",{"2":{"32":1}}],["look",{"2":{"13":1,"86":1,"92":1,"125":1,"149":1,"204":1,"236":1,"267":1,"303":1,"305":1,"324":1,"325":1,"332":2,"340":1,"375":1,"379":1,"464":1,"468":1,"495":1}}],["louisiana",{"2":{"12":1}}],["lognologindexnumberindex",{"2":{"475":1}}],["lognotransactionindexnumberindex",{"2":{"475":1}}],["lognotopicsstring",{"2":{"475":1}}],["lognoblocknumbernumberthe",{"2":{"475":1}}],["lognodatastringdata",{"2":{"475":1}}],["logic",{"2":{"346":1}}],["logically",{"2":{"308":1}}],["logindex",{"2":{"476":3}}],["login",{"0":{"154":1,"245":1,"364":1,"442":1,"443":1},"1":{"155":1,"156":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"365":1,"366":1,"367":1},"2":{"95":1,"101":1,"133":5,"146":1,"154":1,"155":1,"156":1,"165":1,"351":3,"353":1,"363":1,"364":2,"367":1,"435":5,"441":1,"444":1}}],["loginpanel",{"2":{"93":5}}],["logins",{"2":{"91":1,"165":1,"203":1,"364":1,"378":1,"434":2,"444":2}}],["logging",{"2":{"256":1,"442":1,"443":1}}],["logsbloom",{"2":{"476":1}}],["logs",{"2":{"185":1,"435":1,"439":3,"475":1,"476":3}}],["logtemp",{"2":{"133":1}}],["logolight",{"2":{"80":2}}],["logodark",{"2":{"80":2}}],["logos",{"2":{"52":2,"163":1}}],["logourl",{"0":{"73":1},"2":{"52":3}}],["logouri",{"2":{"32":1}}],["logo",{"2":{"32":1,"73":1}}],["log",{"2":{"6":1,"25":1,"38":1,"39":2,"66":1,"133":1,"165":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":1,"184":1,"186":1,"235":1,"237":2,"244":2,"269":2,"270":2,"271":2,"272":2,"273":1,"280":2,"282":2,"390":1,"433":1,"434":1,"435":1,"436":1,"439":1,"440":1,"443":1,"444":1,"447":1,"448":1,"475":3,"494":1,"496":2,"502":2,"503":2,"504":2,"505":2,"506":1,"513":2,"515":2}}],["lt",{"0":{"200":1,"212":1},"2":{"6":2,"34":10,"45":2,"51":3,"63":9,"64":2,"68":3,"81":8,"85":8,"86":19,"87":4,"88":2,"99":38,"131":2,"133":1,"189":3,"190":5,"200":1,"212":1,"214":1,"236":4,"237":1,"244":1,"267":1,"268":4,"289":2,"305":5,"335":3,"375":1,"376":4,"427":2,"435":11,"495":4,"496":1}}],["little",{"2":{"323":1}}],["live",{"2":{"192":2,"205":2,"215":2,"231":2,"466":1}}],["lives",{"2":{"105":1}}],["lightweight",{"2":{"307":1}}],["light",{"2":{"68":1,"70":1,"244":1,"255":1,"425":1}}],["linux",{"2":{"97":2,"463":1}}],["links",{"2":{"142":1}}],["linking",{"2":{"95":1,"99":3}}],["link",{"2":{"32":1,"95":1}}],["linear",{"2":{"429":1}}],["line",{"2":{"0":1,"39":1,"352":1}}],["likewise",{"2":{"269":1,"502":1}}],["like",{"2":{"15":1,"16":1,"17":1,"19":1,"32":3,"35":1,"41":1,"47":1,"51":1,"61":1,"86":1,"91":1,"125":1,"133":5,"155":1,"156":1,"163":1,"165":4,"168":1,"169":1,"171":1,"173":1,"175":1,"199":1,"203":1,"236":1,"237":1,"241":1,"242":2,"243":2,"244":2,"267":1,"303":1,"305":1,"324":2,"325":1,"332":1,"355":1,"363":1,"375":1,"378":1,"429":1,"443":1,"447":1,"452":1,"464":1,"495":1,"496":1,"500":1,"501":2}}],["libs",{"2":{"421":1}}],["lib",{"2":{"268":1,"376":1}}],["libraries",{"2":{"188":4,"189":1,"191":2,"199":3,"201":2,"214":1,"459":1}}],["library",{"0":{"59":1,"189":1,"190":1,"361":1},"2":{"6":1,"59":1,"90":1,"107":1,"120":1,"122":1,"124":1,"189":1,"190":2,"202":1,"242":1,"304":1,"307":3,"308":1,"314":1,"360":1,"361":1,"377":1,"409":1,"410":1,"501":1}}],["libya",{"2":{"13":1}}],["limit",{"2":{"244":1,"259":1,"475":1,"478":1}}],["limitation",{"2":{"189":2}}],["limited",{"0":{"12":1},"2":{"11":1,"275":1,"353":1,"429":1,"459":1,"508":1}}],["limits",{"2":{"4":2,"352":1}}],["listsessions",{"2":{"436":1,"437":1}}],["listing",{"2":{"183":1}}],["listen",{"0":{"175":1,"179":1,"447":1},"1":{"180":1},"2":{"20":1,"22":1,"179":2,"180":1}}],["list",{"0":{"11":1,"168":1,"436":1},"1":{"12":1,"13":1},"2":{"13":1,"15":1,"16":1,"17":1,"21":1,"47":1,"51":1,"52":1,"67":1,"76":1,"77":1,"78":2,"81":1,"145":1,"168":1,"169":1,"173":5,"177":1,"184":1,"194":1,"207":1,"260":1,"289":2,"405":1,"412":1,"436":1,"475":1}}],["ll",{"2":{"0":1,"15":1,"44":1,"58":1,"59":1,"101":1,"102":2,"110":1,"112":1,"120":3,"122":3,"124":3,"128":1,"129":1,"133":1,"134":1,"146":2,"168":1,"236":1,"285":1,"303":5,"305":3,"324":1,"361":1,"495":1}}],["npx",{"2":{"190":1}}],["npm",{"2":{"16":1,"28":2,"48":1,"63":1,"84":1,"193":2,"200":1,"206":2,"212":1,"216":2,"223":2,"243":1,"267":2,"375":2}}],["n",{"2":{"44":3,"96":1,"97":1,"304":1,"409":1,"428":1,"429":2,"430":2}}],["nuget",{"2":{"106":1}}],["nullthe",{"2":{"475":1,"478":1}}],["nullreason",{"2":{"475":2,"478":1}}],["null",{"2":{"32":1,"43":1,"44":1,"185":1,"189":1,"439":1,"440":1,"476":5,"478":1}}],["numbers",{"2":{"118":2}}],["number",{"2":{"25":1,"31":1,"32":1,"38":1,"39":1,"78":1,"147":1,"151":1,"152":1,"183":4,"198":1,"211":1,"228":1,"249":1,"251":1,"275":1,"284":1,"286":1,"288":1,"300":1,"303":1,"315":1,"333":1,"352":1,"429":1,"475":2,"508":1}}],["navigating",{"2":{"115":1}}],["navigate",{"2":{"2":1,"99":1,"110":1,"160":1,"328":1,"331":1,"435":2}}],["nativereceipt",{"2":{"439":1,"476":1}}],["natively",{"2":{"357":1}}],["native",{"0":{"170":1,"171":1,"268":1,"376":1},"1":{"171":1},"2":{"52":1,"109":1,"165":2,"269":1,"270":1,"271":1,"272":1,"350":1,"355":1,"502":1,"503":1,"504":1,"505":1}}],["nametyperangedescription",{"2":{"414":1}}],["nametyperangedescriptionthresholduint161",{"2":{"413":1}}],["nametypedescriptionoptionalsessionidstringsession",{"2":{"483":1,"486":1}}],["nametypedescriptionoptionalsessionstringidentifier",{"2":{"451":1}}],["nametypedescriptionoptionalmessagestringthe",{"2":{"480":1}}],["nametypedescriptionoptionalexecutedbooleanwhether",{"2":{"475":1,"478":1}}],["nametypedescriptionoptionaladdressstringthe",{"2":{"475":1}}],["nametypedescriptionoptionalidstringunique",{"2":{"475":1}}],["nametypedescriptionoptionaltxhashstringtransaction",{"2":{"475":1}}],["nametypedescriptionoptionaltypestringtransaction",{"2":{"455":1,"456":1,"457":1,"458":1}}],["nametypedescriptionoptionalcodestringidentifies",{"2":{"473":1}}],["nametypedescriptionoptionalcodestringthe",{"2":{"452":1,"453":1,"454":1,"460":1}}],["nametypedescriptionoptionalversionstringthe",{"2":{"450":1}}],["nametypedescription",{"2":{"389":1,"393":1,"394":1,"397":1}}],["named",{"2":{"324":1}}],["namely",{"2":{"162":1}}],["names",{"2":{"125":2,"334":1}}],["name=",{"2":{"99":14}}],["name",{"0":{"470":1},"2":{"25":1,"32":3,"38":1,"39":1,"43":3,"44":3,"46":1,"52":3,"74":1,"80":2,"99":1,"106":1,"115":1,"125":1,"145":1,"197":1,"210":1,"220":1,"236":1,"244":3,"246":1,"255":1,"267":2,"302":1,"324":2,"325":2,"327":1,"329":1,"335":1,"375":2,"410":4,"439":1,"440":1,"450":1,"459":6,"468":1,"470":1,"495":1}}],["nitro",{"2":{"351":1,"354":2,"355":1,"434":1,"491":1}}],["nil",{"2":{"17":4,"39":1,"168":4,"169":3,"171":3,"173":2,"175":2,"177":2,"184":1}}],["nicaragua",{"2":{"13":1}}],["nosessionstringidentifier",{"2":{"460":1}}],["nosessionstringthe",{"2":{"452":1}}],["nov",{"2":{"459":1}}],["nova",{"2":{"361":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1}}],["noidentifierstringunique",{"2":{"454":1}}],["nomessagestringmessage",{"2":{"453":1}}],["nobody",{"2":{"116":1,"351":1,"355":1}}],["nonpayable",{"2":{"459":1}}],["nonetworkstringnetwork",{"2":{"453":1,"454":1}}],["none",{"2":{"282":1,"285":1,"515":1}}],["non",{"2":{"101":1,"107":1,"121":1,"125":1,"134":1,"140":1,"165":2,"355":1,"367":1,"406":3,"429":1}}],["nonce=",{"2":{"435":1}}],["nonceat",{"0":{"295":1},"2":{"295":2}}],["nonce",{"2":{"51":7,"251":1,"295":4,"303":1,"311":1,"433":1,"466":2}}],["nonces",{"2":{"50":1,"51":2}}],["no",{"0":{"274":1,"507":1},"2":{"20":2,"43":1,"78":1,"93":1,"98":1,"107":1,"112":1,"125":1,"139":1,"163":1,"183":1,"243":1,"285":1,"352":1,"354":3,"355":1,"398":1,"399":1,"429":1,"453":1,"454":1,"486":1}}],["nor",{"2":{"449":1}}],["north",{"2":{"13":1}}],["normally",{"2":{"190":1,"469":1}}],["normalizeasbiginteger",{"2":{"120":1,"126":1,"309":2}}],["normalize",{"2":{"118":2,"119":1,"125":2,"126":1,"311":1}}],["normal",{"2":{"2":1,"425":1}}],["nodejs",{"0":{"239":1,"498":1},"2":{"239":1,"498":1}}],["nodes",{"2":{"6":1,"20":2,"184":1,"284":1}}],["node",{"0":{"5":1,"16":1,"28":1,"48":1},"1":{"6":1},"2":{"5":1,"15":1,"16":2,"20":4,"25":1,"28":2,"33":1,"35":1,"38":1,"39":2,"47":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"283":1,"430":13}}],["nowalletstringthe",{"2":{"483":1}}],["nowalletstringaddress",{"2":{"453":1,"460":1}}],["now",{"2":{"3":1,"145":1,"161":1,"180":1,"326":1,"331":1,"335":1}}],["notifications",{"2":{"492":1}}],["notifies",{"2":{"491":1}}],["notifying",{"2":{"491":1}}],["notice",{"2":{"112":1,"168":1,"303":1,"411":1,"428":1,"450":1,"452":1,"455":1,"457":1,"460":1,"466":1}}],["notokenstringthe",{"2":{"456":1,"457":1,"458":1}}],["notostringthe",{"2":{"455":1}}],["notransactions",{"2":{"454":1}}],["notable",{"2":{"270":1,"272":1,"503":1,"505":1}}],["nothing",{"2":{"133":1,"266":1,"469":1}}],["noted",{"2":{"465":1}}],["notexpired",{"2":{"459":2}}],["notes",{"0":{"19":1}}],["note",{"0":{"488":1},"2":{"13":1,"16":1,"28":1,"43":1,"46":1,"59":1,"93":1,"95":1,"99":2,"104":1,"105":1,"106":3,"115":1,"118":1,"119":1,"123":1,"128":2,"222":1,"236":1,"244":1,"273":1,"282":1,"284":1,"285":1,"286":1,"289":1,"291":1,"293":1,"295":1,"303":1,"321":1,"361":1,"380":1,"433":1,"464":1,"465":1,"495":1,"506":1,"515":1}}],["not",{"2":{"0":1,"2":3,"5":1,"11":2,"19":1,"44":1,"46":1,"93":1,"95":1,"110":1,"118":2,"119":2,"120":1,"122":1,"124":1,"125":1,"128":1,"133":1,"139":1,"186":2,"237":1,"262":1,"280":1,"284":1,"302":1,"307":1,"309":1,"321":1,"346":1,"352":2,"355":1,"397":2,"403":1,"406":1,"431":1,"440":1,"442":1,"446":1,"450":1,"459":1,"466":2,"467":1,"496":1,"513":1}}],["neither",{"2":{"490":1,"491":1}}],["necessitate",{"2":{"486":1}}],["necessary",{"2":{"84":1,"135":1,"160":1,"184":1,"355":1}}],["never",{"2":{"417":2,"430":1,"440":1,"449":1,"469":1}}],["nesting",{"2":{"131":1,"429":1}}],["nested",{"0":{"407":1,"429":1},"2":{"131":1,"428":2,"429":3,"430":3}}],["neon",{"2":{"43":1}}],["nethereum",{"2":{"107":1,"307":1}}],["net",{"2":{"32":4,"44":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1}}],["networkid",{"0":{"294":1},"2":{"294":2}}],["networks",{"0":{"21":1},"2":{"15":2,"20":1,"21":1,"32":1,"34":1,"47":2,"50":1,"175":1,"177":1}}],["network",{"0":{"170":1,"171":1,"219":1},"1":{"171":1},"2":{"6":2,"32":4,"34":4,"50":1,"52":2,"59":1,"118":1,"125":2,"126":1,"175":2,"177":2,"184":2,"197":1,"198":2,"210":1,"211":2,"217":1,"219":1,"273":1,"296":1,"311":1,"328":1,"361":1,"367":2,"433":1,"434":1,"435":1,"436":1,"437":1,"439":2,"440":5,"451":1,"453":1,"459":1,"468":1,"476":1,"478":1,"506":1}}],["nepal",{"2":{"13":1}}],["nebraska",{"2":{"12":1}}],["nextjs",{"0":{"187":1,"189":1,"199":1,"213":1},"1":{"188":1,"189":1,"190":1},"2":{"188":3,"189":1,"190":6,"199":2,"201":2,"213":2,"214":2}}],["next",{"0":{"92":1,"188":1,"189":1,"190":1,"204":1,"379":1},"2":{"2":1,"20":1,"81":1,"94":1,"105":1,"110":1,"134":1,"188":2,"190":2,"285":1,"325":1}}],["needed",{"2":{"80":1,"101":1,"106":1,"164":1,"166":1,"267":1,"275":1,"340":1,"364":1,"422":1,"423":1,"464":1,"508":1}}],["needing",{"2":{"52":1}}],["needs",{"2":{"20":1,"116":1,"266":1,"398":1,"406":1}}],["need",{"2":{"2":1,"20":3,"23":1,"58":1,"59":1,"81":1,"102":1,"105":1,"110":1,"115":1,"120":1,"122":1,"124":1,"125":1,"128":1,"133":1,"138":1,"143":1,"144":1,"146":2,"147":1,"155":1,"156":1,"191":1,"266":1,"284":1,"302":1,"307":1,"309":1,"324":1,"351":1,"361":1,"363":1,"399":1,"401":1,"432":2,"434":1,"443":1,"450":1,"463":1}}],["newimagehash",{"2":{"398":1,"404":1}}],["newint",{"2":{"184":1}}],["newindexer",{"2":{"17":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1}}],["newestblock",{"2":{"293":2}}],["newer",{"2":{"16":1,"28":1,"105":1}}],["newrpcrelayer",{"2":{"184":1}}],["newprovider",{"2":{"184":1}}],["newwalletsingleowner",{"2":{"184":1}}],["newwalletfrommnemonic",{"2":{"184":1}}],["newbigint",{"2":{"180":1}}],["newobject",{"2":{"133":1}}],["newly",{"2":{"110":1,"115":1,"303":1}}],["newlydeployedcontractaddress",{"2":{"102":1,"306":1}}],["newtonsoft",{"2":{"106":2}}],["newmetadata",{"2":{"25":1,"29":1,"38":1,"39":2}}],["new",{"2":{"0":1,"2":1,"6":1,"12":1,"16":1,"25":1,"28":1,"38":1,"39":3,"52":1,"59":2,"85":1,"86":1,"96":1,"97":1,"99":2,"101":1,"107":1,"109":1,"115":1,"118":2,"119":2,"120":4,"121":2,"122":4,"123":4,"124":4,"125":7,"126":12,"140":1,"145":2,"165":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"190":1,"207":1,"225":1,"237":4,"243":1,"269":3,"270":2,"271":2,"272":2,"277":1,"278":2,"282":1,"283":1,"293":1,"302":1,"303":4,"305":2,"309":2,"313":2,"314":1,"327":1,"328":1,"361":2,"367":1,"389":1,"390":1,"397":1,"429":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1,"450":1,"452":1,"496":4,"502":3,"503":2,"504":2,"505":2,"510":1,"511":2,"515":1}}],["nftbalances",{"2":{"169":4}}],["nfts",{"2":{"20":1,"22":1,"121":1}}],["nft",{"0":{"9":1,"272":1,"505":1},"2":{"1":1,"3":2,"14":1,"20":2,"27":1,"31":1,"169":1,"183":1,"272":2,"331":1,"352":1,"505":2}}],["mnemonic",{"2":{"184":6}}],["myetherwallet",{"2":{"345":1}}],["mypinata",{"2":{"332":1}}],["mypage",{"2":{"85":3,"86":3}}],["myapp",{"2":{"190":1}}],["myanmar",{"2":{"13":1}}],["mytokenaddress",{"2":{"120":2,"122":2,"124":2}}],["mytoken",{"2":{"120":3,"122":3,"124":3}}],["myreactcomponent",{"2":{"87":1}}],["my",{"0":{"188":1},"2":{"80":2,"81":3,"217":1,"246":1,"267":1,"375":1}}],["mycustomlogolight",{"2":{"80":1}}],["mycustomlogodark",{"2":{"80":1}}],["mycustomconnectoroptions",{"2":{"80":1}}],["mycustomconnector",{"2":{"80":2,"81":1}}],["mycomponent",{"2":{"64":1,"88":1}}],["md",{"2":{"43":2,"44":1}}],["much",{"2":{"105":1,"427":1}}],["mutable",{"2":{"105":1}}],["mumbai",{"2":{"59":1,"335":1}}],["must",{"2":{"34":1,"76":1,"77":1,"95":1,"110":1,"112":1,"117":1,"139":2,"157":1,"158":2,"159":1,"168":1,"180":1,"188":1,"189":1,"190":1,"225":1,"353":1,"391":1,"411":1,"420":1,"439":1,"450":1,"452":1,"469":2}}],["multisignature",{"2":{"363":1}}],["multisig",{"2":{"350":1}}],["multisigs",{"2":{"350":1}}],["multi",{"2":{"20":1,"123":1,"426":1}}],["multiple",{"2":{"0":1,"5":1,"51":1,"115":1,"123":2,"126":1,"165":1,"243":1,"266":1,"269":1,"270":2,"271":2,"272":2,"347":1,"363":2,"429":1,"502":1,"503":2,"504":2,"505":2}}],["mimics",{"2":{"395":1}}],["migration",{"0":{"385":1}}],["might",{"2":{"165":1,"335":1,"433":1,"443":1,"464":1,"465":1,"466":3}}],["mitm",{"2":{"353":1}}],["mistakes",{"2":{"335":1}}],["miss",{"2":{"131":1}}],["missed",{"2":{"14":1}}],["mix",{"2":{"269":1,"502":1}}],["mixed",{"2":{"43":1}}],["millions",{"2":{"165":1}}],["middle",{"2":{"71":2}}],["minimum",{"2":{"324":1}}],["min",{"2":{"268":2,"376":2}}],["minutes",{"2":{"163":1,"445":1}}],["minor",{"2":{"107":2,"140":2}}],["mined",{"2":{"19":1,"50":1}}],["minted",{"2":{"334":2}}],["minter",{"0":{"8":1}}],["mints",{"2":{"331":1}}],["minting",{"0":{"333":1},"2":{"66":1,"335":1,"357":1}}],["mint",{"0":{"7":1},"2":{"119":1,"120":2,"121":1,"123":1,"124":2,"125":3,"309":1,"331":1,"332":1,"333":3,"335":1}}],["mind",{"2":{"2":1}}],["mail",{"2":{"410":1}}],["mainmoduleinterface",{"2":{"398":2,"404":2}}],["mainmoduleupgradable",{"2":{"395":1,"398":3,"403":1,"404":1,"405":1,"406":1,"421":1}}],["mainmoduleupgradeable",{"0":{"385":1,"395":1},"1":{"396":1,"397":1},"2":{"431":1}}],["mainmodule",{"2":{"386":1,"391":2,"395":1,"398":3,"419":1,"420":2,"421":1,"431":4}}],["maintaining",{"2":{"243":1,"275":1,"508":1}}],["main",{"2":{"78":3,"99":3,"165":1,"308":1,"435":3}}],["mainnet",{"2":{"15":2,"16":1,"25":1,"38":1,"39":1,"43":1,"47":2,"52":1,"85":2,"86":2,"184":1,"198":1,"211":1,"237":1,"244":1,"496":1}}],["marked",{"2":{"403":1}}],["marketplaces",{"0":{"162":1},"1":{"163":1,"164":1},"2":{"45":1}}],["marketplace",{"0":{"23":1,"151":1},"2":{"23":5,"66":1,"151":2,"162":3,"163":10,"164":4,"182":4,"183":1,"337":1,"338":1,"339":2,"340":3,"357":1}}],["market",{"2":{"11":1,"339":1}}],["march",{"2":{"383":1}}],["maxcost",{"2":{"459":1}}],["max",{"2":{"298":1}}],["matches",{"2":{"354":1,"452":1}}],["match",{"2":{"269":1,"502":1}}],["material",{"2":{"126":1,"354":1}}],["matic",{"0":{"170":1,"171":1},"1":{"171":1},"2":{"52":3,"118":3,"171":2,"244":1}}],["magicvalue",{"2":{"411":1}}],["magic",{"2":{"126":1,"411":3}}],["major",{"2":{"107":2,"140":2}}],["made",{"2":{"102":1,"105":1,"107":1,"133":3,"140":1,"148":1,"307":1,"355":1}}],["macbook",{"2":{"433":1,"435":1,"436":2,"437":1}}],["machine",{"2":{"104":1,"346":1}}],["mac",{"2":{"97":3,"108":1,"133":2,"141":1,"145":1}}],["macos",{"0":{"97":1},"2":{"104":1,"108":1,"142":1,"145":1,"463":1}}],["macao",{"2":{"13":1}}],["mapped",{"2":{"304":1}}],["mappings",{"0":{"304":1}}],["map",{"2":{"45":2}}],["master",{"2":{"43":2,"44":1,"52":1,"190":1}}],["making",{"2":{"20":1,"112":1,"126":1,"133":1,"307":1,"367":1}}],["makes",{"2":{"20":2,"165":1,"351":1,"449":1,"459":1}}],["make",{"2":{"15":1,"16":1,"17":1,"20":1,"22":1,"33":1,"47":1,"80":1,"93":1,"99":1,"106":1,"114":1,"117":1,"119":1,"128":3,"130":3,"131":1,"135":1,"145":1,"155":1,"156":1,"160":2,"175":1,"177":1,"266":1,"284":1,"302":1,"335":1,"463":1,"465":1,"466":1}}],["malicious",{"2":{"363":1,"366":1,"367":1}}],["mali",{"2":{"13":1}}],["may",{"2":{"11":1,"15":1,"20":1,"50":1,"105":1,"115":2,"125":1,"175":1,"177":1,"188":1,"190":1,"191":2,"223":1,"244":1,"267":1,"307":1,"309":2,"314":1,"319":1,"320":1,"342":1,"354":1,"375":1,"382":1,"388":1,"397":1,"414":1,"426":1,"447":1,"460":1,"486":1}}],["manipulate",{"2":{"450":1}}],["manifest",{"2":{"99":5}}],["manual",{"0":{"106":1},"2":{"99":1}}],["manually",{"0":{"7":1},"2":{"110":1,"445":1,"450":1}}],["mana",{"2":{"44":1}}],["managing",{"0":{"3":1}}],["management",{"0":{"363":1,"432":1},"1":{"364":1,"365":1,"366":1,"367":1,"433":1,"434":1,"435":1,"436":1,"437":1},"2":{"351":1,"354":1,"355":1,"432":1}}],["manages",{"2":{"133":1}}],["manager",{"0":{"104":1,"115":1},"1":{"105":1},"2":{"104":4,"105":1,"106":5,"115":1}}],["managed",{"2":{"1":1,"3":1,"14":1,"448":1}}],["manage",{"0":{"322":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1},"2":{"1":1,"50":1,"91":1,"129":1,"203":1,"323":1,"378":1}}],["many",{"2":{"13":1,"45":1,"119":1,"191":1,"236":1,"242":1,"422":1,"495":1,"501":1}}],["mandated",{"2":{"11":1}}],["move",{"0":{"330":1},"2":{"285":1}}],["moonpay",{"2":{"244":2,"260":1,"341":1,"362":1}}],["mounted",{"2":{"189":2}}],["mouth",{"2":{"43":1}}],["moments",{"2":{"145":1}}],["moment",{"2":{"140":1}}],["mobile",{"0":{"136":1,"370":1},"2":{"128":2,"191":1,"243":2,"244":1,"370":2}}],["mocks",{"2":{"112":1}}],["most",{"2":{"20":1,"33":1,"106":1,"118":2,"168":1,"244":1,"284":1,"288":1,"315":1,"343":1}}],["monitoring",{"0":{"491":1},"2":{"491":2}}],["monitors",{"2":{"20":1}}],["mono",{"2":{"108":2}}],["monobehaviour",{"2":{"93":1,"115":1}}],["money",{"2":{"5":1,"11":1}}],["more",{"0":{"116":1},"2":{"13":1,"32":2,"43":1,"46":1,"57":1,"80":1,"91":1,"93":1,"99":2,"104":1,"106":1,"116":1,"118":1,"156":1,"164":1,"168":1,"183":2,"190":1,"197":1,"199":1,"203":1,"210":1,"213":1,"236":1,"244":1,"266":1,"339":1,"341":1,"347":1,"354":1,"362":1,"363":2,"378":1,"469":1,"495":1}}],["morocco",{"2":{"13":1}}],["moldova",{"2":{"13":1}}],["modifier",{"2":{"389":1,"397":1}}],["modified",{"2":{"158":1}}],["modification",{"2":{"273":1,"506":1}}],["modifications",{"2":{"159":1,"160":1}}],["modify",{"2":{"40":1,"106":1,"309":1,"331":1,"332":1}}],["moduleauth",{"2":{"391":1}}],["modules",{"0":{"386":1},"1":{"387":1,"388":1,"389":1,"390":1,"391":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":1,"398":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1},"2":{"386":3,"387":1,"391":1,"399":1}}],["module",{"2":{"63":1,"216":1,"351":1,"354":1,"386":1,"387":1,"391":2,"395":1,"399":1}}],["modular",{"2":{"20":2,"84":1,"267":1}}],["modern",{"2":{"243":1,"369":1}}],["moderately",{"2":{"363":1}}],["moderate",{"2":{"4":1}}],["modes",{"2":{"128":1}}],["mode",{"2":{"93":1,"106":1,"115":1,"128":2}}],["model",{"0":{"353":1},"2":{"50":1,"353":1}}],["modals",{"2":{"71":1,"165":1,"355":1}}],["modal",{"0":{"64":1,"65":1,"72":1,"87":1,"88":1},"1":{"66":1,"67":1,"73":1,"74":1,"75":1,"76":1,"77":1},"2":{"2":1,"62":1,"64":1,"65":1,"70":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"83":1,"87":2}}],["merkle",{"2":{"426":1,"430":1}}],["merges",{"2":{"165":1}}],["mechanism",{"2":{"423":1,"489":2}}],["measures",{"2":{"243":1}}],["measure",{"2":{"157":1}}],["meaning",{"2":{"422":1}}],["meant",{"2":{"115":1,"352":1}}],["means",{"2":{"19":1,"20":2,"243":1,"352":1,"353":1,"354":2,"364":1,"370":1,"389":1,"397":1,"398":1,"432":1,"461":1}}],["memory",{"2":{"131":1}}],["members",{"2":{"0":1}}],["messagenosignaturestringthe",{"2":{"480":1}}],["messages",{"0":{"111":1},"2":{"237":1,"274":1,"275":1,"408":1,"409":1,"496":1,"507":1,"508":1}}],["message",{"0":{"234":1,"279":1,"281":1,"453":1,"480":1,"493":1,"512":1,"514":1},"1":{"235":1,"236":1,"237":1,"481":1,"482":1,"494":1,"495":1,"496":1},"2":{"105":1,"111":2,"236":4,"275":1,"279":1,"281":3,"282":1,"321":4,"392":1,"409":5,"410":1,"440":2,"446":1,"451":1,"453":1,"468":2,"478":3,"480":1,"481":1,"482":1,"488":1,"495":4,"508":1,"512":1,"514":3,"515":1}}],["menu",{"2":{"96":1,"97":1,"266":1}}],["mentioned",{"2":{"34":1}}],["me",{"2":{"44":1,"194":1}}],["metric",{"2":{"149":3}}],["metrics",{"2":{"147":1,"148":1,"149":1}}],["metatxnreceiptlog",{"2":{"475":1}}],["metatxnreceipt",{"2":{"475":1}}],["metatxnid",{"2":{"186":2}}],["metatxhash",{"2":{"439":1,"476":1}}],["metatxid",{"2":{"185":2}}],["metatransactionids",{"2":{"173":1}}],["metamask",{"2":{"77":1,"80":1,"81":1,"91":1,"165":1,"191":1,"192":1,"203":1,"205":1,"215":1,"243":2,"264":1,"345":1,"378":1}}],["meta",{"2":{"50":3,"99":2,"173":1,"186":1,"242":1,"267":1,"347":1,"352":1,"375":1,"475":4,"501":1}}],["metal",{"2":{"44":1}}],["metadataclient",{"2":{"25":2,"38":2,"39":4}}],["metadatawhen",{"2":{"24":1,"37":1}}],["metadataoptions",{"2":{"17":3,"19":3,"168":1,"169":1,"173":1,"177":1}}],["metadatafield",{"2":{"3":1}}],["metadata",{"0":{"1":1,"3":1,"19":1,"24":1,"25":1,"26":1,"27":1,"31":1,"36":1,"37":1,"38":1,"39":1,"41":1,"42":1,"168":1,"169":1,"322":1,"324":1,"326":1,"332":1,"335":1},"1":{"2":1,"3":1,"4":1,"25":1,"26":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"38":1,"39":1,"40":2,"41":1,"42":1,"43":2,"44":2,"45":2,"46":2,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1},"2":{"1":5,"2":1,"3":18,"4":1,"19":3,"20":4,"22":1,"24":4,"25":8,"26":1,"27":5,"28":5,"29":2,"30":1,"31":9,"32":10,"33":1,"34":8,"35":4,"36":7,"37":6,"38":10,"39":21,"40":6,"41":3,"43":6,"44":4,"45":2,"46":1,"168":2,"169":2,"173":2,"177":3,"323":1,"324":1,"325":1,"326":1,"331":1,"332":1,"335":4}}],["methods",{"0":{"36":1,"131":1,"284":1,"315":1},"1":{"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":1},"2":{"19":1,"36":1,"46":1,"93":1,"120":1,"122":1,"124":1,"165":1,"284":2,"307":1,"310":2,"315":1,"331":1,"399":1,"401":1,"438":1}}],["method",{"2":{"3":1,"25":1,"38":1,"39":2,"43":2,"44":2,"93":1,"102":1,"111":1,"112":1,"117":1,"119":1,"120":1,"122":1,"124":1,"125":4,"168":2,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"188":1,"189":1,"190":1,"237":1,"244":1,"302":1,"303":2,"305":1,"321":1,"389":2,"397":2,"398":1,"404":1,"405":2,"406":1,"411":1,"441":1,"442":1,"444":1,"445":4,"490":2,"492":1,"496":1}}],["occurs",{"2":{"483":1}}],["occure",{"2":{"151":1}}],["otp",{"2":{"352":1,"434":4}}],["othermethods",{"2":{"459":1}}],["otherwise",{"2":{"285":1,"409":1,"410":1,"411":1,"445":2}}],["otherconnectors",{"2":{"207":1}}],["otherrainbowkitwallets",{"2":{"194":1}}],["others",{"2":{"82":1,"128":1}}],["other",{"0":{"242":1,"501":1},"2":{"11":1,"20":2,"50":1,"80":1,"81":1,"84":1,"93":1,"96":1,"97":1,"130":1,"165":2,"191":1,"194":1,"196":1,"207":1,"209":1,"225":1,"226":1,"237":1,"242":1,"263":1,"333":1,"352":2,"355":1,"386":1,"389":1,"397":1,"429":1,"460":1,"490":2,"492":1,"496":1,"501":1}}],["omit",{"2":{"321":1}}],["omitted",{"2":{"19":2,"248":1}}],["os",{"2":{"266":2}}],["old",{"2":{"471":1}}],["older",{"0":{"200":1,"212":1},"2":{"199":1,"200":1,"201":1,"212":1,"213":1,"214":2}}],["oldsilver",{"2":{"32":1}}],["ok",{"2":{"180":4}}],["okay",{"2":{"43":1}}],["oauth",{"2":{"153":1,"155":1,"352":1,"435":4}}],["oidc",{"2":{"93":1,"95":1}}],["observe",{"2":{"490":1}}],["obvious",{"2":{"125":1}}],["objectdark",{"2":{"70":1}}],["objects",{"2":{"45":1,"123":1,"449":1,"454":1,"458":1}}],["object",{"2":{"44":2,"45":1,"64":1,"65":1,"70":2,"72":1,"102":1,"104":2,"106":1,"111":1,"115":3,"117":1,"120":1,"122":1,"124":1,"125":1,"135":1,"168":1,"169":1,"173":2,"175":1,"177":1,"180":1,"236":2,"245":1,"283":1,"302":2,"303":3,"321":1,"439":2,"440":1,"459":1,"468":1,"495":2}}],["obtained",{"2":{"434":1,"435":1}}],["obtain",{"2":{"2":1,"93":1,"102":1,"111":1,"117":1,"434":2,"435":2}}],["obtaining",{"0":{"2":1},"2":{"1":1}}],["ogimage",{"2":{"32":1}}],["outlines",{"2":{"489":1}}],["output",{"2":{"464":1,"465":2}}],["outputs",{"2":{"459":2}}],["outside",{"2":{"120":1,"122":1,"124":1,"157":1,"244":1}}],["out",{"0":{"464":1},"2":{"23":1,"54":1,"66":1,"91":1,"92":1,"101":1,"102":1,"105":2,"111":1,"115":1,"116":1,"117":1,"164":1,"166":1,"191":1,"203":1,"204":1,"237":1,"244":1,"337":1,"339":1,"356":1,"357":3,"360":1,"373":1,"378":1,"379":1,"409":1,"410":1,"465":1,"496":1}}],["ours",{"2":{"128":1}}],["our",{"2":{"1":1,"2":2,"3":1,"5":1,"6":1,"13":1,"14":1,"19":1,"20":1,"23":2,"25":1,"32":1,"38":1,"39":2,"46":1,"54":2,"55":1,"61":1,"90":1,"91":1,"92":1,"93":2,"95":1,"105":3,"106":1,"107":1,"108":1,"109":1,"115":2,"116":1,"119":2,"120":1,"121":2,"122":1,"123":2,"124":1,"126":1,"147":1,"148":1,"161":1,"162":2,"163":4,"164":2,"165":1,"166":2,"168":1,"179":1,"190":1,"191":3,"202":1,"203":1,"204":1,"241":1,"283":1,"284":1,"302":1,"303":2,"305":2,"307":1,"309":1,"337":1,"338":1,"340":2,"355":1,"357":1,"373":1,"377":1,"378":1,"379":1,"500":1}}],["opcode",{"2":{"420":1}}],["operated",{"2":{"351":1,"354":1}}],["operate",{"2":{"350":1}}],["operates",{"2":{"165":1,"354":1}}],["operation",{"2":{"388":1,"400":1,"403":1,"425":1,"433":1,"449":1}}],["operations",{"2":{"198":1,"211":1,"354":1}}],["operational",{"2":{"59":1,"361":1}}],["opensession",{"2":{"452":2}}],["opensea",{"2":{"19":1,"26":2,"43":3,"46":1}}],["openning",{"2":{"450":1,"452":1}}],["openwithoptions",{"2":{"244":2}}],["openwalletintent",{"2":{"244":1}}],["openwallet",{"2":{"244":3}}],["opened",{"0":{"483":1},"1":{"484":1,"485":1},"2":{"112":1,"433":1,"434":1,"452":1,"485":1}}],["openidauthentication",{"2":{"108":1}}],["opening",{"0":{"64":1},"2":{"105":1,"126":1,"248":1}}],["open",{"0":{"452":1},"2":{"61":1,"64":1,"88":2,"93":2,"96":1,"97":1,"104":1,"112":1,"145":2,"183":1,"191":1,"241":1,"244":2,"253":1,"261":1,"327":1,"354":1,"434":2,"435":1,"464":1,"483":1,"500":1}}],["optimal",{"2":{"50":1}}],["optionally",{"2":{"118":1,"120":1,"122":1,"124":1,"173":5,"244":1,"268":1,"376":1,"466":1}}],["optional",{"0":{"197":1,"198":1,"210":1,"211":1,"219":1,"220":1,"229":1},"2":{"86":1,"119":1,"133":1,"168":5,"169":4,"173":4,"177":4,"180":1,"251":1,"321":1,"450":1,"452":1}}],["option",{"2":{"19":1,"31":1,"149":1,"184":3,"186":4,"190":1,"243":2,"245":1,"258":1,"263":1,"266":1,"309":1}}],["options",{"0":{"68":1,"69":1,"163":1,"184":1,"210":1,"211":1,"227":1,"245":1},"1":{"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"228":1,"229":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1},"2":{"6":1,"19":1,"68":2,"76":2,"77":2,"80":2,"92":1,"162":1,"163":1,"165":2,"168":1,"169":1,"173":1,"177":1,"184":6,"186":1,"197":2,"204":1,"207":1,"210":1,"225":2,"244":2,"259":1,"341":2,"362":2,"363":1,"379":1,"461":1}}],["opportunities",{"2":{"13":1}}],["owner",{"2":{"355":1,"491":1}}],["owned",{"0":{"343":1},"1":{"344":1,"345":1},"2":{"78":1,"168":1,"342":1,"343":1,"366":1}}],["owns",{"2":{"354":1}}],["ownable",{"0":{"310":1},"2":{"310":4}}],["own",{"2":{"5":1,"11":1,"32":1,"80":1,"91":1,"107":1,"112":1,"114":1,"116":1,"135":1,"146":1,"153":1,"163":1,"203":1,"283":1,"307":1,"309":1,"335":1,"338":1,"340":1,"357":3,"360":1,"363":1,"378":1,"429":2}}],["override",{"2":{"70":1,"388":1,"392":1,"396":1,"411":1}}],["overwritten",{"2":{"70":1,"106":1}}],["overview",{"0":{"62":1,"149":1,"162":1,"165":1,"349":1},"1":{"150":1,"151":1,"152":1,"163":1,"164":1,"166":1,"350":1,"351":1,"352":1,"353":1,"354":1},"2":{"14":1,"149":1}}],["over",{"2":{"5":1,"131":1,"146":1,"325":1,"334":1,"366":1,"367":1,"490":3,"492":1}}],["org",{"2":{"451":1}}],["organized",{"2":{"450":1}}],["organizations",{"2":{"20":1}}],["orchestration",{"2":{"163":1}}],["original",{"2":{"475":1}}],["originaddress",{"2":{"32":1}}],["origin",{"0":{"248":1},"2":{"248":1}}],["origins",{"0":{"157":1},"2":{"155":1,"157":2}}],["or",{"0":{"18":1,"25":1,"30":1,"38":1,"264":1},"2":{"3":4,"6":1,"15":2,"16":3,"19":1,"20":3,"22":1,"23":1,"24":1,"25":4,"28":2,"31":1,"32":2,"33":1,"34":1,"35":1,"36":4,"37":2,"38":4,"39":7,"40":1,"43":1,"45":2,"47":1,"48":2,"50":3,"52":1,"63":2,"66":1,"70":1,"80":1,"81":1,"84":2,"92":1,"93":1,"95":1,"99":2,"101":1,"102":3,"104":3,"106":1,"108":1,"111":1,"116":1,"117":1,"118":2,"125":3,"126":1,"128":2,"130":1,"133":1,"135":1,"139":1,"141":1,"147":1,"163":2,"165":2,"168":1,"169":1,"171":1,"173":1,"175":1,"177":2,"179":1,"180":1,"181":1,"182":1,"183":1,"191":3,"193":1,"199":3,"200":1,"204":1,"206":1,"212":1,"213":1,"216":1,"237":2,"239":1,"242":2,"243":1,"244":1,"256":1,"263":1,"267":2,"269":1,"274":1,"275":1,"280":1,"282":1,"286":1,"289":1,"291":1,"293":1,"295":1,"302":1,"303":2,"304":1,"305":1,"309":1,"311":1,"319":2,"320":2,"333":1,"340":1,"342":1,"351":1,"352":1,"353":2,"355":1,"363":1,"364":3,"367":3,"369":1,"370":1,"375":2,"379":1,"387":1,"391":1,"406":1,"414":1,"424":2,"426":1,"427":1,"429":2,"438":1,"439":1,"440":1,"443":1,"446":2,"448":2,"452":1,"459":1,"460":1,"463":1,"464":1,"472":1,"488":1,"496":2,"498":1,"501":2,"502":1,"507":1,"508":1,"513":1,"515":1}}],["ordered",{"2":{"469":1}}],["orderid",{"2":{"183":1,"459":1}}],["ordering",{"2":{"51":1,"423":1}}],["orderbook",{"2":{"183":1}}],["orderbookorder",{"2":{"183":1}}],["orderbookcontractaddress",{"2":{"182":2,"183":2,"339":1}}],["orderstatus",{"2":{"183":2}}],["orders",{"2":{"181":1,"183":3,"339":1}}],["ordersummaryitems",{"0":{"67":1},"2":{"65":1,"67":2}}],["order",{"0":{"67":1},"2":{"0":1,"1":1,"2":1,"3":1,"11":1,"20":1,"67":1,"76":1,"77":1,"95":1,"105":1,"125":1,"129":1,"143":1,"146":1,"168":1,"183":8,"301":1,"303":1,"311":1,"350":1,"420":1,"425":1,"433":1,"449":1}}],["onvalidationrequired",{"0":{"446":1},"2":{"446":2,"447":2,"448":3}}],["onmeta",{"2":{"341":1,"362":1}}],["onboard",{"0":{"215":1},"1":{"216":1,"217":1,"218":1,"219":1,"220":1,"221":1},"2":{"191":1,"215":3,"216":2,"217":3,"221":1,"243":1}}],["onboarding",{"2":{"90":1,"91":1,"110":1,"138":1,"153":1,"156":1,"202":1,"203":1,"243":1,"356":1,"377":1,"378":1}}],["onfailuretest",{"2":{"131":1}}],["onresponse",{"2":{"131":1}}],["onramp",{"0":{"10":1}}],["onsessionstatechanged",{"2":{"435":2}}],["onsendtransactionfailedhandler",{"2":{"117":2}}],["onsendtransactionfailed",{"2":{"102":1,"117":2}}],["onsendtransactioncompletehandler",{"2":{"117":2}}],["onsendtransactioncomplete",{"2":{"102":1,"117":2}}],["onsuccess=",{"2":{"435":1}}],["onsuccess",{"2":{"128":1}}],["onsignmessagecompletehandler",{"2":{"111":2}}],["onsignmessagecomplete",{"2":{"111":2}}],["ondeploycontractfailedhandler",{"2":{"102":2}}],["ondeploycontractfailed",{"2":{"102":2}}],["ondeploycontractcompletehandler",{"2":{"102":2}}],["ondeploycontractcomplete",{"2":{"102":2}}],["onwaaswalletcreatedhander",{"2":{"102":1,"111":1,"117":1}}],["onwaaswalletcreatedhandler",{"2":{"101":3}}],["onwaaswalletcreated",{"2":{"101":2}}],["onclick=",{"2":{"64":1,"87":1,"88":1}}],["onclick",{"2":{"64":2,"87":2,"88":2,"244":1}}],["onchainreader",{"2":{"237":1,"496":1}}],["onchain",{"2":{"40":1}}],["once",{"2":{"2":1,"58":1,"87":1,"94":1,"95":1,"101":1,"128":1,"130":1,"145":1,"146":2,"156":1,"158":2,"159":1,"186":1,"189":1,"244":1,"266":1,"314":1,"319":1,"320":1,"330":1,"356":1,"360":1,"364":1,"404":1,"434":1,"445":1,"490":1,"492":1}}],["onlyself",{"2":{"388":1,"389":1,"396":1,"397":1}}],["only",{"0":{"190":1},"2":{"11":1,"52":1,"58":1,"78":1,"84":1,"101":1,"106":2,"108":2,"126":1,"133":1,"140":1,"168":1,"169":1,"173":1,"177":1,"184":1,"188":1,"189":1,"257":1,"263":1,"267":1,"270":1,"272":1,"273":2,"282":1,"302":1,"309":1,"319":1,"320":1,"341":1,"352":3,"354":3,"355":1,"357":1,"362":1,"363":2,"367":1,"375":1,"387":1,"389":1,"391":1,"397":1,"424":1,"429":1,"436":1,"440":1,"452":1,"457":1,"463":1,"465":1,"490":1,"503":1,"505":1,"506":2,"515":1}}],["on",{"0":{"8":1,"9":1,"10":1,"19":1,"135":1,"136":1,"171":4,"325":1,"328":1,"341":1,"362":1,"384":1},"2":{"2":2,"11":1,"14":1,"15":2,"19":2,"20":3,"25":1,"31":1,"32":2,"37":1,"43":3,"44":2,"46":1,"47":1,"50":1,"52":1,"57":1,"71":1,"80":2,"81":1,"90":1,"93":1,"94":2,"95":1,"104":5,"105":2,"106":1,"108":1,"110":1,"112":1,"114":1,"115":1,"118":1,"119":1,"125":5,"129":4,"131":1,"133":2,"139":1,"140":1,"145":7,"149":1,"155":1,"156":1,"161":1,"163":2,"165":2,"168":2,"169":2,"171":2,"173":2,"175":4,"177":3,"180":1,"183":1,"186":1,"188":4,"189":2,"190":1,"191":1,"199":3,"200":1,"202":1,"212":1,"213":3,"237":4,"239":1,"242":1,"243":5,"244":3,"246":1,"263":1,"264":1,"267":2,"270":1,"271":1,"272":1,"275":1,"280":1,"282":1,"285":3,"307":2,"309":1,"310":1,"324":1,"326":1,"327":2,"328":2,"329":1,"330":1,"331":2,"332":1,"339":1,"341":5,"343":1,"351":1,"353":1,"354":2,"355":1,"357":1,"362":5,"363":2,"369":1,"370":2,"375":2,"377":1,"386":1,"390":1,"391":1,"399":1,"401":1,"403":1,"411":1,"417":1,"429":1,"440":2,"441":1,"452":2,"453":2,"454":2,"459":2,"461":2,"463":1,"467":1,"469":1,"470":1,"490":2,"491":3,"492":1,"496":4,"498":1,"501":1,"503":1,"504":1,"505":1,"508":1,"513":1,"515":1}}],["one",{"0":{"442":1},"2":{"0":1,"3":1,"19":1,"20":2,"32":1,"34":1,"99":1,"102":1,"118":1,"126":1,"128":1,"131":1,"145":1,"149":1,"168":1,"180":1,"189":1,"190":1,"191":1,"255":1,"266":1,"270":1,"271":1,"272":1,"319":1,"320":1,"331":1,"350":1,"363":1,"364":1,"387":1,"392":1,"405":1,"434":1,"442":1,"443":1,"490":2,"492":1,"503":1,"504":1,"505":1}}],["official",{"2":{"76":1,"77":1,"79":1,"80":1,"189":1,"467":1}}],["off",{"2":{"44":1,"340":1}}],["offered",{"2":{"109":1}}],["offer",{"2":{"33":1,"156":1,"163":1,"165":1,"183":1,"191":1,"243":1,"351":1}}],["offers",{"2":{"1":1,"15":1,"23":1,"27":1,"31":1,"35":1,"47":1,"50":1,"165":1,"355":1}}],["often",{"2":{"41":1,"123":1}}],["of",{"0":{"11":1,"25":1,"51":1,"168":1,"169":1,"189":1,"200":1,"212":1,"269":1,"416":1,"474":1,"502":1},"1":{"12":1,"13":1,"475":1,"476":1,"477":1,"478":1,"479":1,"480":1,"481":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"488":1},"2":{"0":3,"3":3,"5":1,"11":1,"13":2,"15":3,"16":2,"17":2,"18":1,"19":3,"20":6,"21":1,"22":2,"25":3,"30":1,"31":2,"32":4,"34":3,"35":2,"36":6,"38":3,"39":2,"43":4,"44":1,"45":3,"46":1,"47":3,"50":7,"51":3,"52":1,"54":1,"59":1,"60":2,"61":2,"67":1,"71":1,"73":1,"74":1,"76":1,"77":1,"78":1,"80":2,"81":2,"82":1,"90":2,"91":2,"102":1,"105":4,"106":1,"109":3,"110":1,"112":2,"113":1,"115":1,"116":1,"117":2,"118":4,"120":3,"121":1,"122":3,"123":1,"124":3,"125":4,"126":4,"128":1,"129":3,"130":2,"131":4,"133":4,"135":1,"146":1,"147":1,"149":1,"150":1,"151":1,"152":1,"156":1,"157":2,"162":2,"163":1,"164":2,"165":2,"168":4,"169":5,"171":1,"173":7,"175":5,"177":5,"180":3,"181":1,"183":12,"184":2,"185":1,"188":1,"189":3,"190":5,"191":3,"194":1,"197":2,"199":1,"200":3,"202":2,"203":2,"206":2,"207":1,"210":1,"212":3,"213":1,"214":3,"220":1,"221":2,"222":1,"229":1,"236":1,"240":2,"241":2,"243":7,"244":1,"246":1,"248":1,"255":2,"256":1,"260":1,"261":1,"264":1,"266":1,"267":2,"270":1,"271":1,"272":1,"275":1,"283":1,"284":3,"285":2,"292":1,"300":1,"302":1,"303":2,"305":1,"308":1,"309":5,"312":2,"314":1,"315":2,"319":2,"320":2,"321":1,"325":1,"327":2,"328":1,"331":3,"333":1,"340":1,"343":2,"346":2,"350":4,"352":4,"353":3,"354":4,"355":4,"356":1,"357":1,"361":1,"363":3,"364":2,"365":1,"366":1,"367":2,"375":1,"377":2,"378":2,"380":1,"386":3,"388":3,"389":2,"390":1,"391":5,"392":1,"393":1,"395":1,"397":5,"398":2,"402":1,"403":3,"405":1,"406":1,"408":1,"409":1,"410":1,"412":1,"413":2,"414":3,"415":1,"416":4,"417":2,"418":1,"419":2,"420":2,"422":4,"424":2,"426":1,"428":2,"429":4,"430":1,"431":8,"432":1,"433":1,"436":1,"437":1,"439":2,"443":1,"444":1,"449":3,"450":5,"451":2,"452":1,"453":2,"454":3,"456":1,"458":3,"459":1,"460":2,"461":3,"463":1,"464":1,"465":3,"466":2,"467":1,"469":3,"470":1,"471":1,"473":2,"475":19,"478":3,"490":3,"492":1,"495":1,"499":2,"500":2,"503":1,"504":1,"505":1,"508":1}}],["ignored",{"2":{"244":1,"257":1,"258":1,"259":1,"416":1}}],["i32",{"2":{"183":2}}],["iwallet",{"2":{"112":1,"312":2,"313":2,"314":2,"315":1}}],["iindexer",{"2":{"109":2}}],["icon",{"2":{"104":1,"106":1,"145":1}}],["icons",{"2":{"32":1,"52":1}}],["ipfs",{"2":{"43":2,"323":1,"324":1,"325":3,"332":1}}],["ios",{"0":{"96":1,"144":1},"2":{"96":2,"104":1,"108":1,"141":1,"142":1,"144":1,"145":1,"357":1}}],["io",{"2":{"26":1,"43":1,"237":1,"268":1,"376":1,"496":1}}],["id1",{"2":{"459":1}}],["identity",{"2":{"236":1,"237":1,"352":1,"353":1,"442":1,"443":1,"495":1,"496":1}}],["identifier",{"2":{"156":1,"325":1,"440":1,"452":1,"454":1,"459":1,"475":1,"476":1,"478":1}}],["ideas",{"2":{"116":2}}],["ideally",{"2":{"158":1}}],["ideal",{"2":{"106":1}}],["idea",{"2":{"50":1}}],["idtokenstringoauth2",{"2":{"452":1}}],["idtokenin",{"2":{"133":1,"135":1}}],["idtoken",{"2":{"93":1,"94":1,"95":1,"101":1,"433":2,"434":6,"435":2,"436":1,"437":1,"439":1,"440":1,"452":2}}],["idstringthe",{"2":{"458":1}}],["idsyou",{"2":{"168":1}}],["ids",{"0":{"169":1},"2":{"32":2,"38":1,"39":1,"123":1,"173":1,"179":1,"180":1,"182":1,"183":1}}],["id",{"2":{"25":1,"32":3,"34":1,"38":1,"39":3,"40":1,"43":1,"44":2,"46":1,"76":1,"77":1,"80":2,"81":1,"85":2,"86":2,"133":1,"135":2,"143":6,"155":3,"156":1,"183":1,"184":1,"185":1,"186":1,"197":1,"210":1,"228":1,"269":1,"270":2,"290":1,"294":1,"321":3,"324":1,"331":1,"332":2,"333":1,"335":1,"352":1,"435":1,"436":2,"437":2,"439":1,"452":1,"457":1,"458":3,"459":3,"476":2,"483":1,"486":1,"502":1,"503":2}}],["iraq",{"2":{"13":1}}],["iran",{"2":{"13":1}}],["iethclient",{"2":{"283":2,"284":1}}],["ierc20",{"2":{"186":1}}],["ie",{"0":{"170":1},"1":{"171":1},"2":{"3":1,"25":1,"38":1,"39":1,"50":1,"252":1}}],["i",{"0":{"189":1,"190":1},"2":{"3":1,"44":2,"99":1,"157":1}}],["immediately",{"2":{"186":1}}],["imperative",{"2":{"403":1}}],["improved",{"2":{"363":1}}],["improperly",{"2":{"307":1}}],["implicit",{"2":{"95":1}}],["implementing",{"2":{"310":1}}],["implements",{"2":{"146":1}}],["implemented",{"2":{"120":1,"122":1,"124":1,"133":1,"139":1,"284":1,"342":1,"346":1,"391":1,"431":1}}],["implementationaddressaddress",{"2":{"389":1}}],["implementations",{"2":{"312":1}}],["implementation",{"0":{"387":1,"390":1},"1":{"388":1,"389":1,"390":1},"2":{"15":1,"35":1,"47":1,"109":1,"135":2,"139":1,"356":1,"357":1,"386":1,"388":4,"389":1,"390":4,"398":1,"431":3,"491":1}}],["implement",{"2":{"15":1,"35":1,"47":1,"93":1,"344":1,"346":2,"391":1,"432":1}}],["imported",{"2":{"110":2,"115":1,"190":1,"194":1,"207":1}}],["importing",{"2":{"105":1}}],["important",{"0":{"308":1},"2":{"93":1,"110":1,"113":1,"304":1,"315":1,"450":1}}],["importantly",{"2":{"2":1}}],["import",{"2":{"6":2,"16":1,"17":1,"25":2,"28":1,"29":1,"38":2,"39":4,"49":1,"59":1,"63":1,"64":1,"81":1,"85":6,"86":8,"87":2,"88":1,"104":4,"105":2,"106":3,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":1,"184":2,"189":2,"190":2,"194":2,"207":1,"217":1,"225":1,"226":2,"236":1,"237":5,"244":2,"277":2,"361":1,"390":1,"409":1,"410":2,"433":1,"434":1,"435":8,"436":1,"437":1,"439":1,"440":1,"477":1,"479":1,"482":1,"485":1,"487":1,"488":1,"495":1,"496":5,"510":2}}],["imagehashbytes32hash",{"2":{"393":1,"397":1}}],["imagehash",{"0":{"417":1,"430":1},"1":{"418":1,"420":1},"2":{"392":3,"394":1,"396":2,"397":3,"403":3,"406":4,"417":2,"418":1,"419":1,"420":1,"429":1,"430":3,"431":4}}],["images",{"0":{"324":1},"2":{"32":1,"324":1,"325":1,"334":1}}],["image",{"0":{"418":1},"2":{"3":7,"32":1,"43":1,"44":1,"244":2,"256":3,"324":1,"325":1}}],["iterate",{"2":{"409":2,"410":2,"411":1}}],["items",{"2":{"169":1,"323":1}}],["item",{"0":{"322":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1},"2":{"145":2,"168":1,"324":1,"329":1}}],["itself",{"2":{"270":1,"272":1,"354":1,"367":1,"389":1,"390":1,"397":1,"401":2,"434":1,"503":1,"505":1}}],["its",{"2":{"81":1,"123":1,"190":1,"236":1,"244":1,"354":1,"429":2,"450":1,"495":1}}],["it",{"0":{"6":1,"113":1,"148":1},"2":{"2":3,"14":1,"19":2,"20":10,"31":1,"32":1,"43":2,"44":1,"52":1,"59":1,"61":1,"81":1,"93":3,"99":3,"101":1,"105":3,"106":3,"110":1,"112":1,"114":2,"115":2,"119":1,"125":5,"126":1,"128":2,"131":1,"133":1,"134":2,"145":2,"146":5,"148":1,"155":1,"158":2,"159":1,"165":2,"183":2,"190":1,"191":1,"192":1,"198":1,"199":1,"205":1,"211":1,"213":1,"215":1,"231":1,"236":1,"241":1,"243":1,"244":1,"267":1,"274":1,"278":1,"285":1,"302":3,"303":1,"304":1,"305":2,"308":1,"309":1,"311":1,"314":1,"317":1,"318":1,"325":2,"330":1,"331":1,"332":3,"333":3,"335":1,"346":1,"351":2,"352":5,"353":3,"354":3,"361":1,"369":1,"370":1,"386":3,"387":1,"389":1,"397":2,"400":1,"403":3,"404":1,"405":1,"414":1,"424":1,"429":3,"431":1,"433":1,"439":1,"440":2,"445":2,"446":2,"450":1,"452":4,"459":3,"461":2,"465":1,"466":2,"467":2,"469":2,"470":1,"477":1,"479":1,"482":1,"485":1,"488":1,"490":1,"495":1,"500":1,"507":1,"511":1}}],["isopensessionresponse",{"2":{"485":1}}],["isfailedtransactionresponse",{"2":{"479":1}}],["isfeerequired",{"2":{"52":1}}],["isthis",{"2":{"436":2}}],["issendtransactionresponse",{"2":{"488":1}}],["issenttransactionresponse",{"2":{"439":3,"440":2,"477":1}}],["issessionvalid",{"2":{"444":2}}],["issignedmessageresponse",{"2":{"482":1}}],["issignedin",{"2":{"435":1}}],["issignerleaf",{"2":{"430":1}}],["issubdigestleaf",{"2":{"430":1}}],["issuedat",{"2":{"468":1}}],["issuednumbertimestamp",{"2":{"450":1}}],["issued",{"2":{"440":1,"450":1,"451":1,"452":1,"453":1,"459":1,"460":1,"476":1,"478":1}}],["issuer",{"2":{"436":2}}],["issue",{"2":{"188":1}}],["isvalidationrequiredresponse",{"2":{"487":1,"488":1}}],["isvalidsignature",{"2":{"411":3}}],["isvalidbooltrue",{"2":{"394":1}}],["isvalidimage",{"0":{"392":1},"1":{"393":1,"394":1},"2":{"392":1}}],["isvalidmessagesignature",{"2":{"280":1,"513":1}}],["isvalid",{"2":{"280":2,"392":1,"411":2,"444":2,"513":2}}],["ismounted",{"2":{"189":2}}],["islisting",{"2":{"183":1,"339":1}}],["island",{"2":{"12":1}}],["isbound",{"2":{"133":1}}],["isnestedleaf",{"2":{"430":1}}],["isn",{"2":{"106":1,"115":1}}],["isconnected",{"2":{"87":2}}],["is",{"2":{"1":1,"2":3,"3":4,"4":1,"13":1,"14":2,"15":3,"18":1,"19":3,"20":7,"22":2,"23":1,"30":1,"31":2,"32":2,"33":1,"34":1,"43":5,"44":2,"45":5,"47":2,"50":1,"51":1,"58":2,"59":1,"60":4,"61":1,"72":1,"80":1,"84":1,"85":1,"90":1,"93":3,"95":1,"99":1,"101":2,"102":4,"105":4,"106":2,"109":3,"110":2,"111":2,"112":3,"113":1,"114":1,"115":1,"117":3,"118":4,"119":3,"121":1,"123":1,"125":2,"126":2,"129":1,"130":2,"131":1,"133":9,"134":2,"140":1,"145":2,"146":1,"153":1,"155":1,"156":1,"158":3,"163":2,"165":3,"168":1,"169":1,"173":1,"175":1,"177":2,"183":4,"184":2,"185":1,"188":4,"189":5,"190":5,"191":1,"192":1,"193":1,"194":1,"196":1,"197":1,"200":1,"201":3,"202":1,"205":1,"206":1,"207":1,"209":1,"210":1,"212":1,"214":3,"215":1,"216":1,"221":1,"222":1,"230":1,"231":1,"232":2,"233":1,"236":3,"237":3,"239":1,"240":4,"241":1,"242":2,"243":6,"244":2,"249":2,"251":1,"253":1,"257":1,"258":1,"259":1,"262":1,"266":6,"267":2,"269":1,"270":3,"271":1,"272":3,"274":2,"283":1,"285":4,"290":1,"294":1,"302":3,"304":1,"307":2,"309":2,"311":1,"312":1,"313":2,"314":2,"319":5,"320":5,"321":1,"330":1,"331":1,"333":2,"335":1,"342":1,"351":3,"352":2,"353":4,"354":7,"355":1,"361":1,"363":2,"364":3,"366":1,"367":3,"375":1,"377":1,"386":1,"390":1,"391":2,"392":2,"395":1,"396":1,"397":4,"398":4,"399":2,"400":1,"401":1,"402":2,"403":4,"404":1,"405":1,"406":3,"409":2,"410":2,"411":5,"416":1,"417":4,"422":1,"424":2,"425":2,"426":1,"427":2,"428":4,"429":7,"430":6,"431":1,"433":1,"434":3,"435":7,"439":1,"440":3,"442":1,"444":1,"445":1,"446":4,"448":1,"449":2,"450":2,"452":3,"453":2,"454":2,"459":2,"460":1,"466":3,"467":1,"468":1,"469":3,"470":1,"475":1,"478":3,"480":1,"483":1,"486":1,"487":1,"490":7,"491":1,"492":1,"495":3,"496":3,"498":1,"499":4,"500":1,"501":2,"502":1,"503":3,"504":1,"505":3,"507":2}}],["if",{"2":{"0":1,"3":1,"4":1,"15":1,"16":1,"19":1,"28":1,"32":1,"35":1,"44":1,"45":1,"47":1,"78":1,"80":2,"92":1,"99":2,"101":2,"102":2,"104":2,"105":1,"106":4,"110":1,"111":2,"117":2,"119":2,"120":1,"122":1,"124":1,"125":3,"130":1,"131":2,"133":2,"145":1,"146":2,"155":1,"156":1,"163":1,"165":1,"168":1,"169":1,"173":1,"177":1,"183":3,"184":1,"186":3,"189":1,"191":2,"200":1,"204":1,"206":1,"212":1,"237":3,"242":3,"243":3,"244":4,"257":1,"258":1,"259":1,"262":1,"263":1,"266":2,"267":1,"273":1,"275":1,"280":1,"282":2,"283":1,"285":1,"302":1,"303":2,"304":2,"305":2,"306":1,"319":4,"320":4,"321":2,"332":1,"335":1,"346":1,"353":1,"354":1,"363":1,"364":2,"366":2,"367":2,"375":1,"379":1,"389":1,"392":1,"394":1,"397":1,"400":1,"403":1,"405":1,"406":1,"409":1,"410":1,"411":3,"424":1,"428":1,"429":1,"430":3,"431":1,"433":1,"435":1,"439":2,"440":2,"443":1,"445":2,"446":2,"450":1,"452":2,"457":1,"475":2,"477":1,"478":1,"479":1,"482":1,"485":1,"487":1,"488":2,"496":3,"501":3,"506":1,"508":1,"513":1,"515":2}}],["inaccessible",{"2":{"429":1,"492":1}}],["inactive",{"2":{"353":1}}],["inner",{"2":{"429":1}}],["initwallet",{"2":{"244":2}}],["initiate",{"2":{"492":1}}],["initiateauth",{"2":{"434":1}}],["initiated",{"2":{"266":1}}],["initiating",{"2":{"229":1}}],["initialization",{"0":{"225":1},"2":{"431":2}}],["initialize",{"0":{"277":1,"510":1},"2":{"398":1}}],["initializes",{"2":{"190":1}}],["initialized",{"2":{"80":1,"190":1,"225":1,"226":1}}],["initial",{"0":{"159":1,"419":1,"431":1},"1":{"420":1},"2":{"128":1,"159":1,"163":1,"386":1,"387":1,"419":1,"425":1,"431":5}}],["individual",{"2":{"363":1}}],["indicating",{"2":{"190":1}}],["indeed",{"2":{"466":1}}],["independently",{"2":{"351":1,"352":1,"353":1,"461":1}}],["independent",{"2":{"50":1,"51":2,"363":2,"380":1,"425":1}}],["indexing",{"2":{"20":1}}],["index",{"2":{"20":1,"185":1,"439":1,"476":2}}],["indexeddb",{"2":{"365":2}}],["indexeable",{"2":{"39":1}}],["indexes",{"2":{"20":1}}],["indexer",{"0":{"14":1,"20":1},"1":{"15":1,"16":1,"17":1,"18":1,"21":1,"22":1},"2":{"14":4,"15":9,"16":6,"17":5,"18":1,"19":3,"20":9,"24":2,"31":1,"37":2,"39":1,"107":1,"109":3,"140":1,"168":12,"169":12,"171":12,"173":13,"175":15,"177":14,"179":1,"180":11,"340":1}}],["inherit",{"2":{"189":1,"310":1}}],["inherits",{"2":{"146":1}}],["incorrect",{"2":{"397":1}}],["increase",{"2":{"243":1}}],["increment",{"2":{"107":3,"140":3}}],["including",{"0":{"177":1},"2":{"22":2,"81":1,"123":1,"181":1,"197":1,"210":1,"311":1,"449":1}}],["includes",{"2":{"173":1,"243":1,"354":1,"436":1,"439":1}}],["includecollectiontokens",{"2":{"168":1}}],["includecontracts",{"2":{"19":1,"168":1,"169":1,"173":1,"177":1}}],["includedpaymentproviders",{"0":{"260":1},"2":{"244":2,"260":1}}],["included",{"2":{"20":1,"168":2,"169":2,"173":2,"177":2,"284":1,"439":1,"466":1}}],["includemetadata",{"2":{"17":2,"24":1,"37":1,"168":3,"169":3,"171":1,"173":3,"175":2,"177":3}}],["include",{"2":{"3":1,"19":1,"32":1,"41":1,"52":1,"70":1,"71":1,"118":1,"119":1,"126":1,"303":1,"397":1,"466":1}}],["invalidating",{"2":{"354":1}}],["invalid",{"2":{"282":1,"388":1,"416":1,"424":1,"515":1}}],["involve",{"2":{"438":1}}],["involved",{"2":{"165":1}}],["involves",{"2":{"102":1,"449":1}}],["invoking",{"0":{"88":1}}],["invoke",{"2":{"87":1}}],["investigate",{"2":{"0":1}}],["inputs",{"2":{"459":2}}],["input",{"2":{"75":1,"118":1,"128":1,"397":1}}],["inline",{"2":{"75":1}}],["insightful",{"2":{"148":1}}],["insights",{"2":{"147":1}}],["inside",{"2":{"18":1,"30":1,"50":1}}],["insecurely",{"2":{"139":1}}],["inspector",{"2":{"115":2}}],["instantiating",{"2":{"244":1}}],["instances",{"2":{"447":1,"490":2,"491":2}}],["instance",{"2":{"59":1,"109":1,"168":1,"244":2,"361":1,"434":2,"490":5,"491":1,"492":1}}],["installed",{"2":{"104":1,"193":1,"206":2,"223":1,"243":1,"268":1,"376":1,"463":1}}],["installing",{"0":{"84":1},"2":{"83":1,"106":1}}],["installation",{"0":{"14":1,"15":1,"16":1,"17":1,"18":1,"28":1,"29":1,"30":1,"47":1,"48":1,"49":1,"57":1,"103":1,"137":1,"193":1,"206":1,"216":1,"223":1,"359":1},"1":{"15":1,"16":2,"17":2,"18":2,"48":1,"49":1,"104":1,"105":1,"106":1,"138":1,"139":1},"2":{"28":1}}],["install",{"0":{"267":1,"375":1},"1":{"268":1,"376":1},"2":{"6":2,"16":2,"28":2,"48":2,"50":1,"57":2,"63":3,"84":5,"86":1,"105":1,"193":1,"200":2,"206":1,"212":2,"216":1,"223":1,"243":1,"244":2,"265":1,"267":2,"359":2,"371":1,"375":2}}],["instead",{"2":{"43":1,"81":1,"99":1,"200":1,"212":1,"236":1,"283":1,"303":1,"363":1,"398":1,"417":2,"430":1,"432":1,"459":1,"495":1}}],["instructions",{"0":{"40":1},"2":{"14":1,"143":1}}],["infinity",{"2":{"428":2}}],["infura",{"2":{"237":2,"496":2}}],["infer",{"2":{"46":1}}],["informed",{"2":{"367":1}}],["informs",{"2":{"190":1}}],["information",{"2":{"13":1,"15":1,"20":2,"32":1,"43":1,"46":1,"57":1,"139":3,"156":1,"159":1,"164":1,"168":1,"190":1,"366":1,"449":1}}],["info",{"2":{"25":1,"43":1,"99":2,"244":1,"367":1,"391":1}}],["infrastructure",{"2":{"5":2,"20":1,"60":1,"240":1,"340":1,"354":1,"499":1}}],["int256",{"2":{"304":1}}],["intrusive",{"2":{"165":1}}],["introduction",{"0":{"107":1,"140":1,"307":1,"323":1},"1":{"108":1,"141":1,"308":1}}],["introduced",{"2":{"19":1}}],["introducing",{"2":{"14":1}}],["int",{"2":{"119":1,"180":1,"293":1,"304":1}}],["intend",{"2":{"367":1}}],["intents",{"0":{"467":1},"1":{"468":1,"469":1,"470":1,"471":1},"2":{"467":1,"468":1,"471":1,"488":1}}],["intent",{"2":{"99":19,"244":3,"352":1,"449":1,"468":3,"469":1,"470":3,"471":1,"472":1,"475":1,"478":1,"480":1,"483":1}}],["integers",{"2":{"304":1}}],["integer",{"2":{"262":1,"294":1,"304":2}}],["integrity",{"2":{"236":1,"248":1,"461":2,"465":1,"495":1}}],["integration",{"0":{"63":1,"127":1,"133":1,"188":1},"1":{"64":1,"65":1,"66":1,"67":1,"128":1,"129":1,"130":1,"131":1},"2":{"82":1,"91":1,"107":1,"140":1,"164":1,"165":2,"166":1,"203":1,"221":1,"245":1,"357":2,"378":1}}],["integrations",{"0":{"161":1},"2":{"25":1,"33":1,"38":1,"39":2,"168":1}}],["integrating",{"2":{"50":1,"90":1,"202":1,"244":1,"341":1,"362":1,"377":1,"450":1}}],["integrated",{"2":{"18":1,"30":1,"31":1,"107":1,"260":1,"261":1,"355":1}}],["integrate",{"0":{"9":1,"10":1,"202":1,"377":1},"1":{"203":1,"378":1},"2":{"0":1,"14":1,"15":1,"35":1,"47":1,"63":1,"79":1,"91":1,"92":1,"153":1,"161":1,"163":1,"165":1,"203":1,"204":1,"242":1,"355":1,"357":1,"370":1,"378":1,"379":1,"459":1,"501":1}}],["interchangeably",{"2":{"314":1}}],["intercepted",{"2":{"128":1}}],["interpret",{"2":{"275":1,"508":1}}],["interoperability",{"2":{"243":1}}],["internaltype",{"2":{"459":4}}],["internally",{"2":{"392":1,"430":1,"467":1}}],["internal",{"2":{"148":1,"351":1,"392":1,"429":3}}],["intermediate",{"2":{"145":1}}],["interfacing",{"2":{"84":1}}],["interfaces",{"2":{"181":1}}],["interface",{"2":{"33":2,"35":1,"50":1,"109":1,"266":1,"269":3,"270":2,"271":2,"272":2,"283":1,"284":1,"310":1,"312":2,"314":1,"315":1,"391":3,"459":1,"502":3,"503":2,"504":2,"505":2}}],["interested",{"2":{"52":1}}],["interaction",{"2":{"281":1,"514":1}}],["interactions",{"0":{"120":1,"122":1,"124":1},"2":{"120":1,"122":1,"124":1,"275":1,"467":1,"508":1}}],["interacting",{"2":{"66":1,"118":1,"125":1,"304":1,"309":1,"429":1,"472":1}}],["interact",{"2":{"23":1,"52":1,"59":1,"310":1,"351":1,"361":1,"432":1}}],["intelligently",{"2":{"20":1}}],["into",{"0":{"202":1,"377":1},"1":{"203":1,"378":1},"2":{"5":1,"14":1,"52":1,"90":1,"92":2,"99":1,"102":1,"105":1,"106":1,"125":1,"126":1,"128":1,"129":1,"146":2,"155":1,"163":1,"165":4,"190":1,"199":1,"202":1,"204":2,"213":1,"256":1,"267":1,"285":1,"304":1,"319":1,"320":1,"326":1,"355":1,"356":1,"357":2,"375":1,"377":1,"379":2,"430":2,"465":1,"490":1}}],["in",{"0":{"72":1,"79":1,"94":1,"95":1,"147":1,"153":1,"168":1,"176":1,"177":1,"322":1,"433":1,"434":1},"1":{"73":1,"74":1,"75":1,"76":1,"77":1,"80":1,"96":1,"97":1,"98":1,"99":1,"100":1,"148":1,"149":1,"150":1,"151":1,"152":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"177":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"434":1,"435":1},"2":{"0":3,"1":1,"2":5,"3":6,"11":3,"13":1,"14":1,"15":1,"17":1,"19":2,"20":8,"22":3,"25":2,"28":1,"29":1,"31":1,"32":3,"34":1,"38":2,"39":6,"41":3,"43":3,"45":5,"46":2,"49":1,"50":3,"51":1,"52":3,"54":1,"55":1,"60":3,"63":1,"67":1,"70":1,"72":1,"73":2,"74":2,"75":2,"76":4,"77":3,"78":5,"80":1,"81":1,"83":2,"86":1,"87":2,"90":1,"91":1,"93":1,"94":2,"95":5,"96":2,"97":2,"99":7,"101":3,"102":4,"104":4,"105":2,"106":6,"107":1,"108":3,"110":5,"111":1,"112":3,"115":7,"117":1,"118":2,"119":1,"121":1,"123":4,"125":6,"126":2,"128":2,"129":2,"131":1,"133":6,"134":1,"138":2,"139":3,"140":2,"143":2,"145":5,"146":6,"147":1,"148":4,"149":2,"153":2,"156":1,"158":1,"162":1,"163":5,"165":3,"168":6,"169":3,"171":3,"173":4,"175":3,"177":5,"180":3,"181":1,"182":1,"183":4,"184":1,"188":2,"189":4,"190":7,"191":1,"197":1,"202":1,"203":1,"210":1,"220":1,"232":1,"236":3,"237":3,"239":1,"240":3,"242":2,"244":2,"249":2,"254":2,"257":2,"258":2,"259":2,"260":1,"261":1,"266":1,"269":1,"270":2,"271":1,"272":2,"274":1,"275":2,"278":1,"282":1,"283":2,"284":2,"285":2,"286":1,"288":1,"289":2,"290":1,"291":2,"293":1,"294":1,"295":1,"300":1,"301":1,"302":1,"303":3,"304":1,"307":7,"311":1,"312":2,"319":1,"320":1,"321":1,"323":1,"324":1,"325":1,"328":1,"333":1,"335":1,"337":1,"339":1,"340":1,"341":1,"344":1,"350":1,"351":1,"352":1,"353":4,"354":2,"355":1,"357":1,"362":1,"364":1,"365":2,"366":1,"367":1,"377":1,"378":1,"380":1,"388":1,"391":1,"392":1,"397":1,"399":1,"400":1,"406":2,"410":1,"420":1,"422":1,"425":1,"429":1,"433":3,"434":2,"435":1,"439":1,"440":1,"442":1,"443":2,"449":2,"450":3,"459":4,"464":1,"465":1,"466":4,"469":1,"470":1,"471":1,"475":3,"478":1,"486":1,"490":2,"492":3,"495":3,"496":3,"498":1,"499":3,"501":2,"502":1,"503":2,"504":1,"505":2,"507":1,"508":2,"511":1,"515":1}}],["fmt",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"184":1,"186":2}}],["fscriptdelegate",{"2":{"133":1}}],["fsequenceerror",{"2":{"131":2}}],["fstoredcredentials",{"2":{"130":1}}],["fstring",{"2":{"130":1,"131":2,"133":4,"134":1,"135":1}}],["ffailurecallback",{"2":{"131":1}}],["fcredentials",{"2":{"130":2,"133":2,"146":1}}],["fly",{"2":{"324":1}}],["flexible",{"2":{"243":1,"347":1}}],["flexibility",{"2":{"106":1}}],["flagged",{"2":{"400":1}}],["flag",{"2":{"130":1,"252":1}}],["floating",{"2":{"118":1}}],["flows",{"2":{"441":1}}],["flow",{"0":{"489":1,"492":1},"1":{"490":1,"491":1,"492":1},"2":{"95":1,"266":1,"357":1,"489":1,"492":1}}],["feb",{"2":{"381":1}}],["feehistoryresult",{"2":{"293":2}}],["feehistory",{"0":{"293":1},"2":{"293":2}}],["feeoptions",{"2":{"184":1}}],["feetokens",{"2":{"52":2}}],["fee",{"0":{"184":1},"2":{"52":3,"184":4,"186":1,"298":1}}],["fees",{"0":{"52":1},"2":{"52":1,"293":1,"347":1,"459":1}}],["feel",{"2":{"32":1,"82":1,"93":1,"106":1,"112":1,"191":1}}],["few",{"2":{"22":1,"91":1,"105":1,"113":1,"115":1,"129":1,"145":1,"203":1,"378":1}}],["federation",{"2":{"13":1}}],["fetches",{"0":{"168":1},"2":{"173":1,"177":1}}],["fetching",{"0":{"184":1,"185":1},"2":{"37":1,"112":1,"168":1}}],["fetch",{"0":{"25":1,"38":1,"169":1,"171":1,"173":1,"175":1,"177":1},"2":{"6":2,"20":1,"22":4,"24":1,"34":2,"36":4,"37":1,"38":1,"39":1,"40":2,"168":1,"182":3,"185":1}}],["features",{"0":{"91":1,"203":1,"378":1},"2":{"20":1,"23":1,"50":1,"105":1,"107":1,"140":1,"242":2,"357":1,"501":2}}],["feature",{"2":{"5":1,"11":1,"63":1,"188":1,"190":2,"326":1}}],["future",{"2":{"471":1}}],["fur",{"2":{"43":1}}],["furthermore",{"2":{"165":1}}],["further",{"2":{"0":1,"244":1,"467":1}}],["full",{"2":{"15":1,"21":1,"32":1,"35":1,"44":1,"47":1,"76":1,"77":1,"107":1,"140":1,"163":1,"189":1,"190":1,"252":1,"264":1,"439":1,"440":1}}],["fully",{"2":{"11":1,"23":1,"109":1,"232":1,"302":1,"355":1,"429":1}}],["funds",{"2":{"244":1,"388":1,"402":1}}],["funding",{"2":{"11":1,"262":1,"263":1}}],["funcstringthe",{"2":{"459":1}}],["func",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"459":2}}],["functionyesdatastringadditional",{"2":{"457":1}}],["functionnameasstring",{"2":{"125":2,"126":1}}],["functions",{"0":{"303":1},"2":{"102":1,"117":1,"120":1,"122":1,"124":1,"128":1,"199":1,"213":1,"267":1,"280":1,"513":1}}],["functionality",{"2":{"109":1,"129":1,"191":1,"266":1,"270":1,"271":1,"272":1,"342":1,"346":1,"399":1,"503":1,"504":1,"505":1}}],["functional",{"2":{"23":1,"355":1,"435":1}}],["function",{"2":{"6":3,"80":1,"81":1,"85":1,"86":1,"101":1,"111":1,"118":1,"125":5,"139":2,"146":2,"190":1,"236":1,"242":1,"269":3,"270":2,"271":2,"272":2,"302":3,"303":1,"388":1,"392":2,"396":1,"398":1,"411":1,"430":4,"431":1,"435":5,"436":1,"459":5,"495":1,"501":1,"502":3,"503":2,"504":2,"505":2}}],["fungible",{"2":{"119":1,"121":1,"123":1}}],["fashion",{"2":{"410":1}}],["fast",{"2":{"1":1,"20":3,"23":1,"27":1,"31":1,"50":1}}],["fatal",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1}}],["fate",{"2":{"44":1}}],["false",{"0":{"399":1},"2":{"168":1,"169":1,"173":1,"177":1,"183":1,"244":2,"263":1,"398":2,"404":1,"435":1,"436":1,"440":1,"444":1,"445":2,"446":1,"448":1,"476":3,"478":1}}],["fall",{"2":{"44":1}}],["fauthenticatorconfig",{"2":{"143":1}}],["familiar",{"2":{"92":1,"125":1,"165":1,"204":1,"243":1,"355":1,"379":1}}],["facing",{"2":{"355":1}}],["facilitate",{"2":{"62":1}}],["facet",{"2":{"350":1}}],["facebook",{"2":{"76":1,"81":1,"91":1,"95":1,"203":1,"257":1,"378":1,"433":1,"443":1}}],["factual",{"2":{"391":1,"406":1,"420":1}}],["factory",{"2":{"386":1,"387":1,"391":1,"398":2,"419":1,"420":2,"421":1,"431":1}}],["fact",{"2":{"20":1,"43":1,"60":1,"240":1,"363":1,"499":1}}],["failing",{"2":{"440":1}}],["fails",{"2":{"145":1,"319":1,"320":1,"400":1,"440":2}}],["failedyesgasusednumberamount",{"2":{"475":1,"478":1}}],["failedtransactionresponse",{"2":{"440":1}}],["failedtransactionreturn",{"2":{"117":1}}],["failed",{"0":{"440":1,"478":1},"1":{"479":1},"2":{"438":2,"439":1,"478":2,"479":1}}],["failedcontractdeploymentreturn",{"2":{"102":1}}],["failure",{"2":{"110":1,"139":1,"302":1,"475":1,"478":1}}],["failures",{"2":{"20":1}}],["fail",{"2":{"5":1,"126":1,"145":1,"307":1,"319":1,"320":1}}],["friendlyname",{"2":{"436":2}}],["freshly",{"2":{"331":1}}],["frequent",{"2":{"275":1,"508":1}}],["free",{"2":{"4":1,"14":1,"32":2,"50":1,"52":3,"82":1,"93":1,"112":1,"191":1}}],["framework",{"2":{"140":1,"165":1}}],["frommnemonic",{"2":{"184":1}}],["from",{"0":{"13":1,"109":1},"2":{"0":1,"2":1,"3":1,"5":1,"6":2,"11":1,"15":1,"16":3,"19":2,"20":5,"22":1,"25":2,"28":3,"36":2,"38":2,"39":4,"41":1,"43":1,"59":1,"63":1,"64":1,"78":1,"81":1,"82":1,"85":6,"86":8,"87":3,"88":1,"94":1,"99":1,"101":1,"102":3,"104":3,"109":1,"111":2,"117":2,"119":1,"123":1,"125":2,"130":2,"133":1,"134":4,"138":1,"145":1,"146":1,"148":1,"168":4,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"184":2,"185":1,"189":2,"190":1,"194":2,"207":1,"217":1,"225":1,"226":3,"236":3,"237":5,"242":2,"243":1,"244":2,"263":1,"266":4,"269":2,"270":2,"272":2,"273":1,"275":2,"277":2,"283":1,"289":1,"303":1,"305":1,"310":1,"321":1,"323":1,"324":1,"325":1,"332":1,"350":1,"351":1,"352":2,"353":1,"361":1,"363":1,"365":1,"366":1,"369":1,"370":1,"386":1,"389":1,"390":1,"397":1,"409":1,"410":2,"433":1,"434":2,"435":10,"436":1,"437":2,"439":1,"440":1,"448":1,"465":1,"468":1,"477":2,"478":1,"479":2,"482":2,"485":2,"487":2,"488":2,"495":3,"496":5,"501":2,"502":2,"503":2,"505":2,"506":1,"508":2,"510":2}}],["frontend",{"2":{"50":1,"353":2}}],["front",{"2":{"0":1}}],["fiat",{"0":{"341":1,"362":1}}],["fixedbyte",{"2":{"304":1}}],["fixed",{"2":{"304":1,"391":1}}],["fixing",{"2":{"188":1}}],["fit",{"2":{"106":2,"163":1,"308":1}}],["fillorkillorder",{"2":{"459":2}}],["fill",{"2":{"110":1,"333":1}}],["filters",{"2":{"179":1,"180":6}}],["filter",{"2":{"99":9,"149":1,"173":6,"175":5,"177":1,"180":1,"183":1}}],["files",{"0":{"326":1},"2":{"105":2,"324":1,"325":3,"326":1,"327":1,"331":1}}],["file",{"0":{"465":1},"2":{"3":1,"99":2,"106":1,"138":1,"143":1,"145":2,"324":1,"325":1,"333":1,"435":1,"465":1,"466":1}}],["firm",{"2":{"123":1}}],["fired",{"2":{"133":1,"148":1}}],["fires",{"2":{"130":1}}],["fire",{"2":{"50":1,"134":2,"135":1}}],["first",{"0":{"398":1},"1":{"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1},"2":{"2":1,"32":1,"81":1,"99":1,"102":1,"108":1,"120":1,"122":1,"124":1,"145":1,"244":1,"324":2,"364":1,"398":1,"403":2,"452":1}}],["fieldtypedescriptionerrorstringthe",{"2":{"478":1}}],["fields",{"2":{"45":2,"80":1,"439":1,"450":1,"473":1}}],["field",{"2":{"43":1,"45":2,"66":1,"67":1,"81":1,"96":1,"97":1,"143":1,"155":1,"469":1,"475":1,"478":1,"480":1,"483":1,"486":1}}],["finishvalidatesession",{"2":{"445":2}}],["finishes",{"2":{"403":2}}],["finished",{"2":{"145":1,"266":1}}],["finalizeauth",{"2":{"434":2}}],["finalize",{"0":{"334":1}}],["finally",{"2":{"3":1,"45":1,"46":1,"134":1,"333":1}}],["fingerprints",{"2":{"143":1}}],["fine",{"2":{"45":1}}],["finding",{"2":{"105":1}}],["findobjectoftype",{"2":{"93":1}}],["find",{"0":{"464":1},"2":{"3":1,"15":1,"146":1,"155":2,"184":1,"236":1,"405":1,"406":1,"495":1}}],["foolproof",{"2":{"466":1}}],["fom",{"2":{"183":1}}],["focus",{"2":{"163":1,"165":1,"331":1}}],["fonts",{"2":{"163":1}}],["found",{"2":{"105":1,"110":1,"112":2,"138":1,"146":1,"156":1,"189":1,"190":2,"282":1,"284":1,"515":1}}],["folder",{"0":{"327":1},"2":{"104":2,"105":2,"110":4,"145":2,"146":7,"188":3,"190":2,"326":4,"327":2,"332":1,"333":1}}],["follows",{"2":{"107":1,"140":1,"266":1,"409":1,"427":1,"428":1,"429":1,"430":2,"450":1}}],["followed",{"2":{"51":1}}],["following",{"0":{"13":1},"2":{"3":1,"6":1,"11":2,"99":1,"101":1,"115":1,"128":1,"129":1,"138":1,"142":1,"143":1,"144":1,"145":2,"154":1,"200":1,"206":1,"212":1,"237":1,"323":1,"353":1,"357":1,"403":1,"423":1,"429":1,"431":1,"432":1,"463":1,"464":1,"465":1,"468":1,"473":1,"496":1}}],["follow",{"2":{"1":1,"15":1,"35":1,"47":1,"63":1,"85":1,"161":1,"181":1,"256":1,"356":1,"357":1,"360":1}}],["forbidden",{"2":{"455":1}}],["forest",{"2":{"357":1}}],["foreach",{"2":{"85":1,"86":1}}],["force",{"2":{"252":1}}],["forwarder",{"2":{"146":1}}],["forward",{"2":{"135":1,"146":2}}],["formerly",{"2":{"380":1}}],["forms",{"2":{"342":1}}],["form",{"2":{"112":1,"118":1,"343":1}}],["formats",{"2":{"37":1,"41":1}}],["format",{"2":{"34":1,"41":1,"43":1,"45":2,"94":1,"118":1,"119":2,"125":4,"285":2,"286":1,"288":1,"289":1,"290":1,"291":2,"293":1,"294":1,"295":1,"321":2,"335":1,"466":1}}],["forum",{"2":{"99":1}}],["forget",{"2":{"50":1,"115":1}}],["for",{"0":{"38":1,"173":1,"175":1,"235":1,"242":1,"447":1,"494":1,"501":1},"2":{"0":1,"1":1,"2":1,"3":4,"4":1,"5":2,"13":2,"15":3,"16":3,"17":3,"19":1,"20":5,"22":3,"23":1,"24":3,"25":2,"27":1,"31":4,"32":3,"33":3,"35":1,"37":5,"38":1,"39":3,"41":1,"43":5,"44":2,"45":1,"47":3,"50":5,"51":1,"52":5,"57":2,"60":1,"61":2,"66":1,"70":2,"76":1,"77":1,"80":3,"84":2,"85":3,"89":1,"90":1,"93":1,"94":1,"95":1,"99":2,"101":1,"102":2,"104":1,"105":1,"106":1,"107":2,"110":1,"111":2,"112":2,"117":3,"118":2,"120":3,"122":3,"123":1,"124":3,"125":1,"126":2,"128":2,"133":2,"140":1,"142":1,"143":2,"144":1,"146":2,"148":2,"149":3,"150":1,"155":1,"156":1,"158":5,"159":1,"162":1,"163":1,"164":3,"165":5,"166":1,"168":4,"169":2,"171":1,"173":4,"175":2,"177":3,"181":1,"182":1,"183":2,"184":1,"185":1,"186":2,"188":4,"190":1,"191":4,"197":1,"198":2,"199":2,"201":5,"202":1,"211":2,"213":2,"214":4,"222":1,"230":1,"233":1,"236":1,"237":3,"239":1,"240":1,"241":2,"242":2,"243":4,"244":1,"247":1,"248":1,"249":1,"251":1,"262":1,"264":1,"266":2,"267":2,"275":3,"283":1,"284":1,"285":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"298":1,"301":1,"302":2,"303":1,"304":2,"307":2,"309":2,"310":3,"311":2,"313":1,"315":1,"316":1,"318":1,"320":1,"323":2,"324":1,"325":2,"326":1,"331":2,"332":2,"333":1,"335":1,"338":1,"339":2,"340":1,"346":1,"352":1,"354":1,"355":1,"357":3,"363":1,"364":3,"367":2,"377":1,"391":1,"397":3,"403":2,"405":1,"406":1,"409":1,"410":1,"411":1,"413":1,"418":1,"420":1,"423":3,"428":2,"430":1,"433":1,"434":2,"436":1,"439":1,"442":1,"444":2,"447":2,"448":1,"451":1,"452":2,"454":1,"455":1,"457":1,"458":1,"459":2,"460":1,"465":2,"466":2,"468":1,"470":1,"472":1,"475":6,"478":3,"488":1,"490":4,"491":1,"492":1,"495":1,"496":3,"498":1,"499":1,"500":2,"501":2,"508":3}}],["wyre",{"2":{"362":1}}],["w3c",{"2":{"243":1}}],["won",{"2":{"351":1}}],["wooden",{"2":{"332":1}}],["wouldn",{"2":{"353":1}}],["would",{"2":{"102":1,"125":1,"155":1,"156":1,"196":1,"209":1,"244":1,"303":1,"305":1,"366":1,"367":1,"466":1,"468":1}}],["world",{"2":{"90":1,"202":1,"377":1,"409":1,"481":1}}],["worker",{"2":{"357":1}}],["workers",{"0":{"8":1}}],["workflow",{"2":{"236":1,"495":1}}],["working",{"2":{"101":1,"102":1,"111":1,"117":1,"189":1,"307":1,"308":1,"321":1,"489":1}}],["works",{"0":{"113":1,"148":1},"2":{"25":1,"38":1,"39":2,"93":2,"125":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"239":1,"243":1,"244":3,"256":1,"369":1,"370":1,"429":1,"498":1}}],["work",{"2":{"3":1,"19":1,"32":1,"82":1,"95":1,"106":1,"108":1,"110":1,"112":1,"147":1,"191":2,"243":4,"285":1,"333":1,"434":1,"463":1,"467":1}}],["wrong",{"2":{"263":2}}],["wrapping",{"2":{"130":1,"307":2}}],["wrappers",{"2":{"80":1,"106":1,"309":3}}],["wrapper",{"0":{"85":1,"86":1},"2":{"68":1,"85":2,"86":1,"102":1,"109":1,"120":1,"122":1,"124":1,"190":6,"309":1,"310":1}}],["wrapped",{"2":{"52":1}}],["wrap",{"2":{"85":1,"190":2}}],["writing",{"2":{"131":1}}],["written",{"2":{"60":1,"165":1,"237":1,"239":1,"240":1,"242":1,"465":1,"496":1,"498":1,"499":1,"501":1}}],["write",{"0":{"117":1},"1":{"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1},"2":{"2":2,"106":1,"117":1,"331":1,"332":1,"334":1,"449":1}}],["wuelppex0pttvjabl8biuxpaaaaaaaaaa",{"2":{"39":2}}],["www",{"2":{"32":1,"44":1}}],["why",{"0":{"188":1,"342":1},"1":{"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"478":1}}],["whose",{"2":{"183":1}}],["who",{"2":{"165":1,"243":1,"353":1,"422":1,"443":1}}],["whole",{"2":{"118":1,"126":1,"319":1,"320":1,"400":1,"429":1,"430":1,"467":1}}],["whistles",{"2":{"307":1}}],["white",{"2":{"162":1,"163":3,"164":1}}],["whitelisted",{"2":{"157":1,"357":1}}],["whitespace",{"2":{"125":1,"469":1}}],["while",{"2":{"102":1,"107":1,"116":1,"140":1,"163":2,"188":1,"236":1,"243":1,"254":1,"266":1,"275":1,"302":1,"307":1,"319":1,"320":1,"351":1,"355":1,"367":1,"370":1,"398":1,"431":1,"466":1,"467":1,"469":1,"490":1,"495":1,"508":1}}],["which",{"2":{"3":1,"19":3,"20":1,"43":2,"44":2,"50":2,"61":1,"76":1,"77":1,"78":1,"102":2,"109":1,"111":1,"115":2,"117":1,"128":1,"135":1,"146":1,"168":1,"169":1,"173":1,"177":1,"189":1,"190":4,"199":2,"200":1,"201":2,"212":1,"213":2,"220":1,"236":2,"239":1,"241":1,"243":1,"246":1,"264":1,"266":1,"267":1,"270":1,"271":1,"272":1,"303":1,"310":1,"311":1,"315":1,"319":1,"320":1,"341":2,"342":1,"350":1,"362":2,"370":1,"389":1,"392":1,"397":1,"405":1,"428":1,"431":1,"453":1,"454":1,"459":1,"495":2,"498":1,"500":1,"503":1,"504":1,"505":1}}],["whether",{"2":{"75":1,"199":1,"213":1,"254":1,"263":1,"411":1,"443":1,"446":1}}],["whereby",{"2":{"50":1}}],["where",{"2":{"34":1,"43":1,"101":1,"102":1,"118":1,"125":1,"128":1,"130":2,"131":2,"133":1,"242":1,"256":1,"274":1,"304":1,"307":1,"331":1,"426":1,"466":1,"469":1,"475":1,"501":1,"507":1}}],["whenever",{"2":{"310":1,"432":1,"469":1}}],["when",{"0":{"188":1},"2":{"19":1,"39":1,"43":1,"44":1,"81":1,"93":1,"102":1,"105":2,"106":1,"108":1,"110":1,"111":1,"117":1,"118":1,"120":1,"122":1,"124":1,"125":2,"126":1,"130":1,"134":1,"145":1,"147":1,"148":1,"183":1,"189":1,"190":2,"199":1,"213":1,"229":1,"236":1,"244":2,"245":1,"256":1,"261":1,"285":1,"302":2,"303":1,"304":1,"307":4,"308":1,"309":1,"352":1,"357":1,"364":1,"398":1,"403":2,"411":1,"435":2,"443":1,"446":2,"448":1,"450":3,"452":1,"453":1,"454":1,"460":1,"461":1,"471":1,"472":1,"490":1,"491":1,"495":1}}],["whatever",{"2":{"135":1}}],["what",{"0":{"163":1,"468":1},"2":{"22":2,"190":1,"331":1,"346":1,"352":1,"399":1,"466":1}}],["warning",{"2":{"388":1,"403":1}}],["waitfortransactionreceipt",{"0":{"301":1},"2":{"301":1}}],["waits",{"2":{"186":1,"318":1,"320":1}}],["wait",{"2":{"145":1,"185":2,"186":3,"189":2,"301":1,"303":1}}],["was",{"2":{"105":2,"183":2,"185":1,"367":1,"380":1,"411":1,"439":2,"450":1,"475":3,"478":1}}],["washington",{"2":{"12":1}}],["wagmiclient",{"2":{"190":2}}],["wagmiconfig",{"2":{"63":2,"81":3,"85":3,"86":4,"190":2,"207":1}}],["wagmiwrapper",{"2":{"190":6}}],["wagmiprovider",{"2":{"85":1,"86":1,"190":1}}],["wagmi",{"0":{"200":1,"205":1,"212":1},"1":{"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1},"2":{"76":1,"77":1,"80":3,"81":1,"84":4,"85":5,"86":2,"87":2,"90":1,"188":2,"189":5,"190":4,"191":1,"199":5,"200":4,"201":4,"202":1,"205":3,"206":5,"207":2,"212":4,"213":3,"214":5,"377":1}}],["waasadapter",{"2":{"314":1}}],["waastowalletadapter",{"2":{"314":3,"319":2,"320":2}}],["waastenantkey",{"2":{"138":1}}],["waaswallet",{"2":{"101":4,"102":9,"111":4,"112":1,"117":5,"118":1,"314":3}}],["waaslogin",{"2":{"101":1}}],["waasconfigkey",{"2":{"59":1,"361":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1}}],["waas",{"0":{"101":1,"354":1},"2":{"57":1,"59":4,"93":1,"94":1,"101":2,"105":1,"110":2,"117":1,"118":1,"119":1,"120":3,"121":1,"122":3,"123":1,"124":3,"125":2,"126":1,"138":1,"157":1,"158":1,"354":2,"357":4,"359":1,"360":1,"361":4,"432":1,"433":6,"434":6,"435":5,"436":5,"437":6,"439":5,"440":5,"444":1,"445":2,"446":1,"447":2,"448":1,"461":1,"464":1,"465":4,"466":1,"468":1,"469":1,"477":1,"479":1,"482":1,"485":1,"487":1,"488":1,"489":1,"490":3,"491":1,"492":1}}],["wants",{"2":{"366":1}}],["want",{"2":{"52":1,"101":1,"105":1,"106":1,"120":1,"122":1,"124":1,"125":3,"133":1,"145":1,"191":1,"236":1,"243":1,"254":1,"273":1,"285":2,"303":3,"306":1,"331":1,"335":1,"495":1,"506":1}}],["ways",{"2":{"243":1,"352":1,"357":1}}],["way",{"0":{"462":1,"466":1},"1":{"463":1,"464":1,"465":1},"2":{"23":1,"82":1,"115":2,"165":1,"275":1,"351":1,"354":1,"391":1,"398":1,"429":2,"490":1,"508":1}}],["walletaddress",{"2":{"435":2}}],["walletauthoptions",{"0":{"77":1},"2":{"81":2}}],["walletcontext",{"2":{"421":1}}],["walletcontractbytecode",{"2":{"420":1}}],["walletconnect",{"0":{"266":1},"2":{"91":1,"203":1,"243":1,"264":1,"266":4,"378":1}}],["walletconnectprojectid",{"2":{"85":1,"86":1}}],["walletproxybytecode",{"2":{"420":1}}],["walletpanel",{"2":{"112":1}}],["walletinterface",{"2":{"398":2}}],["wallet",{"0":{"86":1,"88":1,"112":1,"153":1,"158":1,"168":1,"172":1,"173":1,"188":1,"189":1,"190":1,"191":1,"235":1,"236":1,"237":1,"243":1,"245":1,"265":1,"274":1,"277":1,"355":1,"369":1,"370":1,"371":1,"386":1,"387":1,"391":1,"401":1,"406":1,"412":1,"419":1,"420":1,"421":1,"422":1,"494":1,"495":1,"496":1,"507":1,"510":1},"1":{"113":1,"114":1,"115":1,"116":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"173":1,"244":1,"245":1,"246":2,"247":2,"248":2,"249":2,"250":2,"251":2,"252":2,"253":2,"254":2,"255":2,"256":2,"257":2,"258":2,"259":2,"260":2,"261":2,"262":2,"263":2,"264":1,"265":1,"266":1,"356":1,"387":1,"388":2,"389":2,"390":2,"391":1,"392":2,"393":2,"394":2,"395":1,"396":1,"397":1,"398":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":2,"423":1,"424":1,"425":1,"426":1,"427":1,"428":1,"429":1,"430":1,"431":1},"2":{"20":2,"22":3,"54":1,"55":1,"57":2,"58":3,"59":2,"77":3,"78":1,"83":1,"84":3,"85":1,"86":4,"88":3,"91":3,"93":3,"101":2,"102":4,"107":2,"111":3,"112":2,"117":3,"118":2,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":3,"140":2,"150":1,"153":1,"154":1,"158":6,"159":2,"160":2,"161":1,"165":8,"168":2,"169":1,"171":2,"173":4,"180":1,"184":5,"186":2,"188":3,"190":2,"191":2,"192":2,"197":1,"203":3,"205":2,"215":2,"219":1,"228":1,"229":1,"231":2,"232":3,"233":1,"235":3,"236":6,"237":1,"242":1,"243":12,"244":19,"245":2,"246":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":3,"254":2,"255":2,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"266":2,"267":1,"269":2,"270":3,"271":3,"272":3,"273":2,"274":1,"275":5,"277":6,"278":1,"279":1,"280":3,"281":1,"285":3,"295":2,"303":6,"306":1,"309":3,"311":2,"312":1,"313":2,"316":2,"317":1,"318":1,"319":5,"320":5,"321":3,"333":1,"341":2,"342":1,"343":1,"350":1,"351":2,"354":6,"355":4,"356":1,"357":4,"360":1,"361":2,"362":2,"363":8,"364":3,"367":1,"370":2,"373":1,"378":3,"380":3,"386":1,"387":1,"388":3,"389":3,"390":5,"391":3,"392":3,"393":1,"394":1,"395":1,"396":2,"397":6,"398":6,"399":1,"400":2,"401":2,"403":3,"404":2,"405":3,"406":5,"409":6,"410":7,"411":2,"412":1,"414":1,"417":2,"419":4,"420":5,"422":3,"423":2,"425":2,"427":1,"429":2,"431":5,"432":1,"433":1,"434":1,"440":3,"441":1,"449":6,"450":2,"451":1,"452":4,"453":2,"454":1,"455":1,"459":2,"460":2,"467":1,"468":1,"469":1,"472":1,"476":1,"477":1,"478":1,"479":1,"482":1,"483":1,"484":1,"485":1,"487":1,"488":1,"490":2,"494":3,"495":6,"496":1,"501":1,"502":2,"503":3,"504":3,"505":3,"506":2,"507":1,"508":5,"510":6,"511":1,"512":1,"513":3,"514":1}}],["wallets",{"0":{"150":1,"165":1,"202":1,"312":1,"342":1,"346":1,"350":1,"364":1,"377":1},"1":{"166":1,"203":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":1,"343":1,"344":1,"345":1,"346":1,"347":2,"348":1,"365":1,"366":1,"367":1,"378":1},"2":{"20":2,"51":2,"52":1,"61":1,"76":1,"77":1,"79":1,"85":1,"90":1,"91":1,"147":1,"150":1,"152":1,"158":1,"165":3,"166":3,"191":1,"194":2,"196":1,"202":1,"203":1,"209":1,"217":1,"241":1,"243":1,"314":1,"342":2,"346":3,"350":1,"351":1,"352":1,"353":5,"355":3,"367":1,"377":1,"378":1,"386":2,"387":1,"388":1,"391":1,"397":1,"398":1,"406":1,"408":1,"417":1,"422":1,"425":1,"426":1,"429":2,"431":2,"500":1}}],["walkthrough",{"0":{"340":1},"2":{"23":1}}],["walk",{"2":{"3":1,"79":1,"83":1,"164":1}}],["wip",{"2":{"133":2,"136":1}}],["width=",{"2":{"435":1}}],["width",{"2":{"128":1}}],["wish",{"2":{"102":1,"105":1,"111":1,"117":1,"125":1,"130":1,"146":2,"305":1,"310":1,"443":1}}],["windows",{"2":{"97":2,"133":2,"142":1}}],["window",{"2":{"96":1,"97":1,"99":1,"104":2,"106":2,"244":1,"253":1}}],["will",{"2":{"2":3,"3":4,"11":2,"13":1,"19":4,"20":1,"32":1,"43":1,"44":2,"45":1,"50":2,"58":1,"75":1,"76":2,"77":2,"78":2,"79":1,"83":1,"86":1,"87":1,"91":1,"93":2,"94":1,"101":1,"104":3,"105":2,"106":5,"107":3,"109":1,"110":4,"112":2,"118":1,"125":1,"126":1,"128":4,"134":2,"135":1,"138":1,"139":2,"140":3,"143":1,"145":1,"146":1,"149":3,"157":2,"158":1,"159":2,"166":1,"168":2,"188":1,"189":1,"190":2,"191":1,"197":1,"198":1,"203":1,"210":1,"211":1,"219":1,"220":1,"228":1,"229":1,"236":3,"243":3,"244":2,"246":1,"248":1,"250":1,"252":1,"253":1,"254":2,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"263":1,"266":1,"273":1,"283":1,"284":1,"285":2,"302":3,"303":1,"304":1,"311":2,"313":1,"319":4,"320":4,"327":1,"329":1,"332":4,"333":2,"341":2,"352":3,"354":1,"357":1,"362":2,"367":2,"370":1,"378":1,"388":1,"389":1,"397":2,"400":1,"403":1,"409":2,"410":2,"411":1,"428":1,"429":1,"431":1,"434":2,"438":1,"439":1,"440":4,"445":1,"450":1,"452":3,"455":1,"463":1,"464":1,"465":1,"466":1,"467":1,"470":1,"472":1,"492":1,"495":3,"506":1}}],["without",{"2":{"20":2,"52":1,"102":1,"105":1,"111":1,"117":1,"126":1,"165":1,"243":1,"244":2,"274":1,"275":1,"281":2,"307":1,"397":1,"404":1,"438":1,"469":2,"491":1,"507":1,"508":1,"514":2}}],["within",{"2":{"3":1,"11":1,"85":1,"91":1,"102":1,"105":2,"111":1,"117":1,"145":1,"146":1,"163":1,"203":1,"243":1,"346":1,"352":1,"378":1,"428":1,"429":1,"445":1,"459":1}}],["with",{"0":{"12":1,"83":1,"101":1,"179":1,"188":1,"189":1,"190":1,"234":1,"238":1,"244":1,"264":1,"265":1,"276":1,"281":1,"358":1,"493":1,"497":1,"509":1,"514":1},"1":{"84":1,"180":1,"235":1,"236":1,"237":1,"239":1,"240":1,"241":1,"242":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"359":1,"360":1,"361":1,"494":1,"495":1,"496":1,"498":1,"499":1,"500":1,"501":1,"510":1,"511":1,"512":1,"513":1,"514":1,"515":1},"2":{"0":2,"3":2,"4":1,"5":1,"6":2,"11":2,"14":1,"15":4,"19":4,"20":4,"23":1,"25":1,"31":1,"33":1,"35":1,"38":1,"39":3,"41":1,"47":1,"50":2,"52":1,"55":1,"57":1,"58":1,"59":1,"60":1,"66":2,"70":1,"79":1,"80":1,"82":1,"84":1,"85":1,"90":2,"91":3,"92":1,"93":4,"94":2,"95":1,"99":4,"101":5,"102":3,"104":3,"105":4,"106":2,"107":1,"110":3,"111":2,"115":2,"116":1,"117":3,"118":2,"120":5,"122":5,"124":5,"125":4,"128":2,"131":1,"133":2,"134":2,"135":3,"140":1,"148":1,"152":1,"155":1,"156":1,"157":1,"159":1,"161":1,"163":3,"164":1,"165":2,"166":1,"168":1,"179":1,"180":1,"181":1,"182":1,"184":1,"188":2,"189":2,"190":6,"191":4,"192":1,"199":4,"201":2,"202":2,"203":3,"204":1,"205":2,"206":1,"213":4,"214":2,"215":1,"222":1,"231":2,"232":2,"236":2,"237":2,"240":1,"242":2,"243":4,"244":1,"245":1,"255":1,"257":2,"258":2,"267":1,"270":1,"271":1,"272":1,"275":1,"279":1,"284":1,"285":1,"286":1,"303":1,"304":1,"307":2,"308":1,"309":2,"310":2,"314":2,"321":1,"323":1,"325":1,"332":1,"334":1,"335":1,"338":1,"340":1,"341":1,"351":2,"352":3,"353":2,"354":1,"355":2,"357":1,"359":1,"360":1,"361":1,"362":1,"363":1,"364":3,"365":1,"369":1,"370":1,"374":1,"375":1,"377":2,"378":3,"379":1,"380":1,"388":1,"409":1,"411":2,"412":1,"413":1,"414":1,"416":1,"425":1,"429":1,"431":1,"432":1,"433":2,"434":3,"435":1,"437":1,"441":1,"442":1,"445":2,"449":4,"452":1,"455":1,"458":2,"459":1,"465":2,"466":2,"467":1,"469":1,"472":1,"473":1,"475":2,"490":1,"492":1,"495":2,"496":2,"499":1,"501":2,"503":1,"504":1,"505":1,"508":1,"512":1}}],["weight",{"2":{"397":1,"413":2,"414":2,"415":4,"416":4,"418":4,"423":1,"427":3,"428":3,"429":10,"430":2}}],["weights",{"2":{"392":1,"396":1,"412":1,"423":1,"424":1,"426":1}}],["weighted",{"2":{"44":1}}],["weeds",{"2":{"285":1}}],["week",{"2":{"249":1}}],["were",{"2":{"275":1,"304":1,"353":1,"478":1,"508":1}}],["weth",{"2":{"52":1}}],["websocketpublicclient",{"2":{"207":1}}],["websocketprovider",{"2":{"190":1}}],["webhookeventfilter",{"2":{"180":1}}],["webhooklistener",{"2":{"180":1}}],["webhook",{"0":{"178":1,"180":1},"1":{"179":1,"180":1},"2":{"180":5}}],["webhooks",{"0":{"179":1},"1":{"180":1},"2":{"22":1,"179":1}}],["web2",{"2":{"165":2,"243":1}}],["webgl",{"0":{"100":1},"2":{"95":1,"108":1,"357":1}}],["webapp",{"2":{"15":1,"25":1,"32":2,"38":1,"39":2,"44":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1}}],["webapps",{"2":{"14":1}}],["web",{"0":{"9":1,"10":1,"16":1,"28":1,"48":1,"369":1},"2":{"15":1,"33":1,"35":1,"47":1,"135":1,"143":3,"163":1,"243":3,"351":1,"357":1,"369":1,"370":1}}],["web3modal",{"0":{"231":1},"1":{"232":1,"233":1},"2":{"191":1,"231":3,"232":1,"233":2,"244":1,"264":1}}],["web3",{"0":{"202":1,"215":1,"222":1,"264":1,"377":1},"1":{"203":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"378":1},"2":{"0":1,"20":1,"77":1,"85":1,"90":2,"91":2,"165":2,"191":3,"202":2,"203":2,"215":3,"216":2,"217":1,"221":1,"222":3,"223":1,"225":2,"226":1,"230":1,"243":6,"267":1,"329":1,"370":1,"377":2,"378":2}}],["we",{"2":{"0":1,"13":1,"15":1,"16":1,"19":2,"20":1,"28":1,"31":2,"33":2,"35":1,"41":2,"43":1,"45":2,"46":1,"47":1,"57":1,"83":1,"93":2,"95":2,"101":1,"102":2,"105":3,"106":3,"107":1,"109":1,"110":1,"112":2,"114":1,"115":2,"116":2,"120":1,"122":1,"123":1,"124":1,"125":2,"129":1,"131":3,"133":1,"140":1,"158":1,"163":1,"164":1,"165":2,"175":2,"177":2,"189":2,"190":3,"236":1,"243":1,"284":1,"303":2,"305":2,"307":1,"309":1,"310":2,"351":1,"367":1,"443":3,"466":2,"495":1}}],["well",{"2":{"0":1,"15":1,"31":1,"32":1,"35":1,"41":1,"47":1,"125":1,"143":1,"162":1,"165":2,"242":1,"273":1,"303":2,"305":2,"310":1,"357":1,"367":1,"409":1,"410":1,"466":1,"489":1,"492":1,"501":1,"506":1}}],["ts",{"2":{"435":1,"440":1,"476":1,"478":1}}],["tsx",{"2":{"190":1,"435":1}}],["tsuccesscallback",{"2":{"131":1}}],["tx",{"2":{"439":3,"440":4,"446":1,"448":1,"459":1}}],["txnreceipt",{"2":{"476":1}}],["txnresponse",{"2":{"270":4,"271":4,"272":4,"273":2,"503":4,"504":4,"505":4,"506":2}}],["txnhash",{"2":{"185":1}}],["txhash",{"2":{"186":1,"439":2,"476":1}}],["tx5drvi",{"2":{"32":1}}],["turn",{"2":{"190":1}}],["turned",{"2":{"188":1}}],["tutorial",{"2":{"155":1}}],["tunisia",{"2":{"13":1}}],["tfunction",{"2":{"131":2}}],["tfunctions",{"2":{"131":2}}],["typically",{"2":{"117":1,"236":1,"275":1,"495":1,"508":1}}],["typical",{"2":{"117":1}}],["typefielddata",{"2":{"459":1}}],["typeno",{"2":{"473":1}}],["typenopacket",{"2":{"450":1}}],["typenosignaturessignature",{"2":{"450":1}}],["typedescriptiondelayedencodedataabistringthe",{"2":{"459":1}}],["typedefault",{"2":{"78":1}}],["typedefaultbooleantrue",{"2":{"75":1}}],["typedefaultstringundefined",{"2":{"73":1,"74":1}}],["typedefaultstringcenter",{"2":{"71":1}}],["typedefaultstring",{"2":{"70":1,"76":1,"77":1}}],["typeddata",{"2":{"410":2}}],["typed",{"2":{"410":1}}],["typescript",{"0":{"358":1},"1":{"359":1,"360":1,"361":1},"2":{"15":2,"35":1,"47":1,"50":1,"57":2,"161":1,"165":3,"237":1,"239":1,"355":1,"357":1,"359":1,"496":1,"498":1}}],["types",{"0":{"474":1},"1":{"475":1,"476":1,"477":1,"478":1,"479":1,"480":1,"481":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"488":1},"2":{"3":1,"117":1,"302":1,"426":1}}],["type",{"0":{"304":1,"451":1},"2":{"3":1,"25":2,"32":2,"38":2,"39":4,"43":8,"44":2,"45":2,"52":4,"126":2,"128":1,"130":1,"133":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":2,"183":1,"185":1,"244":1,"305":1,"339":1,"410":3,"439":1,"440":1,"455":1,"456":1,"457":1,"458":1,"459":12,"470":1,"473":2,"476":1,"478":1}}],["tmp",{"2":{"104":1,"106":1,"418":4}}],["twitter",{"2":{"433":1}}],["twitch",{"2":{"76":1,"257":1}}],["two",{"2":{"58":1,"93":1,"165":1,"270":1,"271":1,"272":1,"285":1,"331":1,"342":1,"352":1,"364":2,"380":1,"441":1,"461":1,"466":1,"490":1,"503":1,"504":1,"505":1}}],["tweaking",{"2":{"32":1}}],["t",{"2":{"50":1,"59":1,"81":1,"99":2,"104":1,"106":2,"108":1,"115":2,"116":1,"125":1,"128":2,"147":1,"184":1,"266":1,"269":1,"303":1,"305":3,"351":2,"353":1,"361":1,"386":1,"391":1,"397":1,"398":1,"402":1,"403":1,"406":1,"417":1,"419":1,"432":1,"433":1,"443":1,"466":1,"502":1}}],["tnqwlujz",{"2":{"32":1}}],["tip",{"2":{"24":1,"31":1,"37":1,"168":1,"192":1,"205":1,"215":1,"231":1,"244":1}}],["tips",{"0":{"19":1},"2":{"367":1}}],["timestamps",{"0":{"471":1},"2":{"471":1}}],["times",{"2":{"44":1,"115":1,"158":1}}],["time",{"0":{"333":1,"442":1},"2":{"11":1,"19":2,"20":2,"32":1,"107":1,"115":1,"140":1,"148":2,"149":1,"150":1,"163":1,"183":1,"236":1,"274":1,"275":1,"303":1,"305":1,"333":1,"340":1,"353":1,"364":1,"387":1,"403":1,"417":1,"434":1,"442":1,"443":1,"490":1,"495":1,"507":1,"508":1}}],["timezones",{"2":{"0":1}}],["tenant",{"2":{"490":3}}],["technology",{"2":{"354":1}}],["technique",{"2":{"199":1,"213":1}}],["technically",{"2":{"43":1}}],["technical",{"2":{"16":1,"17":1,"45":1,"461":1}}],["text",{"2":{"133":1,"236":1,"495":1}}],["textmeshpro",{"2":{"104":1,"106":1}}],["tested",{"2":{"307":1}}],["test",{"2":{"59":1,"128":1,"357":3,"360":1}}],["testing",{"0":{"40":1},"2":{"20":1,"23":1,"89":1,"108":1}}],["templates",{"2":{"164":1,"166":1}}],["template",{"0":{"55":1,"338":1,"374":1},"2":{"55":1,"105":3,"164":1,"338":1,"374":1}}],["terms",{"2":{"13":1,"45":1,"367":1}}],["team",{"2":{"0":3,"4":1,"25":1,"38":1,"39":2,"58":1,"61":1,"110":1,"138":1,"140":1,"168":1,"191":1,"241":1,"351":1,"491":1,"500":1}}],["tries",{"2":{"446":1}}],["trigger",{"0":{"445":1},"1":{"446":1},"2":{"445":1,"472":1,"492":1}}],["triggering",{"0":{"87":1},"2":{"83":1}}],["triggered",{"2":{"66":1,"244":1,"446":3,"447":2,"448":1,"475":1,"478":1,"480":1,"489":1}}],["triggertransaction",{"2":{"66":1}}],["triggercheckout",{"2":{"64":2}}],["truly",{"2":{"355":1}}],["trusted",{"2":{"354":3,"442":1,"443":1,"444":1}}],["trust",{"0":{"489":1,"490":1},"1":{"490":1,"491":1,"492":1},"2":{"237":1,"345":1,"351":1,"489":2,"490":7,"491":2,"492":2,"496":1}}],["true",{"0":{"400":1},"2":{"17":2,"19":2,"24":1,"37":1,"52":1,"87":1,"88":1,"99":3,"168":4,"169":3,"171":1,"173":3,"175":2,"177":3,"183":1,"186":1,"188":1,"190":1,"207":1,"236":2,"244":1,"250":1,"252":1,"253":1,"254":1,"263":1,"339":1,"398":2,"403":1,"404":1,"436":1,"440":1,"444":2,"445":4,"446":2,"448":2,"457":1,"459":1,"464":1,"476":2,"478":1,"495":2}}],["tranfereth",{"2":{"311":1}}],["transparently",{"2":{"467":1}}],["transports",{"2":{"81":1,"85":3,"86":3}}],["transact",{"2":{"52":1}}],["transactionindex",{"2":{"476":4}}],["transactionno",{"2":{"475":1}}],["transactionnonativereceiptanynative",{"2":{"475":1}}],["transactionnoreceiptsmetatxnreceipt",{"2":{"475":1}}],["transactionnoreceiptmetatxnreceiptreceipt",{"2":{"475":1}}],["transactionnorevertreasonstring",{"2":{"475":1}}],["transactionnorequestsendtransactionpayloadthe",{"2":{"475":1}}],["transactionnometatxhashstringhash",{"2":{"475":1}}],["transactionnowalletstringaddress",{"2":{"454":1}}],["transactionyessimulationssimulateresult",{"2":{"475":1}}],["transactionyes",{"2":{"455":1,"457":1,"458":1}}],["transactionfailed",{"2":{"440":1,"478":2}}],["transactionreceipt",{"2":{"301":2,"303":4,"309":2,"311":1,"318":2,"320":4,"439":1,"475":1,"476":1}}],["transactionreturn",{"2":{"117":1}}],["transactioncreator",{"2":{"303":4,"309":2}}],["transactioncount",{"0":{"300":1},"2":{"300":2}}],["transactioncall",{"2":{"292":2}}],["transactionbyhash",{"0":{"299":1},"2":{"299":1}}],["transaction2",{"2":{"269":2,"270":2,"271":2,"272":2,"502":2,"503":2,"504":2,"505":2}}],["transaction1",{"2":{"269":2,"270":2,"271":2,"272":2,"502":2,"503":2,"504":2,"505":2}}],["transactionhash",{"2":{"296":1,"299":1,"301":1,"317":1,"476":4}}],["transactionhashes",{"2":{"173":1,"319":1}}],["transactionhistoryfilter",{"2":{"173":1,"175":1,"177":1}}],["transactionhistory",{"2":{"173":2,"175":2}}],["transaction",{"0":{"51":1,"152":1,"172":1,"173":1,"175":1,"185":1,"407":1,"438":1,"439":1,"440":1,"454":1,"455":1,"475":1,"478":1},"1":{"173":1,"439":1,"440":1,"455":1,"456":1,"457":1,"458":1,"459":1,"476":1,"477":1,"479":1},"2":{"22":2,"50":3,"51":2,"52":2,"66":1,"102":1,"112":1,"117":3,"118":4,"119":2,"120":1,"121":2,"122":1,"123":4,"124":1,"125":4,"126":6,"147":1,"152":1,"158":1,"165":1,"173":7,"175":4,"184":1,"185":2,"186":6,"242":1,"269":1,"270":4,"271":4,"272":4,"273":4,"292":1,"296":3,"299":4,"301":1,"303":4,"309":3,"311":1,"317":1,"318":1,"319":3,"320":2,"330":1,"334":1,"357":1,"389":1,"392":1,"397":1,"400":2,"402":3,"403":4,"404":1,"424":1,"438":3,"439":7,"440":3,"446":1,"447":1,"452":1,"454":2,"455":1,"459":3,"475":5,"476":1,"477":1,"478":4,"479":1,"488":2,"501":1,"502":1,"503":4,"504":4,"505":4,"506":4}}],["transactions",{"0":{"126":1,"151":1,"186":1,"269":1,"273":1,"502":1,"506":1},"2":{"20":2,"22":1,"50":10,"51":2,"52":4,"117":1,"126":5,"151":1,"152":1,"165":1,"179":1,"184":4,"186":5,"269":4,"270":1,"271":1,"272":1,"300":1,"319":3,"320":3,"347":1,"352":2,"398":1,"403":2,"404":1,"408":1,"422":1,"433":1,"438":1,"439":1,"440":3,"453":1,"454":1,"455":1,"459":2,"476":1,"478":2,"502":4,"503":1,"504":1,"505":1}}],["transferredyesdatastringadditional",{"2":{"455":1}}],["transferring",{"2":{"402":1}}],["transfereth",{"2":{"311":1}}],["transfertransaction",{"2":{"311":2}}],["transfers",{"0":{"311":1},"2":{"120":1,"122":1,"124":1,"270":2,"271":2,"272":2,"503":2,"504":2,"505":2}}],["transfer",{"2":{"52":1,"186":1,"269":2,"270":1,"271":7,"272":1,"302":2,"303":4,"309":1,"311":1,"502":2,"503":1,"504":7,"505":1}}],["tradeoff",{"2":{"367":1}}],["trades",{"2":{"181":1}}],["traditional",{"2":{"165":1,"351":1,"363":1}}],["trading",{"2":{"32":1,"183":1}}],["trait",{"2":{"43":8}}],["trackers",{"2":{"237":2,"496":2}}],["tracking",{"2":{"181":1}}],["track",{"2":{"19":1,"175":1}}],["trees",{"2":{"428":1}}],["tree",{"0":{"426":1},"1":{"427":1,"428":1,"429":1},"2":{"20":1,"423":1,"426":3,"428":1,"429":3,"430":4}}],["trying",{"2":{"91":1,"203":1,"378":1}}],["try",{"0":{"6":1,"54":1,"337":1,"356":1,"373":1},"2":{"32":1,"54":1,"145":1,"168":1,"169":1,"171":1,"173":1,"175":1,"192":2,"205":2,"215":2,"231":2,"237":1,"307":2,"356":1,"357":2,"369":1,"370":1,"373":1,"435":1,"440":2,"496":1}}],["troubles",{"2":{"0":1}}],["tampered",{"2":{"351":1,"466":1}}],["tailored",{"2":{"267":1}}],["taking",{"2":{"266":1}}],["taken",{"2":{"403":1}}],["takes",{"2":{"244":1,"431":1,"445":1}}],["take",{"2":{"46":1,"92":1,"102":1,"111":1,"115":1,"117":1,"145":2,"163":1,"199":1,"204":1,"213":1,"302":1,"340":1,"342":1,"352":1,"363":1,"379":1,"468":1}}],["tag",{"2":{"261":1}}],["tablet",{"2":{"369":1,"370":1}}],["tab",{"2":{"145":3,"149":1,"327":1}}],["tanstack",{"2":{"84":3,"85":1,"86":1}}],["tasks",{"2":{"307":1}}],["task",{"2":{"39":1,"102":2,"111":2,"117":2,"303":1}}],["taskid",{"2":{"39":3}}],["targets",{"2":{"93":1,"165":1}}],["target",{"2":{"15":1,"25":1,"32":1,"35":1,"38":1,"39":2,"47":1,"168":1}}],["talking",{"2":{"0":1}}],["tackle",{"2":{"0":1}}],["thought",{"2":{"117":1}}],["those",{"2":{"52":1,"146":1,"163":1,"165":1,"267":1,"375":1}}],["than",{"2":{"116":1,"237":1,"242":1,"496":1,"501":1}}],["that",{"2":{"0":1,"2":1,"3":3,"5":1,"11":2,"13":1,"15":1,"19":1,"20":7,"41":1,"43":2,"44":2,"45":2,"50":1,"51":1,"52":5,"59":1,"78":1,"89":1,"93":1,"102":1,"104":1,"105":3,"106":3,"107":1,"110":1,"112":1,"115":1,"117":1,"118":1,"119":1,"120":2,"122":2,"124":2,"125":2,"126":1,"128":1,"130":1,"139":1,"145":4,"146":1,"149":2,"151":1,"155":1,"156":1,"158":2,"161":1,"165":1,"168":1,"185":1,"190":3,"199":1,"210":1,"213":1,"219":1,"222":1,"228":1,"243":2,"244":1,"249":1,"257":1,"266":2,"267":1,"273":1,"275":2,"284":1,"302":1,"303":1,"304":1,"307":3,"314":2,"319":1,"320":1,"333":1,"335":1,"340":1,"341":1,"346":2,"351":1,"352":3,"353":1,"354":5,"355":3,"357":1,"361":1,"362":1,"363":3,"364":1,"366":1,"367":2,"375":1,"388":1,"389":1,"390":1,"395":1,"396":1,"397":2,"398":1,"400":1,"403":1,"411":2,"413":1,"417":1,"422":1,"424":1,"425":1,"428":1,"429":1,"430":1,"434":2,"435":2,"436":1,"438":1,"439":2,"442":1,"445":1,"446":1,"449":4,"450":3,"452":3,"455":1,"457":1,"460":1,"461":1,"465":1,"466":3,"475":2,"478":1,"490":1,"491":1,"492":1,"506":1,"508":2}}],["throwing",{"2":{"307":1}}],["throw",{"2":{"307":2}}],["throughout",{"2":{"314":1}}],["through",{"2":{"1":1,"3":1,"14":1,"79":1,"83":1,"93":1,"125":1,"128":1,"129":1,"133":2,"164":1,"188":1,"190":1,"192":1,"205":1,"215":1,"216":1,"243":1,"275":1,"355":1,"409":2,"410":2,"411":1,"441":1,"464":1,"467":1,"508":1}}],["threshold",{"0":{"424":1},"2":{"367":1,"391":1,"392":1,"396":1,"397":1,"409":1,"410":1,"411":1,"412":1,"415":2,"416":2,"418":2,"423":1,"424":2,"427":1,"429":5,"430":2}}],["threat",{"0":{"353":1}}],["threats",{"2":{"350":1}}],["threads",{"2":{"99":1}}],["three",{"2":{"51":1,"364":3}}],["thus",{"2":{"50":1,"470":1}}],["thing",{"2":{"131":1}}],["things",{"2":{"19":1,"51":1,"131":1,"285":1,"324":1,"429":2}}],["think",{"2":{"61":1,"241":1,"243":1,"267":1,"500":1}}],["third",{"2":{"11":1,"105":1,"351":1,"354":3}}],["this",{"2":{"2":5,"3":2,"11":1,"13":1,"16":1,"19":3,"20":2,"25":1,"28":1,"38":1,"43":2,"45":1,"58":1,"78":1,"79":1,"82":1,"83":1,"86":1,"93":5,"95":1,"99":3,"101":3,"102":2,"104":5,"105":4,"106":3,"107":1,"109":1,"110":3,"111":1,"112":2,"115":2,"117":1,"118":3,"119":2,"120":1,"121":1,"122":1,"123":1,"124":1,"125":7,"128":3,"133":16,"134":3,"138":3,"139":1,"140":1,"143":1,"145":2,"146":4,"157":1,"158":1,"159":1,"165":1,"166":1,"168":2,"175":2,"177":2,"184":1,"186":2,"188":2,"189":3,"190":5,"191":1,"196":1,"198":1,"199":2,"209":1,"211":1,"213":2,"236":7,"243":5,"244":1,"248":1,"267":1,"274":1,"279":2,"283":2,"285":1,"302":1,"310":1,"311":1,"312":1,"313":1,"323":1,"324":2,"325":2,"326":1,"327":2,"331":3,"332":3,"333":3,"335":1,"340":1,"346":1,"351":3,"352":3,"353":4,"354":1,"355":1,"364":1,"366":3,"367":1,"370":1,"375":1,"388":1,"389":2,"391":2,"392":1,"396":1,"397":3,"398":2,"399":1,"400":1,"403":1,"405":1,"406":2,"409":1,"410":1,"411":1,"415":1,"417":1,"420":1,"428":2,"429":3,"430":1,"432":1,"434":1,"436":1,"439":1,"440":5,"442":1,"443":1,"444":1,"445":1,"446":1,"448":1,"452":3,"453":1,"454":1,"458":1,"459":3,"460":1,"466":2,"467":1,"472":1,"475":2,"478":3,"489":1,"490":1,"491":2,"492":1,"495":7,"507":1,"512":2}}],["theme=",{"2":{"99":2}}],["theme",{"0":{"255":1},"2":{"70":1,"244":2,"255":2}}],["themselves",{"2":{"46":1,"351":1,"367":1,"399":1}}],["them",{"2":{"44":1,"50":1,"52":1,"91":1,"101":1,"112":1,"121":1,"129":1,"146":1,"163":1,"203":1,"275":1,"284":1,"307":1,"319":1,"320":1,"350":1,"367":1,"378":1,"450":1,"452":1,"491":1,"508":1}}],["they",{"0":{"468":1},"2":{"19":1,"43":1,"45":1,"46":1,"50":1,"52":1,"76":1,"77":1,"106":1,"125":1,"130":1,"236":1,"244":1,"254":2,"266":1,"275":3,"303":1,"307":1,"308":1,"346":1,"354":1,"357":1,"364":1,"420":1,"429":2,"440":1,"450":1,"467":1,"471":1,"490":1,"495":1,"508":3}}],["then",{"2":{"17":1,"19":1,"28":1,"29":1,"49":1,"86":1,"96":2,"97":2,"129":1,"138":1,"145":1,"146":3,"160":1,"163":1,"190":2,"194":1,"207":1,"236":3,"237":1,"242":1,"243":1,"252":1,"275":1,"318":1,"320":1,"326":1,"335":1,"398":1,"425":1,"433":1,"434":1,"495":3,"496":1,"501":1,"508":1}}],["theses",{"2":{"157":1}}],["these",{"0":{"163":1},"2":{"11":1,"63":1,"68":1,"85":1,"105":2,"106":1,"108":1,"110":1,"112":1,"115":1,"126":1,"131":1,"133":2,"138":1,"143":2,"144":1,"163":2,"284":2,"309":2,"324":2,"346":1,"352":1,"353":1,"355":1,"357":2,"367":1,"380":1,"389":1,"397":1,"420":1,"464":1,"470":1,"471":1}}],["their",{"2":{"11":1,"43":1,"46":1,"50":1,"91":1,"95":1,"125":1,"139":1,"189":1,"190":1,"203":1,"236":3,"243":3,"244":1,"266":2,"274":1,"275":3,"309":1,"334":1,"341":1,"352":1,"362":1,"363":3,"364":5,"365":3,"366":1,"367":4,"378":1,"412":1,"413":1,"423":1,"428":1,"442":1,"443":1,"459":1,"467":1,"468":1,"490":1,"495":3,"507":1,"508":3}}],["therefore",{"2":{"102":1,"188":1,"232":1,"417":1}}],["there",{"2":{"3":1,"43":1,"95":1,"102":1,"105":2,"106":1,"115":1,"145":1,"183":1,"190":1,"199":1,"213":1,"284":1,"285":1,"312":1,"357":1,"398":1,"399":1,"490":1}}],["the",{"0":{"13":1,"64":1,"65":1,"85":1,"86":1,"87":1,"88":1,"163":1,"173":1,"175":1,"189":1,"190":1,"235":1,"265":1,"327":1,"332":1,"405":1,"406":1,"416":1,"462":1,"464":1,"465":1,"466":1,"494":1},"1":{"66":1,"67":1,"406":1,"463":1,"464":1,"465":1},"2":{"0":6,"1":4,"2":7,"3":13,"4":2,"5":1,"6":8,"11":4,"13":2,"14":4,"15":12,"16":2,"17":2,"18":2,"19":11,"20":21,"21":1,"22":5,"23":3,"24":1,"25":1,"27":2,"30":2,"31":8,"32":14,"33":4,"34":5,"35":8,"37":1,"38":2,"39":6,"41":5,"43":7,"44":6,"45":8,"46":3,"47":10,"50":10,"51":1,"52":9,"57":4,"58":2,"59":2,"60":1,"61":1,"62":1,"63":4,"64":2,"65":2,"66":1,"67":3,"68":3,"70":5,"71":4,"72":2,"73":2,"74":2,"75":2,"76":7,"77":7,"78":5,"79":1,"80":3,"81":4,"82":2,"83":2,"84":5,"85":4,"86":4,"87":6,"88":2,"89":1,"90":3,"91":2,"92":2,"93":7,"94":8,"95":4,"96":5,"97":5,"99":10,"101":4,"102":7,"104":3,"105":16,"106":11,"107":1,"109":5,"110":13,"111":4,"112":5,"113":1,"114":1,"115":16,"116":1,"117":5,"118":6,"119":5,"120":4,"121":1,"122":4,"123":4,"124":4,"125":24,"126":5,"128":14,"129":4,"130":11,"133":10,"134":4,"135":3,"138":3,"139":1,"140":3,"142":1,"143":4,"145":29,"146":15,"147":1,"148":3,"149":8,"150":2,"151":2,"152":2,"154":1,"155":5,"156":2,"158":4,"160":3,"161":1,"163":4,"164":4,"165":12,"166":2,"168":8,"169":5,"171":2,"173":4,"175":6,"177":8,"179":1,"180":4,"181":2,"183":29,"184":2,"185":6,"186":8,"188":7,"189":13,"190":24,"191":5,"192":2,"193":2,"194":3,"196":1,"197":5,"198":1,"199":9,"200":3,"201":2,"202":3,"203":2,"204":2,"205":2,"206":6,"207":3,"209":1,"210":1,"211":1,"212":3,"213":11,"214":3,"215":2,"216":1,"219":2,"220":2,"222":2,"223":2,"225":1,"226":2,"228":2,"229":2,"231":1,"232":3,"233":1,"235":1,"236":12,"237":8,"239":1,"240":1,"241":1,"242":5,"243":7,"244":11,"245":1,"246":1,"248":2,"250":2,"253":3,"254":1,"255":2,"256":1,"257":1,"258":1,"259":1,"261":5,"262":2,"263":6,"264":1,"266":25,"267":3,"269":2,"270":4,"271":2,"272":4,"273":6,"275":4,"278":1,"279":2,"280":2,"281":1,"282":4,"283":4,"284":2,"285":13,"286":1,"287":1,"288":1,"289":1,"290":3,"291":1,"292":2,"294":3,"295":1,"296":2,"298":1,"300":1,"301":1,"302":4,"303":12,"304":2,"305":6,"306":1,"307":4,"308":2,"309":5,"310":2,"311":4,"312":3,"314":3,"315":2,"316":2,"317":2,"318":3,"319":8,"320":9,"321":8,"324":1,"325":3,"326":2,"327":2,"328":2,"330":2,"331":4,"332":5,"333":5,"334":2,"335":4,"339":2,"340":4,"341":5,"342":2,"343":1,"346":3,"350":4,"351":1,"352":11,"353":11,"354":30,"355":6,"356":2,"357":5,"359":1,"360":3,"361":2,"362":5,"363":7,"364":9,"365":1,"366":3,"367":9,"370":1,"373":1,"375":2,"377":3,"378":2,"379":2,"386":8,"387":2,"388":8,"389":4,"390":5,"391":11,"392":6,"394":2,"395":3,"396":3,"397":17,"398":16,"399":4,"400":3,"401":4,"402":3,"403":14,"404":3,"405":6,"406":8,"409":7,"410":8,"411":13,"414":2,"416":2,"417":11,"419":8,"420":11,"422":6,"423":4,"424":6,"425":4,"426":3,"427":5,"428":5,"429":14,"430":8,"431":23,"432":2,"433":4,"434":13,"435":18,"436":1,"437":2,"438":1,"439":13,"440":8,"441":1,"443":1,"444":3,"445":9,"446":5,"447":1,"448":3,"449":12,"450":9,"451":3,"452":11,"453":4,"454":5,"455":1,"457":2,"458":2,"459":13,"460":6,"461":4,"463":2,"464":3,"465":15,"466":11,"467":3,"468":7,"469":12,"470":5,"471":3,"472":1,"473":3,"475":29,"477":1,"478":9,"479":1,"480":2,"482":1,"483":2,"485":1,"486":2,"487":1,"488":1,"489":3,"490":16,"491":2,"492":11,"494":1,"495":12,"496":8,"498":1,"499":1,"500":1,"501":5,"502":2,"503":4,"504":2,"505":4,"506":6,"508":4,"511":1,"512":2,"513":2,"514":1,"515":4}}],["tolerance",{"2":{"461":1}}],["tostringthe",{"2":{"459":1}}],["torus",{"0":{"367":1},"2":{"364":3,"367":7}}],["toggle",{"2":{"168":2,"169":1,"173":1,"177":1}}],["toggling",{"2":{"149":1}}],["together",{"2":{"125":1,"126":2,"129":1,"308":1,"319":1,"320":1,"429":2}}],["touch",{"2":{"140":1}}],["toaddress",{"2":{"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":4,"303":4,"309":2}}],["tower",{"2":{"105":2}}],["toying",{"2":{"70":1}}],["took",{"2":{"366":1}}],["too",{"2":{"31":1,"191":1,"192":1,"205":1,"215":1,"231":1,"243":2,"244":1}}],["toolkit",{"2":{"61":1,"90":1,"202":1,"241":1,"377":1,"500":1}}],["tools=",{"2":{"99":2}}],["tools",{"0":{"116":1},"2":{"61":1,"90":1,"99":2,"116":1,"191":1,"202":1,"241":1,"377":1,"463":1,"466":1,"500":1}}],["tool",{"2":{"20":1}}],["total",{"0":{"177":1},"2":{"22":3,"149":1,"151":1,"152":1,"177":1,"413":1,"428":1,"429":2}}],["topics",{"2":{"439":2,"475":1,"476":5}}],["top",{"0":{"423":1},"1":{"424":1,"425":1,"426":1,"427":1,"428":1,"429":1},"2":{"20":1,"68":1,"71":3,"110":1,"115":1,"145":1,"149":1,"339":1}}],["tokennovals",{"2":{"458":1}}],["tokenyesproof",{"2":{"452":1}}],["tokenresponse",{"2":{"435":2}}],["tokenbaseuri",{"2":{"332":2}}],["tokenbalances",{"2":{"16":1,"17":1,"168":4,"171":3}}],["token2id",{"2":{"270":1,"503":1}}],["token1id",{"2":{"270":1,"503":1}}],["token4id",{"2":{"269":1,"502":1}}],["tokencontract",{"2":{"183":1}}],["tokendetails",{"2":{"177":4}}],["tokenuri",{"2":{"43":2}}],["tokenmetadata",{"2":{"38":2,"39":1}}],["tokenidasstring",{"2":{"121":1,"123":1,"126":2}}],["tokenids",{"2":{"38":3,"39":3,"180":2,"182":2,"183":1,"339":1}}],["tokenid",{"2":{"3":4,"32":1,"34":3,"43":1,"44":1,"52":3,"67":1,"124":1,"183":2,"269":1,"270":1,"272":4,"333":2,"502":1,"503":1,"505":4}}],["tokens",{"0":{"3":1,"7":1,"167":1,"168":1,"176":1,"177":1,"270":1,"271":1,"272":1,"309":1,"503":1,"504":1,"505":1},"1":{"168":1,"169":1,"177":1},"2":{"3":8,"19":1,"20":4,"22":4,"24":1,"32":4,"34":6,"36":1,"37":1,"38":1,"43":2,"44":1,"46":3,"50":1,"52":6,"119":1,"120":1,"121":1,"122":1,"123":2,"124":1,"168":3,"171":1,"177":1,"183":2,"263":1,"309":1,"310":1,"331":1,"333":1,"334":2,"335":4,"347":1,"456":1,"458":1,"492":1}}],["token",{"0":{"2":1,"37":1,"38":1,"39":1,"41":1,"169":1,"174":1,"324":1},"1":{"38":1,"39":1,"40":2,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"175":1},"2":{"1":3,"2":4,"3":6,"14":1,"19":2,"20":7,"22":4,"24":2,"27":2,"31":4,"32":7,"34":1,"36":3,"37":6,"38":2,"39":2,"40":7,"41":2,"43":3,"44":3,"45":1,"46":3,"52":4,"118":1,"119":4,"121":2,"123":4,"133":1,"135":2,"168":5,"169":1,"173":4,"175":4,"177":8,"179":1,"180":1,"182":1,"183":3,"184":1,"186":2,"269":2,"270":3,"271":4,"272":3,"323":1,"324":5,"325":4,"332":2,"333":2,"334":1,"335":2,"341":1,"352":1,"362":1,"446":1,"456":1,"457":1,"458":1,"459":3,"502":2,"503":3,"504":4,"505":3}}],["today",{"2":{"0":1,"14":1,"184":1}}],["to",{"0":{"12":1,"117":1,"175":1,"179":1,"265":1,"322":1,"330":1,"401":1,"477":1,"479":1,"482":1,"485":1,"487":1},"1":{"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"180":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1},"2":{"0":5,"1":3,"2":8,"3":10,"5":2,"6":5,"11":3,"13":5,"14":3,"15":3,"16":1,"17":1,"19":11,"20":16,"22":2,"23":6,"24":4,"25":1,"27":3,"31":4,"32":13,"35":2,"37":4,"38":3,"39":4,"41":4,"43":1,"44":2,"45":5,"47":3,"50":5,"51":2,"52":7,"57":1,"58":2,"59":3,"62":1,"63":1,"64":1,"68":1,"72":1,"73":1,"74":1,"76":2,"77":2,"78":1,"79":1,"80":6,"81":3,"82":1,"84":2,"85":3,"86":1,"87":1,"91":1,"92":1,"93":7,"94":3,"95":5,"96":2,"97":2,"99":6,"101":2,"102":6,"104":2,"105":10,"106":8,"109":1,"110":6,"111":3,"112":7,"114":2,"115":10,"116":4,"117":5,"118":5,"119":5,"120":4,"121":1,"122":4,"123":2,"124":4,"125":16,"126":3,"128":5,"129":2,"130":4,"131":5,"133":11,"134":3,"135":3,"138":2,"139":3,"140":1,"142":2,"143":6,"144":1,"145":9,"146":14,"147":3,"148":1,"149":2,"153":2,"155":3,"156":3,"159":1,"160":4,"161":1,"162":1,"163":4,"164":3,"165":5,"166":4,"168":7,"169":3,"173":4,"175":2,"177":6,"179":3,"180":3,"181":2,"183":1,"184":1,"185":1,"186":6,"188":1,"189":3,"190":2,"191":6,"192":1,"194":1,"196":1,"197":1,"198":3,"199":2,"200":1,"203":1,"204":1,"207":1,"209":1,"210":1,"211":3,"212":1,"213":2,"219":2,"220":1,"222":1,"225":1,"226":1,"228":2,"232":1,"235":1,"236":11,"237":4,"242":2,"243":9,"244":10,"246":1,"250":1,"251":1,"253":1,"254":3,"257":1,"258":1,"259":1,"260":1,"261":2,"262":1,"263":5,"266":7,"267":5,"269":11,"270":7,"271":7,"272":7,"273":5,"274":1,"275":3,"279":2,"281":1,"283":1,"284":2,"285":5,"286":1,"287":1,"288":1,"289":1,"290":2,"291":1,"294":2,"295":2,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":5,"303":7,"304":3,"305":4,"306":1,"307":2,"308":1,"309":4,"310":3,"311":2,"314":1,"319":1,"320":1,"321":2,"325":2,"326":1,"328":1,"330":1,"331":5,"332":4,"333":6,"334":2,"335":3,"337":1,"338":1,"340":2,"341":5,"342":1,"344":3,"346":2,"350":2,"351":6,"352":1,"353":5,"354":7,"355":2,"357":5,"360":1,"361":3,"362":5,"363":4,"364":2,"365":1,"366":1,"367":7,"369":1,"370":2,"375":3,"378":1,"379":1,"386":1,"387":2,"388":2,"389":1,"390":1,"391":3,"392":2,"393":1,"394":1,"395":1,"397":4,"398":8,"399":2,"400":1,"401":2,"403":2,"404":2,"405":3,"406":3,"408":1,"409":1,"411":2,"413":1,"417":1,"420":2,"422":1,"423":1,"424":1,"425":2,"426":1,"427":2,"428":2,"429":4,"432":2,"433":2,"434":10,"435":7,"439":3,"440":6,"442":1,"443":4,"444":1,"445":1,"446":2,"447":2,"448":1,"449":4,"450":3,"452":4,"453":2,"454":1,"455":2,"456":1,"457":2,"458":1,"459":12,"460":1,"461":2,"463":1,"465":1,"468":3,"469":1,"471":1,"475":1,"476":1,"478":2,"489":1,"490":3,"492":1,"494":1,"495":11,"496":4,"501":2,"502":11,"503":7,"504":7,"505":7,"506":5,"507":1,"508":3,"512":2,"514":1}}],["aqaaaaaaaegvyziwa9fmslyeg",{"2":{"357":1}}],["azure",{"2":{"332":1}}],["aws",{"2":{"354":3,"355":1,"466":1,"491":1}}],["awesome",{"2":{"243":1}}],["away",{"2":{"125":1}}],["aware",{"2":{"11":1,"131":1,"237":1,"496":1}}],["await",{"2":{"6":1,"16":1,"25":1,"38":1,"39":2,"102":2,"111":2,"117":2,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":2,"184":1,"185":1,"186":2,"236":1,"237":2,"244":2,"245":1,"246":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"269":2,"270":3,"271":2,"272":3,"273":1,"277":1,"278":1,"279":1,"280":2,"281":1,"285":2,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":2,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"303":6,"305":3,"306":1,"309":5,"311":2,"317":1,"318":1,"319":1,"320":1,"321":2,"390":1,"409":1,"410":1,"433":2,"434":4,"435":3,"436":2,"437":3,"439":2,"440":2,"444":1,"445":2,"446":1,"447":1,"448":1,"495":1,"496":2,"502":2,"503":3,"504":2,"505":3,"506":1,"510":1,"511":1,"512":1,"513":2,"514":1}}],["ahead",{"2":{"159":1,"161":1}}],["ayourclass",{"2":{"133":2}}],["aviator",{"2":{"357":1}}],["avalanche",{"0":{"171":1}}],["avax",{"0":{"171":1}}],["availability",{"2":{"20":1}}],["available",{"0":{"69":1},"1":{"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"4":1,"11":2,"20":2,"31":2,"33":1,"58":1,"60":1,"80":1,"92":1,"94":1,"95":1,"140":1,"153":1,"188":2,"192":1,"197":1,"201":1,"204":1,"205":1,"210":1,"214":3,"215":1,"216":1,"221":1,"222":1,"230":1,"231":1,"233":1,"239":1,"240":1,"243":1,"244":1,"255":1,"259":1,"283":1,"341":1,"346":1,"351":1,"362":1,"379":1,"435":1,"466":1,"490":1,"498":1,"499":1}}],["avoid",{"2":{"80":1,"131":1,"244":1}}],["absolute",{"2":{"236":1,"495":1}}],["abstracted",{"2":{"125":1}}],["abstraction",{"2":{"50":1}}],["ability",{"2":{"367":1}}],["abis",{"2":{"125":1,"309":1}}],["abi",{"2":{"120":1,"122":1,"124":1,"125":5,"302":3,"303":1,"304":1,"309":1,"310":1,"411":1,"418":4,"428":1,"429":1,"430":2,"459":4}}],["about",{"2":{"24":1,"32":1,"37":1,"46":1,"147":1,"190":1,"244":1,"335":1,"340":1,"354":1,"449":1}}],["above",{"0":{"190":1},"2":{"3":2,"19":1,"25":1,"32":3,"34":1,"104":1,"118":2,"119":1,"125":1,"188":1,"189":1,"190":2,"236":1,"237":1,"244":1,"286":1,"289":1,"291":1,"293":1,"295":1,"360":1,"409":1,"410":1,"416":1,"465":1,"466":1,"495":1,"496":1}}],["able",{"2":{"19":1,"31":1,"106":1,"143":1,"243":3,"260":1,"263":1,"266":1,"353":2,"354":2,"367":1,"409":1,"461":1}}],["admire",{"0":{"334":1}}],["adapter",{"2":{"314":1}}],["advanced",{"0":{"307":1},"1":{"308":1},"2":{"85":1,"106":1,"118":1,"307":1}}],["advantages",{"2":{"165":1}}],["advantage",{"2":{"46":1,"302":1}}],["adhere",{"2":{"19":1}}],["addr",{"2":{"427":1}}],["addressno",{"2":{"483":1}}],["addressnovalsobject",{"2":{"458":1}}],["addressnovaluestringamount",{"2":{"456":1}}],["addressnovaluestringthe",{"2":{"455":1}}],["addressnoidstringtoken",{"2":{"457":1}}],["addressnotostringthe",{"2":{"456":1,"457":1,"458":1}}],["addressyes",{"2":{"452":1}}],["addresses",{"2":{"22":1,"25":2,"36":1,"52":2,"150":1,"168":1,"169":1,"173":2,"177":1,"180":1,"183":1,"389":2,"397":3}}],["address",{"0":{"25":1,"173":1,"235":1,"420":1,"494":1},"2":{"17":1,"19":1,"22":2,"32":4,"36":1,"38":1,"39":1,"46":1,"94":1,"102":1,"118":1,"120":1,"122":1,"124":1,"125":1,"133":1,"158":2,"168":3,"169":4,"171":3,"173":6,"175":5,"177":4,"179":2,"180":1,"183":5,"235":3,"236":3,"237":3,"242":1,"244":1,"258":1,"269":7,"270":8,"271":2,"272":8,"278":1,"291":1,"295":1,"302":1,"304":2,"305":2,"309":2,"316":3,"325":1,"331":1,"333":4,"335":1,"388":1,"390":10,"398":1,"401":1,"406":2,"410":1,"414":3,"415":4,"417":1,"418":5,"419":3,"420":4,"427":2,"430":2,"431":2,"435":1,"436":2,"439":2,"440":1,"443":1,"459":3,"475":1,"476":5,"483":1,"486":1,"494":3,"495":3,"496":3,"501":1,"502":7,"503":8,"504":2,"505":8,"511":1}}],["adds",{"2":{"363":1}}],["addwebhooklistener",{"2":{"180":6}}],["adddynamic",{"2":{"133":2}}],["adding",{"2":{"52":1,"155":1,"156":1}}],["additional",{"2":{"43":1,"44":1,"52":1,"79":1,"98":1,"147":1,"157":1,"168":1,"169":1,"173":1,"177":1,"191":1,"243":1,"342":1,"366":2,"404":1,"416":1,"442":1,"443":2,"486":1}}],["additionally",{"2":{"15":1,"26":1,"35":1,"43":1,"46":1,"47":1,"84":1,"118":1,"164":1,"191":1,"355":1,"463":1}}],["addition",{"2":{"32":1,"41":1,"102":1,"105":1,"190":1,"191":1}}],["added",{"2":{"26":1,"115":1,"192":1,"194":1,"207":1,"215":1,"367":1,"429":1}}],["add",{"2":{"2":2,"6":1,"16":1,"48":1,"63":1,"84":1,"86":1,"96":1,"97":1,"99":2,"102":1,"104":2,"106":3,"112":2,"133":1,"138":1,"145":1,"157":1,"193":1,"200":1,"206":1,"212":1,"216":1,"244":1,"267":4,"351":1,"367":2,"375":4}}],["affected",{"2":{"13":1}}],["african",{"2":{"13":1}}],["afghanistan",{"2":{"13":1}}],["after",{"2":{"2":1,"99":1,"107":1,"115":1,"128":1,"133":3,"135":1,"140":1,"145":1,"155":2,"156":1,"183":1,"244":1,"253":2,"325":1,"387":1,"466":1,"480":1,"483":1}}],["among",{"2":{"429":1}}],["amountstringamount",{"2":{"458":1}}],["amountnovals",{"2":{"458":1}}],["amountasbiginteger",{"2":{"303":4}}],["amountasstring",{"2":{"119":1,"123":1,"126":2}}],["amount1",{"2":{"270":1,"271":1,"272":1,"503":1,"504":1,"505":1}}],["amount4",{"2":{"269":1,"502":1}}],["amount3",{"2":{"269":1,"502":1}}],["amount2",{"2":{"269":1,"270":1,"271":1,"272":1,"502":1,"503":1,"504":1,"505":1}}],["amount",{"2":{"119":1,"120":1,"124":1,"125":1,"126":1,"262":2,"270":1,"271":2,"292":1,"333":1,"403":1,"459":2,"503":1,"504":2}}],["amountrequiredraw",{"2":{"66":1}}],["amazon",{"2":{"94":2,"351":1,"354":1,"442":1}}],["america",{"2":{"11":1}}],["amp",{"0":{"2":1,"4":1,"19":1,"21":1,"31":1,"385":1,"386":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"387":1,"388":1,"389":1,"390":1,"391":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":1,"398":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1},"2":{"1":3,"2":1,"13":1,"17":3,"22":1,"27":3,"31":1,"87":2,"131":2,"133":10,"134":1,"135":1,"155":1,"168":2,"169":3,"171":2,"173":3,"175":3,"177":3,"180":2,"184":1,"186":1,"340":2,"416":3,"435":2}}],["audits",{"0":{"380":1},"1":{"381":1,"382":1,"383":1},"2":{"380":1}}],["audit",{"2":{"354":1}}],["audited",{"2":{"351":1,"354":1}}],["audio",{"2":{"3":2}}],["automatic",{"0":{"448":1},"2":{"448":1}}],["automatically",{"2":{"20":3,"31":1,"50":1,"87":1,"93":1,"104":2,"106":1,"108":1,"129":1,"191":1,"236":3,"248":1,"253":1,"257":1,"258":1,"329":1,"370":1,"428":1,"431":1,"433":1,"492":1,"495":3}}],["auto",{"2":{"364":1}}],["autoconnect",{"2":{"190":2,"207":1}}],["authorizationmessage",{"2":{"279":2,"280":1,"512":2,"513":1}}],["authorization",{"0":{"279":1,"280":1,"512":1,"513":1},"2":{"237":1,"496":1}}],["authorized",{"2":{"280":2,"513":2}}],["authorizenonce",{"0":{"251":1},"2":{"251":2}}],["authorize",{"0":{"250":1},"2":{"236":2,"244":1,"250":2,"275":2,"279":1,"495":2,"508":2,"512":1}}],["authfailure",{"2":{"133":2}}],["authrequirescode",{"2":{"133":3,"134":1}}],["authsuccess",{"2":{"130":1,"133":3,"134":1,"135":1}}],["auth",{"0":{"155":1,"156":1,"351":1,"435":1},"2":{"129":1,"130":2,"133":1,"134":1,"143":1,"146":1,"155":2,"156":1,"184":1,"237":1,"247":1,"257":1,"351":1,"352":1,"353":2,"432":2,"433":1,"435":4,"441":1,"443":1,"465":2,"496":1}}],["authenticating",{"2":{"352":1}}],["authentication",{"0":{"93":1,"132":1,"134":1,"135":1,"136":1},"1":{"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"133":1,"134":1,"135":1,"136":1},"2":{"57":1,"76":1,"77":1,"93":4,"128":1,"133":1,"134":1,"135":1,"165":1,"275":1,"357":2,"364":1,"432":1,"443":1,"452":1,"508":1}}],["authenticator",{"2":{"133":3,"134":1,"465":2}}],["authenticates",{"2":{"353":1}}],["authenticated",{"2":{"59":1,"361":1,"449":1}}],["authenticate",{"0":{"234":1,"236":1,"237":1,"493":1,"495":1,"496":1},"1":{"235":1,"236":1,"237":1,"494":1,"495":1,"496":1},"2":{"6":1,"236":2,"237":1,"352":1,"432":1,"452":1,"495":2,"496":1}}],["achieves",{"2":{"352":1}}],["act",{"2":{"275":1,"508":1}}],["actor",{"2":{"128":1,"146":2,"363":1,"366":1,"367":1}}],["acting",{"2":{"363":1}}],["active",{"2":{"437":1}}],["activate",{"2":{"226":2}}],["activated",{"2":{"226":1}}],["activation",{"0":{"226":1}}],["activities",{"2":{"183":2}}],["activity",{"2":{"99":4,"181":1,"266":1,"366":1}}],["actions",{"2":{"275":1,"352":1,"448":1,"467":1,"486":1,"508":1}}],["action",{"0":{"449":1},"1":{"450":1,"451":1,"452":1,"453":1,"454":1,"455":1,"456":1,"457":1,"458":1,"459":1,"460":1},"2":{"99":8,"244":1,"275":1,"281":1,"337":1,"352":1,"446":2,"448":1,"449":4,"468":1,"472":1,"508":1,"514":1}}],["actually",{"2":{"273":1,"354":1,"506":1}}],["actual",{"2":{"6":1,"236":1,"244":1,"267":1,"375":1,"495":1}}],["across",{"2":{"13":1,"15":1,"20":1,"41":1,"47":1}}],["acquire",{"2":{"6":1,"58":1,"138":1}}],["acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",{"2":{"439":2,"476":3}}],["accelerating",{"2":{"340":1}}],["accelerate",{"2":{"162":1,"166":1}}],["accepts",{"2":{"118":1,"303":1}}],["accepting",{"2":{"101":1}}],["accepted",{"2":{"52":1,"244":1}}],["accessing",{"2":{"439":1}}],["accessible",{"2":{"3":2,"33":1,"364":1}}],["accessed",{"0":{"13":1},"2":{"11":1,"283":1,"355":1}}],["access",{"0":{"12":1},"2":{"2":3,"6":2,"11":1,"14":1,"16":1,"19":1,"25":2,"28":2,"38":2,"39":3,"58":1,"59":1,"81":1,"85":1,"86":1,"93":1,"110":1,"120":1,"122":1,"124":1,"138":1,"140":1,"168":3,"169":1,"171":2,"173":2,"175":1,"177":1,"180":1,"184":2,"243":3,"244":2,"260":2,"351":3,"353":3,"354":3,"355":1,"357":1,"360":1,"361":1,"365":2,"367":1,"422":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1,"469":1,"490":1}}],["accurately",{"2":{"20":1}}],["accounts",{"0":{"343":1},"1":{"344":1,"345":1},"2":{"51":2,"95":1,"153":1,"180":4,"342":1,"343":2,"436":4,"489":1,"490":2,"492":4}}],["accountaddresses",{"2":{"173":1}}],["accountaddress",{"2":{"17":2,"168":7,"169":6,"171":6,"173":4,"175":2,"180":1}}],["account",{"0":{"2":1},"2":{"1":2,"2":2,"17":1,"101":1,"156":1,"168":5,"169":4,"171":4,"173":5,"179":1,"184":2,"185":1,"186":1,"199":1,"213":1,"236":1,"242":1,"244":1,"325":1,"328":1,"351":1,"364":3,"367":1,"432":1,"433":1,"467":1,"495":1,"501":1}}],["aggregating",{"2":{"5":1}}],["against",{"2":{"44":1,"51":1,"353":2,"367":1,"398":1,"406":1,"417":2}}],["again",{"2":{"2":1,"145":2,"160":1,"252":1,"332":1,"364":1,"465":1,"471":1}}],["aka",{"0":{"171":1},"2":{"3":1}}],["atomic",{"2":{"400":1}}],["attestation",{"2":{"354":3,"466":8}}],["attested",{"2":{"351":1}}],["attempted",{"2":{"478":1}}],["attempts",{"2":{"188":1,"478":1}}],["attempting",{"2":{"130":1}}],["attempt",{"2":{"104":1,"106":1,"197":1,"219":1,"220":1,"228":1}}],["attacker",{"2":{"353":2,"365":1}}],["attackers",{"2":{"351":1}}],["attacks",{"2":{"51":1,"435":1}}],["attached",{"2":{"93":1,"115":1}}],["attach",{"2":{"32":1,"146":1}}],["attributes",{"0":{"45":1,"331":1},"2":{"32":1,"43":6,"44":1,"45":6,"324":1,"331":1}}],["at",{"2":{"3":1,"11":2,"20":1,"32":2,"54":1,"92":1,"107":1,"110":2,"139":1,"140":2,"145":2,"149":1,"155":1,"156":1,"158":2,"168":1,"204":1,"236":1,"285":4,"291":2,"295":2,"303":1,"305":1,"319":1,"320":1,"324":1,"340":1,"353":1,"364":1,"369":1,"370":1,"373":1,"379":1,"386":1,"387":1,"468":2,"495":1}}],["alphabetically",{"2":{"450":1,"469":1}}],["alpha",{"2":{"115":1}}],["already",{"2":{"92":1,"99":2,"104":1,"106":2,"146":1,"184":1,"204":1,"244":1,"257":1,"258":1,"259":1,"266":2,"302":1,"333":1,"379":1,"433":1}}],["alternatively",{"2":{"163":1,"166":1,"266":2,"303":1,"305":1}}],["alternative",{"2":{"27":1}}],["always",{"2":{"20":1,"107":1,"140":1,"168":1,"169":1,"173":1,"177":1,"237":1,"266":1,"335":1,"352":1,"402":1,"403":1,"431":1,"440":1,"465":1,"488":1,"496":1}}],["alongside",{"2":{"194":1,"207":1,"449":1}}],["along",{"2":{"15":1,"155":1,"332":1}}],["algeria",{"2":{"13":1}}],["alaska",{"2":{"12":1}}],["also",{"2":{"3":1,"14":1,"19":2,"24":1,"31":1,"32":1,"37":1,"52":1,"60":1,"61":1,"79":1,"80":1,"104":1,"105":1,"112":1,"133":1,"143":1,"144":1,"149":1,"164":1,"191":3,"198":1,"211":1,"239":1,"240":1,"241":1,"244":2,"263":1,"266":1,"267":1,"309":2,"310":1,"341":1,"346":1,"352":1,"353":1,"357":2,"362":1,"375":1,"398":1,"406":1,"410":1,"435":1,"498":1,"499":1,"500":1}}],["allowlists",{"2":{"352":1}}],["allowed",{"0":{"157":1},"2":{"157":3,"352":1,"399":1}}],["allowing",{"2":{"51":1,"84":1,"125":1,"243":1}}],["allow",{"2":{"50":3,"95":1,"120":1,"122":1,"124":1,"146":1,"179":1,"243":1,"258":1,"263":1,"355":1,"408":1}}],["allows",{"2":{"20":1,"31":1,"125":1,"126":2,"165":1,"190":2,"236":3,"243":1,"314":1,"331":1,"341":1,"342":1,"346":1,"354":2,"362":1,"366":1,"388":1,"391":1,"395":1,"417":1,"495":3}}],["ally",{"2":{"44":1}}],["all",{"0":{"177":1,"189":1},"2":{"2":1,"19":2,"20":7,"22":4,"23":1,"60":1,"78":1,"91":1,"94":1,"95":1,"109":1,"120":1,"122":1,"124":1,"125":1,"126":3,"129":2,"156":1,"157":1,"158":1,"159":2,"166":1,"168":2,"169":1,"173":1,"175":2,"177":2,"188":1,"189":1,"190":2,"191":2,"198":1,"203":1,"211":1,"237":1,"240":1,"243":1,"260":1,"307":1,"310":1,"319":1,"320":1,"324":1,"326":1,"327":1,"340":1,"351":1,"364":1,"367":1,"369":1,"370":1,"378":1,"388":1,"391":1,"398":1,"403":1,"431":1,"449":1,"466":1,"467":2,"473":1,"490":1,"491":1,"496":1,"499":1}}],["arcadeum",{"2":{"380":2}}],["architectures",{"2":{"145":1}}],["architecture",{"0":{"350":1,"490":1},"2":{"3":1}}],["args",{"2":{"459":3}}],["argent",{"2":{"348":1}}],["argument",{"2":{"112":1,"445":1}}],["arguments",{"2":{"19":1,"93":1,"303":2,"459":2}}],["arbitrum",{"2":{"182":2,"339":1,"361":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1}}],["arbitrary",{"2":{"44":1,"45":1,"52":1,"125":1,"185":1,"303":1,"310":1,"346":1}}],["artstation",{"2":{"44":1}}],["artist",{"2":{"44":1}}],["artists",{"2":{"44":1}}],["armor",{"2":{"44":1}}],["array",{"2":{"25":1,"38":2,"39":2,"43":1,"45":1,"76":1,"77":1,"126":1,"173":4,"180":2,"183":2,"411":1,"454":1,"458":1,"459":1,"475":3}}],["aren",{"2":{"184":1}}],["areas",{"2":{"45":1}}],["are",{"0":{"163":1,"416":1,"468":1},"2":{"2":1,"14":1,"19":5,"20":1,"22":1,"31":1,"41":1,"45":1,"46":2,"50":3,"52":2,"76":1,"77":1,"78":2,"80":1,"93":1,"95":1,"102":1,"110":1,"112":1,"118":2,"120":1,"122":1,"123":1,"124":1,"125":3,"126":1,"130":3,"131":1,"133":2,"134":1,"148":3,"165":1,"168":1,"169":1,"173":1,"177":1,"183":2,"190":1,"191":1,"199":1,"200":1,"206":1,"212":1,"213":1,"214":1,"242":2,"243":2,"244":1,"245":1,"275":2,"284":2,"285":1,"303":1,"304":1,"312":1,"315":1,"321":1,"331":1,"335":1,"341":1,"343":2,"346":3,"350":2,"352":1,"353":3,"354":1,"356":1,"357":3,"360":1,"362":1,"364":3,"365":1,"367":1,"380":1,"386":1,"389":1,"397":3,"398":1,"399":1,"401":1,"409":2,"410":1,"416":1,"417":1,"420":1,"422":1,"424":1,"425":1,"426":1,"427":1,"429":1,"431":1,"433":1,"435":1,"436":1,"438":1,"439":1,"440":1,"448":1,"449":3,"450":1,"455":1,"466":1,"467":1,"471":2,"489":1,"490":2,"492":2,"501":2,"508":2}}],["arise",{"2":{"0":1}}],["apk",{"2":{"99":2}}],["ape",{"2":{"43":2}}],["appprotocol",{"0":{"247":1}}],["appprops",{"2":{"190":1}}],["appropriate",{"2":{"110":1,"115":1,"125":1,"200":1,"212":1,"303":1,"311":1}}],["approach",{"2":{"102":1,"111":1,"117":1,"131":1}}],["appname",{"0":{"220":1,"229":1},"2":{"81":1,"85":1,"86":1,"217":1,"225":3,"229":1}}],["applied",{"2":{"425":1}}],["applicable",{"2":{"201":2}}],["application",{"2":{"5":1,"25":2,"31":1,"38":2,"39":4,"52":1,"83":1,"85":1,"91":1,"92":1,"95":2,"99":4,"102":1,"110":1,"128":1,"143":4,"147":1,"156":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":2,"183":1,"185":1,"189":4,"190":1,"199":1,"203":1,"204":1,"213":1,"274":1,"275":1,"282":1,"339":1,"355":1,"357":3,"378":1,"379":1,"432":1,"435":2,"449":1,"459":1,"507":1,"508":1,"515":1}}],["applications",{"0":{"202":1,"377":1},"1":{"203":1,"378":1},"2":{"0":1,"19":1,"90":1,"148":1,"202":1,"236":1,"237":1,"275":2,"307":1,"351":1,"357":1,"377":1,"495":1,"496":1,"508":2}}],["apply",{"2":{"115":3}}],["appleid",{"2":{"367":1}}],["applevision",{"2":{"145":1}}],["apple",{"0":{"156":1,"435":1},"2":{"76":1,"95":1,"156":4,"257":1,"259":1,"357":1,"435":1}}],["appear",{"2":{"125":1,"450":1}}],["appears",{"2":{"43":1,"80":1,"125":1}}],["appended",{"2":{"332":1}}],["append",{"2":{"6":1,"186":1,"420":1}}],["apps",{"2":{"20":2,"112":1,"144":1}}],["app",{"0":{"190":1,"246":1},"2":{"3":8,"6":1,"15":2,"16":1,"17":2,"25":2,"28":2,"29":1,"32":4,"34":6,"36":1,"38":2,"39":4,"43":2,"44":1,"47":2,"49":1,"52":1,"63":2,"68":1,"81":4,"85":4,"86":3,"89":1,"99":1,"114":1,"145":2,"168":3,"169":3,"171":3,"173":3,"175":3,"177":3,"180":3,"182":2,"184":2,"185":1,"188":2,"189":1,"190":3,"191":1,"194":2,"196":1,"197":1,"199":5,"201":4,"207":2,"209":1,"210":1,"213":5,"214":5,"217":1,"220":1,"225":1,"230":1,"236":1,"237":1,"243":1,"244":2,"246":3,"307":1,"335":2,"339":1,"351":1,"353":1,"369":1,"370":1,"435":1,"464":1,"466":1,"495":1,"496":1}}],["apis",{"2":{"105":1,"148":1,"155":1,"162":1,"163":4,"164":2,"340":1,"355":1}}],["api",{"0":{"1":1,"23":1,"31":1,"50":1,"127":1,"128":1,"129":1,"131":1,"167":1,"339":1,"354":1},"1":{"2":1,"3":1,"4":1,"32":1,"33":1,"34":1,"35":1,"36":1,"51":1,"52":1,"128":1,"129":1,"130":1,"131":1,"168":1,"169":1},"2":{"1":4,"2":6,"3":1,"14":3,"15":4,"16":1,"20":6,"23":3,"25":1,"27":5,"28":2,"31":3,"33":1,"35":1,"36":1,"38":1,"47":3,"50":1,"58":1,"94":1,"105":1,"107":1,"110":2,"128":5,"130":1,"138":1,"140":1,"146":1,"151":1,"164":1,"168":2,"171":1,"173":1,"181":1,"182":2,"183":1,"283":1,"338":1,"339":1,"354":1,"357":1,"434":1,"449":4,"459":1,"468":1,"469":1,"471":1,"472":1,"477":1,"479":1,"482":1,"485":1,"487":1,"488":1}}],["announced",{"2":{"246":1}}],["anonymizes",{"2":{"148":1}}],["another",{"2":{"15":1,"25":1,"32":1,"35":1,"38":1,"39":2,"43":1,"47":1,"168":1,"352":1,"364":1,"414":1,"491":1}}],["analytics",{"0":{"147":1},"1":{"148":1,"149":1,"150":1,"151":1,"152":1},"2":{"148":2}}],["anatomy",{"0":{"51":1},"2":{"468":1}}],["animation",{"2":{"3":2}}],["an",{"0":{"188":1},"2":{"3":5,"16":1,"19":1,"22":1,"23":1,"25":2,"28":1,"31":1,"36":1,"38":2,"39":1,"43":2,"44":3,"45":2,"52":1,"61":1,"80":4,"89":1,"93":1,"94":1,"95":1,"102":2,"104":1,"109":1,"111":2,"112":2,"115":1,"117":2,"118":1,"119":3,"120":2,"121":3,"122":2,"123":3,"124":2,"125":4,"131":1,"134":1,"139":1,"143":1,"146":2,"156":2,"159":1,"163":1,"168":2,"169":1,"171":1,"173":1,"175":1,"177":1,"180":2,"183":4,"185":1,"188":1,"190":3,"191":1,"199":2,"200":1,"212":1,"213":2,"220":1,"221":2,"233":1,"236":2,"237":1,"241":1,"243":2,"250":1,"251":1,"258":1,"262":1,"266":1,"270":2,"271":1,"272":2,"274":1,"302":1,"303":2,"304":3,"305":1,"309":2,"310":1,"313":1,"314":2,"319":2,"320":2,"321":1,"325":1,"331":1,"352":1,"353":2,"354":1,"355":2,"364":1,"365":1,"388":1,"397":1,"398":1,"403":1,"414":1,"426":1,"427":2,"431":1,"432":1,"433":1,"434":5,"437":1,"440":3,"442":1,"445":1,"446":1,"451":1,"452":1,"459":2,"461":1,"468":1,"469":1,"478":2,"483":2,"486":1,"490":1,"491":1,"495":2,"496":1,"500":1,"503":2,"504":1,"505":2,"507":1}}],["android=",{"2":{"99":2}}],["androidmanifest",{"2":{"99":1}}],["android",{"0":{"99":1},"2":{"99":41,"108":1,"141":1,"142":1,"143":3,"357":1}}],["and",{"0":{"3":1,"52":1,"145":1,"159":1,"168":2,"169":2,"189":1,"190":2,"245":1,"277":1,"324":1,"334":1,"384":1,"470":1,"510":1},"1":{"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1},"2":{"0":1,"1":4,"2":5,"3":6,"5":1,"6":3,"11":2,"14":2,"15":5,"18":1,"19":5,"20":14,"23":3,"24":1,"27":1,"30":1,"31":3,"32":6,"33":1,"35":1,"37":2,"41":3,"43":1,"44":1,"45":8,"46":2,"47":4,"50":4,"51":1,"52":1,"57":1,"58":1,"60":1,"61":1,"64":1,"76":1,"77":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":2,"89":1,"90":1,"91":3,"93":3,"94":2,"96":1,"97":1,"99":4,"101":1,"102":4,"104":2,"105":3,"106":4,"107":2,"110":4,"111":1,"112":3,"114":1,"115":3,"116":1,"117":4,"118":4,"119":1,"120":2,"121":1,"122":2,"123":1,"124":2,"125":4,"126":1,"128":2,"131":1,"133":1,"134":1,"135":1,"139":1,"140":2,"142":1,"143":3,"145":4,"146":1,"148":3,"149":1,"151":1,"153":1,"155":2,"157":1,"158":2,"159":1,"160":2,"161":1,"162":1,"163":5,"164":2,"165":5,"166":3,"169":1,"173":1,"177":1,"179":2,"181":2,"186":1,"188":4,"189":2,"190":7,"191":2,"194":1,"197":1,"202":1,"203":3,"207":1,"214":1,"226":1,"232":1,"236":3,"237":1,"240":1,"241":1,"243":6,"244":5,"248":2,"250":1,"254":1,"264":1,"266":2,"267":1,"269":1,"275":3,"278":1,"282":1,"283":1,"284":1,"285":1,"286":1,"289":1,"291":1,"293":1,"295":1,"296":1,"301":1,"302":2,"303":3,"305":2,"307":1,"308":1,"309":2,"310":2,"311":1,"317":1,"318":1,"319":2,"320":2,"321":1,"324":1,"325":2,"328":1,"329":1,"331":1,"332":2,"333":1,"334":2,"335":1,"340":1,"341":1,"342":1,"346":1,"351":4,"352":5,"354":9,"355":6,"357":4,"360":1,"362":1,"364":3,"366":1,"367":5,"377":1,"378":3,"380":1,"392":2,"398":1,"402":1,"403":1,"406":1,"408":1,"409":2,"410":1,"411":2,"412":1,"415":1,"417":3,"419":1,"422":1,"423":2,"424":1,"426":2,"427":1,"429":5,"433":1,"434":1,"435":4,"436":1,"440":1,"444":2,"449":2,"450":1,"452":2,"455":1,"458":1,"459":2,"461":1,"463":1,"464":1,"466":2,"467":1,"468":1,"470":2,"471":1,"488":1,"491":2,"492":1,"495":3,"496":1,"499":1,"500":1,"502":1,"508":3,"511":1,"515":1}}],["anyyesindexnumberindex",{"2":{"475":1}}],["anyone",{"2":{"351":1,"354":1,"449":1,"469":1}}],["anywhere",{"2":{"102":1,"111":1,"117":1}}],["anything",{"2":{"19":1,"244":1}}],["any",{"0":{"25":1,"38":1,"168":1,"173":1,"175":1,"265":1},"2":{"0":1,"14":1,"19":1,"20":1,"22":3,"24":2,"31":1,"32":2,"37":4,"45":2,"50":2,"52":3,"59":1,"93":1,"105":1,"106":1,"107":1,"116":1,"120":1,"122":1,"124":1,"125":1,"126":1,"128":2,"133":1,"140":1,"147":1,"157":1,"168":1,"169":1,"171":1,"173":3,"175":4,"177":4,"237":1,"243":3,"244":1,"266":1,"304":1,"309":1,"310":1,"332":1,"333":1,"353":1,"354":1,"361":1,"369":1,"370":1,"380":1,"397":2,"404":1,"416":2,"424":1,"426":1,"428":1,"429":1,"431":1,"435":1,"437":2,"438":1,"439":1,"440":1,"496":1}}],["answer",{"2":{"0":2,"434":1}}],["aspects",{"2":{"432":1}}],["aspect",{"2":{"244":2,"256":1}}],["askforemail",{"0":{"254":1},"2":{"254":2}}],["asking",{"2":{"236":1,"443":1,"452":1,"495":1}}],["ask",{"0":{"235":1,"494":1},"2":{"254":1,"271":1,"504":1}}],["asks",{"2":{"105":1}}],["asequencebackendmanager",{"2":{"133":1}}],["assymmetric",{"2":{"469":1}}],["assigned",{"2":{"387":2}}],["assistance",{"2":{"25":1,"38":1,"39":2,"168":1}}],["assured",{"2":{"351":1}}],["assumes",{"2":{"244":1}}],["assuming",{"2":{"128":1,"488":1}}],["asstring",{"2":{"321":2}}],["assembled",{"2":{"303":1}}],["assets",{"2":{"3":1,"32":3,"44":1,"78":5,"99":1,"104":1,"105":2,"110":2,"115":1,"163":3,"165":1}}],["assetid",{"2":{"3":2}}],["assetidorassettype",{"2":{"3":1}}],["assettype",{"2":{"3":3}}],["asset",{"2":{"3":6,"43":1,"44":1}}],["associate",{"2":{"452":1}}],["associated",{"2":{"152":1,"278":1,"411":1,"475":1,"511":1}}],["association",{"2":{"93":1}}],["asynchronous",{"2":{"102":1,"111":1,"117":1,"307":1}}],["async",{"2":{"6":1,"66":1,"102":1,"111":1,"117":1,"182":1,"184":1,"226":2,"303":1,"307":1,"435":3}}],["as",{"0":{"268":1,"376":1},"2":{"0":2,"2":3,"3":2,"13":3,"15":3,"19":2,"20":1,"25":1,"31":2,"32":2,"34":1,"35":2,"38":1,"39":1,"43":1,"44":1,"45":4,"46":1,"47":2,"50":2,"51":1,"58":1,"59":1,"61":1,"76":1,"77":1,"80":2,"84":1,"85":1,"86":1,"91":1,"93":1,"95":1,"101":2,"102":1,"105":2,"106":2,"112":4,"115":1,"117":1,"118":5,"119":1,"121":1,"123":2,"125":4,"126":1,"128":1,"134":1,"140":1,"143":2,"147":1,"156":1,"162":2,"163":1,"165":5,"168":1,"183":1,"188":1,"196":1,"203":1,"209":1,"226":1,"228":1,"236":1,"237":2,"241":1,"242":1,"251":1,"262":1,"266":2,"268":1,"269":1,"270":2,"271":2,"272":2,"273":1,"275":2,"283":1,"284":1,"285":1,"286":1,"289":1,"291":1,"293":1,"294":1,"295":1,"302":2,"303":2,"305":3,"309":1,"310":1,"314":1,"319":1,"320":1,"324":1,"325":1,"333":2,"338":1,"340":1,"341":1,"342":1,"346":1,"350":1,"354":1,"355":1,"357":2,"361":1,"362":1,"367":1,"376":1,"378":1,"380":1,"390":1,"391":1,"409":4,"410":3,"411":1,"417":1,"420":1,"423":1,"427":1,"428":1,"429":1,"430":3,"431":2,"433":1,"434":4,"445":1,"446":1,"450":1,"465":3,"466":1,"467":2,"469":1,"489":2,"492":2,"495":1,"496":2,"500":1,"501":1,"502":1,"503":2,"504":2,"505":2,"506":1,"508":2}}],["a",{"0":{"2":1,"6":1,"8":1,"51":1,"54":1,"80":1,"176":1,"177":1,"180":1,"189":1,"190":1,"269":1,"278":1,"337":1,"356":1,"373":1,"502":1,"511":1},"1":{"177":1},"2":{"0":1,"1":3,"2":4,"5":1,"6":4,"14":1,"15":2,"19":1,"20":10,"22":4,"23":2,"25":2,"27":1,"31":2,"32":6,"33":2,"36":3,"37":1,"38":2,"39":5,"43":2,"44":3,"46":3,"47":1,"50":6,"51":7,"52":3,"55":1,"58":1,"59":2,"60":1,"64":1,"66":1,"70":2,"76":2,"77":2,"78":1,"80":5,"81":1,"82":1,"85":1,"90":2,"91":3,"92":1,"93":4,"94":2,"95":2,"99":3,"101":3,"102":8,"104":4,"105":8,"106":3,"107":3,"109":1,"110":5,"111":2,"112":6,"113":1,"115":3,"116":1,"117":6,"118":11,"119":1,"120":4,"122":4,"123":1,"124":4,"125":8,"126":5,"128":2,"129":3,"130":1,"131":1,"133":4,"134":2,"139":2,"140":4,"143":1,"145":5,"146":6,"148":1,"153":1,"155":3,"157":1,"158":3,"162":1,"163":4,"164":4,"165":5,"166":1,"168":3,"169":2,"171":2,"173":7,"175":3,"177":3,"179":1,"180":2,"181":1,"182":2,"183":1,"185":1,"189":3,"190":10,"191":2,"192":1,"197":1,"198":1,"201":3,"202":2,"203":3,"204":1,"205":1,"210":1,"211":1,"214":4,"215":1,"229":1,"230":1,"231":1,"236":6,"237":2,"240":1,"242":4,"243":6,"244":4,"245":1,"252":1,"256":2,"257":1,"262":1,"264":2,"266":1,"267":3,"268":1,"269":1,"270":3,"271":4,"272":3,"273":2,"274":1,"275":7,"278":1,"279":1,"281":1,"282":1,"283":7,"284":2,"285":3,"286":1,"287":1,"289":2,"291":3,"292":1,"293":1,"295":2,"296":2,"297":1,"299":1,"300":1,"301":1,"302":6,"303":7,"304":1,"305":4,"306":1,"307":1,"309":3,"310":1,"311":1,"312":1,"313":4,"314":3,"315":1,"319":5,"320":5,"321":2,"323":1,"324":2,"326":1,"327":1,"333":1,"334":1,"337":1,"338":2,"339":1,"340":2,"341":1,"342":1,"343":1,"350":2,"351":6,"352":2,"353":1,"354":9,"355":2,"357":7,"361":2,"362":1,"363":7,"364":5,"366":3,"367":6,"374":1,"375":2,"376":1,"377":2,"378":3,"379":1,"387":2,"389":1,"390":1,"391":1,"392":1,"395":1,"397":2,"398":1,"400":2,"402":1,"403":1,"405":1,"406":3,"409":1,"410":2,"412":3,"413":1,"415":1,"416":1,"417":1,"422":1,"423":2,"424":1,"425":2,"426":3,"427":2,"428":2,"429":4,"430":4,"432":1,"433":3,"434":3,"435":6,"436":1,"437":1,"439":2,"440":2,"442":2,"443":2,"445":2,"446":4,"449":4,"450":1,"452":2,"460":1,"461":1,"463":1,"466":5,"467":1,"468":4,"469":4,"472":4,"473":1,"475":2,"477":1,"478":1,"479":1,"480":1,"482":1,"485":1,"488":4,"489":2,"490":2,"491":1,"492":1,"495":6,"496":2,"499":1,"501":4,"502":1,"503":3,"504":4,"505":3,"506":2,"507":1,"508":7,"511":1,"512":1,"514":1,"515":1}}],["src=",{"2":{"268":2,"376":2}}],["sri",{"2":{"13":1}}],["sqnc",{"2":{"146":1}}],["sso",{"0":{"143":1},"2":{"133":1,"135":2}}],["ssssssssssssssssssssssssssssssssssssssssnnnnnnnnnnnnnnnnnnnnnnnn",{"2":{"51":1}}],["swapping",{"2":{"131":1}}],["switches",{"2":{"128":1}}],["switch",{"2":{"128":1}}],["switching",{"2":{"93":1}}],["sfts",{"2":{"123":1}}],["snippets",{"2":{"166":1}}],["snippet",{"2":{"101":1,"102":1,"118":1,"119":1,"121":1,"123":1,"125":1,"237":1,"283":1,"496":1}}],["smart",{"0":{"303":1,"342":1,"346":1},"1":{"343":1,"344":1,"345":1,"346":1,"347":2,"348":1},"2":{"101":1,"102":4,"120":1,"122":1,"124":1,"125":3,"126":3,"165":1,"237":1,"267":1,"291":1,"303":2,"304":1,"305":2,"342":2,"346":2,"350":1,"351":1,"397":1,"414":1,"459":1,"496":1}}],["smallest",{"2":{"354":1}}],["small",{"2":{"43":1,"273":1,"506":1}}],["smooth",{"2":{"90":1,"91":1,"165":1,"202":1,"203":1,"377":1,"378":1}}],["sha256",{"2":{"465":1}}],["sha384",{"2":{"465":2}}],["shape=",{"2":{"435":1}}],["sha",{"2":{"143":1}}],["shared",{"2":{"449":1}}],["share",{"0":{"82":1},"2":{"82":1,"156":1,"254":1}}],["showcasing",{"2":{"357":1}}],["showcase",{"2":{"163":1}}],["showcases",{"2":{"105":1}}],["showing",{"2":{"327":1}}],["showauthsuccessdelegate",{"2":{"133":3}}],["shows",{"2":{"128":1,"151":1}}],["show",{"2":{"128":1,"149":2,"220":1,"261":1}}],["showemailinput",{"0":{"75":1}}],["shown",{"2":{"67":1,"73":1,"74":1,"75":1,"76":1,"77":1}}],["should",{"2":{"2":2,"39":1,"45":1,"80":1,"104":1,"106":1,"256":1,"267":1,"282":1,"286":1,"289":1,"291":1,"293":1,"295":1,"307":2,"309":1,"324":1,"325":1,"331":1,"332":1,"365":1,"375":1,"400":1,"403":4,"405":1,"431":1,"446":1,"449":3,"451":1,"455":1,"456":1,"457":1,"458":1,"515":1}}],["slot",{"2":{"390":5}}],["sleepy",{"2":{"43":1}}],["slightly",{"2":{"41":1}}],["sdk",{"0":{"57":1,"90":1,"161":1,"358":1,"359":1},"1":{"91":1,"359":1,"360":1,"361":1},"2":{"39":1,"50":1,"57":3,"59":1,"60":1,"93":1,"94":1,"99":5,"101":1,"105":4,"106":6,"107":2,"109":1,"110":2,"112":2,"120":1,"122":1,"124":1,"126":1,"129":1,"140":3,"161":3,"165":1,"191":1,"237":1,"240":1,"267":2,"312":1,"357":5,"359":1,"361":1,"375":2,"432":1,"434":3,"435":2,"440":1,"449":1,"450":1,"452":1,"453":1,"454":1,"476":1,"478":1,"496":1,"499":1}}],["sdks",{"2":{"15":1,"18":1,"20":1,"30":1,"35":1,"47":1,"57":1,"58":1,"147":1,"148":1,"150":1,"161":1,"166":1,"191":1,"355":1,"429":1,"467":1}}],["skywvr",{"2":{"32":1}}],["skyweavercover",{"2":{"32":1}}],["skyweaver",{"2":{"11":1,"32":10,"44":3,"175":3,"177":3}}],["sync",{"2":{"425":1}}],["synonymous",{"2":{"380":1}}],["systems",{"2":{"128":1,"139":1,"463":1}}],["system",{"2":{"57":1,"105":1,"106":1,"108":2,"114":1,"142":1,"148":1,"342":1,"355":1,"432":1,"467":1,"491":1}}],["symbol",{"2":{"32":1,"52":3,"184":1,"186":1,"309":2}}],["syria",{"2":{"13":1}}],["split",{"2":{"354":1}}],["sprintf",{"2":{"184":1}}],["spothq",{"2":{"52":1}}],["sponsoring",{"2":{"52":1}}],["sponsorship",{"0":{"52":1},"2":{"184":1,"186":2}}],["sponsor",{"2":{"50":1,"52":1}}],["sponsored",{"2":{"50":1,"52":1}}],["space",{"2":{"51":3,"347":1}}],["spam",{"0":{"19":1},"2":{"19":2,"168":1,"169":1,"173":1,"177":1}}],["spec",{"2":{"146":1}}],["spectator",{"2":{"146":3}}],["special",{"2":{"102":1,"199":1,"213":1,"244":1,"285":1,"286":1,"289":1,"291":1,"293":1,"295":1}}],["specified",{"2":{"168":1,"262":1,"263":1,"271":1,"287":1,"289":1,"291":1,"469":1,"470":1,"504":1}}],["specifies",{"2":{"66":1,"67":1,"354":1}}],["specifics",{"0":{"145":1}}],["specific",{"2":{"20":1,"43":1,"44":1,"50":1,"70":1,"95":1,"168":1,"169":1,"173":1,"177":1,"179":1,"181":1,"182":1,"266":1,"267":1,"275":1,"286":1,"335":1,"339":1,"357":2,"375":1,"473":1,"508":1}}],["specifying",{"2":{"81":1,"468":1}}],["specify",{"2":{"32":1,"173":5,"244":1,"245":1,"257":1,"258":1,"259":1,"262":1,"341":1,"362":1}}],["spell",{"2":{"44":1}}],["salt",{"2":{"386":1,"398":1,"417":1,"420":1,"423":1,"431":2}}],["sale",{"2":{"183":1}}],["sardine",{"2":{"341":1,"362":1}}],["savings",{"2":{"126":1}}],["saved",{"2":{"158":1}}],["saves",{"2":{"115":1}}],["save",{"2":{"5":1,"105":1,"160":1,"163":1}}],["safeguarding",{"2":{"365":1}}],["safeguards",{"2":{"353":1}}],["safety",{"2":{"310":1}}],["safetransferfrom",{"2":{"269":4,"270":5,"272":5,"457":1,"502":4,"503":5,"505":5}}],["safely",{"2":{"159":1}}],["safe",{"2":{"158":2,"348":1,"353":1,"449":1,"457":1,"459":1}}],["safemint",{"2":{"122":2}}],["safer",{"2":{"106":1}}],["say",{"2":{"32":1}}],["same",{"2":{"15":1,"32":1,"45":1,"47":1,"123":1,"196":1,"209":1,"236":1,"269":1,"314":1,"403":1,"425":1,"433":1,"465":2,"495":1,"502":1}}],["samples",{"0":{"105":1},"2":{"104":2,"105":3}}],["sample",{"2":{"15":1,"105":8,"110":1,"113":1,"357":2,"435":1,"464":1}}],["soliditykeccak256",{"2":{"430":3}}],["soliditypack",{"2":{"418":1,"420":2,"430":1}}],["solutions",{"2":{"16":1,"17":1}}],["sociallogin",{"2":{"133":1,"135":1}}],["social",{"0":{"95":1,"135":1,"136":1,"364":1,"443":1},"1":{"96":1,"97":1,"98":1,"99":1,"100":1,"365":1,"366":1,"367":1},"2":{"76":1,"91":1,"95":2,"101":1,"104":1,"108":2,"110":1,"165":2,"181":1,"203":1,"347":1,"351":1,"363":1,"364":3,"367":2,"378":1,"433":1,"434":1,"435":1,"443":1,"444":1}}],["socialauthoptions",{"0":{"76":1},"2":{"81":2}}],["so",{"2":{"19":1,"20":1,"46":1,"52":4,"80":1,"93":2,"110":1,"116":1,"125":2,"133":4,"139":1,"158":1,"159":1,"189":1,"237":1,"302":2,"309":2,"314":1,"332":1,"346":1,"351":1,"355":1,"399":1,"401":1,"496":1}}],["sourced",{"2":{"191":1}}],["sources",{"2":{"19":2}}],["source",{"2":{"15":1,"35":1,"47":1,"61":1,"105":1,"125":2,"138":1,"192":1,"205":1,"215":1,"231":1,"241":1,"244":1,"268":1,"351":1,"354":2,"357":1,"376":1,"500":1}}],["south",{"2":{"13":1}}],["somalia",{"2":{"13":1}}],["sometimes",{"2":{"45":1,"145":1}}],["something",{"2":{"26":1,"101":1,"102":2,"111":1,"117":2,"131":1,"267":1,"324":1,"332":1,"375":1}}],["some",{"2":{"11":1,"25":1,"38":1,"41":1,"45":1,"46":1,"50":1,"95":1,"102":1,"105":3,"106":1,"108":1,"112":3,"115":1,"125":1,"131":1,"188":1,"242":1,"244":1,"308":1,"344":1,"433":1,"460":1,"486":1,"501":1}}],["soon",{"0":{"9":1,"116":1},"2":{"100":1}}],["scope",{"2":{"275":1,"409":1,"410":1,"434":1,"508":1}}],["scalable",{"2":{"340":1}}],["scaled",{"2":{"93":1}}],["scaler",{"2":{"93":1}}],["scale",{"2":{"5":1,"93":2}}],["scanned",{"2":{"266":2}}],["scan",{"2":{"232":1,"266":1}}],["scenarios",{"2":{"344":1,"353":1,"429":1}}],["scenario",{"2":{"158":1,"353":5,"489":1}}],["scene",{"2":{"93":1,"104":1,"105":2,"106":1,"112":1,"115":3}}],["scenes",{"2":{"20":1,"311":1}}],["scripting",{"2":{"105":1}}],["script",{"2":{"104":1,"105":1,"115":1,"145":5,"268":5,"376":5}}],["scriptableobject",{"2":{"110":3}}],["scriptable",{"2":{"104":1,"115":3,"283":1}}],["scripts",{"2":{"102":1,"105":1}}],["scroll",{"2":{"96":1,"97":1,"332":1,"333":1}}],["screen",{"2":{"2":1,"71":1,"93":1,"246":1,"330":1}}],["scheme=",{"2":{"99":2}}],["schemes",{"2":{"96":1,"97":1,"108":1}}],["scheme",{"0":{"115":1},"2":{"95":2,"96":1,"97":1,"99":3,"110":1,"115":3,"157":1}}],["schemas",{"2":{"99":4}}],["schema",{"0":{"183":1},"2":{"15":1,"43":1,"44":1}}],["s",{"2":{"3":1,"19":1,"31":1,"32":3,"43":1,"44":1,"52":1,"60":1,"68":1,"76":1,"77":1,"80":2,"87":1,"101":1,"105":1,"107":1,"114":1,"125":1,"131":1,"135":1,"146":1,"183":2,"184":1,"185":1,"186":2,"190":1,"220":1,"235":1,"237":1,"240":1,"242":1,"244":1,"248":1,"251":1,"266":1,"275":2,"279":1,"326":1,"333":1,"346":2,"351":1,"352":3,"353":1,"357":1,"363":1,"365":1,"367":1,"388":1,"391":1,"392":1,"399":1,"403":1,"405":1,"411":1,"413":1,"443":1,"445":1,"450":1,"452":2,"459":1,"465":1,"466":1,"468":1,"469":2,"477":1,"479":1,"482":1,"485":1,"488":1,"490":1,"491":1,"492":1,"494":1,"496":1,"499":1,"501":1,"508":2,"512":1}}],["sufficient",{"2":{"443":1}}],["suffix",{"2":{"332":1}}],["sum",{"2":{"423":1,"424":1}}],["summarize",{"2":{"129":1}}],["summary",{"0":{"67":1},"2":{"67":1,"168":1}}],["suspicious",{"2":{"366":1}}],["suggestgastipcap",{"0":{"298":1},"2":{"298":1}}],["suggestgasprice",{"0":{"297":1},"2":{"297":1}}],["suggested",{"2":{"297":1,"298":1}}],["suggesting",{"2":{"43":1}}],["surf",{"2":{"243":1}}],["sure",{"2":{"15":1,"20":1,"47":1,"50":1,"80":1,"99":1,"119":2,"133":1,"146":1,"155":1,"156":1,"175":1,"177":1}}],["succeedednoresultstring",{"2":{"475":1,"478":1}}],["succeeded",{"2":{"185":1,"266":1,"439":2,"440":1,"476":3,"478":1}}],["success",{"2":{"146":1}}],["successful",{"0":{"439":1},"2":{"129":3,"438":1,"472":1,"475":1,"480":1}}],["successfultransactionreturn",{"2":{"117":1}}],["successfulcontractdeploymentreturn",{"2":{"102":1}}],["successfully",{"2":{"94":1,"95":1,"435":1,"439":1,"483":1}}],["such",{"2":{"3":2,"32":1,"46":1,"50":1,"80":1,"84":1,"91":1,"147":1,"188":1,"190":1,"199":1,"203":1,"213":1,"236":1,"340":1,"353":1,"355":1,"367":2,"378":1,"446":1,"447":1,"450":1,"466":1,"486":1,"492":1,"495":1}}],["suite",{"2":{"162":1}}],["suit",{"2":{"45":1,"114":1}}],["subpacket",{"2":{"459":1}}],["subpaths",{"2":{"157":1}}],["subdigests",{"2":{"428":1}}],["subdigest",{"0":{"428":1},"2":{"428":3,"430":1}}],["subtree",{"0":{"429":1},"2":{"426":1,"429":1}}],["subtle",{"2":{"41":1}}],["sub",{"2":{"267":3,"375":3}}],["submits",{"2":{"317":1,"318":1,"319":1,"320":1}}],["submitted",{"2":{"126":1,"319":3,"320":3}}],["submit",{"2":{"112":1,"116":1,"296":1}}],["substituting",{"2":{"465":2}}],["substitute",{"2":{"99":2}}],["subsequent",{"0":{"404":1},"2":{"159":1,"419":1}}],["subscribe",{"2":{"101":1}}],["subject",{"2":{"13":1,"436":2}}],["supplied",{"2":{"128":1}}],["supplies",{"0":{"177":1},"2":{"22":1,"175":1,"177":3}}],["supplement",{"2":{"105":1}}],["supplying",{"2":{"134":1}}],["supply",{"2":{"22":2,"51":1}}],["supports",{"2":{"37":1,"61":1,"154":1,"241":1,"264":1,"266":2,"341":1,"362":1,"500":1}}],["supported",{"0":{"21":1},"2":{"15":1,"21":1,"31":1,"32":1,"34":1,"41":1,"47":1,"96":1,"97":1,"145":1,"175":1,"177":1,"196":1,"209":1,"257":2,"261":1,"346":1,"363":1,"434":1,"435":1}}],["support",{"0":{"0":1,"242":1,"501":1},"2":{"0":3,"16":1,"17":1,"20":3,"25":1,"38":1,"39":2,"43":1,"79":1,"118":1,"155":1,"165":1,"168":1,"191":1,"243":1,"341":1,"347":1,"351":1,"362":1,"370":1,"397":1,"408":1,"414":1,"443":1}}],["super",{"2":{"20":2}}],["sudan",{"2":{"13":2}}],["stops",{"2":{"471":1}}],["storage",{"2":{"275":1,"278":1,"282":1,"386":1,"390":2,"417":1,"431":2,"508":1,"511":1,"515":1}}],["stores",{"2":{"129":1,"148":1}}],["storedcredentialsvalid",{"2":{"133":1}}],["storedcredentials",{"2":{"130":1}}],["stored",{"2":{"2":1,"139":4,"159":1,"275":1,"282":1,"354":2,"363":1,"365":1,"390":1,"417":1,"430":1,"449":1,"469":1,"508":1,"515":1}}],["store",{"2":{"2":1,"20":1,"45":2,"162":1,"163":2,"278":1,"386":1,"417":1,"511":1}}],["still",{"2":{"102":1,"106":1,"107":1,"112":2,"140":1,"242":1,"275":1,"353":1,"398":1,"436":1,"501":1,"508":1}}],["style",{"2":{"99":2}}],["styling",{"2":{"70":1}}],["strategy",{"2":{"354":1}}],["straightforward",{"2":{"165":1,"302":1}}],["straight",{"2":{"165":1}}],["streamlining",{"2":{"275":1,"508":1}}],["streamlines",{"2":{"267":1}}],["strength",{"2":{"44":1}}],["strictmode",{"2":{"435":2}}],["strictly",{"2":{"302":1,"450":1,"455":1}}],["stripe",{"2":{"243":1}}],["stringify",{"2":{"182":1,"184":1,"186":1}}],["strings",{"2":{"25":1,"38":2,"39":2}}],["string",{"2":{"25":2,"38":3,"39":3,"43":3,"44":1,"45":2,"78":1,"102":2,"110":1,"111":1,"118":1,"120":1,"122":1,"124":1,"125":1,"168":3,"169":4,"171":2,"173":8,"175":2,"177":3,"180":4,"183":15,"236":1,"283":1,"285":3,"287":1,"288":1,"290":1,"291":1,"294":2,"296":2,"302":2,"304":5,"306":1,"309":1,"317":1,"319":3,"321":2,"397":1,"409":1,"410":2,"430":3,"459":4,"495":1}}],["structured",{"0":{"410":1},"2":{"410":1}}],["structure",{"0":{"450":1,"473":1},"1":{"451":1,"452":1,"453":1,"454":1,"455":1,"456":1,"457":1,"458":1,"459":1,"460":1},"2":{"188":3,"190":2,"199":2,"201":2,"213":2,"214":2,"450":2,"473":1}}],["structures",{"2":{"43":1}}],["struct",{"2":{"134":1}}],["structs",{"2":{"130":1}}],["stunt",{"2":{"43":1}}],["stud",{"2":{"43":1}}],["step",{"0":{"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1},"2":{"3":1,"110":1,"164":2,"433":1,"465":1}}],["steps",{"0":{"92":1,"204":1,"379":1},"2":{"3":2,"63":1,"85":1,"98":1,"145":1}}],["standalone",{"2":{"108":2,"141":2}}],["standard",{"2":{"41":1,"43":1,"45":1,"119":1,"120":1,"121":1,"122":1,"123":2,"124":1,"191":1,"237":1,"242":2,"269":1,"270":1,"272":1,"309":1,"313":1,"370":1,"408":1,"473":1,"496":1,"501":2,"502":1,"503":1,"505":1}}],["standards",{"0":{"26":1,"41":1,"42":1},"1":{"43":1,"44":1,"45":1,"46":1},"2":{"19":1,"27":2,"37":1,"41":4,"43":1,"243":1}}],["static",{"2":{"109":1,"426":1,"428":3,"430":1}}],["status",{"0":{"444":1},"1":{"445":1,"446":1,"447":1},"2":{"39":1,"87":1,"183":1,"185":2,"439":3,"444":1,"464":1,"476":3,"490":1}}],["statemutability",{"2":{"459":2}}],["states",{"0":{"12":1},"2":{"11":3}}],["state",{"0":{"491":1},"2":{"2":1,"12":1,"106":1,"406":1,"425":1,"435":1,"490":3,"491":2}}],["stays",{"2":{"20":1}}],["starttime",{"2":{"464":1}}],["startingblocknumber",{"2":{"289":1}}],["starting",{"2":{"80":1,"105":1,"338":1,"468":1}}],["started",{"0":{"22":1,"56":1,"83":1,"164":1,"166":1,"358":1},"1":{"57":1,"58":1,"59":1,"84":1,"359":1,"360":1,"361":1},"2":{"14":1,"55":1,"84":1,"92":1,"164":2,"166":2,"204":1,"338":1,"369":1,"370":1,"374":1,"379":1}}],["start",{"2":{"0":1,"52":1,"58":1,"59":1,"131":1,"133":1,"134":2,"135":1,"163":2,"361":1}}],["stack",{"2":{"0":1,"5":1,"267":2,"340":1}}],["si",{"2":{"466":1}}],["situation",{"2":{"242":1,"501":1}}],["situations",{"2":{"188":1}}],["site",{"2":{"180":3}}],["side",{"0":{"237":1,"496":1},"2":{"133":1,"145":1,"199":1,"213":1,"237":1,"242":1,"275":1,"280":1,"281":1,"282":1,"353":1,"449":1,"452":1,"496":1,"501":1,"508":1,"513":1,"514":1,"515":1}}],["size",{"2":{"93":1,"96":1,"97":1}}],["six",{"2":{"44":1}}],["simulateresult",{"2":{"475":1,"478":1}}],["simulationno",{"2":{"475":1,"478":1}}],["simulationnogaslimitnumbergas",{"2":{"475":1,"478":1}}],["simulationyesreasonstring",{"2":{"475":1,"478":1}}],["simulation",{"2":{"440":1,"475":4,"478":4}}],["simulationssimulateresult",{"2":{"478":1}}],["simulations",{"2":{"439":1,"440":1,"476":1,"478":1}}],["simulating",{"2":{"440":1}}],["similarly",{"2":{"133":1,"225":1,"226":1,"319":1,"320":1,"434":1}}],["similar",{"2":{"41":1,"93":1,"117":1,"131":1,"146":1,"267":1,"270":1,"272":1,"310":1,"410":1,"503":1,"505":1}}],["simply",{"2":{"3":2,"15":1,"31":1,"32":1,"35":1,"47":1,"105":1,"126":1,"303":1,"305":1,"325":1,"468":1}}],["simpler",{"2":{"236":1,"495":1}}],["simple",{"2":{"1":1,"14":1,"20":2,"23":1,"27":1,"31":1,"33":1,"50":1,"128":1,"236":1,"243":1,"333":1,"344":1,"351":1,"435":1,"466":1,"495":1}}],["silently",{"2":{"307":1,"447":1}}],["silence",{"2":{"32":1}}],["silvercardid",{"2":{"32":1}}],["silver",{"2":{"32":1,"43":1,"44":3}}],["sign+verify",{"2":{"236":1,"495":1}}],["signtransactions",{"2":{"186":1,"273":1,"506":1}}],["signedmessage",{"2":{"321":2,"480":1,"481":1}}],["signedtransactionstring",{"2":{"296":1}}],["signed",{"0":{"409":1,"480":1},"1":{"481":1,"482":1},"2":{"186":2,"236":3,"237":1,"244":2,"257":1,"258":1,"259":1,"273":1,"275":1,"296":1,"354":1,"409":3,"410":1,"411":1,"424":1,"453":1,"466":1,"468":1,"480":1,"482":1,"488":1,"495":3,"496":1,"506":1,"508":1}}],["signer",{"0":{"351":1,"352":1,"414":1,"427":1},"1":{"415":1,"416":1},"2":{"158":1,"184":4,"269":4,"270":4,"271":4,"272":4,"273":2,"277":2,"279":1,"391":1,"414":2,"418":6,"426":1,"427":2,"502":4,"503":4,"504":4,"505":4,"506":2,"510":2,"512":1}}],["signerssigner",{"2":{"413":1}}],["signers",{"0":{"416":1},"2":{"158":1,"350":1,"386":1,"389":1,"391":1,"392":1,"396":1,"397":4,"409":1,"410":1,"412":1,"413":2,"415":2,"416":2,"418":1,"423":1,"424":1,"426":1,"427":1,"429":2}}],["signmessagereturn",{"2":{"111":1}}],["signmessage",{"0":{"321":1},"2":{"111":3,"279":1,"281":1,"321":2,"409":1,"410":1,"451":1,"453":3,"468":1,"488":1,"512":1,"514":1}}],["signs",{"2":{"87":1,"95":1,"317":1,"318":1,"319":1,"320":1,"354":1}}],["signinwithemail",{"0":{"258":1},"2":{"258":2}}],["signinwith",{"0":{"257":1},"2":{"257":2}}],["signinoptions",{"0":{"259":1},"2":{"244":2,"259":2}}],["signingin",{"2":{"435":1}}],["signing",{"2":{"93":1,"110":1,"111":1,"145":1,"165":1,"236":1,"250":1,"266":1,"273":1,"275":1,"408":1,"409":1,"410":1,"433":2,"446":1,"451":1,"495":1,"506":1,"508":1}}],["signin",{"0":{"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"135":1,"136":1},"1":{"73":1,"74":1,"75":1,"76":1,"77":1},"2":{"72":1,"81":1,"133":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1}}],["signatureno",{"2":{"480":1}}],["signaturevalidation",{"2":{"411":1}}],["signaturestringsignature",{"2":{"451":1}}],["signatures",{"0":{"274":1,"410":1,"469":1,"507":1},"2":{"242":1,"391":1,"392":1,"398":1,"409":1,"410":1,"411":5,"417":1,"422":1,"424":1,"450":1,"451":1,"453":1,"459":1,"460":1,"468":1,"469":1,"501":1}}],["signature",{"0":{"234":1,"280":1,"282":1,"408":1,"451":1,"493":1,"513":1,"515":1},"1":{"235":1,"236":1,"237":1,"409":1,"410":1,"411":1,"494":1,"495":1,"496":1},"2":{"51":1,"111":1,"125":2,"236":1,"237":1,"279":1,"280":2,"282":3,"302":1,"303":1,"321":1,"408":1,"409":2,"410":2,"411":8,"413":1,"414":1,"417":1,"423":1,"426":2,"428":3,"429":1,"431":1,"449":1,"451":3,"452":1,"453":1,"459":1,"460":1,"468":1,"469":2,"481":1,"495":1,"496":1,"512":1,"513":2,"515":3}}],["sign",{"0":{"72":1,"94":1,"95":1,"111":1,"279":1,"281":1,"433":2,"434":2,"453":1,"512":1,"514":1},"1":{"73":1,"74":1,"75":1,"76":1,"77":1,"96":1,"97":1,"98":1,"99":1,"100":1,"434":2,"435":2},"2":{"14":1,"52":1,"72":1,"73":1,"74":1,"75":1,"76":1,"87":1,"94":1,"95":2,"101":1,"104":1,"108":2,"110":1,"111":1,"156":1,"236":2,"244":1,"254":1,"257":1,"258":1,"259":1,"274":1,"279":1,"281":1,"321":1,"330":1,"332":1,"334":1,"350":1,"352":1,"422":1,"429":1,"433":1,"434":1,"468":1,"480":1,"495":2,"507":1,"512":1,"514":1}}],["singlesigner",{"2":{"184":1}}],["single",{"2":{"5":1,"32":1,"36":1,"46":1,"50":1,"123":1,"126":1,"168":1,"267":1,"269":1,"270":2,"271":3,"272":2,"319":1,"320":1,"326":1,"343":1,"363":1,"375":1,"430":2,"469":1,"502":1,"503":2,"504":3,"505":2}}],["since",{"2":{"2":1,"105":1,"126":1,"133":1,"293":1,"309":1,"365":1,"402":1,"403":1,"490":1}}],["several",{"2":{"267":1,"340":1,"357":1,"375":1}}],["sepolia",{"2":{"182":2,"339":1}}],["separated",{"2":{"32":1}}],["separate",{"2":{"20":1,"325":1}}],["self",{"2":{"389":1,"397":1,"402":1}}],["selling",{"2":{"163":1}}],["sell",{"2":{"151":1,"163":1}}],["selector",{"2":{"411":1}}],["selects",{"2":{"266":1}}],["selecting",{"2":{"190":1}}],["selection",{"2":{"184":1}}],["selectfee",{"2":{"184":1}}],["selectedoption",{"2":{"186":5}}],["selected",{"2":{"150":1}}],["select",{"2":{"96":2,"97":2,"145":1,"166":1,"184":1,"186":1,"329":1}}],["series",{"2":{"133":1,"149":1}}],["serves",{"2":{"105":1}}],["servers",{"2":{"101":1,"366":1}}],["serverless",{"0":{"8":1},"2":{"335":1,"357":1}}],["server",{"0":{"237":1,"496":1},"2":{"3":2,"15":1,"20":1,"188":2,"190":1,"199":1,"213":1,"237":2,"242":1,"280":1,"282":1,"496":2,"501":1,"513":1,"515":1}}],["services",{"2":{"19":2,"45":1,"155":1,"156":1,"242":1,"501":1}}],["service",{"0":{"2":1,"354":1},"2":{"1":4,"2":2,"3":1,"11":1,"13":1,"14":1,"19":1,"20":1,"23":1,"27":2,"31":3,"33":1,"35":2,"37":1,"39":1,"41":1,"50":1,"112":1,"283":1,"351":1,"352":1,"354":3,"491":1}}],["semi",{"2":{"123":1,"425":1}}],["semantic",{"2":{"107":1,"140":1}}],["sessionopened",{"2":{"483":1,"484":1}}],["sessionnoproofobjectcontains",{"2":{"452":1}}],["sessionno",{"2":{"451":1}}],["sessionid",{"2":{"433":1,"437":1,"468":1,"469":1,"484":1}}],["sessionhash",{"2":{"433":3,"434":2,"435":6}}],["sessionaddress",{"2":{"278":1,"282":1,"511":1,"515":1}}],["sessionwallet",{"2":{"278":2,"281":1,"511":2,"514":1}}],["sessionprivatekey",{"2":{"278":4,"511":4}}],["sessionsyespacket",{"2":{"450":1}}],["sessionsignature",{"2":{"281":1,"282":1,"514":1,"515":1}}],["sessions",{"0":{"436":1},"2":{"237":2,"433":1,"436":4,"437":2,"467":1,"496":2}}],["session",{"0":{"275":1,"276":1,"278":1,"281":1,"282":1,"365":1,"432":1,"437":1,"445":1,"447":1,"448":1,"452":1,"460":1,"483":1,"508":1,"509":1,"511":1,"514":1,"515":1},"1":{"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"433":1,"434":1,"435":1,"436":1,"437":1,"446":1,"484":1,"485":1,"510":1,"511":1,"512":1,"513":1,"514":1,"515":1},"2":{"93":1,"94":1,"129":2,"130":1,"184":4,"185":1,"266":1,"274":1,"275":4,"279":1,"280":2,"281":1,"282":5,"351":2,"364":4,"365":2,"366":1,"432":1,"434":3,"435":5,"437":4,"439":1,"440":1,"444":1,"445":2,"446":3,"447":3,"448":2,"450":1,"451":2,"452":5,"453":1,"459":1,"460":6,"468":1,"469":3,"483":1,"485":1,"507":1,"508":4,"512":1,"513":2,"514":1,"515":5}}],["sensitive",{"2":{"355":1}}],["sensical",{"2":{"41":1}}],["senttransactionresponse",{"2":{"439":1}}],["sent",{"2":{"148":1,"152":1,"269":1,"333":1,"439":1,"440":2,"449":1,"459":2,"475":1,"502":1}}],["sendnodatastringadditional",{"2":{"458":1}}],["sendnosafeboolwhether",{"2":{"457":1}}],["sendno",{"2":{"456":1}}],["sendpayload",{"2":{"449":1}}],["sendquery",{"2":{"305":3}}],["sendrawtransaction",{"0":{"296":1},"2":{"296":1}}],["sends",{"2":{"186":1,"331":1,"442":1,"447":1}}],["sendmetatxn",{"2":{"185":1}}],["senderc1155values",{"2":{"123":3,"126":2}}],["senderc1155",{"0":{"123":1,"458":1},"1":{"124":1},"2":{"123":1,"126":1}}],["senderc721",{"0":{"121":1,"457":1},"1":{"122":1},"2":{"121":1,"126":1}}],["senderc20",{"0":{"119":1,"456":1},"1":{"120":1},"2":{"119":1,"126":1,"446":1}}],["sendtransactionandwaitforreceipt",{"0":{"318":1},"2":{"303":2,"309":1,"311":1,"318":1,"320":1}}],["sendtransactionmethod",{"2":{"303":1}}],["sendtransactionmethodandwaitforreceipt",{"2":{"303":2,"309":1}}],["sendtransactionbatchandwaitforreceipts",{"0":{"320":1}}],["sendtransactionbatch",{"0":{"319":1},"2":{"270":1,"272":1,"319":1,"503":1,"505":1}}],["sendtransaction",{"0":{"317":1},"2":{"102":1,"117":2,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":2,"186":2,"269":2,"270":1,"271":2,"272":1,"273":2,"317":1,"439":1,"440":2,"447":1,"448":1,"454":2,"459":1,"476":1,"478":1,"488":1,"502":2,"503":1,"504":2,"505":1,"506":2}}],["sending",{"0":{"186":1,"269":1,"270":1,"271":1,"272":1,"273":1,"502":1,"503":1,"504":1,"505":1,"506":1},"2":{"102":1,"117":1,"126":2,"270":2,"272":2,"309":1,"433":1,"438":1,"440":1,"446":1,"503":2,"505":2}}],["send",{"0":{"454":1},"1":{"455":1,"456":1,"457":1,"458":1,"459":1},"2":{"50":1,"52":2,"118":2,"119":1,"120":1,"121":1,"122":1,"123":2,"124":1,"125":1,"134":1,"180":1,"186":1,"270":2,"271":3,"272":2,"303":1,"305":1,"309":1,"434":2,"443":1,"445":1,"452":1,"453":1,"454":1,"468":1,"475":1,"478":1,"503":2,"504":3,"505":2}}],["seamless",{"2":{"54":1,"82":1,"163":1,"165":1,"236":1,"352":1,"355":1,"356":1,"495":1}}],["seamlessly",{"0":{"202":1,"377":1},"1":{"203":1,"378":1},"2":{"20":1,"91":1,"203":1,"378":1}}],["seaman",{"2":{"43":1}}],["sequentially",{"2":{"319":1,"320":1}}],["sequenceonboard",{"2":{"217":2}}],["sequenceoptions",{"2":{"217":1}}],["sequencemodule",{"2":{"217":2}}],["sequencemetadata",{"2":{"25":2,"28":2,"38":2,"39":4}}],["sequencewallet",{"2":{"194":2}}],["sequencewaas",{"2":{"59":2,"361":2,"433":2,"434":2,"435":2,"436":2,"437":2,"439":1,"440":1}}],["sequenceutils",{"2":{"421":1}}],["sequenceui",{"2":{"146":1}}],["sequenceunreal",{"2":{"145":2}}],["sequenceplugin",{"2":{"138":2,"146":4}}],["sequencebackendmanager",{"2":{"133":3}}],["sequencesdk",{"2":{"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":1}}],["sequencecontext",{"2":{"421":1}}],["sequenceconnector",{"2":{"207":2,"225":2,"226":3}}],["sequenceconfig",{"2":{"96":1,"97":1,"99":1,"104":1,"110":4,"283":1}}],["sequencecanvas",{"2":{"115":1}}],["sequenceethclient",{"2":{"283":2,"284":1}}],["sequenceethereum",{"2":{"107":1,"120":1,"122":1,"124":1,"283":1,"304":1,"307":3,"308":1,"312":1,"314":1}}],["sequenceencryptor",{"2":{"139":1}}],["sequenceexamples",{"2":{"93":1,"112":2}}],["sequencekit",{"0":{"90":1},"1":{"91":1},"2":{"165":1,"373":1,"374":1}}],["sequenceindexer",{"2":{"16":2,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2}}],["sequence",{"0":{"11":1,"12":1,"13":1,"51":1,"79":1,"83":1,"84":1,"128":1,"129":1,"131":1,"165":1,"202":1,"238":1,"265":1,"276":1,"277":1,"322":1,"328":1,"351":1,"352":1,"355":1,"377":1,"497":1,"509":1,"510":1},"1":{"12":1,"13":1,"80":1,"84":1,"166":1,"203":1,"239":1,"240":1,"241":1,"242":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"356":1,"378":1,"498":1,"499":1,"500":1,"501":1,"510":1,"511":1,"512":1,"513":1,"514":1,"515":1},"2":{"0":2,"1":2,"3":8,"4":2,"5":1,"6":1,"11":2,"13":1,"14":5,"15":5,"16":3,"17":4,"18":3,"19":6,"20":5,"23":2,"24":2,"25":5,"27":2,"28":2,"29":2,"30":3,"31":3,"32":4,"34":6,"36":1,"37":3,"38":5,"39":10,"41":1,"43":4,"44":1,"47":4,"49":2,"50":5,"51":7,"52":4,"58":2,"59":1,"60":5,"61":1,"63":1,"68":1,"70":2,"77":1,"79":2,"80":2,"81":2,"82":1,"83":1,"84":1,"89":1,"90":1,"91":1,"92":2,"99":5,"104":1,"105":1,"106":1,"107":2,"109":2,"110":2,"113":1,"115":1,"126":2,"128":6,"129":1,"133":1,"138":3,"140":4,"145":3,"146":3,"147":2,"148":1,"150":1,"151":1,"153":1,"154":1,"162":1,"165":1,"166":1,"168":7,"169":6,"171":6,"173":6,"175":7,"177":6,"179":1,"180":5,"182":2,"184":7,"185":1,"186":5,"191":6,"192":2,"197":1,"198":1,"202":1,"203":1,"204":2,"205":2,"210":1,"211":1,"215":2,"216":3,"217":1,"219":1,"220":1,"221":1,"225":1,"226":2,"228":1,"229":1,"231":2,"232":2,"233":1,"235":2,"236":3,"237":4,"240":5,"241":1,"242":5,"243":10,"244":9,"245":1,"255":2,"260":1,"261":1,"264":1,"265":1,"266":6,"267":3,"274":1,"275":1,"279":1,"280":1,"323":1,"328":1,"329":1,"333":1,"335":3,"339":2,"340":2,"341":4,"342":1,"348":1,"350":1,"351":2,"352":4,"353":4,"354":3,"355":3,"356":1,"357":5,"361":1,"362":4,"363":2,"364":3,"367":1,"369":3,"370":4,"371":1,"375":1,"377":1,"378":1,"379":2,"380":3,"386":2,"387":1,"391":1,"398":1,"408":1,"409":1,"410":1,"412":1,"422":1,"423":1,"428":1,"429":1,"430":2,"431":1,"432":1,"433":1,"434":1,"435":8,"439":1,"440":1,"443":1,"449":1,"464":1,"466":1,"472":1,"483":1,"489":1,"490":1,"491":3,"494":2,"495":3,"496":4,"499":5,"500":1,"501":5,"507":1,"508":1,"512":1,"513":1}}],["seqmetadata",{"2":{"25":2,"29":2,"38":2,"39":4}}],["seqindexer",{"2":{"17":2,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1}}],["setunlocksat",{"2":{"490":2,"491":1,"492":1}}],["setupcredentials",{"2":{"146":1}}],["setup",{"0":{"58":1,"59":1,"110":1,"143":1,"146":1,"360":1,"361":1},"2":{"102":1,"104":3,"105":1,"110":1,"111":1,"117":1,"128":2,"133":1,"144":1,"146":2,"158":1,"159":1,"189":1,"357":1,"367":1}}],["seterror",{"2":{"435":3}}],["setbasemetadatauri",{"2":{"331":1,"332":1}}],["setitem",{"2":{"278":1,"511":1}}],["setrelayer",{"2":{"184":1}}],["setprovider",{"2":{"184":1}}],["setopenwalletmodal",{"2":{"88":2}}],["setopenconnectmodal",{"2":{"87":2}}],["setting",{"0":{"85":1,"86":1},"2":{"155":1,"158":1,"188":1,"190":1}}],["settings",{"0":{"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1},"2":{"2":1,"19":1,"64":1,"66":1,"96":4,"97":4,"99":2,"110":1,"138":1,"145":2,"146":1,"244":8,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1}}],["setsigningin",{"2":{"435":1}}],["setsessionhash",{"2":{"435":3}}],["sets",{"2":{"3":1,"128":1,"435":1}}],["set",{"0":{"325":1,"328":1,"332":1},"2":{"2":1,"3":1,"19":1,"43":1,"95":1,"99":3,"115":3,"142":1,"263":1,"328":1,"331":1,"332":1,"386":1,"391":1,"403":1,"422":1,"428":1}}],["seemlessly",{"2":{"126":1}}],["seen",{"2":{"41":1,"45":1,"350":1,"465":1}}],["see",{"2":{"2":1,"14":1,"16":2,"17":2,"21":1,"24":1,"31":1,"32":3,"37":1,"43":3,"44":2,"45":1,"76":1,"77":1,"93":1,"99":2,"101":1,"106":2,"108":1,"118":1,"125":1,"147":2,"148":1,"149":1,"163":1,"168":1,"188":2,"191":3,"199":4,"213":4,"237":1,"242":1,"244":1,"256":1,"264":1,"334":1,"337":1,"341":1,"357":1,"362":1,"369":1,"370":1,"406":1,"433":1,"435":3,"439":1,"440":1,"451":1,"466":1,"496":1,"501":1}}],["security",{"0":{"139":1},"2":{"157":1,"243":2,"342":1,"351":1,"354":2,"363":1,"367":2,"461":1}}],["secured",{"2":{"364":1}}],["secure",{"2":{"90":1,"91":1,"148":1,"202":1,"203":1,"275":2,"351":1,"354":1,"355":1,"363":2,"377":1,"378":1,"469":1,"491":1,"508":2}}],["securely",{"2":{"2":2,"139":2,"335":1,"469":1}}],["secondsno",{"2":{"450":1}}],["secondsnopacket",{"2":{"450":1}}],["seconds",{"2":{"115":1,"249":2}}],["second",{"2":{"32":1,"105":1,"118":1,"433":1}}],["secret",{"2":{"2":3,"3":1,"449":1}}],["section",{"2":{"1":1,"3":1,"43":1,"46":1,"96":1,"97":1,"99":1,"118":1,"155":1,"160":1,"168":1,"199":2,"213":2,"328":1,"331":1,"334":1,"409":1,"410":1,"439":1,"440":1}}]],"serializationVersion":2} +{"documentCount":516,"nextId":516,"documentIds":{"0":"docs/pages/support.mdx#support","1":"docs/pages/api/metadata.mdx#metadata-api","2":"docs/pages/api/metadata.mdx#obtaining-a-service-account--token","3":"docs/pages/api/metadata.mdx#creating-collections-tokens-and-managing-metadata","4":"docs/pages/api/metadata.mdx#pricing--usage","5":"docs/pages/api/node-gateway.mdx#node-gateway","6":"docs/pages/api/node-gateway.mdx#give-it-a-try","7":"docs/pages/solutions/minter.mdx#mint-tokens-using-builder-manually","8":"docs/pages/solutions/minter.mdx#deploy-a-serverless-minter-on-cloudflare-workers","9":"docs/pages/solutions/nft-checkout.mdx#integrate-nft-checkout-on-web-coming-soon","10":"docs/pages/solutions/onramps.mdx#integrate-onramp-on-web","11":"docs/pages/support/restricted-regions.mdx#sequence-list-of-restricted-regions","12":"docs/pages/support/restricted-regions.mdx#us-states-with-limited-access-to-sequence","13":"docs/pages/support/restricted-regions.mdx#sequence-cannot-be-accessed-from-the-following-regions","14":"docs/pages/api/indexer/installation.mdx#indexer-installation","15":"docs/pages/api/indexer/installation.mdx#installation","16":"docs/pages/api/indexer/installation.mdx#web--nodejs-installation","17":"docs/pages/api/indexer/installation.mdx#go-installation","18":"docs/pages/api/indexer/installation.mdx#unity-or-unreal-installation","19":"docs/pages/api/indexer/metadata-tips.mdx#metadata-tips--notes-on-spam","20":"docs/pages/api/indexer/overview.mdx#indexer","21":"docs/pages/api/indexer/overview.mdx#supported-networks--endpoints","22":"docs/pages/api/indexer/overview.mdx#getting-started","23":"docs/pages/api/marketplace/overview.mdx#marketplace-api","24":"docs/pages/api/metadata/contract-metadata.mdx#contract-metadata","25":"docs/pages/api/metadata/contract-metadata.mdx#fetch-contract-metadata-of-any-erc20-erc721-or-erc1155-contract-address","26":"docs/pages/api/metadata/contract-metadata.mdx#contract-level-metadata-standards","27":"docs/pages/api/metadata/overview.mdx#metadata","28":"docs/pages/api/metadata/overview.mdx#web--nodejs-installation","29":"docs/pages/api/metadata/overview.mdx#go-installation","30":"docs/pages/api/metadata/overview.mdx#unity-or-unreal-installation","31":"docs/pages/api/metadata/rest-api.mdx#metadata-rest-api-reference--usage","32":"docs/pages/api/metadata/rest-api.mdx#example","33":"docs/pages/api/metadata/rest-api.mdx#usage","34":"docs/pages/api/metadata/rest-api.mdx#rest-endpoints","35":"docs/pages/api/metadata/rest-api.mdx#rpc-client","36":"docs/pages/api/metadata/rest-api.mdx#metadata-rpc-methods","37":"docs/pages/api/metadata/token-metadata.mdx#token-metadata","38":"docs/pages/api/metadata/token-metadata.mdx#fetch-token-metadata-for-any-erc721-or-erc1155-contract","39":"docs/pages/api/metadata/token-metadata.mdx#refreshing-token-metadata","40":"docs/pages/api/metadata/token-metadata.mdx#testing-instructions","41":"docs/pages/api/metadata/token-metadata.mdx#token-metadata-standards","42":"docs/pages/api/metadata/token-metadata.mdx#metadata-standards","43":"docs/pages/api/metadata/token-metadata.mdx#erc721","44":"docs/pages/api/metadata/token-metadata.mdx#erc1155","45":"docs/pages/api/metadata/token-metadata.mdx#attributes-vs-properties","46":"docs/pages/api/metadata/token-metadata.mdx#erc20","47":"docs/pages/api/relayer/installation.mdx#installation","48":"docs/pages/api/relayer/installation.mdx#web--nodejs-installation","49":"docs/pages/api/relayer/installation.mdx#go-installation","50":"docs/pages/api/relayer/overview.mdx#relayer-api","51":"docs/pages/api/relayer/overview.mdx#anatomy-of-a-sequence-transaction-bundle","52":"docs/pages/api/relayer/overview.mdx#gas-sponsorship-and-fees","53":"docs/pages/guides/templates/template-in-game-wallet.mdx#quickstart","54":"docs/pages/guides/templates/template-in-game-wallet.mdx#try-a-demo","55":"docs/pages/guides/templates/template-in-game-wallet.mdx#template","56":"docs/pages/guides/templates/template-in-game-wallet.mdx#getting-started","57":"docs/pages/guides/templates/template-in-game-wallet.mdx#sdk-installation","58":"docs/pages/guides/templates/template-in-game-wallet.mdx#project-setup","59":"docs/pages/guides/templates/template-in-game-wallet.mdx#library-setup","60":"docs/pages/sdk/go/overview.mdx#go","61":"docs/pages/sdk/go/overview.mdx#ethkit","62":"docs/pages/sdk/sequence-kit/checkout.mdx#overview","63":"docs/pages/sdk/sequence-kit/checkout.mdx#integration","64":"docs/pages/sdk/sequence-kit/checkout.mdx#opening-the-checkout-modal","65":"docs/pages/sdk/sequence-kit/checkout.mdx#configuring-the-checkout-modal","66":"docs/pages/sdk/sequence-kit/checkout.mdx#crypto-checkout-configuration-cryptocheckout","67":"docs/pages/sdk/sequence-kit/checkout.mdx#order-summary-configuration-ordersummaryitems","68":"docs/pages/sdk/sequence-kit/configuration.mdx#configuration-options","69":"docs/pages/sdk/sequence-kit/configuration.mdx#available-options","70":"docs/pages/sdk/sequence-kit/configuration.mdx#defaulttheme","71":"docs/pages/sdk/sequence-kit/configuration.mdx#position","72":"docs/pages/sdk/sequence-kit/configuration.mdx#sign-in-modal-configuration-signin","73":"docs/pages/sdk/sequence-kit/configuration.mdx#signinlogourl","74":"docs/pages/sdk/sequence-kit/configuration.mdx#signinprojectname","75":"docs/pages/sdk/sequence-kit/configuration.mdx#signinshowemailinput","76":"docs/pages/sdk/sequence-kit/configuration.mdx#signinsocialauthoptions","77":"docs/pages/sdk/sequence-kit/configuration.mdx#signinwalletauthoptions","78":"docs/pages/sdk/sequence-kit/configuration.mdx#displayedassets","79":"docs/pages/sdk/sequence-kit/custom-connectors.mdx#custom-connectors-in-sequence-kit","80":"docs/pages/sdk/sequence-kit/custom-connectors.mdx#creating-a-custom-connector","81":"docs/pages/sdk/sequence-kit/custom-connectors.mdx#using-custom-connectors","82":"docs/pages/sdk/sequence-kit/custom-connectors.mdx#share-your-custom-connectors","83":"docs/pages/sdk/sequence-kit/getting-started.mdx#getting-started-with-sequence-kit","84":"docs/pages/sdk/sequence-kit/getting-started.mdx#installing-sequence-kit-packages","85":"docs/pages/sdk/sequence-kit/getting-started.mdx#setting-up-the-kit-wrapper","86":"docs/pages/sdk/sequence-kit/getting-started.mdx#setting-up-the-embedded-wallet-wrapper","87":"docs/pages/sdk/sequence-kit/getting-started.mdx#triggering-the-connect-modal","88":"docs/pages/sdk/sequence-kit/getting-started.mdx#invoking-the-embedded-wallet-modal","89":"docs/pages/sdk/sequence-kit/getting-started.mdx#react-example","90":"docs/pages/sdk/sequence-kit/overview.mdx#sequencekit-sdk","91":"docs/pages/sdk/sequence-kit/overview.mdx#key-features","92":"docs/pages/sdk/sequence-kit/overview.mdx#next-steps","93":"docs/pages/sdk/unity/authentication.mdx#authentication","94":"docs/pages/sdk/unity/authentication.mdx#1-email-sign-in","95":"docs/pages/sdk/unity/authentication.mdx#2-social-sign-in","96":"docs/pages/sdk/unity/authentication.mdx#ios","97":"docs/pages/sdk/unity/authentication.mdx#macos","98":"docs/pages/sdk/unity/authentication.mdx#pc","99":"docs/pages/sdk/unity/authentication.mdx#android","100":"docs/pages/sdk/unity/authentication.mdx#webgl","101":"docs/pages/sdk/unity/authentication.mdx#connecting-with-waas","102":"docs/pages/sdk/unity/deploy-contracts.mdx#contract-deployment","103":"docs/pages/sdk/unity/installation.mdx#installation","104":"docs/pages/sdk/unity/installation.mdx#package-manager---recommended","105":"docs/pages/sdk/unity/installation.mdx#samples","106":"docs/pages/sdk/unity/installation.mdx#manual","107":"docs/pages/sdk/unity/overview.mdx#introduction","108":"docs/pages/sdk/unity/overview.mdx#requirements","109":"docs/pages/sdk/unity/read-from-blockchain.mdx#read-from-blockchain","110":"docs/pages/sdk/unity/setup.mdx#setup","111":"docs/pages/sdk/unity/sign-messages.mdx#sign-messages","112":"docs/pages/sdk/unity/wallet-ui.mdx#wallet-ui","113":"docs/pages/sdk/unity/wallet-ui.mdx#how-it-works","114":"docs/pages/sdk/unity/wallet-ui.mdx#ui-customizability","115":"docs/pages/sdk/unity/wallet-ui.mdx#color-scheme-manager","116":"docs/pages/sdk/unity/wallet-ui.mdx#more-customization-tools-coming-soon","117":"docs/pages/sdk/unity/write-to-blockchain.mdx#write-to-blockchain","118":"docs/pages/sdk/unity/write-to-blockchain.mdx#rawtransaction","119":"docs/pages/sdk/unity/write-to-blockchain.mdx#senderc20","120":"docs/pages/sdk/unity/write-to-blockchain.mdx#complex-erc20-interactions","121":"docs/pages/sdk/unity/write-to-blockchain.mdx#senderc721","122":"docs/pages/sdk/unity/write-to-blockchain.mdx#complex-erc721-interactions","123":"docs/pages/sdk/unity/write-to-blockchain.mdx#senderc1155","124":"docs/pages/sdk/unity/write-to-blockchain.mdx#complex-erc1155-interactions","125":"docs/pages/sdk/unity/write-to-blockchain.mdx#delayedencode","126":"docs/pages/sdk/unity/write-to-blockchain.mdx#batch-transactions","127":"docs/pages/sdk/unreal/api-integration.mdx#api-integration","128":"docs/pages/sdk/unreal/api-integration.mdx#sequence-api","129":"docs/pages/sdk/unreal/api-integration.mdx#sequence-unreal-api","130":"docs/pages/sdk/unreal/api-integration.mdx#usequencewallet","131":"docs/pages/sdk/unreal/api-integration.mdx#sequence-api-methods","132":"docs/pages/sdk/unreal/authentication.mdx#authentication","133":"docs/pages/sdk/unreal/authentication.mdx#custom-ui-integration","134":"docs/pages/sdk/unreal/authentication.mdx#email-based-authentication","135":"docs/pages/sdk/unreal/authentication.mdx#social-signin-based-authentication-on-desktop","136":"docs/pages/sdk/unreal/authentication.mdx#social-signin-based-authentication-on-mobile","137":"docs/pages/sdk/unreal/installation.mdx#installation","138":"docs/pages/sdk/unreal/installation.mdx#credentials","139":"docs/pages/sdk/unreal/installation.mdx#security","140":"docs/pages/sdk/unreal/overview.mdx#introduction","141":"docs/pages/sdk/unreal/overview.mdx#requirements","142":"docs/pages/sdk/unreal/packaging.mdx#packaging","143":"docs/pages/sdk/unreal/packaging.mdx#google-sso-setup","144":"docs/pages/sdk/unreal/packaging.mdx#ios","145":"docs/pages/sdk/unreal/packaging.mdx#unreal-and-xcode-specifics","146":"docs/pages/sdk/unreal/setup.mdx#setup","147":"docs/pages/solutions/builder/analytics.mdx#analytics-in-builder","148":"docs/pages/solutions/builder/analytics.mdx#how-it-works","149":"docs/pages/solutions/builder/analytics.mdx#overview","150":"docs/pages/solutions/builder/analytics.mdx#wallets-connected","151":"docs/pages/solutions/builder/analytics.mdx#marketplace-transactions","152":"docs/pages/solutions/builder/analytics.mdx#transaction-requests","153":"docs/pages/solutions/builder/embedded-wallet.mdx#embedded-wallet-in-builder","154":"docs/pages/solutions/builder/embedded-wallet.mdx#login-providers","155":"docs/pages/solutions/builder/embedded-wallet.mdx#google-auth","156":"docs/pages/solutions/builder/embedded-wallet.mdx#apple-auth","157":"docs/pages/solutions/builder/embedded-wallet.mdx#allowed-origins","158":"docs/pages/solutions/builder/embedded-wallet.mdx#recovery-wallet","159":"docs/pages/solutions/builder/embedded-wallet.mdx#initial-configuration-and-update-code","160":"docs/pages/solutions/builder/embedded-wallet.mdx#configuration-changes","161":"docs/pages/solutions/builder/embedded-wallet.mdx#sdk-integrations","162":"docs/pages/solutions/marketplaces/overview.mdx#marketplaces-overview","163":"docs/pages/solutions/marketplaces/overview.mdx#what-are-the-differences-between-these-options","164":"docs/pages/solutions/marketplaces/overview.mdx#getting-started","165":"docs/pages/solutions/wallets/overview.mdx#sequence-wallets-overview","166":"docs/pages/solutions/wallets/overview.mdx#getting-started","167":"docs/pages/api/indexer/examples/fetch-tokens.mdx#tokens-api","168":"docs/pages/api/indexer/examples/fetch-tokens.mdx#fetches-list-of-erc20-erc721-and-erc1155-tokens-and-metadata-in-any-wallet","169":"docs/pages/api/indexer/examples/fetch-tokens.mdx#fetch-token-ids-balances-and-metadata-of-erc721-and-erc1155-collections","170":"docs/pages/api/indexer/examples/native-network-balance.mdx#native-network-balances-ie-eth-matic-etc","171":"docs/pages/api/indexer/examples/native-network-balance.mdx#fetch-native-network-balance-aka-eth-on-ethereum-matic-on-polygon-avax-on-avalanche-bnb-on-bsc-etc","172":"docs/pages/api/indexer/examples/transaction-history.mdx#wallet-transaction-history","173":"docs/pages/api/indexer/examples/transaction-history.mdx#fetch-the-transaction-history-for-any-wallet-address","174":"docs/pages/api/indexer/examples/transation-history-token-contract.mdx#contract-token-history","175":"docs/pages/api/indexer/examples/transation-history-token-contract.mdx#fetch--listen-to-the-transaction-history-for-any-erc20-erc721-erc1155-contract","176":"docs/pages/api/indexer/examples/unique-tokens.mdx#tokens-in-a-contract","177":"docs/pages/api/indexer/examples/unique-tokens.mdx#fetch-all-unique-tokens-in-a-particular-erc207211155-contract-including-total-supplies","178":"docs/pages/api/indexer/examples/webhook-listener.mdx#webhook","179":"docs/pages/api/indexer/examples/webhook-listener.mdx#listen-to-blockchain-events-with-webhooks","180":"docs/pages/api/indexer/examples/webhook-listener.mdx#registering-a-webhook","181":"docs/pages/api/marketplace/examples/get-user-activities.mdx#getuseractivities","182":"docs/pages/api/marketplace/examples/get-user-activities.mdx#example","183":"docs/pages/api/marketplace/examples/get-user-activities.mdx#schema","184":"docs/pages/api/relayer/examples/fetch-fee-options.mdx#fetching-fee-options","185":"docs/pages/api/relayer/examples/fetch-transaction-receipts.mdx#fetching-transaction-receipts","186":"docs/pages/api/relayer/examples/send-transactions.mdx#sending-transactions","187":"docs/pages/sdk/typescript/connectors/FAQ.mdx#nextjs","188":"docs/pages/sdk/typescript/connectors/FAQ.mdx#why-does-my-wallet-integration-produce-an-error-when-used-with-nextjs","189":"docs/pages/sdk/typescript/connectors/FAQ.mdx#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-pages-directory-all-versions-of-nextjs","190":"docs/pages/sdk/typescript/connectors/FAQ.mdx#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-app-directory-version-13-and-above-only","191":"docs/pages/sdk/typescript/connectors/overview.mdx#wallet-connectors","192":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#using-rainbowkit","193":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#installation","194":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#usage","195":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#parameters","196":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#chains","197":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#connect-optional","198":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#defaultnetwork-optional","199":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#using-nextjs","200":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#using-older-versions-of-wagmi--012x","201":"docs/pages/sdk/typescript/connectors/rainbow-kit.mdx#examples","202":"docs/pages/sdk/typescript/connectors/sequence-kit.mdx#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","203":"docs/pages/sdk/typescript/connectors/sequence-kit.mdx#key-features","204":"docs/pages/sdk/typescript/connectors/sequence-kit.mdx#next-steps","205":"docs/pages/sdk/typescript/connectors/wagmi.mdx#using-wagmi","206":"docs/pages/sdk/typescript/connectors/wagmi.mdx#installation","207":"docs/pages/sdk/typescript/connectors/wagmi.mdx#usage","208":"docs/pages/sdk/typescript/connectors/wagmi.mdx#parameters","209":"docs/pages/sdk/typescript/connectors/wagmi.mdx#chains","210":"docs/pages/sdk/typescript/connectors/wagmi.mdx#optionsconnect-optional","211":"docs/pages/sdk/typescript/connectors/wagmi.mdx#optionsdefaultnetwork-optional","212":"docs/pages/sdk/typescript/connectors/wagmi.mdx#using-older-versions-of-wagmi--012x","213":"docs/pages/sdk/typescript/connectors/wagmi.mdx#using-nextjs","214":"docs/pages/sdk/typescript/connectors/wagmi.mdx#examples","215":"docs/pages/sdk/typescript/connectors/web3-onboard.mdx#using-web3-onboard","216":"docs/pages/sdk/typescript/connectors/web3-onboard.mdx#installation","217":"docs/pages/sdk/typescript/connectors/web3-onboard.mdx#usage","218":"docs/pages/sdk/typescript/connectors/web3-onboard.mdx#parameters","219":"docs/pages/sdk/typescript/connectors/web3-onboard.mdx#network-optional","220":"docs/pages/sdk/typescript/connectors/web3-onboard.mdx#appname-optional","221":"docs/pages/sdk/typescript/connectors/web3-onboard.mdx#example","222":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#using-web3-react-v6","223":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#installation","224":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#usage","225":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#initialization","226":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#activationdeactivation","227":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#options","228":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#chainid","229":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#appname-optional","230":"docs/pages/sdk/typescript/connectors/web3-react-v6.mdx#example","231":"docs/pages/sdk/typescript/connectors/web3modal.mdx#using-web3modal","232":"docs/pages/sdk/typescript/connectors/web3modal.mdx#usage","233":"docs/pages/sdk/typescript/connectors/web3modal.mdx#example","234":"docs/pages/sdk/typescript/guides/auth-address.mdx#authenticate-users-with-message-signature","235":"docs/pages/sdk/typescript/guides/auth-address.mdx#ask-for-the-wallet-address","236":"docs/pages/sdk/typescript/guides/auth-address.mdx#authenticate-wallet","237":"docs/pages/sdk/typescript/guides/auth-address.mdx#authenticate-wallet-server-side","238":"docs/pages/sdk/typescript/guides/building-backends.mdx#building-backends-with-sequence","239":"docs/pages/sdk/typescript/guides/building-backends.mdx#nodejs","240":"docs/pages/sdk/typescript/guides/building-backends.mdx#go","241":"docs/pages/sdk/typescript/guides/building-backends.mdx#ethkit","242":"docs/pages/sdk/typescript/guides/building-backends.mdx#support-for-other-backend-languages","243":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#connect-wallet","244":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#connecting-your-dapp-with-0xsequence","245":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#wallet-login-and-connect-options","246":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#app","247":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#appprotocol","248":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#origin","249":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#expiry","250":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#authorize","251":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#authorizenonce","252":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#refresh","253":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#keepwalletopened","254":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#askforemail","255":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingstheme","256":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingsbannerurl","257":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingssigninwith","258":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingssigninwithemail","259":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingssigninoptions","260":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingsincludedpaymentproviders","261":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingsdefaultfundingcurrency","262":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingsdefaultpurchaseamount","263":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#settingslockfundingcurrencytodefault","264":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#connecting-your-dapp-with-web3js-or-ethersjs","265":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#connecting-to-any-ethereum-dapp-with-the-sequence-wallet-chrome-extension","266":"docs/pages/sdk/typescript/guides/connect-wallet.mdx#connecting-via-walletconnect","267":"docs/pages/sdk/typescript/guides/overview.mdx#install","268":"docs/pages/sdk/typescript/guides/overview.mdx#cdn-distribution-as-native-js","269":"docs/pages/sdk/typescript/guides/send-batch-transactions.mdx#sending-a-batch-of-transactions","270":"docs/pages/sdk/typescript/guides/send-erc1155.mdx#sending-erc-1155-collectible-tokens","271":"docs/pages/sdk/typescript/guides/send-erc20.mdx#sending-erc-20-tokens","272":"docs/pages/sdk/typescript/guides/send-erc721.mdx#sending-erc-721-nft-tokens","273":"docs/pages/sdk/typescript/guides/send-transaction.mdx#sending-transactions","274":"docs/pages/sdk/typescript/guides/session-keys.mdx#no-wallet-confirmation-signatures","275":"docs/pages/sdk/typescript/guides/session-keys.mdx#session-keys","276":"docs/pages/sdk/typescript/guides/session-keys.mdx#using-session-keys-with-sequence","277":"docs/pages/sdk/typescript/guides/session-keys.mdx#1-initialize-sequence-wallet-and-connect","278":"docs/pages/sdk/typescript/guides/session-keys.mdx#2-generate-a-session-key","279":"docs/pages/sdk/typescript/guides/session-keys.mdx#3-sign-authorization-message","280":"docs/pages/sdk/typescript/guides/session-keys.mdx#4-verify-authorization-signature","281":"docs/pages/sdk/typescript/guides/session-keys.mdx#5-sign-message-with-session-key","282":"docs/pages/sdk/typescript/guides/session-keys.mdx#6-verify-session-signature","283":"docs/pages/sdk/unity/Advanced/clients.mdx#clients","284":"docs/pages/sdk/unity/Advanced/clients.mdx#methods","285":"docs/pages/sdk/unity/Advanced/clients.mdx#balanceat","286":"docs/pages/sdk/unity/Advanced/clients.mdx#blockbynumber","287":"docs/pages/sdk/unity/Advanced/clients.mdx#blockbyhash","288":"docs/pages/sdk/unity/Advanced/clients.mdx#blocknumber","289":"docs/pages/sdk/unity/Advanced/clients.mdx#blockrange","290":"docs/pages/sdk/unity/Advanced/clients.mdx#chainid","291":"docs/pages/sdk/unity/Advanced/clients.mdx#codeat","292":"docs/pages/sdk/unity/Advanced/clients.mdx#estimategas","293":"docs/pages/sdk/unity/Advanced/clients.mdx#feehistory","294":"docs/pages/sdk/unity/Advanced/clients.mdx#networkid","295":"docs/pages/sdk/unity/Advanced/clients.mdx#nonceat","296":"docs/pages/sdk/unity/Advanced/clients.mdx#sendrawtransaction","297":"docs/pages/sdk/unity/Advanced/clients.mdx#suggestgasprice","298":"docs/pages/sdk/unity/Advanced/clients.mdx#suggestgastipcap","299":"docs/pages/sdk/unity/Advanced/clients.mdx#transactionbyhash","300":"docs/pages/sdk/unity/Advanced/clients.mdx#transactioncount","301":"docs/pages/sdk/unity/Advanced/clients.mdx#waitfortransactionreceipt","302":"docs/pages/sdk/unity/Advanced/contracts.mdx#contracts","303":"docs/pages/sdk/unity/Advanced/contracts.mdx#calling-smart-contract-functions","304":"docs/pages/sdk/unity/Advanced/contracts.mdx#understanding-data-type-mappings","305":"docs/pages/sdk/unity/Advanced/contracts.mdx#querying-contracts","306":"docs/pages/sdk/unity/Advanced/contracts.mdx#deploying-contracts","307":"docs/pages/sdk/unity/Advanced/introduction.mdx#advanced---introduction","308":"docs/pages/sdk/unity/Advanced/introduction.mdx#important-components","309":"docs/pages/sdk/unity/Advanced/tokens.mdx#tokens","310":"docs/pages/sdk/unity/Advanced/tokens.mdx#bonus-ownable","311":"docs/pages/sdk/unity/Advanced/transfers.mdx#transfers","312":"docs/pages/sdk/unity/Advanced/wallets.mdx#wallets","313":"docs/pages/sdk/unity/Advanced/wallets.mdx#1-ethwallet","314":"docs/pages/sdk/unity/Advanced/wallets.mdx#2-waastowalletadapter","315":"docs/pages/sdk/unity/Advanced/wallets.mdx#methods","316":"docs/pages/sdk/unity/Advanced/wallets.mdx#getaddress","317":"docs/pages/sdk/unity/Advanced/wallets.mdx#sendtransaction","318":"docs/pages/sdk/unity/Advanced/wallets.mdx#sendtransactionandwaitforreceipt","319":"docs/pages/sdk/unity/Advanced/wallets.mdx#sendtransactionbatch","320":"docs/pages/sdk/unity/Advanced/wallets.mdx#sendtransactionbatchandwaitforreceipts","321":"docs/pages/sdk/unity/Advanced/wallets.mdx#signmessage","322":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#how-to-manage-item-metadata-in-sequence-builder","323":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#introduction","324":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-1-prepare-your-token-images-and-metadata","325":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-2-set-up-on-pinatacloud","326":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-3-upload-your-metadata-files","327":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-4-get-the-folder-url","328":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-5-set-up-on-sequence-builder","329":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-6-deploy-your-contract","330":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-7-move-to-contract-details","331":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-8-update-contract-attributes","332":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-9-set-the-base-metadata-uri","333":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-10-minting-time","334":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-11-finalize-and-admire","335":"docs/pages/solutions/collectibles/metadata/manage-metadata-builder.mdx#step-12-updating-metadata","336":"docs/pages/solutions/marketplaces/orderbook/quickstart.mdx#quickstart","337":"docs/pages/solutions/marketplaces/orderbook/quickstart.mdx#try-a-demo","338":"docs/pages/solutions/marketplaces/orderbook/quickstart.mdx#template","339":"docs/pages/solutions/marketplaces/orderbook/quickstart.mdx#example-api-call","340":"docs/pages/solutions/marketplaces/orderbook/quickstart.mdx#walkthrough","341":"docs/pages/solutions/payments/onramps/fiat-on-ramps.mdx#fiat-on-ramps","342":"docs/pages/solutions/technical-references/wallet-contracts/why.mdx#why-smart-contracts-wallets","343":"docs/pages/solutions/technical-references/wallet-contracts/why.mdx#externally-owned-accounts","344":"docs/pages/solutions/technical-references/wallet-contracts/why.mdx#pros","345":"docs/pages/solutions/technical-references/wallet-contracts/why.mdx#popular-examples","346":"docs/pages/solutions/technical-references/wallet-contracts/why.mdx#smart-contract-wallets","347":"docs/pages/solutions/technical-references/wallet-contracts/why.mdx#pros-1","348":"docs/pages/solutions/technical-references/wallet-contracts/why.mdx#examples","349":"docs/pages/solutions/wallets/embedded-wallet/architecture.mdx#overview","350":"docs/pages/solutions/wallets/embedded-wallet/architecture.mdx#embedded-wallets-architecture","351":"docs/pages/solutions/wallets/embedded-wallet/architecture.mdx#signer-1-sequence-auth","352":"docs/pages/solutions/wallets/embedded-wallet/architecture.mdx#signer-2-sequence-guard","353":"docs/pages/solutions/wallets/embedded-wallet/architecture.mdx#threat-model","354":"docs/pages/solutions/wallets/embedded-wallet/architecture.mdx#waas-api-service","355":"docs/pages/solutions/wallets/embedded-wallet/overview.mdx#sequence-embedded-wallet","356":"docs/pages/solutions/wallets/embedded-wallet/overview.mdx#try-a-demo","357":"docs/pages/solutions/wallets/embedded-wallet/quickstart.mdx#quickstart","358":"docs/pages/solutions/wallets/embedded-wallet/quickstart.mdx#getting-started-with-typescript-sdk","359":"docs/pages/solutions/wallets/embedded-wallet/quickstart.mdx#sdk-installation","360":"docs/pages/solutions/wallets/embedded-wallet/quickstart.mdx#project-setup","361":"docs/pages/solutions/wallets/embedded-wallet/quickstart.mdx#library-setup","362":"docs/pages/solutions/wallets/universal-wallet/fiat-on-ramps.mdx#fiat-on-ramps","363":"docs/pages/solutions/wallets/universal-wallet/key-management.mdx#key-management","364":"docs/pages/solutions/wallets/universal-wallet/key-management.mdx#social-login-wallets","365":"docs/pages/solutions/wallets/universal-wallet/key-management.mdx#session-keys","366":"docs/pages/solutions/wallets/universal-wallet/key-management.mdx#guard-key","367":"docs/pages/solutions/wallets/universal-wallet/key-management.mdx#torus-key","368":"docs/pages/solutions/wallets/universal-wallet/platforms.mdx#platforms","369":"docs/pages/solutions/wallets/universal-wallet/platforms.mdx#web-wallet","370":"docs/pages/solutions/wallets/universal-wallet/platforms.mdx#mobile-wallet","371":"docs/pages/solutions/wallets/universal-wallet/platforms.mdx#browser-extension-wallet","372":"docs/pages/solutions/wallets/universal-wallet/quickstart.mdx#quickstart","373":"docs/pages/solutions/wallets/universal-wallet/quickstart.mdx#try-a-demo","374":"docs/pages/solutions/wallets/universal-wallet/quickstart.mdx#template","375":"docs/pages/solutions/wallets/universal-wallet/quickstart.mdx#install","376":"docs/pages/solutions/wallets/universal-wallet/quickstart.mdx#cdn-distribution-as-native-js","377":"docs/pages/solutions/wallets/universal-wallet/sequence-kit.mdx#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","378":"docs/pages/solutions/wallets/universal-wallet/sequence-kit.mdx#key-features","379":"docs/pages/solutions/wallets/universal-wallet/sequence-kit.mdx#next-steps","380":"docs/pages/solutions/technical-references/internals/v1/contract-audits.mdx#contract-audits","381":"docs/pages/solutions/technical-references/internals/v1/contract-audits.mdx#quantstamp","382":"docs/pages/solutions/technical-references/internals/v1/contract-audits.mdx#consensys-diligence","383":"docs/pages/solutions/technical-references/internals/v1/contract-audits.mdx#zellic","384":"docs/pages/solutions/technical-references/internals/v1/guest-module.mdx#guestmodule-and-on-demand-deployment","385":"docs/pages/solutions/technical-references/internals/v1/main-module-upgradeable.mdx#mainmoduleupgradeable--configuration-migration","386":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#modules--wallet-update","387":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#wallet-implementation","388":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#_updateconfiguration","389":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#parameters","390":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#reading-current-implementation","391":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#wallet-configuration-validation","392":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#_isvalidimage","393":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#parameters-1","394":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#return-values","395":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#mainmoduleupgradeable","396":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#updateimagehash","397":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#parameters-2","398":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#first-configuration-update","399":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#delegatecall-false","400":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#revertonerror-true","401":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#to-wallet","402":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#value-ethersconstantszero","403":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#gaslimit-ethersconstantszero","404":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#subsequent-configuration-updates","405":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#retrieving-the-current-configuration","406":"docs/pages/solutions/technical-references/internals/v1/modules-and-updates.mdx#retrieving-the-wallet-configuration","407":"docs/pages/solutions/technical-references/internals/v1/nested-transaction-batching.mdx#nested-transaction-batching","408":"docs/pages/solutions/technical-references/internals/v1/signature-encoding.mdx#signature-encoding","409":"docs/pages/solutions/technical-references/internals/v1/signature-encoding.mdx#erc-191-ethereum-signed-data","410":"docs/pages/solutions/technical-references/internals/v1/signature-encoding.mdx#erc-712-structured-data-signatures","411":"docs/pages/solutions/technical-references/internals/v1/signature-encoding.mdx#verification","412":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#wallet-configuration","413":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#configuration-layout","414":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#signer-layout","415":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#example","416":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#the-valid-combinations-of-signers-are","417":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#configuration-hash---imagehash","418":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#compute-image-hash","419":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#initial-wallet-configuration","420":"docs/pages/solutions/technical-references/internals/v1/wallet-configuration.mdx#compute-wallet-address","421":"docs/pages/solutions/technical-references/internals/v1/wallet-context.mdx#wallet-context","422":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#wallet-configuration","423":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#top-level-properties","424":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#threshold","425":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#checkpoint","426":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#tree","427":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#signer","428":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#subdigest","429":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#subtree-nested-configuration","430":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#imagehash","431":"docs/pages/solutions/technical-references/internals/v2/configuration.mdx#initial-configuration","432":"docs/pages/solutions/wallets/embedded-wallet/examples/manage-sessions.mdx#session-management","433":"docs/pages/solutions/wallets/embedded-wallet/examples/manage-sessions.mdx#sign-in--sign-up","434":"docs/pages/solutions/wallets/embedded-wallet/examples/manage-sessions.mdx#email-sign-in--sign-up","435":"docs/pages/solutions/wallets/embedded-wallet/examples/manage-sessions.mdx#google--apple-auth","436":"docs/pages/solutions/wallets/embedded-wallet/examples/manage-sessions.mdx#list-sessions","437":"docs/pages/solutions/wallets/embedded-wallet/examples/manage-sessions.mdx#close-session","438":"docs/pages/solutions/wallets/embedded-wallet/examples/transaction-receipts.mdx#transaction-receipts","439":"docs/pages/solutions/wallets/embedded-wallet/examples/transaction-receipts.mdx#successful-transaction-response","440":"docs/pages/solutions/wallets/embedded-wallet/examples/transaction-receipts.mdx#failed-transaction-response","441":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#validation","442":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#email-login-one-time-code","443":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#social-login","444":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#validation-status","445":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#trigger-session-validation","446":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#onvalidationrequired-callback","447":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#listen-for-session-validations","448":"docs/pages/solutions/wallets/embedded-wallet/examples/validation.mdx#automatic-session-validation","449":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#action-payloads","450":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#payload-structure","451":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#signature-type","452":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#open-session-payload","453":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#sign-message-payload","454":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#send-transaction-payload","455":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#raw-transaction","456":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#senderc20","457":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#senderc721","458":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#senderc1155","459":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#delayedencode","460":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx#close-session-payload","461":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx#enclave-verification","462":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx#the-easy-way","463":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx#prerequisites","464":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx#find-out-the-pcr0","465":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx#build-the-enclave-file","466":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx#the-hard-way","467":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/intents.mdx#intents","468":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/intents.mdx#what-are-they","469":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/intents.mdx#signatures","470":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/intents.mdx#name-and-data","471":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/intents.mdx#timestamps","472":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#response-payloads","473":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#general-response-structure","474":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#types-of-responses","475":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#transaction-receipt-response","476":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#example","477":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#how-to-detect","478":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#failed-transaction-response","479":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#how-to-detect-1","480":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#signed-message-response","481":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#example-1","482":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#how-to-detect-2","483":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#session-opened-response","484":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#example-2","485":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#how-to-detect-3","486":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#validation-required-response","487":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#how-to-detect-4","488":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx#note","489":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow.mdx#trust-contract-recovery-flow","490":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow.mdx#trust-contract-architecture","491":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow.mdx#unlock-state-monitoring","492":"docs/pages/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow.mdx#disaster-recovery-flow","493":"docs/pages/solutions/wallets/universal-wallet/examples/auth-address.mdx#authenticate-users-with-message-signature","494":"docs/pages/solutions/wallets/universal-wallet/examples/auth-address.mdx#ask-for-the-wallet-address","495":"docs/pages/solutions/wallets/universal-wallet/examples/auth-address.mdx#authenticate-wallet","496":"docs/pages/solutions/wallets/universal-wallet/examples/auth-address.mdx#authenticate-wallet-server-side","497":"docs/pages/solutions/wallets/universal-wallet/examples/building-backends.mdx#building-backends-with-sequence","498":"docs/pages/solutions/wallets/universal-wallet/examples/building-backends.mdx#nodejs","499":"docs/pages/solutions/wallets/universal-wallet/examples/building-backends.mdx#go","500":"docs/pages/solutions/wallets/universal-wallet/examples/building-backends.mdx#ethkit","501":"docs/pages/solutions/wallets/universal-wallet/examples/building-backends.mdx#support-for-other-backend-languages","502":"docs/pages/solutions/wallets/universal-wallet/examples/send-batch-transactions.mdx#sending-a-batch-of-transactions","503":"docs/pages/solutions/wallets/universal-wallet/examples/send-erc1155.mdx#sending-erc-1155-collectible-tokens","504":"docs/pages/solutions/wallets/universal-wallet/examples/send-erc20.mdx#sending-erc-20-tokens","505":"docs/pages/solutions/wallets/universal-wallet/examples/send-erc721.mdx#sending-erc-721-nft-tokens","506":"docs/pages/solutions/wallets/universal-wallet/examples/send-transaction.mdx#sending-transactions","507":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#no-wallet-confirmation-signatures","508":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#session-keys","509":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#using-session-keys-with-sequence","510":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#1-initialize-sequence-wallet-and-connect","511":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#2-generate-a-session-key","512":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#3-sign-authorization-message","513":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#4-verify-authorization-signature","514":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#5-sign-message-with-session-key","515":"docs/pages/solutions/wallets/universal-wallet/examples/session-keys.mdx#6-verify-session-signature"},"fieldIds":{"title":0,"titles":1,"text":2},"fieldLength":{"0":[1,1,58],"1":[2,1,48],"2":[6,2,100],"3":[6,2,147],"4":[3,2,22],"5":[2,1,46],"6":[4,2,76],"7":[5,1,1],"8":[7,1,1],"9":[8,1,1],"10":[4,1,1],"11":[5,1,73],"12":[7,5,12],"13":[9,5,82],"14":[2,1,56],"15":[1,2,105],"16":[4,2,69],"17":[2,2,63],"18":[4,2,15],"19":[6,1,144],"20":[1,1,191],"21":[4,1,11],"22":[2,1,53],"23":[2,1,46],"24":[2,1,37],"25":[10,2,115],"26":[4,2,14],"27":[1,1,35],"28":[4,2,41],"29":[2,2,28],"30":[4,2,15],"31":[6,1,81],"32":[1,6,176],"33":[1,6,35],"34":[2,6,45],"35":[2,6,49],"36":[3,6,31],"37":[2,1,44],"38":[9,2,114],"39":[3,2,142],"40":[3,5,19],"41":[3,2,57],"42":[2,2,1],"43":[1,3,164],"44":[1,3,144],"45":[3,3,82],"46":[1,3,55],"47":[1,1,79],"48":[4,2,9],"49":[2,2,17],"50":[2,1,124],"51":[6,2,61],"52":[4,2,144],"53":[1,1,1],"54":[3,1,12],"55":[1,1,12],"56":[2,1,1],"57":[2,3,29],"58":[2,3,41],"59":[2,3,62],"60":[1,1,33],"61":[1,1,36],"62":[1,1,11],"63":[1,1,46],"64":[4,1,30],"65":[4,1,12],"66":[5,5,39],"67":[5,5,22],"68":[2,1,38],"69":[2,1,1],"70":[1,2,40],"71":[1,2,22],"72":[6,2,12],"73":[2,8,12],"74":[2,8,12],"75":[2,8,14],"76":[2,8,48],"77":[2,8,48],"78":[1,2,39],"79":[5,1,30],"80":[4,5,89],"81":[3,1,85],"82":[4,1,34],"83":[5,1,23],"84":[4,5,48],"85":[5,1,83],"86":[6,1,73],"87":[4,1,46],"88":[5,1,26],"89":[2,1,18],"90":[2,1,40],"91":[2,2,79],"92":[2,1,33],"93":[1,1,112],"94":[4,1,46],"95":[4,1,70],"96":[1,5,41],"97":[1,5,43],"98":[1,5,5],"99":[1,5,155],"100":[1,5,3],"101":[3,1,91],"102":[2,1,139],"103":[1,1,1],"104":[3,1,95],"105":[1,4,145],"106":[1,1,137],"107":[1,1,67],"108":[1,1,48],"109":[3,1,54],"110":[1,1,102],"111":[2,1,76],"112":[2,1,93],"113":[3,2,12],"114":[2,2,25],"115":[3,3,118],"116":[5,3,46],"117":[3,1,104],"118":[1,3,103],"119":[1,3,87],"120":[3,4,94],"121":[1,3,53],"122":[3,4,92],"123":[1,3,76],"124":[3,4,93],"125":[1,3,190],"126":[2,3,119],"127":[2,1,1],"128":[2,3,135],"129":[3,3,51],"130":[1,3,72],"131":[3,3,83],"132":[1,1,1],"133":[3,2,160],"134":[3,2,67],"135":[6,2,50],"136":[6,2,2],"137":[1,1,1],"138":[1,1,46],"139":[1,1,47],"140":[1,1,70],"141":[1,1,11],"142":[1,1,19],"143":[3,2,55],"144":[1,2,13],"145":[4,2,140],"146":[1,1,113],"147":[3,1,42],"148":[3,4,47],"149":[1,3,53],"150":[2,5,17],"151":[2,5,17],"152":[2,5,15],"153":[4,1,26],"154":[2,4,9],"155":[2,6,65],"156":[2,6,56],"157":[2,4,45],"158":[2,4,69],"159":[5,4,37],"160":[2,4,25],"161":[2,4,27],"162":[2,1,26],"163":[8,3,100],"164":[2,3,50],"165":[3,1,143],"166":[2,4,43],"167":[2,1,1],"168":[13,3,186],"169":[11,3,142],"170":[8,1,1],"171":[16,8,101],"172":[3,1,1],"173":[8,3,160],"174":[3,1,1],"175":[13,4,130],"176":[4,1,1],"177":[14,5,158],"178":[1,1,1],"179":[6,1,28],"180":[3,7,140],"181":[1,1,36],"182":[1,2,65],"183":[1,2,102],"184":[3,1,125],"185":[3,1,65],"186":[2,1,92],"187":[1,1,1],"188":[14,2,75],"189":[21,2,88],"190":[21,2,159],"191":[2,1,105],"192":[2,1,38],"193":[1,2,17],"194":[1,2,38],"195":[1,2,1],"196":[1,3,18],"197":[3,3,28],"198":[3,3,27],"199":[2,2,54],"200":[11,2,37],"201":[1,2,23],"202":[9,1,40],"203":[2,9,79],"204":[2,1,33],"205":[2,1,34],"206":[1,2,32],"207":[1,2,38],"208":[1,2,1],"209":[1,3,18],"210":[4,3,29],"211":[4,3,27],"212":[11,2,37],"213":[2,2,51],"214":[1,2,34],"215":[3,1,39],"216":[1,3,17],"217":[1,3,21],"218":[1,3,1],"219":[3,4,12],"220":[3,4,20],"221":[1,3,14],"222":[4,1,26],"223":[1,4,16],"224":[1,4,1],"225":[1,5,31],"226":[2,5,33],"227":[1,4,1],"228":[1,5,15],"229":[3,5,16],"230":[1,4,11],"231":[2,1,33],"232":[1,2,23],"233":[1,2,18],"234":[5,1,1],"235":[5,5,17],"236":[2,5,121],"237":[4,5,139],"238":[4,1,1],"239":[1,5,22],"240":[1,5,33],"241":[1,5,36],"242":[5,5,72],"243":[2,1,145],"244":[5,2,205],"245":[5,2,26],"246":[1,6,22],"247":[1,6,8],"248":[1,6,23],"249":[1,6,20],"250":[1,6,19],"251":[1,6,23],"252":[1,6,17],"253":[1,6,20],"254":[1,6,26],"255":[2,6,21],"256":[2,6,38],"257":[2,6,36],"258":[2,6,29],"259":[2,6,28],"260":[2,6,27],"261":[2,6,31],"262":[2,6,27],"263":[2,6,40],"264":[8,2,25],"265":[11,2,5],"266":[3,2,106],"267":[1,1,93],"268":[5,2,32],"269":[5,1,82],"270":[5,1,93],"271":[4,1,72],"272":[5,1,85],"273":[2,1,42],"274":[4,1,28],"275":[2,1,95],"276":[5,1,1],"277":[6,6,17],"278":[5,6,33],"279":[4,6,28],"280":[4,6,35],"281":[6,6,25],"282":[4,6,49],"283":[1,1,64],"284":[1,1,50],"285":[1,2,73],"286":[1,2,31],"287":[1,2,17],"288":[1,2,18],"289":[1,2,39],"290":[1,2,19],"291":[1,2,37],"292":[1,2,18],"293":[1,2,35],"294":[1,2,20],"295":[1,2,38],"296":[1,2,19],"297":[1,2,14],"298":[1,2,17],"299":[1,2,14],"300":[1,2,20],"301":[1,2,20],"302":[1,1,79],"303":[4,1,107],"304":[4,1,64],"305":[2,1,69],"306":[2,1,24],"307":[2,1,90],"308":[2,2,24],"309":[1,1,107],"310":[2,1,47],"311":[1,1,51],"312":[1,1,21],"313":[2,1,29],"314":[2,1,41],"315":[1,1,15],"316":[1,2,9],"317":[1,2,17],"318":[1,2,20],"319":[1,2,62],"320":[1,2,64],"321":[1,2,48],"322":[8,1,1],"323":[1,8,25],"324":[8,8,61],"325":[7,8,54],"326":[6,8,31],"327":[6,8,25],"328":[7,8,25],"329":[5,8,20],"330":[6,8,17],"331":[5,8,58],"332":[7,8,66],"333":[4,8,65],"334":[5,8,28],"335":[4,8,62],"336":[1,1,1],"337":[3,1,12],"338":[1,1,19],"339":[3,1,62],"340":[1,1,53],"341":[3,1,63],"342":[5,1,35],"343":[3,5,20],"344":[1,7,11],"345":[2,7,5],"346":[3,5,46],"347":[1,6,23],"348":[1,5,5],"349":[1,1,1],"350":[3,1,38],"351":[4,1,109],"352":[4,1,116],"353":[2,1,86],"354":[3,1,135],"355":[3,1,107],"356":[3,3,21],"357":[1,1,125],"358":[5,1,1],"359":[2,6,11],"360":[2,6,30],"361":[2,6,61],"362":[3,1,65],"363":[2,1,69],"364":[3,2,76],"365":[2,5,32],"366":[2,5,45],"367":[2,5,102],"368":[1,1,1],"369":[2,1,27],"370":[2,1,48],"371":[3,1,5],"372":[1,1,1],"373":[3,1,11],"374":[1,1,9],"375":[1,1,68],"376":[5,3,32],"377":[9,1,40],"378":[2,9,79],"379":[2,1,33],"380":[2,1,30],"381":[1,2,7],"382":[2,2,3],"383":[1,2,3],"384":[5,1,1],"385":[4,1,1],"386":[4,1,40],"387":[2,4,25],"388":[2,6,44],"389":[2,7,42],"390":[3,6,53],"391":[3,4,58],"392":[2,7,42],"393":[2,8,9],"394":[3,8,12],"395":[1,4,18],"396":[1,5,20],"397":[2,6,88],"398":[3,4,82],"399":[2,7,31],"400":[2,7,32],"401":[2,7,19],"402":[4,7,20],"403":[4,7,73],"404":[3,6,37],"405":[4,6,35],"406":[4,9,49],"407":[3,1,1],"408":[2,1,17],"409":[5,2,72],"410":[5,2,96],"411":[1,2,87],"412":[2,1,18],"413":[2,2,26],"414":[2,3,26],"415":[1,4,21],"416":[7,4,31],"417":[3,3,51],"418":[3,5,28],"419":[3,2,23],"420":[3,7,65],"421":[2,1,20],"422":[2,1,35],"423":[3,2,37],"424":[1,5,34],"425":[1,5,41],"426":[1,5,37],"427":[1,6,41],"428":[1,6,49],"429":[4,6,127],"430":[1,2,69],"431":[2,2,68],"432":[2,1,40],"433":[3,2,101],"434":[4,5,100],"435":[3,5,172],"436":[2,2,94],"437":[2,2,51],"438":[2,1,21],"439":[3,2,122],"440":[3,2,129],"441":[1,1,17],"442":[6,2,29],"443":[2,2,68],"444":[2,1,34],"445":[3,2,49],"446":[2,5,60],"447":[4,2,35],"448":[3,1,51],"449":[2,1,61],"450":[2,2,79],"451":[2,5,46],"452":[3,4,98],"453":[3,4,45],"454":[3,4,35],"455":[2,7,31],"456":[1,7,19],"457":[1,7,34],"458":[1,7,34],"459":[1,7,165],"460":[3,4,46],"461":[2,1,36],"462":[3,2,1],"463":[1,5,32],"464":[4,5,46],"465":[4,5,85],"466":[3,2,116],"467":[1,1,48],"468":[4,1,65],"469":[1,1,72],"470":[3,1,25],"471":[1,1,28],"472":[2,1,27],"473":[3,2,22],"474":[3,2,1],"475":[3,5,97],"476":[1,7,89],"477":[3,7,23],"478":[3,5,91],"479":[3,7,23],"480":[3,5,19],"481":[1,7,10],"482":[3,7,23],"483":[3,5,24],"484":[1,7,9],"485":[3,7,23],"486":[3,5,25],"487":[3,7,21],"488":[1,5,45],"489":[4,1,28],"490":[3,4,92],"491":[3,4,54],"492":[3,4,65],"493":[5,1,1],"494":[5,5,17],"495":[2,5,121],"496":[4,5,139],"497":[4,1,1],"498":[1,5,22],"499":[1,5,33],"500":[1,5,36],"501":[5,5,72],"502":[5,1,82],"503":[5,1,93],"504":[4,1,72],"505":[5,1,85],"506":[2,1,42],"507":[4,1,28],"508":[2,1,95],"509":[5,1,1],"510":[6,6,17],"511":[5,6,33],"512":[4,6,28],"513":[4,6,35],"514":[6,6,25],"515":[4,6,49]},"averageFieldLength":[2.9166666666666674,3.085271317829457,48.81395348837208],"storedFields":{"0":{"href":"/support#support","html":"\n

Sequence has a front line Support Team in multiple timezones to tackle problems that arise with the Stack, as well as answer any question for new projects in order to integrate web3 experiences in games and applications.

\n

If one of the members of the team does not know the answer, we'll further investigate (with backup support from the Sequence dev team) to get to the bottom of your troubles.

\n

Start talking to support today

","isPage":true,"text":"\nSequence has a front line Support Team in multiple timezones to tackle problems that arise with the Stack, as well as answer any question for new projects in order to integrate web3 experiences in games and applications.\nIf one of the members of the team does not know the answer, we'll further investigate (with backup support from the Sequence dev team) to get to the bottom of your troubles.\nStart talking to support today","title":"Support","titles":[]},"1":{"href":"/api/metadata#metadata-api","html":"\n\n

The Sequence Metadata API service offers a simple and fast API to query, manage, and update collections, token & NFT metadata for Ethereum-compatible chains.

\n\n","isPage":true,"text":"\nMetadata API documentation and endpoints\nThe Sequence Metadata API service offers a simple and fast API to query, manage, and update collections, token & NFT metadata for Ethereum-compatible chains.\nOur Metadata service is managed through Sequence Builder and requires a Service Account & Token in order to call the corresponding endpoints. Please follow the [section](/api/metadata#Obtaining a Service Account & Token) below prior to calling the endpoints\n","title":"Metadata API","titles":[]},"2":{"href":"/api/metadata#obtaining-a-service-account--token","html":"\n

Since the Metadata API requires write access in order to update on-chain state, you will need to first obtain a Service Account & Token to call this from your backend. Importantly, this is a secret key and should not be exposed publicly.

\n
    \n
  1. Create a New Project using our Builder. Navigate to Settings > API Keys > Add Service Account.
  2. \n
  3. In the modal that pops up, click the dropdown for Permission and change to Write. After completed click Add.
  4. \n
  5. On the next screen, you will be given your Secret API Token. Copy the key and store it securely as it is not possible to see it again. Once this is done, click Confirm and you are all set to utilize the API.
  6. \n
\n

Keep in mind, in contrast to our Public API Access key - this Secret API Token should be stored securely and not be used publicly. You will pass this token as a normal JWT in the Request Headers as X-Access-Key

\n","isPage":false,"text":"\nSince the Metadata API requires write access in order to update on-chain state, you will need to first obtain a Service Account & Token to call this from your backend. Importantly, this is a secret key and should not be exposed publicly.\n\nCreate a New Project using our Builder. Navigate to Settings > API Keys > Add Service Account.\nIn the modal that pops up, click the dropdown for Permission and change to Write. After completed click Add.\nOn the next screen, you will be given your Secret API Token. Copy the key and store it securely as it is not possible to see it again. Once this is done, click Confirm and you are all set to utilize the API.\n\nKeep in mind, in contrast to our Public API Access key - this Secret API Token should be stored securely and not be used publicly. You will pass this token as a normal JWT in the Request Headers as X-Access-Key\n","title":"Obtaining a Service Account & Token","titles":["Metadata API"]},"3":{"href":"/api/metadata#creating-collections-tokens-and-managing-metadata","html":"\n

The below steps walk through an end to end example utilizing our Metadata API in order to deploy an NFT collection, create tokens within that collection, and deploy asset metadata to such as an image to that token.

\n
    \n
  1. \n

    Call CreateCollection endpoint - ensure you pass in the Secret Service Token created in the prior section.

    \n
  2. \n
  3. \n

    CreateToken - use returned collectionId from previous request

    \n
  4. \n
  5. \n

    CreateAsset - use collectionId and your tokenId

    \n\n
  6. \n
  7. \n

    Upload file with PUT method to this endpoint PUT {metadata-server}/projects/{projectId}/collections/{collectionId}/tokens/{tokenId}/upload/{assetIdOrAssetType}- use assetId that is returned in step 3 OR, you can pass assetType, such as "image"

    \n
  8. \n
\n\n
    \n
  1. \n

    Asset is now privately accessible with JWT token at GET {metadata-server}/projects/{projectID}/collections/{collectionID}/tokens/{tokenID}/asset/{assetType}

    \n\n
  2. \n
  3. \n

    PublishCollection -- this sets the collection to be accessible by the public

    \n
  4. \n
  5. \n

    GetCollection -- will return both baseURIs for contract and token level metadata.

    \n
  6. \n
\n\n
    \n
  1. Finally, to use the metadata in your contract, simply update your contract's metadata base URIs to the values above, and everything will simply work.
  2. \n
\n

Below is an architecture demonstrating the steps above of how an NFT collection (ERC721 or ERC1155) is created and managed.\n\"Sequence

\n","isPage":false,"text":"\nThe below steps walk through an end to end example utilizing our Metadata API in order to deploy an NFT collection, create tokens within that collection, and deploy asset metadata to such as an image to that token.\n\n\nCall CreateCollection endpoint - ensure you pass in the Secret Service Token created in the prior section.\n\n\nCreateToken - use returned collectionId from previous request\n\n\nCreateAsset - use collectionId and your tokenId\n\nset metadataField (assetType) to one of the following\n\nimage\nanimation_url\naudio\nvideo\n\n\n\n\n\nUpload file with PUT method to this endpoint PUT {metadata-server}/projects/{projectId}/collections/{collectionId}/tokens/{tokenId}/upload/{assetIdOrAssetType}- use assetId that is returned in step 3 OR, you can pass assetType, such as "image"\n\n\n\nFor example you can upload to https://metadata.sequence.app/projects/486/collections/1/tokens/1/upload/image which will find the asset of the type "image" for the token, and will upload there.\n\nYou can also pass in the assetId if you prefer, i.e., PUT https://metadata.sequence.app/projects/486/collections/1/assets/1/upload\n\n\nAsset types include: image, audio, video, animation_url\n\n\n\nAsset is now privately accessible with JWT token at GET {metadata-server}/projects/{projectID}/collections/{collectionID}/tokens/{tokenID}/asset/{assetType}\n\nfor example: https://metadata.sequence.app/projects/486/collections/1/tokens/1/asset/image\n\n\n\nPublishCollection -- this sets the collection to be accessible by the public\n\n\nGetCollection -- will return both baseURIs for contract and token level metadata.\n\n\n\nCollection-level metadata (aka contract-level) metadata: https://metadata.sequence.app/projects/486/collections/1 or https://metadata.sequence.app/projects/486/collections/1.json\nToken-level metadata: https://metadata.sequence.app/projects/486/collections/1/tokens/{tokenId}\n\nie. https://metadata.sequence.app/projects/486/collections/1/tokens/1 or https://metadata.sequence.app/projects/486/collections/1/tokens/1.json\n\n\n\n\nFinally, to use the metadata in your contract, simply update your contract's metadata base URIs to the values above, and everything will simply work.\n\nBelow is an architecture demonstrating the steps above of how an NFT collection (ERC721 or ERC1155) is created and managed.\n\n","title":"Creating Collections, Tokens, and Managing Metadata","titles":["Metadata API"]},"4":{"href":"/api/metadata#pricing--usage","html":"\n

The Sequence Metadata is available for free with moderate request limits, but if your project requires higher limits, please contact the Sequence team.

","isPage":false,"text":"\nThe Sequence Metadata is available for free with moderate request limits, but if your project requires higher limits, please contact the Sequence team.","title":"Pricing & Usage","titles":["Metadata API"]},"5":{"href":"/api/node-gateway#node-gateway","html":"\n

Sequence Node gateway infrastructure enables you to have fail-over resilient RPC endpoints that can scale with your application.

\n

By using our infrastructure, you save money for not having to deploy your own stack, and benefits from the feature of aggregating multiple public RPC providers into a single endpoint for use.

\n","isPage":true,"text":"\nSequence Node gateway infrastructure enables you to have fail-over resilient RPC endpoints that can scale with your application.\nBy using our infrastructure, you save money for not having to deploy your own stack, and benefits from the feature of aggregating multiple public RPC providers into a single endpoint for use.\n","title":"Node Gateway","titles":[]},"6":{"href":"/api/node-gateway#give-it-a-try","html":"\n

Install ethers with pnpm install ethers or yarn add ethers

\n

Ensure to choose a network handle from our network options

\n

And acquire a Builder access key to authenticate your connection and append to the endpoint

\n
// Import the ethers library\nimport { ethers } from "ethers";\n \n// Function to create a provider and fetch the latest block\nasync function getLatestBlock() {\n  // Replace the following URL with your actual RPC endpoint\n  const rpcUrl =\n    "https://nodes.sequence.app/<chain_handle>/<project_access_key>";\n \n  // Create a provider using the RPC URL\n  const provider = new ethers.providers.JsonRpcProvider(rpcUrl);\n \n  // Fetch the latest block\n  const latestBlock = await provider.getBlock("latest");\n \n  console.log("Latest Block:", latestBlock);\n}\n \n// Call the function to get the latest block\ngetLatestBlock().catch(console.error);
","isPage":false,"text":"\nInstall ethers with pnpm install ethers or yarn add ethers\nEnsure to choose a network handle from our network options\nAnd acquire a Builder access key to authenticate your connection and append to the endpoint\n// Import the ethers library\nimport { ethers } from "ethers";\n \n// Function to create a provider and fetch the latest block\nasync function getLatestBlock() {\n // Replace the following URL with your actual RPC endpoint\n const rpcUrl =\n "https://nodes.sequence.app/<chain_handle>/<project_access_key>";\n \n // Create a provider using the RPC URL\n const provider = new ethers.providers.JsonRpcProvider(rpcUrl);\n \n // Fetch the latest block\n const latestBlock = await provider.getBlock("latest");\n \n console.log("Latest Block:", latestBlock);\n}\n \n// Call the function to get the latest block\ngetLatestBlock().catch(console.error);","title":"Give it a try","titles":["Node Gateway"]},"7":{"href":"/solutions/minter#mint-tokens-using-builder-manually","html":"\n","isPage":true,"text":"\n","title":"Mint tokens using Builder manually","titles":[null]},"8":{"href":"/solutions/minter#deploy-a-serverless-minter-on-cloudflare-workers","html":"\n","isPage":false,"text":"\n","title":"Deploy a serverless minter on Cloudflare Workers","titles":[null]},"9":{"href":"/solutions/nft-checkout#integrate-nft-checkout-on-web-coming-soon","html":"\n","isPage":true,"text":"\n","title":"Integrate NFT Checkout on web (coming soon)","titles":[null]},"10":{"href":"/solutions/onramps#integrate-onramp-on-web","html":"\n","isPage":true,"text":"\n","title":"Integrate onramp on web","titles":[null]},"11":{"href":"/support/restricted-regions#sequence-list-of-restricted-regions","html":"\n

In order to comply with regulations and policies mandated by Canada, USA and other global jurisdictions, Sequence will not be fully available in the following regions. Please be aware that external third-party money service providers that can help you on-ramp with crypto, at their own discretion, may deny funding to certain geographical locations

\n

At this time, Limited Access regions only refer to some states within the United States of America. Sequence can be accessed from these regions, however, the Skyweaver Market feature will not be available in the following US states:

\n","isPage":true,"text":"\nIn order to comply with regulations and policies mandated by Canada, USA and other global jurisdictions, Sequence will not be fully available in the following regions. Please be aware that external third-party money service providers that can help you on-ramp with crypto, at their own discretion, may deny funding to certain geographical locations\nAt this time, Limited Access regions only refer to some states within the United States of America. Sequence can be accessed from these regions, however, the Skyweaver Market feature will not be available in the following US states:\n","title":"Sequence list of Restricted Regions","titles":[]},"12":{"href":"/support/restricted-regions#us-states-with-limited-access-to-sequence","html":"\n\n","isPage":false,"text":"\n\nAlaska\nConnecticut\nHawaii\nLouisiana\nNebraska\nNew York\nRhode Island\nWashington State\n\n","title":"US states with limited access to Sequence","titles":["Sequence list of Restricted Regions"]},"13":{"href":"/support/restricted-regions#sequence-cannot-be-accessed-from-the-following-regions","html":"\n\n

Please note that this list is subject to change as regulations & policy decisions in the affected jurisdictions evolve. We will continue to look for opportunities to bring Sequence to as many people as possible across the globe. Please refer to our Terms of Service for more information.

","isPage":false,"text":"\n\nAfghanistan\nAlgeria\nBangladesh\nBelarus\nBurma (Myanmar)\nCentral African Republic\nChina\nCuba\nDemocratic Republic of Congo\nEgypt\nEthiopia\nHaiti\nIran\nIraq\nLebanon\nLibya\nMacao\nMali\nMoldova\nMorocco\nNepal\nNicaragua\nNorth Korea\nQatar\nRussian Federation\nSomalia\nSouth Sudan\nSri Lanka\nSudan\nSyria\nTunisia\nUkraine\nVenezuela\nYemen\nZimbabwe\n\nPlease note that this list is subject to change as regulations & policy decisions in the affected jurisdictions evolve. We will continue to look for opportunities to bring Sequence to as many people as possible across the globe. Please refer to our Terms of Service for more information.","title":"Sequence cannot be accessed from the following regions:","titles":["Sequence list of Restricted Regions"]},"14":{"href":"/api/indexer/installation#indexer-installation","html":"\n\n

Sequence Indexer is a simple API to query any blockchain token and NFT data. Below are instructions\non how to integrate the Sequence Indexer API into your Webapps, Games, and backends. In case you missed\nit, please also see the Indexer Overview.

\n","isPage":true,"text":"\nINTRODUCING THE SEQUENCE BUILDER - Our Indexer service is managed through Sequence Builder. Sign up to grab your API access key.Get started with the Sequence Builder Free Plan today!\nSequence Indexer is a simple API to query any blockchain token and NFT data. Below are instructions\non how to integrate the Sequence Indexer API into your Webapps, Games, and backends. In case you missed\nit, please also see the Indexer Overview.\n","title":"Indexer Installation","titles":[]},"15":{"href":"/api/indexer/installation#installation","html":"\n

The Sequence Indexer is built as a HTTP API with RPC endpoints that you may call directly\nfrom your Webapp, Game or server backend. Below you'll find information on the RPC endpoint\nschema with sample curl commands, along with examples in both Javascript/Typescript and Go.

\n

We provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Indexer with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Indexer API client as well.

\n\n
\n","isPage":false,"text":"\nThe Sequence Indexer is built as a HTTP API with RPC endpoints that you may call directly\nfrom your Webapp, Game or server backend. Below you'll find information on the RPC endpoint\nschema with sample curl commands, along with examples in both Javascript/Typescript and Go.\nWe provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Indexer with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Indexer API client as well.\nSequence Indexer offers the same API across a variety of EVM networks. Make sure to check the Indexer endpoints\nand use the corresponding host for your dapp/game. For example, on Ethereum mainnet the Sequence Indexer endpoint is\nhttps://mainnet-indexer.sequence.app and Polygon is https://polygon-indexer.sequence.app.🌄 View the full list of supported networks and Indexer endpoints here\n\n","title":"Installation","titles":["Indexer Installation"]},"16":{"href":"/api/indexer/installation#web--nodejs-installation","html":"\n
npm install 0xsequence ethers
\n

or

\n
pnpm install 0xsequence ethers
\n

or

\n
yarn add 0xsequence ethers
\n\n
import { SequenceIndexer } from '@0xsequence/indexer'\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nconst indexer = new SequenceIndexer('https://mainnet-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// see examples below for the kinds of queries you can make\nconst tokenBalances = await indexer.getTokenBalances(...)
\n

NOTE: if you're using @0xsequence/indexer from node.js, we recommend using node v18.x or newer.

\n
\n","isPage":false,"text":"\nnpm install 0xsequence ethers\nor\npnpm install 0xsequence ethers\nor\nyarn add 0xsequence ethers\nThis code requires an API Access Key from Sequence Builder.\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nconst indexer = new SequenceIndexer('https://mainnet-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// see examples below for the kinds of queries you can make\nconst tokenBalances = await indexer.getTokenBalances(...)\nNOTE: if you're using @0xsequence/indexer from node.js, we recommend using node v18.x or newer.\n\n","title":"Web / node.js Installation","titles":["Indexer Installation","Installation"]},"17":{"href":"/api/indexer/installation#go-installation","html":"\n
go get -u github.com/0xsequence/go-sequence@latest
\n

then in your app,

\n
import (\n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n// see examples below for the kinds of queries you can make\naccountAddress := "ACCOUNT_ADDRESS"\nincludeMetadata := true\nmetadataOptions := indexer.MetadataOptions{\n\tVerifiedOnly: true,\n}\n \n_, tokenBalances, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, nil, &includeMetadata, &metadataOptions, nil, nil)
\n
\n","isPage":false,"text":"\ngo get -u github.com/0xsequence/go-sequence@latest\nthen in your app,\nimport (\n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \n// see https://docs.sequence.xyz/solutions/technical-references/chain-support for list of\n// indexer hosts for the chain you'd like to query\nseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n// see examples below for the kinds of queries you can make\naccountAddress := "ACCOUNT_ADDRESS"\nincludeMetadata := true\nmetadataOptions := indexer.MetadataOptions{\n\tVerifiedOnly: true,\n}\n \n_, tokenBalances, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, nil, &includeMetadata, &metadataOptions, nil, nil)\n\n","title":"Go Installation","titles":["Indexer Installation","Installation"]},"18":{"href":"/api/indexer/installation#unity-or-unreal-installation","html":"\n

The Sequence Indexer is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.

\n
","isPage":false,"text":"\nThe Sequence Indexer is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.\n","title":"Unity or Unreal Installation","titles":["Indexer Installation","Installation"]},"19":{"href":"/api/indexer/metadata-tips#metadata-tips--notes-on-spam","html":"\n

The Sequence Indexer and Sequence Metadata services will pick up everything and anything\nthat is published on a blockchain. Our services are designed to provide data in real-time\nas blocks are mined, and adhere to all popular ERC20, ERC721 and ERC1155 metadata\nstandards so things just work.

\n

This is very helpful for your applications to be able to have access to the complete set of data\non-chain, but it also means it will include spam tokens when querying with default settings.

\n

To combat spam, we introduced metadataOptions arguments which can be passed to Indexer RPC\ncalls to control the results returned.

\n

The Sequence Metadata service keeps track of contracts which are "verified" by checking popular\nsources like Coingecko, OpenSea, Sequence Builder (https://sequence.build) and the Sequence Token\nDirectory (https://github.com/0xsequence/token-directory). By calling the Indexer RPC methods with\n"metadataOptions": { "verifiedOnly": true }, any contract address which has not been verified, will\nbe omitted from the results. We recommend using this option all the time, but, the downside is\nif your project's contracts are unverified, then they will also be omitted from the results. To help\nwith this, your options are to get verified with one of the sources above, or in your RPC calls to pass\n"metadataOptions": { "verifiedOnly": true, "includeContracts": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x8bb759bb68995343ff1e9d57ac85ff5c5fb79334"] }\nas an example.

","isPage":true,"text":"\nThe Sequence Indexer and Sequence Metadata services will pick up everything and anything\nthat is published on a blockchain. Our services are designed to provide data in real-time\nas blocks are mined, and adhere to all popular ERC20, ERC721 and ERC1155 metadata\nstandards so things just work.\nThis is very helpful for your applications to be able to have access to the complete set of data\non-chain, but it also means it will include spam tokens when querying with default settings.\nTo combat spam, we introduced metadataOptions arguments which can be passed to Indexer RPC\ncalls to control the results returned.\nThe Sequence Metadata service keeps track of contracts which are "verified" by checking popular\nsources like Coingecko, OpenSea, Sequence Builder (https://sequence.build) and the Sequence Token\nDirectory (https://github.com/0xsequence/token-directory). By calling the Indexer RPC methods with\n"metadataOptions": { "verifiedOnly": true }, any contract address which has not been verified, will\nbe omitted from the results. We recommend using this option all the time, but, the downside is\nif your project's contracts are unverified, then they will also be omitted from the results. To help\nwith this, your options are to get verified with one of the sources above, or in your RPC calls to pass\n"metadataOptions": { "verifiedOnly": true, "includeContracts": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x8bb759bb68995343ff1e9d57ac85ff5c5fb79334"] }\nas an example.","title":"Metadata Tips & Notes on Spam","titles":[]},"20":{"href":"/api/indexer/overview#indexer","html":"\n\n

The Sequence Indexer is a modular web3 service that makes it easy to query blockchain token and NFT data from Ethereum-compatible networks. The Indexer automatically indexes every ERC20, ERC721 and ERC1155 token from Ethereum-compatible chains.

\n

The Sequence Indexer is a powerful tool that can be used to build wallets, games, and dapps that\nneed to query on-chain data. It is designed to be fast, reliable, and easy to use. It leverages\nthe Sequence Node Gateway which monitors nodes health, intelligently routes\nrequests to the available nodes and caches the most recent request responses. This means that Node\nproviders going down are no longer a problem, as the Node Gateway will automatically route to a\nhealthy provider making sure that Indexer always stays at the top of the chain with no downtime.

\n

The other benefit of using the Indexer is that it is using built in-house, next-generation, LSM-tree\nbased databases to store the data. It makes it super fast to query and index data. The data is\navailable in real-time with low latency. You can query it using a simple REST API or one of our SDKs.

\n

The Indexer API allows you to query all token balances, history and other information for\nall Ethereum compatible chains. In order to make it one go to place for all your token data needs,\nwe have included Sequence Metadata support for all tokens. This means that\nyou can easily render tokens in your apps, games, or wallets without the need to fetch metadata from\na separate API.

\n

In fact, the Sequence Wallet uses the Indexer behind the scenes so it can seamlessly\nrender all token information in any wallet. But of course, the Indexer is a modular piece\nof infrastructure, and you may use it directly from your dapp, game, or even from\na server.

\nFeatures:\n\n","isPage":true,"text":"\nIndexer API documentation and testing\nThe Sequence Indexer is a modular web3 service that makes it easy to query blockchain token and NFT data from Ethereum-compatible networks. The Indexer automatically indexes every ERC20, ERC721 and ERC1155 token from Ethereum-compatible chains.\nThe Sequence Indexer is a powerful tool that can be used to build wallets, games, and dapps that\nneed to query on-chain data. It is designed to be fast, reliable, and easy to use. It leverages\nthe Sequence Node Gateway which monitors nodes health, intelligently routes\nrequests to the available nodes and caches the most recent request responses. This means that Node\nproviders going down are no longer a problem, as the Node Gateway will automatically route to a\nhealthy provider making sure that Indexer always stays at the top of the chain with no downtime.\nThe other benefit of using the Indexer is that it is using built in-house, next-generation, LSM-tree\nbased databases to store the data. It makes it super fast to query and index data. The data is\navailable in real-time with low latency. You can query it using a simple REST API or one of our SDKs.\nThe Indexer API allows you to query all token balances, history and other information for\nall Ethereum compatible chains. In order to make it one go to place for all your token data needs,\nwe have included Sequence Metadata support for all tokens. This means that\nyou can easily render tokens in your apps, games, or wallets without the need to fetch metadata from\na separate API.\nIn fact, the Sequence Wallet uses the Indexer behind the scenes so it can seamlessly\nrender all token information in any wallet. But of course, the Indexer is a modular piece\nof infrastructure, and you may use it directly from your dapp, game, or even from\na server.\nFeatures:\n\nSuper-fast API to query all token balances, history, metadata and NFTs with multi-chain support\nReal-time indexing of ERC20, ERC721 and ERC1155 transactions across EVM-compatible chains\nAutomatically detects all tokens on the chain, without the need for a contract registry\nResilient to node failures and chain re-organizations\nEasily listen for specific events and transactions on-chain accurately with a simple API\nBuilt-in token / nft metadata support to easily render tokens in your apps / games\nHigh uptime and availability\n\n","title":"Indexer","titles":[]},"21":{"href":"/api/indexer/overview#supported-networks--endpoints","html":"\n

You can see the full list of supported networks here.

\n","isPage":false,"text":"\nYou can see the full list of supported networks here.\n","title":"Supported Networks & Endpoints","titles":["Indexer"]},"22":{"href":"/api/indexer/overview#getting-started","html":"\n

Here are a few example queries you can make to a blockchain from your dapp, game, or wallet:

\n","isPage":false,"text":"\nHere are a few example queries you can make to a blockchain from your dapp, game, or wallet:\n\nFetch all tokens & NFTS in any wallet including all metadata\nFetch the transaction history for any wallet address\nFetch all unique tokens in a particular ERC20/721/1155 contract, including total supplies\nWhat is the total token supply of an ERC20 token? What is the total token supply of\nall the ERC1155 tokens in a particular contract?\nFetch the transaction history for any token contract address\nListen to transactions for particular tokens/contracts/addresses via webhooks\n","title":"Getting Started","titles":["Indexer"]},"23":{"href":"/api/marketplace/overview#marketplace-api","html":"\n\n

The Sequence Marketplace API service offers a simple and fast way to interact with sequence marketplace protocols. The API is designed to be easy to use and to have all the features you need to build a fully functional marketplace. Check out our various examples or our custom marketplace guide for an end to end walkthrough.

","isPage":true,"text":"\nMarketplace API documentation and testing\nThe Sequence Marketplace API service offers a simple and fast way to interact with sequence marketplace protocols. The API is designed to be easy to use and to have all the features you need to build a fully functional marketplace. Check out our various examples or our custom marketplace guide for an end to end walkthrough.","title":"Marketplace API","titles":[]},"24":{"href":"/api/metadata/contract-metadata#contract-metadata","html":"\n\n\n","isPage":true,"text":"\n\nLearn how to query contract-level metadata directly for any contract\nLearn about contract-level metadata for ERC20, ERC721 and ERC1155 tokens\n\nPRO TIP: Sequence Indexer also returns token metadataWhen using the Sequence Indexer, pass "includeMetadata": true to your request to\nquery token metadata for any ERC20, ERC721 or ERC1155 contract. See below how to fetch\ncontract-level metadata directly.\n","title":"Contract Metadata","titles":[]},"25":{"href":"/api/metadata/contract-metadata#fetch-contract-metadata-of-any-erc20-erc721-or-erc1155-contract-address","html":"\n

Sequence Metadata GetContractInfoBatch Method:

\n\n
\nExample: GetContractInfoBatch of some contracts on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetContractInfoBatch -d '{ "chainID": "polygon", "contractAddresses": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x17b66009af459dc8ebf37acf8a8b355379be2fe5", "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", "0x2953399124f0cbb46d2cbacd8a89cf0599974963", "0x7227e371540cf7b8e512544ba6871472031f3335", "0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d", "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", "0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4"] }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst contractMetadata = await metadataClient.getContractInfoBatch({\n  chainID: 'polygon',\n  contractAddresses: [\n    '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n    '0x17b66009af459dc8ebf37acf8a8b355379be2fe5',\n    '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n    '0x2953399124f0cbb46d2cbacd8a89cf0599974963',\n    '0x7227e371540cf7b8e512544ba6871472031f3335',\n    '0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d',\n    '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063',\n    '0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4'\n  ]\n})\n \nconsole.log('Contract info for above addresses:', contractMetadata)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")
Please [contact our team](/support) for assistance with integrations to another target.
\n
\n","isPage":false,"text":"\nSequence Metadata GetContractInfoBatch Method:\n\nRequest: POST /rpc/Metadata/GetContractInfoBatch\nContent-Type: application/json\nBody (in JSON):\n\nchainID (string) -- the chain id, as a name or number (ie. "1" or "mainnet", "137" or "polygon", etc.)\ncontractAddresses (string of strings) -- array of contract addresses\n\n\n\n\nExample: GetContractInfoBatch of some contracts on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\nThis code requires an API Access Key from Sequence Builder.\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetContractInfoBatch -d '{ "chainID": "polygon", "contractAddresses": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "0x17b66009af459dc8ebf37acf8a8b355379be2fe5", "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", "0x2953399124f0cbb46d2cbacd8a89cf0599974963", "0x7227e371540cf7b8e512544ba6871472031f3335", "0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d", "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", "0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4"] }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst contractMetadata = await metadataClient.getContractInfoBatch({\n chainID: 'polygon',\n contractAddresses: [\n '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n '0x17b66009af459dc8ebf37acf8a8b355379be2fe5',\n '0x2791bca1f2de4661ed88a30c99a7a9449aa84174',\n '0x2953399124f0cbb46d2cbacd8a89cf0599974963',\n '0x7227e371540cf7b8e512544ba6871472031f3335',\n '0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d',\n '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063',\n '0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4'\n ]\n})\n \nconsole.log('Contract info for above addresses:', contractMetadata)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")Please [contact our team](/support) for assistance with integrations to another target.\n\n","title":"Fetch contract metadata of any ERC20, ERC721 or ERC1155 contract address","titles":["Contract Metadata"]},"26":{"href":"/api/metadata/contract-metadata#contract-level-metadata-standards","html":"\n

Additionally, OpenSea added something called contractURI (https://docs.opensea.io/docs/contract-level-metadata).

","isPage":false,"text":"\nAdditionally, OpenSea added something called contractURI (https://docs.opensea.io/docs/contract-level-metadata).","title":"Contract-level Metadata Standards","titles":["Contract Metadata"]},"27":{"href":"/api/metadata/overview#metadata","html":"\n

The Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.

\n

To learn how to use the Sequence Metadata service, please read:

\n\n
\n","isPage":true,"text":"\nThe Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.\nTo learn how to use the Sequence Metadata service, please read:\n\nToken metadata API & standards\nContract-level metadata API & standards\nAlternative, REST API Usage\n\n\n","title":"Metadata","titles":[]},"28":{"href":"/api/metadata/overview#web--nodejs-installation","html":"\n
npm install 0xsequence
\n

or

\n
npm install @0xsequence/metadata
\n\n

then in your app (using your API Access Key),

\n
import { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadata = new SequenceMetadata('https://metadata.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')
\n

NOTE: if you're using @0xsequence/metadata from node.js, we recommend using node v18.x or newer.

\n","isPage":false,"text":"\nnpm install 0xsequence\nor\nnpm install @0xsequence/metadata\nThis installation requires an API Access Key from Sequence Builder.\nthen in your app (using your API Access Key),\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadata = new SequenceMetadata('https://metadata.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\nNOTE: if you're using @0xsequence/metadata from node.js, we recommend using node v18.x or newer.\n","title":"Web / node.js Installation","titles":["Metadata",null]},"29":{"href":"/api/metadata/overview#go-installation","html":"\n
go get -u github.com/0xsequence/go-sequence@latest
\n

then in your app,

\n
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")
\n
\n","isPage":false,"text":"\ngo get -u github.com/0xsequence/go-sequence@latest\nthen in your app,\nimport (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncontractInfo, err := seqMetadata.GetContractInfo(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E")\n\n","title":"Go Installation","titles":["Metadata",null]},"30":{"href":"/api/metadata/overview#unity-or-unreal-installation","html":"\n

The Sequence Metadata is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.

\n
","isPage":false,"text":"\nThe Sequence Metadata is integrated directly inside of the respective Sequence Unity and Sequence Unreal SDKs.\n","title":"Unity or Unreal Installation","titles":["Metadata",null]},"31":{"href":"/api/metadata/rest-api#metadata-rest-api-reference--usage","html":"\n

The Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.

\n

Quite simply, the Metadata API allows you to query the token metadata of any ERC20, ERC721 or ERC1155\ncontract on a number of supported Ethereum chains.

\n

As well, the Sequence Metadata service is automatically integrated in the Sequence Indexer.\nBut as we demonstrate below, it's also useful to be able to query the token/contract metadata directly too :)

\n\n","isPage":true,"text":"\nThe Sequence Metadata API service offers a simple and fast API to query token & NFT metadata\nfor Ethereum-compatible chains.\nQuite simply, the Metadata API allows you to query the token metadata of any ERC20, ERC721 or ERC1155\ncontract on a number of supported Ethereum chains.\nAs well, the Sequence Metadata service is automatically integrated in the Sequence Indexer.\nBut as we demonstrate below, it's also useful to be able to query the token/contract metadata directly too :)\nPRO TIP: RPC vs REST endpointsSequence Metadata service is available with both RPC and REST endpoints. We recommend the RPC endpoints\nfor your application, but the REST endpoints are an available option for convenience.For RPC endpoint see Token metadata RPC and Contract metadata RPC.\n","title":"Metadata REST API Reference & Usage","titles":[]},"32":{"href":"/api/metadata/rest-api#example","html":"\n

Let's say you'd like to query the metadata of a Skyweaver 1155 card on the Polygon network. Of course, the\nbelow example will work for any network / contract / token combination as well.

\n

First, the Skyweaver 1155 assets contract is located at address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. Second, let's build the metadata lookup endpoint to query Skyweaver's contract\nfor token ID 20:

\n

Request:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20

\nResponse:\n
[\n  {\n    "tokenId": "20",\n    "contractAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n    "name": "Unstoppable Chop",\n    "description": "Attach Silence to target unit. Do 4 damage to it.",\n    "image": "https://assets.skyweaver.net/TNqWLuJZ/webapp/cards/full-cards/6x/20-silver.png",\n    "decimals": 2,\n    "properties": {\n      "baseCardId": 20,\n      "goldCardId": 131092,\n      "grade": "oldSilver",\n      "id": 20,\n      "silverCardId": 65556\n    },\n    "attributes": null\n  }\n]
\n

If you'd like to query a number of tokens at the same time, you can include more token ids comma-separated:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20,21,22 -- click\nto see the JSON response to query token ids 20, 21, and 22 in a single batched request.

\n

Feel free to try tweaking the metadata.sequence.app URL above for your own contract, or another popular\nproject to see how the responses come back. You can change the network to one of our supported networks\nand specify any contract and/or token id.

\n

In addition to easily querying token-level metadata like in the above example, you can also query contract-level metadata.\nContract-level metadata provides you more information about a contract address such as a name, contract type, logo, and description.\nSimply change the metadata URL above to just query the contract address: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E

\n

and see result:

\n
{\n  "chainId": 137,\n  "address": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n  "name": "Skyweaver",\n  "type": "ERC1155",\n  "symbol": "SKYWVR",\n  "logoURI": "https://assets.skyweaver.net/_tX5dRVi/webapp/icons/skyweaver-token.png",\n  "extensions": {\n    "link": "https://www.skyweaver.net/",\n    "description": "Skyweaver is a Free-to-Play, trading card game powered by Polygon and Ethereum.",\n    "ogImage": "https://skyweaver.net/images/skyweavercover.jpg",\n    "originAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e"\n  }\n}
\n
\n","isPage":false,"text":"\nLet's say you'd like to query the metadata of a Skyweaver 1155 card on the Polygon network. Of course, the\nbelow example will work for any network / contract / token combination as well.\nFirst, the Skyweaver 1155 assets contract is located at address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. Second, let's build the metadata lookup endpoint to query Skyweaver's contract\nfor token ID 20:\nRequest:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20\nResponse:\n[\n {\n "tokenId": "20",\n "contractAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n "name": "Unstoppable Chop",\n "description": "Attach Silence to target unit. Do 4 damage to it.",\n "image": "https://assets.skyweaver.net/TNqWLuJZ/webapp/cards/full-cards/6x/20-silver.png",\n "decimals": 2,\n "properties": {\n "baseCardId": 20,\n "goldCardId": 131092,\n "grade": "oldSilver",\n "id": 20,\n "silverCardId": 65556\n },\n "attributes": null\n }\n]\nIf you'd like to query a number of tokens at the same time, you can include more token ids comma-separated:\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20,21,22 -- click\nto see the JSON response to query token ids 20, 21, and 22 in a single batched request.\nFeel free to try tweaking the metadata.sequence.app URL above for your own contract, or another popular\nproject to see how the responses come back. You can change the network to one of our supported networks\nand specify any contract and/or token id.\nIn addition to easily querying token-level metadata like in the above example, you can also query contract-level metadata.\nContract-level metadata provides you more information about a contract address such as a name, contract type, logo, and description.\nSimply change the metadata URL above to just query the contract address: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E\nand see result:\n{\n "chainId": 137,\n "address": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n "name": "Skyweaver",\n "type": "ERC1155",\n "symbol": "SKYWVR",\n "logoURI": "https://assets.skyweaver.net/_tX5dRVi/webapp/icons/skyweaver-token.png",\n "extensions": {\n "link": "https://www.skyweaver.net/",\n "description": "Skyweaver is a Free-to-Play, trading card game powered by Polygon and Ethereum.",\n "ogImage": "https://skyweaver.net/images/skyweavercover.jpg",\n "originAddress": "0x631998e91476da5b870d741192fc5cbc55f5a52e"\n }\n}\n\n","title":"Example","titles":["Metadata REST API Reference & Usage"]},"33":{"href":"/api/metadata/rest-api#usage","html":"\n

The Metadata API service is accessible either with a simple REST interface, or a RPC client.\nFor the RPC client, we offer Web browser, node and Go clients. We recommend the RPC client for most integrations, but\nmake the REST interface available for convenience.

\n
\n","isPage":false,"text":"\nThe Metadata API service is accessible either with a simple REST interface, or a RPC client.\nFor the RPC client, we offer Web browser, node and Go clients. We recommend the RPC client for most integrations, but\nmake the REST interface available for convenience.\n\n","title":"Usage","titles":["Metadata REST API Reference & Usage"]},"34":{"href":"/api/metadata/rest-api#rest-endpoints","html":"\n

As mentioned in the example above. The general format of the REST endpoint is:

\n
GET https://metadata.sequence.app/tokens/<network>/<contractAddress>[/<tokenID>]
\n

Where <network> must be one of the Chain ID or Chain Handle of the supported networks.

\n
\nFetch contract-level metadata:\n
GET https://metadata.sequence.app/tokens/<network>/<contractAddress>
\n

Example: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E

\n
\nFetch token-level metadata:\n
GET https://metadata.sequence.app/tokens/<network>/<contractAddress>/<tokenID>[,<tokenID>,...]
\n

Examples:

\n\n
\n","isPage":false,"text":"\nAs mentioned in the example above. The general format of the REST endpoint is:\nGET https://metadata.sequence.app/tokens/<network>/<contractAddress>[/<tokenID>]\nWhere <network> must be one of the Chain ID or Chain Handle of the supported networks.\n\nFetch contract-level metadata:\nGET https://metadata.sequence.app/tokens/<network>/<contractAddress>\nExample: https://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E\n\nFetch token-level metadata:\nGET https://metadata.sequence.app/tokens/<network>/<contractAddress>/<tokenID>[,<tokenID>,...]\nExamples:\n\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20\nhttps://metadata.sequence.app/tokens/polygon/0x631998e91476DA5B870D741192fc5Cbc55F5a52E/20,21\n\n\n","title":"REST endpoints","titles":["Metadata REST API Reference & Usage"]},"35":{"href":"/api/metadata/rest-api#rpc-client","html":"\n

The Metadata RPC interface offers the full capabilities of the Metadata service.

\n

We provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Metadata service with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Metadata RPC client as well.

\n","isPage":false,"text":"\nThe Metadata RPC interface offers the full capabilities of the Metadata service.\nWe provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Metadata service with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Metadata RPC client as well.\n","title":"RPC Client","titles":["Metadata REST API Reference & Usage"]},"36":{"href":"/api/metadata/rest-api#metadata-rpc-methods","html":"\n

Metadata API endpoint: https://metadata.sequence.app

\nMetadata RPC methods:\n","isPage":false,"text":"\nMetadata API endpoint: https://metadata.sequence.app\nMetadata RPC methods:\n\nGetTokenMetadata - fetch token metadata of ERC721 or ERC1155 tokens from a single contract\nGetTokenMetadataBatch - fetch token metadata of ERC721 or ERC1155 token from a batch of contracts\nGetContractInfo - fetch contract metadata of an ERC20, ERC721 or ERC1155 contract address\nGetContractInfoBatch - fetch contract metadata of a batch of ERC20, ERC721 or ERC1155 contract addresses\n","title":"Metadata RPC Methods","titles":["Metadata REST API Reference & Usage"]},"37":{"href":"/api/metadata/token-metadata#token-metadata","html":"\n

Sequence provides a metadata service for fetching token metadata for any ERC721 or ERC1155 contract, on any EVM chain.

\n\n\n","isPage":true,"text":"\nSequence provides a metadata service for fetching token metadata for any ERC721 or ERC1155 contract, on any EVM chain.\n\nLearn how to query token metadata directly for any contract\nLearn about token metadata standards and formats for ERC721 and ERC1155 tokens\n\nPRO TIP: Sequence Indexer also supports token metadataWhen using the Sequence Indexer, pass "includeMetadata": true to your request to\nquery token metadata for any ERC721 or ERC1155 contract. See below how to fetch\ntoken metadata directly.\n","title":"Token Metadata","titles":[]},"38":{"href":"/api/metadata/token-metadata#fetch-token-metadata-for-any-erc721-or-erc1155-contract","html":"\n

Sequence Metadata GetTokenMetadata Method:

\n\n
\nExample: GetTokenMetadata of some tokens using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenMetadata -d '{"chainID":"polygon", "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["65537", "65538", "65539"] }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst tokenMetadata = await metadataClient.getTokenMetadata({\n  chainID: 'polygon',\n  contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n  tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('token metadata: ', tokenMetadata)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncollectibleInfo, err := seqMetadata.GetTokenMetadata(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"})
To be completed
To be completed
Please [contact our team](/support) for assistance with integrations to another target.
\n","isPage":false,"text":"\nSequence Metadata GetTokenMetadata Method:\n\nRequest: POST /rpc/Metadata/GetTokenMetadata\nContent-Type: application/json\nBody (in JSON):\n\nchainID (string) -- the chain id, as a name or number (ie. "1" or "mainnet", "137" or "polygon", etc.)\ncontractAddress (string) -- the contract address\ntokenIDs (array of strings) -- array of strings containing token ids to fetch metadata\n\n\n\n\nExample: GetTokenMetadata of some tokens using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\nThis code requires an API Access Key from Sequence Builder.\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenMetadata -d '{"chainID":"polygon", "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["65537", "65538", "65539"] }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst tokenMetadata = await metadataClient.getTokenMetadata({\n chainID: 'polygon',\n contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('token metadata: ', tokenMetadata)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \ncollectibleInfo, err := seqMetadata.GetTokenMetadata(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"})To be completedTo be completedPlease [contact our team](/support) for assistance with integrations to another target.\n","title":"Fetch token metadata for any ERC721 or ERC1155 contract","titles":["Token Metadata"]},"39":{"href":"/api/metadata/token-metadata#refreshing-token-metadata","html":"\n

When deploying new contracts or metadata updates the refresh token metadata url should be called with an access key from (the Sequence Builder) via a HTTPS POST request by command line or via metadata SDK in a program for data to indexeable in the Sequence Indexer metadata service.

\n

Sequence Metadata enqueueTokensForRefresh Method:

\n\n
curl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/EnqueueTokensForRefresh -d '{"chainID":"polygon", "contractAddress":"0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["1","2"]}'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst jobID = await metadataClient.enqueueTokensForRefresh({\n    chainID: 'polygon',\n    contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n    tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('refresh job id: ', tokenMetadata)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJob, err := seqMetadata.EnqueueTokensForRefresh(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"}, nil)
Please [contact our team](/support) for assistance with integrations to another target.
\n

Sequence Metadata getTokenRefreshStatus Method:

\n\n
curl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenRefreshStatus -d '{"taskId": 1234}'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst refreshJobStatus = await metadataClient.getTokenRefreshStatus({\n    taskId: 1234\n})\n \nconsole.log('refresh job status: ', refreshJobStatus)
import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJobStatus, err := seqMetadata.GetTokenRefreshStatus(context.Background(), uint64(1234))
Please [contact our team](/support) for assistance with integrations to another target.
\n","isPage":false,"text":"\nWhen deploying new contracts or metadata updates the refresh token metadata url should be called with an access key from (the Sequence Builder) via a HTTPS POST request by command line or via metadata SDK in a program for data to indexeable in the Sequence Indexer metadata service.\nSequence Metadata enqueueTokensForRefresh Method:\n\nRequest: POST /rpc/Metadata/EnqueueTokensForRefresh\nContent-Type: application/json\nBody (in JSON):\n\nchainID (string) -- the chain id, as a name or number (ie. "1" or "mainnet", "137" or "polygon", etc.)\ncontractAddress (string) -- the contract address\ntokenIDs (array of strings) -- array of strings containing token ids to fetch metadata\n\n\n\ncurl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/EnqueueTokensForRefresh -d '{"chainID":"polygon", "contractAddress":"0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "tokenIDs": ["1","2"]}'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst jobID = await metadataClient.enqueueTokensForRefresh({\n chainID: 'polygon',\n contractAddress: '0x631998e91476DA5B870D741192fc5Cbc55F5a52E',\n tokenIDs: ['65537', '65538', '65539']\n})\n \nconsole.log('refresh job id: ', tokenMetadata)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJob, err := seqMetadata.EnqueueTokensForRefresh(context.Background(), "polygon", "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", []string{"1", "2"}, nil)Please [contact our team](/support) for assistance with integrations to another target.\nSequence Metadata getTokenRefreshStatus Method:\n\nRequest: POST /rpc/Metadata/GetTokenRefreshStatus\nContent-Type: application/json\nBody (in JSON):\n\ntaskId (uint) -- the task id returned from enqueueTokensForRefresh\n\n\n\ncurl -v -X POST -H "Content-type: application/json" -H "X-Access-Key: wuELppeX0pttvJABl8bIuxPAAAAAAAAAA" https://metadata.sequence.app/rpc/Metadata/GetTokenRefreshStatus -d '{"taskId": 1234}'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceMetadata } from '@0xsequence/metadata'\n \nconst metadataClient = new SequenceMetadata("https://metadata.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nconst refreshJobStatus = await metadataClient.getTokenRefreshStatus({\n taskId: 1234\n})\n \nconsole.log('refresh job status: ', refreshJobStatus)import (\n\t"github.com/0xsequence/go-sequence/metadata"\n)\n \nseqMetadata := metadata.NewMetadata("c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \nrefreshJobStatus, err := seqMetadata.GetTokenRefreshStatus(context.Background(), uint64(1234))Please [contact our team](/support) for assistance with integrations to another target.\n","title":"Refreshing token metadata","titles":["Token Metadata"]},"40":{"href":"/api/metadata/token-metadata#testing-instructions","html":"\n
    \n
  1. Check current token metadata using token metadata fetch
  2. \n
  3. Modify token metadata content either onchain or via token baseURI
  4. \n
  5. Call refresh token ID endpoints using refresh metadata
  6. \n
  7. Check token metadata changes using token metadata fetch
  8. \n
\n","isPage":false,"text":"\n\nCheck current token metadata using token metadata fetch\nModify token metadata content either onchain or via token baseURI\nCall refresh token ID endpoints using refresh metadata\nCheck token metadata changes using token metadata fetch\n\n","title":"Testing instructions:","titles":["Token Metadata","Refreshing token metadata"]},"41":{"href":"/api/metadata/token-metadata#token-metadata-standards","html":"\n

Popular token standards like EIP721 and EIP1155 both\nhave similar metadata standard formats with some subtle differences. In addition to the standards, we've seen in practice that projects\noften slightly deviate from the standards but are sensical, easy to parse and well supported in the ecosystem, include the Sequence Metadata service.\nBelow we describe the standards and common practices across projects to help demystify how to format your token metadata for your projects.

\n","isPage":false,"text":"\nPopular token standards like EIP721 and EIP1155 both\nhave similar metadata standard formats with some subtle differences. In addition to the standards, we've seen in practice that projects\noften slightly deviate from the standards but are sensical, easy to parse and well supported in the ecosystem, include the Sequence Metadata service.\nBelow we describe the standards and common practices across projects to help demystify how to format your token metadata for your projects.\n","title":"Token Metadata Standards","titles":["Token Metadata"]},"42":{"href":"/api/metadata/token-metadata#metadata-standards","html":"\n","isPage":false,"text":"\n","title":"Metadata Standards","titles":["Token Metadata"]},"43":{"href":"/api/metadata/token-metadata#erc721","html":"\n

ERC721 token contracts contain a method on the contract called tokenURI(uint256) string. When querying the tokenURI method on the contract, it will return a URI which contains additional metadata for that asset.

\n

See EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md

\n

Here is an example Bored Ape (token id 9):\nhttps://metadata.sequence.app/tokens/mainnet/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/9

\n

response:

\n
{\n  "tokenId": "9",\n  "contractAddress": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",\n  "name": "",\n  "description": "",\n  "image": "https://ipfs.sequence.info/ipfs/QmUQgKka8EW7exiUHnMwZ4UoXA11wV7NFjHAogVAbasSYy",\n  "decimals": 0,\n  "properties": null,\n  "attributes": [\n    {\n      "trait_type": "Earring",\n      "value": "Silver Stud"\n    },\n    {\n      "trait_type": "Eyes",\n      "value": "Sleepy"\n    },\n    {\n      "trait_type": "Mouth",\n      "value": "Small Grin"\n    },\n    {\n      "trait_type": "Fur",\n      "value": "Brown"\n    },\n    {\n      "trait_type": "Hat",\n      "value": "Seaman's Hat"\n    },\n    {\n      "trait_type": "Clothes",\n      "value": "Stunt Jacket"\n    },\n    {\n      "trait_type": "Background",\n      "value": "Purple"\n    }\n  ]\n}
\n

In the case of this Bored Ape, it appears there is no name or description set,\nbut they do have "attributes" as an array of { "trait_type": string, "value: string }.

\n

Additionally, see OpenSea for more information: https://docs.opensea.io/docs/metadata-standards

\n

Note that OpenSea technically breaks the ERC1155 standard by suggesting to use "attributes", where in fact,\nthe ERC1155 calls uses the field name "properties" instead of "attributes", see\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema (read section below).\nHowever this is completely okay and mixed use of properties / attributes is compatible in practice.\nOn Sequence Metadata, we support both structures for token contracts which use either format for their properties/attributes.

\n

Another example is from Neon District: https://metadata.sequence.app/tokens/polygon/0x7227e371540CF7b8e512544Ba6871472031F3335/158456331411102687640546264635

\n","isPage":false,"text":"\nERC721 token contracts contain a method on the contract called tokenURI(uint256) string. When querying the tokenURI method on the contract, it will return a URI which contains additional metadata for that asset.\nSee EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-721.md\nHere is an example Bored Ape (token id 9):\nhttps://metadata.sequence.app/tokens/mainnet/0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d/9\nresponse:\n{\n "tokenId": "9",\n "contractAddress": "0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",\n "name": "",\n "description": "",\n "image": "https://ipfs.sequence.info/ipfs/QmUQgKka8EW7exiUHnMwZ4UoXA11wV7NFjHAogVAbasSYy",\n "decimals": 0,\n "properties": null,\n "attributes": [\n {\n "trait_type": "Earring",\n "value": "Silver Stud"\n },\n {\n "trait_type": "Eyes",\n "value": "Sleepy"\n },\n {\n "trait_type": "Mouth",\n "value": "Small Grin"\n },\n {\n "trait_type": "Fur",\n "value": "Brown"\n },\n {\n "trait_type": "Hat",\n "value": "Seaman's Hat"\n },\n {\n "trait_type": "Clothes",\n "value": "Stunt Jacket"\n },\n {\n "trait_type": "Background",\n "value": "Purple"\n }\n ]\n}\nIn the case of this Bored Ape, it appears there is no name or description set,\nbut they do have "attributes" as an array of { "trait_type": string, "value: string }.\nAdditionally, see OpenSea for more information: https://docs.opensea.io/docs/metadata-standards\nNote that OpenSea technically breaks the ERC1155 standard by suggesting to use "attributes", where in fact,\nthe ERC1155 calls uses the field name "properties" instead of "attributes", see\nhttps://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema (read section below).\nHowever this is completely okay and mixed use of properties / attributes is compatible in practice.\nOn Sequence Metadata, we support both structures for token contracts which use either format for their properties/attributes.\nAnother example is from Neon District: https://metadata.sequence.app/tokens/polygon/0x7227e371540CF7b8e512544Ba6871472031F3335/158456331411102687640546264635\n","title":"ERC721","titles":["Token Metadata","Metadata Standards"]},"44":{"href":"/api/metadata/token-metadata#erc1155","html":"\n

ERC1155 token contracts contain a method on the contract called uri(uint256) string. When querying the uri method on the\ncontract, it will return a URI which contains additional metadata for that asset.

\n

See EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema

\n

Here is an example Skyweaver card (token id 65548):\nhttps://metadata.sequence.app/tokens/polygon/0x27A11C1563a5dDa238379B95c91B3AbBaD9C0cf6/65548

\n
{\n  "tokenId": "65548",\n  "contractAddress": "0x27a11c1563a5dda238379b95c91b3abbad9c0cf6",\n  "name": "Weighted Die (Silver)",\n  "description": "Give +1/+1, armor, and guard to a random ally unit, six times.\\n\\n\\"I will not bow to fate. If the dice fall against me, I'll cut off the hand that cast them.\\"\\n -Horik",\n  "image": "https://assets.skyweaver.net/LV7xNcQh/webapp/cards/full-cards/6x/12-silver.png",\n  "decimals": 2,\n  "properties": {\n    "artists": {\n      "name": "Artist",\n      "value": [\n        {\n          "id": "xavi",\n          "name": "Henrique Xavier",\n          "url": "https://www.artstation.com/kitexavier"\n        }\n      ]\n    },\n    "baseCardId": 12,\n    "cardType": "Spell",\n    "element": "Metal",\n    "mana": 8,\n    "prism": "Strength",\n    "type": "Silver"\n  },\n  "attributes": null\n}
\n

As you can see, Skyweaver an ERC1155 token's metadata uses the properties object, which is an object/dictionary type of arbitrary data.

\n","isPage":false,"text":"\nERC1155 token contracts contain a method on the contract called uri(uint256) string. When querying the uri method on the\ncontract, it will return a URI which contains additional metadata for that asset.\nSee EIP for specific details: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema\nHere is an example Skyweaver card (token id 65548):\nhttps://metadata.sequence.app/tokens/polygon/0x27A11C1563a5dDa238379B95c91B3AbBaD9C0cf6/65548\n{\n "tokenId": "65548",\n "contractAddress": "0x27a11c1563a5dda238379b95c91b3abbad9c0cf6",\n "name": "Weighted Die (Silver)",\n "description": "Give +1/+1, armor, and guard to a random ally unit, six times.\\n\\n\\"I will not bow to fate. If the dice fall against me, I'll cut off the hand that cast them.\\"\\n -Horik",\n "image": "https://assets.skyweaver.net/LV7xNcQh/webapp/cards/full-cards/6x/12-silver.png",\n "decimals": 2,\n "properties": {\n "artists": {\n "name": "Artist",\n "value": [\n {\n "id": "xavi",\n "name": "Henrique Xavier",\n "url": "https://www.artstation.com/kitexavier"\n }\n ]\n },\n "baseCardId": 12,\n "cardType": "Spell",\n "element": "Metal",\n "mana": 8,\n "prism": "Strength",\n "type": "Silver"\n },\n "attributes": null\n}\nAs you can see, Skyweaver an ERC1155 token's metadata uses the properties object, which is an object/dictionary type of arbitrary data.\n","title":"ERC1155","titles":["Token Metadata","Metadata Standards"]},"45":{"href":"/api/metadata/token-metadata#attributes-vs-properties","html":"\n

As you can see, the standard format of token metadata contains both attributes and properties. The attributes field is an array of\nobjects. The properties field is an object/dictionary of arbitrary data. In technical terms, the attributes type is defined as\n[]map<string,any> and the properties type is defined as map<string,any>.

\n

In practice, we've seen that many projects use both attributes and properties to store the same data, and in some cases, they use\nattributes to store data that should be in properties and vice versa. Sometimes project use both fields, and this is completely fine\nin practice, as marketplaces and services will parse both areas.

\n

Finally, if you are looking to extend the metadata format to suit your project, we recommend to utilize either or both the attributes\nand properties fields for either ERC721 or ERC1155.

\n","isPage":false,"text":"\nAs you can see, the standard format of token metadata contains both attributes and properties. The attributes field is an array of\nobjects. The properties field is an object/dictionary of arbitrary data. In technical terms, the attributes type is defined as\n[]map<string,any> and the properties type is defined as map<string,any>.\nIn practice, we've seen that many projects use both attributes and properties to store the same data, and in some cases, they use\nattributes to store data that should be in properties and vice versa. Sometimes project use both fields, and this is completely fine\nin practice, as marketplaces and services will parse both areas.\nFinally, if you are looking to extend the metadata format to suit your project, we recommend to utilize either or both the attributes\nand properties fields for either ERC721 or ERC1155.\n","title":"Attributes vs Properties","titles":["Token Metadata","Metadata Standards"]},"46":{"href":"/api/metadata/token-metadata#erc20","html":"\n

Finally, a note on ERC20 tokens. ERC20 tokens are just a single token, so they themselves do not have a token ID, but\nare represented entirely by their contract address. We can infer some information about the token by querying the contract\nmethods such as name and decimals. Additionally, ERC20 tokens can take advantage of the contractURI extension used\nby OpenSea and described in more detail in our Contract metadata section.

","isPage":false,"text":"\nFinally, a note on ERC20 tokens. ERC20 tokens are just a single token, so they themselves do not have a token ID, but\nare represented entirely by their contract address. We can infer some information about the token by querying the contract\nmethods such as name and decimals. Additionally, ERC20 tokens can take advantage of the contractURI extension used\nby OpenSea and described in more detail in our Contract metadata section.","title":"ERC20","titles":["Token Metadata","Metadata Standards"]},"47":{"href":"/api/relayer/installation#installation","html":"\n

We provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Relayer with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Relayer API client as well.

\n\n","isPage":true,"text":"\nWe provide SDKs for Web / node.js and Go.\nOr if you'd like to integrate the Relayer with another language target, simply follow the API reference below\nto implement the HTTP requests. Additionally, read the Typescript client source code as reference\nimplementation of the Relayer API client as well.\nSequence Relayer offers the same API across a variety of EVM networks. Make sure to check the endpoints\nand use the corresponding host for your dapp/game. For example, on Ethereum mainnet the Sequence Relayer endpoint is\nhttps://mainnet-relayer.sequence.app and Polygon is https://polygon-relayer.sequence.app.🌄 View the full list of supported networks and Relayer endpoints here\n","title":"Installation","titles":[]},"48":{"href":"/api/relayer/installation#web--nodejs-installation","html":"\n
npm install 0xsequence ethers
\n

or

\n
pnpm install 0xsequence ethers
\n

or

\n
yarn add 0xsequence ethers
\n","isPage":false,"text":"\nnpm install 0xsequence ethers\nor\npnpm install 0xsequence ethers\nor\nyarn add 0xsequence ethers\n","title":"Web / node.js Installation","titles":["Installation",null]},"49":{"href":"/api/relayer/installation#go-installation","html":"\n
go get -u github.com/0xsequence/go-sequence@latest
\n

then in your app,

\n
import (\n\t"github.com/0xsequence/go-sequence/relayer"\n)
","isPage":false,"text":"\ngo get -u github.com/0xsequence/go-sequence@latest\nthen in your app,\nimport (\n\t"github.com/0xsequence/go-sequence/relayer"\n)","title":"Go Installation","titles":["Installation",null]},"50":{"href":"/api/relayer/overview#relayer-api","html":"\n\n

The Sequence Relayer service offers a simple interface for dispatching meta-transactions on Ethereum-compatible networks.

\n

Meta-transactions are the idea of a transaction inside of a transaction. The benefits of Sequence meta-transactions are that they allow:

\n\n

The best part: transactions with Sequence Relayer are compatible with any existing/deployed Ethereum contract, and thus, integrating the Sequence Relayer doesn't require any changes to your contracts or dapp.

\n

The Sequence Relayer is usable by frontend dapps, or even in your backends. Be sure to install the corresponding SDK for your preferred language such as Typescript or Go.

\n","isPage":true,"text":"\nRelayer API documentation and endpoints\nThe Sequence Relayer service offers a simple interface for dispatching meta-transactions on Ethereum-compatible networks.\nMeta-transactions are the idea of a transaction inside of a transaction. The benefits of Sequence meta-transactions are that they allow:\n\nGas abstraction -- whereby users can pay for network gas in a variety of tokens (ie. USDC, DAI, etc.)\nSponsored gas -- projects may sponsor the gas of specific contracts to allow free gas for their users\nBatched transactions -- group a bunch of independent transactions and allow them to be mined as a single transaction\nParallel transactions -- parallelize the dispatch of transactions in some cases\nFire + forget model -- easily send transactions to the relayer which will automatically manage nonces, bump gas, and other features which will ensure fast delivery\nOptimal gas pricing for transactions\n\nThe best part: transactions with Sequence Relayer are compatible with any existing/deployed Ethereum contract, and thus, integrating the Sequence Relayer doesn't require any changes to your contracts or dapp.\nThe Sequence Relayer is usable by frontend dapps, or even in your backends. Be sure to install the corresponding SDK for your preferred language such as Typescript or Go.\n","title":"Relayer API","titles":[]},"51":{"href":"/api/relayer/overview#anatomy-of-a-sequence-transaction-bundle","html":"\n

A Sequence transaction bundle consists of three things:

\n
    \n
  1. A list of Sequence transactions
  2. \n
  3. A Sequence nonce
  4. \n
  5. A Sequence signature
  6. \n
\n

Like Ethereum accounts, Sequence wallets use nonces to enforce transaction ordering and protect against replay attacks.\nUnlike Ethereum accounts, Sequence wallets have a virtually unlimited supply of independent nonces, allowing multiple independent transactions to be executed in parallel.\nA Sequence nonce is encoded as a 160-bit nonce space followed by the 96-bit nonce for that nonce space, big-endian.

\n
|<------------------------- uint256 -------------------------->|\n|<------ nonce space (160 bits) ------>||<- nonce (96 bits) -->|\nssssssssssssssssssssssssssssssssssssssssnnnnnnnnnnnnnnnnnnnnnnnn
\n","isPage":false,"text":"\nA Sequence transaction bundle consists of three things:\n\nA list of Sequence transactions\nA Sequence nonce\nA Sequence signature\n\nLike Ethereum accounts, Sequence wallets use nonces to enforce transaction ordering and protect against replay attacks.\nUnlike Ethereum accounts, Sequence wallets have a virtually unlimited supply of independent nonces, allowing multiple independent transactions to be executed in parallel.\nA Sequence nonce is encoded as a 160-bit nonce space followed by the 96-bit nonce for that nonce space, big-endian.\n|<------------------------- uint256 -------------------------->|\n|<------ nonce space (160 bits) ------>||<- nonce (96 bits) -->|\nssssssssssssssssssssssssssssssssssssssssnnnnnnnnnnnnnnnnnnnnnnnn\n","title":"Anatomy of a Sequence transaction bundle","titles":["Relayer API"]},"52":{"href":"/api/relayer/overview#gas-sponsorship-and-fees","html":"\n

The relayer only dispatches transactions that either:

\n
    \n
  1. Are sponsored in a project via the Sequence Builder, or
  2. \n
  3. Include a fee payment transaction to the relayer.
  4. \n
\n

You can sponsor:

\n
    \n
  1. Sequence wallets, so that they can send transactions without needing to pay fees,
  2. \n
  3. Token addresses, so that any user can send those tokens for free,
  4. \n
  5. Contracts, so that any user can interact with them for free,
  6. \n
  7. Arbitrary addresses, so that any user can transfer native tokens to it for free.
  8. \n
\n

To start sponsoring transactions, sign into https://sequence.build, and create a new project for the network you want to transact on.

\n

You can also pay the relayer directly to dispatch your transactions by adding an additional fee payment transaction to the relayer in your bundle.\nThe list of accepted fee tokens can be retrieved by calling the /FeeTokens endpoint for the network you are interested in:

\n
$ curl -s -X POST -H 'Content-Type: application/json' -d '{}' \\\n  https://mainnet-relayer.sequence.app/rpc/Relayer/FeeTokens | jq\n \n{\n  "isFeeRequired": true,\n  "tokens": [\n    {\n      "chainId": 1,\n      "name": "Matic",\n      "symbol": "MATIC",\n      "type": "ERC20_TOKEN",\n      "decimals": 18,\n      "logoURL": "https://raw.githubusercontent.com/spothq/cryptocurrency-icons/master/128/color/matic.png",\n      "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",\n      "tokenID": "0"\n    },\n    {\n      "chainId": 1,\n      "name": "USDC",\n      "symbol": "USDC",\n      "type": "ERC20_TOKEN",\n      "decimals": 6,\n      "logoURL": "https://logos.covalenthq.com/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png",\n      "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",\n      "tokenID": "0"\n    },\n    {\n      "chainId": 1,\n      "name": "Wrapped Ether",\n      "symbol": "WETH",\n      "type": "ERC20_TOKEN",\n      "decimals": 18,\n      "logoURL": "https://logos.covalenthq.com/tokens/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.png",\n      "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",\n      "tokenID": "0"\n    }\n  ]\n}
","isPage":false,"text":"\nThe relayer only dispatches transactions that either:\n\nAre sponsored in a project via the Sequence Builder, or\nInclude a fee payment transaction to the relayer.\n\nYou can sponsor:\n\nSequence wallets, so that they can send transactions without needing to pay fees,\nToken addresses, so that any user can send those tokens for free,\nContracts, so that any user can interact with them for free,\nArbitrary addresses, so that any user can transfer native tokens to it for free.\n\nTo start sponsoring transactions, sign into https://sequence.build, and create a new project for the network you want to transact on.\nYou can also pay the relayer directly to dispatch your transactions by adding an additional fee payment transaction to the relayer in your bundle.\nThe list of accepted fee tokens can be retrieved by calling the /FeeTokens endpoint for the network you are interested in:\n$ curl -s -X POST -H 'Content-Type: application/json' -d '{}' \\\n https://mainnet-relayer.sequence.app/rpc/Relayer/FeeTokens | jq\n \n{\n "isFeeRequired": true,\n "tokens": [\n {\n "chainId": 1,\n "name": "Matic",\n "symbol": "MATIC",\n "type": "ERC20_TOKEN",\n "decimals": 18,\n "logoURL": "https://raw.githubusercontent.com/spothq/cryptocurrency-icons/master/128/color/matic.png",\n "contractAddress": "0x7D1AfA7B718fb893dB30A3aBc0Cfc608AaCfeBB0",\n "tokenID": "0"\n },\n {\n "chainId": 1,\n "name": "USDC",\n "symbol": "USDC",\n "type": "ERC20_TOKEN",\n "decimals": 6,\n "logoURL": "https://logos.covalenthq.com/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48.png",\n "contractAddress": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",\n "tokenID": "0"\n },\n {\n "chainId": 1,\n "name": "Wrapped Ether",\n "symbol": "WETH",\n "type": "ERC20_TOKEN",\n "decimals": 18,\n "logoURL": "https://logos.covalenthq.com/tokens/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2.png",\n "contractAddress": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2",\n "tokenID": "0"\n }\n ]\n}","title":"Gas sponsorship and fees","titles":["Relayer API"]},"53":{"href":"/guides/templates/template-in-game-wallet#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"54":{"href":"/guides/templates/template-in-game-wallet#try-a-demo","html":"\n\n","isPage":false,"text":"\nTry out seamless UX of our in-game wallet at our demo\n","title":"Try a Demo","titles":["Quickstart"]},"55":{"href":"/guides/templates/template-in-game-wallet#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our in-game wallet.\n","title":"Template","titles":["Quickstart"]},"56":{"href":"/guides/templates/template-in-game-wallet#getting-started","html":"\n","isPage":false,"text":"\n","title":"Getting Started","titles":["Quickstart"]},"57":{"href":"/guides/templates/template-in-game-wallet#sdk-installation","html":"\n

We provide TypeScript and Unity SDKs for the Embedded Wallet authentication system. You can install the TypeScript SDK with:

\n
pnpm install @0xsequence/waas
\n

For more information on the Unity Embedded Wallet SDK, please refer to the Unity SDK documentation

\n","isPage":false,"text":"\nWe provide TypeScript and Unity SDKs for the Embedded Wallet authentication system. You can install the TypeScript SDK with:\npnpm install @0xsequence/waas\nFor more information on the Unity Embedded Wallet SDK, please refer to the Unity SDK documentation\n","title":"SDK Installation","titles":["Quickstart","Getting Started"]},"58":{"href":"/guides/templates/template-in-game-wallet#project-setup","html":"\n

Sequence Embedded Wallet is currently only available as a closed beta. To start using the Embedded Wallet SDKs, you'll need to contact the Sequence team and acquire API credentials. Once this is done, you will be provided with two keys:

\n\n","isPage":false,"text":"\nSequence Embedded Wallet is currently only available as a closed beta. To start using the Embedded Wallet SDKs, you'll need to contact the Sequence team and acquire API credentials. Once this is done, you will be provided with two keys:\n\nProject access key\nEmbedded Wallet configuration key\n\n","title":"Project Setup","titles":["Quickstart","Getting Started"]},"59":{"href":"/guides/templates/template-in-game-wallet#library-setup","html":"\n

To start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:

\n
import { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'mumbai'\n}, defaults.TEST)
\n

Note that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.

","isPage":false,"text":"\nTo start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:\nimport { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'mumbai'\n}, defaults.TEST)\nNote that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.","title":"Library Setup","titles":["Quickstart","Getting Started"]},"60":{"href":"/sdk/go/overview#go","html":"\n

A complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.

\n

go-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.

\n","isPage":true,"text":"\nA complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.\ngo-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.\n","title":"Go","titles":[null,null]},"61":{"href":"/sdk/go/overview#ethkit","html":"\n

As part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.

","isPage":false,"text":"\nAs part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.","title":"ethkit","titles":[null,null]},"62":{"href":"/sdk/sequence-kit/checkout#overview","html":"\n

The checkout modal enables developers to easily facilitate cryptocurrency payments.

\n
\n
","isPage":true,"text":"\nThe checkout modal enables developers to easily facilitate cryptocurrency payments.\n\n","title":"Overview","titles":[]},"63":{"href":"/sdk/sequence-kit/checkout#integration","html":"
\n

To integrate the checkout feature, follow these steps:

\n
    \n
  1. Install the kit-checkout module:
  2. \n
\n
npm install @0xsequence/kit-checkout\n# or\npnpm install @0xsequence/kit-checkout\n# or\nyarn add @0xsequence/kit-checkout
\n
    \n
  1. Place the KitCheckoutProvider below the Sequence Kit Core provider in your app:
  2. \n
\n
import { KitCheckoutProvider } from '@0xsequence/kit-checkout'\n \n \nconst App = () => {\n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider>\n          <KitCheckoutProvider>\n            <Page />\n          </KitCheckoutProvider>\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  )\n}
\n","isPage":false,"text":"\nTo integrate the checkout feature, follow these steps:\n\nInstall the kit-checkout module:\n\nnpm install @0xsequence/kit-checkout\n# or\npnpm install @0xsequence/kit-checkout\n# or\nyarn add @0xsequence/kit-checkout\n\nPlace the KitCheckoutProvider below the Sequence Kit Core provider in your app:\n\nimport { KitCheckoutProvider } from '@0xsequence/kit-checkout'\n \n \nconst App = () => {\n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider>\n <KitCheckoutProvider>\n <Page />\n </KitCheckoutProvider>\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n )\n}\n","title":"Integration","titles":[]},"64":{"href":"/sdk/sequence-kit/checkout#opening-the-checkout-modal","html":"\n

Use the useCheckoutModal hook to open the checkout modal and pass a settings object:

\n
  import { useCheckoutModal } from '@0xsequence/kit-checkout'\n \n \n  const MyComponent = () => {\n    const { triggerCheckout } = useCheckoutModal()\n  \n    const onClick = () => {\n      const checkoutSettings = {...}\n      triggerCheckout(checkoutSettings)\n    }\n \n    return (\n      <button onClick={onClick}>checkout</button>\n    )\n  }
\n","isPage":false,"text":"\nUse the useCheckoutModal hook to open the checkout modal and pass a settings object:\n import { useCheckoutModal } from '@0xsequence/kit-checkout'\n \n \n const MyComponent = () => {\n const { triggerCheckout } = useCheckoutModal()\n \n const onClick = () => {\n const checkoutSettings = {...}\n triggerCheckout(checkoutSettings)\n }\n \n return (\n <button onClick={onClick}>checkout</button>\n )\n }\n","title":"Opening the Checkout modal","titles":["Integration"]},"65":{"href":"/sdk/sequence-kit/checkout#configuring-the-checkout-modal","html":"\n

Configure the checkout modal using the checkoutSettings object:

\n
const checkoutSettings = {\n  cryptoCheckout: {...},\n  orderSummaryItems: {...}\n}
\n","isPage":false,"text":"\nConfigure the checkout modal using the checkoutSettings object:\nconst checkoutSettings = {\n cryptoCheckout: {...},\n orderSummaryItems: {...}\n}\n","title":"Configuring the Checkout modal","titles":["Integration"]},"66":{"href":"/sdk/sequence-kit/checkout#crypto-checkout-configuration-cryptocheckout","html":"\n

The cryptoCheckout field specifies settings for checking out with cryptocurrency, e.g., interacting with a minting contract or marketplace contract.

\n

Example configuration:

\n
cons checkoutConfig = {\n  // ...\n  cryptoCheckout: {\n    chainId: 137,\n    triggerTransaction: async () => { console.log('triggered transaction') },\n    coinQuantity: {\n      contractAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',\n      amountRequiredRaw: '10000000000'\n    },\n  },\n}
\n","isPage":false,"text":"\nThe cryptoCheckout field specifies settings for checking out with cryptocurrency, e.g., interacting with a minting contract or marketplace contract.\nExample configuration:\ncons checkoutConfig = {\n // ...\n cryptoCheckout: {\n chainId: 137,\n triggerTransaction: async () => { console.log('triggered transaction') },\n coinQuantity: {\n contractAddress: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174',\n amountRequiredRaw: '10000000000'\n },\n },\n}\n","title":"Crypto Checkout Configuration (cryptoCheckout)","titles":["Integration","Configuring the Checkout modal"]},"67":{"href":"/sdk/sequence-kit/checkout#order-summary-configuration-ordersummaryitems","html":"\n

The orderSummaryItems field specifies the list of collectibles shown in the order summary.

\n

Example configuration:

\n
    orderSummaryItems: [\n      {\n        contractAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e',\n        tokenId: '66597',\n        quantityRaw: '100'\n      },\n    ]
","isPage":false,"text":"\nThe orderSummaryItems field specifies the list of collectibles shown in the order summary.\nExample configuration:\n orderSummaryItems: [\n {\n contractAddress: '0x631998e91476da5b870d741192fc5cbc55f5a52e',\n tokenId: '66597',\n quantityRaw: '100'\n },\n ]","title":"Order Summary Configuration (orderSummaryItems)","titles":["Integration","Configuring the Checkout modal"]},"68":{"href":"/sdk/sequence-kit/configuration#configuration-options","html":"\n

Developers can customize the Sequence Kit experience by passing configuration options to the KitProvider wrapper.

\n

Here's how you can configure the kit using these options:

\n
 \n  const kitConfig =  {\n\t\tdefaultTheme: 'light',\n\t\tposition: 'top-left',\n\t\t...\n\t}\n \n  <KitProvider config={kitConfig}>\n    <App />\n  <KitProvider>\n 
\n
","isPage":true,"text":"\nDevelopers can customize the Sequence Kit experience by passing configuration options to the KitProvider wrapper.\nHere's how you can configure the kit using these options:\n \n const kitConfig = {\n\t\tdefaultTheme: 'light',\n\t\tposition: 'top-left',\n\t\t...\n\t}\n \n <KitProvider config={kitConfig}>\n <App />\n <KitProvider>\n \n","title":"Configuration Options","titles":[]},"69":{"href":"/sdk/sequence-kit/configuration#available-options","html":"
\n","isPage":false,"text":"\n","title":"Available Options","titles":[]},"70":{"href":"/sdk/sequence-kit/configuration#defaulttheme","html":"\n
TypeDefault
string or objectdark
\n

The defaultTheme determines the color palette used for styling the modal. Possible values include:

\n\n

Specific colors can be overwritten by passing a theme override object. The Sequence Builder provides a useful playground for toying with the colors in Sequence Kit.

\n","isPage":false,"text":"\nTypeDefaultstring or objectdark\nThe defaultTheme determines the color palette used for styling the modal. Possible values include:\n\n'light'\n'dark'\nobject\n\nSpecific colors can be overwritten by passing a theme override object. The Sequence Builder provides a useful playground for toying with the colors in Sequence Kit.\n","title":"defaultTheme","titles":["Available Options"]},"71":{"href":"/sdk/sequence-kit/configuration#position","html":"\n
TypeDefault
stringcenter
\n

The position parameter determines the location of the various modals on the screen. Possible values include:

\n\n","isPage":false,"text":"\nTypeDefaultstringcenter\nThe position parameter determines the location of the various modals on the screen. Possible values include:\n\ncenter\nmiddle-right\nmiddle-left\ntop-center\ntop-right\ntop-left\nbottom-center\nbottom-right\nbottom-left\n\n","title":"position","titles":["Available Options"]},"72":{"href":"/sdk/sequence-kit/configuration#sign-in-modal-configuration-signin","html":"\n

The signIn object is used to configure the sign in modal.

\n","isPage":false,"text":"\nThe signIn object is used to configure the sign in modal.\n","title":"Sign In Modal Configuration (signIn)","titles":["Available Options"]},"73":{"href":"/sdk/sequence-kit/configuration#signinlogourl","html":"\n
\n
TypeDefault
stringundefined
\n

URL of the logo to be shown in the sign in modal.

\n","isPage":false,"text":"\n\nTypeDefaultstringundefined\nURL of the logo to be shown in the sign in modal.\n","title":"signIn.logoUrl","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"74":{"href":"/sdk/sequence-kit/configuration#signinprojectname","html":"\n
\n
TypeDefault
stringundefined
\n

Name of the project to be shown in the sign in modal.

\n","isPage":false,"text":"\n\nTypeDefaultstringundefined\nName of the project to be shown in the sign in modal.\n","title":"signIn.projectName","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"75":{"href":"/sdk/sequence-kit/configuration#signinshowemailinput","html":"\n
\n
TypeDefault
booleantrue
\n

Determines whether the inline email input will be shown in the sign in modal.

\n","isPage":false,"text":"\n\nTypeDefaultbooleantrue\nDetermines whether the inline email input will be shown in the sign in modal.\n","title":"signIn.showEmailInput","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"76":{"href":"/sdk/sequence-kit/configuration#signinsocialauthoptions","html":"\n
\n
TypeDefault
string[]['google', 'facebook', 'twitch', 'apple']
\n

Determines which authentication options will be shown as social options in the sign in modal.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.

\n

For a full list of official connectors, see the connectors page.

\n","isPage":false,"text":"\n\nTypeDefaultstring[]['google', 'facebook', 'twitch', 'apple']\nDetermines which authentication options will be shown as social options in the sign in modal.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.\nFor a full list of official connectors, see the connectors page.\n","title":"signIn.socialAuthOptions","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"77":{"href":"/sdk/sequence-kit/configuration#signinwalletauthoptions","html":"\n
\n
TypeDefault
string[]['sequence', 'metamask', 'wallet-connect', 'coinbase-wallet']
\n

Determines which authentication options will be shown in the modal as web3 wallet options.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.

\n

For a full list of official connectors, see the connectors page.

\n","isPage":false,"text":"\n\nTypeDefaultstring[]['sequence', 'metamask', 'wallet-connect', 'coinbase-wallet']\nDetermines which authentication options will be shown in the modal as web3 wallet options.\nThe wallets will be displayed in the order they are passed in the array. The values correspond to the connector's id and a corresponding connector must be passed down to wagmi.\nFor a full list of official connectors, see the connectors page.\n","title":"signIn.walletAuthOptions","titles":["Available Options","Sign In Modal Configuration (signIn)"]},"78":{"href":"/sdk/sequence-kit/configuration#displayedassets","html":"\n
TypeDefault
[{ contractAddress: string, chainId: number }, ...]undefined
\n

If provided, this will determine which assets are to be displayed in the in-game wallet modal main view.\nBy passing a list of displayed assets, only assets from the provided list will be displayed in the main view.\nIn the case that no assets are provided, all owned assets can be displayed in the main view.

","isPage":false,"text":"\nTypeDefault[{ contractAddress: string, chainId: number }, ...]undefined\nIf provided, this will determine which assets are to be displayed in the in-game wallet modal main view.\nBy passing a list of displayed assets, only assets from the provided list will be displayed in the main view.\nIn the case that no assets are provided, all owned assets can be displayed in the main view.","title":"displayedAssets","titles":["Available Options"]},"79":{"href":"/sdk/sequence-kit/custom-connectors#custom-connectors-in-sequence-kit","html":"\n

Sequence Kit provides official connectors via the @0xsequence/kit-connectors package. However, you can also integrate custom connectors with Sequence Kit to support additional wallets. This guide will walk you through creating and using custom connectors.

\n","isPage":true,"text":"\nSequence Kit provides official connectors via the @0xsequence/kit-connectors package. However, you can also integrate custom connectors with Sequence Kit to support additional wallets. This guide will walk you through creating and using custom connectors.\n","title":"Custom Connectors in Sequence Kit","titles":[]},"80":{"href":"/sdk/sequence-kit/custom-connectors#creating-a-custom-connector","html":"\n

To create a custom connector, you can use an existing connector as a basis. For example, the Metamask Connector is a good starting point. Here's an example of how to create a custom connector:

\n
export const myCustomConnector = (options: MyCustomConnectorOptions) => ({\n  id: 'my-custom-connector',\n  name: 'My Custom Connector',\n  logoDark: MyCustomLogoDark,\n  logoLight: MyCustomLogoLight,\n  createConnector: () => {\n    const connector = myCustomConnector(options);\n    return connector;\n  },\n});
\n

Make sure to provide a unique id for your connector to avoid conflicts with other connectors. You can also customize fields such as name, logoDark, and logoLight to control how the connector appears in Sequence Kit.

\n

The createConnector function should return an initialized connector. Sequence Kit connectors are wrappers of Wagmi connectors, so you can use an official Wagmi connector if available, or create your own if needed.

\n

For more details on creating custom connectors, refer to Wagmi's guide on Custom Connectors.

\n
","isPage":false,"text":"\nTo create a custom connector, you can use an existing connector as a basis. For example, the Metamask Connector is a good starting point. Here's an example of how to create a custom connector:\nexport const myCustomConnector = (options: MyCustomConnectorOptions) => ({\n id: 'my-custom-connector',\n name: 'My Custom Connector',\n logoDark: MyCustomLogoDark,\n logoLight: MyCustomLogoLight,\n createConnector: () => {\n const connector = myCustomConnector(options);\n return connector;\n },\n});\nMake sure to provide a unique id for your connector to avoid conflicts with other connectors. You can also customize fields such as name, logoDark, and logoLight to control how the connector appears in Sequence Kit.\nThe createConnector function should return an initialized connector. Sequence Kit connectors are wrappers of Wagmi connectors, so you can use an official Wagmi connector if available, or create your own if needed.\nFor more details on creating custom connectors, refer to Wagmi's guide on Custom Connectors.\n","title":"Creating a Custom Connector","titles":["Custom Connectors in Sequence Kit"]},"81":{"href":"/sdk/sequence-kit/custom-connectors#using-custom-connectors","html":"
\n

When using custom connectors, you can't rely on the getDefaultConnectors utility function. Instead, you need to pass custom configurations to Sequence Kit.

\n

First, create a list of connectors, including your custom connector, and provide it to the Wagmi configuration:

\n
import { getKitConnectWallets } from '@0xsequence/kit';\n \nconst connectors = getKitConnectWallets([\n  google({\n    defaultNetwork: 137,\n    connect: {\n      app: 'my-app',\n      projectAccessKey: '<access-key>'\n    }\n  }),\n  // ... other connectors\n  myCustomConnector({ appName: 'my-app' }),\n]);\n \nconst config = createConfig({\n  transports,\n  connectors,\n  chains\n})
\n

Next, use your custom connector by specifying its id in either the socialAuthOptions or walletAuthOptions field of the Sequence Kit configuration:

\n
const kitConfig = {\n  signIn: {\n    socialAuthOptions: ['google', 'facebook'],\n    walletAuthOptions: ['metamask', 'my-custom-connector'],\n  }\n};\n \nreturn (\n  <WagmiConfig config={wagmiConfig}>\n    <QueryClientProvider client={queryClient}>\n      <KitProvider config={kitConfig}>\n        <App />\n      </KitProvider>\n    </QueryClientProvider>\n  </WagmiConfig>\n);
\n
","isPage":false,"text":"\nWhen using custom connectors, you can't rely on the getDefaultConnectors utility function. Instead, you need to pass custom configurations to Sequence Kit.\nFirst, create a list of connectors, including your custom connector, and provide it to the Wagmi configuration:\nimport { getKitConnectWallets } from '@0xsequence/kit';\n \nconst connectors = getKitConnectWallets([\n google({\n defaultNetwork: 137,\n connect: {\n app: 'my-app',\n projectAccessKey: '<access-key>'\n }\n }),\n // ... other connectors\n myCustomConnector({ appName: 'my-app' }),\n]);\n \nconst config = createConfig({\n transports,\n connectors,\n chains\n})\nNext, use your custom connector by specifying its id in either the socialAuthOptions or walletAuthOptions field of the Sequence Kit configuration:\nconst kitConfig = {\n signIn: {\n socialAuthOptions: ['google', 'facebook'],\n walletAuthOptions: ['metamask', 'my-custom-connector'],\n }\n};\n \nreturn (\n <WagmiConfig config={wagmiConfig}>\n <QueryClientProvider client={queryClient}>\n <KitProvider config={kitConfig}>\n <App />\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n);\n","title":"Using Custom Connectors","titles":[]},"82":{"href":"/sdk/sequence-kit/custom-connectors#share-your-custom-connectors","html":"
\n

Feel free to contribute your custom connectors by creating a pull request. This way, others can benefit from your work and enjoy seamless integration with Sequence Kit.

\n

Share the love ❤️ by expanding the ecosystem of custom connectors!

","isPage":false,"text":"\nFeel free to contribute your custom connectors by creating a pull request. This way, others can benefit from your work and enjoy seamless integration with Sequence Kit.\nShare the love ❤️ by expanding the ecosystem of custom connectors!","title":"Share Your Custom Connectors","titles":[]},"83":{"href":"/sdk/sequence-kit/getting-started#getting-started-with-sequence-kit","html":"\n

In this guide, we will walk you through installing Sequence Kit, triggering the connection modal, and displaying the embedded wallet in your application.

\n","isPage":true,"text":"\nIn this guide, we will walk you through installing Sequence Kit, triggering the connection modal, and displaying the embedded wallet in your application.\n","title":"Getting Started with Sequence Kit","titles":[]},"84":{"href":"/sdk/sequence-kit/getting-started#installing-sequence-kit-packages","html":"\n

Sequence Kit is modular, allowing you to install only the necessary packages. To get started, install the kit core package, the connectors package for interfacing with various wallet providers, and the wallet for the embedded wallet. Additionally, install other dependencies such as wagmi, viem, and 0xsequence.

\n
npm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\npnpm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\nyarn add @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query
\n
","isPage":false,"text":"\nSequence Kit is modular, allowing you to install only the necessary packages. To get started, install the kit core package, the connectors package for interfacing with various wallet providers, and the wallet for the embedded wallet. Additionally, install other dependencies such as wagmi, viem, and 0xsequence.\nnpm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\npnpm install @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n# or\nyarn add @0xsequence/kit @0xsequence/kit-connectors wagmi ethers@5.7.2 viem 0xsequence @tanstack/react-query\n","title":"Installing Sequence Kit Packages","titles":["Getting Started with Sequence Kit"]},"85":{"href":"/sdk/sequence-kit/getting-started#setting-up-the-kit-wrapper","html":"
\n

To utilize the core kit wrapper for connecting web3 wallets to your application, follow these steps:

\n
    \n
  1. Configure wagmi for your app. Below is a basic wagmi configuration. For advanced configurations, please refer to the wagmi documentation.
  2. \n
\n
import MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n  const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n  \n  const projectAccessKey = '<access-key>'\n \n  const connectors = getDefaultConnectors({\n    walletConnectProjectId: 'wallet-connect-id',\n    defaultChainId: 137,\n    appName: 'demo app',\n    projectAccessKey\n  })\n \n  const transports = {}\n \n  chains.forEach(chain => {\n    transports[chain.id] = http()\n  })\n  \n  const config = createConfig({\n    transports,\n    connectors,\n    chains\n  })\n \n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider>\n          <MyPage />\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  );\n}
\n
    \n
  1. Wrap your app with the KitProvider within the WagmiConfig wrapper.
  2. \n
\n
","isPage":false,"text":"\nTo utilize the core kit wrapper for connecting web3 wallets to your application, follow these steps:\n\nConfigure wagmi for your app. Below is a basic wagmi configuration. For advanced configurations, please refer to the wagmi documentation.\n\nimport MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n \n const projectAccessKey = '<access-key>'\n \n const connectors = getDefaultConnectors({\n walletConnectProjectId: 'wallet-connect-id',\n defaultChainId: 137,\n appName: 'demo app',\n projectAccessKey\n })\n \n const transports = {}\n \n chains.forEach(chain => {\n transports[chain.id] = http()\n })\n \n const config = createConfig({\n transports,\n connectors,\n chains\n })\n \n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider>\n <MyPage />\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n );\n}\n\nWrap your app with the KitProvider within the WagmiConfig wrapper.\n\n","title":"Setting Up the Kit Wrapper","titles":[]},"86":{"href":"/sdk/sequence-kit/getting-started#setting-up-the-embedded-wallet-wrapper","html":"
\n

To install the optional in-game wallet, add the KitWalletProvider below the KitProvider wrapper.

\n
import { KitWalletProvider } from '@0xsequence/kit-wallet'\n \n// ...\n \nconst App = () => {\n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider config={kitConfig}>\n          <KitWalletProvider>\n            <Page />\n          </KitWalletProvider>\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  )\n}
\n

The complete code will then look like this:

\n
import MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { KitWalletProvider } from '@0xsequence/kit-wallet'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n  const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n  \n  const projectAccessKey = '<access-key>'\n \n  const connectors = getDefaultConnectors({\n    walletConnectProjectId: 'wallet-connect-id',\n    defaultChainId: 137,\n    appName: 'demo app',\n    projectAccessKey\n  })\n \n  const transports = {}\n \n  chains.forEach(chain => {\n    transports[chain.id] = http()\n  })\n  \n  const config = createConfig({\n    transports,\n    connectors,\n    chains\n  })\n \n  return (\n    <WagmiConfig config={config}>\n      <QueryClientProvider client={queryClient}> \n        <KitProvider>\n          <KitWalletProvider>\n            <MyPage />\n          </KitWalletProvider>\n        </KitProvider>\n      </QueryClientProvider>\n    </WagmiConfig>\n  );\n}
\n
","isPage":false,"text":"\nTo install the optional in-game wallet, add the KitWalletProvider below the KitProvider wrapper.\nimport { KitWalletProvider } from '@0xsequence/kit-wallet'\n \n// ...\n \nconst App = () => {\n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider config={kitConfig}>\n <KitWalletProvider>\n <Page />\n </KitWalletProvider>\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n )\n}\nThe complete code will then look like this:\nimport MyPage from './components/MyPage'\nimport { KitProvider } from '@0xsequence/kit'\nimport { getDefaultConnectors } from '@0xsequence/kit-connectors'\nimport { KitWalletProvider } from '@0xsequence/kit-wallet'\nimport { QueryClient, QueryClientProvider } from '@tanstack/react-query'\nimport { createConfig, http, WagmiProvider } from 'wagmi'\nimport { mainnet, polygon, Chain } from 'wagmi/chains'\n \nconst queryClient = new QueryClient() \n \nfunction App() {\n const chains = [mainnet, polygon] as [Chain, ...Chain[]]\n \n const projectAccessKey = '<access-key>'\n \n const connectors = getDefaultConnectors({\n walletConnectProjectId: 'wallet-connect-id',\n defaultChainId: 137,\n appName: 'demo app',\n projectAccessKey\n })\n \n const transports = {}\n \n chains.forEach(chain => {\n transports[chain.id] = http()\n })\n \n const config = createConfig({\n transports,\n connectors,\n chains\n })\n \n return (\n <WagmiConfig config={config}>\n <QueryClientProvider client={queryClient}> \n <KitProvider>\n <KitWalletProvider>\n <MyPage />\n </KitWalletProvider>\n </KitProvider>\n </QueryClientProvider>\n </WagmiConfig>\n );\n}\n","title":"Setting Up the Embedded Wallet Wrapper","titles":[]},"87":{"href":"/sdk/sequence-kit/getting-started#triggering-the-connect-modal","html":"
\n
\n

Invoke the connect modal using the useOpenConnectModal hook.

\n
import { useOpenConnectModal } from '@0xsequence/kit'\nimport { useDisconnect, useAccount } from 'wagmi'\n \n \nconst MyReactComponent = () => {\n  const { setOpenConnectModal } = useOpenConnectModal()\n \n  const { isConnected } = useAccount()\n \n  const onClick = () => {\n    setOpenConnectModal(true)\n  }\n \n  return (\n    <>\n      {!isConnected && (\n        <button onClick={onClick}>\n          Sign in\n        </button>\n      )}\n    </>\n  )\n}
\n

The modal will automatically close once the user signs in. You can utilize the useAccount hook from wagmi to detect the user's connection status.

\n
","isPage":false,"text":"\n\nInvoke the connect modal using the useOpenConnectModal hook.\nimport { useOpenConnectModal } from '@0xsequence/kit'\nimport { useDisconnect, useAccount } from 'wagmi'\n \n \nconst MyReactComponent = () => {\n const { setOpenConnectModal } = useOpenConnectModal()\n \n const { isConnected } = useAccount()\n \n const onClick = () => {\n setOpenConnectModal(true)\n }\n \n return (\n <>\n {!isConnected && (\n <button onClick={onClick}>\n Sign in\n </button>\n )}\n </>\n )\n}\nThe modal will automatically close once the user signs in. You can utilize the useAccount hook from wagmi to detect the user's connection status.\n","title":"Triggering the Connect Modal","titles":[]},"88":{"href":"/sdk/sequence-kit/getting-started#invoking-the-embedded-wallet-modal","html":"
\n
\n

Open the embedded wallet using the useOpenWalletModal react hook.

\n
import { useOpenWalletModal } from '@0xsequence/kit-wallet'\n \nconst MyComponent = () => {\n  const { setOpenWalletModal } = useOpenWalletModal()\n \n  const onClick = () => {\n    setOpenWalletModal(true)\n  }\n \n  return (\n    <button onClick={onClick}>open wallet</button>\n  )\n}
\n
","isPage":false,"text":"\n\nOpen the embedded wallet using the useOpenWalletModal react hook.\nimport { useOpenWalletModal } from '@0xsequence/kit-wallet'\n \nconst MyComponent = () => {\n const { setOpenWalletModal } = useOpenWalletModal()\n \n const onClick = () => {\n setOpenWalletModal(true)\n }\n \n return (\n <button onClick={onClick}>open wallet</button>\n )\n}\n","title":"Invoking the embedded wallet modal","titles":[]},"89":{"href":"/sdk/sequence-kit/getting-started#react-example","html":"
\n

The Sequence Kit Github repository contains an example app that you can use for learning and testing.

","isPage":false,"text":"\nThe Sequence Kit Github repository contains an example app that you can use for learning and testing.","title":"React Example","titles":[]},"90":{"href":"/sdk/sequence-kit/overview#sequencekit-sdk","html":"\n

Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.

\n","isPage":true,"text":"\nSequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.\n","title":"SequenceKit SDK","titles":[]},"91":{"href":"/sdk/sequence-kit/overview#key-features","html":"\n\n

Explore the potential of Sequence Kit by trying out our demo!

\n
","isPage":false,"text":"\n\n\nUniversal Connections: Seamlessly connect via popular social logins such as Facebook, Google, Discord, and more! Your users will enjoy a smooth, secure onboarding process. 🔐🪪\n\n\nWeb3 Wallet Integration: Effortlessly integrate with leading web3 wallets like WalletConnect and MetaMask. Unleash the power of blockchain with just a few clicks! 🦊 ⛓️\n\n\nEmbedded Wallet Experience: Provide your users with a comprehensive in-game wallet, enabling them to manage their coins and collectibles all within your own application. 👛 🖼️ 🪙\n\n\nExplore the potential of Sequence Kit by trying out our demo!\n","title":"Key Features","titles":["SequenceKit SDK"]},"92":{"href":"/sdk/sequence-kit/overview#next-steps","html":"
\n

Ready to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.

","isPage":false,"text":"\nReady to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.","title":"Next Steps","titles":[]},"93":{"href":"/sdk/unity/authentication#authentication","html":"\n

As a WaaS SDK, authentication is extremely important. Authentication works by establishing a session signing wallet through association with an OIDC idToken. For more on how our Embedded Wallet works, please see Embedded Wallet docs.

\n

To implement authentication, we recommend using our LoginPanel prefab. Locate this prefab under SequenceExamples > Prefabs and drag it under a Canvas in your scene.\nWe recommend having the Canvas Scaler component attached to your Canvas use the "Scale with Screen Size" UI Scale Mode. This will make it so that the LoginPanel (and any other UI elements under this Canvas) are scaled automatically when switching between build targets.

\n

Note: The LoginPanel is hidden by default. You can open it with the Open method and no arguments. To help with this, the LoginPanel GameObject is not disabled, so feel free to use GetComponentInChildren, FindObjectOfType, or similar to obtain a reference to the LoginPanel MonoBehaviour.

\n

This will provide you easy access to two authentication methods:

\n","isPage":true,"text":"\nAs a WaaS SDK, authentication is extremely important. Authentication works by establishing a session signing wallet through association with an OIDC idToken. For more on how our Embedded Wallet works, please see Embedded Wallet docs.\nTo implement authentication, we recommend using our LoginPanel prefab. Locate this prefab under SequenceExamples > Prefabs and drag it under a Canvas in your scene.\nWe recommend having the Canvas Scaler component attached to your Canvas use the "Scale with Screen Size" UI Scale Mode. This will make it so that the LoginPanel (and any other UI elements under this Canvas) are scaled automatically when switching between build targets.\nNote: The LoginPanel is hidden by default. You can open it with the Open method and no arguments. To help with this, the LoginPanel GameObject is not disabled, so feel free to use GetComponentInChildren, FindObjectOfType, or similar to obtain a reference to the LoginPanel MonoBehaviour.\nThis will provide you easy access to two authentication methods:\n","title":"Authentication","titles":[]},"94":{"href":"/sdk/unity/authentication#1-email-sign-in","html":"\n

Available on all platforms, email sign in leverages Amazon Cognito and provides the user with a 2FA challenge - a 6 digit code emailed to the entered address for the user to enter on the next page.\nOnce the user successfully completes the 2FA challenge, the SDK will receive an idToken in JWT format from Amazon Cognito and proceed to establish the session with WaaS API.

\n","isPage":false,"text":"\nAvailable on all platforms, email sign in leverages Amazon Cognito and provides the user with a 2FA challenge - a 6 digit code emailed to the entered address for the user to enter on the next page.\nOnce the user successfully completes the 2FA challenge, the SDK will receive an idToken in JWT format from Amazon Cognito and proceed to establish the session with WaaS API.\n","title":"1. Email Sign In","titles":["Authentication"]},"95":{"href":"/sdk/unity/authentication#2-social-sign-in","html":"\n

Available on all platforms except WebGL (currently), social sign in uses OIDC with the implicit flow to allow users to login via their existing Google, Discord, Facebook, or Apple accounts.\nOnce the user successfully signs in, an idToken is returned via deep link to the application.\nIn order to enable deep linking, we must register a custom URL scheme for our application. There are some platform specific requirements to set this up.

\nNote: social sign in does not work in the Editor as we cannot register a custom URL scheme.\n","isPage":false,"text":"\nAvailable on all platforms except WebGL (currently), social sign in uses OIDC with the implicit flow to allow users to login via their existing Google, Discord, Facebook, or Apple accounts.\nOnce the user successfully signs in, an idToken is returned via deep link to the application.\nIn order to enable deep linking, we must register a custom URL scheme for our application. There are some platform specific requirements to set this up.\nNote: social sign in does not work in the Editor as we cannot register a custom URL scheme.\n","title":"2. Social Sign in","titles":["Authentication"]},"96":{"href":"/sdk/unity/authentication#ios","html":"\n
    \n
  1. Open the iOS Player Settings window (menu: Edit > Project Settings > Player Settings, then select iOS).
  2. \n
  3. Select Other Settings, then scroll down to Configuration.
  4. \n
  5. Expand the Supported URL schemes section, and add 1 to the size.
  6. \n
  7. In the new Element N field, enter the URL scheme you've configured in SequenceConfig.
  8. \n
\n

\"iOS

\n","isPage":false,"text":"\n\nOpen the iOS Player Settings window (menu: Edit > Project Settings > Player Settings, then select iOS).\nSelect Other Settings, then scroll down to Configuration.\nExpand the Supported URL schemes section, and add 1 to the size.\nIn the new Element N field, enter the URL scheme you've configured in SequenceConfig.\n\n\n","title":"iOS","titles":["Authentication","2. Social Sign in"]},"97":{"href":"/sdk/unity/authentication#macos","html":"\n
    \n
  1. Open the Windows/Mac/Linux Player Settings window (menu: Edit > Project Settings > Player Settings, then select Windows/Mac/Linux).
  2. \n
  3. Select Other Settings, then scroll down to Mac Configuration.
  4. \n
  5. Expand the Supported URL schemes section, and add 1 to the size.
  6. \n
  7. In the new Element N field, enter the URL scheme you've configured in SequenceConfig.
  8. \n
\n

\"Mac

\n","isPage":false,"text":"\n\nOpen the Windows/Mac/Linux Player Settings window (menu: Edit > Project Settings > Player Settings, then select Windows/Mac/Linux).\nSelect Other Settings, then scroll down to Mac Configuration.\nExpand the Supported URL schemes section, and add 1 to the size.\nIn the new Element N field, enter the URL scheme you've configured in SequenceConfig.\n\n\n","title":"MacOS","titles":["Authentication","2. Social Sign in"]},"98":{"href":"/sdk/unity/authentication#pc","html":"\n

No additional steps required.

\n","isPage":false,"text":"\nNo additional steps required.\n","title":"PC","titles":["Authentication","2. Social Sign in"]},"99":{"href":"/sdk/unity/authentication#android","html":"\n
    \n
  1. In the Project window, browse to Assets > Plugins > Android.
  2. \n
\n

a) Note: in Unity versions 2021.2 and up this path doesn't exist by default. Please navigate to Edit > Project Settings > Player and under the Android Publishing Settings, enable Custom Main Manifest in the Build section. See https://docs.unity3d.com/Manual/deep-linking-android.html for more info.

\n
    \n
  1. If it doesn't already exist, create a new file and name it AndroidManifest.xml.
  2. \n
  3. Paste the following XML into the file, or, if you already have one, add the new keys from this XML to it.
  4. \n
  5. Make sure to replace 'sdk-powered-by-sequence' with the Url Scheme you set in SequenceConfig
  6. \n
\n
   <?xml version="1.0" encoding="utf-8"?>\n   <manifest\n     xmlns:android="http://schemas.android.com/apk/res/android"\n     xmlns:tools="http://schemas.android.com/tools"\n   >\n     <application>\n       <activity\n         android:name="com.unity3d.player.UnityPlayerActivity"\n         android:theme="@style/UnityThemeSelector"\n       >\n         <intent-filter>\n           <action android:name="android.intent.action.MAIN" />\n           <category android:name="android.intent.category.LAUNCHER" />\n         </intent-filter>\n         <intent-filter>\n           <action android:name="android.intent.action.VIEW" />\n           <category android:name="android.intent.category.DEFAULT" />\n           <category android:name="android.intent.category.BROWSABLE" />\n           <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n         </intent-filter>\n       </activity>\n     </application>\n   </manifest>
\n

b) Note: Unity 2022 versions prior to 2022.3.7f1 and 2023 versions prior to 2023.1.7f1, 2023.2.0b3, or 2023.3.0a1 contain a bug with Android deep-linking. Please use this XML instead.

\n
<?xml version="1.0" encoding="utf-8"?>\n<manifest\n        xmlns:android="http://schemas.android.com/apk/res/android"\n        xmlns:tools="http://schemas.android.com/tools"\n>\n    <application>\n        <activity\n                android:name="com.unity3d.player.UnityPlayerActivity"\n                android:theme="@style/UnityThemeSelector"\n                android:exported="true">\n            <intent-filter>\n                <action android:name="android.intent.action.MAIN" />\n                <category android:name="android.intent.category.LAUNCHER" />\n            </intent-filter>\n            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />\n            <intent-filter>\n                <action android:name="android.intent.action.VIEW" />\n                <category android:name="android.intent.category.DEFAULT" />\n                <category android:name="android.intent.category.BROWSABLE" />\n                <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n            </intent-filter>\n        </activity>\n    </application>\n</manifest>
\n

i.e. add <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> after your first intent-filter. Please see https://forum.unity.com/threads/deep-linking-in-unity-2022-the-app-is-restarted.1447300/ for more info.

\n","isPage":false,"text":"\n\nIn the Project window, browse to Assets > Plugins > Android.\n\na) Note: in Unity versions 2021.2 and up this path doesn't exist by default. Please navigate to Edit > Project Settings > Player and under the Android Publishing Settings, enable Custom Main Manifest in the Build section. See https://docs.unity3d.com/Manual/deep-linking-android.html for more info.\n\nIf it doesn't already exist, create a new file and name it AndroidManifest.xml.\nPaste the following XML into the file, or, if you already have one, add the new keys from this XML to it.\nMake sure to replace 'sdk-powered-by-sequence' with the Url Scheme you set in SequenceConfig\n\n <?xml version="1.0" encoding="utf-8"?>\n <manifest\n xmlns:android="http://schemas.android.com/apk/res/android"\n xmlns:tools="http://schemas.android.com/tools"\n >\n <application>\n <activity\n android:name="com.unity3d.player.UnityPlayerActivity"\n android:theme="@style/UnityThemeSelector"\n >\n <intent-filter>\n <action android:name="android.intent.action.MAIN" />\n <category android:name="android.intent.category.LAUNCHER" />\n </intent-filter>\n <intent-filter>\n <action android:name="android.intent.action.VIEW" />\n <category android:name="android.intent.category.DEFAULT" />\n <category android:name="android.intent.category.BROWSABLE" />\n <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n </intent-filter>\n </activity>\n </application>\n </manifest>\nb) Note: Unity 2022 versions prior to 2022.3.7f1 and 2023 versions prior to 2023.1.7f1, 2023.2.0b3, or 2023.3.0a1 contain a bug with Android deep-linking. Please use this XML instead.\n<?xml version="1.0" encoding="utf-8"?>\n<manifest\n xmlns:android="http://schemas.android.com/apk/res/android"\n xmlns:tools="http://schemas.android.com/tools"\n>\n <application>\n <activity\n android:name="com.unity3d.player.UnityPlayerActivity"\n android:theme="@style/UnityThemeSelector"\n android:exported="true">\n <intent-filter>\n <action android:name="android.intent.action.MAIN" />\n <category android:name="android.intent.category.LAUNCHER" />\n </intent-filter>\n <meta-data android:name="unityplayer.UnityActivity" android:value="true" />\n <intent-filter>\n <action android:name="android.intent.action.VIEW" />\n <category android:name="android.intent.category.DEFAULT" />\n <category android:name="android.intent.category.BROWSABLE" />\n <data android:scheme="sdk-powered-by-sequence"/> <!-- substitute 'sdk-powered-by-sequence' with the Url Scheme you set in `SequenceConfig` -->\n </intent-filter>\n </activity>\n </application>\n</manifest>\ni.e. add <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> after your first intent-filter. Please see https://forum.unity.com/threads/deep-linking-in-unity-2022-the-app-is-restarted.1447300/ for more info.\n","title":"Android","titles":["Authentication","2. Social Sign in"]},"100":{"href":"/sdk/unity/authentication#webgl","html":"\n

Coming soon.

\n","isPage":false,"text":"\nComing soon.\n","title":"WebGL","titles":["Authentication","2. Social Sign in"]},"101":{"href":"/sdk/unity/authentication#connecting-with-waas","html":"\n

Once we've received the idToken from either email login or social sign in, the SDK will handle connecting with WaaS servers for you. If you're curious how this is done, please see ConnectToWaaS in WaaSLogin.cs.\nYou'll want to subscribe to the WaaSWallet.OnWaaSWalletCreated event. This can be done with the following code snippet:

\n
WaaSWallet.OnWaaSWalletCreated += OnWaaSWalletCreatedHandler;\n\npublic void OnWaaSWalletCreatedHandler(WaaSWallet wallet) {\n  // Do something\n}
\n

where OnWaaSWalletCreatedHandler is a function accepting a WaaSWallet as it's only parameter. If you're unfamiliar with working with events in Unity, check out this great Reddit post!

\n

Congratulations! You've just connected your user with WaaS, creating them a new account and non-custodial smart contract wallet as needed.

","isPage":false,"text":"\nOnce we've received the idToken from either email login or social sign in, the SDK will handle connecting with WaaS servers for you. If you're curious how this is done, please see ConnectToWaaS in WaaSLogin.cs.\nYou'll want to subscribe to the WaaSWallet.OnWaaSWalletCreated event. This can be done with the following code snippet:\nWaaSWallet.OnWaaSWalletCreated += OnWaaSWalletCreatedHandler;\n\npublic void OnWaaSWalletCreatedHandler(WaaSWallet wallet) {\n // Do something\n}\nwhere OnWaaSWalletCreatedHandler is a function accepting a WaaSWallet as it's only parameter. If you're unfamiliar with working with events in Unity, check out this great Reddit post!\nCongratulations! You've just connected your user with WaaS, creating them a new account and non-custodial smart contract wallet as needed.","title":"Connecting with WaaS","titles":["Authentication"]},"102":{"href":"/sdk/unity/deploy-contracts#contract-deployment","html":"\n

While, in general, we would recommend deploying your smart contracts via the Builder, we recognize that there are some use cases where deploying a smart contract from Unity (or a Made-With-Unity application) is useful.

\n

Contract deployment involves sending a transaction, which is done via an asynchronous Task. You can use await when calling WaaSWallet.DeployContract from within an async Task if you wish to obtain the ContractDeploymentReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnDeployContractComplete and WaaSWallet.OnDeployContractFailed events and call the WaaSWallet.DeployContract method from anywhere (without await).

\n

WaaSWallet.DeployContract is essentially a wrapper for a very special WaaSWallet.SendTransaction call and therefore, you can expect to still receive the WaaSWallet.OnSendTransactionComplete or WaaSWallet.OnSendTransactionFailed events in addition.

\n
public void OnDeployContractCompleteHandler(SuccessfulContractDeploymentReturn result) {\n    Address newlyDeployedContractAddress = result.DeployedContractAddress;\n\n    // Do something\n}\n\npublic void OnDeployContractFailedHandler(FailedContractDeploymentReturn result) {\n    // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n    wallet.OnDeployContractComplete += OnDeployContractCompleteHandler;\n    wallet.OnDeployContractFailed += OnDeployContractFailedHandler;\n}
\n

If you're unfamiliar with working with events in Unity, check out this great Reddit post!

\n

To deploy a contract you'll need to first compile your smart contract code into bytecode and add the bytecode as a hexadecimal string in one of your C# scripts.

\n

To deploy a smart contract, you can use this code snippet:

\n
string bytecode = "Here you'll paste your compiled bytecode"\n_wallet.DeployContract(Chain.Polygon, bytecode);
","isPage":true,"text":"\nWhile, in general, we would recommend deploying your smart contracts via the Builder, we recognize that there are some use cases where deploying a smart contract from Unity (or a Made-With-Unity application) is useful.\nContract deployment involves sending a transaction, which is done via an asynchronous Task. You can use await when calling WaaSWallet.DeployContract from within an async Task if you wish to obtain the ContractDeploymentReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnDeployContractComplete and WaaSWallet.OnDeployContractFailed events and call the WaaSWallet.DeployContract method from anywhere (without await).\nWaaSWallet.DeployContract is essentially a wrapper for a very special WaaSWallet.SendTransaction call and therefore, you can expect to still receive the WaaSWallet.OnSendTransactionComplete or WaaSWallet.OnSendTransactionFailed events in addition.\npublic void OnDeployContractCompleteHandler(SuccessfulContractDeploymentReturn result) {\n Address newlyDeployedContractAddress = result.DeployedContractAddress;\n\n // Do something\n}\n\npublic void OnDeployContractFailedHandler(FailedContractDeploymentReturn result) {\n // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n wallet.OnDeployContractComplete += OnDeployContractCompleteHandler;\n wallet.OnDeployContractFailed += OnDeployContractFailedHandler;\n}\nIf you're unfamiliar with working with events in Unity, check out this great Reddit post!\nTo deploy a contract you'll need to first compile your smart contract code into bytecode and add the bytecode as a hexadecimal string in one of your C# scripts.\nTo deploy a smart contract, you can use this code snippet:\nstring bytecode = "Here you'll paste your compiled bytecode"\n_wallet.DeployContract(Chain.Polygon, bytecode);","title":"Contract Deployment","titles":[]},"103":{"href":"/sdk/unity/installation#installation","html":"\n","isPage":true,"text":"\n","title":"Installation","titles":[]},"104":{"href":"/sdk/unity/installation#package-manager---recommended","html":"\n
    \n
  1. Ensure you have Git 2.14.0 or above installed on your machine
  2. \n
  3. Open Package Manager (Window > Package Manager)
  4. \n
  5. Click the "+" icon in the Package Manager window > "Add package from git URL..."
  6. \n
  7. Paste this url and click Add or press Enter on your keyboard https://github.com/0xsequence/sequence-unity.git?path=/Assets
  8. \n
  9. From Package Manager, click on "Samples"
  10. \n
  11. Import "Setup" from Samples\n\"Setup\"/
  12. \n
\n

a) This will import a Resources folder with the SequenceConfig scriptable object (more on this in Setup).

\n

b) This will also import an Editor folder with a Post Process Build script that will setup social sign in for you automatically on MacOS and iOS.

\n
    \n
  1. Import TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.
  2. \n
\n

\"Import

\n","isPage":false,"text":"\n\nEnsure you have Git 2.14.0 or above installed on your machine\nOpen Package Manager (Window > Package Manager)\nClick the "+" icon in the Package Manager window > "Add package from git URL..."\nPaste this url and click Add or press Enter on your keyboard https://github.com/0xsequence/sequence-unity.git?path=/Assets\nFrom Package Manager, click on "Samples"\nImport "Setup" from Samples\n\n\na) This will import a Resources folder with the SequenceConfig scriptable object (more on this in Setup).\nb) This will also import an Editor folder with a Post Process Build script that will setup social sign in for you automatically on MacOS and iOS.\n\nImport TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.\n\n\n","title":"Package Manager - Recommended","titles":["Installation"]},"105":{"href":"/sdk/unity/installation#samples","html":"\n

In addition to this documentation, we've also provided you with a few samples to help with using our SDK.

\n

These can be found by:

\n
    \n
  1. Opening Package Manager
  2. \n
  3. Finding our SDK "Sequence WaaS SDK"
  4. \n
  5. Click on "Samples"
  6. \n
  7. Click "Import" next to any sample you wish to install. This will create a Samples folder under Assets and import the sample there. The sample will be completely mutable as it lives within your Assets folder.
  8. \n
\n

\"Samples\"/

\n

The second sample "Demo Scene" is sample scene that showcases some of the features of our SDK. It serves as a useful supplement to the documentation.

\n

The third sample "Demo Tower Defense Game" is a sample game. We began with Unity's Tower Defense Template project and ripped out the save system to replace it with ERC1155s. When importing this sample game into your project, you may get a message "Script Updating Consent" that asks if you want to update the source files to the a newer API. This is because the template project was made on a much earlier version of Unity and some of the scripting APIs used by Unity have changed since the template project was created. You can simply click "Yes, just for these files". Note that, in order to play the demo game, there is some config you need to setup. However, even without configuring the game, we believe the Scripts within the project can be a useful resource when starting out.

\n

\"Update

\n","isPage":false,"text":"\nIn addition to this documentation, we've also provided you with a few samples to help with using our SDK.\nThese can be found by:\n\nOpening Package Manager\nFinding our SDK "Sequence WaaS SDK"\nClick on "Samples"\nClick "Import" next to any sample you wish to install. This will create a Samples folder under Assets and import the sample there. The sample will be completely mutable as it lives within your Assets folder.\n\n\nThe second sample "Demo Scene" is sample scene that showcases some of the features of our SDK. It serves as a useful supplement to the documentation.\nThe third sample "Demo Tower Defense Game" is a sample game. We began with Unity's Tower Defense Template project and ripped out the save system to replace it with ERC1155s. When importing this sample game into your project, you may get a message "Script Updating Consent" that asks if you want to update the source files to the a newer API. This is because the template project was made on a much earlier version of Unity and some of the scripting APIs used by Unity have changed since the template project was created. You can simply click "Yes, just for these files". Note that, in order to play the demo game, there is some config you need to setup. However, even without configuring the game, we believe the Scripts within the project can be a useful resource when starting out.\n\n","title":"Samples","titles":["Installation","Package Manager - Recommended"]},"106":{"href":"/sdk/unity/installation#manual","html":"\n

Installing via Package Manager will put the SDK in a read-only state - note: you will still be able to modify the UI when using Package Manager.

\n

For most use cases, this is ideal. However, we recognize that some advanced users will want the flexibility to edit the SDK as they see fit.

\n

Please note that if you do chose this route that updating the SDK will become more challenging because any changes you make will be overwritten and these changes can easily go unnoticed in a version control system. In general, we feel it is safer to import the SDK in read-only mode via Package Manager and write wrappers to extend as needed, but we empower you to work with our SDK how you see fit.

\n
    \n
  1. Add Newtonsoft.json to your project (if it isn't there already) via package manager. Click on the "+" icon in the Package Manager window > "Add package by name..." and add com.unity.nuget.newtonsoft-json.
  2. \n
  3. Download the latest release of the Sequence Unity SDK UnityPackage
  4. \n
  5. Drag the .unitypackage file into your project window and import it
  6. \n
  7. Import TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.
  8. \n
","isPage":false,"text":"\nInstalling via Package Manager will put the SDK in a read-only state - note: you will still be able to modify the UI when using Package Manager.\nFor most use cases, this is ideal. However, we recognize that some advanced users will want the flexibility to edit the SDK as they see fit.\nPlease note that if you do chose this route that updating the SDK will become more challenging because any changes you make will be overwritten and these changes can easily go unnoticed in a version control system. In general, we feel it is safer to import the SDK in read-only mode via Package Manager and write wrappers to extend as needed, but we empower you to work with our SDK how you see fit.\n\nAdd Newtonsoft.json to your project (if it isn't there already) via package manager. Click on the "+" icon in the Package Manager window > "Add package by name..." and add com.unity.nuget.newtonsoft-json.\nDownload the latest release of the Sequence Unity SDK UnityPackage\nDrag the .unitypackage file into your project window and import it\nImport TMP Essentials (if you haven't already). Note: Unity should prompt you to do this automatically if you attempt to Play or Build with a TextMeshPro object in your scene.\n","title":"Manual","titles":["Installation"]},"107":{"href":"/sdk/unity/overview#introduction","html":"\n

The Sequence Unity Embedded Wallet SDK provides full Sequence Embedded Wallet and Indexer integration for your Unity Games, integrated with our own purpose-built for Unity SequenceEthereum library. That's right, no Nethereum required!

\n

This SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.

\n","isPage":true,"text":"\nThe Sequence Unity Embedded Wallet SDK provides full Sequence Embedded Wallet and Indexer integration for your Unity Games, integrated with our own purpose-built for Unity SequenceEthereum library. That's right, no Nethereum required!\nThis SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.\n","title":"Introduction","titles":[]},"108":{"href":"/sdk/unity/overview#requirements","html":"\n

Unity 2021.3.6f1 or later

\n","isPage":false,"text":"\nUnity 2021.3.6f1 or later\n\nAndroid\niOS\nPC standalone\nMac standalone -> (Mono builds only when using Social Sign in -> in our testing MacOS doesn't pick up custom URL schemes automatically unless you run some system commands first; these system commands only work on Mono -> see OpenIdAuthentication.PlatformSpecificSetup)\nWebGL (excluding Social Sign in)\n","title":"Requirements","titles":["Introduction"]},"109":{"href":"/sdk/unity/read-from-blockchain#read-from-blockchain","html":"\n

Reading from the blockchain is done using Unity-Native implementation of our Sequence Indexer.

\n

We recommend creating an instance of the ChainIndexer class. This will expose you to all the functionality offered by the IIndexer interface.

\n
IIndexer polygonIndexer = new ChainIndexer(Chain.Polygon);

ChainIndexer is essentially a wrapper of the Indexer static class which is fully documented here: https://docs.sequence.xyz/unity-sdk/indexer/guides.

","isPage":true,"text":"\nReading from the blockchain is done using Unity-Native implementation of our Sequence Indexer.\nWe recommend creating an instance of the ChainIndexer class. This will expose you to all the functionality offered by the IIndexer interface.\nIIndexer polygonIndexer = new ChainIndexer(Chain.Polygon);ChainIndexer is essentially a wrapper of the Indexer static class which is fully documented here: https://docs.sequence.xyz/unity-sdk/indexer/guides.","title":"Read from Blockchain","titles":[]},"110":{"href":"/sdk/unity/setup#setup","html":"\n
    \n
  1. \n

    Navigate to the Resources folder imported via the Setup sample and locate the SequenceConfig ScriptableObject

    \n

    a) If you imported the SDK manually, you will need to create a Resources folder and SequenceConfig

    \n

    b) Create a Resources folder located at Assets/Resources. The SDK uses Resources.Load to load the config ScriptableObject we'll create in the next step.

    \n

    c) On the top bar, click Assets > Create > Sequence > SequenceConfig and place the newly created ScriptableObject at the root of your Resources folder.

    \n
  2. \n
  3. \n

    Fill in SequenceConfig with the appropriate values for your project.

    \n

    a) Url Scheme - You must replace this with a string that is unique to your application. This is very important. Failure to do so will cause unexpected behaviour when signing in with social sign in and it will not work.

    \n

    b) Builder API Keys - These are found in the Builder under Settings > API Access Keys

    \n

    c) WaaS Config Key - This will be given to you by the Sequence team during WaaS onboarding

    \n
  4. \n
","isPage":true,"text":"\n\n\nNavigate to the Resources folder imported via the Setup sample and locate the SequenceConfig ScriptableObject\na) If you imported the SDK manually, you will need to create a Resources folder and SequenceConfig\nb) Create a Resources folder located at Assets/Resources. The SDK uses Resources.Load to load the config ScriptableObject we'll create in the next step.\nc) On the top bar, click Assets > Create > Sequence > SequenceConfig and place the newly created ScriptableObject at the root of your Resources folder.\n\n\nFill in SequenceConfig with the appropriate values for your project.\na) Url Scheme - You must replace this with a string that is unique to your application. This is very important. Failure to do so will cause unexpected behaviour when signing in with social sign in and it will not work.\nb) Builder API Keys - These are found in the Builder under Settings > API Access Keys\nc) WaaS Config Key - This will be given to you by the Sequence team during WaaS onboarding\n\n","title":"Setup","titles":[]},"111":{"href":"/sdk/unity/sign-messages#sign-messages","html":"\n

Signing a message is an asynchronous Task. You can use await when calling WaaSWallet.SignMessage from within an async Task if you wish to obtain the SignMessageReturn object directly. Or, you can take the recommended approach which is to setup a handler function for the WaaSWallet.OnSignMessageComplete event and call the WaaSWallet.SignMessage method from anywhere (without await). For example:

\n
public void OnSignMessageCompleteHandler(string signature) {\n    // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n    wallet.OnSignMessageComplete += OnSignMessageCompleteHandler;\n}
\n
_wallet.SignMessage(Chain.Polygon, "Message to sign");
\n

If you're unfamiliar with working with events in Unity, check out this great Reddit post!

","isPage":true,"text":"\nSigning a message is an asynchronous Task. You can use await when calling WaaSWallet.SignMessage from within an async Task if you wish to obtain the SignMessageReturn object directly. Or, you can take the recommended approach which is to setup a handler function for the WaaSWallet.OnSignMessageComplete event and call the WaaSWallet.SignMessage method from anywhere (without await). For example:\npublic void OnSignMessageCompleteHandler(string signature) {\n // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n wallet.OnSignMessageComplete += OnSignMessageCompleteHandler;\n}\n_wallet.SignMessage(Chain.Polygon, "Message to sign");\nIf you're unfamiliar with working with events in Unity, check out this great Reddit post!","title":"Sign Messages","titles":[]},"112":{"href":"/sdk/unity/wallet-ui#wallet-ui","html":"\n

As a Wallet as a Service product, this SDK requires no UI. However, as we expect some apps will still choose to provide some form of wallet UI to users, we are making efforts to provide a default UI for you to use.

\n

This UI can be found under SequenceExamples.

\n

To add the UI to your scene, you can add the WalletPanel prefab found under SequenceExamples > Prefabs. It is opened using the Open method; you must provide an IWallet (e.g. a WaaSWallet) as an argument.

\n

You'll notice that the UI is still a work in progress and is also using mocks in some places (fetching transaction history and prices). These will be replaced in coming updates of the SDK, but please feel free to replace them on your own (and for bonus points, submit a PR!).

\n","isPage":true,"text":"\nAs a Wallet as a Service product, this SDK requires no UI. However, as we expect some apps will still choose to provide some form of wallet UI to users, we are making efforts to provide a default UI for you to use.\nThis UI can be found under SequenceExamples.\nTo add the UI to your scene, you can add the WalletPanel prefab found under SequenceExamples > Prefabs. It is opened using the Open method; you must provide an IWallet (e.g. a WaaSWallet) as an argument.\nYou'll notice that the UI is still a work in progress and is also using mocks in some places (fetching transaction history and prices). These will be replaced in coming updates of the SDK, but please feel free to replace them on your own (and for bonus points, submit a PR!).\n","title":"Wallet UI","titles":[]},"113":{"href":"/sdk/unity/wallet-ui#how-it-works","html":"\n

The sample Sequence UI is comprised of a few important components.

\n","isPage":false,"text":"\nThe sample Sequence UI is comprised of a few important components.\n","title":"How It Works","titles":["Wallet UI"]},"114":{"href":"/sdk/unity/wallet-ui#ui-customizability","html":"\n

Built on Unity's UI system, the UI is entirely customizable. We encourage you to make it your own and "beautify" it to suit your app!

\n","isPage":false,"text":"\nBuilt on Unity's UI system, the UI is entirely customizable. We encourage you to make it your own and "beautify" it to suit your app!\n","title":"UI Customizability","titles":["Wallet UI"]},"115":{"href":"/sdk/unity/wallet-ui#color-scheme-manager","html":"\n

To help you with the process, we've added a basic ColorSchemeManager script which you can experiment with in our Demo scene, which can be imported via Package Manager.

\n

To use the ColorSchemeManager, please perform the following in edit mode.

\n
    \n
  1. Create a Color Scheme scriptable object by navigating to the top bar Assets > Create > Sequence > Color Scheme and give it an appropriate name.
  2. \n
  3. Set the desired colors in your new scriptable object - don't forget to set the alpha values! Unity defaults these to 0.
  4. \n
  5. Locate the ColorSchemeManager MonoBehaviour in your scene in the inspector. In our demo scene, this is attached to the SequenceCanvas gameObject.
  6. \n
  7. Set your newly created scriptable object as the Color Scheme.
  8. \n
  9. Click "Apply". Note that this may take a few seconds to apply and you may need to click apply multiple times due to the way Unity refreshes after changes in the inspector (version dependant).
  10. \n
\n

The ColorSchemeManager isn't meant to give you perfect results and the perfect UI right out of the gate, but we hope it saves you some time on the way there!

\n","isPage":false,"text":"\nTo help you with the process, we've added a basic ColorSchemeManager script which you can experiment with in our Demo scene, which can be imported via Package Manager.\nTo use the ColorSchemeManager, please perform the following in edit mode.\n\nCreate a Color Scheme scriptable object by navigating to the top bar Assets > Create > Sequence > Color Scheme and give it an appropriate name.\nSet the desired colors in your new scriptable object - don't forget to set the alpha values! Unity defaults these to 0.\nLocate the ColorSchemeManager MonoBehaviour in your scene in the inspector. In our demo scene, this is attached to the SequenceCanvas gameObject.\nSet your newly created scriptable object as the Color Scheme.\nClick "Apply". Note that this may take a few seconds to apply and you may need to click apply multiple times due to the way Unity refreshes after changes in the inspector (version dependant).\n\nThe ColorSchemeManager isn't meant to give you perfect results and the perfect UI right out of the gate, but we hope it saves you some time on the way there!\n","title":"Color Scheme Manager","titles":["Wallet UI","UI Customizability"]},"116":{"href":"/sdk/unity/wallet-ui#more-customization-tools-coming-soon","html":"\n

We hope to bring you more convenience tools to help you customize the UI quicker and easier! While we have ideas of our own, nobody understands your needs better than you do, so please don't hesitate to reach out to us with any ideas you have! Or better yet, submit a PR!

","isPage":false,"text":"\nWe hope to bring you more convenience tools to help you customize the UI quicker and easier! While we have ideas of our own, nobody understands your needs better than you do, so please don't hesitate to reach out to us with any ideas you have! Or better yet, submit a PR!","title":"More Customization Tools Coming Soon","titles":["Wallet UI","UI Customizability"]},"117":{"href":"/sdk/unity/write-to-blockchain#write-to-blockchain","html":"\n

The blockchain can be thought of as a general-purpose, publically viewable and verified, database. To write to a blockchain, similar to with a typical database, you must make a transaction.

\n

Typically, creating a blockchain transaction is rather complex, but WaaS handles that complexity for you and exposes 5 types of Transactions.

\n

Sending a transaction is an asynchronous Task. You can use await when calling WaaSWallet.SendTransaction from within an async Task if you wish to obtain the TransactionReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnSendTransactionComplete and WaaSWallet.OnSendTransactionFailed events and call the WaaSWallet.SendTransaction method from anywhere (without await). For example:

\n
public void OnSendTransactionCompleteHandler(SuccessfulTransactionReturn result) {\n    // Do something\n}\n\npublic void OnSendTransactionFailedHandler(FailedTransactionReturn result) {\n    // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n    wallet.OnSendTransactionComplete += OnSendTransactionCompleteHandler;\n    wallet.OnSendTransactionFailed += OnSendTransactionFailedHandler;\n}
\n

If you're unfamiliar with working with events in Unity, check out this great Reddit post!

\n","isPage":true,"text":"\nThe blockchain can be thought of as a general-purpose, publically viewable and verified, database. To write to a blockchain, similar to with a typical database, you must make a transaction.\nTypically, creating a blockchain transaction is rather complex, but WaaS handles that complexity for you and exposes 5 types of Transactions.\nSending a transaction is an asynchronous Task. You can use await when calling WaaSWallet.SendTransaction from within an async Task if you wish to obtain the TransactionReturn object directly. Or, you can take the recommended approach which is to setup handler functions for the WaaSWallet.OnSendTransactionComplete and WaaSWallet.OnSendTransactionFailed events and call the WaaSWallet.SendTransaction method from anywhere (without await). For example:\npublic void OnSendTransactionCompleteHandler(SuccessfulTransactionReturn result) {\n // Do something\n}\n\npublic void OnSendTransactionFailedHandler(FailedTransactionReturn result) {\n // Do something\n}\n\npublic void OnWaaSWalletCreatedHander(WaaSWallet wallet) {\n wallet.OnSendTransactionComplete += OnSendTransactionCompleteHandler;\n wallet.OnSendTransactionFailed += OnSendTransactionFailedHandler;\n}\nIf you're unfamiliar with working with events in Unity, check out this great Reddit post!\n","title":"Write to Blockchain","titles":[]},"118":{"href":"/sdk/unity/write-to-blockchain#rawtransaction","html":"\n

The most basic form of a Transaction, a raw transaction is very useful to send ETH or the gas currency of the network you are interacting with to an Address.

\n

For example, to send one MATIC to 0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f you can use this snippet:

\n
_wallet.SendTransaction(\n    Chain.Polygon,\n    new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction("0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f", DecimalNormalizer.Normalize(1))\n    });
\n

where _wallet is a WaaSWallet.

\n

Note: the EVM does not support floating point numbers. As a result, token (and gas currency) values are represented by whole numbers and a "decimals" value. 1 ETH (or in the example above 1 MATIC) is represented as 1000000000000000000 (1 * 10^18) as ETH, MATIC, and most gas currencies have a "decimals" value of 18. DecimalNormalizer.Normalize (above) is a basic helper function that will return input value * 10^decimals and optionally accepts a "decimals" value as a second parameter (defaulting to 18 when not provided).

\n

Additionally, you can include data with a raw transaction in hexadecimal format as a string. For more on this, please see the advanced section of this documentation.

\n","isPage":false,"text":"\nThe most basic form of a Transaction, a raw transaction is very useful to send ETH or the gas currency of the network you are interacting with to an Address.\nFor example, to send one MATIC to 0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f you can use this snippet:\n_wallet.SendTransaction(\n Chain.Polygon,\n new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction("0x9766bf76b2E3e7BCB8c61410A3fC873f1e89b43f", DecimalNormalizer.Normalize(1))\n });\nwhere _wallet is a WaaSWallet.\nNote: the EVM does not support floating point numbers. As a result, token (and gas currency) values are represented by whole numbers and a "decimals" value. 1 ETH (or in the example above 1 MATIC) is represented as 1000000000000000000 (1 * 10^18) as ETH, MATIC, and most gas currencies have a "decimals" value of 18. DecimalNormalizer.Normalize (above) is a basic helper function that will return input value * 10^decimals and optionally accepts a "decimals" value as a second parameter (defaulting to 18 when not provided).\nAdditionally, you can include data with a raw transaction in hexadecimal format as a string. For more on this, please see the advanced section of this documentation.\n","title":"RawTransaction","titles":["Write to Blockchain"]},"119":{"href":"/sdk/unity/write-to-blockchain#senderc20","html":"\n

An ERC20 token is the fungible token standard. You can easily deploy an ERC20 contract and mint tokens using our Builder. Learn how in our Builder documentation.

\n

To send an ERC20 token transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new SendERC20(\n            erc20TokenAddress,\n            ToAddress,\n            AmountAsString),\n    });
\n

Note: as above, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format. Please make sure to include the optional "decimals" int parameter if your ERC20 token has a "decimals" value that is not 18. If you're not sure how many "decimals" your ERC20 has, this can be easily read on the Builder using the "decimals" method under "Read Contract".

\n","isPage":false,"text":"\nAn ERC20 token is the fungible token standard. You can easily deploy an ERC20 contract and mint tokens using our Builder. Learn how in our Builder documentation.\nTo send an ERC20 token transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new SendERC20(\n erc20TokenAddress,\n ToAddress,\n AmountAsString),\n });\nNote: as above, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format. Please make sure to include the optional "decimals" int parameter if your ERC20 token has a "decimals" value that is not 18. If you're not sure how many "decimals" your ERC20 has, this can be easily read on the Builder using the "decimals" method under "Read Contract".\n","title":"sendERC20","titles":["Write to Blockchain"]},"120":{"href":"/sdk/unity/write-to-blockchain#complex-erc20-interactions","html":"\n

For interactions with ERC20 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC20 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.

\n

First, you'll need to create an ERC20 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC20 standard (not recommended).

\n
ERC20 myToken = new ERC20(myTokenAddress);
\n

with this reference, you'll have access to all of the methods implemented by the ERC20 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:

\n
ERC20 myToken = new ERC20(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(myToken.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(amount))),\n    });
\n","isPage":false,"text":"\nFor interactions with ERC20 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC20 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.\nFirst, you'll need to create an ERC20 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC20 standard (not recommended).\nERC20 myToken = new ERC20(myTokenAddress);\nwith this reference, you'll have access to all of the methods implemented by the ERC20 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:\nERC20 myToken = new ERC20(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(myToken.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(amount))),\n });\n","title":"Complex ERC20 Interactions","titles":["Write to Blockchain","sendERC20"]},"121":{"href":"/sdk/unity/write-to-blockchain#senderc721","html":"\n

An ERC721 token is the non-fungible standard, you've probably heard of them as NFTs. You can easily deploy an ERC721 contract and mint tokens using our Builder. Learn how in our Builder documentation.

\n

To send an ERC721 token transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new SendERC721(\n            erc721TokenAddress,\n            ToAddress,\n            TokenIdAsString),\n    });
\n","isPage":false,"text":"\nAn ERC721 token is the non-fungible standard, you've probably heard of them as NFTs. You can easily deploy an ERC721 contract and mint tokens using our Builder. Learn how in our Builder documentation.\nTo send an ERC721 token transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new SendERC721(\n erc721TokenAddress,\n ToAddress,\n TokenIdAsString),\n });\n","title":"sendERC721","titles":["Write to Blockchain"]},"122":{"href":"/sdk/unity/write-to-blockchain#complex-erc721-interactions","html":"\n

For interactions with ERC721 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC21 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.

\n

First, you'll need to create an ERC721 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC721 standard (not recommended).

\n
ERC721 myToken = new ERC721(myTokenAddress);
\n

with this reference, you'll have access to all of the methods implemented by the ERC721 class. Any method that returns a CallContractFunction, e.g. SafeMint, can be used when creating a RawTransaction with WaaS. For example:

\n
ERC721 myToken = new ERC721(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(myToken.SafeMint(toAddress)),\n    });
\n","isPage":false,"text":"\nFor interactions with ERC721 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC21 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.\nFirst, you'll need to create an ERC721 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC721 standard (not recommended).\nERC721 myToken = new ERC721(myTokenAddress);\nwith this reference, you'll have access to all of the methods implemented by the ERC721 class. Any method that returns a CallContractFunction, e.g. SafeMint, can be used when creating a RawTransaction with WaaS. For example:\nERC721 myToken = new ERC721(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(myToken.SafeMint(toAddress)),\n });\n","title":"Complex ERC721 Interactions","titles":["Write to Blockchain","sendERC721"]},"123":{"href":"/sdk/unity/write-to-blockchain#senderc1155","html":"\n

An ERC1155 token is the multi token standard, often referred to as SFTs (semi-fungible tokens). As co-creators of the ERC1155 standard we are firm believers in its unparalleled usefulness for games. You can easily deploy an ERC1155 contract and mint tokens using our Builder. Learn how in our Builder documentation.

\n

To send an ERC1155 token transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new SendERC1155(\n            erc1155TokenAddress,\n            ToAddress,\n            new SendERC1155Values[]\n            {\n                new SendERC1155Values(TokenIdAsString, AmountAsString),\n                ...\n            }),\n    });
\n

Note: you can send multiple token ids from the same ERC1155 contract in a single transaction by including multiple SendERC1155Values objects in the transaction

\n","isPage":false,"text":"\nAn ERC1155 token is the multi token standard, often referred to as SFTs (semi-fungible tokens). As co-creators of the ERC1155 standard we are firm believers in its unparalleled usefulness for games. You can easily deploy an ERC1155 contract and mint tokens using our Builder. Learn how in our Builder documentation.\nTo send an ERC1155 token transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new SendERC1155(\n erc1155TokenAddress,\n ToAddress,\n new SendERC1155Values[]\n {\n new SendERC1155Values(TokenIdAsString, AmountAsString),\n ...\n }),\n });\nNote: you can send multiple token ids from the same ERC1155 contract in a single transaction by including multiple SendERC1155Values objects in the transaction\n","title":"sendERC1155","titles":["Write to Blockchain"]},"124":{"href":"/sdk/unity/write-to-blockchain#complex-erc1155-interactions","html":"\n

For interactions with ERC1155 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC1155 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.

\n

First, you'll need to create an ERC1155 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC1155 standard (not recommended).

\n
ERC1155 myToken = new ERC1155(myTokenAddress);
\n

with this reference, you'll have access to all of the methods implemented by the ERC1155 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:

\n
ERC1155 myToken = new ERC1155(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(myToken.Mint(toAddress, tokenId, amount)),\n    });
\n","isPage":false,"text":"\nFor interactions with ERC1155 tokens outside of basic transfers, you'll want to use our SequenceEthereum library provided with the SDK. We've created ERC1155 smart contract wrapper functions for your convenience that allow you to create and send RawTransactions with WaaS.\nFirst, you'll need to create an ERC1155 object by providing a contract address and optionally, an ABI string, if you are using a custom variation of the ERC1155 standard (not recommended).\nERC1155 myToken = new ERC1155(myTokenAddress);\nwith this reference, you'll have access to all of the methods implemented by the ERC1155 class. Any method that returns a CallContractFunction, e.g. Mint, can be used when creating a RawTransaction with WaaS. For example:\nERC1155 myToken = new ERC1155(myTokenAddress);\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(myToken.Mint(toAddress, tokenId, amount)),\n });\n","title":"Complex ERC1155 Interactions","titles":["Write to Blockchain","sendERC1155"]},"125":{"href":"/sdk/unity/write-to-blockchain#delayedencode","html":"\n

When calling a smart contract on an EVM-based network, the client goes through a complex process known as "ABI encoding" where the function signature you want to call as well as the parameters you're providing are encoded into a binary format. This process is complicated and error-prone so we've abstracted it all away so that you don't have to deal with it. But, if you're curious to learn how it works, please see this document.

\n

A DelayedEncode transaction allows you to call any method on an arbitrary smart contract, allowing us to handle the complicated ABI encoding process.

\n

To send a DelayedEncode transaction, you can use this code snippet:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n            ContractABIAsString,\n            ParametersAsObjectArray,\n            FunctionNameAsString)),\n    });
\n

Let's examine the above to get a better understanding of some of the variables that may be non-obvious.

\n

ValueAsString: This will usually be "0" unless you are calling a payable method denoted by the payable keyword in the smart contract definition. If you are calling a payable method, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format.

\n

ContractABIAsString: This can either be the entire ABI or just the function you plan on interacting with. If you're not familiar with ABIs, we'd recommend copy-pasting the function signature (with parameters) from the contract source code on Etherscan (or the appropriate block explorer for your network) and removing the whitespace and variable names.

\n

ParametersAsObjectArray: The parameters you want to provide to the method you wish to call. No need to provide the parameter names, just their values in the order they appear in the ABI. Provide parameters in string format when in doubt.

\n

FunctionNameAsString: The name of the function you want to call as it appears in the ABI (or source code). Exclude parentheses and parameters.

\n

Putting this together, an example of using delayed encode to call the "mint" function on an ERC20 would look like this:

\n
_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n    {\n        new DelayedEncode(ContractAddress, "0", new DelayedEncodeData(\n            "mint(address,uint256)",\n            new object[]\n            {\n                ToAddress, DecimalNormalizer.Normalize(1)\n            },\n            "mint")),\n    });
\n","isPage":false,"text":"\nWhen calling a smart contract on an EVM-based network, the client goes through a complex process known as "ABI encoding" where the function signature you want to call as well as the parameters you're providing are encoded into a binary format. This process is complicated and error-prone so we've abstracted it all away so that you don't have to deal with it. But, if you're curious to learn how it works, please see this document.\nA DelayedEncode transaction allows you to call any method on an arbitrary smart contract, allowing us to handle the complicated ABI encoding process.\nTo send a DelayedEncode transaction, you can use this code snippet:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n ContractABIAsString,\n ParametersAsObjectArray,\n FunctionNameAsString)),\n });\nLet's examine the above to get a better understanding of some of the variables that may be non-obvious.\nValueAsString: This will usually be "0" unless you are calling a payable method denoted by the payable keyword in the smart contract definition. If you are calling a payable method, it is recommended to use DecimalNormalizer.Normalize to convert the amount from human readable format to EVM format.\nContractABIAsString: This can either be the entire ABI or just the function you plan on interacting with. If you're not familiar with ABIs, we'd recommend copy-pasting the function signature (with parameters) from the contract source code on Etherscan (or the appropriate block explorer for your network) and removing the whitespace and variable names.\nParametersAsObjectArray: The parameters you want to provide to the method you wish to call. No need to provide the parameter names, just their values in the order they appear in the ABI. Provide parameters in string format when in doubt.\nFunctionNameAsString: The name of the function you want to call as it appears in the ABI (or source code). Exclude parentheses and parameters.\nPutting this together, an example of using delayed encode to call the "mint" function on an ERC20 would look like this:\n_wallet.SendTransaction(Chain.Polygon, new SequenceSDK.WaaS.Transaction[]\n {\n new DelayedEncode(ContractAddress, "0", new DelayedEncodeData(\n "mint(address,uint256)",\n new object[]\n {\n ToAddress, DecimalNormalizer.Normalize(1)\n },\n "mint")),\n });\n","title":"DelayedEncode","titles":["Write to Blockchain"]},"126":{"href":"/sdk/unity/write-to-blockchain#batch-transactions","html":"\n

Using the magic of the Sequence Smart Contract wallet, our SDK allows you to seemlessly batch transactions together. Batching transactions together is extremely beneficial as it provides material gas savings and allows you to create complex transactions, that either all pass or all fail, without deploying custom smart contracts for each bespoke use case, opening a whole new realm of design possibilities!

\n

Sending a batch transaction is easy! Simply include multiple transactions, of any type, in your transaction array when making the SendTransaction request.

\n

For example - sending a transaction of each type in a batch:

\n
_wallet.SendTransaction(\n    Chain.Polygon,\n    new SequenceSDK.WaaS.Transaction[]\n    {\n        new RawTransaction(ToAddress, DecimalNormalizer.Normalize(1)),\n        new SendERC20(\n            erc20TokenAddress,\n            ToAddress,\n            AmountAsString),\n        new RawTransaction(new ERC20(erc20TokenAddress).Burn(DecimalNormalizer.NormalizeAsBigInteger(amount))),\n        new SendERC721(\n            erc721TokenAddress,\n            ToAddress,\n            TokenIdAsString),\n        new SendERC1155(\n            erc1155TokenAddress,\n            ToAddress,\n            new SendERC1155Values[]\n            {\n                new SendERC1155Values(TokenIdAsString, AmountAsString),\n                ...\n            }),\n        new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n            ContractABIAsString,\n            ParametersAsObjectArray,\n            FunctionNameAsString)),\n    });
\n

Since these transactions are all batched into a single transaction by the Sequence Smart Contract Wallet before being submitted to the network, you will receive only one transaction receipt.

","isPage":false,"text":"\nUsing the magic of the Sequence Smart Contract wallet, our SDK allows you to seemlessly batch transactions together. Batching transactions together is extremely beneficial as it provides material gas savings and allows you to create complex transactions, that either all pass or all fail, without deploying custom smart contracts for each bespoke use case, opening a whole new realm of design possibilities!\nSending a batch transaction is easy! Simply include multiple transactions, of any type, in your transaction array when making the SendTransaction request.\nFor example - sending a transaction of each type in a batch:\n_wallet.SendTransaction(\n Chain.Polygon,\n new SequenceSDK.WaaS.Transaction[]\n {\n new RawTransaction(ToAddress, DecimalNormalizer.Normalize(1)),\n new SendERC20(\n erc20TokenAddress,\n ToAddress,\n AmountAsString),\n new RawTransaction(new ERC20(erc20TokenAddress).Burn(DecimalNormalizer.NormalizeAsBigInteger(amount))),\n new SendERC721(\n erc721TokenAddress,\n ToAddress,\n TokenIdAsString),\n new SendERC1155(\n erc1155TokenAddress,\n ToAddress,\n new SendERC1155Values[]\n {\n new SendERC1155Values(TokenIdAsString, AmountAsString),\n ...\n }),\n new DelayedEncode(ContractAddress, ValueAsString, new DelayedEncodeData(\n ContractABIAsString,\n ParametersAsObjectArray,\n FunctionNameAsString)),\n });\nSince these transactions are all batched into a single transaction by the Sequence Smart Contract Wallet before being submitted to the network, you will receive only one transaction receipt.","title":"Batch Transactions","titles":["Write to Blockchain"]},"127":{"href":"/sdk/unreal/api-integration#api-integration","html":"\n","isPage":true,"text":"\n","title":"API Integration","titles":[]},"128":{"href":"/sdk/unreal/api-integration#sequence-api","html":"\n

After you've completed initial authentication and have intercepted the credentials either through your UI or ours, to use the Sequence API you'll need to create a [USequenceWallet] by using:

\n
`[USequenceWallet * Api = USequenceWallet(CredentialsIn)]` or `[USequenceWallet * Api = USequenceWallet::Make(CredentialsIn, ProviderURL)]`
\n

Once you have your [USequenceWallet] UObject call [Api>RegisterSession(OnSuccess,GenericFailure)] this will register your credentials with the Sequence API. Note not calling Register prior to make any others calls will result in errors as a UserWallet hasn't been supplied until this point.

\n

`*

\n

Assuming you've setup your controlling Actor with the [Sequence_Pawn_Component_BP]\nThe sequence pawn component has functions to do the following:

\n

Setup Sequence (sets up the sequence based systems), requires playerController input

\n

Show GUI Shows the UI

\n

Hide GUI Hides the UI

\n

GUI Visible Simple Visibility test for the UI

\n

Switch Platform (Switches which mode the UI will be in and how it will be displayed)

\n

Note: this doesn't rotate the application into any one view it just make the UI responsive to that type of view.

\n

Modes:

\n\n

`*

\n","isPage":false,"text":"\nAfter you've completed initial authentication and have intercepted the credentials either through your UI or ours, to use the Sequence API you'll need to create a [USequenceWallet] by using:\n`[USequenceWallet * Api = USequenceWallet(CredentialsIn)]` or `[USequenceWallet * Api = USequenceWallet::Make(CredentialsIn, ProviderURL)]`\nOnce you have your [USequenceWallet] UObject call [Api>RegisterSession(OnSuccess,GenericFailure)] this will register your credentials with the Sequence API. Note not calling Register prior to make any others calls will result in errors as a UserWallet hasn't been supplied until this point.\n`*\nAssuming you've setup your controlling Actor with the [Sequence_Pawn_Component_BP]\nThe sequence pawn component has functions to do the following:\nSetup Sequence (sets up the sequence based systems), requires playerController input\nShow GUI Shows the UI\nHide GUI Hides the UI\nGUI Visible Simple Visibility test for the UI\nSwitch Platform (Switches which mode the UI will be in and how it will be displayed)\nNote: this doesn't rotate the application into any one view it just make the UI responsive to that type of view.\nModes:\n\nDesktop (default)\nMobile Portrait (Custom built for portrait mode reducing the X width where ever possible)\nMobile Landscape\n\n`*\n","title":"Sequence API","titles":["API Integration",null]},"129":{"href":"/sdk/unreal/api-integration#sequence-unreal-api","html":"\n

The Sequence Unreal plugin is broken up into a few different parts in order to manage all of the differing functionality. Here we'll go through each parts purpose then summarize how to use them all together below

\n

The SDK automatically stores credentials on disk in the following cases:

\n
    \n
  1. On Successful Auth
  2. \n
  3. On Successful Registering of a session
  4. \n
  5. On Successful Closing of a session
  6. \n
\n","isPage":false,"text":"\nThe Sequence Unreal plugin is broken up into a few different parts in order to manage all of the differing functionality. Here we'll go through each parts purpose then summarize how to use them all together below\nThe SDK automatically stores credentials on disk in the following cases:\n\nOn Successful Auth\nOn Successful Registering of a session\nOn Successful Closing of a session\n\n","title":"Sequence Unreal API","titles":["API Integration",null]},"130":{"href":"/sdk/unreal/api-integration#usequencewallet","html":"\n

To get a USequenceWallet call either:

\n
USequenceWallet::Make(FCredentials_BE CredentialsIn)\nUSequenceWallet::Make(FCredentials_BE CredentialsIn, FString ProviderURL)
\n

Where the Credentials you give are the credentials you received from the UAuthenticator when [AuthSuccess] fires, or you can use the call Auth->[GetStoredCredentials](), where Auth is of the type [UAuthenticator]. If you are using StoredCredentials please ensure they are valid by checking the wrapping Structs FStoredCredentials_BE.GetValid() flag returned from [GetStoredCredentials], the providerURL is the url of the provider you wish to use.

\n

Once you have your [USequenceWallet] UObject please ensure that you've registered the session using [RegisterSession] before attempting to make other calls to the API.

\n","isPage":false,"text":"\nTo get a USequenceWallet call either:\nUSequenceWallet::Make(FCredentials_BE CredentialsIn)\nUSequenceWallet::Make(FCredentials_BE CredentialsIn, FString ProviderURL)\nWhere the Credentials you give are the credentials you received from the UAuthenticator when [AuthSuccess] fires, or you can use the call Auth->[GetStoredCredentials](), where Auth is of the type [UAuthenticator]. If you are using StoredCredentials please ensure they are valid by checking the wrapping Structs FStoredCredentials_BE.GetValid() flag returned from [GetStoredCredentials], the providerURL is the url of the provider you wish to use.\nOnce you have your [USequenceWallet] UObject please ensure that you've registered the session using [RegisterSession] before attempting to make other calls to the API.\n","title":"USequenceWallet","titles":["API Integration",null]},"131":{"href":"/sdk/unreal/api-integration#sequence-api-methods","html":"\n

We make use of TFunctions with some callbacks:

\n
TSuccessCallback\nconst TFunction<void(FString)> OnResponse = `[Capturable variables]`(const FString& Response)\n{\n//callback body where we can process Response\n};\n \nFFailureCallback\nconst TFunction<void(FSequenceError)> OnFailureTest = `[Capturable variables]`(const FSequenceError& Error)\n{\n//callback body where we can process Error\n};
\n

One thing to be aware of is keep an eye on capturables if you have lots of nested TFunctions it's very easy to miss something and start over writing memory. If you require lots of nesting swapping to a better approach using UFUNCTION callbacks helps to avoid these problems similar to how things are done in [UAuthenticator.h/cpp]

","isPage":false,"text":"\nWe make use of TFunctions with some callbacks:\nTSuccessCallback\nconst TFunction<void(FString)> OnResponse = `[Capturable variables]`(const FString& Response)\n{\n//callback body where we can process Response\n};\n \nFFailureCallback\nconst TFunction<void(FSequenceError)> OnFailureTest = `[Capturable variables]`(const FSequenceError& Error)\n{\n//callback body where we can process Error\n};\nOne thing to be aware of is keep an eye on capturables if you have lots of nested TFunctions it's very easy to miss something and start over writing memory. If you require lots of nesting swapping to a better approach using UFUNCTION callbacks helps to avoid these problems similar to how things are done in [UAuthenticator.h/cpp]","title":"Sequence API Methods","titles":["API Integration",null]},"132":{"href":"/sdk/unreal/authentication#authentication","html":"\n","isPage":true,"text":"\n","title":"Authentication","titles":[]},"133":{"href":"/sdk/unreal/authentication#custom-ui-integration","html":"\n

In a C++ backend with a series of pass through [UFUNCTIONS] setup similarly to [SequenceBackendManager.h/.cpp]. Each of these calls are implemented in [UAuthenticator] you just need to pass through the data with YOUR UAuthenticator UObject

\n
//This call is platform dependent on windows & mac this is required for SSO WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nFString GetLoginURL(const ESocialSigninType& Type); \n \n//This Call is made after you've collected the ID_Token (Mac & Windows only) WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid SocialLogin(const FString& IDTokenIn);\n \n//This Call is made after you've collected the email address from the Users in the UI\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailLogin(const FString& EmailIn);\n \n//This is call is made after the Delegate `[AuthRequiresCode]` is fired\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailCode(const FString& CodeIn);\n \n//Optional call used to check if the credentials on disk are valid or not//\nUFUNCTION(BlueprintCallable, Category = "Login")\nbool StoredCredentialsValid();
\n

To start you'll want to create a [UAuthenticator] UObject like so [UAuthenticator + Auth = NewObject<UAuthenticator>()], this UObject manages the authentication side of Sequence.

\n

Be sure to bind to the Delegates for [AuthSuccess], [AuthFailure], [AuthRequiresCode] prior to making any signin calls You can bind to these delegates like so:

\n
this->authenticator->AuthRequiresCode.AddDynamic(this, &AYourClass::YourCallReadyToReceiveCode);\nthis->authenticator->AuthFailure.AddDynamic(this, &AYourClass::YourCallShowAuthFailureScreen);
\n

In the case of [AuthSuccess] since a parameter is also passed we bind to it like this

\n
FScriptDelegate del;\ndel.BindUFunction(this, "CallShowAuthSuccessScreen");\nthis->authenticator->AuthSuccess.Add(del);
\n

Where [CallShowAuthSuccessScreen] is defined in SequenceBackendManager.h like so:

\n
UFUNCTION()\nvoid CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn);
\n

And in SequenceBackendManager.cpp like so:

\n
void ASequenceBackendManager::CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn) \n{\nthis->Credentials = CredentialsIn;\nif (this->ShowAuthSuccessDelegate.IsBound())\n  this->ShowAuthSuccessDelegate.Broadcast(Credentials);\nelse\n  UE_LOG(LogTemp, Error, TEXT("`[Nothing bound to: ShowAuthSuccessDelegate]`"));\n}
\n","isPage":false,"text":"\nIn a C++ backend with a series of pass through [UFUNCTIONS] setup similarly to [SequenceBackendManager.h/.cpp]. Each of these calls are implemented in [UAuthenticator] you just need to pass through the data with YOUR UAuthenticator UObject\n//This call is platform dependent on windows & mac this is required for SSO WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nFString GetLoginURL(const ESocialSigninType& Type); \n \n//This Call is made after you've collected the ID_Token (Mac & Windows only) WIP\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid SocialLogin(const FString& IDTokenIn);\n \n//This Call is made after you've collected the email address from the Users in the UI\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailLogin(const FString& EmailIn);\n \n//This is call is made after the Delegate `[AuthRequiresCode]` is fired\nUFUNCTION(BlueprintCallable, CATEGORY = "Login")\nvoid EmailCode(const FString& CodeIn);\n \n//Optional call used to check if the credentials on disk are valid or not//\nUFUNCTION(BlueprintCallable, Category = "Login")\nbool StoredCredentialsValid();\nTo start you'll want to create a [UAuthenticator] UObject like so [UAuthenticator + Auth = NewObject<UAuthenticator>()], this UObject manages the authentication side of Sequence.\nBe sure to bind to the Delegates for [AuthSuccess], [AuthFailure], [AuthRequiresCode] prior to making any signin calls You can bind to these delegates like so:\nthis->authenticator->AuthRequiresCode.AddDynamic(this, &AYourClass::YourCallReadyToReceiveCode);\nthis->authenticator->AuthFailure.AddDynamic(this, &AYourClass::YourCallShowAuthFailureScreen);\nIn the case of [AuthSuccess] since a parameter is also passed we bind to it like this\nFScriptDelegate del;\ndel.BindUFunction(this, "CallShowAuthSuccessScreen");\nthis->authenticator->AuthSuccess.Add(del);\nWhere [CallShowAuthSuccessScreen] is defined in SequenceBackendManager.h like so:\nUFUNCTION()\nvoid CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn);\nAnd in SequenceBackendManager.cpp like so:\nvoid ASequenceBackendManager::CallShowAuthSuccessScreen(const FCredentials_BE& CredentialsIn) \n{\nthis->Credentials = CredentialsIn;\nif (this->ShowAuthSuccessDelegate.IsBound())\n this->ShowAuthSuccessDelegate.Broadcast(Credentials);\nelse\n UE_LOG(LogTemp, Error, TEXT("`[Nothing bound to: ShowAuthSuccessDelegate]`"));\n}\n","title":"Custom UI Integration","titles":["Authentication",null]},"134":{"href":"/sdk/unreal/authentication#email-based-authentication","html":"\n
    \n
  1. \n

    To start email based authentication you'll start it with this call [EmailLogin(const FString& EmailIn)], supplying an email you've collected from the User in your GUI.

    \n
  2. \n
  3. \n

    Next [AuthRequiresCode] will fire when the backend is ready to receive the Code from your UI. Collect this code from your GUI and send it to the authenticator using [EmailCode(CodeIn)].

    \n
  4. \n
  5. \n

    Finally [AuthSuccess] will fire with a Credentials_BE struct as a parameter. This is your non registered credentials from EmailAuth. You are done Email Based Auth.

    \n
  6. \n
\n","isPage":false,"text":"\n\n\nTo start email based authentication you'll start it with this call [EmailLogin(const FString& EmailIn)], supplying an email you've collected from the User in your GUI.\n\n\nNext [AuthRequiresCode] will fire when the backend is ready to receive the Code from your UI. Collect this code from your GUI and send it to the authenticator using [EmailCode(CodeIn)].\n\n\nFinally [AuthSuccess] will fire with a Credentials_BE struct as a parameter. This is your non registered credentials from EmailAuth. You are done Email Based Auth.\n\n\n","title":"Email based Authentication","titles":["Authentication",null]},"135":{"href":"/sdk/unreal/authentication#social-signin-based-authentication-on-desktop","html":"\n
    \n
  1. \n

    To start SSO based authentication with desktop you can either use your own implementation to get the necessary id_token or you can make use of Unreal's web browser plugin.

    \n
  2. \n
  3. \n

    With whatever implementation you chose you can forward the colleted id_token to the UAuthenticator object with [SocialLogin(const FString& IDTokenIn)], after which [AuthSuccess] will fire and you're done desktop based SSO.

    \n
  4. \n
\n","isPage":false,"text":"\n\n\nTo start SSO based authentication with desktop you can either use your own implementation to get the necessary id_token or you can make use of Unreal's web browser plugin.\n\n\nWith whatever implementation you chose you can forward the colleted id_token to the UAuthenticator object with [SocialLogin(const FString& IDTokenIn)], after which [AuthSuccess] will fire and you're done desktop based SSO.\n\n\n","title":"Social Signin based Authentication on Desktop","titles":["Authentication",null]},"136":{"href":"/sdk/unreal/authentication#social-signin-based-authentication-on-mobile","html":"\n

WIP

","isPage":false,"text":"\nWIP","title":"Social Signin based Authentication on Mobile","titles":["Authentication",null]},"137":{"href":"/sdk/unreal/installation#installation","html":"\n","isPage":true,"text":"\n","title":"Installation","titles":[]},"138":{"href":"/sdk/unreal/installation#credentials","html":"\n

Before you can use this plugin, you need to acquire the following credentials from Sequence:

\n\n

You can then add these credentials in the [Config.h] file under SequencePlugin/Source/SequencePlugin/Private/Config/Config.h.

\n","isPage":false,"text":"\nBefore you can use this plugin, you need to acquire the following credentials from Sequence:\n\nWaaSTenantKey: This key will be given to you by the Sequence team during WaaS onboarding\nProjectAccessKey: This key can be found in Sequence Builder under Settings > API Access Keys\n\nYou can then add these credentials in the [Config.h] file under SequencePlugin/Source/SequencePlugin/Private/Config/Config.h.\n","title":"Credentials","titles":["Installation"]},"139":{"href":"/sdk/unreal/installation#security","html":"\n

You must provide an encryption key implementation at [SequenceEncryptor.cpp] function [GetStoredKey]. This function must be implemented to provide a securely stored private key that will be used to encrypt and decrypt client information. Failure to do so will result in NO information being stored or in the event you do not use a securely stored key, can result in client information being stored insecurely on their systems.

","isPage":false,"text":"\nYou must provide an encryption key implementation at [SequenceEncryptor.cpp] function [GetStoredKey]. This function must be implemented to provide a securely stored private key that will be used to encrypt and decrypt client information. Failure to do so will result in NO information being stored or in the event you do not use a securely stored key, can result in client information being stored insecurely on their systems.","title":"Security","titles":["Installation"]},"140":{"href":"/sdk/unreal/overview#introduction","html":"\n

The Sequence Unreal Embedded Wallet SDK provides full Sequence Embedded Wallet and Indexer integration for games built on the Unreal Framework.

\n

This SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.

\n

Sequence Unreal SDK is only available as a private beta at the moment. To get access, get in touch with Sequence BD Team.

\n","isPage":true,"text":"\nThe Sequence Unreal Embedded Wallet SDK provides full Sequence Embedded Wallet and Indexer integration for games built on the Unreal Framework.\nThis SDK follows Semantic Versioning (major.minor.patch). While we're still in 0.x.y builds, API breaking changes can be made at any time. After 1.0.0, breaking changes will always cause a major version increment, non-breaking new features will cause a minor version increment, and bugfixes will cause a patch version increment.\nSequence Unreal SDK is only available as a private beta at the moment. To get access, get in touch with Sequence BD Team.\n","title":"Introduction","titles":[]},"141":{"href":"/sdk/unreal/overview#requirements","html":"\n","isPage":false,"text":"\n\nUnreal 5.2 or later\nAndroid\niOS\nPC standalone\nMac standalone\n","title":"Requirements","titles":["Introduction"]},"142":{"href":"/sdk/unreal/packaging#packaging","html":"\n

To set your system up for Packaging please refer to the following links:

\n\n","isPage":true,"text":"\nTo set your system up for Packaging please refer to the following links:\n\nWindows and macOS\nAndroid\niOS\n\n","title":"Packaging","titles":[]},"143":{"href":"/sdk/unreal/packaging#google-sso-setup","html":"\n

In order to be able to properly use Google Auth, create and place the Keystore file by following these instructions.

\n

You will also need to generate an [Android client ID] and a [Web Application client ID] for your application, as well as place the [Web Application client ID] in the Config/Config.h FAuthenticatorConfig.GoogleClientID field.

\n

Refer to these docs to generate [Android client ID] and [Web Application client ID].

\n

This guide helps explain how to collect SHA-1 key fingerprints for the [Android client ID].

\n","isPage":false,"text":"\nIn order to be able to properly use Google Auth, create and place the Keystore file by following these instructions.\nYou will also need to generate an [Android client ID] and a [Web Application client ID] for your application, as well as place the [Web Application client ID] in the Config/Config.h FAuthenticatorConfig.GoogleClientID field.\nRefer to these docs to generate [Android client ID] and [Web Application client ID].\nThis guide helps explain how to collect SHA-1 key fingerprints for the [Android client ID].\n","title":"Google SSO Setup","titles":["Packaging",null]},"144":{"href":"/sdk/unreal/packaging#ios","html":"\n

For iOS apps you also need to setup provisioning, following these docs.

\n","isPage":false,"text":"\nFor iOS apps you also need to setup provisioning, following these docs.\n","title":"iOS","titles":["Packaging",null]},"145":{"href":"/sdk/unreal/packaging#unreal-and-xcode-specifics","html":"\n

During the Unreal Package process there is a very high chance that it will fail due to a code signing error, in the event that this happens please take the following steps within XCode to get your packaged .app file

\n
    \n
  1. After packaging the project in Unreal, open the Xcode project (Sequence-unreal folder -> Intermediate -> ProjectFilesIOS -> SequenceUnreal.xcodeproj)
  2. \n
  3. Click on the project name on the left hand side to open up project settings
  4. \n
  5. Click the Build Phase Tab
  6. \n
  7. Click on the "+" icon at the top left
  8. \n
  9. Select Run Script
  10. \n
  11. Drag the new run script to one below from the last item in the phase list
  12. \n
  13. Expand the run script
  14. \n
  15. In the script box, add the following command: xattr -cr /path-to-your-project/sequence-unreal/Binaries/IOS/Payload/SequenceUnreal.app
  16. \n
  17. Click on the Build Settings tab
  18. \n
  19. Click on each item under the Architectures header that contains macOS and hit the delete key
  20. \n
  21. Click on the General tab
  22. \n
  23. Click on Mac and Applevision Pro under supported destinations and hit the delete key
  24. \n
  25. Now the project can be built (if the build fails at first, wait a few moments then try again. It can sometimes take a bit before the build registers the run script)
  26. \n
  27. Once you have finished running the project, and want to make changes to the code, REMEMBER to delete this xcodeproj file in the sequence-unreal folder to ensure that a new xcodeproj is creating when you packaging the project again.
  28. \n
","isPage":false,"text":"\nDuring the Unreal Package process there is a very high chance that it will fail due to a code signing error, in the event that this happens please take the following steps within XCode to get your packaged .app file\n\nAfter packaging the project in Unreal, open the Xcode project (Sequence-unreal folder -> Intermediate -> ProjectFilesIOS -> SequenceUnreal.xcodeproj)\nClick on the project name on the left hand side to open up project settings\nClick the Build Phase Tab\nClick on the "+" icon at the top left\nSelect Run Script\nDrag the new run script to one below from the last item in the phase list\nExpand the run script\nIn the script box, add the following command: xattr -cr /path-to-your-project/sequence-unreal/Binaries/IOS/Payload/SequenceUnreal.app\nClick on the Build Settings tab\nClick on each item under the Architectures header that contains macOS and hit the delete key\nClick on the General tab\nClick on Mac and Applevision Pro under supported destinations and hit the delete key\nNow the project can be built (if the build fails at first, wait a few moments then try again. It can sometimes take a bit before the build registers the run script)\nOnce you have finished running the project, and want to make changes to the code, REMEMBER to delete this xcodeproj file in the sequence-unreal folder to ensure that a new xcodeproj is creating when you packaging the project again.\n","title":"Unreal and Xcode Specifics","titles":["Packaging",null]},"146":{"href":"/sdk/unreal/setup#setup","html":"\n
    \n
  1. \n

    Once you have the the SequencePlugin folder, you'll need to go to your project directory and create a Plugins folder in it, then copy over the SequencePlugin folder into the Plugins folder. If a Plugins folder already exists just copy the SequencePlugin folder into it.

    \n
  2. \n
  3. \n

    Launch your project, then allow it to update the UProject Settings.

    \n
  4. \n
  5. \n

    To find the SequencePlugin content folder in your content drawer enable view plugin content

    \n
  6. \n
  7. \n

    If you wish to use the in built sequence UI for login\na) Create an [Actor] you wish to be responsible for the SequenceUI then attach the [Sequence_Pawn_Component_BP] to it\nb) Setup your [Actor] Blueprint similar to how it's setup in [Custom_Spectator_Pawn] being sure to bind to the delegate that gives you Credentials [Auth_Success_Forwarder]

    \n
  8. \n
  9. \n

    Once you have those credentials you'll need to forward them to your own C++ backend in order to use the Sequence API, an example of this can be found in the [Custom_Spectator_Pawn]. This Pawn inherits from a C++ class [Sqnc_Spec_Pawn], which implements a blueprint Callable function [SetupCredentials(FCredentials_BE CredentialsIn)]. This is callable within the child class [Custom_Spectator_Pawn]. Calling this function will forward the credentials to a C++ backend.

    \n
  10. \n
","isPage":true,"text":"\n\n\nOnce you have the the SequencePlugin folder, you'll need to go to your project directory and create a Plugins folder in it, then copy over the SequencePlugin folder into the Plugins folder. If a Plugins folder already exists just copy the SequencePlugin folder into it.\n\n\nLaunch your project, then allow it to update the UProject Settings.\n\n\nTo find the SequencePlugin content folder in your content drawer enable view plugin content\n\n\nIf you wish to use the in built sequence UI for login\na) Create an [Actor] you wish to be responsible for the SequenceUI then attach the [Sequence_Pawn_Component_BP] to it\nb) Setup your [Actor] Blueprint similar to how it's setup in [Custom_Spectator_Pawn] being sure to bind to the delegate that gives you Credentials [Auth_Success_Forwarder]\n\n\nOnce you have those credentials you'll need to forward them to your own C++ backend in order to use the Sequence API, an example of this can be found in the [Custom_Spectator_Pawn]. This Pawn inherits from a C++ class [Sqnc_Spec_Pawn], which implements a blueprint Callable function [SetupCredentials(FCredentials_BE CredentialsIn)]. This is callable within the child class [Custom_Spectator_Pawn]. Calling this function will forward the credentials to a C++ backend.\n\n","title":"Setup","titles":[]},"147":{"href":"/solutions/builder/analytics#analytics-in-builder","html":"\n

When you use Sequence, via our SDKs, to build your application, you can see key insights in Sequence Builder.\nYou don't need to do any additional work to see valuable metrics about your project, such as the number\nof connected wallets or daily transaction requests.

\n","isPage":true,"text":"\nWhen you use Sequence, via our SDKs, to build your application, you can see key insights in Sequence Builder.\nYou don't need to do any additional work to see valuable metrics about your project, such as the number\nof connected wallets or daily transaction requests.\n","title":"Analytics in Builder","titles":[]},"148":{"href":"/solutions/builder/analytics#how-it-works","html":"\n

When requests are made with Sequence SDKs/APIs, analytics events are fired and sent to our internal analytics system, Databeat.\nDatabeat anonymizes the data and stores it in a secure database designed for high-volume, real-time applications. The metrics you see in Builder are\nqueried from the database, in real-time, for your project and presented in insightful visualizations.

\n","isPage":false,"text":"\nWhen requests are made with Sequence SDKs/APIs, analytics events are fired and sent to our internal analytics system, Databeat.\nDatabeat anonymizes the data and stores it in a secure database designed for high-volume, real-time applications. The metrics you see in Builder are\nqueried from the database, in real-time, for your project and presented in insightful visualizations.\n","title":"How it works","titles":["Analytics in Builder",null,null]},"149":{"href":"/solutions/builder/analytics#overview","html":"\n

In the Overview tab of Builder, you will see the key, high-level metrics for your project. Metric cards will show the total value for that metric, and\nclicking on one will change the chart to show time-series data for that metric.

\n\n","isPage":false,"text":"\nIn the Overview tab of Builder, you will see the key, high-level metrics for your project. Metric cards will show the total value for that metric, and\nclicking on one will change the chart to show time-series data for that metric.\nYou also have the option to look back at your data beyond the default Last 30 days\nby toggling the filter in the top right corner.\n","title":"Overview","titles":["Analytics in Builder"]},"150":{"href":"/solutions/builder/analytics#wallets-connected","html":"\n

Wallets connected represents the count of distinct wallet addresses connected via Sequence SDKs for the selected time period.

\n

\"Sequence

\n","isPage":false,"text":"\nWallets connected represents the count of distinct wallet addresses connected via Sequence SDKs for the selected time period.\n\n","title":"Wallets connected","titles":["Analytics in Builder","Overview",null]},"151":{"href":"/solutions/builder/analytics#marketplace-transactions","html":"\n

Marketplace transactions shows the total number of buy and sell events that occure via the Sequence Marketplace API.

\n

\"Sequence

\n","isPage":false,"text":"\nMarketplace transactions shows the total number of buy and sell events that occure via the Sequence Marketplace API.\n\n","title":"Marketplace transactions","titles":["Analytics in Builder","Overview",null]},"152":{"href":"/solutions/builder/analytics#transaction-requests","html":"\n

Transaction requests represents the total number of transactions sent by wallets associated with the project.

\n

\"Sequence

","isPage":false,"text":"\nTransaction requests represents the total number of transactions sent by wallets associated with the project.\n","title":"Transaction requests","titles":["Analytics in Builder","Overview",null]},"153":{"href":"/solutions/builder/embedded-wallet#embedded-wallet-in-builder","html":"\n

You can configure a Sequence Embedded Wallet in Builder and integrate your own OAuth accounts to enable easy onboarding to your games. Configuration page in Builder is available here.

\n","isPage":true,"text":"\nYou can configure a Sequence Embedded Wallet in Builder and integrate your own OAuth accounts to enable easy onboarding to your games. Configuration page in Builder is available here.\n","title":"Embedded Wallet in Builder","titles":[]},"154":{"href":"/solutions/builder/embedded-wallet#login-providers","html":"\n

Sequence Embedded Wallet supports the following login providers:

\n","isPage":false,"text":"\nSequence Embedded Wallet supports the following login providers:\n","title":"Login Providers","titles":["Embedded Wallet in Builder"]},"155":{"href":"/solutions/builder/embedded-wallet#google-auth","html":"\n

If you would like to support Google Auth, you need to make sure that a project is configured at your Google Cloud Console along with the proper OAuth 2.0 client ID. You can find the relevant section under APIs & Services > Credentials. After setting up the proper origins and redirect URIs for your project, copy the Client ID and paste it into the Google Client ID field after adding a Google login provider.

\n

You can find a detailed tutorial on how to configure Google Auth here.

\n","isPage":false,"text":"\nIf you would like to support Google Auth, you need to make sure that a project is configured at your Google Cloud Console along with the proper OAuth 2.0 client ID. You can find the relevant section under APIs & Services > Credentials. After setting up the proper origins and redirect URIs for your project, copy the Client ID and paste it into the Google Client ID field after adding a Google login provider.\nYou can find a detailed tutorial on how to configure Google Auth here.\n","title":"Google Auth","titles":["Embedded Wallet in Builder","Login Providers"]},"156":{"href":"/solutions/builder/embedded-wallet#apple-auth","html":"\n

If you would like to offer Apple Auth, you need to make sure that an application is configured at your Apple Developer Console account. More information on how to configure Sign in with Apple can be found here. Once you have all requirements completed, share the unique identifier for the Services ID you created as part of your onboarding package after adding an Apple login provider.

\n","isPage":false,"text":"\nIf you would like to offer Apple Auth, you need to make sure that an application is configured at your Apple Developer Console account. More information on how to configure Sign in with Apple can be found here. Once you have all requirements completed, share the unique identifier for the Services ID you created as part of your onboarding package after adding an Apple login provider.\n","title":"Apple Auth","titles":["Embedded Wallet in Builder","Login Providers"]},"157":{"href":"/solutions/builder/embedded-wallet#allowed-origins","html":"\n

This additional security measure will prevent unauthorized usage of your WaaS configuration outside of domains you whitelisted. Add any development and production URLs under Allowed Origins. By default all subpaths under theses hosts will be allowed.

\n

You must define allowed origins with a valid scheme (i.e. https).

\n","isPage":false,"text":"\nThis additional security measure will prevent unauthorized usage of your WaaS configuration outside of domains you whitelisted. Add any development and production URLs under Allowed Origins. By default all subpaths under theses hosts will be allowed.\nYou must define allowed origins with a valid scheme (i.e. https).\n","title":"Allowed Origins","titles":["Embedded Wallet in Builder"]},"158":{"href":"/solutions/builder/embedded-wallet#recovery-wallet","html":"\n

WaaS requires the public address for a recovery wallet that you control. This recovery wallet will be used for recovering user wallets in a disaster scenario, so it must be controlled by you and must be kept safe at all times.

\n

We recommend that:

\n\n

Once the recovery wallet is setup properly, provide the public address for it. Recovery wallet cannot be modified once your configuration is saved.

\n","isPage":false,"text":"\nWaaS requires the public address for a recovery wallet that you control. This recovery wallet will be used for recovering user wallets in a disaster scenario, so it must be controlled by you and must be kept safe at all times.\nWe recommend that:\n\nYou use Gnosis Safe for setting up the wallet\nYou ensure you have at least 2, ideally 3+ signers configured and required for every transaction\nEvery signer is protected by a hardware wallet\n\nOnce the recovery wallet is setup properly, provide the public address for it. Recovery wallet cannot be modified once your configuration is saved.\n","title":"Recovery Wallet","titles":["Embedded Wallet in Builder"]},"159":{"href":"/solutions/builder/embedded-wallet#initial-configuration-and-update-code","html":"\n

Once you have all information prepared, go ahead and create your Embedded Wallet configuration. During initial setup, Builder will provide you with an update code. This code will be required for all subsequent modifications to your Embedded Wallet configuration, so it must be stored safely.

\n","isPage":false,"text":"\nOnce you have all information prepared, go ahead and create your Embedded Wallet configuration. During initial setup, Builder will provide you with an update code. This code will be required for all subsequent modifications to your Embedded Wallet configuration, so it must be stored safely.\n","title":"Initial Configuration and Update Code","titles":["Embedded Wallet in Builder"]},"160":{"href":"/solutions/builder/embedded-wallet#configuration-changes","html":"\n

To make modifications to your Embedded Wallet configuration, navigate to the Embedded Wallet section again and make the necessary changes. Then click "Save Configuration" and enter your update code to deploy the changes.

\n","isPage":false,"text":"\nTo make modifications to your Embedded Wallet configuration, navigate to the Embedded Wallet section again and make the necessary changes. Then click "Save Configuration" and enter your update code to deploy the changes.\n","title":"Configuration Changes","titles":["Embedded Wallet in Builder"]},"161":{"href":"/solutions/builder/embedded-wallet#sdk-integrations","html":"\n

Now that you have your Embedded Wallet configuration up, go ahead and follow our guides on how to integrate with the SDKs:

\n","isPage":false,"text":"\nNow that you have your Embedded Wallet configuration up, go ahead and follow our guides on how to integrate with the SDKs:\n\nTypeScript SDK\nUnity SDK\nUnreal SDK\n","title":"SDK Integrations","titles":["Embedded Wallet in Builder"]},"162":{"href":"/solutions/marketplaces/overview#marketplaces-overview","html":"\n

Sequence provides a variety of options for your marketplace and in-game store to accelerate your development, namely our white-label marketplace as well as our suite of Marketplace APIs.

\n","isPage":true,"text":"\nSequence provides a variety of options for your marketplace and in-game store to accelerate your development, namely our white-label marketplace as well as our suite of Marketplace APIs.\n","title":"Marketplaces Overview","titles":[]},"163":{"href":"/solutions/marketplaces/overview#what-are-the-differences-between-these-options","html":"\n

White-Label Marketplace:\nStart your browser-based marketplace in minutes, even if you have no coding experience. Customize the marketplace with your branding - choose your fonts, colors, and logos. Our white-label marketplace is perfect for those looking to save time on development, focus on a web-based user experience, and begin selling assets.

\n

Marketplace APIs:\nTake full control and customize your marketplace with our Marketplace APIs. Build your own UI while we handle the complexity of blockchain and backend orchestration. Use our APIs in game engines like Unity or Unreal to create an in-game marketplace or store. Alternatively, integrate them into a browser-based experience - the choice is yours.

\n

Combine these options as you see fit! Start with a white-label marketplace to sell your initial game assets while developing your game. Then, use our marketplace APIs to showcase and offer these assets in your in-game store. Provide a seamless user experience by keeping everything within the game environment.

\n","isPage":false,"text":"\nWhite-Label Marketplace:\nStart your browser-based marketplace in minutes, even if you have no coding experience. Customize the marketplace with your branding - choose your fonts, colors, and logos. Our white-label marketplace is perfect for those looking to save time on development, focus on a web-based user experience, and begin selling assets.\nMarketplace APIs:\nTake full control and customize your marketplace with our Marketplace APIs. Build your own UI while we handle the complexity of blockchain and backend orchestration. Use our APIs in game engines like Unity or Unreal to create an in-game marketplace or store. Alternatively, integrate them into a browser-based experience - the choice is yours.\nCombine these options as you see fit! Start with a white-label marketplace to sell your initial game assets while developing your game. Then, use our marketplace APIs to showcase and offer these assets in your in-game store. Provide a seamless user experience by keeping everything within the game environment.\n","title":"What are the differences between these options?","titles":["Marketplaces Overview",null]},"164":{"href":"/solutions/marketplaces/overview#getting-started","html":"\n

To get started with the white-label marketplace, check out our page for more information and a helpful video to walk you through the process.

\n

Additionally, our quickstart page for the Marketplace APIs has a variety of templates, demos, and common integration patterns needed to get you started. We also provide a step by step guide of leveraging the APIs for (building a custom marketplace)[/guides/template-marketplace-api]

","isPage":false,"text":"\nTo get started with the white-label marketplace, check out our page for more information and a helpful video to walk you through the process.\nAdditionally, our quickstart page for the Marketplace APIs has a variety of templates, demos, and common integration patterns needed to get you started. We also provide a step by step guide of leveraging the APIs for (building a custom marketplace)[/guides/template-marketplace-api]","title":"Getting Started","titles":["Marketplaces Overview",null]},"165":{"href":"/solutions/wallets/overview#sequence-wallets-overview","html":"\n

Sequence offers multiple wallet options to integrate into your products. We have two main choices: the Embedded Wallet and the Universal Wallet. Both are completely non-custodial.

\n

The Embedded Wallet is designed for a traditional gaming experience. It operates without intrusive pop-ups, modals, or transaction signing that might distract players. Users can easily log in using common social logins or other authentication methods and dive straight into the game. We support popular game engines like Unreal and Unity, as well as Typescript for seamless integration into your preferred framework.

\n

On the other hand, the Universal Wallet targets native blockchain users, particularly those involved in gaming and gaming assets. It provides a familiar environment for existing blockchain users and enables developers to create compelling web3 experiences. The Typescript SDK makes integration straightforward.

\n

\"Wallets\"/

\n

As for the benefits, both wallets offer non-custodial smart contract wallets with advantages like gasless transactions. If you prioritize a smooth, web2/2.5-like experience, the Embedded Wallet is the way to go. For a focus on web2.5/web3 native users, the Universal Wallet is recommended.

\n

Furthermore, our SequenceKit wallet connector merges both options into a customizable UI written in Typescript. This allows you to cater to users with existing wallets like Metamask, as well as millions of potential new users who prefer the convenience of social login.

\n","isPage":true,"text":"\nSequence offers multiple wallet options to integrate into your products. We have two main choices: the Embedded Wallet and the Universal Wallet. Both are completely non-custodial.\nThe Embedded Wallet is designed for a traditional gaming experience. It operates without intrusive pop-ups, modals, or transaction signing that might distract players. Users can easily log in using common social logins or other authentication methods and dive straight into the game. We support popular game engines like Unreal and Unity, as well as Typescript for seamless integration into your preferred framework.\nOn the other hand, the Universal Wallet targets native blockchain users, particularly those involved in gaming and gaming assets. It provides a familiar environment for existing blockchain users and enables developers to create compelling web3 experiences. The Typescript SDK makes integration straightforward.\n\nAs for the benefits, both wallets offer non-custodial smart contract wallets with advantages like gasless transactions. If you prioritize a smooth, web2/2.5-like experience, the Embedded Wallet is the way to go. For a focus on web2.5/web3 native users, the Universal Wallet is recommended.\nFurthermore, our SequenceKit wallet connector merges both options into a customizable UI written in Typescript. This allows you to cater to users with existing wallets like Metamask, as well as millions of potential new users who prefer the convenience of social login.\n","title":"Sequence Wallets Overview","titles":[]},"166":{"href":"/solutions/wallets/overview#getting-started","html":"\n

Please check out Sequence Builder to create a project and select Wallets to get started. This will provide the corresponding code snippets with our convenient SDKs to get started.

\n

Alternatively, our quickstart page for Embedded Wallets and Universal Wallets has all the templates, demos, and common integration patterns needed to accelerate your development.

","isPage":false,"text":"\nPlease check out Sequence Builder to create a project and select Wallets to get started. This will provide the corresponding code snippets with our convenient SDKs to get started.\nAlternatively, our quickstart page for Embedded Wallets and Universal Wallets has all the templates, demos, and common integration patterns needed to accelerate your development.","title":"Getting Started","titles":["Sequence Wallets Overview",null]},"167":{"href":"/api/indexer/examples/fetch-tokens#tokens-api","html":"\n","isPage":true,"text":"\n","title":"Tokens API","titles":[]},"168":{"href":"/api/indexer/examples/fetch-tokens#fetches-list-of-erc20-erc721-and-erc1155-tokens-and-metadata-in-any-wallet","html":"\n

Sequence Indexer GetTokenBalances Method:

\n\n
\nExample: GetTokenBalances of a wallet account address on Polygon using an API_Access_Key\n\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all token balances of the account on Polygon\nconst tokenBalances = await indexer.getTokenBalances({\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\nconsole.log('tokens in your account:', tokenBalances)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}
Please [contact our team](/support) for assistance with integrations to another target.
\n
\n\n","isPage":false,"text":"\nSequence Indexer GetTokenBalances Method:\n\nRequest: POST /rpc/Indexer/GetTokenBalances\nContent-Type: application/json\nBody (in JSON):\n\naccountAddress (string) -- the wallet account address\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\nincludeCollectionTokens (boolean - optional - default: true) -- toggle to represent ERC721 / ERC1155 tokens as a single summary item in the response\n\n\n\n\nExample: GetTokenBalances of a wallet account address on Polygon using an API_Access_Key\nThis code requires an API Access Key from Sequence Builder.\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all token balances of the account on Polygon\nconst tokenBalances = await indexer.getTokenBalances({\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\nconsole.log('tokens in your account:', tokenBalances)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}Please [contact our team](/support) for assistance with integrations to another target.\n\nPRO TIP: fetching ERC721/1155 token IDsYou'll notice that, by default, GetTokenBalances will return at most one token instance from each contract.\nIn order to fetch ERC721/1155 token balances, you must pass the contractAddress to the GetTokenBalances method.\nThis will return all of the tokens owned by accountAddress from the specified contractAddress.\nSee section below for more information.\n","title":"Fetches list of ERC20, ERC721 and ERC1155 tokens and metadata in any wallet.","titles":["Tokens API",null]},"169":{"href":"/api/indexer/examples/fetch-tokens#fetch-token-ids-balances-and-metadata-of-erc721-and-erc1155-collections","html":"\n

Sequence Indexer GetTokenBalances Method:

\n\n
\nExample: GetTokenBalances of a contract + account address on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any contract and account address you'd like :)\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all nft balances of the account on Polygon\nconst nftBalances = await indexer.getTokenBalances({\n\tcontractAddress: contractAddress,\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\n \nconsole.log('collection of items:', nftBalances)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(contractAddress, accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\tnftBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, &contractAddress, &includeMetadata, nil, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("nftBalances:", nftBalances)\n}
","isPage":false,"text":"\nSequence Indexer GetTokenBalances Method:\n\nRequest: POST /rpc/Indexer/GetTokenBalances\nContent-Type: application/json\nBody (in JSON):\n\naccountAddress (string) -- the wallet account address\ncontractAddress (string) -- the contract address of the ERC721 / ERC1155 collection\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\n\n\n\n\nExample: GetTokenBalances of a contract + account address on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenBalances -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9", "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any contract and account address you'd like :)\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for all nft balances of the account on Polygon\nconst nftBalances = await indexer.getTokenBalances({\n\tcontractAddress: contractAddress,\n\taccountAddress: accountAddress,\n\tincludeMetadata: true\n})\n \nconsole.log('collection of items:', nftBalances)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(contractAddress, accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\tnftBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, &contractAddress, &includeMetadata, nil, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("nftBalances:", nftBalances)\n}","title":"Fetch token IDs, balances and metadata of ERC721 and ERC1155 collections.","titles":["Tokens API",null]},"170":{"href":"/api/indexer/examples/native-network-balance#native-network-balances-ie-eth-matic-etc","html":"\n","isPage":true,"text":"\n","title":"Native network balances (ie. ETH, MATIC, etc.)","titles":[]},"171":{"href":"/api/indexer/examples/native-network-balance#fetch-native-network-balance-aka-eth-on-ethereum-matic-on-polygon-avax-on-avalanche-bnb-on-bsc-etc","html":"\n

Sequence Indexer GetEtherBalance Method:

\n\n
\nExample: GetEtherBalance MATIC balance of a wallet account address on Polygon using an API_Access_Key\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetEtherBalance -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for the MATIC balance on Polygon\nconst balance = await indexer.getEtherBalance({\n\taccountAddress: accountAddress,\n})\n\t\nconsole.log('tokens in your account:', tokenBalances)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}
","isPage":false,"text":"\nSequence Indexer GetEtherBalance Method:\n\nRequest: POST /rpc/Indexer/GetEtherBalance\nContent-Type: application/json\nBody (in JSON):\n\naccountAddress (string) -- the wallet account address\n\n\n\n\nExample: GetEtherBalance MATIC balance of a wallet account address on Polygon using an API_Access_Key\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetEtherBalance -d '{ "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst accountAddress = '0xabc...'\n \n// query Sequence Indexer for the MATIC balance on Polygon\nconst balance = await indexer.getEtherBalance({\n\taccountAddress: accountAddress,\n})\n\t\nconsole.log('tokens in your account:', tokenBalances)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenBalances(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tincludeMetadata := true\n \n\ttokenBalances, _, err := seqIndexer.GetTokenBalances(context.Background(), &accountAddress, nil, &includeMetadata, nil)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("tokenBalances:", tokenBalances)\n}","title":"Fetch native network balance (aka ETH on Ethereum, MATIC on Polygon, AVAX on Avalanche, BNB on BSC, etc.)","titles":["Native network balances (ie. ETH, MATIC, etc.)",null]},"172":{"href":"/api/indexer/examples/transaction-history#wallet-transaction-history","html":"\n","isPage":true,"text":"\n","title":"Wallet transaction history","titles":[]},"173":{"href":"/api/indexer/examples/transaction-history#fetch-the-transaction-history-for-any-wallet-address","html":"\n

Fetches the transaction / token history for any wallet address of any ERC20, ERC721 and ERC1155 token.\nThe response includes decoded transaction details for easy consumption / rendering.

\n

Sequence Indexer GetTransactionHistory Method:

\n\n
\nExample: GetTransactionHistory of a wallet account address on Polygon using an API_Access_Key\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }, "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst filter = {\n\taccountAddress: "0xabc..."\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter,\n\tincludeMetadata: true\n})\n\t\nconsole.log('transaction history in account:', transactionHistory)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tAccountAddress: &accountAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}
","isPage":false,"text":"\nFetches the transaction / token history for any wallet address of any ERC20, ERC721 and ERC1155 token.\nThe response includes decoded transaction details for easy consumption / rendering.\nSequence Indexer GetTransactionHistory Method:\n\nRequest: POST /rpc/Indexer/GetTransactionHistory\nContent-Type: application/json\nBody (in JSON):\n\nfilter (object)\n\naccountAddress (string) -- the wallet account address\ncontractAddress (string) -- optionally specify a contract address to filter\naccountAddresses (string array) -- optionally specify a list of wallet account addresses\ncontractAddresses (string array) -- optionally specify a list of contract address\ntransactionHashes (string array) -- optionally specify a list of transaction hashes\nmetaTransactionIDs (string array) -- optionally specify a list of meta transaction IDs\n\n\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\n\n\n\n\nExample: GetTransactionHistory of a wallet account address on Polygon using an API_Access_Key\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x8e3E38fe7367dd3b52D1e281E4e8400447C8d8B9" }, "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// try any account address you'd like :)\nconst filter = {\n\taccountAddress: "0xabc..."\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter,\n\tincludeMetadata: true\n})\n\t\nconsole.log('transaction history in account:', transactionHistory)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tAccountAddress: &accountAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}","title":"Fetch the transaction history for any wallet address","titles":["Wallet transaction history"]},"174":{"href":"/api/indexer/examples/transation-history-token-contract#contract-token-history","html":"\n","isPage":true,"text":"\n","title":"Contract token history","titles":[]},"175":{"href":"/api/indexer/examples/transation-history-token-contract#fetch--listen-to-the-transaction-history-for-any-erc20-erc721-erc1155-contract","html":"\n

This query is helpful to track transaction history of a particular token contract.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).

\n

Sequence Indexer GetTransactionHistory Method:

\n\n
\nExample: GetTransactionHistory of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E" }, "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\n// try any contract address you'd like :)\nconst filter = {\n\tcontractAddress: contractAddress\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter\n})\n\t\nconsole.log('transaction history of contract:', transactionHistory)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}
","isPage":false,"text":"\nThis query is helpful to track transaction history of a particular token contract.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).\nSequence Indexer GetTransactionHistory Method:\n\nRequest: POST /rpc/Indexer/GetTransactionHistory\nContent-Type: application/json\nBody (in JSON):\n\nfilter (object)\n\ncontractAddress (string) -- a ERC20 / ERC721 / ERC1155 contract address\n\n\n\n\n\n\nExample: GetTransactionHistory of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTransactionHistory -d '{ "filter": { "accountAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E" }, "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\n// try any contract address you'd like :)\nconst filter = {\n\tcontractAddress: contractAddress\n}\n \n// query Sequence Indexer for all token transaction history on Polygon\nconst transactionHistory = await indexer.getTransactionHistory({\n\tfilter: filter\n})\n\t\nconsole.log('transaction history of contract:', transactionHistory)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, history, err := seqIndexer.GetTransactionHistory(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("transaction history:", history)\n}","title":"Fetch / listen to the transaction history for any ERC20, ERC721, ERC1155 contract.","titles":["Contract token history",null]},"176":{"href":"/api/indexer/examples/unique-tokens#tokens-in-a-contract","html":"\n","isPage":true,"text":"\n","title":"Tokens in a contract","titles":[]},"177":{"href":"/api/indexer/examples/unique-tokens#fetch-all-unique-tokens-in-a-particular-erc207211155-contract-including-total-supplies","html":"\nFetches token supplies and metadata for any ERC20, ERC721, ERC1155 contract.\n

This query is helpful to render all tokens in a token contract, or to query the total token supplies.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).

\n

Sequence Indexer GetTokenSupplies Method:

\n\n
\nExample: GetTokenSupplies of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenSupplies -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "includeMetadata": true }'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\nconst tokenDetails = await indexer.getTokenSupplies({\n\tcontractAddress: contractAddress,\n\tincludeMetadata: true\n})\nconsole.log('token details of contract:', tokenDetails)
go\nimport (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenSupplies(contractAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, tokenDetails, err := seqIndexer.GetTokenSupplies(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("token details:", tokenDetails)\n}
","isPage":false,"text":"\nFetches token supplies and metadata for any ERC20, ERC721, ERC1155 contract.\nThis query is helpful to render all tokens in a token contract, or to query the total token supplies.\nIn this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E\non the Polygon network. You may query any contract address on any of the supported networks (but make\nsure to query the indexer of the corresponding network).\nSequence Indexer GetTokenSupplies Method:\n\nRequest: POST /rpc/Indexer/GetTokenSupplies\nContent-Type: application/json\nBody (in JSON):\n\ncontractAddress (string) -- a ERC20 / ERC721 / ERC1155 contract address\nincludeMetadata (boolean - optional - default: false) -- toggle token metadata to be included in the response\nmetadataOptions (object - optional) -- additional options for metadata\n\nverifiedOnly (boolean - optional) -- return only contracts which are 'verified' to help reduce spam\nincludeContracts ([]string - optional) -- list of specific contract addresses to always be included, even if verifiedOnly is enabled.\n\n\n\n\n\n\nExample: GetTokenSupplies of Skyweaver contract on Polygon using an c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/GetTokenSupplies -d '{ "contractAddress": "0x631998e91476DA5B870D741192fc5Cbc55F5a52E", "includeMetadata": true }'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \n// here we query the Skyweaver contract address, but you can use any\nconst contractAddress = '0x631998e91476DA5B870D741192fc5Cbc55F5a52E'\n \n// query Sequence Indexer for all token details / supplies\nconst tokenDetails = await indexer.getTokenSupplies({\n\tcontractAddress: contractAddress,\n\tincludeMetadata: true\n})\nconsole.log('token details of contract:', tokenDetails)go\nimport (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTokenSupplies(contractAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tfilter := &indexer.TransactionHistoryFilter{\n\t\tContractAddress: &contractAddress,\n\t}\n\tincludeMetadata := true\n \n\t_, tokenDetails, err := seqIndexer.GetTokenSupplies(context.Background(), filter, nil, &includeMetadata)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Println("token details:", tokenDetails)\n}","title":"Fetch all unique tokens in a particular ERC20/721/1155 contract, including total supplies","titles":["Tokens in a contract",null]},"178":{"href":"/api/indexer/examples/webhook-listener#webhook","html":"\n","isPage":true,"text":"\n","title":"Webhook","titles":[]},"179":{"href":"/api/indexer/examples/webhook-listener#listen-to-blockchain-events-with-webhooks","html":"\n

You can listen to transactions via webhooks using the Sequence Indexer. Our filters allow you to listen to events with a particular contract address and/or account address and specific token ids.

\n","isPage":false,"text":"\nYou can listen to transactions via webhooks using the Sequence Indexer. Our filters allow you to listen to events with a particular contract address and/or account address and specific token ids.\n","title":"Listen to Blockchain Events with Webhooks","titles":["Webhook"]},"180":{"href":"/api/indexer/examples/webhook-listener#registering-a-webhook","html":"\n

Sequence Indexer AddWebhookListener Method:

\n\n
\n

One of contractAddresses, accounts must be provided in the filter.

\nExample: AddWebhookListener\n
curl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/AddWebhookListener -d '{ "url": "https://webhook.site/27c266b7-ee69-4046-8319-75ce91ec2bcf", "filters": [{"accounts": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E"]}]'
// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \nconst req = {\n    url: 'https://webhook.site/27c266b7-ee69-4046-8319-75ce91ec2bcf',\n    filters: [\n        {\n            accounts: ['0x631998e91476DA5B870D741192fc5Cbc55F5a52E']\n        }\n    ]\n}\n \n \nconst ok = await indexer.addWebhookListener({\n\tUrl: req.url,\n    Filters: req.filters\n})\n\t\nconsole.log('ok', ok)
import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tok, err := seqIndexer.AddWebhookListener(context.Background(),\n\t\t&proto.WebhookListener{\n\t\t\tUrl: "https://webhook.site/27c266b7-ee69-4046-8319-75ce91ec2bcf",\n\t\t\tFilters: &proto.WebhookEventFilter{\n\t\t\t\tAccounts: []prototyp.Hash{prototyp.HashFromString("0xd4Bbf5d234CC95441A8Af0a317D8874eE425e74d")},\n                // ContractAddresses: []prototyp.Hash{prototyp.HashFromString("0xC852bf35CB7B54a33844B181e6fD163387D85868")},\n\t\t\t\t// TokenIDs:          []prototyp.BigInt{prototyp.NewBigInt(1)},\n\t\t\t},\n\t\t},\n\t)\n\tfmt.Println(ok, err)\n}
\n

Now you can listen to events on the blockchain with your webhook.

","isPage":false,"text":"\nSequence Indexer AddWebhookListener Method:\n\nRequest: POST /rpc/Indexer/AddWebhookListener\nContent-Type: application/json\nBody (in JSON):\n\nUrl (string) -- the URL to send the webhook to\nFilters ([]object) -- an array of filters\n\ncontractAddresses ([]string) -- a ERC20 / ERC721 / ERC1155 contract address\naccounts ([]string) -- wallet addresses\ntokenIDs ([]int) optional -- an array of token ids\n\n\n\n\n\n\nOne of contractAddresses, accounts must be provided in the filter.\nExample: AddWebhookListener\ncurl -X POST -H "Content-Type: application/json" -H "X-Access-Key: c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA" https://polygon-indexer.sequence.app/rpc/Indexer/AddWebhookListener -d '{ "url": "https://webhook.site/27c266b7-ee69-4046-8319-75ce91ec2bcf", "filters": [{"accounts": ["0x631998e91476DA5B870D741192fc5Cbc55F5a52E"]}]'// Works in both a Webapp (browser) or Node.js:\nimport { SequenceIndexer } from '@0xsequence/indexer'\n \nconst indexer = new SequenceIndexer('https://polygon-indexer.sequence.app', 'c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA')\n \nconst req = {\n url: 'https://webhook.site/27c266b7-ee69-4046-8319-75ce91ec2bcf',\n filters: [\n {\n accounts: ['0x631998e91476DA5B870D741192fc5Cbc55F5a52E']\n }\n ]\n}\n \n \nconst ok = await indexer.addWebhookListener({\n\tUrl: req.url,\n Filters: req.filters\n})\n\t\nconsole.log('ok', ok)import (\n\t"context"\n\t"fmt"\n\t"log"\n\t"net/http"\n \n\t"github.com/0xsequence/go-sequence/indexer"\n)\n \nfunc GetTransactionHistory(accountAddress string) {\n\tseqIndexer := indexer.NewIndexer("https://polygon-indexer.sequence.app", "c3bgcU3LkFR9Bp9jFssLenPAAAAAAAAAA")\n \n\tok, err := seqIndexer.AddWebhookListener(context.Background(),\n\t\t&proto.WebhookListener{\n\t\t\tUrl: "https://webhook.site/27c266b7-ee69-4046-8319-75ce91ec2bcf",\n\t\t\tFilters: &proto.WebhookEventFilter{\n\t\t\t\tAccounts: []prototyp.Hash{prototyp.HashFromString("0xd4Bbf5d234CC95441A8Af0a317D8874eE425e74d")},\n // ContractAddresses: []prototyp.Hash{prototyp.HashFromString("0xC852bf35CB7B54a33844B181e6fD163387D85868")},\n\t\t\t\t// TokenIDs: []prototyp.BigInt{prototyp.NewBigInt(1)},\n\t\t\t},\n\t\t},\n\t)\n\tfmt.Println(ok, err)\n}\nNow you can listen to events on the blockchain with your webhook.","title":"Registering a Webhook","titles":["Webhook","Listen to Blockchain Events with Webhooks"]},"181":{"href":"/api/marketplace/examples/get-user-activities#getuseractivities","html":"\n

Enables you to retrieve activity data for a specific user, including orders and trades. With the use of the GetUserActivities api developers can build custom and personalized social or tracking experiences to follow certain users in various interfaces.

\n

\"GetUserActivities\"/

\n","isPage":true,"text":"\nEnables you to retrieve activity data for a specific user, including orders and trades. With the use of the GetUserActivities api developers can build custom and personalized social or tracking experiences to follow certain users in various interfaces.\n\n","title":"GetUserActivities","titles":[null]},"182":{"href":"/api/marketplace/examples/get-user-activities#example","html":"\n

GetUserActivities for a user with specific token IDs:

\n
curl -X POST -H "Content-Type: application/json" https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities -d '{\n    "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n    "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n    "currencyAddresses": [\n        "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n    ],\n    "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n    "tokenIDs": ["1"]\n}'
// Works in both a Webapp (browser) or Node.js:\nimport fetch from "cross-fetch";\n \n(async () => {\n  const res = await fetch(\n    "https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities",\n    {\n      method: "POST",\n      headers: {\n        "Content-Type": "application/json",\n      },\n      body: JSON.stringify({\n        "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n        "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n        "currencyAddresses": [\n            "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n        ],\n        "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n        "tokenIDs": ["1"]\n      }),\n    }\n  );\n \n  console.log("res", await res.json());\n})();
\n","isPage":false,"text":"\nGetUserActivities for a user with specific token IDs:\ncurl -X POST -H "Content-Type: application/json" https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities -d '{\n "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n "currencyAddresses": [\n "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n ],\n "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n "tokenIDs": ["1"]\n}'// Works in both a Webapp (browser) or Node.js:\nimport fetch from "cross-fetch";\n \n(async () => {\n const res = await fetch(\n "https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetUserActivities",\n {\n method: "POST",\n headers: {\n "Content-Type": "application/json",\n },\n body: JSON.stringify({\n "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n "currencyAddresses": [\n "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n ],\n "userAddress": "0xC2Be9CF6D9ee4fd211f88620760e829792659b16",\n "tokenIDs": ["1"]\n }),\n }\n );\n \n console.log("res", await res.json());\n})();\n","title":"Example","titles":[null,"GetUserActivities"]},"183":{"href":"/api/marketplace/examples/get-user-activities#schema","html":"\n","isPage":false,"text":"\n\nRequest: POST /api/Marketplace/GetUserActivities\nContent-Type: application/json\nBody (in JSON):\n\norderbookContractAddress (string) -- the address of the protocol contract.\ncollectionAddress (string) -- the address of the NFT collection.\ncurrencyAddresses (string[]) -- an array of currency contract addresses.\nuserAddress (string) -- the address of the user whose activities are being queried.\ntokenIDs (string[]) -- an array of token IDs to filter the activities by.\n\n\nResponse (in JSON):\n\npage\n\npage (i32) -- number of the page\npageSize (i32) -- number of orders on the page\nmore (bool) -- if there are more orders\n\n\norders (OrderbookOrder[])\n[\n\norderId (string) -- order id\ntokenContract (string) -- the collection contract\ntokenId (string) -- the tokenId of the collection in the order\nisListing (bool) -- is true if it's a listing for sale, or false if it's an offer\nquantity (string) -- the number of tokens the order is for\nquantityRemaining (string) -- the number of tokens after the order\ncurrencyAddress (string) -- the currency the token is trading in\npricePerToken (string) -- the price per token\nexpiry (string) -- the expiry of when the order is no longer valid\norderStatus (OrderStatus) -- the status of the order as an enum fom "OPEN", "CLOSED", "CANCELLED"\ncreatedBy (string) -- the address the order was created by\ncreatedAt (uint64) -- the time the order was created\norderbookContractAddress (string) -- the orderbook contract address\n]\n\n\n\n\n","title":"Schema","titles":[null,"GetUserActivities"]},"184":{"href":"/api/relayer/examples/fetch-fee-options#fetching-fee-options","html":"\n\n
import { Session } from '@0xsequence/auth'\nimport { ethers } from 'ethers'\n \nconst config = {\n  mnemonic: 'YOUR MNEMONIC',\n  projectAccessKey: 'YOUR PROJECT ACCESS KEY',\n  chainId: ChainId.YOUR_CHAIN_ID // e.g. ChainId.MAINNET, ChainId.POLYGON, etc.\n}\n \nconst signer = ethers.Wallet.fromMnemonic(config.mnemonic)\n \nconst session = await Session.singleSigner({ signer, projectAccessKey: config.projectAccessKey })\n \nconst account = session.account.getSigner(config.chainId, {\n  async selectFee(_transactions, options) {\n    // This callback is called with the list of candidate fee options.\n \n    console.log('Fee options:', JSON.stringify(options, undefined, 2))\n \n    // Select the USDC fee option.\n    return options.find(option => option.token.symbol === 'USDC')\n  }\n})
mnemonic := "YOUR MNEMONIC"\nprojectAccessKey := "YOUR PROJECT ACCESS KEY"\nrpcURL := fmt.Sprintf("https://nodes.sequence.app/YOUR-NETWORK/%v", projectAccessKey)\nrelayerURL := "https://YOUR-NETWORK-relayer.sequence.app"\n \nsigner, _ := ethwallet.NewWalletFromMnemonic(mnemonic)\n \nwallet, _ := sequence.NewWalletSingleOwner(signer)\n \nprovider, _ := ethrpc.NewProvider(rpcURL)\nwallet.SetProvider(provider)\n \nrelayer, _ := relayer.NewRpcRelayer(relayerURL, projectAccessKey, provider, nil)\nwallet.SetRelayer(relayer)\n \ntransactions := sequence.Transactions{\n  &sequence.Transaction{\n    To:    common.HexToAddress("0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04"),\n    Value: big.NewInt(1000000000000000000),\n  },\n}\n \noptions, quote, _ := wallet.FeeOptions(ctx, transactions)
","isPage":true,"text":"\nFee selection is only necessary if you aren't already using Sequence Builder's gas sponsorship capabilities!\nCreate your project in Sequence Builder for ease of development today!\nimport { Session } from '@0xsequence/auth'\nimport { ethers } from 'ethers'\n \nconst config = {\n mnemonic: 'YOUR MNEMONIC',\n projectAccessKey: 'YOUR PROJECT ACCESS KEY',\n chainId: ChainId.YOUR_CHAIN_ID // e.g. ChainId.MAINNET, ChainId.POLYGON, etc.\n}\n \nconst signer = ethers.Wallet.fromMnemonic(config.mnemonic)\n \nconst session = await Session.singleSigner({ signer, projectAccessKey: config.projectAccessKey })\n \nconst account = session.account.getSigner(config.chainId, {\n async selectFee(_transactions, options) {\n // This callback is called with the list of candidate fee options.\n \n console.log('Fee options:', JSON.stringify(options, undefined, 2))\n \n // Select the USDC fee option.\n return options.find(option => option.token.symbol === 'USDC')\n }\n})mnemonic := "YOUR MNEMONIC"\nprojectAccessKey := "YOUR PROJECT ACCESS KEY"\nrpcURL := fmt.Sprintf("https://nodes.sequence.app/YOUR-NETWORK/%v", projectAccessKey)\nrelayerURL := "https://YOUR-NETWORK-relayer.sequence.app"\n \nsigner, _ := ethwallet.NewWalletFromMnemonic(mnemonic)\n \nwallet, _ := sequence.NewWalletSingleOwner(signer)\n \nprovider, _ := ethrpc.NewProvider(rpcURL)\nwallet.SetProvider(provider)\n \nrelayer, _ := relayer.NewRpcRelayer(relayerURL, projectAccessKey, provider, nil)\nwallet.SetRelayer(relayer)\n \ntransactions := sequence.Transactions{\n &sequence.Transaction{\n To: common.HexToAddress("0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04"),\n Value: big.NewInt(1000000000000000000),\n },\n}\n \noptions, quote, _ := wallet.FeeOptions(ctx, transactions)","title":"Fetching fee options","titles":[null]},"185":{"href":"/api/relayer/examples/fetch-transaction-receipts#fetching-transaction-receipts","html":"\n

To fetch a transaction receipt for an arbitrary transaction that was dispatched via the relayer, call the /GetMetaTxnReceipt endpoint.\nThe metaTxID is the txnHash from the response of the /SendMetaTxn endpoint.

\n
curl -s -X POST -H 'Content-Type: application/json' \\\n  -d '{"metaTxID":"462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b"}' \\\n  https://polygon-relayer.sequence.app/rpc/Relayer/GetMetaTxnReceipt | jq\n \n{\n  "receipt": {\n    "id": "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b",\n    "status": "SUCCEEDED",\n    "revertReason": null,\n    "index": 0,\n    "logs": []\n  }\n}\n \n...
const { receipt } = await session.account.relayer(config.chainId).wait('462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b')
status, receipt, _ := relayer.Wait(ctx, "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b")
","isPage":true,"text":"\nTo fetch a transaction receipt for an arbitrary transaction that was dispatched via the relayer, call the /GetMetaTxnReceipt endpoint.\nThe metaTxID is the txnHash from the response of the /SendMetaTxn endpoint.\ncurl -s -X POST -H 'Content-Type: application/json' \\\n -d '{"metaTxID":"462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b"}' \\\n https://polygon-relayer.sequence.app/rpc/Relayer/GetMetaTxnReceipt | jq\n \n{\n "receipt": {\n "id": "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b",\n "status": "SUCCEEDED",\n "revertReason": null,\n "index": 0,\n "logs": []\n }\n}\n \n...const { receipt } = await session.account.relayer(config.chainId).wait('462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b')status, receipt, _ := relayer.Wait(ctx, "462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b")","title":"Fetching transaction receipts","titles":[null]},"186":{"href":"/api/relayer/examples/send-transactions#sending-transactions","html":"\n
const transactions = [\n  {\n    to: '0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04',\n    value: '1000000000000000000'\n  }\n]\n \n// This sends the transaction to the relayer, and returns immediately once the relayer responds.\nconst response = await account.sendTransaction(transactions)\n \n// This waits for the transaction to be confirmed on-chain.\nconst receipt = await response.wait()\n \nconsole.log(JSON.stringify(receipt, undefined, 2))
// Select the USDC fee option.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\nvar selectedOption *sequence.RelayerFeeOption\nfor _, option := range options {\n  if option.Token.Symbol == "USDC" {\n    selectedOption = option\n    break\n  }\n}\n \n// Pay the relayer.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\ndata, _ := contracts.IERC20.Encode("transfer", selectedOption.To, selectedOption.Value)\ntransactions.Append(sequence.Transactions{&sequence.Transaction{\n  To:            *selectedOption.Token.ContractAddress,\n  Data:          data,\n  RevertOnError: true,\n}})\n \nsigned, _ := wallet.SignTransactions(ctx, transactions)\n \n// Send the transaction to the relayer.\nmetaTxnID, _, wait, _ := wallet.SendTransaction(ctx, signed, quote)\n \nfmt.Println("meta-transaction ID", metaTxnID)\n \nreceipt, _ := wait(ctx)\n \nfmt.Println("transaction hash", receipt.TxHash)
","isPage":true,"text":"\nconst transactions = [\n {\n to: '0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04',\n value: '1000000000000000000'\n }\n]\n \n// This sends the transaction to the relayer, and returns immediately once the relayer responds.\nconst response = await account.sendTransaction(transactions)\n \n// This waits for the transaction to be confirmed on-chain.\nconst receipt = await response.wait()\n \nconsole.log(JSON.stringify(receipt, undefined, 2))// Select the USDC fee option.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\nvar selectedOption *sequence.RelayerFeeOption\nfor _, option := range options {\n if option.Token.Symbol == "USDC" {\n selectedOption = option\n break\n }\n}\n \n// Pay the relayer.\n// Not required if using Sequence Builder's gas sponsorship capabilities!\ndata, _ := contracts.IERC20.Encode("transfer", selectedOption.To, selectedOption.Value)\ntransactions.Append(sequence.Transactions{&sequence.Transaction{\n To: *selectedOption.Token.ContractAddress,\n Data: data,\n RevertOnError: true,\n}})\n \nsigned, _ := wallet.SignTransactions(ctx, transactions)\n \n// Send the transaction to the relayer.\nmetaTxnID, _, wait, _ := wallet.SendTransaction(ctx, signed, quote)\n \nfmt.Println("meta-transaction ID", metaTxnID)\n \nreceipt, _ := wait(ctx)\n \nfmt.Println("transaction hash", receipt.TxHash)","title":"Sending transactions","titles":[null]},"187":{"href":"/sdk/typescript/connectors/FAQ#nextjs","html":"\n","isPage":true,"text":"\n","title":"NextJs","titles":[null]},"188":{"href":"/sdk/typescript/connectors/FAQ#why-does-my-wallet-integration-produce-an-error-when-used-with-nextjs","html":"\n

Wallet libraries and connectors must be rendered in the browser. This is particularly true for Wagmi and Wagmi-based libraries. Attempts to render the page elsewhere, such as on backend server, can produce errors in some situations. Rendering on the server is therefore highly discouraged.

\n

The method for fixing this issue will depend on the folder structure. The pages folder structure is available for all versions of NextJs, while the app folder structure is only available for NextJs version 13 and above and may require being turned on through an experimental setting.

\n

See using wallet libraries with next.js pages directory

\n

See using wallet libraries with next.js app directory(NextJs 13+ feature)

\n","isPage":false,"text":"\nWallet libraries and connectors must be rendered in the browser. This is particularly true for Wagmi and Wagmi-based libraries. Attempts to render the page elsewhere, such as on backend server, can produce errors in some situations. Rendering on the server is therefore highly discouraged.\nThe method for fixing this issue will depend on the folder structure. The pages folder structure is available for all versions of NextJs, while the app folder structure is only available for NextJs version 13 and above and may require being turned on through an experimental setting.\nSee using wallet libraries with next.js pages directory\nSee using wallet libraries with next.js app directory(NextJs 13+ feature)\n","title":"Why does my wallet integration produce an error when used with next.js?","titles":[null,"NextJs"]},"189":{"href":"/sdk/typescript/connectors/FAQ#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-pages-directory-all-versions-of-nextjs","html":"\n

The content of the application which depends on Wagmi hooks must be mounted only once the application is rendered in the client. This is a limitation due to wagmi when used with NextJs, and all wagmi-based libraries will inherit this limitation. To do so we can use a useEffect hook to wait before rendering the application.

\n

In the example below, we wait until the app is mounted in the client before rendering the rest of the application:

\n
import { useIsMounted } from '../hooks'\nimport Home from '../components/Home'\n \nconst Page = () => {\n  const isMounted = useIsMounted()\n \n  if (!isMounted) return null\n  return (\n    <>\n      <Home />\n    </>\n  )\n}\n \nexport default Page
\n

A full code example of this setup working with the Wagmi library can be found on github.\nThe method described above is the one recommended by Wagmi and is demonstrated in their official example.

\n","isPage":false,"text":"\nThe content of the application which depends on Wagmi hooks must be mounted only once the application is rendered in the client. This is a limitation due to wagmi when used with NextJs, and all wagmi-based libraries will inherit this limitation. To do so we can use a useEffect hook to wait before rendering the application.\nIn the example below, we wait until the app is mounted in the client before rendering the rest of the application:\nimport { useIsMounted } from '../hooks'\nimport Home from '../components/Home'\n \nconst Page = () => {\n const isMounted = useIsMounted()\n \n if (!isMounted) return null\n return (\n <>\n <Home />\n </>\n )\n}\n \nexport default Page\nA full code example of this setup working with the Wagmi library can be found on github.\nThe method described above is the one recommended by Wagmi and is demonstrated in their official example.\n","title":"How do I use a wallet library and connector with next.js using the pages directory (all versions of NextJs)?","titles":[null,"NextJs"]},"190":{"href":"/sdk/typescript/connectors/FAQ#how-do-i-use-a-wallet-library-and-connector-with-nextjs-using-the-app-directory-version-13-and-above-only","html":"\n

NextJs 13 and above allows using a new folder structure in which the content is placed in an app directory. Enabling this feature may require explicitly indicating it with an experimental setting.\nWhen using such a folder structure, NextJs allows the declaration of Client Components which are components that will be rendered in the browser.\nA wrapper component containing the wallet library initialized with all the connectors must be declared with the "use client" directive. The "use client" directive is what will turn the wrapper component into a Client Component to be rendered in the browser.

\n

In addition, there is a bug with wagmi and nextJs when using the autoConnect feature which causes

\n

In the example below, we declare a wrapper component with the "use client" directive:

\n
"use client" // this directive informs next.js that the component is a Client Component to be rendered in the browser\n \nconst WagmiWrapper = ({ children }) => {\n  const wagmiClient = createClient({\n    autoConnect: true,\n    connectors,\n    provider,\n    webSocketProvider,\n  });\n \n \n  return (\n    <WagmiConfig client={wagmiClient}>\n      {children}\n    </WagmiConfig>\n  );\n}\n \nexport default WagmiWrapper
\n

This wrapper component can then be imported normally and wrap the rest of the application. The child components can be a combination of Client and Server components.

\n
// We import a custom wrapper component that initializes the wallet library and all its connectors\n// An example of the content of this wrapper component can be found here: https://github.com/0xsequence/demo-dapp-wagmi-next/blob/master/components/WagmiProvider.tsx\nimport WagmiWrapper from './WagmiWrapper'\n \n// We can then wrap our entire app with this browser's rendered component\nfunction MyApp({ Component, pageProps }: AppProps) {\n  return (\n    <WagmiWrapper>\n      <Component {...pageProps} />\n    </WagmiWrapper>\n  );\n}
\n

A full code example using Nextjs and the app directory can be found on github.\nThe method described above is the one recommended by Wagmi through their NextJs example which can be consulted by running the command npx create-wagmi and selecting the nextJs option.

\n

Click here for more information about Client Components.

","isPage":false,"text":"\nNextJs 13 and above allows using a new folder structure in which the content is placed in an app directory. Enabling this feature may require explicitly indicating it with an experimental setting.\nWhen using such a folder structure, NextJs allows the declaration of Client Components which are components that will be rendered in the browser.\nA wrapper component containing the wallet library initialized with all the connectors must be declared with the "use client" directive. The "use client" directive is what will turn the wrapper component into a Client Component to be rendered in the browser.\nIn addition, there is a bug with wagmi and nextJs when using the autoConnect feature which causes\nIn the example below, we declare a wrapper component with the "use client" directive:\n"use client" // this directive informs next.js that the component is a Client Component to be rendered in the browser\n \nconst WagmiWrapper = ({ children }) => {\n const wagmiClient = createClient({\n autoConnect: true,\n connectors,\n provider,\n webSocketProvider,\n });\n \n \n return (\n <WagmiConfig client={wagmiClient}>\n {children}\n </WagmiConfig>\n );\n}\n \nexport default WagmiWrapper\nThis wrapper component can then be imported normally and wrap the rest of the application. The child components can be a combination of Client and Server components.\n// We import a custom wrapper component that initializes the wallet library and all its connectors\n// An example of the content of this wrapper component can be found here: https://github.com/0xsequence/demo-dapp-wagmi-next/blob/master/components/WagmiProvider.tsx\nimport WagmiWrapper from './WagmiWrapper'\n \n// We can then wrap our entire app with this browser's rendered component\nfunction MyApp({ Component, pageProps }: AppProps) {\n return (\n <WagmiWrapper>\n <Component {...pageProps} />\n </WagmiWrapper>\n );\n}\nA full code example using Nextjs and the app directory can be found on github.\nThe method described above is the one recommended by Wagmi through their NextJs example which can be consulted by running the command npx create-wagmi and selecting the nextJs option.\nClick here for more information about Client Components.","title":"How do I use a wallet library and connector with next.js using the app directory (version 13 and above only)?","titles":[null,"NextJs"]},"191":{"href":"/sdk/typescript/connectors/overview#wallet-connectors","html":"\n

Sequence is compatible with all standard Ethereum libraries and connectors. If you've\ndeveloped your dapp to with work Metamask, it will also automatically work with Sequence.

\n

Our SDKs offer all the functionality you'd need to build a web3 dapp, but you can also\ncombine other libraries, tools, and wallet connectors :) Please see our open sourced Demo Dapp\nproject for an example use of Sequence, or see below on usage with additional connectors.

\n

For your dapps, you may also want to support many different kinds of wallets in addition\nto the Sequence Wallet. You may do this by using sequence.js or using one of the connectors below:

\n\n

Additionally, if you are building a mobile app or video game, please see the docs for\nthe respective SDK. Feel free to reach out to our team for help/questions too.

","isPage":true,"text":"\nSequence is compatible with all standard Ethereum libraries and connectors. If you've\ndeveloped your dapp to with work Metamask, it will also automatically work with Sequence.\nOur SDKs offer all the functionality you'd need to build a web3 dapp, but you can also\ncombine other libraries, tools, and wallet connectors :) Please see our open sourced Demo Dapp\nproject for an example use of Sequence, or see below on usage with additional connectors.\nFor your dapps, you may also want to support many different kinds of wallets in addition\nto the Sequence Wallet. You may do this by using sequence.js or using one of the connectors below:\n\nSequence Kit\nWagmi\nWeb3Modal\nRainbowKit\nweb3-onboard\nweb3-react\n\nAdditionally, if you are building a mobile app or video game, please see the docs for\nthe respective SDK. Feel free to reach out to our team for help/questions too.","title":"Wallet Connectors","titles":[]},"192":{"href":"/sdk/typescript/connectors/rainbow-kit#using-rainbowkit","html":"\n

The Sequence wallet can be added to RainbowKit through the connector.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Rainbow + Wallet Connect with RainbowKit.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-rainbowkit\n:::

\n","isPage":true,"text":"\nThe Sequence wallet can be added to RainbowKit through the connector.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Rainbow + Wallet Connect with RainbowKit.\nSource code is available too: https://github.com/0xsequence/demo-dapp-rainbowkit\n:::\n","title":"Using RainbowKit","titles":[]},"193":{"href":"/sdk/typescript/connectors/rainbow-kit#installation","html":"\n

The connector is installed via the npm package @0xsequence/rainbowkit-plugin.

\n
npm install @0xsequence/rainbowkit-plugin 0xsequence ethers
\n

or

\n
yarn add @0xsequence/rainbowkit-plugin 0xsequence ethers
\n","isPage":false,"text":"\nThe connector is installed via the npm package @0xsequence/rainbowkit-plugin.\nnpm install @0xsequence/rainbowkit-plugin 0xsequence ethers\nor\nyarn add @0xsequence/rainbowkit-plugin 0xsequence ethers\n","title":"Installation","titles":["Using RainbowKit"]},"194":{"href":"/sdk/typescript/connectors/rainbow-kit#usage","html":"\n

The connector is then imported and added to the list of connectors alongside the other RainbowKit wallets.

\n
import { sequenceWallet } from '@0xsequence/rainbowkit-plugin'\nimport { connectorsForWallets } from '@rainbow-me/rainbowkit';\n \nconst connectors = connectorsForWallets([\n  {\n    groupName: 'Recommended',\n    wallets: [\n      sequenceWallet({\n        chains,\n        defaultNetwork: 'polygon',\n        connect: {\n          app: 'Demo-app'\n        }\n      }),\n      ...otherRainbowKitWallets\n    ]\n  }\n 
\n","isPage":false,"text":"\nThe connector is then imported and added to the list of connectors alongside the other RainbowKit wallets.\nimport { sequenceWallet } from '@0xsequence/rainbowkit-plugin'\nimport { connectorsForWallets } from '@rainbow-me/rainbowkit';\n \nconst connectors = connectorsForWallets([\n {\n groupName: 'Recommended',\n wallets: [\n sequenceWallet({\n chains,\n defaultNetwork: 'polygon',\n connect: {\n app: 'Demo-app'\n }\n }),\n ...otherRainbowKitWallets\n ]\n }\n \n","title":"Usage","titles":["Using RainbowKit"]},"195":{"href":"/sdk/typescript/connectors/rainbow-kit#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using RainbowKit"]},"196":{"href":"/sdk/typescript/connectors/rainbow-kit#chains","html":"\n

Chains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.

\n","isPage":false,"text":"\nChains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.\n","title":"chains","titles":["Using RainbowKit","Parameters"]},"197":{"href":"/sdk/typescript/connectors/rainbow-kit#connect-optional","html":"\n

Connect options for Sequence, including the name of the app and the default network id the wallet will attempt connection to.\nA more in depth description of the connect options is available here.

\n","isPage":false,"text":"\nConnect options for Sequence, including the name of the app and the default network id the wallet will attempt connection to.\nA more in depth description of the connect options is available here.\n","title":"connect (optional)","titles":["Using RainbowKit","Parameters"]},"198":{"href":"/sdk/typescript/connectors/rainbow-kit#defaultnetwork-optional","html":"\n

The default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).

\n","isPage":false,"text":"\nThe default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).\n","title":"defaultNetwork (optional)","titles":["Using RainbowKit","Parameters"]},"199":{"href":"/sdk/typescript/connectors/rainbow-kit#using-nextjs","html":"\n

There are special considerations to take into account when using NextJs with Wagmi-based libraries like RainbowKit, such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.

\n

See this section for an explanation on using Wagmi or Wagmi-based libraries with app router.
\nSee the example app which uses the app router structure.

\n

See this section for an explanation on using Wagmi or Wagmi-based libraries with pages router.
\nSee the example app which uses the pages router structure.

\n","isPage":false,"text":"\nThere are special considerations to take into account when using NextJs with Wagmi-based libraries like RainbowKit, such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.\nSee this section for an explanation on using Wagmi or Wagmi-based libraries with app router.\nSee the example app which uses the app router structure.\nSee this section for an explanation on using Wagmi or Wagmi-based libraries with pages router.\nSee the example app which uses the pages router structure.\n","title":"Using NextJs","titles":["Using RainbowKit"]},"200":{"href":"/sdk/typescript/connectors/rainbow-kit#using-older-versions-of-wagmi--012x","html":"\n

If you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:

\n
npm install @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n

or

\n
yarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n","isPage":false,"text":"\nIf you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:\nnpm install @0xsequence/wagmi-connector@1.0 0xsequence ethers\nor\nyarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers\n","title":"Using older versions of Wagmi (<= 0.12.x)","titles":["Using RainbowKit"]},"201":{"href":"/sdk/typescript/connectors/rainbow-kit#examples","html":"\n

A demo app for RainbowKit is available here

\n

A demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the app router structure here.
\nA demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the older pages router structure here.

","isPage":false,"text":"\nA demo app for RainbowKit is available here\nA demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the app router structure here.\nA demo app for NextJs + Wagmi (which is applicable for wagmi-based libraries) with the older pages router structure here.","title":"Examples","titles":["Using RainbowKit"]},"202":{"href":"/sdk/typescript/connectors/sequence-kit#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","html":"\n

Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.

\n","isPage":true,"text":"\nSequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.\n","title":"Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications","titles":[]},"203":{"href":"/sdk/typescript/connectors/sequence-kit#key-features","html":"\n\n

Explore the potential of Sequence Kit by trying out our demo!

\n
","isPage":false,"text":"\n\n\nUniversal Connections: Seamlessly connect via popular social logins such as Facebook, Google, Discord, and more! Your users will enjoy a smooth, secure onboarding process. 🔐🪪\n\n\nWeb3 Wallet Integration: Effortlessly integrate with leading web3 wallets like WalletConnect and MetaMask. Unleash the power of blockchain with just a few clicks! 🦊 ⛓️\n\n\nEmbedded Wallet Experience: Provide your users with a comprehensive in-game wallet, enabling them to manage their coins and collectibles all within your own application. 👛 🖼️ 🪙\n\n\nExplore the potential of Sequence Kit by trying out our demo!\n","title":"Key Features","titles":["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications"]},"204":{"href":"/sdk/typescript/connectors/sequence-kit#next-steps","html":"
\n

Ready to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.

","isPage":false,"text":"\nReady to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.","title":"Next Steps","titles":[]},"205":{"href":"/sdk/typescript/connectors/wagmi#using-wagmi","html":"\n

The Sequence wallet used with Wagmi through the connector.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with wagmi.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-wagmi\n:::

\n","isPage":true,"text":"\nThe Sequence wallet used with Wagmi through the connector.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with wagmi.\nSource code is available too: https://github.com/0xsequence/demo-dapp-wagmi\n:::\n","title":"Using Wagmi","titles":[]},"206":{"href":"/sdk/typescript/connectors/wagmi#installation","html":"\n

The connector is installed via the npm package @0xsequence/wagmi-connector. If you are using the latest version of wagmi (>= 1.0.0) the latest version of the wagmi-connector package can be installed with the following command:

\n
npm install @0xsequence/wagmi-connector 0xsequence ethers
\n

or

\n
yarn add @0xsequence/wagmi-connector 0xsequence ethers
\n","isPage":false,"text":"\nThe connector is installed via the npm package @0xsequence/wagmi-connector. If you are using the latest version of wagmi (>= 1.0.0) the latest version of the wagmi-connector package can be installed with the following command:\nnpm install @0xsequence/wagmi-connector 0xsequence ethers\nor\nyarn add @0xsequence/wagmi-connector 0xsequence ethers\n","title":"Installation","titles":["Using Wagmi"]},"207":{"href":"/sdk/typescript/connectors/wagmi#usage","html":"\n

The connector is then imported and added to the list of connectors alongside the other wagmi connectors.

\n
import { SequenceConnector } from "@0xsequence/wagmi-connector";\n \nconst connectors = [\n  new SequenceConnector({\n    chains,\n    options: {\n      defaultNetwork: "polygon",\n      connect: {\n        app: "Demo-app",\n      },\n    },\n  }),\n  ...otherConnectors,\n];\n \nconst wagmiConfig = createConfig({\n  autoConnect: true,\n  connectors,\n  publicClient,\n  webSocketPublicClient,\n});
\n","isPage":false,"text":"\nThe connector is then imported and added to the list of connectors alongside the other wagmi connectors.\nimport { SequenceConnector } from "@0xsequence/wagmi-connector";\n \nconst connectors = [\n new SequenceConnector({\n chains,\n options: {\n defaultNetwork: "polygon",\n connect: {\n app: "Demo-app",\n },\n },\n }),\n ...otherConnectors,\n];\n \nconst wagmiConfig = createConfig({\n autoConnect: true,\n connectors,\n publicClient,\n webSocketPublicClient,\n});\n","title":"Usage","titles":["Using Wagmi"]},"208":{"href":"/sdk/typescript/connectors/wagmi#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using Wagmi"]},"209":{"href":"/sdk/typescript/connectors/wagmi#chains","html":"\n

Chains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.

\n","isPage":false,"text":"\nChains supported by app. This is the same parameter as would be passed to other RainbowKit wallets.\n","title":"chains","titles":["Using Wagmi","Parameters"]},"210":{"href":"/sdk/typescript/connectors/wagmi#optionsconnect-optional","html":"\n

Connection details that will be passed to Sequence upon connection, including app name, network id, etc...\nA more in depth description of the connect options is available here.

\n","isPage":false,"text":"\nConnection details that will be passed to Sequence upon connection, including app name, network id, etc...\nA more in depth description of the connect options is available here.\n","title":"options.connect (optional)","titles":["Using Wagmi","Parameters"]},"211":{"href":"/sdk/typescript/connectors/wagmi#optionsdefaultnetwork-optional","html":"\n

The default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).

\n","isPage":false,"text":"\nThe default network to connect to. Sequence will default all operations to this network. It can also be defined using a number (e.g. 1 for Mainnet, 5 for Goerli, etc...).\n","title":"options.defaultNetwork (optional)","titles":["Using Wagmi","Parameters"]},"212":{"href":"/sdk/typescript/connectors/wagmi#using-older-versions-of-wagmi--012x","html":"\n

If you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:

\n
npm install @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n

or

\n
yarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers
\n","isPage":false,"text":"\nIf you are using an older version of Wagmi (<= 0.12.x), which is based on ethers instead of viem, use the following command to install the appropriate version of the wagmi connector:\nnpm install @0xsequence/wagmi-connector@1.0 0xsequence ethers\nor\nyarn add @0xsequence/wagmi-connector@1.0 0xsequence ethers\n","title":"Using older versions of Wagmi (<= 0.12.x)","titles":["Using Wagmi"]},"213":{"href":"/sdk/typescript/connectors/wagmi#using-nextjs","html":"\n

There are special considerations to take into account when using Wagmi with NextJs such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.

\n

See this section for an explanation on using the Wagmi connector with app router.
\nSee the example app which uses the app router structure.

\n

See this section for an explanation on using the Wagmi connector with pages router.
\nSee the example app which uses the pages router structure.

\n","isPage":false,"text":"\nThere are special considerations to take into account when using Wagmi with NextJs such that it functions harmoniously with the server-side rendering of NextJs.\nThe correct technique to use differs depending on whether the application uses the older pages router or the more recent app router.\nSee this section for an explanation on using the Wagmi connector with app router.\nSee the example app which uses the app router structure.\nSee this section for an explanation on using the Wagmi connector with pages router.\nSee the example app which uses the pages router structure.\n","title":"Using NextJs","titles":["Using Wagmi"]},"214":{"href":"/sdk/typescript/connectors/wagmi#examples","html":"\n

Below are example dapps using various versions of wagmi and libraries.

\n

A demo app for the lastest version of Wagmi is available here.
\nA demo app is available for older version of Wagmi(<=0.12.x) is available here.

\n

A demo app for Wagmi + NextJs with the app router structure here.
\nA demo app for Wagmi + NextJs with the older pages router structure here.

","isPage":false,"text":"\nBelow are example dapps using various versions of wagmi and libraries.\nA demo app for the lastest version of Wagmi is available here.\nA demo app is available for older version of Wagmi(<=0.12.x) is available here.\nA demo app for Wagmi + NextJs with the app router structure here.\nA demo app for Wagmi + NextJs with the older pages router structure here.","title":"Examples","titles":["Using Wagmi"]},"215":{"href":"/sdk/typescript/connectors/web3-onboard#using-web3-onboard","html":"\n

The Sequence wallet can be added through the Blocknative web3-onboard package.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with Web3-Onboard.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-web3-onboard\n:::

\n","isPage":true,"text":"\nThe Sequence wallet can be added through the Blocknative web3-onboard package.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Metamask + Wallet Connect with Web3-Onboard.\nSource code is available too: https://github.com/0xsequence/demo-dapp-web3-onboard\n:::\n","title":"Using Web3-Onboard","titles":[]},"216":{"href":"/sdk/typescript/connectors/web3-onboard#installation","html":"\n

The Sequence module is available through npm:

\n
npm install @web3-onboard/sequence 0xsequence ethers
\n

or

\n
yarn add @web3-onboard/sequence 0xsequence ethers
\n","isPage":false,"text":"\nThe Sequence module is available through npm:\nnpm install @web3-onboard/sequence 0xsequence ethers\nor\nyarn add @web3-onboard/sequence 0xsequence ethers\n","title":"Installation","titles":["Using Web3-Onboard"]},"217":{"href":"/sdk/typescript/connectors/web3-onboard#usage","html":"\n
import sequenceModule from '@web3-onboard/sequence'\n \nconst sequenceOptions = {\n  network: 137,\n  appName: 'My app'\n}\n \nconst sequenceOnboard = sequenceModule({})\n \nconst onboard = Onboard({\n  wallets: [\n    sequenceOnboard,\n    ...restWallets\n  ],\n  ...restofOnboardParams\n})\n 
\n","isPage":false,"text":"\nimport sequenceModule from '@web3-onboard/sequence'\n \nconst sequenceOptions = {\n network: 137,\n appName: 'My app'\n}\n \nconst sequenceOnboard = sequenceModule({})\n \nconst onboard = Onboard({\n wallets: [\n sequenceOnboard,\n ...restWallets\n ],\n ...restofOnboardParams\n})\n \n","title":"Usage","titles":["Using Web3-Onboard"]},"218":{"href":"/sdk/typescript/connectors/web3-onboard#parameters","html":"\n","isPage":false,"text":"\n","title":"Parameters","titles":["Using Web3-Onboard"]},"219":{"href":"/sdk/typescript/connectors/web3-onboard#network-optional","html":"\n

The default network that the Sequence wallet will attempt to connect to.

\n","isPage":false,"text":"\nThe default network that the Sequence wallet will attempt to connect to.\n","title":"network (optional)","titles":["Using Web3-Onboard","Parameters"]},"220":{"href":"/sdk/typescript/connectors/web3-onboard#appname-optional","html":"\n

The name of the app which will show up in Sequence's prompt upon an attempt to connect.

\n","isPage":false,"text":"\nThe name of the app which will show up in Sequence's prompt upon an attempt to connect.\n","title":"appName (optional)","titles":["Using Web3-Onboard","Parameters"]},"221":{"href":"/sdk/typescript/connectors/web3-onboard#example","html":"\n

An example demo of an integration of Sequence + Web3 Onboard is available here

","isPage":false,"text":"\nAn example demo of an integration of Sequence + Web3 Onboard is available here","title":"Example","titles":["Using Web3-Onboard"]},"222":{"href":"/sdk/typescript/connectors/web3-react-v6#using-web3-react-v6","html":"\n

The connector is available for web3-react V6. Please note that later versions of web3-react cannot be used with the Web3-React V6 connector due to breaking changes.

\n","isPage":true,"text":"\nThe connector is available for web3-react V6. Please note that later versions of web3-react cannot be used with the Web3-React V6 connector due to breaking changes.\n","title":"Using Web3-React V6","titles":[]},"223":{"href":"/sdk/typescript/connectors/web3-react-v6#installation","html":"\n

The connector may be installed via the npm package:

\n
 npm install @0xsequence/web3-react-v6-connector 0xsequence ethers
\n","isPage":false,"text":"\nThe connector may be installed via the npm package:\n npm install @0xsequence/web3-react-v6-connector 0xsequence ethers\n","title":"Installation","titles":["Using Web3-React V6"]},"224":{"href":"/sdk/typescript/connectors/web3-react-v6#usage","html":"\n","isPage":false,"text":"\n","title":"Usage","titles":["Using Web3-React V6"]},"225":{"href":"/sdk/typescript/connectors/web3-react-v6#initialization","html":"\n

The connector must be initialized similarly to other connectors.

\n
import { SequenceConnector } from '@0xsequence/web3-react-v6-connector'\n \nconst options = {\n  appName: 'Web3 React Demo app'\n}\n \nexport const sequence = new SequenceConnector({ chainId: 137, appName: options.appName  })
\n","isPage":false,"text":"\nThe connector must be initialized similarly to other connectors.\nimport { SequenceConnector } from '@0xsequence/web3-react-v6-connector'\n \nconst options = {\n appName: 'Web3 React Demo app'\n}\n \nexport const sequence = new SequenceConnector({ chainId: 137, appName: options.appName })\n","title":"Initialization","titles":["Using Web3-React V6","Usage"]},"226":{"href":"/sdk/typescript/connectors/web3-react-v6#activationdeactivation","html":"\n

The connection can be activated and deactivated from the initialized connector similarly to other connectors.

\n
import { useWeb3React } from '@web3-react/core'\nimport { sequence as sequenceConnector } from './connectors/sequence'\n \nconst { activate } = useWeb3React()\n \nconst connectWeb3React = async () => {\n  activate(sequenceConnector);\n}\n \nconst disconnectWeb3React = async () => {\n  sequenceConnector.deactivate();\n}
\n","isPage":false,"text":"\nThe connection can be activated and deactivated from the initialized connector similarly to other connectors.\nimport { useWeb3React } from '@web3-react/core'\nimport { sequence as sequenceConnector } from './connectors/sequence'\n \nconst { activate } = useWeb3React()\n \nconst connectWeb3React = async () => {\n activate(sequenceConnector);\n}\n \nconst disconnectWeb3React = async () => {\n sequenceConnector.deactivate();\n}\n","title":"Activation/Deactivation","titles":["Using Web3-React V6","Usage"]},"227":{"href":"/sdk/typescript/connectors/web3-react-v6#options","html":"\n","isPage":false,"text":"\n","title":"Options","titles":["Using Web3-React V6"]},"228":{"href":"/sdk/typescript/connectors/web3-react-v6#chainid","html":"\n

The default chain id as number that the Sequence wallet will attempt to connect to.

\n","isPage":false,"text":"\nThe default chain id as number that the Sequence wallet will attempt to connect to.\n","title":"chainId","titles":["Using Web3-React V6","Options"]},"229":{"href":"/sdk/typescript/connectors/web3-react-v6#appname-optional","html":"\n

The value of appName will be displayed by the Sequence wallet when initiating a connection.

\n","isPage":false,"text":"\nThe value of appName will be displayed by the Sequence wallet when initiating a connection.\n","title":"appName (optional)","titles":["Using Web3-React V6","Options"]},"230":{"href":"/sdk/typescript/connectors/web3-react-v6#example","html":"\n

A demo app for Web3-React v6 is available here

","isPage":false,"text":"\nA demo app for Web3-React v6 is available here","title":"Example","titles":["Using Web3-React V6"]},"231":{"href":"/sdk/typescript/connectors/web3modal#using-web3modal","html":"\n

The Sequence wallet can easily be used with Web3Modal.

\n

:::tip Try it live :)\nTry a live Dapp example using Sequence + Wallet Connect with Web3Modal.

\n

Source code is available too: https://github.com/0xsequence/demo-dapp-web3modal\n:::

\n","isPage":true,"text":"\nThe Sequence wallet can easily be used with Web3Modal.\n:::tip Try it live :)\nTry a live Dapp example using Sequence + Wallet Connect with Web3Modal.\nSource code is available too: https://github.com/0xsequence/demo-dapp-web3modal\n:::\n","title":"Using Web3Modal","titles":[]},"232":{"href":"/sdk/typescript/connectors/web3modal#usage","html":"\n

The sequence wallet is compatible with wallet connect V2 and is therefore fully compatible with web3modal by default.\nUsers can use the Scan button in the sequence wallet to connect.

\n\n","isPage":false,"text":"\nThe sequence wallet is compatible with wallet connect V2 and is therefore fully compatible with web3modal by default.\nUsers can use the Scan button in the sequence wallet to connect.\n\n","title":"Usage","titles":["Using Web3Modal"]},"233":{"href":"/sdk/typescript/connectors/web3modal#example","html":"\n

An example demo for the sequence Wallet + web3modal is available [here] (https://github.com/0xsequence/demo-dapp-web3modal)

","isPage":false,"text":"\nAn example demo for the sequence Wallet + web3modal is available [here] (https://github.com/0xsequence/demo-dapp-web3modal)","title":"Example","titles":["Using Web3Modal"]},"234":{"href":"/sdk/typescript/guides/auth-address#authenticate-users-with-message-signature","html":"\n","isPage":true,"text":"\n","title":"Authenticate Users with Message Signature","titles":[]},"235":{"href":"/sdk/typescript/guides/auth-address#ask-for-the-wallet-address","html":"\n

To get the user's Sequence wallet address:

\n
const wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)
\n","isPage":false,"text":"\nTo get the user's Sequence wallet address:\nconst wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)\n","title":"Ask for the wallet address","titles":["Authenticate Users with Message Signature"]},"236":{"href":"/sdk/typescript/guides/auth-address#authenticate-wallet","html":"\n

In many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.

\n

As this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.

\n
import { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n  app: 'Your Dapp name',\n  authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})
\n

It will look like this to your users:

\n\"Sequence\n

In the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.

\n

You can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.

\n","isPage":false,"text":"\nIn many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.\nAs this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.\nimport { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n app: 'Your Dapp name',\n authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})\nIt will look like this to your users:\n\nIn the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.\nYou can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.\n","title":"Authenticate wallet","titles":["Authenticate Users with Message Signature"]},"237":{"href":"/sdk/typescript/guides/auth-address#authenticate-wallet-server-side","html":"\n

The above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:

\n
import { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n  () => new commons.reader.OnChainReader(provider),\n  new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n  v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n  const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n  console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n  console.log(`invalid proof -- do not trust address: ${err}`)\n}
\n

See the Go Sequence SDK on using Sequence in your Go applications.

\n

If your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.

\n

As always, if you have any questions or require help, reach out to us on Discord.

","isPage":false,"text":"\nThe above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:\nimport { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n () => new commons.reader.OnChainReader(provider),\n new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n console.log(`invalid proof -- do not trust address: ${err}`)\n}\nSee the Go Sequence SDK on using Sequence in your Go applications.\nIf your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.\nAs always, if you have any questions or require help, reach out to us on Discord.","title":"Authenticate wallet server-side","titles":["Authenticate Users with Message Signature"]},"238":{"href":"/sdk/typescript/guides/building-backends#building-backends-with-sequence","html":"\n","isPage":true,"text":"\n","title":"Building Backends with Sequence","titles":[]},"239":{"href":"/sdk/typescript/guides/building-backends#nodejs","html":"\n

The 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.

\n","isPage":false,"text":"\nThe 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.\n","title":"nodejs","titles":["Building Backends with Sequence",null]},"240":{"href":"/sdk/typescript/guides/building-backends#go","html":"\n

A complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.

\n

go-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.

\n","isPage":false,"text":"\nA complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.\ngo-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.\n","title":"Go","titles":["Building Backends with Sequence",null]},"241":{"href":"/sdk/typescript/guides/building-backends#ethkit","html":"\n

As part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.

\n","isPage":false,"text":"\nAs part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.\n","title":"ethkit","titles":["Building Backends with Sequence",null]},"242":{"href":"/sdk/typescript/guides/building-backends#support-for-other-backend-languages","html":"\n

If your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.

\n

If your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.

\n

If you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.

","isPage":false,"text":"\nIf your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.\nIf your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.\nIf you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.","title":"Support for other backend languages","titles":["Building Backends with Sequence",null]},"243":{"href":"/sdk/typescript/guides/connect-wallet#connect-wallet","html":"\n

Sequence is a very flexible wallet which allow users multiple ways to connect / access their wallet. This includes:

\n
    \n
  1. \n

    On-demand Ethereum web wallet for new users via 0xsequence npm package + https://sequence.app -- this option allows\ndevelopers to offer users an on-demand web3 wallet. No user install required -- any browser will just work, and users\ncan onboard with a familiar Web2 experience. Think of it like Paypal / Stripe but for web3.

    \n
  2. \n
  3. \n

    Surf all of web3 via Sequence Wallet Chrome Extension -- users\nwho have the Sequence Wallet Chrome Extension installed are able to access any Ethereum-compatible Dapp on the Web :) Just like how MetaMask works,\nbut of course with a bunch of the benefits of Sequence.

    \n
  4. \n
  5. \n

    Mobile phone access via WalletConnect support within Sequence Wallet -- users are able to communicate with their wallets remotely\nvia the awesome Wallet Connect protocol. This is an excellent option if using Sequence Wallet from your mobile phone and want to connect\nyour wallet to a desktop dapp.

    \n
  6. \n
\n

Sequence Wallet is built on Web Browser (W3C) and Ethereum web3 standards -- and is available everywhere that a modern browser is able to run.\nWe've carefully designed the wallet for simple onboarding, while maintaining security for users, and allowing users to progressively\nincrease the level of their security through additional keys and measures.

\n

This means, that if you've developed a dapp to work with MetaMask, then Sequence will work too without any changes. If you're\nusing web3.js or ethers.js, Sequence will just work too. This is the beauty of interoperability on web3 :)

\n","isPage":true,"text":"\nSequence is a very flexible wallet which allow users multiple ways to connect / access their wallet. This includes:\n\n\nOn-demand Ethereum web wallet for new users via 0xsequence npm package + https://sequence.app -- this option allows\ndevelopers to offer users an on-demand web3 wallet. No user install required -- any browser will just work, and users\ncan onboard with a familiar Web2 experience. Think of it like Paypal / Stripe but for web3.\n\n\nSurf all of web3 via Sequence Wallet Chrome Extension -- users\nwho have the Sequence Wallet Chrome Extension installed are able to access any Ethereum-compatible Dapp on the Web :) Just like how MetaMask works,\nbut of course with a bunch of the benefits of Sequence.\n\n\nMobile phone access via WalletConnect support within Sequence Wallet -- users are able to communicate with their wallets remotely\nvia the awesome Wallet Connect protocol. This is an excellent option if using Sequence Wallet from your mobile phone and want to connect\nyour wallet to a desktop dapp.\n\n\nSequence Wallet is built on Web Browser (W3C) and Ethereum web3 standards -- and is available everywhere that a modern browser is able to run.\nWe've carefully designed the wallet for simple onboarding, while maintaining security for users, and allowing users to progressively\nincrease the level of their security through additional keys and measures.\nThis means, that if you've developed a dapp to work with MetaMask, then Sequence will work too without any changes. If you're\nusing web3.js or ethers.js, Sequence will just work too. This is the beauty of interoperability on web3 :)\n","title":"Connect Wallet","titles":[]},"244":{"href":"/sdk/typescript/guides/connect-wallet#connecting-your-dapp-with-0xsequence","html":"\n

:::info A delightful wallet without requiring your users to install anything

\nBy integrating 0xsequence, users may access your dapp without having to install any special extensions,\nand the wallet also works on mobile browsers!\n:::

\n

Your dapp can connect to your user's wallet by first instantiating the Wallet provider:

\n
import { sequence } from "0xsequence";\n \nconst projectAccessKey = '<access_key>'\n \n// This assumes your dapp runs on Ethereum mainnet\nconst wallet = sequence.initWallet(projectAccessKey);\n \n// If your dapp runs on a different EVM-compatible blockchain, you can specify its name\n// const wallet = sequence.initWallet(projectAccessKey, { defaultNetwork: 'polygon' });
\n

Note that is possible to retrieve the above instance by using the getWallet() method:

\n
import { sequence } from "0xsequence";\nconst wallet = sequence.getWallet();
\n

Once you have the instance, you can connect to the wallet:

\n
const connectDetails = await wallet.connect({\n  app: "Your Dapp name",\n  authorize: true,\n  // And pass settings if you would like to customize further\n  settings: {\n    theme: "light",\n    bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n    includedPaymentProviders: ["moonpay", "ramp"],\n    defaultFundingCurrency: "matic",\n    lockFundingCurrencyToDefault: false,\n  },\n});\n \nconsole.log("user accepted connect?", connectDetails.connected);\nconsole.log(\n  "users signed connect proof to valid their account address:",\n  connectDetails.proof\n);
\n

You can pick/limit the available sign in options with signInOptions. Will be ignored if user is already signed in.

\n
const wallet = sequence.getWallet();\n \nawait wallet.connect({\n  app: "Your Dapp name",\n  settings: { signInOptions: ["google"] },\n});
\n

After you connect, you can use wallet.openWallet() to open the wallet:

\n
const wallet = sequence.getWallet();\nwallet.openWallet();
\n

You can also optionally pass a path, and use openWithOptions intent to pass settings when you open the wallet:

\n
const settings: Settings = {\n  theme: "dark",\n  bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n  includedPaymentProviders: ["moonpay", "ramp"],\n  defaultFundingCurrency: "eth",\n  lockFundingCurrencyToDefault: false,\n};\n \nconst intent: OpenWalletIntent = {\n  type: "openWithOptions",\n  options: {\n    settings: settings,\n  },\n};\n \nconst wallet = sequence.getWallet();\n \nconst path = "wallet/add-funds";\nwallet.openWallet(path, intent);
\n

:::tip Check out some example Dapp source code\nFor a complete examples, see Demo-Dapp and Demo-Dapp-Web3Modal.\n:::

\n

:::caution Avoid Browsers Blocking Sequence Popup\nMost browsers will block popups if they are called outside of user-triggered event handlers like onclick, or when it takes too long to process between the user action and the actual window

\n

Read more about browser popup-blocking here.\n:::

\n

\"Sequence

\n

\"Sequence

\n","isPage":false,"text":"\n:::info A delightful wallet without requiring your users to install anything \nBy integrating 0xsequence, users may access your dapp without having to install any special extensions,\nand the wallet also works on mobile browsers!\n:::\nYour dapp can connect to your user's wallet by first instantiating the Wallet provider:\nimport { sequence } from "0xsequence";\n \nconst projectAccessKey = '<access_key>'\n \n// This assumes your dapp runs on Ethereum mainnet\nconst wallet = sequence.initWallet(projectAccessKey);\n \n// If your dapp runs on a different EVM-compatible blockchain, you can specify its name\n// const wallet = sequence.initWallet(projectAccessKey, { defaultNetwork: 'polygon' });\nNote that is possible to retrieve the above instance by using the getWallet() method:\nimport { sequence } from "0xsequence";\nconst wallet = sequence.getWallet();\nOnce you have the instance, you can connect to the wallet:\nconst connectDetails = await wallet.connect({\n app: "Your Dapp name",\n authorize: true,\n // And pass settings if you would like to customize further\n settings: {\n theme: "light",\n bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n includedPaymentProviders: ["moonpay", "ramp"],\n defaultFundingCurrency: "matic",\n lockFundingCurrencyToDefault: false,\n },\n});\n \nconsole.log("user accepted connect?", connectDetails.connected);\nconsole.log(\n "users signed connect proof to valid their account address:",\n connectDetails.proof\n);\nYou can pick/limit the available sign in options with signInOptions. Will be ignored if user is already signed in.\nconst wallet = sequence.getWallet();\n \nawait wallet.connect({\n app: "Your Dapp name",\n settings: { signInOptions: ["google"] },\n});\nAfter you connect, you can use wallet.openWallet() to open the wallet:\nconst wallet = sequence.getWallet();\nwallet.openWallet();\nYou can also optionally pass a path, and use openWithOptions intent to pass settings when you open the wallet:\nconst settings: Settings = {\n theme: "dark",\n bannerUrl: "https://yoursite.com/banner-image.png", // 3:1 aspect ratio, 1200x400 works best\n includedPaymentProviders: ["moonpay", "ramp"],\n defaultFundingCurrency: "eth",\n lockFundingCurrencyToDefault: false,\n};\n \nconst intent: OpenWalletIntent = {\n type: "openWithOptions",\n options: {\n settings: settings,\n },\n};\n \nconst wallet = sequence.getWallet();\n \nconst path = "wallet/add-funds";\nwallet.openWallet(path, intent);\n:::tip Check out some example Dapp source code\nFor a complete examples, see Demo-Dapp and Demo-Dapp-Web3Modal.\n:::\n:::caution Avoid Browsers Blocking Sequence Popup\nMost browsers will block popups if they are called outside of user-triggered event handlers like onclick, or when it takes too long to process between the user action and the actual window\nRead more about browser popup-blocking here.\n:::\n\n\n","title":"Connecting your dapp with 0xsequence","titles":["Connect Wallet"]},"245":{"href":"/sdk/typescript/guides/connect-wallet#wallet-login-and-connect-options","html":"\n

Dapps with direct sequence integration can specify a ConnectOptions object when running wallet.connect().

\n
const connectDetails = await wallet.connect(connectOptions)
\n

The option parameters are described below.

\n","isPage":false,"text":"\nDapps with direct sequence integration can specify a ConnectOptions object when running wallet.connect().\nconst connectDetails = await wallet.connect(connectOptions)\nThe option parameters are described below.\n","title":"Wallet Login and Connect Options","titles":["Connect Wallet"]},"246":{"href":"/sdk/typescript/guides/connect-wallet#app","html":"\n

App name of the dapp which will be announced to user on connect screen.

\n

Example: await wallet.connect({ app: 'My defi app' })

\n","isPage":false,"text":"\nApp name of the dapp which will be announced to user on connect screen.\nExample: await wallet.connect({ app: 'My defi app' })\n","title":"app","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"247":{"href":"/sdk/typescript/guides/connect-wallet#appprotocol","html":"\n

Custom protocol for auth redirect (unity/unreal).

\n","isPage":false,"text":"\nCustom protocol for auth redirect (unity/unreal).\n","title":"appProtocol","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"248":{"href":"/sdk/typescript/guides/connect-wallet#origin","html":"\n

Origin hint of the dapp's host opening the wallet. This value will automatically be determined and verified for integrity, and can be omitted.

\n","isPage":false,"text":"\nOrigin hint of the dapp's host opening the wallet. This value will automatically be determined and verified for integrity, and can be omitted.\n","title":"origin","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"249":{"href":"/sdk/typescript/guides/connect-wallet#expiry","html":"\n

Expiry number (in seconds) that is used for ETHAuth proof. Default is 1 week in seconds.

\n

Example: await wallet.connect({ expiry: 36000 })

\n","isPage":false,"text":"\nExpiry number (in seconds) that is used for ETHAuth proof. Default is 1 week in seconds.\nExample: await wallet.connect({ expiry: 36000 })\n","title":"expiry","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"250":{"href":"/sdk/typescript/guides/connect-wallet#authorize","html":"\n

authorize will perform an ETHAuth eip712 signing and return the proof to the dapp.

\n

Example: await wallet.connect({ authorize: true })

\n","isPage":false,"text":"\nauthorize will perform an ETHAuth eip712 signing and return the proof to the dapp.\nExample: await wallet.connect({ authorize: true })\n","title":"authorize","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"251":{"href":"/sdk/typescript/guides/connect-wallet#authorizenonce","html":"\n

authorizeNonce is an optional number to be passed as ETHAuth's nonce claim for replay protection.

\n

Example: await wallet.connect({ authorizeNonce: 123 })

\n","isPage":false,"text":"\nauthorizeNonce is an optional number to be passed as ETHAuth's nonce claim for replay protection.\nExample: await wallet.connect({ authorizeNonce: 123 })\n","title":"authorizeNonce","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"252":{"href":"/sdk/typescript/guides/connect-wallet#refresh","html":"\n

refresh flag will force a full re-connect (ie. disconnect then connect again).

\n

Example: await wallet.connect({ refresh: true })

\n","isPage":false,"text":"\nrefresh flag will force a full re-connect (ie. disconnect then connect again).\nExample: await wallet.connect({ refresh: true })\n","title":"refresh","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"253":{"href":"/sdk/typescript/guides/connect-wallet#keepwalletopened","html":"\n

keepWalletOpened will keep the wallet window open after connecting. The default is to automatically close the wallet after connecting.

\n

Example: await wallet.connect({ keepWalletOpened: true })

\n","isPage":false,"text":"\nkeepWalletOpened will keep the wallet window open after connecting. The default is to automatically close the wallet after connecting.\nExample: await wallet.connect({ keepWalletOpened: true })\n","title":"keepWalletOpened","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"254":{"href":"/sdk/typescript/guides/connect-wallet#askforemail","html":"\n

askForEmail will ask user whether they want to share the email they use to sign in to wallet while connecting, and will be returned in connectDetails.

\n

Example: await wallet.connect({ askForEmail: true })

\n","isPage":false,"text":"\naskForEmail will ask user whether they want to share the email they use to sign in to wallet while connecting, and will be returned in connectDetails.\nExample: await wallet.connect({ askForEmail: true })\n","title":"askForEmail","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"255":{"href":"/sdk/typescript/guides/connect-wallet#settingstheme","html":"\n

Name of one of the available theme provided by sequence the sequence wallet will be rendered with.

\n

Example: await wallet.connect({ settings: {theme: "light"}}

\n","isPage":false,"text":"\nName of one of the available theme provided by sequence the sequence wallet will be rendered with.\nExample: await wallet.connect({ settings: {theme: "light"}}\n","title":"settings.theme","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"256":{"href":"/sdk/typescript/guides/connect-wallet#settingsbannerurl","html":"\n

URL of a banner image users will see when connecting or logging into your dapp. The banner image should follow a 3:1 aspect ration where 1200x400 works best.

\n

Example: await wallet.connect({ settings: {bannerUrl: "https://yoursite.com/banner-image.png"}}

\n","isPage":false,"text":"\nURL of a banner image users will see when connecting or logging into your dapp. The banner image should follow a 3:1 aspect ration where 1200x400 works best.\nExample: await wallet.connect({ settings: {bannerUrl: "https://yoursite.com/banner-image.png"}}\n","title":"settings.bannerUrl","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"257":{"href":"/sdk/typescript/guides/connect-wallet#settingssigninwith","html":"\n

Specify signInWith with a supported auth provider to automatically sign in the user with that provider only. Will be ignored if user is already signed in.

\n

Example: await wallet.connect({ settings: {signInWith: "google"}}

\n

Supported Providers: "google", "discord", "twitch", "apple", "facebook"

\n","isPage":false,"text":"\nSpecify signInWith with a supported auth provider to automatically sign in the user with that provider only. Will be ignored if user is already signed in.\nExample: await wallet.connect({ settings: {signInWith: "google"}}\nSupported Providers: "google", "discord", "twitch", "apple", "facebook"\n","title":"settings.signInWith","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"258":{"href":"/sdk/typescript/guides/connect-wallet#settingssigninwithemail","html":"\n

Specify signInWithEmail with an email address to allow user automatically sign in with the email option. Will be ignored if user is already signed in.

\n

Example: await wallet.connect({ settings: {signInWithEmail: "user@email.com"}}

\n","isPage":false,"text":"\nSpecify signInWithEmail with an email address to allow user automatically sign in with the email option. Will be ignored if user is already signed in.\nExample: await wallet.connect({ settings: {signInWithEmail: "user@email.com"}}\n","title":"settings.signInWithEmail","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"259":{"href":"/sdk/typescript/guides/connect-wallet#settingssigninoptions","html":"\n

Specify signInOptions to pick/limit the available sign in options. Will be ignored if user is already signed in.

\n

Example: await wallet.connect({ settings: {signInOptions: ["email", "google", "apple"]}}

\n","isPage":false,"text":"\nSpecify signInOptions to pick/limit the available sign in options. Will be ignored if user is already signed in.\nExample: await wallet.connect({ settings: {signInOptions: ["email", "google", "apple"]}}\n","title":"settings.signInOptions","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"260":{"href":"/sdk/typescript/guides/connect-wallet#settingsincludedpaymentproviders","html":"\n

List of payment providers users will be able to access. By default, users can access all payment providers integrated in Sequence.

\n

Example: await wallet.connect({ settings: {includedPaymentProviders: ["moonpay", "ramp"]}}

\n","isPage":false,"text":"\nList of payment providers users will be able to access. By default, users can access all payment providers integrated in Sequence.\nExample: await wallet.connect({ settings: {includedPaymentProviders: ["moonpay", "ramp"]}}\n","title":"settings.includedPaymentProviders","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"261":{"href":"/sdk/typescript/guides/connect-wallet#settingsdefaultfundingcurrency","html":"\n

The tag of the default currency to show when users open the payment provider page. The currency has to be supported by the payment providers integrated in sequence.

\n

Example: await wallet.connect({ settings: {defaultFundingCurrency: "usdc"}}

\n","isPage":false,"text":"\nThe tag of the default currency to show when users open the payment provider page. The currency has to be supported by the payment providers integrated in sequence.\nExample: await wallet.connect({ settings: {defaultFundingCurrency: "usdc"}}\n","title":"settings.defaultFundingCurrency","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"262":{"href":"/sdk/typescript/guides/connect-wallet#settingsdefaultpurchaseamount","html":"\n

Use to specify a default purchase amount, as an integer, for prefilling the funding amount. If not specified, the default is 100.

\n

Example: await wallet.connect({ settings: {defaultPurchaseAmount: 200}}

\n","isPage":false,"text":"\nUse to specify a default purchase amount, as an integer, for prefilling the funding amount. If not specified, the default is 100.\nExample: await wallet.connect({ settings: {defaultPurchaseAmount: 200}}\n","title":"settings.defaultPurchaseAmount","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"263":{"href":"/sdk/typescript/guides/connect-wallet#settingslockfundingcurrencytodefault","html":"\n

Whether to only allow users to purchase the default currency specified by the defaultFundingCurrency option. If set to false, users will also be able to purchase other tokens. locking the default funding currency can be useful to prevent users from purchasing the wrong currency or the currency on the wrong chain.

\n

Example: await wallet.connect({ settings: {defaultFundingCurrency: true}}

\n","isPage":false,"text":"\nWhether to only allow users to purchase the default currency specified by the defaultFundingCurrency option. If set to false, users will also be able to purchase other tokens. locking the default funding currency can be useful to prevent users from purchasing the wrong currency or the currency on the wrong chain.\nExample: await wallet.connect({ settings: {defaultFundingCurrency: true}}\n","title":"settings.lockFundingCurrencyToDefault","titles":["Connect Wallet","Wallet Login and Connect Options",null]},"264":{"href":"/sdk/typescript/guides/connect-wallet#connecting-your-dapp-with-web3js-or-ethersjs","html":"\n

For a full example of a dapp which supports Sequence (on-demand + chrome extension), Metamask, and WalletConnect\nplease see the Demo-Dapp-Web3Modal repo.

\n

\"Sequence

\n","isPage":false,"text":"\nFor a full example of a dapp which supports Sequence (on-demand + chrome extension), Metamask, and WalletConnect\nplease see the Demo-Dapp-Web3Modal repo.\n\n","title":"Connecting your dapp with web3.js or ethers.js","titles":["Connect Wallet"]},"265":{"href":"/sdk/typescript/guides/connect-wallet#connecting-to-any-ethereum-dapp-with-the-sequence-wallet-chrome-extension","html":"\n

Sequence Chrome Extension: Install

\n

\"Sequence

\n","isPage":false,"text":"\nSequence Chrome Extension: Install\n\n","title":"Connecting to any Ethereum dapp with the Sequence Wallet Chrome Extension","titles":["Connect Wallet"]},"266":{"href":"/sdk/typescript/guides/connect-wallet#connecting-via-walletconnect","html":"\n

Sequence already supports connecting to dapps via WalletConnect.\nIf your dapp already supports WalletConnect, and you don't need Sequence-specific functionality, nothing more needs to be done.\nFrom the user's perspective, the WalletConnect flow behaves as follows.

\n

Taking Uniswap as an example, the user is prompted to connect their wallet using one of multiple possible protocols.

\n\n

The user selects the WalletConnect option.

\n\n

A QR code is displayed, which can be scanned by Sequence.\nAlternatively, the user can also choose to copy the connection details via their OS clipboard.

\n\n

Back in the Sequence interface, the user chooses "Scan".

\n\n

The QR code from the dapp is scanned.\nAlternatively, the code is pasted from the OS clipboard if the user chose that previously.

\n\n

The user confirms the connection request.

\n\n

The connection succeeded, and the dapp is updated to reflect that.

\n\n

While connected, the dapp is able to make signing requests to Sequence.\nSequence will always prompt for confirmation from the user for any activity initiated by the dapp.

\n\n

Once the user has finished using the dapp, they can disconnect the wallet via the session menu.

\n","isPage":false,"text":"\nSequence already supports connecting to dapps via WalletConnect.\nIf your dapp already supports WalletConnect, and you don't need Sequence-specific functionality, nothing more needs to be done.\nFrom the user's perspective, the WalletConnect flow behaves as follows.\nTaking Uniswap as an example, the user is prompted to connect their wallet using one of multiple possible protocols.\n\nThe user selects the WalletConnect option.\n\nA QR code is displayed, which can be scanned by Sequence.\nAlternatively, the user can also choose to copy the connection details via their OS clipboard.\n\nBack in the Sequence interface, the user chooses "Scan".\n\nThe QR code from the dapp is scanned.\nAlternatively, the code is pasted from the OS clipboard if the user chose that previously.\n\nThe user confirms the connection request.\n\nThe connection succeeded, and the dapp is updated to reflect that.\n\nWhile connected, the dapp is able to make signing requests to Sequence.\nSequence will always prompt for confirmation from the user for any activity initiated by the dapp.\n\nOnce the user has finished using the dapp, they can disconnect the wallet via the session menu.\n","title":"Connecting via WalletConnect","titles":["Connect Wallet"]},"267":{"href":"/sdk/typescript/guides/overview#install","html":"\n

Sequence.js is a modular web3 stack and smart wallet package for Ethereum chains. You can think of it similar to ethers.js, but tailored to the Sequence stack which streamlines common functions needed for blockchain-enabled game development. The sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:

\n
npm install 0xsequence ethers
\n

or

\n
pnpm install 0xsequence ethers
\n

or

\n
yarn add 0xsequence ethers
\n

If you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.

\n

Your package.json should look something like this (actual version may vary):

\n
{\n  "name": "my-dapp",\n  ...\n  "dependencies": {\n    "0xsequence": "^1.0.0",\n    "ethers": ^5.7.0"\n    ...\n  }\n}
\n","isPage":true,"text":"\nSequence.js is a modular web3 stack and smart wallet package for Ethereum chains. You can think of it similar to ethers.js, but tailored to the Sequence stack which streamlines common functions needed for blockchain-enabled game development. The sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:\nnpm install 0xsequence ethers\nor\npnpm install 0xsequence ethers\nor\nyarn add 0xsequence ethers\nIf you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.\nYour package.json should look something like this (actual version may vary):\n{\n "name": "my-dapp",\n ...\n "dependencies": {\n "0xsequence": "^1.0.0",\n "ethers": ^5.7.0"\n ...\n }\n}\n","title":"Install","titles":[null]},"268":{"href":"/sdk/typescript/guides/overview#cdn-distribution-as-native-js","html":"\n

Optionally, 0xsequence can be installed as a JS script source (UMD distribution) via:

\n
<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>
","isPage":false,"text":"\nOptionally, 0xsequence can be installed as a JS script source (UMD distribution) via:\n<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>","title":"CDN distribution as native JS","titles":[null,"Install",null]},"269":{"href":"/sdk/typescript/guides/send-batch-transactions#sending-a-batch-of-transactions","html":"\n

Likewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:

\n
const transaction1 = {\n  to: recipient1Address,\n  value: 1000000000000000000\n}\n \nconst transaction2 = {\n  to: recipient2Address,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)
\n

The transactions don't have to be the same token or even token standard either.\nYou can mix and match:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n  { to: recipient1Address, value: '1000000000000000000' },\n  { to: daiContractAddress, data: erc20Data },\n  { to: erc721ContractAddress, data: erc721Data },\n  { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)
","isPage":true,"text":"\nLikewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:\nconst transaction1 = {\n to: recipient1Address,\n value: 1000000000000000000\n}\n \nconst transaction2 = {\n to: recipient2Address,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)\nThe transactions don't have to be the same token or even token standard either.\nYou can mix and match:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n { to: recipient1Address, value: '1000000000000000000' },\n { to: daiContractAddress, data: erc20Data },\n { to: erc721ContractAddress, data: erc721Data },\n { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)","title":"Sending a Batch of Transactions","titles":[]},"270":{"href":"/sdk/typescript/guides/send-erc1155#sending-erc-1155-collectible-tokens","html":"\n

Sending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n  to: erc1155TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n  to: erc1155ContractAddress,\n  data: data1\n}\nconst transaction2 = {\n  to: erc1155ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n to: erc1155TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n to: erc1155ContractAddress,\n data: data1\n}\nconst transaction2 = {\n to: erc1155ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-1155 (Collectible) Tokens","titles":[]},"271":{"href":"/sdk/typescript/guides/send-erc20#sending-erc-20-tokens","html":"\n

You can ask the wallet to send a single ERC-20 token transfer:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n  'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n  to: daiContractAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: daiContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: daiContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nYou can ask the wallet to send a single ERC-20 token transfer:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n 'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n to: daiContractAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: daiContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: daiContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-20 Tokens","titles":[]},"272":{"href":"/sdk/typescript/guides/send-erc721#sending-erc-721-nft-tokens","html":"\n

Sending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n  to: erc721TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: erc721ContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: erc721ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n to: erc721TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: erc721ContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: erc721ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-721 (NFT) Tokens","titles":[]},"273":{"href":"/sdk/typescript/guides/send-transaction#sending-transactions","html":"\n

Signing a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):

\n
const transaction = {\n  to: recipientAddress,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSigning a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):\nconst transaction = {\n to: recipientAddress,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n ","title":"Sending Transactions","titles":[]},"274":{"href":"/sdk/typescript/guides/session-keys#no-wallet-confirmation-signatures","html":"\n

It is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.

\n
","isPage":true,"text":"\nIt is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.\n","title":"No-Wallet-Confirmation Signatures","titles":[]},"275":{"href":"/sdk/typescript/guides/session-keys#session-keys","html":"
\n

Session keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.

\n

By signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.

\n

Session keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.

\n
","isPage":false,"text":"\nSession keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.\nBy signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.\nSession keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.\n","title":"Session Keys","titles":[]},"276":{"href":"/sdk/typescript/guides/session-keys#using-session-keys-with-sequence","html":"
\n","isPage":false,"text":"\n","title":"Using Session keys with Sequence","titles":[]},"277":{"href":"/sdk/typescript/guides/session-keys#1-initialize-sequence-wallet-and-connect","html":"\n
import { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()
\n","isPage":false,"text":"\nimport { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()\n","title":"1. Initialize Sequence Wallet and Connect","titles":["Using Session keys with Sequence",null]},"278":{"href":"/sdk/typescript/guides/session-keys#2-generate-a-session-key","html":"\n

Create a new ephemeral private key, store it in local storage, and derive the associated address:

\n
const sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()
\n","isPage":false,"text":"\nCreate a new ephemeral private key, store it in local storage, and derive the associated address:\nconst sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()\n","title":"2. Generate a Session Key","titles":["Using Session keys with Sequence",null]},"279":{"href":"/sdk/typescript/guides/session-keys#3-sign-authorization-message","html":"\n

Sign a message with the user's Sequence Wallet to authorize the session key:

\n
const authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)
\n","isPage":false,"text":"\nSign a message with the user's Sequence Wallet to authorize the session key:\nconst authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)\n","title":"3. Sign Authorization Message","titles":["Using Session keys with Sequence",null]},"280":{"href":"/sdk/typescript/guides/session-keys#4-verify-authorization-signature","html":"\n

Verify the signature on the server or client side using Sequence utility functions:

\n
const provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n  userAddress,\n  authorizationMessage,\n  signature,\n  chainId\n)\n \nif (isValid) {\n  console.log('Session key authorized')\n} else {\n  console.log('Session key not authorized')\n}
\n","isPage":false,"text":"\nVerify the signature on the server or client side using Sequence utility functions:\nconst provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n userAddress,\n authorizationMessage,\n signature,\n chainId\n)\n \nif (isValid) {\n console.log('Session key authorized')\n} else {\n console.log('Session key not authorized')\n}\n","title":"4. Verify Authorization Signature","titles":["Using Session keys with Sequence",null]},"281":{"href":"/sdk/typescript/guides/session-keys#5-sign-message-with-session-key","html":"\n

Use the session key to sign a message client-side without user interaction:

\n
const message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)
\n","isPage":false,"text":"\nUse the session key to sign a message client-side without user interaction:\nconst message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)\n","title":"5. Sign Message with Session Key","titles":["Using Session keys with Sequence",null]},"282":{"href":"/sdk/typescript/guides/session-keys#6-verify-session-signature","html":"\n

Verify the session signature on the server or client side:

\n
const recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n  console.log('Session signature valid')\n} else {\n  console.log('Session signature invalid')\n}
\n

Note: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.

","isPage":false,"text":"\nVerify the session signature on the server or client side:\nconst recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n console.log('Session signature valid')\n} else {\n console.log('Session signature invalid')\n}\nNote: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.","title":"6. Verify Session Signature","titles":["Using Session keys with Sequence",null]},"283":{"href":"/sdk/unity/Advanced/clients#clients","html":"\n

In the context of SequenceEthereum, a Client is defined by the IEthClient interface.

\n

Creating a client requires a Chain. This will use our highly available and responsive Node Gateway service for your RPC requests; accessed using the API key from the Builder you've provided in your SequenceConfig scriptable object. If you prefer to use your own RPC URL, you can create a SequenceEthClient using a URL string as a parameter instead.

\n

You can create a client using this snippet:

\n
IEthClient client = new SequenceEthClient(Chain.Polygon);
\n","isPage":true,"text":"\nIn the context of SequenceEthereum, a Client is defined by the IEthClient interface.\nCreating a client requires a Chain. This will use our highly available and responsive Node Gateway service for your RPC requests; accessed using the API key from the Builder you've provided in your SequenceConfig scriptable object. If you prefer to use your own RPC URL, you can create a SequenceEthClient using a URL string as a parameter instead.\nYou can create a client using this snippet:\nIEthClient client = new SequenceEthClient(Chain.Polygon);\n","title":"Clients","titles":[]},"284":{"href":"/sdk/unity/Advanced/clients#methods","html":"\n

As your connection point to Ethereum nodes, there are a number of methods that can be performed by a client, these can be found in the IEthClient interface and are implemented by SequenceEthClient.

\n

Note: with the exception of BalanceAt (potentially), most users will not need to make use of these methods, but we have included them in our documentation for completeness.

\n","isPage":false,"text":"\nAs your connection point to Ethereum nodes, there are a number of methods that can be performed by a client, these can be found in the IEthClient interface and are implemented by SequenceEthClient.\nNote: with the exception of BalanceAt (potentially), most users will not need to make use of these methods, but we have included them in our documentation for completeness.\n","title":"Methods","titles":["Clients"]},"285":{"href":"/sdk/unity/Advanced/clients#balanceat","html":"\n

Used to get the gas currency balance of a given wallet at a given blockNumber (in hexadecimal format provided as a string)

\n
BigIntegar balance = await client.BalanceAt(wallet.GetAddress()); // By default, if no blockNumber string is provided, check the latest block\nBigIntegar balance = await client.BalanceAt(wallet.GetAddress(), blockNumber);
\n

Note: there are two special values for blockNumber. "earliest" will get the balance at the earliest block on the chain. "latest" will get the balance at the latest block on the chain and is the default parameter when none is provided. Otherwise, you'll want to provide the blockNumber string in hexadecimal format.

\nUnless you really want to get into the weeds with how things work, it is HIGHLY recommended to move on to the next page of the documentation at this point\n","isPage":false,"text":"\nUsed to get the gas currency balance of a given wallet at a given blockNumber (in hexadecimal format provided as a string)\nBigIntegar balance = await client.BalanceAt(wallet.GetAddress()); // By default, if no blockNumber string is provided, check the latest block\nBigIntegar balance = await client.BalanceAt(wallet.GetAddress(), blockNumber);\nNote: there are two special values for blockNumber. "earliest" will get the balance at the earliest block on the chain. "latest" will get the balance at the latest block on the chain and is the default parameter when none is provided. Otherwise, you'll want to provide the blockNumber string in hexadecimal format.\nUnless you really want to get into the weeds with how things work, it is HIGHLY recommended to move on to the next page of the documentation at this point\n","title":"BalanceAt","titles":["Clients","Methods"]},"286":{"href":"/sdk/unity/Advanced/clients#blockbynumber","html":"\n

Used to get the Block with a specific block number.

\n
Block block = await client.BlockByNumber(blockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get the Block with a specific block number.\nBlock block = await client.BlockByNumber(blockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"BlockByNumber","titles":["Clients","Methods"]},"287":{"href":"/sdk/unity/Advanced/clients#blockbyhash","html":"\n

Used to get the Block by a specified block hash (string)

\n
Block block = await client.BlockByHash(blockHash);
\n","isPage":false,"text":"\nUsed to get the Block by a specified block hash (string)\nBlock block = await client.BlockByHash(blockHash);\n","title":"BlockByHash","titles":["Clients","Methods"]},"288":{"href":"/sdk/unity/Advanced/clients#blocknumber","html":"\n

Used to get the most recent block number in hexadecimal format

\n
string blockNumber = await client.BlockNumber();
\n","isPage":false,"text":"\nUsed to get the most recent block number in hexadecimal format\nstring blockNumber = await client.BlockNumber();\n","title":"BlockNumber","titles":["Clients","Methods"]},"289":{"href":"/sdk/unity/Advanced/clients#blockrange","html":"\n

Used to get a List<Block> from the blocks in a range specified by blockNumbers

\n
List<Block> blockRange = await client.BlockRange(startingBlockNumber, endingBlockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get a List<Block> from the blocks in a range specified by blockNumbers\nList<Block> blockRange = await client.BlockRange(startingBlockNumber, endingBlockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"BlockRange","titles":["Clients","Methods"]},"290":{"href":"/sdk/unity/Advanced/clients#chainid","html":"\n

Used to get the chain id in hexadecimal format for the chain the client is connected to

\n
string chainId = await client.ChainID();
\n","isPage":false,"text":"\nUsed to get the chain id in hexadecimal format for the chain the client is connected to\nstring chainId = await client.ChainID();\n","title":"ChainID","titles":["Clients","Methods"]},"291":{"href":"/sdk/unity/Advanced/clients#codeat","html":"\n

Used to get the bytecode for a smart contract at a given address in hexadecimal format at a specified blockNumber

\n
string code = await client.CodeAt(contractAddress, blockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get the bytecode for a smart contract at a given address in hexadecimal format at a specified blockNumber\nstring code = await client.CodeAt(contractAddress, blockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"CodeAt","titles":["Clients","Methods"]},"292":{"href":"/sdk/unity/Advanced/clients#estimategas","html":"\n

Given a TransactionCall estimate the amount of gas required for the transaction

\n
BigIntegar gas = await client.EstimateGas(transactionCall);
\n","isPage":false,"text":"\nGiven a TransactionCall estimate the amount of gas required for the transaction\nBigIntegar gas = await client.EstimateGas(transactionCall);\n","title":"EstimateGas","titles":["Clients","Methods"]},"293":{"href":"/sdk/unity/Advanced/clients#feehistory","html":"\n

Get a FeeHistoryResult for gas fees paid blockCount blocks since newestBlock (blockNumber)

\n
FeeHistoryResult feeHistory = await client.FeeHistory(blockCount, newestBlock, new int[] { });
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nGet a FeeHistoryResult for gas fees paid blockCount blocks since newestBlock (blockNumber)\nFeeHistoryResult feeHistory = await client.FeeHistory(blockCount, newestBlock, new int[] { });\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"FeeHistory","titles":["Clients","Methods"]},"294":{"href":"/sdk/unity/Advanced/clients#networkid","html":"\n

Used to get the chain id in integer format (as string) for the chain the client is connected to

\n
string networkId = await client.NetworkId();
\n","isPage":false,"text":"\nUsed to get the chain id in integer format (as string) for the chain the client is connected to\nstring networkId = await client.NetworkId();\n","title":"NetworkId","titles":["Clients","Methods"]},"295":{"href":"/sdk/unity/Advanced/clients#nonceat","html":"\n

Used to get the recommended nonce for a given Address at a given blockNumber (defaults to "latest")

\n
BigInteger nonce = await client.NonceAt(wallet.GetAddress()); // Nonce at latest\nBigIntegar nonce = await client.NonceAt(wallet.GetAddress(), blockNumber);
\n

Note: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"

\n","isPage":false,"text":"\nUsed to get the recommended nonce for a given Address at a given blockNumber (defaults to "latest")\nBigInteger nonce = await client.NonceAt(wallet.GetAddress()); // Nonce at latest\nBigIntegar nonce = await client.NonceAt(wallet.GetAddress(), blockNumber);\nNote: as above, blockNumber should be in hexadecimal format or special values "ealiest" and "latest"\n","title":"NonceAt","titles":["Clients","Methods"]},"296":{"href":"/sdk/unity/Advanced/clients#sendrawtransaction","html":"\n

Given a signed transaction string, submit the transaction to the network and return a transaction hash

\n
string transactionHash = await client.SendRawTransaction(signedTransactionString);
\n","isPage":false,"text":"\nGiven a signed transaction string, submit the transaction to the network and return a transaction hash\nstring transactionHash = await client.SendRawTransaction(signedTransactionString);\n","title":"SendRawTransaction","titles":["Clients","Methods"]},"297":{"href":"/sdk/unity/Advanced/clients#suggestgasprice","html":"\n

Used to get a suggested gas price

\n
BigIntegar gasPrice = await client.SuggestGasPrice();
\n","isPage":false,"text":"\nUsed to get a suggested gas price\nBigIntegar gasPrice = await client.SuggestGasPrice();\n","title":"SuggestGasPrice","titles":["Clients","Methods"]},"298":{"href":"/sdk/unity/Advanced/clients#suggestgastipcap","html":"\n

Used to get the max suggested priority fee for gas

\n
BigIntegar gasTipCap = await client.SuggestGasTipCap();
\n","isPage":false,"text":"\nUsed to get the max suggested priority fee for gas\nBigIntegar gasTipCap = await client.SuggestGasTipCap();\n","title":"SuggestGasTipCap","titles":["Clients","Methods"]},"299":{"href":"/sdk/unity/Advanced/clients#transactionbyhash","html":"\n

Used to get a Transaction by transaction hash

\n
Transaction transaction = await client.TransactionByHash(transactionHash);
\n","isPage":false,"text":"\nUsed to get a Transaction by transaction hash\nTransaction transaction = await client.TransactionByHash(transactionHash);\n","title":"TransactionByHash","titles":["Clients","Methods"]},"300":{"href":"/sdk/unity/Advanced/clients#transactioncount","html":"\n

Used to get the number of transactions in a block by block hash

\n
BigIntegar transactionCount = await client.TransactionCount(blockHash);
\n","isPage":false,"text":"\nUsed to get the number of transactions in a block by block hash\nBigIntegar transactionCount = await client.TransactionCount(blockHash);\n","title":"TransactionCount","titles":["Clients","Methods"]},"301":{"href":"/sdk/unity/Advanced/clients#waitfortransactionreceipt","html":"\n

Provide a transaction hash in order to wait for and return the TransactionReceipt

\n
TransactionReceipt receipt = await client.WaitForTransactionReceipt(transactionHash);
","isPage":false,"text":"\nProvide a transaction hash in order to wait for and return the TransactionReceipt\nTransactionReceipt receipt = await client.WaitForTransactionReceipt(transactionHash);","title":"WaitForTransactionReceipt","titles":["Clients","Methods"]},"302":{"href":"/sdk/unity/Advanced/contracts#contracts","html":"\n

Creating a Contract object for an already deployed contract is rather straightforward.

\n
Contract contract = new Contract(contractAddress, abi);
\n

While it is not strictly required, it is highly recommended to provide the contract ABI as a string when creating a contract object. Failure to do so will make it so that you cannot fully take advantage of our ABI encoding and decoding.\nIf you do chose to go down this route, you will need to provide the entire function signature (function name + parameter types in brackets - e.g. transfer(address,uint256) for the ERC20 transfer method) when calling a function or querying the contract and you will only ever receive a string as a response to queries.

\n","isPage":true,"text":"\nCreating a Contract object for an already deployed contract is rather straightforward.\nContract contract = new Contract(contractAddress, abi);\nWhile it is not strictly required, it is highly recommended to provide the contract ABI as a string when creating a contract object. Failure to do so will make it so that you cannot fully take advantage of our ABI encoding and decoding.\nIf you do chose to go down this route, you will need to provide the entire function signature (function name + parameter types in brackets - e.g. transfer(address,uint256) for the ERC20 transfer method) when calling a function or querying the contract and you will only ever receive a string as a response to queries.\n","title":"Contracts","titles":[]},"303":{"href":"/sdk/unity/Advanced/contracts#calling-smart-contract-functions","html":"\n

To call a smart contract, you'll use the CallFunction method to create a CallContractFunction object which will determine the appropriate gasPrice, gasLimit, nonce, and data to include in a newly assembled EthTransaction when provided with a client and a ContractCall object to the Create async Task

\n

An example of calling a smart contract would look like:

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nTransactionReceipt receipt = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).SendTransactionMethodAndWaitForReceipt(wallet, client);
\n

Note: if you don't want to wait for the receipt, you can use SendTransactionMethod instead.

\n

Alternatively, if you want to simply create the EthTransaction and send it at a later time, you can use the CallContractFunction object from CallFunction directly.

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nEthTransaction transaction = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nTransactionReceipt receipt = await transactionCreator.SendTransactionMethodAndWaitForReceipt(wallet, client);
\n

You'll notice that the CallFunction method accepts an arbitrary number of arguments. You'll want to provide the arguments in the order they are provided in the ABI/function signature.

\n","isPage":false,"text":"\nTo call a smart contract, you'll use the CallFunction method to create a CallContractFunction object which will determine the appropriate gasPrice, gasLimit, nonce, and data to include in a newly assembled EthTransaction when provided with a client and a ContractCall object to the Create async Task\nAn example of calling a smart contract would look like:\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nTransactionReceipt receipt = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).SendTransactionMethodAndWaitForReceipt(wallet, client);\nNote: if you don't want to wait for the receipt, you can use SendTransactionMethod instead.\nAlternatively, if you want to simply create the EthTransaction and send it at a later time, you can use the CallContractFunction object from CallFunction directly.\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nEthTransaction transaction = await erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger).Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n\n// or \nCallContractFunction transactionCreator = erc20Contract.CallFunction("transfer", toAddress, amountAsBigInteger);\nTransactionReceipt receipt = await transactionCreator.SendTransactionMethodAndWaitForReceipt(wallet, client);\nYou'll notice that the CallFunction method accepts an arbitrary number of arguments. You'll want to provide the arguments in the order they are provided in the ABI/function signature.\n","title":"Calling Smart Contract Functions","titles":["Contracts"]},"304":{"href":"/sdk/unity/Advanced/contracts#understanding-data-type-mappings","html":"\n

When interacting with smart contracts, it is important to understand how EVM datatypes are mapped to C# datatypes in the SequenceEthereum library.

\n

bool -> bool

\n

Integers (int, uint, int256, uint8, ...) -> BigInteger

\n

address -> Address or string

\n

string -> string

\n

Fixed bytes (bytesN for any N value) -> FixedByte

\n

bytes -> byte[]

\n

If you were to, for example, provide a string where the ABI expects an Integer, you will receive an exception, even if that string could be converted into an integer.

\n","isPage":false,"text":"\nWhen interacting with smart contracts, it is important to understand how EVM datatypes are mapped to C# datatypes in the SequenceEthereum library.\nbool -> bool\nIntegers (int, uint, int256, uint8, ...) -> BigInteger\naddress -> Address or string\nstring -> string\nFixed bytes (bytesN for any N value) -> FixedByte\nbytes -> byte[]\nIf you were to, for example, provide a string where the ABI expects an Integer, you will receive an exception, even if that string could be converted into an integer.\n","title":"Understanding data type mappings","titles":["Contracts"]},"305":{"href":"/sdk/unity/Advanced/contracts#querying-contracts","html":"\n

To query a smart contract (read data from it), you'll use the SendQuery<T> method to query the contract and return the result as type T (if possible).\nAn example of querying a smart contract would look like:

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nBigIntegar balance = await erc20Contract.SendQuery<BigIntegar>(client, "balanceOf", address);
\n

Alternatively, if you wish to simply construct the query and send it at a later time, you can use QueryContract<T> to create a delegate.

\n
Contract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nQueryContractMessageSender<BigIntegar> balanceQuery = erc20Contract.QueryContract<BigIntegar>("balanceOf", address);\nBigIntegar balance = await balanceQuery(client);\n// or\nBigIntegar balance = await balanceQuery.SendQuery(client);
\n","isPage":false,"text":"\nTo query a smart contract (read data from it), you'll use the SendQuery<T> method to query the contract and return the result as type T (if possible).\nAn example of querying a smart contract would look like:\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nBigIntegar balance = await erc20Contract.SendQuery<BigIntegar>(client, "balanceOf", address);\nAlternatively, if you wish to simply construct the query and send it at a later time, you can use QueryContract<T> to create a delegate.\nContract erc20Contract = new Contract(contractAddress, contractAbi); // We'll use the well-known ERC20 contract as our example case\nQueryContractMessageSender<BigIntegar> balanceQuery = erc20Contract.QueryContract<BigIntegar>("balanceOf", address);\nBigIntegar balance = await balanceQuery(client);\n// or\nBigIntegar balance = await balanceQuery.SendQuery(client);\n","title":"Querying Contracts","titles":["Contracts"]},"306":{"href":"/sdk/unity/Advanced/contracts#deploying-contracts","html":"\n

If you want to deploy a contract, you can use the ContractDeployer

\n
ContractDeploymentResult deploymentResult = await ContractDeployer.Deploy(client, wallet, contractBytecodeAsString);\nstring newlyDeployedContractAddress = deploymentResult.Receipt.contractAddress;
","isPage":false,"text":"\nIf you want to deploy a contract, you can use the ContractDeployer\nContractDeploymentResult deploymentResult = await ContractDeployer.Deploy(client, wallet, contractBytecodeAsString);\nstring newlyDeployedContractAddress = deploymentResult.Receipt.contractAddress;","title":"Deploying Contracts","titles":["Contracts"]},"307":{"href":"/sdk/unity/Advanced/introduction#advanced---introduction","html":"\n

For advanced users with experience developing applications on EVM-based blockchains, we've provided our own lightweight, custom-made for Unity, Ethereum library: SequenceEthereum.\nSequenceEthereum should provide everything you need to build your Unity app on the EVM, without all the extra bells and whistles that the popular Nethereum library provides.

\n

While SequenceEthereum is heavily tested, in general, when working with asynchronous methods in the library, you should consider them to be "unsafe", in that they may throw Exceptions when used improperly.\nIn general, wrapping async calls that can potentially throw Exceptions in try catch blocks is a best practice; particularly in Unity, where Tasks can fail silently when throwing exceptions - making debugging difficult when not wrapping calls in try catch blocks.

\n","isPage":true,"text":"\nFor advanced users with experience developing applications on EVM-based blockchains, we've provided our own lightweight, custom-made for Unity, Ethereum library: SequenceEthereum.\nSequenceEthereum should provide everything you need to build your Unity app on the EVM, without all the extra bells and whistles that the popular Nethereum library provides.\nWhile SequenceEthereum is heavily tested, in general, when working with asynchronous methods in the library, you should consider them to be "unsafe", in that they may throw Exceptions when used improperly.\nIn general, wrapping async calls that can potentially throw Exceptions in try catch blocks is a best practice; particularly in Unity, where Tasks can fail silently when throwing exceptions - making debugging difficult when not wrapping calls in try catch blocks.\n","title":"Advanced - Introduction","titles":[]},"308":{"href":"/sdk/unity/Advanced/introduction#important-components","html":"\n

When working with the SequenceEthereum library it can be helpful to understand some of the main "components" and how they logically fit together.

\n","isPage":false,"text":"\nWhen working with the SequenceEthereum library it can be helpful to understand some of the main "components" and how they logically fit together.\n","title":"Important Components","titles":["Advanced - Introduction"]},"309":{"href":"/sdk/unity/Advanced/tokens#tokens","html":"\n

Since their use is so ubiquitous, we've provided ERC20, ERC721, and ERC1155 wrappers of the Contract class with pre-defined ABIs for your convenience. When interacting with tokens, it is recommended to use these.

\n

Any of these contract wrappers can be created via a standard constructor requiring only the contract address. For example:

\n
ERC20 erc20 = new ERC20(contractAddress);
\n

You may also provide your own ABI should you need to rewrite our default; however, doing so may require you to modify or rewrite the contract wrappers.

\n

An example of querying:

\n
string symbol = await erc20.Symbol(client);\nBigIntegar balance = await erc20.BalanceOf(client, address);
\n

An example of sending a transaction:

\n
TransactionReceipt receipt = await erc20.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1)).SendTransactionMethodAndWaitForReceipt(wallet, client);
\n

As a wrapper of Contract, you also have the option to not create the EthTransaction and send later on.

\n
CallContractFunction transactionCreator = erc20.Transfer(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1));\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);
\n
","isPage":true,"text":"\nSince their use is so ubiquitous, we've provided ERC20, ERC721, and ERC1155 wrappers of the Contract class with pre-defined ABIs for your convenience. When interacting with tokens, it is recommended to use these.\nAny of these contract wrappers can be created via a standard constructor requiring only the contract address. For example:\nERC20 erc20 = new ERC20(contractAddress);\nYou may also provide your own ABI should you need to rewrite our default; however, doing so may require you to modify or rewrite the contract wrappers.\nAn example of querying:\nstring symbol = await erc20.Symbol(client);\nBigIntegar balance = await erc20.BalanceOf(client, address);\nAn example of sending a transaction:\nTransactionReceipt receipt = await erc20.Mint(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1)).SendTransactionMethodAndWaitForReceipt(wallet, client);\nAs a wrapper of Contract, you also have the option to not create the EthTransaction and send later on.\nCallContractFunction transactionCreator = erc20.Transfer(toAddress, DecimalNormalizer.NormalizeAsBigInteger(1));\nEthTransaction transaction = await transactionCreator.Create(client, new ContractCall(wallet.GetAddress()));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n","title":"Tokens","titles":[]},"310":{"href":"/sdk/unity/Advanced/tokens#bonus-ownable","html":"
\n

Similar to with tokens, we have also provided an Ownable wrapper for your convenience as well which has a pre-defined ABI for methods implementing the Ownable interface.\nERC20, ERC721, and ERC1155 all inherit from this, but we encourage you to use Ownable whenever you wish to interact with the Ownable methods on any arbitrary contract for convenience and safety.

","isPage":false,"text":"\nSimilar to with tokens, we have also provided an Ownable wrapper for your convenience as well which has a pre-defined ABI for methods implementing the Ownable interface.\nERC20, ERC721, and ERC1155 all inherit from this, but we encourage you to use Ownable whenever you wish to interact with the Ownable methods on any arbitrary contract for convenience and safety.","title":"Bonus: Ownable","titles":[]},"311":{"href":"/sdk/unity/Advanced/transfers#transfers","html":"\n

In order to transfer ETH (or the gas currency for your network), it is recommended to use TranferEth.CreateTransaction

\n
EthTransaction transferTransaction = await TransferEth.CreateTransaction(client, wallet, recipientAddress, DecimalNormalizer.Normalize(1));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transferTransaction);
\n

Behind the scenes, this will create a GasLimitEstimator which will construct the transaction for you - including determining the appropriate gasPrice, gasLimit, and nonce.

","isPage":true,"text":"\nIn order to transfer ETH (or the gas currency for your network), it is recommended to use TranferEth.CreateTransaction\nEthTransaction transferTransaction = await TransferEth.CreateTransaction(client, wallet, recipientAddress, DecimalNormalizer.Normalize(1));\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transferTransaction);\nBehind the scenes, this will create a GasLimitEstimator which will construct the transaction for you - including determining the appropriate gasPrice, gasLimit, and nonce.","title":"Transfers","titles":[]},"312":{"href":"/sdk/unity/Advanced/wallets#wallets","html":"\n

In the context of SequenceEthereum, a Wallet is defined by the IWallet interface. There are currently 2 implementations of the IWallet interface in this SDK.

\n","isPage":true,"text":"\nIn the context of SequenceEthereum, a Wallet is defined by the IWallet interface. There are currently 2 implementations of the IWallet interface in this SDK.\n","title":"Wallets","titles":[]},"313":{"href":"/sdk/unity/Advanced/wallets#1-ethwallet","html":"\n

EthWallet is a standard EOA wallet for EVM chains.

\n

An EthWallet is easily created:

\n
IWallet eoaWallet = new EthWallet(); // This will generate a cryptographically random private key\nIWallet eoaWallet = new EthWallet(privateKeyString); // Create a wallet using a previously generated private key
\n","isPage":false,"text":"\nEthWallet is a standard EOA wallet for EVM chains.\nAn EthWallet is easily created:\nIWallet eoaWallet = new EthWallet(); // This will generate a cryptographically random private key\nIWallet eoaWallet = new EthWallet(privateKeyString); // Create a wallet using a previously generated private key\n","title":"1.","titles":["Wallets"]},"314":{"href":"/sdk/unity/Advanced/wallets#2-waastowalletadapter","html":"\n

WaaSToWalletAdapter is an adapter that allows you to use a WaaSWallet with the same IWallet interface as an EthWallet so that it may be used interchangeably with EOA wallets throughout the rest of the SequenceEthereum library.

\n

A WaaSToWalletAdapter is easily created once you have a WaaSWallet:

\n
IWallet waasAdapter = new WaaSToWalletAdapter(waasWallet);
\n","isPage":false,"text":"\nWaaSToWalletAdapter is an adapter that allows you to use a WaaSWallet with the same IWallet interface as an EthWallet so that it may be used interchangeably with EOA wallets throughout the rest of the SequenceEthereum library.\nA WaaSToWalletAdapter is easily created once you have a WaaSWallet:\nIWallet waasAdapter = new WaaSToWalletAdapter(waasWallet);\n","title":"2.","titles":["Wallets"]},"315":{"href":"/sdk/unity/Advanced/wallets#methods","html":"\n

The IWallet interface provides a number of methods for you. The most important of which are:

\n","isPage":false,"text":"\nThe IWallet interface provides a number of methods for you. The most important of which are:\n","title":"Methods","titles":["Wallets"]},"316":{"href":"/sdk/unity/Advanced/wallets#getaddress","html":"\n

Returns the Address for the wallet

\n
Address address = wallet.GetAddress();
\n","isPage":false,"text":"\nReturns the Address for the wallet\nAddress address = wallet.GetAddress();\n","title":"GetAddress","titles":["Wallets","Methods"]},"317":{"href":"/sdk/unity/Advanced/wallets#sendtransaction","html":"\n

Signs the given EthTransaction and submits it via the given client

\n
string transactionHash = await wallet.SendTransaction(client, transaction);
\n","isPage":false,"text":"\nSigns the given EthTransaction and submits it via the given client\nstring transactionHash = await wallet.SendTransaction(client, transaction);\n","title":"SendTransaction","titles":["Wallets","Methods"]},"318":{"href":"/sdk/unity/Advanced/wallets#sendtransactionandwaitforreceipt","html":"\n

Signs the given EthTransaction and submits it via the given client then waits for the TransactionReceipt

\n
TransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);
\n","isPage":false,"text":"\nSigns the given EthTransaction and submits it via the given client then waits for the TransactionReceipt\nTransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transaction);\n","title":"SendTransactionAndWaitForReceipt","titles":["Wallets","Methods"]},"319":{"href":"/sdk/unity/Advanced/wallets#sendtransactionbatch","html":"\n

Signs the given EthTransaction[] and submits them via the given client.\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the string[] (transaction hashes) you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction hash (string[] of length 1)

\n
string[] transactionHashes = await wallet.SendTransactionBatch(client, transactions);
\n","isPage":false,"text":"\nSigns the given EthTransaction[] and submits them via the given client.\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the string[] (transaction hashes) you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction hash (string[] of length 1)\nstring[] transactionHashes = await wallet.SendTransactionBatch(client, transactions);\n","title":"SendTransactionBatch","titles":["Wallets","Methods"]},"320":{"href":"/sdk/unity/Advanced/wallets#sendtransactionbatchandwaitforreceipts","html":"\n

Signs the given EthTransaction[] and submits them via the given client then waits for the TransactionReceipt[].\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the TransactionReceipt[] you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction receipt (TransactionReceipt[] of length 1)

\n
TransactionReceipt[] receipts = await wallet.SendTransactionAndWaitForReceipt(client, transactions);
\n","isPage":false,"text":"\nSigns the given EthTransaction[] and submits them via the given client then waits for the TransactionReceipt[].\nIf wallet is an EthWallet, the transactions will be submitted sequentially, each of which may pass or fail. If the wallet is a WaaSToWalletAdapter, the transactions will be batched together into a single transaction that is submitted all at once and either passes or fails as a whole.\nSimilarly, if a wallet is an EthWallet the TransactionReceipt[] you receive will be equal in length to the EthTransaction[] you submitted. While, if the wallet is a WaaSToWalletAdapter, you will only receive one transaction receipt (TransactionReceipt[] of length 1)\nTransactionReceipt[] receipts = await wallet.SendTransactionAndWaitForReceipt(client, transactions);\n","title":"SendTransactionBatchAndWaitForReceipts","titles":["Wallets","Methods"]},"321":{"href":"/sdk/unity/Advanced/wallets#signmessage","html":"\n

Given a message and an optional chain id, sign the message using the wallet. Omit the chain id from the signature if not provided

\n
string signedMessage = await wallet.SignMessage(message, chainId)
\n

Note: the chainId is expected to be in hexadecimal format. If you are working with a Chain object (recommended), you can use the AsString method to get the hexadecimal format of the chain id

\n
string signedMessage = await wallet.SignMessage(message, Chain.Polygon.AsString());
","isPage":false,"text":"\nGiven a message and an optional chain id, sign the message using the wallet. Omit the chain id from the signature if not provided\nstring signedMessage = await wallet.SignMessage(message, chainId)\nNote: the chainId is expected to be in hexadecimal format. If you are working with a Chain object (recommended), you can use the AsString method to get the hexadecimal format of the chain id\nstring signedMessage = await wallet.SignMessage(message, Chain.Polygon.AsString());","title":"SignMessage","titles":["Wallets","Methods"]},"322":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#how-to-manage-item-metadata-in-sequence-builder","html":"\n","isPage":true,"text":"\n","title":"How to Manage Item Metadata in Sequence Builder","titles":[]},"323":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#introduction","html":"\n

Following this guide, you can easily manage token metadata for your contract items in Sequence Builder, with a little help from Pinata for IPFS hosting.

\n","isPage":false,"text":"\nFollowing this guide, you can easily manage token metadata for your contract items in Sequence Builder, with a little help from Pinata for IPFS hosting.\n","title":"Introduction","titles":["How to Manage Item Metadata in Sequence Builder"]},"324":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-1-prepare-your-token-images-and-metadata","html":"\n

First things first, gather all your token images. For each token, you'll need a metadata file named id.json (like 1.json, 2.json, etc.). These files should look something like this at a minimum:

\n
{\n    "name": "Token Name",\n    "description": "Token Description",\n    "image": "ipfs://"\n}
\n

As you can guess, you can build from these basics. You could have your unique item attributes embedded in this token and generated on the fly.

\n","isPage":false,"text":"\nFirst things first, gather all your token images. For each token, you'll need a metadata file named id.json (like 1.json, 2.json, etc.). These files should look something like this at a minimum:\n{\n "name": "Token Name",\n "description": "Token Description",\n "image": "ipfs://"\n}\nAs you can guess, you can build from these basics. You could have your unique item attributes embedded in this token and generated on the fly.\n","title":"Step 1: Prepare Your Token Images and Metadata","titles":["How to Manage Item Metadata in Sequence Builder"]},"325":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-2-set-up-on-pinatacloud","html":"\n

Head over to Pinata.cloud and create an account. Upload each of your token images as separate files. Next, update the metadata JSON files with the ipfs address for each token. To do this, simply copy the CID (Content Identifier) for each file from Pinata and paste it after ipfs:// in your JSON files. It should look like this:

\n
{\n    "name": "Token Name",\n    "description": "Token Description",\n    "image": "ipfs://QmdJzQExj2wnNY7pNNn4KauzckjH4vA5xhoxmmis919Ev3"\n}
\n

\"Configure

\n","isPage":false,"text":"\nHead over to Pinata.cloud and create an account. Upload each of your token images as separate files. Next, update the metadata JSON files with the ipfs address for each token. To do this, simply copy the CID (Content Identifier) for each file from Pinata and paste it after ipfs:// in your JSON files. It should look like this:\n{\n "name": "Token Name",\n "description": "Token Description",\n "image": "ipfs://QmdJzQExj2wnNY7pNNn4KauzckjH4vA5xhoxmmis919Ev3"\n}\n\n","title":"Step 2: Set Up on Pinata.cloud","titles":["How to Manage Item Metadata in Sequence Builder"]},"326":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-3-upload-your-metadata-files","html":"\n

Now, gather all your JSON metadata files into a single folder on your computer. Use Pinata's 'Upload > Folder' feature to upload this folder. Then, copy the CID for the entire folder.

\n

\"Upload

\n","isPage":false,"text":"\nNow, gather all your JSON metadata files into a single folder on your computer. Use Pinata's 'Upload > Folder' feature to upload this folder. Then, copy the CID for the entire folder.\n\n","title":"Step 3: Upload Your Metadata Files","titles":["How to Manage Item Metadata in Sequence Builder"]},"327":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-4-get-the-folder-url","html":"\n

Click on name of the folder you created on Pinata. This will open a new tab showing all your uploaded JSON files. Copy the URL of this folder.

\n

\"Get

\n","isPage":false,"text":"\nClick on name of the folder you created on Pinata. This will open a new tab showing all your uploaded JSON files. Copy the URL of this folder.\n\n","title":"Step 4: Get the Folder URL","titles":["How to Manage Item Metadata in Sequence Builder"]},"328":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-5-set-up-on-sequence-builder","html":"\n

Navigate to Sequence Builder, set up your account, and create your project on the network of your choice. In the Contracts section, click on "Deploy New Contract".

\n

\"Configure

\n","isPage":false,"text":"\nNavigate to Sequence Builder, set up your account, and create your project on the network of your choice. In the Contracts section, click on "Deploy New Contract".\n\n","title":"Step 5: Set Up on Sequence Builder","titles":["How to Manage Item Metadata in Sequence Builder"]},"329":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-6-deploy-your-contract","html":"\n

Select "Web3 Game Item Collection (ERC-1155)" and name your contract. Sequence Builder will automatically deploy your contract on-chain.

\n

\"Deploy

\n","isPage":false,"text":"\nSelect "Web3 Game Item Collection (ERC-1155)" and name your contract. Sequence Builder will automatically deploy your contract on-chain.\n\n","title":"Step 6: Deploy Your Contract","titles":["How to Manage Item Metadata in Sequence Builder"]},"330":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-7-move-to-contract-details","html":"\n

Once you sign the transaction, your contract is ready! Click on it to view the details screen.

\n

\"Contract

\n","isPage":false,"text":"\nOnce you sign the transaction, your contract is ready! Click on it to view the details screen.\n\n","title":"Step 7: Move to Contract Details","titles":["How to Manage Item Metadata in Sequence Builder"]},"331":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-8-update-contract-attributes","html":"\n

Navigate to the “Write Contract” section. This is where you can modify attributes of your freshly deployed ERC-1155 contract. Two methods are what you should focus on for now:

\n\n","isPage":false,"text":"\nNavigate to the “Write Contract” section. This is where you can modify attributes of your freshly deployed ERC-1155 contract. Two methods are what you should focus on for now:\n\nsetBaseMetadataURI allows the creator to set the base metadata URL for this contract. You want this to point to the JSON files you’ve created, depending on NFT ID.\nmint mints one of your tokens and sends it to an address of your choosing.\n\n","title":"Step 8: Update Contract Attributes","titles":["How to Manage Item Metadata in Sequence Builder"]},"332":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-9-set-the-base-metadata-uri","html":"\n

Scroll to setBaseMetadataURI, expand it, and under tokenBaseURI paste the URL for the JSON folder preview you got from Pinata earlier. It should look something like this:

\n
https://azure-wooden-lemur-911.mypinata.cloud/ipfs/QmW5gvYGWb98GsN8VjTRWu4pLn6jryEXNxZKNWpPhVwtDm/
\n

Click “Write” and you will be prompted to sign again. This will modify the contract on chain to set the metadata base. Essentially any token ID you provide will be appended to this URL, along with the .json suffix. So if you mint token ID 123, it will look for tokenBaseURI + 123.json.

\n

\"Base

\n","isPage":false,"text":"\nScroll to setBaseMetadataURI, expand it, and under tokenBaseURI paste the URL for the JSON folder preview you got from Pinata earlier. It should look something like this:\nhttps://azure-wooden-lemur-911.mypinata.cloud/ipfs/QmW5gvYGWb98GsN8VjTRWu4pLn6jryEXNxZKNWpPhVwtDm/\nClick “Write” and you will be prompted to sign again. This will modify the contract on chain to set the metadata base. Essentially any token ID you provide will be appended to this URL, along with the .json suffix. So if you mint token ID 123, it will look for tokenBaseURI + 123.json.\n\n","title":"Step 9: Set the Base Metadata URI","titles":["How to Manage Item Metadata in Sequence Builder"]},"333":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-10-minting-time","html":"\n

Finally, it's time to mint! Scroll up to mint, expand it, and fill in the details:

\n\n

\"Mint

\n","isPage":false,"text":"\nFinally, it's time to mint! Scroll up to mint, expand it, and fill in the details:\n\nto (address): This is the address that the token will be sent to. Use your Sequence wallet address or any other valid address.\ntokenId (uint256): This is your token ID. As long as you have a tokenId.json file already uploaded to pinata.cloud under the folder, it will work.\namount (uint256): The number of tokens to mint (usually 1).\ndata (bytes): Enter 0x00 for this simple process.\n\n\n","title":"Step 10: Minting Time","titles":["How to Manage Item Metadata in Sequence Builder"]},"334":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-11-finalize-and-admire","html":"\n

Click "Write" and sign the transaction. Congratulations, you've just minted a token! Head over to the "Tokens" section to see your minted tokens with their names and images.

\n

\"Finalize

\n","isPage":false,"text":"\nClick "Write" and sign the transaction. Congratulations, you've just minted a token! Head over to the "Tokens" section to see your minted tokens with their names and images.\n\n","title":"Step 11: Finalize and Admire","titles":["How to Manage Item Metadata in Sequence Builder"]},"335":{"href":"/solutions/collectibles/metadata/manage-metadata-builder#step-12-updating-metadata","html":"\n

If you make mistakes with the token metadata, you can always update it and then call the Sequence Metadata refresh endpoint to reload the specific tokens:

\n
curl -X GET "https://metadata.sequence.app/tokens/mumbai/0xb392c99d9f8e3e0b248e5c283818be5bf5cecca7/1/refresh"
\n

This is in the format: https://metadata.sequence.app/tokens/<chain-name>/<contract-address>/<token-id>/refresh

\n

Now that you are ready to mint, you might want to read about how you can launch your own serverless endpoint for securely minting tokens.

","isPage":false,"text":"\nIf you make mistakes with the token metadata, you can always update it and then call the Sequence Metadata refresh endpoint to reload the specific tokens:\ncurl -X GET "https://metadata.sequence.app/tokens/mumbai/0xb392c99d9f8e3e0b248e5c283818be5bf5cecca7/1/refresh"\nThis is in the format: https://metadata.sequence.app/tokens/<chain-name>/<contract-address>/<token-id>/refresh\nNow that you are ready to mint, you might want to read about how you can launch your own serverless endpoint for securely minting tokens.","title":"Step 12: Updating Metadata","titles":["How to Manage Item Metadata in Sequence Builder"]},"336":{"href":"/solutions/marketplaces/orderbook/quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"337":{"href":"/solutions/marketplaces/orderbook/quickstart#try-a-demo","html":"\n\n","isPage":false,"text":"\nCheck out our demo to see a custom marketplace in action.\n","title":"Try a Demo","titles":["Quickstart"]},"338":{"href":"/solutions/marketplaces/orderbook/quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template leveraging our Marketplace API to use as a starting point for your own.\n","title":"Template","titles":["Quickstart"]},"339":{"href":"/solutions/marketplaces/orderbook/quickstart#example-api-call","html":"\n

Pulling top orders for a specific collection:

\n
curl --request POST \\\n--url https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetTopOrders \\\n--header 'Content-Type: application/json' \\\n--data '{\n    "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n    "currencyAddresses": [\n        "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n    ],\n    "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n    "tokenIDs": ["0","1", "2", "3", "4", "5"],\n    "isListing": true,\n    "priceSort": "DESC"\n}'
\n

For more resources on leveraging the Sequence Market Protocol, check out the in-depth documentation.

\n","isPage":false,"text":"\nPulling top orders for a specific collection:\ncurl --request POST \\\n--url https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetTopOrders \\\n--header 'Content-Type: application/json' \\\n--data '{\n "collectionAddress": "0x1693ffc74edbb50d6138517fe5cd64fd1c917709",\n "currencyAddresses": [\n "0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7"\n ],\n "orderbookContractAddress": "0xB537a160472183f2150d42EB1c3DD6684A55f74c",\n "tokenIDs": ["0","1", "2", "3", "4", "5"],\n "isListing": true,\n "priceSort": "DESC"\n}'\nFor more resources on leveraging the Sequence Market Protocol, check out the in-depth documentation.\n","title":"Example API Call","titles":["Quickstart"]},"340":{"href":"/solutions/marketplaces/orderbook/quickstart#walkthrough","html":"\n

Lastly, take a look at our end to end guide to get you off the ground running with your own marketplace & learn about the infrastructure that powers Sequence. This guide leverages several components of the sequence stack such as our Marketplace APIs and Indexer - all the components needed for accelerating development time & building a scalable in-game or browser based marketplace.

","isPage":false,"text":"\nLastly, take a look at our end to end guide to get you off the ground running with your own marketplace & learn about the infrastructure that powers Sequence. This guide leverages several components of the sequence stack such as our Marketplace APIs and Indexer - all the components needed for accelerating development time & building a scalable in-game or browser based marketplace.","title":"Walkthrough","titles":["Quickstart"]},"341":{"href":"/solutions/payments/onramps/fiat-on-ramps#fiat-on-ramps","html":"\n

Sequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;

\n\n

Only providers that support the region the users are in will be displayed.

\n

\"Sequence

\n

As a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.

\n

To learn more on how to configure the on-ramp options, see Sequence Connect Options.

","isPage":true,"text":"\nSequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;\n\nMoonpay\nRamp\nUPI via Onmeta\nSardine\nPayTrie\n\nOnly providers that support the region the users are in will be displayed.\n\nAs a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.\nTo learn more on how to configure the on-ramp options, see Sequence Connect Options.","title":"Fiat On-Ramps","titles":[]},"342":{"href":"/solutions/technical-references/wallet-contracts/why#why-smart-contracts-wallets","html":"\n

Ethereum wallets may take two different forms, Externally owned accounts (EOAs) or Smart Contract Wallets.\nThe Sequence wallet is implemented as a smart contract, which allows the system to provide additional security and functionality.

\n","isPage":true,"text":"\nEthereum wallets may take two different forms, Externally owned accounts (EOAs) or Smart Contract Wallets.\nThe Sequence wallet is implemented as a smart contract, which allows the system to provide additional security and functionality.\n","title":"Why smart contracts wallets?","titles":[]},"343":{"href":"/solutions/technical-references/wallet-contracts/why#externally-owned-accounts","html":"\n

Externally owned accounts are the most primitive form of wallet on Ethereum; EOAs are accounts composed of a single ECDSA key pair.

\n","isPage":false,"text":"\nExternally owned accounts are the most primitive form of wallet on Ethereum; EOAs are accounts composed of a single ECDSA key pair.\n","title":"Externally owned accounts","titles":["Why smart contracts wallets?"]},"344":{"href":"/solutions/technical-references/wallet-contracts/why#pros","html":"\n\n","isPage":false,"text":"\n\nSimple to implement\nCheap to use (in some scenarios)\nEasy to backup\n\n","title":"Pros","titles":["Why smart contracts wallets?","Externally owned accounts"]},"345":{"href":"/solutions/technical-references/wallet-contracts/why#popular-examples","html":"\n\n","isPage":false,"text":"\n\nMetaMask\nRainbow\nMyEtherWallet\nTrust\n\n","title":"Popular examples","titles":["Why smart contracts wallets?","Externally owned accounts"]},"346":{"href":"/solutions/technical-references/wallet-contracts/why#smart-contract-wallets","html":"\n

Smart contract wallets are wallets that are implemented as smart contracts; it allows the wallets to implement arbitrary logic within the bounds of what's supported by the underlying virtual machine.\nBecause of this, these contracts can implement functionality that's not available for EOAs, and can also be upgraded if they are prepared to do so.

\n","isPage":false,"text":"\nSmart contract wallets are wallets that are implemented as smart contracts; it allows the wallets to implement arbitrary logic within the bounds of what's supported by the underlying virtual machine.\nBecause of this, these contracts can implement functionality that's not available for EOAs, and can also be upgraded if they are prepared to do so.\n","title":"Smart contract wallets","titles":["Why smart contracts wallets?"]},"347":{"href":"/solutions/technical-references/wallet-contracts/why#pros-1","html":"\n\n","isPage":false,"text":"\n\nMultiple keys\nKey rotation\nPay fees using ERC20 tokens (e.g. USDC)\nUpgradeability\nSocial recovery support\nMeta-transactions\nMore flexible design space\n\n","title":"Pros","titles":["Why smart contracts wallets?","Smart contract wallets"]},"348":{"href":"/solutions/technical-references/wallet-contracts/why#examples","html":"\n","isPage":false,"text":"\n\nSequence\nGnosis Safe\nArgent\n","title":"Examples","titles":["Why smart contracts wallets?"]},"349":{"href":"/solutions/wallets/embedded-wallet/architecture#overview","html":"\n","isPage":true,"text":"\n","title":"Overview","titles":[]},"350":{"href":"/solutions/wallets/embedded-wallet/architecture#embedded-wallets-architecture","html":"\n

Sequence Embedded Wallets are native smart contract multisigs, the configuration of the multisig can be seen as a 2/2, both of which are required to sign in order to operate them; each one of the signers protects the wallet from a different facet of possible threats.

\n","isPage":false,"text":"\nSequence Embedded Wallets are native smart contract multisigs, the configuration of the multisig can be seen as a 2/2, both of which are required to sign in order to operate them; each one of the signers protects the wallet from a different facet of possible threats.\n","title":"Embedded Wallets Architecture","titles":["Overview"]},"351":{"href":"/solutions/wallets/embedded-wallet/architecture#signer-1-sequence-auth","html":"\n

Sequence Auth provides a simple way to add account creation, login, session management, and wallet support to your app, enabling applications to provide traditional web experiences (e.g. social login, email login, etc.) while providing access to crypto wallets to interact with smart contracts.

\n

All user and session data is encrypted by a Hardware Security Module operated by a third party. This makes it protected from both external attackers and internal access by Sequence Team or anyone else. Nobody can access a user's wallet but the user themselves.

\n

You won't need to trust us, this is a guarantee you can verify yourself: this service is hosted in a cryptographically attested secure enclave on Amazon Nitro platform. And we offer publicly available independently audited source code, so you can rest assured that it hasn't been tampered with.

\n","isPage":false,"text":"\nSequence Auth provides a simple way to add account creation, login, session management, and wallet support to your app, enabling applications to provide traditional web experiences (e.g. social login, email login, etc.) while providing access to crypto wallets to interact with smart contracts.\nAll user and session data is encrypted by a Hardware Security Module operated by a third party. This makes it protected from both external attackers and internal access by Sequence Team or anyone else. Nobody can access a user's wallet but the user themselves.\nYou won't need to trust us, this is a guarantee you can verify yourself: this service is hosted in a cryptographically attested secure enclave on Amazon Nitro platform. And we offer publicly available independently audited source code, so you can rest assured that it hasn't been tampered with.\n","title":"Signer 1: Sequence Auth","titles":["Overview"]},"352":{"href":"/solutions/wallets/embedded-wallet/architecture#signer-2-sequence-guard","html":"\n

Sequence Guard is a service hosted by Sequence and contains the other key of the wallets. It's meant to be another line of defense, verifying not only user's identity but also their intent. It achieves this in two different ways:

\n

1 - Limits and allowlists: you can (from the development dashboard) configure what kind of actions are allowed, this means that the guard will only sign transactions within these constraints. For example, you can define that only NFT contract X can be called, and the guard will enforce that no other transactions can take place.

\n

2 - Authenticating the user: the Sequence Guard will authenticate the user independently of the Sequence Auth, it performs this action either by using a 3rd party OAuth 2.0 id token (from Meta, Google, X, etc.) or by directly communicating with the user via email/phone number with an OTP code. The direct communication is not always required and, when it does happen, it's seamless and branded with your project details.

\n","isPage":false,"text":"\nSequence Guard is a service hosted by Sequence and contains the other key of the wallets. It's meant to be another line of defense, verifying not only user's identity but also their intent. It achieves this in two different ways:\n1 - Limits and allowlists: you can (from the development dashboard) configure what kind of actions are allowed, this means that the guard will only sign transactions within these constraints. For example, you can define that only NFT contract X can be called, and the guard will enforce that no other transactions can take place.\n2 - Authenticating the user: the Sequence Guard will authenticate the user independently of the Sequence Auth, it performs this action either by using a 3rd party OAuth 2.0 id token (from Meta, Google, X, etc.) or by directly communicating with the user via email/phone number with an OTP code. The direct communication is not always required and, when it does happen, it's seamless and branded with your project details.\n","title":"Signer 2: Sequence Guard","titles":["Overview"]},"353":{"href":"/solutions/wallets/embedded-wallet/architecture#threat-model","html":"\n

With these safeguards in place wallets are safe against the following scenarios:

\n
    \n
  1. \n

    Sequence.app backend is compromised, or guard keys are leaked: in this scenario, the user's identity must still be verified by Sequence Auth.

    \n
  2. \n
  3. \n

    Sequence Auth is compromised: in this scenario the Sequence Guard protects the wallets, because it independently authenticates the user, an attacker in this scenario wouldn't be able to access any wallets.

    \n
  4. \n
\n

The model also provides partial protection against the scenario:

\n
    \n
  1. Partner frontend is compromised, or MITM on the partner side: If an attacker were to be able to vulnerate the frontend of the partner, it could gain access to wallets at the time of login, but it cannot gain access to wallets of users who are currently inactive. This means that recovery from such a scenario is possible, with limited damage.
  2. \n
\n","isPage":false,"text":"\nWith these safeguards in place wallets are safe against the following scenarios:\n\n\nSequence.app backend is compromised, or guard keys are leaked: in this scenario, the user's identity must still be verified by Sequence Auth.\n\n\nSequence Auth is compromised: in this scenario the Sequence Guard protects the wallets, because it independently authenticates the user, an attacker in this scenario wouldn't be able to access any wallets.\n\n\nThe model also provides partial protection against the scenario:\n\nPartner frontend is compromised, or MITM on the partner side: If an attacker were to be able to vulnerate the frontend of the partner, it could gain access to wallets at the time of login, but it cannot gain access to wallets of users who are currently inactive. This means that recovery from such a scenario is possible, with limited damage.\n\n","title":"Threat model","titles":["Overview"]},"354":{"href":"/solutions/wallets/embedded-wallet/architecture#waas-api-service","html":"\n

Sequence WaaS (Wallet as a Service) is an API service that runs on the AWS Nitro Enclaves platform and allows for secure wallet management. It is the technology that powers the Embedded Wallet.

\n

Wallet private keys are stored encrypted using a split responsibility strategy between Sequence and a trusted third party:

\n
    \n
  1. Sequence is able to access only the encrypted blobs stored in the database with no means of decryption.
  2. \n
  3. A Trusted Third Party owns and operates the KMS (AWS' hardware security module) used to encrypt the wallet key data. They have no way to export the key material and no access to the encrypted data itself.
  4. \n
\n

The WaaS Enclave is the only entity able to use the encrypted wallet data. Its security is guaranteed by:

\n
    \n
  1. The AWS Nitro hypervisor generates and signs a cryptographic attestation based on the actually running enclave code. The document includes a PCR0 (a hash of the enclave code) signed by the Amazon Public Key Infrastructure.
  2. \n
  3. The KMS operated by the Trusted Third Party specifies a policy that only allows access to the cryptographic operations if the attestation is valid and the PCR0 hash of the enclave matches the expected value. This means that any - even the smallest - change to the enclave will result in a different attestation and PCR0 hash, effectively invalidating it.
  4. \n
  5. The enclave code is open source and anyone may audit it and verify that the service uses the exact audited version of the source code. Learn more about verification.
  6. \n
","isPage":false,"text":"\nSequence WaaS (Wallet as a Service) is an API service that runs on the AWS Nitro Enclaves platform and allows for secure wallet management. It is the technology that powers the Embedded Wallet.\nWallet private keys are stored encrypted using a split responsibility strategy between Sequence and a trusted third party:\n\nSequence is able to access only the encrypted blobs stored in the database with no means of decryption.\nA Trusted Third Party owns and operates the KMS (AWS' hardware security module) used to encrypt the wallet key data. They have no way to export the key material and no access to the encrypted data itself.\n\nThe WaaS Enclave is the only entity able to use the encrypted wallet data. Its security is guaranteed by:\n\nThe AWS Nitro hypervisor generates and signs a cryptographic attestation based on the actually running enclave code. The document includes a PCR0 (a hash of the enclave code) signed by the Amazon Public Key Infrastructure.\nThe KMS operated by the Trusted Third Party specifies a policy that only allows access to the cryptographic operations if the attestation is valid and the PCR0 hash of the enclave matches the expected value. This means that any - even the smallest - change to the enclave will result in a different attestation and PCR0 hash, effectively invalidating it.\nThe enclave code is open source and anyone may audit it and verify that the service uses the exact audited version of the source code. Learn more about verification.\n","title":"WaaS API Service","titles":["Overview"]},"355":{"href":"/solutions/wallets/embedded-wallet/overview#sequence-embedded-wallet","html":"\n

Sequence Embedded Wallet enables the creation, management and usage of fully functional EVM compatible wallets that can be easily integrated into your game or experience through our various SDKs such as TypeScript, Unity and Unreal.

\n

These headless wallets can be created on-demand for each user and allow you to integrate an application with an Ethereum compatible blockchain, while using familiar constructions like RPC APIs. Additionally, no necessary pop-up modals, user-facing confirmations, and other distractions so you can provide a truly native and seamless gaming experience.

\n

Sequence Embedded Wallet offers real non-custodial wallets and the system guarantees that each created wallet can only be accessed with the consent of the owner of the wallet. This is made possible by utilizing the power of AWS Nitro Enclaves to handle sensitive data in a secure environment that nobody can access - not even Sequence.

\n","isPage":true,"text":"\nSequence Embedded Wallet enables the creation, management and usage of fully functional EVM compatible wallets that can be easily integrated into your game or experience through our various SDKs such as TypeScript, Unity and Unreal.\nThese headless wallets can be created on-demand for each user and allow you to integrate an application with an Ethereum compatible blockchain, while using familiar constructions like RPC APIs. Additionally, no necessary pop-up modals, user-facing confirmations, and other distractions so you can provide a truly native and seamless gaming experience.\nSequence Embedded Wallet offers real non-custodial wallets and the system guarantees that each created wallet can only be accessed with the consent of the owner of the wallet. This is made possible by utilizing the power of AWS Nitro Enclaves to handle sensitive data in a secure environment that nobody can access - not even Sequence.\n","title":"Sequence Embedded Wallet","titles":[]},"356":{"href":"/solutions/wallets/embedded-wallet/overview#try-a-demo","html":"\n\n

Once you are ready dive into implementation, follow the quickstart guide.

","isPage":false,"text":"\nTry out the seamless onboarding of Sequence Embedded Wallet here\nOnce you are ready dive into implementation, follow the quickstart guide.","title":"Try a Demo","titles":["Sequence Embedded Wallet"]},"357":{"href":"/solutions/wallets/embedded-wallet/quickstart#quickstart","html":"\n

You can quickly try out a Sequence Embedded Wallet integration before doing a complete configuration specific to your application. There are several ways to test out the features:

\n\n

You can also do a quick integration of Embedded Wallet into your own application by using the following test configuration keys:

\n\n

These will leverage Sequence's own Google and Apple test authentication configurations and are whitelisted for localhost usage only. They cannot be used in a production setup.

\n

To see how to integrate these keys into a sample demo application, you can browse the Demo WaaS repository.

\n

You can also view SDK-specific guides here:

\n\n

When you are ready to configure your own Embedded Wallet, you can follow the Builder guide here.

\n","isPage":true,"text":"\nYou can quickly try out a Sequence Embedded Wallet integration before doing a complete configuration specific to your application. There are several ways to test out the features:\n\nTry out Sequence WaaS demo, showcasing a sample authentication and transaction flow leveraging Sequence Kit for web applications\nPlay with Aviator, a complete WebGL game built using the Embedded Wallet, leveraging Sequence Marketplace API as well as serverless Cloudflare Worker for minting\nBrowse Jelly Forest source code, our Unity WaaS SDK demo implementation that natively runs on iOS and Android\n\nYou can also do a quick integration of Embedded Wallet into your own application by using the following test configuration keys:\n\nProject Access Key: AQAAAAAAAEGvyZiWA9FMslYeG_yayXaHnSI\nWaaS Configuration Key: eyJwcm9qZWN0SWQiOjE2ODE1LCJycGNTZXJ2ZXIiOiJodHRwczovL3dhYXMuc2VxdWVuY2UuYXBwIn0=\n\nThese will leverage Sequence's own Google and Apple test authentication configurations and are whitelisted for localhost usage only. They cannot be used in a production setup.\nTo see how to integrate these keys into a sample demo application, you can browse the Demo WaaS repository.\nYou can also view SDK-specific guides here:\n\nTypeScript SDK\nUnity SDK\nUnreal SDK\n\nWhen you are ready to configure your own Embedded Wallet, you can follow the Builder guide here.\n","title":"Quickstart","titles":[]},"358":{"href":"/solutions/wallets/embedded-wallet/quickstart#getting-started-with-typescript-sdk","html":"\n","isPage":false,"text":"\n","title":"Getting Started with TypeScript SDK","titles":["Quickstart"]},"359":{"href":"/solutions/wallets/embedded-wallet/quickstart#sdk-installation","html":"\n

You can install the TypeScript SDK with:

\n
pnpm install @0xsequence/waas
\n","isPage":false,"text":"\nYou can install the TypeScript SDK with:\npnpm install @0xsequence/waas\n","title":"SDK Installation","titles":["Quickstart","Getting Started with TypeScript SDK"]},"360":{"href":"/solutions/wallets/embedded-wallet/quickstart#project-setup","html":"\n

You can test out the library with the Project Access Key and WaaS Configuration Key provided above. Once you are ready to configure your own Embedded Wallet, follow the Builder guide here.

\n","isPage":false,"text":"\nYou can test out the library with the Project Access Key and WaaS Configuration Key provided above. Once you are ready to configure your own Embedded Wallet, follow the Builder guide here.\n","title":"Project Setup","titles":["Quickstart","Getting Started with TypeScript SDK"]},"361":{"href":"/solutions/wallets/embedded-wallet/quickstart#library-setup","html":"\n

To start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:

\n
import { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'arbitrum-nova'\n})
\n

Note that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.

","isPage":false,"text":"\nTo start using Sequence Embedded Wallet SDK, you'll need to create a new instance of the waas class:\nimport { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'arbitrum-nova'\n})\nNote that the library is operational, but it can't be used to interact with any wallet until you have authenticated as a user.","title":"Library Setup","titles":["Quickstart","Getting Started with TypeScript SDK"]},"362":{"href":"/solutions/wallets/universal-wallet/fiat-on-ramps#fiat-on-ramps","html":"\n

Sequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;

\n\n

Only providers that support the region the users are in will be displayed.

\n

\"Sequence

\n

As a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.

\n

To learn more on how to configure the on-ramp options, see Sequence Connect Options.

","isPage":true,"text":"\nSequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;\n\nMoonpay\nRamp\nUPI via Onmeta\nSardine\nPayTrie\nWyre (deprecated)\n\nOnly providers that support the region the users are in will be displayed.\n\nAs a developer integrating the Sequence Wallet, you can choose which payment provider can be visible to users. You can also specify which token will be available to purchase via the on-ramp providers.\nTo learn more on how to configure the on-ramp options, see Sequence Connect Options.","title":"Fiat On-Ramps","titles":[]},"363":{"href":"/solutions/wallets/universal-wallet/key-management#key-management","html":"\n

Each Sequence wallet can be controlled by multiple private keys, acting like a multisignature wallet. Users can either create a Sequence wallet using one of the supported social login options or create a wallet with a private key stored only on that device.

\n

The improved security compared to traditional blockchain wallet comes from the fact that multiple independent keys need to be compromised for a malicious actor to take control of a user’s wallet, instead of a single key. The philosophy is that the more independent private-keys the user adds to their wallet, the more secure their wallet becomes, even if each individual key is only moderately secure on their own.

\n","isPage":true,"text":"\nEach Sequence wallet can be controlled by multiple private keys, acting like a multisignature wallet. Users can either create a Sequence wallet using one of the supported social login options or create a wallet with a private key stored only on that device.\nThe improved security compared to traditional blockchain wallet comes from the fact that multiple independent keys need to be compromised for a malicious actor to take control of a user’s wallet, instead of a single key. The philosophy is that the more independent private-keys the user adds to their wallet, the more secure their wallet becomes, even if each individual key is only moderately secure on their own.\n","title":"Key Management","titles":[]},"364":{"href":"/solutions/wallets/universal-wallet/key-management#social-login-wallets","html":"\n

Sequence Wallet created with social logins are currently secured using three private keys: Session keys, a Guard key and a Torus key. The Session key and Torus key are both generated for the first time when a user creates their Sequence Wallet via social login or email authentication.\nAt least two of the three keys are needed to unlock an account. This means that if one of the three keys is lost or compromised, a user can use the two remaining keys to replace the lost/compromised key. For example, if a user lost their device containing their Session Key, they can unlock their Sequence Wallet account by email or social login for the Torus key combined with the Guard key. Once done, another session key is auto-generated and the user is back in their account with all 3 keys accessible again.

\n","isPage":false,"text":"\nSequence Wallet created with social logins are currently secured using three private keys: Session keys, a Guard key and a Torus key. The Session key and Torus key are both generated for the first time when a user creates their Sequence Wallet via social login or email authentication.\nAt least two of the three keys are needed to unlock an account. This means that if one of the three keys is lost or compromised, a user can use the two remaining keys to replace the lost/compromised key. For example, if a user lost their device containing their Session Key, they can unlock their Sequence Wallet account by email or social login for the Torus key combined with the Guard key. Once done, another session key is auto-generated and the user is back in their account with all 3 keys accessible again.\n","title":"Social Login Wallets","titles":["Key Management"]},"365":{"href":"/solutions/wallets/universal-wallet/key-management#session-keys","html":"\n

Session keys are stored in the browser's IndexedDB.\nUsers should be prudent in safeguarding their devices from unauthorized access since an attacker with access to their IndexedDB effectively has control of their session key.

\n","isPage":false,"text":"\nSession keys are stored in the browser's IndexedDB.\nUsers should be prudent in safeguarding their devices from unauthorized access since an attacker with access to their IndexedDB effectively has control of their session key.\n","title":"Session Keys","titles":["Key Management","Social Login Wallets"]},"366":{"href":"/solutions/wallets/universal-wallet/key-management#guard-key","html":"\n

A Guard key is a key owned by Horizon. This key allows Horizon to help users that lost their Session key and can require additional information from the user in case of suspicious activity, if the user wants this additional protection. This key would be compromised if a malicious actor took control over Horizon servers hosting the Guard key.

\n","isPage":false,"text":"\nA Guard key is a key owned by Horizon. This key allows Horizon to help users that lost their Session key and can require additional information from the user in case of suspicious activity, if the user wants this additional protection. This key would be compromised if a malicious actor took control over Horizon servers hosting the Guard key.\n","title":"Guard Key","titles":["Key Management","Social Login Wallets"]},"367":{"href":"/solutions/wallets/universal-wallet/key-management#torus-key","html":"\n

A Torus key is a key generated by the Torus network, and is generated using a user’s email or social login credentials such as Google or AppleID. Torus uses threshold cryptography to ensure that only the user can access their private key, making these keys non-custodial. A Torus key would be compromised if a malicious actor had control over the social account or email a user used to generate their Torus key. All Torus keys could be compromised if the Torus network itself was compromised.

\n

:::info DEFAULTS + CUSTOMIZATION

\n

While this is the default setup for new Sequence Wallets, we intend to add the ability for users to add, remove and replace the keys controlling their wallet such that users can choose their preference in terms of security and user experience tradeoff. Even the Guard key will be able to be removed. Security tips and recommendations will be added to ensure users are well informed of the risks and how to protect themselves against them.

\n

:::

","isPage":false,"text":"\nA Torus key is a key generated by the Torus network, and is generated using a user’s email or social login credentials such as Google or AppleID. Torus uses threshold cryptography to ensure that only the user can access their private key, making these keys non-custodial. A Torus key would be compromised if a malicious actor had control over the social account or email a user used to generate their Torus key. All Torus keys could be compromised if the Torus network itself was compromised.\n:::info DEFAULTS + CUSTOMIZATION\nWhile this is the default setup for new Sequence Wallets, we intend to add the ability for users to add, remove and replace the keys controlling their wallet such that users can choose their preference in terms of security and user experience tradeoff. Even the Guard key will be able to be removed. Security tips and recommendations will be added to ensure users are well informed of the risks and how to protect themselves against them.\n:::","title":"Torus Key","titles":["Key Management","Social Login Wallets"]},"368":{"href":"/solutions/wallets/universal-wallet/platforms#platforms","html":"\n","isPage":true,"text":"\n","title":"Platforms","titles":[]},"369":{"href":"/solutions/wallets/universal-wallet/platforms#web-wallet","html":"\n

Sequence works beautifully on all modern Web Browsers! Try it at https://sequence.app from any computer, phone or tablet.

\n

See Build With Sequence to get started.

\n","isPage":false,"text":"\nSequence works beautifully on all modern Web Browsers! Try it at https://sequence.app from any computer, phone or tablet.\nSee Build With Sequence to get started.\n","title":"Web Wallet","titles":["Platforms"]},"370":{"href":"/solutions/wallets/universal-wallet/platforms#mobile-wallet","html":"\n

Sequence works beautifully on your Mobile Web Browser! Try it at https://sequence.app from any phone or tablet.

\n

This means dapps which integrate the Sequence Wallet will automatically support users on all mobile devices,\nwhile using standard Ethereum web3 dapp-to-wallet communication. See Build With Sequence to get started.

\n","isPage":false,"text":"\nSequence works beautifully on your Mobile Web Browser! Try it at https://sequence.app from any phone or tablet.\nThis means dapps which integrate the Sequence Wallet will automatically support users on all mobile devices,\nwhile using standard Ethereum web3 dapp-to-wallet communication. See Build With Sequence to get started.\n","title":"Mobile Wallet","titles":["Platforms"]},"371":{"href":"/solutions/wallets/universal-wallet/platforms#browser-extension-wallet","html":"\n

Sequence Chrome Extension: Install

\n

\"Sequence

\n

\"Sequence

","isPage":false,"text":"\nSequence Chrome Extension: Install\n\n","title":"Browser Extension Wallet","titles":["Platforms"]},"372":{"href":"/solutions/wallets/universal-wallet/quickstart#quickstart","html":"\n","isPage":true,"text":"\n","title":"Quickstart","titles":[]},"373":{"href":"/solutions/wallets/universal-wallet/quickstart#try-a-demo","html":"\n\n","isPage":false,"text":"\nTry out the Universal Wallet leveraging SequenceKit at our demo\n","title":"Try a Demo","titles":["Quickstart"]},"374":{"href":"/solutions/wallets/universal-wallet/quickstart#template","html":"\n\n","isPage":false,"text":"\nGet started quickly with a template using SequenceKit\n","title":"Template","titles":["Quickstart"]},"375":{"href":"/solutions/wallets/universal-wallet/quickstart#install","html":"\n

The sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:

\n
npm install 0xsequence ethers
\n

or

\n
pnpm install 0xsequence ethers
\n

or

\n
yarn add 0xsequence ethers
\n

If you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.

\n

Your package.json should look something like this (actual version may vary):

\n
{\n  "name": "my-dapp",\n  ...\n  "dependencies": {\n    "0xsequence": "^1.0.0",\n    "ethers": ^5.7.0"\n    ...\n  }\n}
\n","isPage":false,"text":"\nThe sequence.js SDK is composed of several sub-packages combined into a single meta-package called 0xsequence.\nTo add the SDK to your project, add a dependency on 0xsequence to your package.json:\nnpm install 0xsequence ethers\nor\npnpm install 0xsequence ethers\nor\nyarn add 0xsequence ethers\nIf you know that your project only requires specific sub-packages, you can also depend on those directly with\nnpm add @0xsequence/<sub-package name>.\nYour package.json should look something like this (actual version may vary):\n{\n "name": "my-dapp",\n ...\n "dependencies": {\n "0xsequence": "^1.0.0",\n "ethers": ^5.7.0"\n ...\n }\n}\n","title":"Install","titles":["Quickstart"]},"376":{"href":"/solutions/wallets/universal-wallet/quickstart#cdn-distribution-as-native-js","html":"\n

Optionally, 0xsequence can be installed as a JS script source (UMD distribution) via:

\n
<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>
","isPage":false,"text":"\nOptionally, 0xsequence can be installed as a JS script source (UMD distribution) via:\n<script src="https://cdn.ethers.io/lib/ethers-5.7.umd.min.js"></script>\n<script src="https://unpkg.com/0xsequence@latest/dist/0xsequence.umd.min.js"></script>","title":"CDN distribution as native JS","titles":["Quickstart","Install",null]},"377":{"href":"/solutions/wallets/universal-wallet/sequence-kit#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications","html":"\n

Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.

\n","isPage":true,"text":"\nSequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular wagmi library, unlock a realm of possibilities in the world of web3.\n","title":"Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications","titles":[]},"378":{"href":"/solutions/wallets/universal-wallet/sequence-kit#key-features","html":"\n\n

Explore the potential of Sequence Kit by trying out our demo!

\n
","isPage":false,"text":"\n\n\nUniversal Connections: Seamlessly connect via popular social logins such as Facebook, Google, Discord, and more! Your users will enjoy a smooth, secure onboarding process. 🔐🪪\n\n\nWeb3 Wallet Integration: Effortlessly integrate with leading web3 wallets like WalletConnect and MetaMask. Unleash the power of blockchain with just a few clicks! 🦊 ⛓️\n\n\nEmbedded Wallet Experience: Provide your users with a comprehensive in-game wallet, enabling them to manage their coins and collectibles all within your own application. 👛 🖼️ 🪙\n\n\nExplore the potential of Sequence Kit by trying out our demo!\n","title":"Key Features","titles":["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications"]},"379":{"href":"/solutions/wallets/universal-wallet/sequence-kit#next-steps","html":"
\n

Ready to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.

","isPage":false,"text":"\nReady to integrate Sequence Kit into your application? Check out our Getting Started guide. If you're already familiar with Sequence Kit dive into the available configuration options or take a look at the checkout.","title":"Next Steps","titles":[]},"380":{"href":"/solutions/technical-references/internals/v1/contract-audits#contract-audits","html":"\n

Sequence wallet contracts underwent two independent audits by Consensys Diligence and Quantstamp.

\n

Note: Sequence Wallet was formerly known as "Arcadeum Wallet". Any references of "Arcadeum" in these reports are synonymous with "Sequence".

\n","isPage":true,"text":"\nSequence wallet contracts underwent two independent audits by Consensys Diligence and Quantstamp.\nNote: Sequence Wallet was formerly known as "Arcadeum Wallet". Any references of "Arcadeum" in these reports are synonymous with "Sequence".\n","title":"Contract Audits","titles":[]},"381":{"href":"/solutions/technical-references/internals/v1/contract-audits#quantstamp","html":"\n\n","isPage":false,"text":"\n\nJuly 2nd, 2020\nFeb 24th, 2021\n\n","title":"Quantstamp","titles":["Contract Audits"]},"382":{"href":"/solutions/technical-references/internals/v1/contract-audits#consensys-diligence","html":"\n\n","isPage":false,"text":"\n\nMay 2020\n\n","title":"Consensys Diligence","titles":["Contract Audits"]},"383":{"href":"/solutions/technical-references/internals/v1/contract-audits#zellic","html":"\n","isPage":false,"text":"\n\nMarch 2023\n","title":"Zellic","titles":["Contract Audits"]},"384":{"href":"/solutions/technical-references/internals/v1/guest-module#guestmodule-and-on-demand-deployment","html":"","isPage":true,"text":"","title":"GuestModule and on-demand deployment","titles":[]},"385":{"href":"/solutions/technical-references/internals/v1/main-module-upgradeable#mainmoduleupgradeable--configuration-migration","html":"","isPage":true,"text":"","title":"MainModuleUpgradeable & configuration migration","titles":[]},"386":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#modules--wallet-update","html":"\n

Sequence modules are the underlying program implementation of the wallets; wallets can change modules at runtime.

\n

The MainModule is the initial module of every Sequence wallet; it differs from the other modules because it doesn't store the set of signers on contract storage; it uses the salt provided to the Factory contract.

\n","isPage":true,"text":"\nSequence modules are the underlying program implementation of the wallets; wallets can change modules at runtime.\nThe MainModule is the initial module of every Sequence wallet; it differs from the other modules because it doesn't store the set of signers on contract storage; it uses the salt provided to the Factory contract.\n","title":"Modules & wallet update","titles":[]},"387":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#wallet-implementation","html":"\n

Sequence modules can be assigned to wallets either by the factory or by updating it after the initial deployment. Only one module can be assigned to a wallet at a time.

\n","isPage":false,"text":"\nSequence modules can be assigned to wallets either by the factory or by updating it after the initial deployment. Only one module can be assigned to a wallet at a time.\n","title":"Wallet implementation","titles":["Modules & wallet update"]},"388":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#_updateconfiguration","html":"\n

The updateImplementation allows to update the underlying implementation of the wallet proxy. This implementation contains all the core code that defines the wallet's behaviour.

\n

:::warning Dangerous operation\nCalling updateImplementation with an invalid implementation will result in the corruption of the wallet.

\n

Corrupt wallets may lead to the loss of funds.\n:::

\n
function updateImplementation(\n  address _implementation\n) external override onlySelf {
\n","isPage":false,"text":"\nThe updateImplementation allows to update the underlying implementation of the wallet proxy. This implementation contains all the core code that defines the wallet's behaviour.\n:::warning Dangerous operation\nCalling updateImplementation with an invalid implementation will result in the corruption of the wallet.\nCorrupt wallets may lead to the loss of funds.\n:::\nfunction updateImplementation(\n address _implementation\n) external override onlySelf {\n","title":"_updateConfiguration","titles":["Modules & wallet update","Wallet implementation"]},"389":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#parameters","html":"\n
NameTypeDescription
_implementationaddressAddress of the new wallet implementation.
\n

This method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.

\n","isPage":false,"text":"\nNameTypeDescription_implementationaddressAddress of the new wallet implementation.\nThis method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.\n","title":"Parameters:","titles":["Modules & wallet update","Wallet implementation","_updateConfiguration"]},"390":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#reading-current-implementation","html":"\n

The wallet implementation is stored on the contract storage slot defined by the address of the wallet itself. Given that every wallet has a unique address, the implementation slot varies from wallet to wallet.

\n
import "ethers"\n \nconst address = "0x596af90cecdbf9a768886e771178fd5561dd27ab"\nconst provider = new ethers.providers.JsonRpcProvider("http://localhost:8545")\n \n// Read storage slot address(address)\nconst slot = await provider.getStorageAt(address, ethers.utils.defaultAbiCoder.encode(['address'], [address]))\n \n// Decode bytes32 as address value\nconst implementation = ethers.utils.defaultAbiCoder.decode(['address'], slot)[0]\n \nconsole.log(implementation)
\n","isPage":false,"text":"\nThe wallet implementation is stored on the contract storage slot defined by the address of the wallet itself. Given that every wallet has a unique address, the implementation slot varies from wallet to wallet.\nimport "ethers"\n \nconst address = "0x596af90cecdbf9a768886e771178fd5561dd27ab"\nconst provider = new ethers.providers.JsonRpcProvider("http://localhost:8545")\n \n// Read storage slot address(address)\nconst slot = await provider.getStorageAt(address, ethers.utils.defaultAbiCoder.encode(['address'], [address]))\n \n// Decode bytes32 as address value\nconst implementation = ethers.utils.defaultAbiCoder.decode(['address'], slot)[0]\n \nconsole.log(implementation)\n","title":"Reading current implementation","titles":["Modules & wallet update","Wallet implementation"]},"391":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#wallet-configuration-validation","html":"\n

:::info Fixed configuration\nSigner's configuration on wallets using MainModule can't be changed. The only way to change the set of signers or threshold is by updating the module of the wallet.\n:::

\n

All sequence modules must implement the ModuleAuth interface, this interface allows the rest of the module to validate signatures for the wallet. In the case of MainModule this interface is implemented as a counter-factual validation of hash passed to the factory during the contract wallet creation.

\n","isPage":false,"text":"\n:::info Fixed configuration\nSigner's configuration on wallets using MainModule can't be changed. The only way to change the set of signers or threshold is by updating the module of the wallet.\n:::\nAll sequence modules must implement the ModuleAuth interface, this interface allows the rest of the module to validate signatures for the wallet. In the case of MainModule this interface is implemented as a counter-factual validation of hash passed to the factory during the contract wallet creation.\n","title":"Wallet configuration validation","titles":["Modules & wallet update"]},"392":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#_isvalidimage","html":"\n
  function _isValidImage(\n    bytes32 _imageHash\n  ) internal override view returns (bool _isValid)
\n

Validates if the provided imageHash corresponds to the one configured in the wallet. This function is called internally to validate transaction and message signatures.

\n

The imageHash is a hash of the wallet configuration, which contains the wallet's threshold, signers and weights.

\n","isPage":false,"text":"\n function _isValidImage(\n bytes32 _imageHash\n ) internal override view returns (bool _isValid)\nValidates if the provided imageHash corresponds to the one configured in the wallet. This function is called internally to validate transaction and message signatures.\nThe imageHash is a hash of the wallet configuration, which contains the wallet's threshold, signers and weights.\n","title":"_isValidImage","titles":["Modules & wallet update","Wallet configuration validation"]},"393":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#parameters-1","html":"\n
NameTypeDescription
_imageHashbytes32Hash of wallet configuration to be validated.
\n","isPage":false,"text":"\nNameTypeDescription_imageHashbytes32Hash of wallet configuration to be validated.\n","title":"Parameters:","titles":["Modules & wallet update","Wallet configuration validation","_isValidImage"]},"394":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#return-values","html":"\n
NameTypeDescription
_isValidboolTrue if the given imageHash corresponds to the current wallet configuration.
\n","isPage":false,"text":"\nNameTypeDescription_isValidboolTrue if the given imageHash corresponds to the current wallet configuration.\n","title":"Return Values:","titles":["Modules & wallet update","Wallet configuration validation","_isValidImage"]},"395":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#mainmoduleupgradeable","html":"\n

MainModuleUpgradable is a module that mimics the behaviour of the MainModule but allows the wallet configuration to be updated.

\n","isPage":false,"text":"\nMainModuleUpgradable is a module that mimics the behaviour of the MainModule but allows the wallet configuration to be updated.\n","title":"MainModuleUpgradeable","titles":["Modules & wallet update"]},"396":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#updateimagehash","html":"\n

Updates the wallet imageHash, this is the hash that defines the wallet configuration (signers, weights, threshold).

\n
  function updateImageHash(\n    bytes32 _imageHash\n  ) external override onlySelf {
\n","isPage":false,"text":"\nUpdates the wallet imageHash, this is the hash that defines the wallet configuration (signers, weights, threshold).\n function updateImageHash(\n bytes32 _imageHash\n ) external override onlySelf {\n","title":"updateImageHash","titles":["Modules & wallet update","MainModuleUpgradeable"]},"397":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#parameters-2","html":"\n
NameTypeDescription
_imageHashbytes32Hash of the new configuration for the wallet.
\n

:::caution Unsanitized input\nThe imageHash is not validated, it is the responsibility of the caller to ensure that the hash is correct. Reasons for incorrect hashes include:

\n\n

In any of this cases the wallet will be rendered unusable.\n:::

\n

This method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.

\n","isPage":false,"text":"\nNameTypeDescription_imageHashbytes32Hash of the new configuration for the wallet.\n:::caution Unsanitized input\nThe imageHash is not validated, it is the responsibility of the caller to ensure that the hash is correct. Reasons for incorrect hashes include:\n\nThe combined weight of the signers is below the threshold.\nThe signers are not valid addresses.\nThe signers are smart contract wallets without proper support for EIP-1271.\nThe imageHash doesn't correspond to any wallet configuration (may be a random string).\nThe imageHash corresponds to an unknown wallet configuration.\n\nIn any of this cases the wallet will be rendered unusable.\n:::\nThis method has the onlySelf modifier, which means that it can only be called by the wallet itself using a self-referencing transaction. Calls to this method coming from other addresses, even if these addresses are signers of the wallet, will be rejected.\n","title":"Parameters:","titles":["Modules & wallet update","MainModuleUpgradeable","updateImageHash"]},"398":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#first-configuration-update","html":"\n

When Sequence wallets are created, the factory contract doesn't call an initialize function. The configuration is instead defined by the salt provided to the factory, the MainModule then checks the counterfactual validity of all signatures against the wallet address.

\n

This means there is no direct way to update the configuration of a wallet while still using the MainModule. Given that the first configuration update needs to also change the wallet implementation to the MainModuleUpgradable, the MainModule is updated to the MainModuleUpgradable and the updateImageHash method is called to update the wallet configuration.

\n
const transactions = [\n  {\n    delegateCall: false,\n    revertOnError: true,\n    to: wallet,\n    data: walletInterface.encodeFunctionData(\n      walletInterface.getFunction('updateImplementation'), [this.context.mainModuleUpgradable]\n    ),\n    value: ethers.constants.Zero,\n    gasLimit: ethers.constants.Zero,\n  },\n  {\n    delegateCall: false,\n    revertOnError: true,\n    to: wallet,\n    data: mainModuleInterface.encodeFunctionData(\n      mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n    ),\n    value: ethers.constants.Zero,\n    gasLimit: ethers.constants.Zero,\n  }\n]
\n","isPage":false,"text":"\nWhen Sequence wallets are created, the factory contract doesn't call an initialize function. The configuration is instead defined by the salt provided to the factory, the MainModule then checks the counterfactual validity of all signatures against the wallet address.\nThis means there is no direct way to update the configuration of a wallet while still using the MainModule. Given that the first configuration update needs to also change the wallet implementation to the MainModuleUpgradable, the MainModule is updated to the MainModuleUpgradable and the updateImageHash method is called to update the wallet configuration.\nconst transactions = [\n {\n delegateCall: false,\n revertOnError: true,\n to: wallet,\n data: walletInterface.encodeFunctionData(\n walletInterface.getFunction('updateImplementation'), [this.context.mainModuleUpgradable]\n ),\n value: ethers.constants.Zero,\n gasLimit: ethers.constants.Zero,\n },\n {\n delegateCall: false,\n revertOnError: true,\n to: wallet,\n data: mainModuleInterface.encodeFunctionData(\n mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n ),\n value: ethers.constants.Zero,\n gasLimit: ethers.constants.Zero,\n }\n]\n","title":"First configuration update","titles":["Modules & wallet update"]},"399":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#delegatecall-false","html":"\n

delegateCall is used to extend the wallet functionality beyond what's allowed by the module. In this case the called methods are defined on the modules themselves, so there is no need to use delegateCall.

\n","isPage":false,"text":"\ndelegateCall is used to extend the wallet functionality beyond what's allowed by the module. In this case the called methods are defined on the modules themselves, so there is no need to use delegateCall.\n","title":"delegateCall: false","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"400":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#revertonerror-true","html":"\n

revertOnError is used to revert the whole transaction bundle if a transaction flagged by it fails. In this case the operation should be atomic given that a partial wallet configuration update will render the wallet unusable.

\n","isPage":false,"text":"\nrevertOnError is used to revert the whole transaction bundle if a transaction flagged by it fails. In this case the operation should be atomic given that a partial wallet configuration update will render the wallet unusable.\n","title":"revertOnError: true","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"401":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#to-wallet","html":"\n

The methods being called are defined on the wallet itself, but need to be called externally, so the to address is the wallet itself.

\n","isPage":false,"text":"\nThe methods being called are defined on the wallet itself, but need to be called externally, so the to address is the wallet itself.\n","title":"to: wallet","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"402":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#value-ethersconstantszero","html":"\n

The value of the transaction is always zero, since the transaction is a self-referencing transaction and doesn't require transferring funds.

\n","isPage":false,"text":"\nThe value of the transaction is always zero, since the transaction is a self-referencing transaction and doesn't require transferring funds.\n","title":"value: ethers.constants.Zero","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"403":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#gaslimit-ethersconstantszero","html":"\n

The gasLimit of the transaction is always zero, since it represents an unlimited amount of gas.

\n

:::warning Dangerous operation

\n

When the wallet is first updated to the MainModuleUpgradable it doesn't have a valid imageHash yet. It's imperative that the imageHash is updated before the transaction bundle finishes executing.\nIf the imageHash is not updated before the transaction bundle finishes executing, the wallet will be rendered unusable.

\n

For this reason the following considerations should be taken when updating the wallet for the first time:

\n\n

:::

\n","isPage":false,"text":"\nThe gasLimit of the transaction is always zero, since it represents an unlimited amount of gas.\n:::warning Dangerous operation\nWhen the wallet is first updated to the MainModuleUpgradable it doesn't have a valid imageHash yet. It's imperative that the imageHash is updated before the transaction bundle finishes executing.\nIf the imageHash is not updated before the transaction bundle finishes executing, the wallet will be rendered unusable.\nFor this reason the following considerations should be taken when updating the wallet for the first time:\n\nAll transactions should be marked revertOnError = true.\nupdateImplementation and updateImageHash should both be declared on the same transaction bundle.\nThe gasLimit of both transactions should be set to unlimited (0).\n\n:::\n","title":"gasLimit: ethers.constants.Zero","titles":["Modules & wallet update","First configuration update","updateImageHash"]},"404":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#subsequent-configuration-updates","html":"\n

Once the wallet is updated to the MainModuleUpgradable it can be updated by calling the updateImageHash method, without any additional transaction.

\n
const transactions = [\n  {\n    delegateCall: false,\n    revertOnError: true,\n    to: wallet,\n    data: mainModuleInterface.encodeFunctionData(\n      mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n    ),\n    value: ethers.constants.Zero,\n    gasLimit: ethers.constants.Zero,\n  }\n]
\n","isPage":false,"text":"\nOnce the wallet is updated to the MainModuleUpgradable it can be updated by calling the updateImageHash method, without any additional transaction.\nconst transactions = [\n {\n delegateCall: false,\n revertOnError: true,\n to: wallet,\n data: mainModuleInterface.encodeFunctionData(\n mainModuleInterface.getFunction('updateImageHash'), [newImageHash]\n ),\n value: ethers.constants.Zero,\n gasLimit: ethers.constants.Zero,\n }\n]\n","title":"Subsequent configuration updates","titles":["Modules & wallet update","First configuration update"]},"405":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#retrieving-the-current-configuration","html":"\n

If the wallet is updated to the MainModuleUpgradable it can be queried for the current configuration by calling the getImageHash method.

\n

This method should return the wallet's current configuration hash, which can be compared to a list of known wallet configurations to find the correct one.

\n","isPage":false,"text":"\nIf the wallet is updated to the MainModuleUpgradable it can be queried for the current configuration by calling the getImageHash method.\nThis method should return the wallet's current configuration hash, which can be compared to a list of known wallet configurations to find the correct one.\n","title":"Retrieving the current configuration","titles":["Modules & wallet update","First configuration update"]},"406":{"href":"/solutions/technical-references/internals/v1/modules-and-updates#retrieving-the-wallet-configuration","html":"\n

The imageHash method returns bytes32(0) if the wallet is not yet updated to the MainModuleUpgradable.\nIn this case the wallet is in a counter-factual state and the imageHash can't be directly queried.

\n

This is also the case for non-deployed wallets.

\n

To find the imageHash of a non-deployed or non-updated wallet, a candidate known imageHash needs to be compared against the wallet address.

\n

See Compute wallet address.

","isPage":false,"text":"\nThe imageHash method returns bytes32(0) if the wallet is not yet updated to the MainModuleUpgradable.\nIn this case the wallet is in a counter-factual state and the imageHash can't be directly queried.\nThis is also the case for non-deployed wallets.\nTo find the imageHash of a non-deployed or non-updated wallet, a candidate known imageHash needs to be compared against the wallet address.\nSee Compute wallet address.","title":"Retrieving the wallet configuration","titles":["Modules & wallet update","First configuration update","Retrieving the current configuration"]},"407":{"href":"/solutions/technical-references/internals/v1/nested-transaction-batching#nested-transaction-batching","html":"","isPage":true,"text":"","title":"Nested Transaction Batching","titles":[]},"408":{"href":"/solutions/technical-references/internals/v1/signature-encoding#signature-encoding","html":"\n

Sequence Wallets support ERC-1271 Standard Contract Signature Verification to allow signing of transactions and messages.

\n","isPage":true,"text":"\nSequence Wallets support ERC-1271 Standard Contract Signature Verification to allow signing of transactions and messages.\n","title":"Signature Encoding","titles":[]},"409":{"href":"/solutions/technical-references/internals/v1/signature-encoding#erc-191-ethereum-signed-data","html":"\n

Messages encoded with as ERC-191 Ethereum Signed Data are able to be created and signed as follows.

\n
import { Wallet } from '@0xsequence/wallet'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \nconst message = "Hello, World!"\n \nconst prefixedMessage = "\\x19Ethereum Signed Message:\\n" + len(message) + message\nconst signature = await wallet.signMessage(prefixedMessage)
\n

The above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.

\n","isPage":false,"text":"\nMessages encoded with as ERC-191 Ethereum Signed Data are able to be created and signed as follows.\nimport { Wallet } from '@0xsequence/wallet'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \nconst message = "Hello, World!"\n \nconst prefixedMessage = "\\x19Ethereum Signed Message:\\n" + len(message) + message\nconst signature = await wallet.signMessage(prefixedMessage)\nThe above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.\n","title":"ERC-191 Ethereum Signed Data","titles":["Signature Encoding"]},"410":{"href":"/solutions/technical-references/internals/v1/signature-encoding#erc-712-structured-data-signatures","html":"\n

ERC-712 Structured Data can also be signed in a similar fashion.

\n
import { Wallet } from '@0xsequence/wallet'\nimport { encodeTypedDataDigest } from '@0xsequence/utils'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \n// Encode the typed data\nconst chainId = 1\nconst typedData = {\n\ttypes: {\n\t\tPerson: [\n\t\t\t{ name: 'name', type: 'string' },\n\t\t\t{ name: 'wallet', type: 'address' },\n\t\t\t{ name: 'count', type: 'uint8' }\n\t\t]\n\t},\n\tprimaryType: 'Person' as const,\n\tdomain: {\n\t\tname: 'Ether Mail',\n\t\tversion: '1',\n\t\tchainId: chainId,\n\t\tverifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC'\n\t},\n\tmessage: {\n\t\tname: 'Bob',\n\t\twallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n\t\tcount: 4\n\t}\n} \nconst hashedData = encodeTypedDataDigest(typedData)\n \nconst signature = await wallet.signMessage(hashedData)
\n

The above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.

\n","isPage":false,"text":"\nERC-712 Structured Data can also be signed in a similar fashion.\nimport { Wallet } from '@0xsequence/wallet'\nimport { encodeTypedDataDigest } from '@0xsequence/utils'\n \n// Construct your Sequence Wallet (out of scope for this section)\nconst wallet: Wallet\n \n// Encode the typed data\nconst chainId = 1\nconst typedData = {\n\ttypes: {\n\t\tPerson: [\n\t\t\t{ name: 'name', type: 'string' },\n\t\t\t{ name: 'wallet', type: 'address' },\n\t\t\t{ name: 'count', type: 'uint8' }\n\t\t]\n\t},\n\tprimaryType: 'Person' as const,\n\tdomain: {\n\t\tname: 'Ether Mail',\n\t\tversion: '1',\n\t\tchainId: chainId,\n\t\tverifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC'\n\t},\n\tmessage: {\n\t\tname: 'Bob',\n\t\twallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB',\n\t\tcount: 4\n\t}\n} \nconst hashedData = encodeTypedDataDigest(typedData)\n \nconst signature = await wallet.signMessage(hashedData)\nThe above will iterate through local, signing the message. If the threshold is reached, the signature is returned.\nOtherwise the library will iterate through the remote signers as well.\nThe resulting signatures are joined and encoded as a hex string.\n","title":"ERC-712 Structured Data Signatures","titles":["Signature Encoding"]},"411":{"href":"/solutions/technical-references/internals/v1/signature-encoding#verification","html":"\n

The signature can be verified by calling the isValidSignature method on the wallet.

\n
  /**\n   * @notice Verifies whether the provided signature is valid with respect to the provided hash\n   * @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n   *   > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256("isValidSignature(bytes32,bytes)"))\n   * @param _hash       keccak256 hash that was signed\n   * @param _signatures Signature byte array associated with _data.\n   *                    Encoded as abi.encode(Signature[], Configs)\n   * @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\n   */\n  function isValidSignature(\n    bytes32 _hash,\n    bytes calldata _signatures\n  ) public override virtual view returns (bytes4) {\n    // Validate signatures\n    (bool isValid,) = _signatureValidation(_hash, _signatures);\n    if (isValid) {\n      return SELECTOR_ERC1271_BYTES32_BYTES;\n    }\n\n    return bytes4(0);\n  }
\n

This will iterate through the combined signatures and validate that the resulting signature breaches the wallet's threshold.

","isPage":false,"text":"\nThe signature can be verified by calling the isValidSignature method on the wallet.\n /**\n * @notice Verifies whether the provided signature is valid with respect to the provided hash\n * @dev MUST return the correct magic value if the signature provided is valid for the provided hash\n * > The bytes4 magic value to return when signature is valid is 0x1626ba7e : bytes4(keccak256("isValidSignature(bytes32,bytes)"))\n * @param _hash keccak256 hash that was signed\n * @param _signatures Signature byte array associated with _data.\n * Encoded as abi.encode(Signature[], Configs)\n * @return magicValue Magic value 0x1626ba7e if the signature is valid and 0x0 otherwise\n */\n function isValidSignature(\n bytes32 _hash,\n bytes calldata _signatures\n ) public override virtual view returns (bytes4) {\n // Validate signatures\n (bool isValid,) = _signatureValidation(_hash, _signatures);\n if (isValid) {\n return SELECTOR_ERC1271_BYTES32_BYTES;\n }\n\n return bytes4(0);\n }\nThis will iterate through the combined signatures and validate that the resulting signature breaches the wallet's threshold.","title":"Verification","titles":["Signature Encoding"]},"412":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#wallet-configuration","html":"\n

Every Sequence wallet has a configuration defined by a threshold and a list of signers with their corresponding weights.

\n","isPage":true,"text":"\nEvery Sequence wallet has a configuration defined by a threshold and a list of signers with their corresponding weights.\n","title":"Wallet Configuration","titles":[]},"413":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#configuration-layout","html":"\n
NameTypeRangeDescription
Thresholduint161 - 65535Required combined total "weight" of signers for a signature to be considered valid.
Signerssigner[]unlimited - bounded by gasList of signers that with their corresponding "weight"s.
\n","isPage":false,"text":"\nNameTypeRangeDescriptionThresholduint161 - 65535Required combined total "weight" of signers for a signature to be considered valid.Signerssigner[]unlimited - bounded by gasList of signers that with their corresponding "weight"s.\n","title":"Configuration layout","titles":["Wallet Configuration"]},"414":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#signer-layout","html":"\n
NameTypeRangeDescription
"weight"uint80 - 255"weight" of every signature of the signer.
"address""address"--"address" of the signer, it may be an EOA or another smart contract wallet with EIP-1271 support.
\n","isPage":false,"text":"\nNameTypeRangeDescription"weight"uint80 - 255"weight" of every signature of the signer."address""address"--"address" of the signer, it may be an EOA or another smart contract wallet with EIP-1271 support.\n","title":"Signer layout","titles":["Wallet Configuration","Configuration layout"]},"415":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#example","html":"\n
{\n  "threshold": 5,\n  "signers": [\n    {\n      "address": "0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea",\n      "weight": 2\n    },\n    {\n      "address": "0x596af90cecdbf9a768886e771178fd5561dd27ab",\n      "weight": 3\n    },\n    {\n      "address": "0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1",\n      "weight": 2\n    },\n    {\n      "address": "0xec9a7204a43d3f4a82c84fde92d25bfc9110981e",\n      "weight": 1\n    }\n  ]\n}
\n

This example has a threshold of 5 and 4 signers.

\n","isPage":false,"text":"\n{\n "threshold": 5,\n "signers": [\n {\n "address": "0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea",\n "weight": 2\n },\n {\n "address": "0x596af90cecdbf9a768886e771178fd5561dd27ab",\n "weight": 3\n },\n {\n "address": "0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1",\n "weight": 2\n },\n {\n "address": "0xec9a7204a43d3f4a82c84fde92d25bfc9110981e",\n "weight": 1\n }\n ]\n}\nThis example has a threshold of 5 and 4 signers.\n","title":"Example","titles":["Wallet Configuration","Configuration layout","Signer layout"]},"416":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#the-valid-combinations-of-signers-are","html":"\n
- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea, 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0xec9a7204a43d3f4a82c84fde92d25bfc9110981e - combined weight of 2 + 2 + 1 = 5
\n

Any combination of signers with a combined weight under the threshold is considered invalid; any additional signers above the threshold are ignored.

\n","isPage":false,"text":"\n- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0x596af90cecdbf9a768886e771178fd5561dd27ab - combined weight of 2 + 3 = 5\n- 0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea, 0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1 & 0xec9a7204a43d3f4a82c84fde92d25bfc9110981e - combined weight of 2 + 2 + 1 = 5\nAny combination of signers with a combined weight under the threshold is considered invalid; any additional signers above the threshold are ignored.\n","title":"The valid combinations of signers are:","titles":["Wallet Configuration","Configuration layout","Signer layout"]},"417":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#configuration-hash---imagehash","html":"\n

The configuration is never stored directly on the contract, but instead is hashed and checked against every time a signature is validated. This allows the wallet contracts to reduce the usage of storage and therefore the gas cost.

\n

Wallets that never have been updated don't store the imageHash directly, instead the imageHash is used as the salt during the contract creation, and signatures are validated against the address of the wallet.

\n","isPage":false,"text":"\nThe configuration is never stored directly on the contract, but instead is hashed and checked against every time a signature is validated. This allows the wallet contracts to reduce the usage of storage and therefore the gas cost.\nWallets that never have been updated don't store the imageHash directly, instead the imageHash is used as the salt during the contract creation, and signatures are validated against the address of the wallet.\n","title":"Configuration hash - ImageHash","titles":["Wallet Configuration","Configuration layout"]},"418":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#compute-image-hash","html":"\n
  keccak256(abi.encode( uint8 weight_1, address signer_1,\n  keccak256(abi.encode( uint8 weight_2, address signer_2,\n  keccak256(abi.encode( uint8 weight_3, address signer_3,\n  keccak256(abi.encode( uint256 threshold )) )) )) )) 
  let tmp = ethers.utils.solidityPack(['uint256'], [configuration.threshold])\n \n  for (const signer of configuration.signers) {\n    tmp = ethers.utils.keccak256(\n      ethers.utils.defaultAbiCoder.encode(\n        ['bytes32', 'uint8', 'address'],\n        [tmp, signer.weight, signer.address]\n      )\n    )\n  }\n \n  const imageHash = tmp
\n","isPage":false,"text":"\n keccak256(abi.encode( uint8 weight_1, address signer_1,\n keccak256(abi.encode( uint8 weight_2, address signer_2,\n keccak256(abi.encode( uint8 weight_3, address signer_3,\n keccak256(abi.encode( uint256 threshold )) )) )) )) let tmp = ethers.utils.solidityPack(['uint256'], [configuration.threshold])\n \n for (const signer of configuration.signers) {\n tmp = ethers.utils.keccak256(\n ethers.utils.defaultAbiCoder.encode(\n ['bytes32', 'uint8', 'address'],\n [tmp, signer.weight, signer.address]\n )\n )\n }\n \n const imageHash = tmp\n","title":"Compute image hash","titles":["Wallet Configuration","Configuration layout","Configuration hash - ImageHash"]},"419":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#initial-wallet-configuration","html":"\n

The initial wallet configuration determines the address of the wallet, subsequent updates don't change the address.

\n

The wallet address can be computed using the imageHash, the factory and mainModule of the wallet.

\n","isPage":false,"text":"\nThe initial wallet configuration determines the address of the wallet, subsequent updates don't change the address.\nThe wallet address can be computed using the imageHash, the factory and mainModule of the wallet.\n","title":"Initial wallet configuration","titles":["Wallet Configuration"]},"420":{"href":"/solutions/technical-references/internals/v1/wallet-configuration#compute-wallet-address","html":"\n
// The code of the wallet proxy contract\nconst WalletProxyBytecode =\n"0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3";\n \n// These values are defined by the wallet context\n// they must be known in order to validate the counter-factual wallet imageHash\nconst factory = "0xf9D09D634Fb818b05149329C1dcCFAeA53639d96";\nconst mainModule = "0xd01F11855bCcb95f88D7A48492F66410d4637313";\n \n// Append the `mainModule` to the `WalletProxyBytecode`\n// this completed the creation code of the proxy contract\n// used for computing the wallet address as defined by the CREATE2 opcode\nconst codeHash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes", "bytes32"],\n[WalletContractBytecode, ethers.utils.hexZeroPad(mainModule, 32)]\n)\n);\n \n// Compute the wallet address\nconst hash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes1", "address", "bytes32", "bytes32"],\n["0xff", factory, salt, codeHash]\n)\n);\n \nconst address = ethers.utils.getAddress(ethers.utils.hexDataSlice(hash, 12));
","isPage":false,"text":"\n// The code of the wallet proxy contract\nconst WalletProxyBytecode =\n"0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3";\n \n// These values are defined by the wallet context\n// they must be known in order to validate the counter-factual wallet imageHash\nconst factory = "0xf9D09D634Fb818b05149329C1dcCFAeA53639d96";\nconst mainModule = "0xd01F11855bCcb95f88D7A48492F66410d4637313";\n \n// Append the `mainModule` to the `WalletProxyBytecode`\n// this completed the creation code of the proxy contract\n// used for computing the wallet address as defined by the CREATE2 opcode\nconst codeHash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes", "bytes32"],\n[WalletContractBytecode, ethers.utils.hexZeroPad(mainModule, 32)]\n)\n);\n \n// Compute the wallet address\nconst hash = ethers.utils.keccak256(\nethers.utils.solidityPack(\n["bytes1", "address", "bytes32", "bytes32"],\n["0xff", factory, salt, codeHash]\n)\n);\n \nconst address = ethers.utils.getAddress(ethers.utils.hexDataSlice(hash, 12));","title":"Compute wallet address","titles":["Wallet Configuration","Initial wallet configuration","Configuration hash - ImageHash"]},"421":{"href":"/solutions/technical-references/internals/v1/wallet-context#wallet-context","html":"\n
export const sequenceContext: WalletContext = {\n  factory: '0xf9D09D634Fb818b05149329C1dcCFAeA53639d96',\n  mainModule: '0xd01F11855bCcb95f88D7A48492F66410d4637313',\n  mainModuleUpgradable: '0x7EFE6cE415956c5f80C6530cC6cc81b4808F6118',\n  guestModule: '0x02390F3E6E5FD1C6786CB78FD3027C117a9955A7',\n  sequenceUtils: '0xd130B43062D875a4B7aF3f8fc036Bc6e9D3E1B3E',\n  libs: {\n    requireFreshSigner: '0xE6B9B21C077F382333220a072e4c44280b873907'\n  }\n}
","isPage":true,"text":"\nexport const sequenceContext: WalletContext = {\n factory: '0xf9D09D634Fb818b05149329C1dcCFAeA53639d96',\n mainModule: '0xd01F11855bCcb95f88D7A48492F66410d4637313',\n mainModuleUpgradable: '0x7EFE6cE415956c5f80C6530cC6cc81b4808F6118',\n guestModule: '0x02390F3E6E5FD1C6786CB78FD3027C117a9955A7',\n sequenceUtils: '0xd130B43062D875a4B7aF3f8fc036Bc6e9D3E1B3E',\n libs: {\n requireFreshSigner: '0xE6B9B21C077F382333220a072e4c44280b873907'\n }\n}","title":"Wallet Context","titles":[]},"422":{"href":"/solutions/technical-references/internals/v2/configuration#wallet-configuration","html":"\n

In the context of Sequence Wallets, the "Wallet Configuration" is a set of parameters that defines the behavior of the wallet, primarily used to define the access control of the wallet, meaning who can sign transactions and how many signatures are needed.

\n","isPage":true,"text":"\nIn the context of Sequence Wallets, the "Wallet Configuration" is a set of parameters that defines the behavior of the wallet, primarily used to define the access control of the wallet, meaning who can sign transactions and how many signatures are needed.\n","title":"Wallet Configuration","titles":[]},"423":{"href":"/solutions/technical-references/internals/v2/configuration#top-level-properties","html":"\n

Sequence v2 configurations contain the following 3 properties:

\n\n","isPage":false,"text":"\nSequence v2 configurations contain the following 3 properties:\n\nthreshold - The required "weight sum" needed for a signature to be considered valid.\ncheckpoint - Used as a salt and ordering mechanism for wallet updates.\ntree - Determines the signers and their weights for the wallet.\n\n","title":"Top level properties","titles":["Wallet Configuration"]},"424":{"href":"/solutions/technical-references/internals/v2/configuration#threshold","html":"\n

The threshold is a uint16; it can have any value between 0 and 65535. Signatures are only considered valid or invalid if the sum of the weights of the signers that signed the transaction is greater or equal to the threshold.

\n","isPage":false,"text":"\nThe threshold is a uint16; it can have any value between 0 and 65535. Signatures are only considered valid or invalid if the sum of the weights of the signers that signed the transaction is greater or equal to the threshold.\n","title":"Threshold","titles":["Wallet Configuration","Top level properties"]},"425":{"href":"/solutions/technical-references/internals/v2/configuration#checkpoint","html":"\n

The checkpoint is a uint32. During wallet creation, a semi-random value can be provided to generate independent wallets with the same initial configuration. Then, during normal operation, the checkpoint is used by Light State Sync to ensure that wallet updates are applied in the correct order.

\n","isPage":false,"text":"\nThe checkpoint is a uint32. During wallet creation, a semi-random value can be provided to generate independent wallets with the same initial configuration. Then, during normal operation, the checkpoint is used by Light State Sync to ensure that wallet updates are applied in the correct order.\n","title":"Checkpoint","titles":["Wallet Configuration","Top level properties"]},"426":{"href":"/solutions/technical-references/internals/v2/configuration#tree","html":"\n

The tree is an unbalanced binary Merkle tree, where each leaf may contain a signer, a static signature, or a subtree. The tree can represent any combination of signers and weights and can be used to create complex multi-signature wallets.

\n

The possible leaf types are:

\n","isPage":false,"text":"\nThe tree is an unbalanced binary Merkle tree, where each leaf may contain a signer, a static signature, or a subtree. The tree can represent any combination of signers and weights and can be used to create complex multi-signature wallets.\nThe possible leaf types are:\n","title":"Tree","titles":["Wallet Configuration","Top level properties"]},"427":{"href":"/solutions/technical-references/internals/v2/configuration#signer","html":"\n

Signers are represented by a signer address and a uint8 weight. The weight is how much the signer contributes to the threshold.\nThe address can belong to either an ERC1271 compliant contract or an EOA wallet.

\n

The leaf hash is calculated as follows:

\n
bytes32(uint256(weight) << 160 | uint256(uint160(addr)))
\n","isPage":false,"text":"\nSigners are represented by a signer address and a uint8 weight. The weight is how much the signer contributes to the threshold.\nThe address can belong to either an ERC1271 compliant contract or an EOA wallet.\nThe leaf hash is calculated as follows:\nbytes32(uint256(weight) << 160 | uint256(uint160(addr)))\n","title":"Signer","titles":["Wallet Configuration","Top level properties","Tree"]},"428":{"href":"/solutions/technical-references/internals/v2/configuration#subdigest","html":"\n

This represents a static subdigest for which any signature is valid. If a signature for this subdigest is provided, the total weight of the signature is automatically set to Infinity.

\n

Notice static subdigests that exist within nested trees will have their "Infinity" weight reduced to the weight of the nested tree.

\n

The leaf hash is calculated as follows:

\n
keccak256(abi.encodePacked('Sequence static digest:\\n', subdigest));
\n","isPage":false,"text":"\nThis represents a static subdigest for which any signature is valid. If a signature for this subdigest is provided, the total weight of the signature is automatically set to Infinity.\nNotice static subdigests that exist within nested trees will have their "Infinity" weight reduced to the weight of the nested tree.\nThe leaf hash is calculated as follows:\nkeccak256(abi.encodePacked('Sequence static digest:\\n', subdigest));\n","title":"Subdigest","titles":["Wallet Configuration","Top level properties","Tree"]},"429":{"href":"/solutions/technical-references/internals/v2/configuration#subtree-nested-configuration","html":"\n

This represents a whole new wallet configuration, this "nested configuration" has its own:

\n\n

The way it works is that if a signature reaches the internal threshold within the subtree it is considered valid, and the external weight is added to the parent tree. Any number of nested configurations can be created, and it is possible to create multiple nesting levels.

\n

This pattern can be used, among other things, to express the following scenarios:

\n\n

The leaf hash is calculated as follows:

\n
keccak256(abi.encodePacked(\n  'Sequence nested config:\\n',\n  imageHash(tree),\n  threshold,\n  weight\n))
\n\n","isPage":false,"text":"\nThis represents a whole new wallet configuration, this "nested configuration" has its own:\n\nExternal weight (uint8)\nInternal threshold (uint16)\nInternal tree\n\nThe way it works is that if a signature reaches the internal threshold within the subtree it is considered valid, and the external weight is added to the parent tree. Any number of nested configurations can be created, and it is possible to create multiple nesting levels.\nThis pattern can be used, among other things, to express the following scenarios:\n\nNon-linear weight distribution, A and B signers can provide 1 weight each, but together they can provide 3 weight.\nLimited total weight contribution, A, B, and C signers can provide 1 weight each, but together they can only provide 2 weight.\n"Department configurations", N departments are required to sign, and each department has its own inner configuration.\n\nThe leaf hash is calculated as follows:\nkeccak256(abi.encodePacked(\n 'Sequence nested config:\\n',\n imageHash(tree),\n threshold,\n weight\n))\nThe wallet contracts have no way of validating the correctness of the configuration, the responsibility of ensuring the configuration is correct is on the SDKs interacting with the contracts.Things like threshold == 0 or threshold > total weight will result in fully unauthenticated wallets or inaccessible wallets respectively.\n","title":"Subtree (nested configuration)","titles":["Wallet Configuration","Top level properties","Tree"]},"430":{"href":"/solutions/technical-references/internals/v2/configuration#imagehash","html":"\n

The configuration is never stored as a whole; instead, the Merkle tree is hashed into a single bytes32 value, this is internally called the imageHash of the configuration.

\n

The imageHash is calculated as follows:

\n
imageHash := keccak256(abi.encode(\n  keccak256(abi.encode(\n    hashTree(tree),\n    threshold\n  )),\n  checkpoint\n))
\n

The hashTree function is a recursive function that hashes the tree into a single bytes32 value, pseudo code for the hashTree function is as follows:

\n
export function hashTree(node: Node | Leaf): string {\n  if (isSignerLeaf(node)) {\n    return ethers.utils.solidityPack(\n      ['uint96', 'address'],\n      [node.weight, node.address]\n    )\n  }\n \n  if (isSubdigestLeaf(node)) {\n    return ethers.utils.solidityKeccak256(\n      ['string', 'bytes32'],\n      ['Sequence static digest:\\n', node.subdigest]\n    )\n  }\n \n  if (isNestedLeaf(node)) {\n    const nested = hashTree(node.tree)\n    return ethers.utils.solidityKeccak256(\n      ['string', 'bytes32', 'uint256', 'uint256'],\n      ['Sequence nested config:\\n', nested, node.threshold, node.weight]\n    )\n  }\n \n  return ethers.utils.solidityKeccak256(\n    ['bytes32', 'bytes32'],\n    [hashTree(node.left), hashTree(node.right)]\n  )\n}
\n","isPage":false,"text":"\nThe configuration is never stored as a whole; instead, the Merkle tree is hashed into a single bytes32 value, this is internally called the imageHash of the configuration.\nThe imageHash is calculated as follows:\nimageHash := keccak256(abi.encode(\n keccak256(abi.encode(\n hashTree(tree),\n threshold\n )),\n checkpoint\n))\nThe hashTree function is a recursive function that hashes the tree into a single bytes32 value, pseudo code for the hashTree function is as follows:\nexport function hashTree(node: Node | Leaf): string {\n if (isSignerLeaf(node)) {\n return ethers.utils.solidityPack(\n ['uint96', 'address'],\n [node.weight, node.address]\n )\n }\n \n if (isSubdigestLeaf(node)) {\n return ethers.utils.solidityKeccak256(\n ['string', 'bytes32'],\n ['Sequence static digest:\\n', node.subdigest]\n )\n }\n \n if (isNestedLeaf(node)) {\n const nested = hashTree(node.tree)\n return ethers.utils.solidityKeccak256(\n ['string', 'bytes32', 'uint256', 'uint256'],\n ['Sequence nested config:\\n', nested, node.threshold, node.weight]\n )\n }\n \n return ethers.utils.solidityKeccak256(\n ['bytes32', 'bytes32'],\n [hashTree(node.left), hashTree(node.right)]\n )\n}\n","title":"ImageHash","titles":["Wallet Configuration"]},"431":{"href":"/solutions/technical-references/internals/v2/configuration#initial-configuration","html":"\n

All Sequence Wallets have an "initial configuration", implemented by using the imageHash of the initial configuration as the SALT during the CREATE2 deployment of the wallet.

\n

Wallets are deployed by calling the deploy function of the Factory contract, which takes the following parameters:

\n\n","isPage":false,"text":"\nAll Sequence Wallets have an "initial configuration", implemented by using the imageHash of the initial configuration as the SALT during the CREATE2 deployment of the wallet.\nWallets are deployed by calling the deploy function of the Factory contract, which takes the following parameters:\n\nmainModule: The address of the initial code implementation of the wallet.\nsalt: The imageHash of the initial configuration.\n\nThe MainModule should always be used as the initial code implementation of the wallet. The MainModule validates the imageHash (during signature validation) by re-computing the counterfactual address of the wallet, hence it does not require any storage initialization.If the imageHash is ever changed, MainModule will automatically replace the wallet code implementation with MainModuleUpgradeable, while handling the storage initialization.","title":"Initial Configuration","titles":["Wallet Configuration"]},"432":{"href":"/solutions/wallets/embedded-wallet/examples/manage-sessions#session-management","html":"\n

Sequence Auth + Embedded Wallet handles the following aspects of your application:

\n\n

This means you don't need to implement an account system yourself; instead, you interact with the Auth + WaaS SDK whenever you need to authenticate a user.

\n","isPage":true,"text":"\nSequence Auth + Embedded Wallet handles the following aspects of your application:\n\nUser creation\nUser authentication\nSession management\n\nThis means you don't need to implement an account system yourself; instead, you interact with the Auth + WaaS SDK whenever you need to authenticate a user.\n","title":"Session Management","titles":[]},"433":{"href":"/solutions/wallets/embedded-wallet/examples/manage-sessions#sign-in--sign-up","html":"\n

Signing in and signing up are the same operation; the account is automatically created if it doesn't already exist.

\n
import { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'arbitrum-nova'\n})\n \n// Get a sessionHash\nconst sessionHash = await waas.getSessionHash()\n \n// Get an idToken using the social auth provider of your choice\n// (Google, Facebook, Twitter, etc.)\n// Note: remember to pass the sessionHash as a nonce!\n \n// Then sign in with Sequence WaaS\nconst res = await waas.signIn({ idToken }, "MacBook Pro - Chrome")\n \nconsole.log(res)
\n
{\n  "sessionId": "0x63A21cCa14ed7454B9cF6466af422B5c597c6b57",\n  "wallet": "0xd6043fe6f06d90ec2cB36cA5CD1B193A8515f350",\n}
\n\n","isPage":false,"text":"\nSigning in and signing up are the same operation; the account is automatically created if it doesn't already exist.\nimport { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'arbitrum-nova'\n})\n \n// Get a sessionHash\nconst sessionHash = await waas.getSessionHash()\n \n// Get an idToken using the social auth provider of your choice\n// (Google, Facebook, Twitter, etc.)\n// Note: remember to pass the sessionHash as a nonce!\n \n// Then sign in with Sequence WaaS\nconst res = await waas.signIn({ idToken }, "MacBook Pro - Chrome")\n \nconsole.log(res)\n{\n "sessionId": "0x63A21cCa14ed7454B9cF6466af422B5c597c6b57",\n "wallet": "0xd6043fe6f06d90ec2cB36cA5CD1B193A8515f350",\n}\nSessions opened with some providers might require a second step in order to be usable for sending transactions.See Email validation.\n","title":"Sign in / Sign Up","titles":["Session Management"]},"434":{"href":"/solutions/wallets/embedded-wallet/examples/manage-sessions#email-sign-in--sign-up","html":"\n

Email sign-in is directly supported by the SDK, as long as the used key has been generated with the email scope. Email logins work similarly to social logins, except that the idToken is generated by the SDK itself.

\n

To open a session using an email, you will need to provide an email for the user. The Embedded Wallet Nitro API will then send an email to the user with a One-Time Password (OTP) that can be used to open a session. This OTP has to be provided to the SDK to obtain an idToken.

\n

Once the idToken is obtained, the session can be opened as usual.

\n
import { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'arbitrum-nova'\n})\n \n// Send validation email to the user with an OTP code\nconst { instance } = await waas.email.initiateAuth({ email })\nconst sessionHash = await sequence.getSessionHash()\n \n// Obtain OTP code from user and pass to finalizeAuth for validation\nconst { idToken } = await waas.email.finalizeAuth({ instance, answer, email, sessionHash })\n \n// Log in using the idToken, as usual\nawait waas.signIn({ idToken })
\n","isPage":false,"text":"\nEmail sign-in is directly supported by the SDK, as long as the used key has been generated with the email scope. Email logins work similarly to social logins, except that the idToken is generated by the SDK itself.\nTo open a session using an email, you will need to provide an email for the user. The Embedded Wallet Nitro API will then send an email to the user with a One-Time Password (OTP) that can be used to open a session. This OTP has to be provided to the SDK to obtain an idToken.\nOnce the idToken is obtained, the session can be opened as usual.\nimport { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'arbitrum-nova'\n})\n \n// Send validation email to the user with an OTP code\nconst { instance } = await waas.email.initiateAuth({ email })\nconst sessionHash = await sequence.getSessionHash()\n \n// Obtain OTP code from user and pass to finalizeAuth for validation\nconst { idToken } = await waas.email.finalizeAuth({ instance, answer, email, sessionHash })\n \n// Log in using the idToken, as usual\nawait waas.signIn({ idToken })\n","title":"Email Sign In / Sign Up","titles":["Session Management","Sign in / Sign Up"]},"435":{"href":"/solutions/wallets/embedded-wallet/examples/manage-sessions#google--apple-auth","html":"\n

Google and Apple auth are directly supported by the SDK. The idToken is obtained from the social auth provider and used to open a session. You can see a sample React application using Google auth below. To see a complete application, see the demo-waas-auth repository. A functional demo is also available here.

\n

Begin with a simple main.tsx file that sets up the WaaS SDK, the router, and the Google OAuth provider.

\n
import { SequenceWaaS } from '@0xsequence/waas'\nimport { GoogleOAuthProvider } from '@react-oauth/google'\nimport { createHashRouter, RouterProvider } from 'react-router-dom'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'arbitrum-nova'\n})\n \nexport const router = createHashRouter([\n  {\n    path: '/login',\n    element: <Login />\n  },\n  {\n    path: '/',\n    element: <App />\n  }\n])\n \nReactDOM.createRoot(document.getElementById('root')!).render(\n  <React.StrictMode>\n      <GoogleOAuthProvider clientId={GOOGLE_CLIENT_ID}>\n        <RouterProvider router={router} />\n      </GoogleOAuthProvider>\n  </React.StrictMode>\n)
\n

The useSessionHash hook is used to obtain a session hash that is used to prevent replay attacks. The sequence.getSessionHash function is used to obtain the session hash, and the sequence.onSessionStateChanged function is used to update the session hash when the session state changes.

\n
import { sequence } from './main'\nimport { useEffect, useState } from "react";\n \nexport function useSessionHash() {\n    const [sessionHash, setSessionHash] = useState("")\n    const [error, setError] = useState<any>(undefined)\n \n    useEffect(() => {\n        const handler = async () => {\n            try {\n                setSessionHash(await sequence.getSessionHash())\n            } catch (error) {\n                console.error(error)\n                setError(error)\n            }\n        }\n        handler()\n        return sequence.onSessionStateChanged(handler)\n    }, [setSessionHash, setError])\n \n    return {\n        sessionHash,\n        error,\n        loading: !!sessionHash,\n    }\n}
\n

To handle the Google login, you can use the GoogleLogin component from the @react-oauth/google package. The handleGoogleLogin function is called when the user successfully logs in.

\n
import { router, sequence } from './main'\nimport { CredentialResponse, GoogleLogin } from '@react-oauth/google'\nimport { useSessionHash } from "./useSessionHash.ts";\n \nfunction Login() {\n  const { sessionHash } = useSessionHash()\n  const [signingIn, setSigningIn] = useState(false)\n \n  useEffect(() => {\n    (async () => {\n      if (await sequence.isSignedIn()) {\n        router.navigate('/')\n      }\n    })()\n  }, [])\n \n  const handleGoogleLogin = async (tokenResponse: CredentialResponse) => {\n    const walletAddress = await sequence.signIn({\n      idToken: tokenResponse.credential!\n    }, "MacBook Pro - Chrome")\n \n    console.log(`Wallet address: ${walletAddress}`)\n    router.navigate('/')\n  }\n \n  return (\n    {!!sessionHash && (<>\n      <GoogleLogin onSuccess={handleGoogleLogin} shape="circle" width={230} nonce={sessionHash} />\n    </>)}\n )\n}\n \nexport default Login
\n","isPage":false,"text":"\nGoogle and Apple auth are directly supported by the SDK. The idToken is obtained from the social auth provider and used to open a session. You can see a sample React application using Google auth below. To see a complete application, see the demo-waas-auth repository. A functional demo is also available here.\nBegin with a simple main.tsx file that sets up the WaaS SDK, the router, and the Google OAuth provider.\nimport { SequenceWaaS } from '@0xsequence/waas'\nimport { GoogleOAuthProvider } from '@react-oauth/google'\nimport { createHashRouter, RouterProvider } from 'react-router-dom'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'arbitrum-nova'\n})\n \nexport const router = createHashRouter([\n {\n path: '/login',\n element: <Login />\n },\n {\n path: '/',\n element: <App />\n }\n])\n \nReactDOM.createRoot(document.getElementById('root')!).render(\n <React.StrictMode>\n <GoogleOAuthProvider clientId={GOOGLE_CLIENT_ID}>\n <RouterProvider router={router} />\n </GoogleOAuthProvider>\n </React.StrictMode>\n)\nThe useSessionHash hook is used to obtain a session hash that is used to prevent replay attacks. The sequence.getSessionHash function is used to obtain the session hash, and the sequence.onSessionStateChanged function is used to update the session hash when the session state changes.\nimport { sequence } from './main'\nimport { useEffect, useState } from "react";\n \nexport function useSessionHash() {\n const [sessionHash, setSessionHash] = useState("")\n const [error, setError] = useState<any>(undefined)\n \n useEffect(() => {\n const handler = async () => {\n try {\n setSessionHash(await sequence.getSessionHash())\n } catch (error) {\n console.error(error)\n setError(error)\n }\n }\n handler()\n return sequence.onSessionStateChanged(handler)\n }, [setSessionHash, setError])\n \n return {\n sessionHash,\n error,\n loading: !!sessionHash,\n }\n}\nTo handle the Google login, you can use the GoogleLogin component from the @react-oauth/google package. The handleGoogleLogin function is called when the user successfully logs in.\nimport { router, sequence } from './main'\nimport { CredentialResponse, GoogleLogin } from '@react-oauth/google'\nimport { useSessionHash } from "./useSessionHash.ts";\n \nfunction Login() {\n const { sessionHash } = useSessionHash()\n const [signingIn, setSigningIn] = useState(false)\n \n useEffect(() => {\n (async () => {\n if (await sequence.isSignedIn()) {\n router.navigate('/')\n }\n })()\n }, [])\n \n const handleGoogleLogin = async (tokenResponse: CredentialResponse) => {\n const walletAddress = await sequence.signIn({\n idToken: tokenResponse.credential!\n }, "MacBook Pro - Chrome")\n \n console.log(`Wallet address: ${walletAddress}`)\n router.navigate('/')\n }\n \n return (\n {!!sessionHash && (<>\n <GoogleLogin onSuccess={handleGoogleLogin} shape="circle" width={230} nonce={sessionHash} />\n </>)}\n )\n}\n \nexport default Login\n","title":"Google / Apple Auth","titles":["Session Management","Sign in / Sign Up"]},"436":{"href":"/solutions/wallets/embedded-wallet/examples/manage-sessions#list-sessions","html":"\n

This function returns a list of sessions for the current user and only includes sessions that are still valid.

\n
import { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'arbitrum-nova'\n})\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome")\n \nconst sessions = await waas.listSessions()\nconsole.log(sessions)
\n
[\n  {\n    "id": "0x574372ff1A0Eede68B5358Cce7bbb93155A9dfe0",\n    "address": "0x574372ff1a0eede68b5358cce7bbb93155a9dfe0",\n    "userId": "42#https://accounts.google.com#109234880945084120673",\n    "projectId": 42,\n    "issuer": "https://accounts.google.com",\n    "subject": "109234880945084120673",\n    "friendlyName": "Pixel 3 - Brave",\n    "createdAt": "2023-11-02T18:22:03.102950917Z",\n    "refreshedAt": "2023-11-02T18:22:03.109787921Z",\n    "expiresAt": "2123-10-09T18:22:03.102951017Z",\n    "isThis": false\n  },\n  {\n    "id": "0x3C4E11E4dbF23B87C14bd75d0Da9C75707392D21",\n    "address": "0x3c4e11e4dbf23b87c14bd75d0da9c75707392d21",\n    "userId": "42#https://accounts.google.com#109234880945084120673",\n    "projectId": 42,\n    "issuer": "https://accounts.google.com",\n    "subject": "109234880945084120673",\n    "friendlyName": "MacBook Pro - Chrome",\n    "createdAt": "2023-11-02T18:50:32.815189174Z",\n    "refreshedAt": "2023-11-02T18:50:32.819722082Z",\n    "expiresAt": "2123-10-09T18:50:32.815189234Z",\n    "isThis": true\n  }\n]
\n","isPage":false,"text":"\nThis function returns a list of sessions for the current user and only includes sessions that are still valid.\nimport { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'arbitrum-nova'\n})\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome")\n \nconst sessions = await waas.listSessions()\nconsole.log(sessions)\n[\n {\n "id": "0x574372ff1A0Eede68B5358Cce7bbb93155A9dfe0",\n "address": "0x574372ff1a0eede68b5358cce7bbb93155a9dfe0",\n "userId": "42#https://accounts.google.com#109234880945084120673",\n "projectId": 42,\n "issuer": "https://accounts.google.com",\n "subject": "109234880945084120673",\n "friendlyName": "Pixel 3 - Brave",\n "createdAt": "2023-11-02T18:22:03.102950917Z",\n "refreshedAt": "2023-11-02T18:22:03.109787921Z",\n "expiresAt": "2123-10-09T18:22:03.102951017Z",\n "isThis": false\n },\n {\n "id": "0x3C4E11E4dbF23B87C14bd75d0Da9C75707392D21",\n "address": "0x3c4e11e4dbf23b87c14bd75d0da9c75707392d21",\n "userId": "42#https://accounts.google.com#109234880945084120673",\n "projectId": 42,\n "issuer": "https://accounts.google.com",\n "subject": "109234880945084120673",\n "friendlyName": "MacBook Pro - Chrome",\n "createdAt": "2023-11-02T18:50:32.815189174Z",\n "refreshedAt": "2023-11-02T18:50:32.819722082Z",\n "expiresAt": "2123-10-09T18:50:32.815189234Z",\n "isThis": true\n }\n]\n","title":"List Sessions","titles":["Session Management"]},"437":{"href":"/solutions/wallets/embedded-wallet/examples/manage-sessions#close-session","html":"\n

A session can be closed using the id of the session. Any session can be closed from any device with an active session.

\n
import { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n  projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n  waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n  network: 'arbitrum-nova'\n})\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome")\n \nconst sessions = await waas.listSessions()\nawait waas.dropSession({ sessionId: sessions[0].id })
","isPage":false,"text":"\nA session can be closed using the id of the session. Any session can be closed from any device with an active session.\nimport { SequenceWaaS } from '@0xsequence/waas'\n \nconst waas = new SequenceWaaS({\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: 'arbitrum-nova'\n})\n \nawait waas.signIn({ idToken }, "MacBook Pro - Chrome")\n \nconst sessions = await waas.listSessions()\nawait waas.dropSession({ sessionId: sessions[0].id })","title":"Close Session","titles":["Session Management"]},"438":{"href":"/solutions/wallets/embedded-wallet/examples/transaction-receipts#transaction-receipts","html":"\n

Any methods that involve sending transactions will return either successful or failed transaction receipts. Failed transaction receipts are generated without executing the transaction.

\n","isPage":true,"text":"\nAny methods that involve sending transactions will return either successful or failed transaction receipts. Failed transaction receipts are generated without executing the transaction.\n","title":"Transaction receipts","titles":[]},"439":{"href":"/solutions/wallets/embedded-wallet/examples/transaction-receipts#successful-transaction-response","html":"\n

Any transaction that is successfully included in a block will return a SentTransactionResponse object. This must be checked for before accessing the transaction hash, using the isSentTransactionResponse type guard.

\n
import { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "arbitrum-nova",\n  }\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n  chainId: 42161,\n  transactions: [\n    {\n      to: "0xD72C236Be524Ec24F72329317e2785E687105B69",\n      value: "0",\n    },\n  ],\n});\n \nif (isSentTransactionResponse(tx)) {\n  console.log(tx);\n}
\n

The relevant fields are:

\n\n

To view the full response object, see the Response payloads section.

\n
{\n  "code": "transactionReceipt",\n  "data": {\n    "txHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n    "metaTxHash": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n    "nativeReceipt": { ... },\n    "receipt": {\n      "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n      "index": 0,\n      "logs": [\n        {\n          "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n          "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n          "topics": [\n            "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n          ]\n        },\n        {\n          "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n          "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n          "topics": [\n            "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n            "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n          ]\n        }\n      ],\n      "receipts": [ ... ],\n      "revertReason": null,\n      "status": "SUCCEEDED"\n    },\n    "request": { ... },\n    "simulations": [ ... ]\n  }\n}
\n","isPage":false,"text":"\nAny transaction that is successfully included in a block will return a SentTransactionResponse object. This must be checked for before accessing the transaction hash, using the isSentTransactionResponse type guard.\nimport { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "arbitrum-nova",\n }\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n chainId: 42161,\n transactions: [\n {\n to: "0xD72C236Be524Ec24F72329317e2785E687105B69",\n value: "0",\n },\n ],\n});\n \nif (isSentTransactionResponse(tx)) {\n console.log(tx);\n}\nThe relevant fields are:\n\ntxHash: The transaction hash of the transaction that was sent to the network.\nreceipt.logs: Logs emitted by the transaction.\nreceipt.status: The status of the transaction. SUCCEEDED or FAILED.\nreceipt.revertReason: If the transaction was executed but reverted, it includes the reason.\n\nTo view the full response object, see the Response payloads section.\n{\n "code": "transactionReceipt",\n "data": {\n "txHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n "metaTxHash": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n "nativeReceipt": { ... },\n "receipt": {\n "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n "index": 0,\n "logs": [\n {\n "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n "topics": [\n "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n ]\n },\n {\n "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n "topics": [\n "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n ]\n }\n ],\n "receipts": [ ... ],\n "revertReason": null,\n "status": "SUCCEEDED"\n },\n "request": { ... },\n "simulations": [ ... ]\n }\n}\n","title":"Successful transaction response","titles":["Transaction receipts"]},"440":{"href":"/solutions/wallets/embedded-wallet/examples/transaction-receipts#failed-transaction-response","html":"\n

An In-Game Wallet will try to catch any failing transactions before they are sent to the network. This is done by simulating the transaction on the network before sending it. If the simulation fails, the transaction will not be sent to the network and a FailedTransactionResponse will be returned.

\n

To view the full response object, see the wallet Response payloads section.

\n
import { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n  {\n    projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n    waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n    network: "arbitrum-nova",\n  }\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n  chainId: 137,\n  transactions: [\n    {\n      // This address always fails on Polygon, give it a try :D\n      to: "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n      value: "0",\n    },\n  ],\n});\n \nif (isSentTransactionResponse(tx)) {\n  // ... This will never be executed\n} else {\n  // tx can only be `SentTransactionResponse` or `FailedTransactionResponse`\n  console.log(tx);\n}
\n
{\n  "code": "transactionFailed",\n  "data": {\n    "error": "This is an error message",\n    "request": {\n      "code": "sendTransaction",\n      "expires": 1699443005,\n      "identifier": "ts-sdk-1699442705965-0x153824576D03629b264683B430bBF9AcEA1d0975",\n      "issued": 1699442705,\n      "network": "137",\n      "transactions": [\n        {\n          "data": "0x",\n          "to": "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n          "type": "transaction",\n          "value": "0x00"\n        }\n      ],\n      "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n    },\n    "simulations": [\n      {\n        "executed": true,\n        "gasLimit": 7908,\n        "gasUsed": 5931,\n        "reason": "This is an error message :)",\n        "result": null,\n        "succeeded": false\n      }\n    ]\n  }\n}
","isPage":false,"text":"\nAn In-Game Wallet will try to catch any failing transactions before they are sent to the network. This is done by simulating the transaction on the network before sending it. If the simulation fails, the transaction will not be sent to the network and a FailedTransactionResponse will be returned.\nTo view the full response object, see the wallet Response payloads section.\nimport { Sequence, isSentTransactionResponse } from "@0xsequence/waas";\n \nconst waas = new SequenceWaaS(\n {\n projectAccessKey: `${process.env.PROJECT_ACCESS_KEY}`,\n waasConfigKey: `${process.env.WAAS_CONFIG_KEY}`,\n network: "arbitrum-nova",\n }\n);\n \nawait waas.signIn({ idToken }, "Session name");\n \nconst tx = await waas.sendTransaction({\n chainId: 137,\n transactions: [\n {\n // This address always fails on Polygon, give it a try :D\n to: "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n value: "0",\n },\n ],\n});\n \nif (isSentTransactionResponse(tx)) {\n // ... This will never be executed\n} else {\n // tx can only be `SentTransactionResponse` or `FailedTransactionResponse`\n console.log(tx);\n}\n{\n "code": "transactionFailed",\n "data": {\n "error": "This is an error message",\n "request": {\n "code": "sendTransaction",\n "expires": 1699443005,\n "identifier": "ts-sdk-1699442705965-0x153824576D03629b264683B430bBF9AcEA1d0975",\n "issued": 1699442705,\n "network": "137",\n "transactions": [\n {\n "data": "0x",\n "to": "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n "type": "transaction",\n "value": "0x00"\n }\n ],\n "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n },\n "simulations": [\n {\n "executed": true,\n "gasLimit": 7908,\n "gasUsed": 5931,\n "reason": "This is an error message :)",\n "result": null,\n "succeeded": false\n }\n ]\n }\n}","title":"Failed transaction response","titles":["Transaction receipts"]},"441":{"href":"/solutions/wallets/embedded-wallet/examples/validation#validation","html":"\n

Users with Auth + Embedded Wallet go through two distinct flows based on the login method:

\n","isPage":true,"text":"\nUsers with Auth + Embedded Wallet go through two distinct flows based on the login method:\n","title":"Validation","titles":[]},"442":{"href":"/solutions/wallets/embedded-wallet/examples/validation#email-login-one-time-code","html":"\n

For users logging in with an email, Amazon Cognito sends a one-time code to validate their identity. This is a trusted method that does not require additional verification.

\n","isPage":false,"text":"\nFor users logging in with an email, Amazon Cognito sends a one-time code to validate their identity. This is a trusted method that does not require additional verification.\n","title":"Email login (one-time code)","titles":["Validation",null]},"443":{"href":"/solutions/wallets/embedded-wallet/examples/validation#social-login","html":"\n

Users who log in via established social auth providers like Google or Facebook don't need additional validation. However, when logging in using a custom provider, we cannot guarantee sufficient protection of user's identity. Due to this, we might require additional verification by asking the user to provide a one-time code we send to their email address.

\n

Please contact Sequence support if you wish to discuss whether your authentication provider can be considered trusted.

\n","isPage":false,"text":"\nUsers who log in via established social auth providers like Google or Facebook don't need additional validation. However, when logging in using a custom provider, we cannot guarantee sufficient protection of user's identity. Due to this, we might require additional verification by asking the user to provide a one-time code we send to their email address.\nPlease contact Sequence support if you wish to discuss whether your authentication provider can be considered trusted.\n","title":"Social login","titles":["Validation",null]},"444":{"href":"/solutions/wallets/embedded-wallet/examples/validation#validation-status","html":"\n

To check the validation status of the current session, use the isSessionValid method. This returns true for email login and trusted social logins and false for custom logins until email validation is complete.

\n
const isValid = await waas.isSessionValid();\nconsole.log(isValid);
\n
true
\n","isPage":false,"text":"\nTo check the validation status of the current session, use the isSessionValid method. This returns true for email login and trusted social logins and false for custom logins until email validation is complete.\nconst isValid = await waas.isSessionValid();\nconsole.log(isValid);\ntrue\n","title":"Validation status","titles":["Validation"]},"445":{"href":"/solutions/wallets/embedded-wallet/examples/validation#trigger-session-validation","html":"\n

Manually trigger a session validation with the validateSession method. This will send a code to the user's email. If validated within 10 minutes, the method returns true; otherwise, it returns false.

\n
const result = await waas.validateSession();
\n
true
\n

Once user receives the code, he can validate the session with the finishValidateSession method that takes the code as an argument. If the code is valid, the method returns true; otherwise, it returns false.

\n
const result = await waas.finishValidateSession("123456");
\n
true
\n","isPage":false,"text":"\nManually trigger a session validation with the validateSession method. This will send a code to the user's email. If validated within 10 minutes, the method returns true; otherwise, it returns false.\nconst result = await waas.validateSession();\ntrue\nOnce user receives the code, he can validate the session with the finishValidateSession method that takes the code as an argument. If the code is valid, the method returns true; otherwise, it returns false.\nconst result = await waas.finishValidateSession("123456");\ntrue\n","title":"Trigger session validation","titles":["Validation","Validation status"]},"446":{"href":"/solutions/wallets/embedded-wallet/examples/validation#onvalidationrequired-callback","html":"\n

The onValidationRequired callback is triggered when a session validation is required. This can happen when a user tries to perform an action that requires validation, such as sending a transaction or signing a message. It determines whether the session validation should be triggered or not. If the callback returns true, the session validation is triggered. If it returns false, the action is cancelled.

\n
const tx = await waas.sendERC20({\n  validation: {\n    onValidationRequired: () => true,\n  },\n  chainId: 42161,\n  token: "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI\n  to: "0x27CabC9700EE6Db2797b6AC1e1eCe81C72A2cD8D", // Recipient\n  value: "200000000000000000000", // 200 DAI\n});
\n","isPage":false,"text":"\nThe onValidationRequired callback is triggered when a session validation is required. This can happen when a user tries to perform an action that requires validation, such as sending a transaction or signing a message. It determines whether the session validation should be triggered or not. If the callback returns true, the session validation is triggered. If it returns false, the action is cancelled.\nconst tx = await waas.sendERC20({\n validation: {\n onValidationRequired: () => true,\n },\n chainId: 42161,\n token: "0x6b175474e89094c44da98b954eedeac495271d0f", // DAI\n to: "0x27CabC9700EE6Db2797b6AC1e1eCe81C72A2cD8D", // Recipient\n value: "200000000000000000000", // 200 DAI\n});\n","title":"onValidationRequired callback","titles":["Validation","Validation status","Trigger session validation"]},"447":{"href":"/solutions/wallets/embedded-wallet/examples/validation#listen-for-session-validations","html":"\n

Events like transaction sends may silently prompt session validation. Use the onValidationRequired hook to catch such instances.

\n
waas.onValidationRequired(() => {\n  console.log("Session has been triggered for validation");\n});\n \nawait waas.sendTransaction({ chainId: 1 }, { to: "0x...", value: "1" });
\n
Session has been triggered for validation
\n","isPage":false,"text":"\nEvents like transaction sends may silently prompt session validation. Use the onValidationRequired hook to catch such instances.\nwaas.onValidationRequired(() => {\n console.log("Session has been triggered for validation");\n});\n \nawait waas.sendTransaction({ chainId: 1 }, { to: "0x...", value: "1" });\nSession has been triggered for validation\n","title":"Listen for session validations","titles":["Validation","Validation status"]},"448":{"href":"/solutions/wallets/embedded-wallet/examples/validation#automatic-session-validation","html":"\n

Session validation is automatic when certain actions requiring validation are performed. This can be managed using the onValidationRequired hook.

\n
const tx = await waas.sendTransaction({\n  chainId: 1,\n  validation: {\n    onValidationRequired: () => {\n      console.log("Session has been triggered for validation");\n      return true;\n    },\n  },\n  to: "0x061150e5574716DBb1a2cdf54b3DcE9F94395f65",\n  value: "1",\n});
\n

By returning true or false from the onValidationRequired hook, you either continue or cancel the action, respectively.

","isPage":false,"text":"\nSession validation is automatic when certain actions requiring validation are performed. This can be managed using the onValidationRequired hook.\nconst tx = await waas.sendTransaction({\n chainId: 1,\n validation: {\n onValidationRequired: () => {\n console.log("Session has been triggered for validation");\n return true;\n },\n },\n to: "0x061150e5574716DBb1a2cdf54b3DcE9F94395f65",\n value: "1",\n});\nBy returning true or false from the onValidationRequired hook, you either continue or cancel the action, respectively.","title":"Automatic session validation","titles":["Validation"]},"449":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#action-payloads","html":"\n

Every Sequence Embedded Wallet action that involves a write operation makes use of a payload. Payloads are JSON objects that contain all information about the intent of the action, alongside with the signature of the user that is performing the action.

\n

Payloads are generated with the Embedded Wallet SDK and should be sent to the Embedded Wallet API in order to complete the action.

\n\n","isPage":true,"text":"\nEvery Sequence Embedded Wallet action that involves a write operation makes use of a payload. Payloads are JSON objects that contain all information about the intent of the action, alongside with the signature of the user that is performing the action.\nPayloads are generated with the Embedded Wallet SDK and should be sent to the Embedded Wallet API in order to complete the action.\nCalls to the Embedded Wallet API are authenticated with the Embedded Wallet API key, including calls to the /sendPayload endpoint.The Embedded Wallet API key is a secret key that should be kept safe and should never be shared with anyone, nor stored in a client-side application.\n","title":"Action payloads","titles":[]},"450":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#payload-structure","html":"\n

It's important to notice that integrating Embedded Wallet does not require you to manually manipulate the contents of the payload; yet they are strictly defined, and you can use them if you need to.

\n

The payload structure is as follows:

\n
NameTypeDescriptionOptional
versionstringThe version of the SDK that generated the payloadNo
* packetobjectContents, defined by each payload typeNo
signaturessignature[]Payload signatures by existing sessionsYes
packet.codestringIdentifier of the payload typeNo
packet.issuednumberTimestamp of when the payload was issued, in secondsNo
packet.expiresnumberTimestamp of when the payload will expire, in secondsNo
\n

* packet must be organized such that its fields (in JSON structure) appear alphabetically by name.

\n
\n

The wallet is optional when openning a new session

\n
\n","isPage":false,"text":"\nIt's important to notice that integrating Embedded Wallet does not require you to manually manipulate the contents of the payload; yet they are strictly defined, and you can use them if you need to.\nThe payload structure is as follows:\nNameTypeDescriptionOptionalversionstringThe version of the SDK that generated the payloadNo* packetobjectContents, defined by each payload typeNosignaturessignature[]Payload signatures by existing sessionsYespacket.codestringIdentifier of the payload typeNopacket.issuednumberTimestamp of when the payload was issued, in secondsNopacket.expiresnumberTimestamp of when the payload will expire, in secondsNo\n* packet must be organized such that its fields (in JSON structure) appear alphabetically by name.\n\nThe wallet is optional when openning a new session\n\n","title":"Payload structure","titles":["Action payloads"]},"451":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#signature-type","html":"\n
NameTypeDescriptionOptional
sessionstringIdentifier of the signing sessionNo
* signaturestringSignature of the session for the given payloadNo
\n

* signature should be an EIP-191 signature. See https://eips.ethereum.org/EIPS/eip-191

\n
{\n  "version": "1.0.0",\n  "packet": {\n    "code": "signMessage",\n    "expires": 1600086400,\n    "issued": 1600000000,\n    "message": "Join game: #284892",\n    "network": "137",\n    "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8"\n  },\n  "signatures": [{\n    "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n    "signature": "0x4b0fc0c7d42566958d60f92115ab95167c837c891e2f4fa62a75bfed30d86af7291051fe5c88985269286548a42bed5b70bb16588e48998206a2e7a547f527d101"\n  }]\n}
\n","isPage":false,"text":"\nNameTypeDescriptionOptionalsessionstringIdentifier of the signing sessionNo* signaturestringSignature of the session for the given payloadNo\n* signature should be an EIP-191 signature. See https://eips.ethereum.org/EIPS/eip-191\n{\n "version": "1.0.0",\n "packet": {\n "code": "signMessage",\n "expires": 1600086400,\n "issued": 1600000000,\n "message": "Join game: #284892",\n "network": "137",\n "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8"\n },\n "signatures": [{\n "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n "signature": "0x4b0fc0c7d42566958d60f92115ab95167c837c891e2f4fa62a75bfed30d86af7291051fe5c88985269286548a42bed5b70bb16588e48998206a2e7a547f527d101"\n }]\n}\n","title":"signature type","titles":["Action payloads","Payload structure",null]},"452":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#open-session-payload","html":"\n

This payload is generated when openning a new client-side session on the Embedded Wallet SDK. It contains the "proof" that will be used to authenticate the user, and the session data to associate to it.

\n
NameTypeDescriptionOptional
codestringThe "code" of the payload (openSession).No
sessionstringThe unique identifier for the sessionNo
proofobjectContains authentication details like JWT and emailNo
proof.idTokenstringOAuth2 id tokenYes
proof.emailstringUser's email addressYes
\n

Notice that either idToken, email or a valid signature MUST be present. If email is provided, the Embedded Wallet will send an email on the user's first transaction with this session, asking them to confirm it.

\n\n
{\n  "version": "1.0.0",\n  "packet": {\n    "code": "openSession",\n    "expires": 1600086400,\n    "issued": 1600000000,\n    "proof": {\n      "idToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwOi8vbXktZG9tYWluLmF1dGgwLmNvbSIsInN1YiI6ImF1dGgwfDEyMzQ1NiIsImF1ZCI6IjEyMzRhYmNkZWYiLCJleHAiOjEzMTEyODE5NzAsImlhdCI6MTMxMTI4MDk3MCwibmFtZSI6IkphbmUgRG9lIiwiZ2l2ZW5fbmFtZSI6IkphbmUiLCJmYW1pbHlfbmFtZSI6IkRvZSJ9.bql-jxlG9B_bielkqOnjTY9Di9FillFb6IMQINXoYsw",\n      "email": "user@email.com"\n    },\n    "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696"\n  }\n}
\n","isPage":false,"text":"\nThis payload is generated when openning a new client-side session on the Embedded Wallet SDK. It contains the "proof" that will be used to authenticate the user, and the session data to associate to it.\nNameTypeDescriptionOptionalcodestringThe "code" of the payload (openSession).NosessionstringThe unique identifier for the sessionNoproofobjectContains authentication details like JWT and emailNoproof.idTokenstringOAuth2 id tokenYesproof.emailstringUser's email addressYes\nNotice that either idToken, email or a valid signature MUST be present. If email is provided, the Embedded Wallet will send an email on the user's first transaction with this session, asking them to confirm it.\nThe wallet parameter is optional ONLY for this payload. If passed it will enforce that the opened session matches the requested wallet.\n{\n "version": "1.0.0",\n "packet": {\n "code": "openSession",\n "expires": 1600086400,\n "issued": 1600000000,\n "proof": {\n "idToken": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwOi8vbXktZG9tYWluLmF1dGgwLmNvbSIsInN1YiI6ImF1dGgwfDEyMzQ1NiIsImF1ZCI6IjEyMzRhYmNkZWYiLCJleHAiOjEzMTEyODE5NzAsImlhdCI6MTMxMTI4MDk3MCwibmFtZSI6IkphbmUgRG9lIiwiZ2l2ZW5fbmFtZSI6IkphbmUiLCJmYW1pbHlfbmFtZSI6IkRvZSJ9.bql-jxlG9B_bielkqOnjTY9Di9FillFb6IMQINXoYsw",\n "email": "user@email.com"\n },\n "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696"\n }\n}\n","title":"Open session payload","titles":["Action payloads","Payload structure"]},"453":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#sign-message-payload","html":"\n

This payload is generated when signMessage is called on the SDK.

\n
NameTypeDescriptionOptional
codestringThe "code" of the payload (signMessage).No
walletstringAddress of the wallet.No
networkstringNetwork on which to send the transactions.No
messagestringMessage to be signed.No
\n
{\n  "version": "1.0.0",\n  "packet": {\n    "code": "signMessage",\n    "expires": 1600086400,\n    "issued": 1600000000,\n    "message": "Join game: #284892"\n    "network": "1",\n    "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8",\n  },\n  "signatures": [{\n    "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n    "signature": "0x4f9555c73908b6a5b61e0a744cb4e00fce7b20743d5799e4cb1774081bc6b2ec192c740e50f1adec84605636e09c9cdf4d2f6629f9ce64d8d0f3ae10305ef90400"\n  }]\n}
\n","isPage":false,"text":"\nThis payload is generated when signMessage is called on the SDK.\nNameTypeDescriptionOptionalcodestringThe "code" of the payload (signMessage).NowalletstringAddress of the wallet.NonetworkstringNetwork on which to send the transactions.NomessagestringMessage to be signed.No\n{\n "version": "1.0.0",\n "packet": {\n "code": "signMessage",\n "expires": 1600086400,\n "issued": 1600000000,\n "message": "Join game: #284892"\n "network": "1",\n "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8",\n },\n "signatures": [{\n "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n "signature": "0x4f9555c73908b6a5b61e0a744cb4e00fce7b20743d5799e4cb1774081bc6b2ec192c740e50f1adec84605636e09c9cdf4d2f6629f9ce64d8d0f3ae10305ef90400"\n }]\n}\n","title":"Sign message payload","titles":["Action payloads","Payload structure"]},"454":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#send-transaction-payload","html":"\n

This payload is generated when sendTransaction is called on the SDK.

\n
NameTypeDescriptionOptional
codestringThe "code" of the payload (sendTransaction).No
identifierstringUnique identifier for the transactionNo
walletstringAddress of the wallet.No
networkstringNetwork on which to send the transactions.No
transactions(transaction | erc20send | erc721send | erc1155send | delayedEncode)[]Array of transaction objects.No
\n","isPage":false,"text":"\nThis payload is generated when sendTransaction is called on the SDK.\nNameTypeDescriptionOptionalcodestringThe "code" of the payload (sendTransaction).NoidentifierstringUnique identifier for the transactionNowalletstringAddress of the wallet.NonetworkstringNetwork on which to send the transactions.Notransactions(transaction | erc20send | erc721send | erc1155send | delayedEncode)[]Array of transaction objects.No\n","title":"Send transaction payload","titles":["Action payloads","Payload structure"]},"455":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#raw-transaction","html":"\n
NameTypeDescriptionOptional
typestringTransaction type, should be "transaction"No
tostringThe recipient Ethereum addressNo
valuestringThe value to be transferredYes
datastringAdditional data for the transactionYes
\n

Notice that transactions with to === wallet are strictly forbidden, and will get rejected.

\n","isPage":false,"text":"\nNameTypeDescriptionOptionaltypestringTransaction type, should be "transaction"NotostringThe recipient Ethereum addressNovaluestringThe value to be transferredYesdatastringAdditional data for the transactionYes\nNotice that transactions with to === wallet are strictly forbidden, and will get rejected.\n","title":"Raw transaction","titles":["Action payloads","Payload structure","Send transaction payload"]},"456":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#senderc20","html":"\n
NameTypeDescriptionOptional
typestringTransaction type, should be "erc20send"No
tokenstringThe ERC20 token contract addressNo
tostringThe recipient Ethereum addressNo
valuestringAmount of tokens to sendNo
\n","isPage":false,"text":"\nNameTypeDescriptionOptionaltypestringTransaction type, should be "erc20send"NotokenstringThe ERC20 token contract addressNotostringThe recipient Ethereum addressNovaluestringAmount of tokens to sendNo\n","title":"sendERC20","titles":["Action payloads","Payload structure","Send transaction payload"]},"457":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#senderc721","html":"\n
NameTypeDescriptionOptional
typestringTransaction type, should be "erc721send"No
tokenstringThe ERC721 token contract addressNo
tostringThe recipient Ethereum addressNo
idstringToken ID to sendNo
safeboolWhether to use the safeTransferFrom functionYes
datastringAdditional data for the transactionYes
\n

Notice that data can only be used if safe === true.

\n","isPage":false,"text":"\nNameTypeDescriptionOptionaltypestringTransaction type, should be "erc721send"NotokenstringThe ERC721 token contract addressNotostringThe recipient Ethereum addressNoidstringToken ID to sendNosafeboolWhether to use the safeTransferFrom functionYesdatastringAdditional data for the transactionYes\nNotice that data can only be used if safe === true.\n","title":"sendERC721","titles":["Action payloads","Payload structure","Send transaction payload"]},"458":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#senderc1155","html":"\n
NameTypeDescriptionOptional
typestringTransaction type, should be "erc1155send"No
tokenstringThe ERC1155 token contract addressNo
tostringThe recipient Ethereum addressNo
valsobject[]Array of objects with id and amountNo
vals[].idstringThe ID of the tokenNo
vals[].amountstringAmount of tokens with this ID to sendNo
datastringAdditional data for the transactionYes
\n","isPage":false,"text":"\nNameTypeDescriptionOptionaltypestringTransaction type, should be "erc1155send"NotokenstringThe ERC1155 token contract addressNotostringThe recipient Ethereum addressNovalsobject[]Array of objects with id and amountNovals[].idstringThe ID of the tokenNovals[].amountstringAmount of tokens with this ID to sendNodatastringAdditional data for the transactionYes\n","title":"sendERC1155","titles":["Action payloads","Payload structure","Send transaction payload"]},"459":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#delayedencode","html":"\n

Delayed encode transactions have their payload data not encoded on the client, it instead is left to be encoded by the Embedded Wallet API. This reduces the burden on the client, and makes it easier to integrate in environments with limited libraries.

\n
TypeFieldData TypeDescription
DelayedEncodeDataabistringThe ABI (Application Binary Interface) for the contract.
funcstringThe function to call within the smart contract.
args(string | DelayedEncodeData)[] | { [key: string]: (string | DelayedEncodeData) }The arguments to pass to the function. Can be an array or an object.
DelayedEncodeSubpackettype'delayedEncode'The type of the subpacket, in this case, it's 'delayedEncode'.
tostringThe address to which the transaction is sent.
valuestringThe value being sent in the transaction, usually in Ether for Ethereum.
dataDelayedEncodeDataThe data payload, containing the ABI, function to call, and arguments.
\n

Hope this helps!

\n
{\n  "version": "1.0.0",\n  "packet": {\n    "code": "sendTransaction",\n    "expires": 1600086400,\n    "identifier": "tx-id1-1600000000",\n    "issued": 1600000000,\n    "network": "137",\n    "transactions": [\n      {\n        "data": "0x3251ba32",\n        "to": "0x479F6a5b0C1728947318714963a583C56A78366A",\n        "type": "transaction",\n        "value": "39381"\n      },\n      {\n        "to": "0x7b1Bd3474D789e18e2E329E2c53F819B6E687b4A",\n        "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",\n        "type": "erc20send",\n        "value": "1000"\n      },\n      {\n        "data": "0x112233",\n        "id": "7",\n        "safe": true,\n        "to": "0x17fFA2d95b58228e1ECb0C6Ac25A6EfD20BA08E4",\n        "token": "0xF87E31492Faf9A91B02Ee0dEAAd50d51d56D5d4d",\n        "type": "erc721send"\n      },\n      {\n        "data": "0x223344",\n        "to": "0x91E8aC543C5fEDf9F3Ef8b9dA1500dB84305681F",\n        "token": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n        "type": "erc1155send",\n        "vals": [{\n          "amount": "5",\n          "id": "2"\n        }, {\n          "amount": "1",\n          "id": "500"\n        }]\n      },\n\t\t\t{\n\t\t\t\t"data": {\n\t\t\t\t\t"abi": "[{\\"inputs\\":[{\\"internalType\\":\\"bytes32\\",\\"name\\":\\"_orderId\\",\\"type\\":\\"bytes32\\"},{\\"internalType\\":\\"uint256\\",\\"name\\":\\"_maxCost\\",\\"type\\":\\"uint256\\"},{\\"internalType\\":\\"address\\",\\"name\\":\\"_fees\\",\\"type\\":\\"address\\"},{\\"internalType\\":\\"bytes\\",\\"name\\":\\"_data\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"fillOrKillOrder\\",\\"outputs\\":[],\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"inputs\\":[],\\"name\\":\\"otherMethods\\",\\"outputs\\":[],\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"}]",\n\t\t\t\t\t"args": [\n\t\t\t\t\t\t"0x6bd55a2877890bd58871eefe886770a7734077a74981910a75d7b1f044b5bf28",\n\t\t\t\t\t\t"1000000000000000000",\n\t\t\t\t\t\t"[\\"0x095aE61E8207C7856eA273235D6BAdb69d815F5e\\", \\"0xC9D9B33231d24dd8cC53fDD64F7ABdd156f2a7E2\\"]",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t"abi": "notExpired(uint256,string)",\n\t\t\t\t\t\t\t"args": [\n\t\t\t\t\t\t\t\t"1600000000",\n\t\t\t\t\t\t\t\t"Nov 1st, 2020"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t"func": "notExpired"\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t"func": "fillOrKillOrder"\n\t\t\t\t},\n        "to": "0x140d72763D1ce39Ad4E2e73EC6e8FC53E5b73B64",\n\t\t\t\t"type": "delayedEncode",\n        "value": "0"\n\t\t\t}\n    ],\n    "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8"\n  },\n  "signatures": [{\n    "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n    "signature": "0x4f9555c73908b6a5b61e0a744cb4e00fce7b20743d5799e4cb1774081bc6b2ec192c740e50f1adec84605636e09c9cdf4d2f6629f9ce64d8d0f3ae10305ef90400"\n  }]\n}
\n","isPage":false,"text":"\nDelayed encode transactions have their payload data not encoded on the client, it instead is left to be encoded by the Embedded Wallet API. This reduces the burden on the client, and makes it easier to integrate in environments with limited libraries.\nTypeFieldData TypeDescriptionDelayedEncodeDataabistringThe ABI (Application Binary Interface) for the contract.funcstringThe function to call within the smart contract.args(string | DelayedEncodeData)[] | { [key: string]: (string | DelayedEncodeData) }The arguments to pass to the function. Can be an array or an object.DelayedEncodeSubpackettype'delayedEncode'The type of the subpacket, in this case, it's 'delayedEncode'.tostringThe address to which the transaction is sent.valuestringThe value being sent in the transaction, usually in Ether for Ethereum.dataDelayedEncodeDataThe data payload, containing the ABI, function to call, and arguments.\nHope this helps!\n{\n "version": "1.0.0",\n "packet": {\n "code": "sendTransaction",\n "expires": 1600086400,\n "identifier": "tx-id1-1600000000",\n "issued": 1600000000,\n "network": "137",\n "transactions": [\n {\n "data": "0x3251ba32",\n "to": "0x479F6a5b0C1728947318714963a583C56A78366A",\n "type": "transaction",\n "value": "39381"\n },\n {\n "to": "0x7b1Bd3474D789e18e2E329E2c53F819B6E687b4A",\n "token": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",\n "type": "erc20send",\n "value": "1000"\n },\n {\n "data": "0x112233",\n "id": "7",\n "safe": true,\n "to": "0x17fFA2d95b58228e1ECb0C6Ac25A6EfD20BA08E4",\n "token": "0xF87E31492Faf9A91B02Ee0dEAAd50d51d56D5d4d",\n "type": "erc721send"\n },\n {\n "data": "0x223344",\n "to": "0x91E8aC543C5fEDf9F3Ef8b9dA1500dB84305681F",\n "token": "0x631998e91476da5b870d741192fc5cbc55f5a52e",\n "type": "erc1155send",\n "vals": [{\n "amount": "5",\n "id": "2"\n }, {\n "amount": "1",\n "id": "500"\n }]\n },\n\t\t\t{\n\t\t\t\t"data": {\n\t\t\t\t\t"abi": "[{\\"inputs\\":[{\\"internalType\\":\\"bytes32\\",\\"name\\":\\"_orderId\\",\\"type\\":\\"bytes32\\"},{\\"internalType\\":\\"uint256\\",\\"name\\":\\"_maxCost\\",\\"type\\":\\"uint256\\"},{\\"internalType\\":\\"address\\",\\"name\\":\\"_fees\\",\\"type\\":\\"address\\"},{\\"internalType\\":\\"bytes\\",\\"name\\":\\"_data\\",\\"type\\":\\"bytes\\"}],\\"name\\":\\"fillOrKillOrder\\",\\"outputs\\":[],\\"stateMutability\\":\\"view\\",\\"type\\":\\"function\\"},{\\"inputs\\":[],\\"name\\":\\"otherMethods\\",\\"outputs\\":[],\\"stateMutability\\":\\"nonpayable\\",\\"type\\":\\"function\\"}]",\n\t\t\t\t\t"args": [\n\t\t\t\t\t\t"0x6bd55a2877890bd58871eefe886770a7734077a74981910a75d7b1f044b5bf28",\n\t\t\t\t\t\t"1000000000000000000",\n\t\t\t\t\t\t"[\\"0x095aE61E8207C7856eA273235D6BAdb69d815F5e\\", \\"0xC9D9B33231d24dd8cC53fDD64F7ABdd156f2a7E2\\"]",\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t"abi": "notExpired(uint256,string)",\n\t\t\t\t\t\t\t"args": [\n\t\t\t\t\t\t\t\t"1600000000",\n\t\t\t\t\t\t\t\t"Nov 1st, 2020"\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t"func": "notExpired"\n\t\t\t\t\t\t}\n\t\t\t\t\t],\n\t\t\t\t\t"func": "fillOrKillOrder"\n\t\t\t\t},\n "to": "0x140d72763D1ce39Ad4E2e73EC6e8FC53E5b73B64",\n\t\t\t\t"type": "delayedEncode",\n "value": "0"\n\t\t\t}\n ],\n "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8"\n },\n "signatures": [{\n "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n "signature": "0x4f9555c73908b6a5b61e0a744cb4e00fce7b20743d5799e4cb1774081bc6b2ec192c740e50f1adec84605636e09c9cdf4d2f6629f9ce64d8d0f3ae10305ef90400"\n }]\n}\n","title":"delayedEncode","titles":["Action payloads","Payload structure","Send transaction payload"]},"460":{"href":"/solutions/wallets/embedded-wallet/implementation-details/action-payloads#close-session-payload","html":"\n

This payload is generated when the client requests clossing a given session. Notice that the client MAY close the current session, or some other session.

\n
NameTypeDescriptionOptional
codestringThe "code" of the payload (closeSession).No
walletstringAddress of the wallet.No
sessionstringIdentifier for the session to be closedNo
\n
{\n  "version": "1.0.0",\n  "packet": {\n    "code": "closeSession",\n    "expires": 1600086400,\n    "issued": 1600000000,\n    "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n    "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8"\n  },\n  "signatures": [{\n    "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n    "signature": "0x4f9555c73908b6a5b61e0a744cb4e00fce7b20743d5799e4cb1774081bc6b2ec192c740e50f1adec84605636e09c9cdf4d2f6629f9ce64d8d0f3ae10305ef90400"\n  }]\n}
","isPage":false,"text":"\nThis payload is generated when the client requests clossing a given session. Notice that the client MAY close the current session, or some other session.\nNameTypeDescriptionOptionalcodestringThe "code" of the payload (closeSession).NowalletstringAddress of the wallet.NosessionstringIdentifier for the session to be closedNo\n{\n "version": "1.0.0",\n "packet": {\n "code": "closeSession",\n "expires": 1600086400,\n "issued": 1600000000,\n "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n "wallet": "0xBc5F07A5852fdF3DBd57A76835109220D0ADd8E8"\n },\n "signatures": [{\n "session": "0xCF67BCbD9D5DFD373b03f4fc8143e1c6744B5696",\n "signature": "0x4f9555c73908b6a5b61e0a744cb4e00fce7b20743d5799e4cb1774081bc6b2ec192c740e50f1adec84605636e09c9cdf4d2f6629f9ce64d8d0f3ae10305ef90400"\n }]\n}","title":"Close session payload","titles":["Action payloads","Payload structure"]},"461":{"href":"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification#enclave-verification","html":"\n

The security of an WaaS enclave depends on being able to independently verify the integrity of the code that powers it.

\n

You have two options when it comes to verifying the integrity of a running enclave depending on your risk tolerance and technical means.

\n","isPage":true,"text":"\nThe security of an WaaS enclave depends on being able to independently verify the integrity of the code that powers it.\nYou have two options when it comes to verifying the integrity of a running enclave depending on your risk tolerance and technical means.\n","title":"Enclave verification","titles":[]},"462":{"href":"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification#the-easy-way","html":"\n","isPage":false,"text":"\n","title":"The easy way","titles":["Enclave verification"]},"463":{"href":"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification#prerequisites","html":"\n

The verification procedure will currently only work on Linux or macOS systems. Additionally, you need to have a recent versions of the following tools installed and configured locally:

\n\n","isPage":false,"text":"\nThe verification procedure will currently only work on Linux or macOS systems. Additionally, you need to have a recent versions of the following tools installed and configured locally:\n\nDocker\ngit\nmake\n\n","title":"Prerequisites","titles":["Enclave verification","The easy way"]},"464":{"href":"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification#find-out-the-pcr0","html":"\n

Open the following page in the browser or through curl: https://waas.sequence.app/status.

\n

Note the values of ver and pcr0 - these will be needed later.

\n

Sample output might look like:

\n
{\n  "healthOK": true,\n  "startTime": "2024-04-08T17:06:20.177514099Z",\n  "uptime": 167168,\n  "ver": "v1.1.1",\n  "pcr0": "77541a3d09cdf2728417c1537d190be0998cc84f8aec95a4f1e823c91a007d97f276c2453be7f653fd73fb862b42fcee"\n}
\n","isPage":false,"text":"\nOpen the following page in the browser or through curl: https://waas.sequence.app/status.\nNote the values of ver and pcr0 - these will be needed later.\nSample output might look like:\n{\n "healthOK": true,\n "startTime": "2024-04-08T17:06:20.177514099Z",\n "uptime": 167168,\n "ver": "v1.1.1",\n "pcr0": "77541a3d09cdf2728417c1537d190be0998cc84f8aec95a4f1e823c91a007d97f276c2453be7f653fd73fb862b42fcee"\n}\n","title":"Find out the PCR0","titles":["Enclave verification","The easy way"]},"465":{"href":"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification#build-the-enclave-file","html":"\n
    \n
  1. Clone the repository locally, substituting v1.1.1 with the value of ver from the previous step:
  2. \n
\n
git clone -b v1.1.1 https://github.com/0xsequence/waas-authenticator.git\ncd waas-authenticator
\n
    \n
  1. Run the following command, again substituting the version as before:
  2. \n
\n
make VERSION=v1.1.1 eif
\n
    \n
  1. Compare the output of the command with the previously noted PCR0 value, for example:
  2. \n
\n
Output written into /out/waas-auth.v1.1.1.eif\nBootMeasurement: Sha384 { ... }: {"HashAlgorithm": "Sha384 { ... }", "PCR0": "77541a3d09cdf2728417c1537d190be0998cc84f8aec95a4f1e823c91a007d97f276c2453be7f653fd73fb862b42fcee", "PCR1": "b7ada9ee8a3fa0a2c74c23ddd04a58f0b095d0465327b2d8461b9b81bcbc7236563ff0326c8614fe9205669636955199", "PCR2": "365294f408bcc5913b44110544bb611255d05666f89fd182900330bc117744fa563c2afcf74808b719ac7a29492099c6"}\nSHA256 checksum:\n3843b48b32b98fa311cbcd1604c0c6931f03c75075212e8bb4c06d02a3d53509  waas-auth.v1.1.1.eif
\n

Please note that the checksum might differ between runs as it's only used to verify the integrity of the file. However, the PCR0 for the same code will always be the same, as can be seen in the example above.

\n","isPage":false,"text":"\n\nClone the repository locally, substituting v1.1.1 with the value of ver from the previous step:\n\ngit clone -b v1.1.1 https://github.com/0xsequence/waas-authenticator.git\ncd waas-authenticator\n\nRun the following command, again substituting the version as before:\n\nmake VERSION=v1.1.1 eif\n\nCompare the output of the command with the previously noted PCR0 value, for example:\n\nOutput written into /out/waas-auth.v1.1.1.eif\nBootMeasurement: Sha384 { ... }: {"HashAlgorithm": "Sha384 { ... }", "PCR0": "77541a3d09cdf2728417c1537d190be0998cc84f8aec95a4f1e823c91a007d97f276c2453be7f653fd73fb862b42fcee", "PCR1": "b7ada9ee8a3fa0a2c74c23ddd04a58f0b095d0465327b2d8461b9b81bcbc7236563ff0326c8614fe9205669636955199", "PCR2": "365294f408bcc5913b44110544bb611255d05666f89fd182900330bc117744fa563c2afcf74808b719ac7a29492099c6"}\nSHA256 checksum:\n3843b48b32b98fa311cbcd1604c0c6931f03c75075212e8bb4c06d02a3d53509 waas-auth.v1.1.1.eif\nPlease note that the checksum might differ between runs as it's only used to verify the integrity of the file. However, the PCR0 for the same code will always be the same, as can be seen in the example above.\n","title":"Build the enclave file","titles":["Enclave verification","The easy way"]},"466":{"href":"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification#the-hard-way","html":"\n

The above lets us compare the PCR0 of the built enclave file with the "live" enclave. But it's not foolproof. You might notice that such a simple comparison of two values is not real proof. After all, the enclave might have been tampered with and what we see is make believe. Indeed, the PCR0 values for each release are publicly available.

\n

This is where cryptographic attestation comes in. While we haven't yet published tools that would do the validation, it can be performed using this great guide by AWS.

\n

Every enclave request returns the attestation document in a Base64-encoded format in the X-Attestation-Document response header. A request might optionally include a X-Attestation-Nonce header containing a value that will be signed and included in the attestation document as well.

\n

For example, you can get the attestation document by running:

\n
curl -si https://waas.sequence.app/health -H X-Attestation-Nonce:0123456789abcdef | grep x-attestation-document
","isPage":false,"text":"\nThe above lets us compare the PCR0 of the built enclave file with the "live" enclave. But it's not foolproof. You might notice that such a simple comparison of two values is not real proof. After all, the enclave might have been tampered with and what we see is make believe. Indeed, the PCR0 values for each release are publicly available.\nThis is where cryptographic attestation comes in. While we haven't yet published tools that would do the validation, it can be performed using this great guide by AWS.\nEvery enclave request returns the attestation document in a Base64-encoded format in the X-Attestation-Document response header. A request might optionally include a X-Attestation-Nonce header containing a value that will be signed and included in the attestation document as well.\nFor example, you can get the attestation document by running:\ncurl -si https://waas.sequence.app/health -H X-Attestation-Nonce:0123456789abcdef | grep x-attestation-document","title":"The hard way","titles":["Enclave verification"]},"467":{"href":"/solutions/wallets/embedded-wallet/implementation-details/intents#intents","html":"\n

All user interactions with their account, sessions and wallet are performed through actions called "intents." This page provides details on how they work internally. While it will further your understanding of the entire system as a whole, it is not required as the official SDKs handle all the complexity transparently.

\n","isPage":true,"text":"\nAll user interactions with their account, sessions and wallet are performed through actions called "intents." This page provides details on how they work internally. While it will further your understanding of the entire system as a whole, it is not required as the official SDKs handle all the complexity transparently.\n","title":"Intents","titles":[]},"468":{"href":"/solutions/wallets/embedded-wallet/implementation-details/intents#what-are-they","html":"\n

At a high level an intent is simply a JSON object specifying the action the user intents to perform and signed using their session key. For example, to sign a message, the client would send the following intent to the WaaS API:

\n
{\n    "version": "0.0.0",\n    "issuedAt": 1712775116,\n    "expiresAt": 1712775416,\n    "name": "signMessage",\n    "data": {\n      "wallet": "0x7B7D7BA79542584f9AeF539F6696c070a4e1Ced6",\n      "network": "1",\n      "message": "0x48656c6c6f2c20686176652061206e69636520646179"\n    },\n    "signatures": [\n      {\n        "sessionId": "0x01047de46debeeb83e1270b80ae65996ea64ad2c033e330cfffe9b725bf078423140124dce0cfe0cab9a61b385ca74fe77cd5e8a7147bfd87052f334cfbadc45c79a",\n        "signature": "0x28ec6ddcdbc0987a99dde19792ff0c9be69ad2be873fb9351353171b74d2df3380f0ffcae2b8cb37a0659e374859420500b4399a2aab0209ee7919aaea575ac7"\n      }\n    ]\n}
\n

Let's take a closer look at the intent anatomy, starting from the bottom.

\n","isPage":false,"text":"\nAt a high level an intent is simply a JSON object specifying the action the user intents to perform and signed using their session key. For example, to sign a message, the client would send the following intent to the WaaS API:\n{\n "version": "0.0.0",\n "issuedAt": 1712775116,\n "expiresAt": 1712775416,\n "name": "signMessage",\n "data": {\n "wallet": "0x7B7D7BA79542584f9AeF539F6696c070a4e1Ced6",\n "network": "1",\n "message": "0x48656c6c6f2c20686176652061206e69636520646179"\n },\n "signatures": [\n {\n "sessionId": "0x01047de46debeeb83e1270b80ae65996ea64ad2c033e330cfffe9b725bf078423140124dce0cfe0cab9a61b385ca74fe77cd5e8a7147bfd87052f334cfbadc45c79a",\n "signature": "0x28ec6ddcdbc0987a99dde19792ff0c9be69ad2be873fb9351353171b74d2df3380f0ffcae2b8cb37a0659e374859420500b4399a2aab0209ee7919aaea575ac7"\n }\n ]\n}\nLet's take a closer look at the intent anatomy, starting from the bottom.\n","title":"What are they?","titles":["Intents"]},"469":{"href":"/solutions/wallets/embedded-wallet/implementation-details/intents#signatures","html":"\n

Normally a single signature is specified, representing the user's session. A session here is nothing more but a locally created assymmetric key pair where the public key becomes part of the sessionId while the private key never leaves the device. As it gives anyone access to the user's wallet, it must be stored securely, in a secure on-device enclave whenever possible. The session must be registered with the WaaS API before use.

\n

The signature is an EIP-191 of the canonical representation of the intent (keys ordered alphabetically, without whitespace) JSON without the signatures field.

\n","isPage":false,"text":"\nNormally a single signature is specified, representing the user's session. A session here is nothing more but a locally created assymmetric key pair where the public key becomes part of the sessionId while the private key never leaves the device. As it gives anyone access to the user's wallet, it must be stored securely, in a secure on-device enclave whenever possible. The session must be registered with the WaaS API before use.\nThe signature is an EIP-191 of the canonical representation of the intent (keys ordered alphabetically, without whitespace) JSON without the signatures field.\n","title":"Signatures","titles":["Intents"]},"470":{"href":"/solutions/wallets/embedded-wallet/implementation-details/intents#name-and-data","html":"\n

These depend on the intent in question and will be different for each intent. The type of the intent and thus the data it contains is specified by the name.

\n","isPage":false,"text":"\nThese depend on the intent in question and will be different for each intent. The type of the intent and thus the data it contains is specified by the name.\n","title":"Name and data","titles":["Intents"]},"471":{"href":"/solutions/wallets/embedded-wallet/implementation-details/intents#timestamps","html":"\n

These are unix timestamps of when the intent becomes and stops being valid. They are validated by the API to ensure old intents cannot be reused again in the future.

","isPage":false,"text":"\nThese are unix timestamps of when the intent becomes and stops being valid. They are validated by the API to ensure old intents cannot be reused again in the future.","title":"Timestamps","titles":["Intents"]},"472":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#response-payloads","html":"\n

When interacting with the Sequence Embedded Wallet API, each intent payload will trigger a corresponding response payload. This could be either a successful response or a prompt for a different action.

\n","isPage":true,"text":"\nWhen interacting with the Sequence Embedded Wallet API, each intent payload will trigger a corresponding response payload. This could be either a successful response or a prompt for a different action.\n","title":"Response Payloads","titles":[]},"473":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#general-response-structure","html":"\n

Regardless of the specific response type, all responses have a standard structure with the following fields:

\n
NameTypeDescriptionOptional
codestringIdentifies the type of responseNo
dataobjectHolds content defined by response typeNo
\n","isPage":false,"text":"\nRegardless of the specific response type, all responses have a standard structure with the following fields:\nNameTypeDescriptionOptionalcodestringIdentifies the type of responseNodataobjectHolds content defined by response typeNo\n","title":"General Response Structure","titles":["Response Payloads"]},"474":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#types-of-responses","html":"\n","isPage":false,"text":"\n","title":"Types of Responses","titles":["Response Payloads"]},"475":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#transaction-receipt-response","html":"\n

Triggered upon successful execution of a send transaction intent. The code for this response is transactionReceipt.

\n

The data field contains:

\n
NameTypeDescriptionOptional
txHashstringTransaction hash of the Ethereum transactionNo
metaTxHashstringHash of the meta transactionNo
requestSendTransactionPayloadThe original request packet of the transactionNo
receiptMetaTxnReceiptReceipt of the meta transactionNo
nativeReceiptanyNative receipt of the Ethereum transactionYes
simulationsSimulateResult[]Array of simulation resultsYes
\n

MetaTxnReceipt:

\n
NameTypeDescriptionOptional
idstringUnique identifier for the receiptNo
statusstringStatus of the transactionNo
revertReasonstring | nullReason for transaction revert, if anyYes
indexnumberIndex number of the receiptNo
logsMetaTxnReceiptLog[]Array of logs for the meta transactionNo
receiptsMetaTxnReceipt[]Array of meta transaction receiptsNo
txnReceiptstringString representation of the transactionNo
\n

MetaTxnReceiptLog:

\n
NameTypeDescriptionOptional
addressstringThe address that generated the logNo
topicsstring[]List of topics associated with the logNo
datastringData sent with the logNo
blockNumbernumberThe block number where this log was emittedNo
transactionHashstringHash of the transaction that generated the logNo
transactionIndexnumberIndex of the transaction in the blockNo
blockHashstringHash of the block containing the logNo
logIndexnumberIndex of the log in the blockNo
removedbooleanWhether the log was removed due to a chain reorganizationNo
\n

SimulateResult:

\n
NameTypeDescriptionOptional
executedbooleanWhether the simulation was executedNo
succeededbooleanWhether the simulation succeededNo
resultstring | nullThe result of the simulationYes
reasonstring | nullReason for failure, if simulation failedYes
gasUsednumberAmount of gas used in the simulationNo
gasLimitnumberGas limit for the simulationNo
\n","isPage":false,"text":"\nTriggered upon successful execution of a send transaction intent. The code for this response is transactionReceipt.\nThe data field contains:\nNameTypeDescriptionOptionaltxHashstringTransaction hash of the Ethereum transactionNometaTxHashstringHash of the meta transactionNorequestSendTransactionPayloadThe original request packet of the transactionNoreceiptMetaTxnReceiptReceipt of the meta transactionNonativeReceiptanyNative receipt of the Ethereum transactionYessimulationsSimulateResult[]Array of simulation resultsYes\nMetaTxnReceipt:\nNameTypeDescriptionOptionalidstringUnique identifier for the receiptNostatusstringStatus of the transactionNorevertReasonstring | nullReason for transaction revert, if anyYesindexnumberIndex number of the receiptNologsMetaTxnReceiptLog[]Array of logs for the meta transactionNoreceiptsMetaTxnReceipt[]Array of meta transaction receiptsNotxnReceiptstringString representation of the transactionNo\nMetaTxnReceiptLog:\nNameTypeDescriptionOptionaladdressstringThe address that generated the logNotopicsstring[]List of topics associated with the logNodatastringData sent with the logNoblockNumbernumberThe block number where this log was emittedNotransactionHashstringHash of the transaction that generated the logNotransactionIndexnumberIndex of the transaction in the blockNoblockHashstringHash of the block containing the logNologIndexnumberIndex of the log in the blockNoremovedbooleanWhether the log was removed due to a chain reorganizationNo\nSimulateResult:\nNameTypeDescriptionOptionalexecutedbooleanWhether the simulation was executedNosucceededbooleanWhether the simulation succeededNoresultstring | nullThe result of the simulationYesreasonstring | nullReason for failure, if simulation failedYesgasUsednumberAmount of gas used in the simulationNogasLimitnumberGas limit for the simulationNo\n","title":"Transaction Receipt Response","titles":["Response Payloads","Types of Responses"]},"476":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#example","html":"\n
{\n  "code": "transactionReceipt",\n  "data": {\n    "txHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n    "metaTxHash": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n    "nativeReceipt": {\n      "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n      "blockNumber": "0x2f63834",\n      "contractAddress": "0x0000000000000000000000000000000000000000",\n      "cumulativeGasUsed": "0xdb374",\n      "gasUsed": "0x14a00",\n      "logs": [\n        {\n          "address": "0x4d4ee1b8583e31fe789eaf2e1b6e011c220c10b6",\n          "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n          "blockNumber": "0x2f63834",\n          "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n          "logIndex": "0x14",\n          "removed": false,\n          "topics": [\n            "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n          ],\n          "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n          "transactionIndex": "0x5"\n        },\n        {\n          "address": "0x4d4ee1b8583e31fe789eaf2e1b6e011c220c10b6",\n          "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n          "blockNumber": "0x2f63834",\n          "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n          "logIndex": "0x15",\n          "removed": false,\n          "topics": [\n            "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n            "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n          ],\n          "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n          "transactionIndex": "0x5"\n        },\n        {\n          "address": "0x0000000000000000000000000000000000001010",\n          "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n          "blockNumber": "0x2f63834",\n          "data": "0x000000000000000000000000000000000000000000000000001284e7c67266000000000000000000000000000000000000000000000000014c0fa753f2298415000000000000000000000000000000000000000000001386f7e2c243dcc978070000000000000000000000000000000000000000000000014bfd226c2bb71e15000000000000000000000000000000000000000000001386f7f5472ba33bde07",\n          "logIndex": "0x16",\n          "removed": false,\n          "topics": [\n            "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",\n            "0x0000000000000000000000000000000000000000000000000000000000001010",\n            "0x00000000000000000000000000e91788bcb998379027d36e6407a9187d7f313c",\n            "0x000000000000000000000000959c65b72147faf3450d8b50a0de57e72ffc5e0d"\n          ],\n          "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n          "transactionIndex": "0x5"\n        }\n      ],\n      "logsBloom": "0x00000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000008800000002000000000001004000000000000000000000000000000000800000000000000000000100000000400000000200400000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000002000000000000000000000000000000004000008000000000000001000000000000000000000000000000100000020000000000000000000000002000000020020002020040000000000000000040100000",\n      "root": "0x",\n      "status": "0x1",\n      "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n      "transactionIndex": "0x5"\n    },\n    "receipt": {\n      "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n      "index": 0,\n      "logs": [\n        {\n          "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n          "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n          "topics": [\n            "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n          ]\n        },\n        {\n          "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n          "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n          "topics": [\n            "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n            "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n          ]\n        }\n      ],\n      "receipts": [\n        {\n          "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n          "index": 0,\n          "logs": null,\n          "receipts": null,\n          "revertReason": null,\n          "status": "SUCCEEDED",\n          "txnReceipt": ""\n        }\n      ],\n      "revertReason": null,\n      "status": "SUCCEEDED"\n    },\n    "request": {\n      "code": "sendTransaction",\n      "expires": 1699440762,\n      "identifier": "ts-sdk-1699440462686-0x153824576D03629b264683B430bBF9AcEA1d0975",\n      "issued": 1699440462,\n      "network": "137",\n      "transactions": [\n        {\n          "data": "0x",\n          "to": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n          "type": "transaction",\n          "value": "0x00"\n        }\n      ],\n      "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n    },\n    "simulations": [\n      {\n        "executed": true,\n        "gasLimit": 1147,\n        "gasUsed": 860,\n        "reason": null,\n        "result": "0x",\n        "succeeded": true\n      }\n    ]\n  }\n}
\n","isPage":false,"text":"\n{\n "code": "transactionReceipt",\n "data": {\n "txHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n "metaTxHash": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n "nativeReceipt": {\n "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n "blockNumber": "0x2f63834",\n "contractAddress": "0x0000000000000000000000000000000000000000",\n "cumulativeGasUsed": "0xdb374",\n "gasUsed": "0x14a00",\n "logs": [\n {\n "address": "0x4d4ee1b8583e31fe789eaf2e1b6e011c220c10b6",\n "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n "blockNumber": "0x2f63834",\n "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n "logIndex": "0x14",\n "removed": false,\n "topics": [\n "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n ],\n "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n "transactionIndex": "0x5"\n },\n {\n "address": "0x4d4ee1b8583e31fe789eaf2e1b6e011c220c10b6",\n "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n "blockNumber": "0x2f63834",\n "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n "logIndex": "0x15",\n "removed": false,\n "topics": [\n "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n ],\n "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n "transactionIndex": "0x5"\n },\n {\n "address": "0x0000000000000000000000000000000000001010",\n "blockHash": "0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",\n "blockNumber": "0x2f63834",\n "data": "0x000000000000000000000000000000000000000000000000001284e7c67266000000000000000000000000000000000000000000000000014c0fa753f2298415000000000000000000000000000000000000000000001386f7e2c243dcc978070000000000000000000000000000000000000000000000014bfd226c2bb71e15000000000000000000000000000000000000000000001386f7f5472ba33bde07",\n "logIndex": "0x16",\n "removed": false,\n "topics": [\n "0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",\n "0x0000000000000000000000000000000000000000000000000000000000001010",\n "0x00000000000000000000000000e91788bcb998379027d36e6407a9187d7f313c",\n "0x000000000000000000000000959c65b72147faf3450d8b50a0de57e72ffc5e0d"\n ],\n "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n "transactionIndex": "0x5"\n }\n ],\n "logsBloom": "0x00000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000008800000002000000000001004000000000000000000000000000000000800000000000000000000100000000400000000200400000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000002000000000000000000000000000000004000008000000000000001000000000000000000000000000000100000020000000000000000000000002000000020020002020040000000000000000040100000",\n "root": "0x",\n "status": "0x1",\n "transactionHash": "0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",\n "transactionIndex": "0x5"\n },\n "receipt": {\n "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n "index": 0,\n "logs": [\n {\n "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n "data": "0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",\n "topics": [\n "0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881"\n ]\n },\n {\n "address": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n "data": "0x0000000000000000000000000000000000000000000000000000000000000000",\n "topics": [\n "0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",\n "0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0"\n ]\n }\n ],\n "receipts": [\n {\n "id": "acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",\n "index": 0,\n "logs": null,\n "receipts": null,\n "revertReason": null,\n "status": "SUCCEEDED",\n "txnReceipt": ""\n }\n ],\n "revertReason": null,\n "status": "SUCCEEDED"\n },\n "request": {\n "code": "sendTransaction",\n "expires": 1699440762,\n "identifier": "ts-sdk-1699440462686-0x153824576D03629b264683B430bBF9AcEA1d0975",\n "issued": 1699440462,\n "network": "137",\n "transactions": [\n {\n "data": "0x",\n "to": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6",\n "type": "transaction",\n "value": "0x00"\n }\n ],\n "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n },\n "simulations": [\n {\n "executed": true,\n "gasLimit": 1147,\n "gasUsed": 860,\n "reason": null,\n "result": "0x",\n "succeeded": true\n }\n ]\n }\n}\n","title":"Example","titles":["Response Payloads","Types of Responses","Transaction Receipt Response"]},"477":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#how-to-detect","html":"\n
import { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isSentTransactionResponse(res)) {\n  // It's a transaction receipt\n}
\n","isPage":false,"text":"\nimport { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isSentTransactionResponse(res)) {\n // It's a transaction receipt\n}\n","title":"How to Detect","titles":["Response Payloads","Types of Responses","Transaction Receipt Response"]},"478":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#failed-transaction-response","html":"\n

Triggered upon failed to execute a send transaction intent. The code for this response is transactionFailed.

\n

The data field contains:

\n
FieldTypeDescription
errorstringThe error message describing why the transaction failed.
requestSendTransactionPayloadThe packet of transactions that were attempted.
simulationsSimulateResult[]Results from the transaction simulation attempts.
\n

SimulateResult:

\n
NameTypeDescriptionOptional
executedbooleanWhether the simulation was executedNo
succeededbooleanWhether the simulation succeededNo
resultstring | nullThe result of the simulationYes
reasonstring | nullReason for failure, if simulation failedYes
gasUsednumberAmount of gas used in the simulationNo
gasLimitnumberGas limit for the simulationNo
\n
{\n  "code": "transactionFailed",\n  "data": {\n    "error": "This is an error message",\n    "request": {\n      "code": "sendTransaction",\n      "expires": 1699443005,\n      "identifier": "ts-sdk-1699442705965-0x153824576D03629b264683B430bBF9AcEA1d0975",\n      "issued": 1699442705,\n      "network": "137",\n      "transactions": [\n        {\n          "data": "0x",\n          "to": "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n          "type": "transaction",\n          "value": "0x00"\n        }\n      ],\n      "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n    },\n    "simulations": [\n      {\n        "executed": true,\n        "gasLimit": 7908,\n        "gasUsed": 5931,\n        "reason": "This is an error message",\n        "result": null,\n        "succeeded": false\n      }\n    ]\n  }\n}
\n","isPage":false,"text":"\nTriggered upon failed to execute a send transaction intent. The code for this response is transactionFailed.\nThe data field contains:\nFieldTypeDescriptionerrorstringThe error message describing why the transaction failed.requestSendTransactionPayloadThe packet of transactions that were attempted.simulationsSimulateResult[]Results from the transaction simulation attempts.\nSimulateResult:\nNameTypeDescriptionOptionalexecutedbooleanWhether the simulation was executedNosucceededbooleanWhether the simulation succeededNoresultstring | nullThe result of the simulationYesreasonstring | nullReason for failure, if simulation failedYesgasUsednumberAmount of gas used in the simulationNogasLimitnumberGas limit for the simulationNo\n{\n "code": "transactionFailed",\n "data": {\n "error": "This is an error message",\n "request": {\n "code": "sendTransaction",\n "expires": 1699443005,\n "identifier": "ts-sdk-1699442705965-0x153824576D03629b264683B430bBF9AcEA1d0975",\n "issued": 1699442705,\n "network": "137",\n "transactions": [\n {\n "data": "0x",\n "to": "0x839eE023B21f4Ffe2294025DE0AC30Ba7278D6Fd",\n "type": "transaction",\n "value": "0x00"\n }\n ],\n "wallet": "0x4d4EE1b8583e31fe789eAF2e1b6e011C220c10B6"\n },\n "simulations": [\n {\n "executed": true,\n "gasLimit": 7908,\n "gasUsed": 5931,\n "reason": "This is an error message",\n "result": null,\n "succeeded": false\n }\n ]\n }\n}\n","title":"Failed Transaction Response","titles":["Response Payloads","Types of Responses"]},"479":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#how-to-detect-1","html":"\n
import { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isFailedTransactionResponse(res)) {\n  // It's a failed transaction\n}
\n","isPage":false,"text":"\nimport { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isFailedTransactionResponse(res)) {\n // It's a failed transaction\n}\n","title":"How to Detect","titles":["Response Payloads","Types of Responses","Failed Transaction Response"]},"480":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#signed-message-response","html":"\n

Triggered after a successful sign message intent. The code is signedMessage.

\n

The data field contains:

\n
NameTypeDescriptionOptional
messagestringThe signed messageNo
signaturestringThe signatureNo
\n","isPage":false,"text":"\nTriggered after a successful sign message intent. The code is signedMessage.\nThe data field contains:\nNameTypeDescriptionOptionalmessagestringThe signed messageNosignaturestringThe signatureNo\n","title":"Signed Message Response","titles":["Response Payloads","Types of Responses"]},"481":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#example-1","html":"\n
{\n  "code": "signedMessage",\n  "data": {\n    "message": "Hello World",\n    "signature": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"\n  }\n}
\n","isPage":false,"text":"\n{\n "code": "signedMessage",\n "data": {\n "message": "Hello World",\n "signature": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"\n }\n}\n","title":"Example","titles":["Response Payloads","Types of Responses","Signed Message Response"]},"482":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#how-to-detect-2","html":"\n
import { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isSignedMessageResponse(res)) {\n  // It's a signed message\n}
\n","isPage":false,"text":"\nimport { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isSignedMessageResponse(res)) {\n // It's a signed message\n}\n","title":"How to Detect","titles":["Response Payloads","Types of Responses","Signed Message Response"]},"483":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#session-opened-response","html":"\n

Occurs after successfully executing an open session intent. The code is sessionOpened.

\n

The data field contains:

\n
NameTypeDescriptionOptional
sessionIdstringSession ID (resembling an address)No
walletstringThe Sequence wallet addressNo
\n","isPage":false,"text":"\nOccurs after successfully executing an open session intent. The code is sessionOpened.\nThe data field contains:\nNameTypeDescriptionOptionalsessionIdstringSession ID (resembling an address)NowalletstringThe Sequence wallet addressNo\n","title":"Session Opened Response","titles":["Response Payloads","Types of Responses"]},"484":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#example-2","html":"\n
{\n  "code": "sessionOpened",\n  "data": {\n    "sessionId": "0xBdeAfd3ee0550a73f615D2BaEA2E3D6d48FC857D",\n    "wallet": "0x44c2Ea42Fb006a613a7b41D142576eD6B5055902"\n  }\n}
\n","isPage":false,"text":"\n{\n "code": "sessionOpened",\n "data": {\n "sessionId": "0xBdeAfd3ee0550a73f615D2BaEA2E3D6d48FC857D",\n "wallet": "0x44c2Ea42Fb006a613a7b41D142576eD6B5055902"\n }\n}\n","title":"Example","titles":["Response Payloads","Types of Responses","Session Opened Response"]},"485":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#how-to-detect-3","html":"\n
import { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isOpenSessionResponse(res)) {\n  // It's a session opened\n}
\n","isPage":false,"text":"\nimport { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isOpenSessionResponse(res)) {\n // It's a session opened\n}\n","title":"How to Detect","titles":["Response Payloads","Types of Responses","Session Opened Response"]},"486":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#validation-required-response","html":"\n

Some actions may necessitate additional validation. In such cases, the response code is validationRequired.

\n

The data field contains:

\n
NameTypeDescriptionOptional
sessionIdstringSession ID (resembling an address)No
\n","isPage":false,"text":"\nSome actions may necessitate additional validation. In such cases, the response code is validationRequired.\nThe data field contains:\nNameTypeDescriptionOptionalsessionIdstringSession ID (resembling an address)No\n","title":"Validation Required Response","titles":["Response Payloads","Types of Responses"]},"487":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#how-to-detect-4","html":"\n
import { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isValidationRequiredResponse(res)) {\n  // Validation is required\n}
\n","isPage":false,"text":"\nimport { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isValidationRequiredResponse(res)) {\n // Validation is required\n}\n","title":"How to Detect","titles":["Response Payloads","Types of Responses","Validation Required Response"]},"488":{"href":"/solutions/wallets/embedded-wallet/implementation-details/response-payloads#note","html":"\n

Both sendTransaction and signMessage intents could require validation. Always check for a validationRequired response before assuming you've received a transaction receipt or a signed message.

\n
import { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isValidationRequiredResponse(res)) {\n  // Handle validation\n}\n \nif (payloads.responses.isSendTransactionResponse(res)) {\n  // It's a transaction receipt\n}
","isPage":false,"text":"\nBoth sendTransaction and signMessage intents could require validation. Always check for a validationRequired response before assuming you've received a transaction receipt or a signed message.\nimport { payloads } from '@0xsequence/waas';\n \nconst res = ... // response from the Embedded Wallet API\n \nif (payloads.responses.isValidationRequiredResponse(res)) {\n // Handle validation\n}\n \nif (payloads.responses.isSendTransactionResponse(res)) {\n // It's a transaction receipt\n}","title":"Note","titles":["Response Payloads","Types of Responses"]},"489":{"href":"/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow#trust-contract-recovery-flow","html":"\n

Sequence WaaS accounts are protected by a disaster recovery mechanism contract called Trust. This document outlines the working mechanism behind the Trust contract, as well as the recovery flow to be triggered during a disaster scenario.

\n","isPage":true,"text":"\nSequence WaaS accounts are protected by a disaster recovery mechanism contract called Trust. This document outlines the working mechanism behind the Trust contract, as well as the recovery flow to be triggered during a disaster scenario.\n","title":"Trust Contract Recovery Flow","titles":[]},"490":{"href":"/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow#trust-contract-architecture","html":"\n

Trust is essentially a time lock contract. For every configured WaaS tenant project, there are two Trust contract instances deployed. One instance is controlled by the recovery wallet of the project. The other instance is controlled by the Sequence recovery wallet. In their default state, Trust contracts are in locked status. While locked, neither party can access WaaS accounts created under the tenant configuration.

\n

The only way for a Trust contract to be unlocked is for one of the controlling parties to call the setUnlocksAt method on the Trust contract instance controlled by the other party. When this method is called, Trust contract instance goes into countdown state, beginning an enforced 90-day countdown. Since the countdown state is on-chain, it's publicly available for either party to observe.

\n

Once the countdown is over, the party that called setUnlocksAt gains control over the Trust instance of the counterparty. Having control over both instances, they can recover all accounts created with the WaaS tenant configuration.

\n","isPage":false,"text":"\nTrust is essentially a time lock contract. For every configured WaaS tenant project, there are two Trust contract instances deployed. One instance is controlled by the recovery wallet of the project. The other instance is controlled by the Sequence recovery wallet. In their default state, Trust contracts are in locked status. While locked, neither party can access WaaS accounts created under the tenant configuration.\nThe only way for a Trust contract to be unlocked is for one of the controlling parties to call the setUnlocksAt method on the Trust contract instance controlled by the other party. When this method is called, Trust contract instance goes into countdown state, beginning an enforced 90-day countdown. Since the countdown state is on-chain, it's publicly available for either party to observe.\nOnce the countdown is over, the party that called setUnlocksAt gains control over the Trust instance of the counterparty. Having control over both instances, they can recover all accounts created with the WaaS tenant configuration.\n","title":"Trust Contract Architecture","titles":["Trust Contract Recovery Flow"]},"491":{"href":"/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow#unlock-state-monitoring","html":"\n

Sequence provides unlock state monitoring for all deployed Trust contract instances. This service runs under the existing Sequence WaaS implementation deployed on AWS Nitro Secure Enclave instances. Monitoring system checks every Trust contract instance and notifies both Sequence team and the project owner when an unlock state is detected on a deployed contract. This ensures that neither party can call setUnlocksAt on another party's contract without notifying them.

\n","isPage":false,"text":"\nSequence provides unlock state monitoring for all deployed Trust contract instances. This service runs under the existing Sequence WaaS implementation deployed on AWS Nitro Secure Enclave instances. Monitoring system checks every Trust contract instance and notifies both Sequence team and the project owner when an unlock state is detected on a deployed contract. This ensures that neither party can call setUnlocksAt on another party's contract without notifying them.\n","title":"Unlock State Monitoring","titles":["Trust Contract Recovery Flow"]},"492":{"href":"/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow#disaster-recovery-flow","html":"\n

Trust contracts are deployed to recover accounts in the unlikely case that one of the parties disappears and accounts created with the WaaS configuration are inaccessible. In such a case, the counterparty can initiate the recovery flow by calling the setUnlocksAt method on the other party's Trust contract instance. This will automatically trigger unlock notifications for both parties until the countdown period is over. Once the 90-day countdown period concludes, accounts created as well as the tokens held in the accounts can be recovered.

","isPage":false,"text":"\nTrust contracts are deployed to recover accounts in the unlikely case that one of the parties disappears and accounts created with the WaaS configuration are inaccessible. In such a case, the counterparty can initiate the recovery flow by calling the setUnlocksAt method on the other party's Trust contract instance. This will automatically trigger unlock notifications for both parties until the countdown period is over. Once the 90-day countdown period concludes, accounts created as well as the tokens held in the accounts can be recovered.","title":"Disaster Recovery Flow","titles":["Trust Contract Recovery Flow"]},"493":{"href":"/solutions/wallets/universal-wallet/examples/auth-address#authenticate-users-with-message-signature","html":"\n","isPage":true,"text":"\n","title":"Authenticate Users with Message Signature","titles":[]},"494":{"href":"/solutions/wallets/universal-wallet/examples/auth-address#ask-for-the-wallet-address","html":"\n

To get the user's Sequence wallet address:

\n
const wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)
\n","isPage":false,"text":"\nTo get the user's Sequence wallet address:\nconst wallet = sequence.getWallet()\nconst address = wallet.getAddress()\nconsole.log(address)\n","title":"Ask for the wallet address","titles":["Authenticate Users with Message Signature"]},"495":{"href":"/solutions/wallets/universal-wallet/examples/auth-address#authenticate-wallet","html":"\n

In many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.

\n

As this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.

\n
import { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n  app: 'Your Dapp name',\n  authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})
\n

It will look like this to your users:

\n\"Sequence\n

In the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.

\n

You can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.

\n","isPage":false,"text":"\nIn many cases, you'll want your users to connect and then verify they do control this wallet address. Applications typically do this by asking the user\nto sign a message with their wallet, and then verify the signature from the user to ensure its integrity.\nAs this is such a common workflow, Sequence can automatically authenticate the account address at the same time\nwhile the user is prompt to connect their wallet to your dapp. This allows the user experience to be simpler and\nmore seamless.\nimport { sequence } from '0xsequence'\n \nconst wallet = sequence.getWallet()\n \nconst connectDetails = await wallet.connect({\n app: 'Your Dapp name',\n authorize: true // <---<<< this will automatically sign+verify a EIP712 message when user clicks "Connect"\n})\nIt will look like this to your users:\n\nIn the above example, we pass authorize: true to the connect() function, which will automatically have the user\nsign a EIP712 signed message to prove their identity. This allows you to then easily authenticate the connected\nwallet address with absolute certainty.\nYou can find the signed message proof returned in connectDetails.proof, which is an EIP712 signed object using\na simple convention from ethauth. NOTE: EIP712 allows you to use an actual object for\nsigning instead of just a plain-text string.\n","title":"Authenticate wallet","titles":["Authenticate Users with Message Signature"]},"496":{"href":"/solutions/wallets/universal-wallet/examples/auth-address#authenticate-wallet-server-side","html":"\n

The above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:

\n
import { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n  () => new commons.reader.OnChainReader(provider),\n  new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n  v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n  const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n  console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n  console.log(`invalid proof -- do not trust address: ${err}`)\n}
\n

See the Go Sequence SDK on using Sequence in your Go applications.

\n

If your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.

\n

As always, if you have any questions or require help, reach out to us on Discord.

","isPage":false,"text":"\nThe above example demonstrates how to connect and verify the user's identity in your dapp on the client-side,\nbut if you'd like to authenticate the Sequence authorization proof on your server, then you can do so with the following snippet:\nimport { ValidateSequenceWalletProof } from '@0xsequence/auth'\nimport { commons, v2 } from '@0xsequence/core'\nimport { ETHAuth } from '@0xsequence/ethauth'\nimport { trackers } from '@0xsequence/sessions'\nimport * as ethers from 'ethers'\n \n// ...\n \nconst rpcUrl = 'https://polygon-mainnet.infura.io/v3/<your infura key here>'\nconst provider = new ethers.providers.JsonRpcProvider(rpcUrl)\n \n// create an EIP-6492-aware ETHAuth proof validator\nconst validator = ValidateSequenceWalletProof(\n () => new commons.reader.OnChainReader(provider),\n new trackers.remote.RemoteConfigTracker('https://sessions.sequence.app'),\n v2.DeployedWalletContext\n)\nconst ethauth = new ETHAuth(validator)\nawait ethauth.configJsonRpcProvider(rpcUrl)\n \ntry {\n const proof = await ethAuth.decodeProof(connectDetails.proof.proofString)\n console.log(`proof for address ${proof.address} is valid`)\n} catch (err) {\n console.log(`invalid proof -- do not trust address: ${err}`)\n}\nSee the Go Sequence SDK on using Sequence in your Go applications.\nIf your server is written in a language other than Javascript/Typescript or Go, all you have to do is validate\nthe signature with EIP1271, the standard method for validating signed messages for a smart wallet.\nAs always, if you have any questions or require help, reach out to us on Discord.","title":"Authenticate wallet server-side","titles":["Authenticate Users with Message Signature"]},"497":{"href":"/solutions/wallets/universal-wallet/examples/building-backends#building-backends-with-sequence","html":"\n","isPage":true,"text":"\n","title":"Building Backends with Sequence","titles":[]},"498":{"href":"/solutions/wallets/universal-wallet/examples/building-backends#nodejs","html":"\n

The 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.

\n","isPage":false,"text":"\nThe 0xsequence package which is available for browser / client use, also works perfectly on nodejs backends\nwritten in Javascript or Typescript.\n","title":"nodejs","titles":["Building Backends with Sequence",null]},"499":{"href":"/solutions/wallets/universal-wallet/examples/building-backends#go","html":"\n

A complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.

\n

go-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.

\n","isPage":false,"text":"\nA complete Sequence SDK is also available in Go: https://github.com/0xsequence/go-sequence.\ngo-sequence is the equivalent of 0xsequence\nbut for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with go-sequence.\n","title":"Go","titles":["Building Backends with Sequence",null]},"500":{"href":"/solutions/wallets/universal-wallet/examples/building-backends#ethkit","html":"\n

As part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.

\n","isPage":false,"text":"\nAs part of the Sequence open source tools, our team has also built ethkit, which\nis an Ethereum dev toolkit for Go backends. ethkit supports EOA wallets,\nand you can think of it like ethers.js but for Go.\n","title":"ethkit","titles":["Building Backends with Sequence",null]},"501":{"href":"/solutions/wallets/universal-wallet/examples/building-backends#support-for-other-backend-languages","html":"\n

If your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.

\n

If your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.

\n

If you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.

","isPage":false,"text":"\nIf your backend services are written in a language other than JS or Go, you can still easily integrate Sequence,\nas Sequence is really just a standard Ethereum client library with some extra features. In many cases, the extra\nfeatures are best utilized on the client-side / dapp.\nIf your situation for example is a Python or Java backend where you'd like to verify signatures from a Sequence Wallet,\nwell then, you can call the standard EIP1271 function for the account address\nfrom your backend.\nIf you'd like to use the Sequence's Meta-Transaction capabilities, see Building Relaying Server with Sequence.","title":"Support for other backend languages","titles":["Building Backends with Sequence",null]},"502":{"href":"/solutions/wallets/universal-wallet/examples/send-batch-transactions#sending-a-batch-of-transactions","html":"\n

Likewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:

\n
const transaction1 = {\n  to: recipient1Address,\n  value: 1000000000000000000\n}\n \nconst transaction2 = {\n  to: recipient2Address,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)
\n

The transactions don't have to be the same token or even token standard either.\nYou can mix and match:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n  { to: recipient1Address, value: '1000000000000000000' },\n  { to: daiContractAddress, data: erc20Data },\n  { to: erc721ContractAddress, data: erc721Data },\n  { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)
","isPage":true,"text":"\nLikewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:\nconst transaction1 = {\n to: recipient1Address,\n value: 1000000000000000000\n}\n \nconst transaction2 = {\n to: recipient2Address,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(response)\nThe transactions don't have to be the same token or even token standard either.\nYou can mix and match:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \nconst erc20Data = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\nconst erc721Data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient3Address, amount3]\n)\nconst erc1155Data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient4Address, token4Id, amount4, '0x']\n)\n \nconst transactions = [\n { to: recipient1Address, value: '1000000000000000000' },\n { to: daiContractAddress, data: erc20Data },\n { to: erc721ContractAddress, data: erc721Data },\n { to: erc1155ContractAddress, data: erc1155Data }\n]\n \nconst signer = wallet.getSigner()\nconst response = await signer.sendTransaction(transactions)\nconsole.log(response)","title":"Sending a Batch of Transactions","titles":[]},"503":{"href":"/solutions/wallets/universal-wallet/examples/send-erc1155#sending-erc-1155-collectible-tokens","html":"\n

Sending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n  to: erc1155TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc1155Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n  to: erc1155ContractAddress,\n  data: data1\n}\nconst transaction2 = {\n  to: erc1155ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-1155 collectible is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode the transfer of the collectible to recipient\nconst address = await wallet.getAddress()\nconst data = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId, amount, '0x']\n)\n \nconst transaction = {\n to: erc1155TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc1155Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _id, uint256 _value, bytes calldata _data)'\n])\n \n// Encode two different ERC-1155 token transfers\nconst data1 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, token1Id, amount1, '0x']\n)\nconst data2 = erc1155Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, token2Id, amount2, '0x']\n)\n \nconst transaction1 = {\n to: erc1155ContractAddress,\n data: data1\n}\nconst transaction2 = {\n to: erc1155ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-1155 (Collectible) Tokens","titles":[]},"504":{"href":"/solutions/wallets/universal-wallet/examples/send-erc20#sending-erc-20-tokens","html":"\n

You can ask the wallet to send a single ERC-20 token transfer:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n  'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n  to: daiContractAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc20Interface = new ethers.utils.Interface([\n  'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n  'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: daiContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: daiContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nYou can ask the wallet to send a single ERC-20 token transfer:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode an ERC-20 token transfer to recipient of the specified amount\nconst data = erc20Interface.encodeFunctionData(\n 'transfer', [recipientAddress, amount]\n)\n \nconst transaction = {\n to: daiContractAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc20Interface = new ethers.utils.Interface([\n 'function transfer(address _to, uint256 _value)'\n])\n \n// Encode two different ERC-20 token transfers\nconst data1 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient1Address, amount1]\n)\nconst data2 = erc20Interface.encodeFunctionData(\n 'transfer', [recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: daiContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: daiContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-20 Tokens","titles":[]},"505":{"href":"/solutions/wallets/universal-wallet/examples/send-erc721#sending-erc-721-nft-tokens","html":"\n

Sending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n  to: erc721TokenAddress,\n  data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
\n

With batching functionality, you can send multiple token transfers in a single native transaction:

\n
const erc721Interface = new ethers.utils.Interface([\n  'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n  'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n  to: erc721ContractAddress,\n  data: data1\n}\n \nconst transaction2 = {\n  to: erc721ContractAddress,\n  data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSending an ERC-721 NFT is similar to sending an ERC-20 token.\nThe only notable difference is in the contract standard itself:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode the transfer of the NFT tokenId to recipient\nconst address = await wallet.getAddress()\nconst data = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipientAddress, tokenId]\n)\n \nconst transaction = {\n to: erc721TokenAddress,\n data\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n \nWith batching functionality, you can send multiple token transfers in a single native transaction:\nconst erc721Interface = new ethers.utils.Interface([\n 'function safeTransferFrom(address _from, address _to, uint256 _tokenId)'\n])\n \n// Encode two different ERC-721 token transfers\nconst data1 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient1Address, amount1]\n)\nconst data2 = erc721Interface.encodeFunctionData(\n 'safeTransferFrom', [address, recipient2Address, amount2]\n)\n \nconst transaction1 = {\n to: erc721ContractAddress,\n data: data1\n}\n \nconst transaction2 = {\n to: erc721ContractAddress,\n data: data2\n}\n \n// Send a multiple transactions as a single bundle which is executed as one transaction on chain.\nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransactionBatch([transaction1, transaction2])\nconsole.log(txnResponse)\n ","title":"Sending ERC-721 (NFT) Tokens","titles":[]},"506":{"href":"/solutions/wallets/universal-wallet/examples/send-transaction#sending-transactions","html":"\n

Signing a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):

\n
const transaction = {\n  to: recipientAddress,\n  value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n 
","isPage":true,"text":"\nSigning a transaction will only retrieve the signed payload.\nIf you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from signTransactions to sendTransaction):\nconst transaction = {\n to: recipientAddress,\n value: 1000000000000000000\n}\n \nconst signer = wallet.getSigner()\nconst txnResponse = await signer.sendTransaction(transaction)\nconsole.log(txnResponse)\n ","title":"Sending Transactions","titles":[]},"507":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#no-wallet-confirmation-signatures","html":"\n

It is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.

\n
","isPage":true,"text":"\nIt is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using session keys, or ephemeral keys.\n","title":"No-Wallet-Confirmation Signatures","titles":[]},"508":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#session-keys","html":"
\n

Session keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.

\n

By signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.

\n

Session keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.

\n
","isPage":false,"text":"\nSession keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet.\nBy signing a message with their primary wallet (e.g., Sequence Wallet), users can authorize a session key to act on their behalf for a limited time or scope. Applications can then interpret signed messages from the session key as if they were coming directly from the user's wallet, streamlining the user experience.\nSession keys are particularly useful for applications that require frequent user interactions, as they help reduce the number of wallet confirmations needed, while still maintaining a secure and verifiable authentication process.\n","title":"Session Keys","titles":[]},"509":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#using-session-keys-with-sequence","html":"
\n","isPage":false,"text":"\n","title":"Using Session keys with Sequence","titles":[]},"510":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#1-initialize-sequence-wallet-and-connect","html":"\n
import { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()
\n","isPage":false,"text":"\nimport { Wallet } from '@0xsequence/wallet'\nimport { ethers } from 'ethers'\n \nconst wallet = new Wallet()\nawait wallet.connect()\n \nconst signer = wallet.getSigner()\nconst userAddress = signer.getAddress()\n","title":"1. Initialize Sequence Wallet and Connect","titles":["Using Session keys with Sequence",null]},"511":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#2-generate-a-session-key","html":"\n

Create a new ephemeral private key, store it in local storage, and derive the associated address:

\n
const sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()
\n","isPage":false,"text":"\nCreate a new ephemeral private key, store it in local storage, and derive the associated address:\nconst sessionPrivateKey = ethers.utils.randomBytes(32)\nlocalStorage.setItem('sessionPrivateKey', ethers.utils.hexlify(sessionPrivateKey))\nconst sessionWallet = new ethers.Wallet(sessionPrivateKey)\nconst sessionAddress = await sessionWallet.getAddress()\n","title":"2. Generate a Session Key","titles":["Using Session keys with Sequence",null]},"512":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#3-sign-authorization-message","html":"\n

Sign a message with the user's Sequence Wallet to authorize the session key:

\n
const authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)
\n","isPage":false,"text":"\nSign a message with the user's Sequence Wallet to authorize the session key:\nconst authorizationMessage = `Authorize this device to play this game.`\nconst signature = await signer.signMessage(authorizationMessage)\n","title":"3. Sign Authorization Message","titles":["Using Session keys with Sequence",null]},"513":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#4-verify-authorization-signature","html":"\n

Verify the signature on the server or client side using Sequence utility functions:

\n
const provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n  userAddress,\n  authorizationMessage,\n  signature,\n  chainId\n)\n \nif (isValid) {\n  console.log('Session key authorized')\n} else {\n  console.log('Session key not authorized')\n}
\n","isPage":false,"text":"\nVerify the signature on the server or client side using Sequence utility functions:\nconst provider = wallet.getProvider()\nconst chainId = await wallet.getChainId()\n \nconst isValid = await wallet.utils.isValidMessageSignature(\n userAddress,\n authorizationMessage,\n signature,\n chainId\n)\n \nif (isValid) {\n console.log('Session key authorized')\n} else {\n console.log('Session key not authorized')\n}\n","title":"4. Verify Authorization Signature","titles":["Using Session keys with Sequence",null]},"514":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#5-sign-message-with-session-key","html":"\n

Use the session key to sign a message client-side without user interaction:

\n
const message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)
\n","isPage":false,"text":"\nUse the session key to sign a message client-side without user interaction:\nconst message = 'Perform action without wallet confirmation'\nconst sessionSignature = await sessionWallet.signMessage(message)\n","title":"5. Sign Message with Session Key","titles":["Using Session keys with Sequence",null]},"515":{"href":"/solutions/wallets/universal-wallet/examples/session-keys#6-verify-session-signature","html":"\n

Verify the session signature on the server or client side:

\n
const recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n  console.log('Session signature valid')\n} else {\n  console.log('Session signature invalid')\n}
\n

Note: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.

","isPage":false,"text":"\nVerify the session signature on the server or client side:\nconst recoveredSessionAddress = ethers.utils.verifyMessage(message, sessionSignature)\nif (recoveredSessionAddress === sessionAddress) {\n console.log('Session signature valid')\n} else {\n console.log('Session signature invalid')\n}\nNote: You should retrieve the session key stored in local storage upon loading the application and only create a new session key if none can be found.","title":"6. Verify Session Signature","titles":["Using Session keys with Sequence",null]}},"dirtCount":0,"index":[["zero",{"0":{"402":1,"403":1},"2":{"398":4,"402":1,"403":1,"404":2}}],["zellic",{"0":{"383":1}}],["zimbabwe",{"2":{"13":1}}],["^5",{"2":{"267":1,"375":1}}],["^1",{"2":{"267":1,"375":1}}],["🖼️",{"2":{"91":1,"203":1,"378":1}}],["👛",{"2":{"91":1,"203":1,"378":1}}],["🔐🪪",{"2":{"91":1,"203":1,"378":1}}],["⛓️",{"2":{"91":1,"203":1,"378":1}}],["🪙",{"2":{"91":1,"203":1,"378":1}}],["🦊",{"2":{"91":1,"203":1,"378":1}}],["🧰",{"2":{"90":1,"202":1,"377":1}}],["77541a3d09cdf2728417c1537d190be0998cc84f8aec95a4f1e823c91a007d97f276c2453be7f653fd73fb862b42fcee",{"2":{"464":1,"465":1}}],["7908",{"2":{"440":1,"478":1}}],["712",{"0":{"410":1},"2":{"410":1}}],["75ce91ec2bcf",{"2":{"180":3}}],["7f1",{"2":{"99":2}}],["7",{"0":{"330":1},"2":{"84":3,"267":1,"268":1,"375":1,"376":1,"459":1}}],["721",{"0":{"177":1,"272":1,"505":1},"2":{"22":1,"43":1,"272":2,"505":2}}],["5931",{"2":{"440":1,"478":1}}],["500",{"2":{"459":1}}],["50",{"2":{"436":3}}],["5",{"0":{"281":1,"328":1,"514":1},"2":{"84":3,"117":1,"141":1,"165":2,"198":1,"211":1,"268":1,"339":1,"376":1,"415":2,"416":3,"459":1}}],["❤️",{"2":{"82":1}}],["`failedtransactionresponse`",{"2":{"440":1}}],["`senttransactionresponse`",{"2":{"440":1}}],["`sequenceconfig`",{"2":{"99":2}}],["`wallet",{"2":{"435":1}}],["`walletproxybytecode`",{"2":{"420":1}}],["`mainmodule`",{"2":{"420":1}}],["`authorize",{"2":{"279":1,"512":1}}],["`invalid",{"2":{"237":1,"496":1}}],["`proof",{"2":{"237":1,"496":1}}],["`",{"2":{"59":2,"128":6,"131":4,"133":4,"237":1,"279":1,"361":2,"433":2,"434":2,"435":3,"436":2,"437":2,"439":2,"440":2,"496":1,"512":1}}],["`$",{"2":{"59":2,"361":2,"433":2,"434":2,"435":2,"436":2,"437":2,"439":2,"440":2}}],["$",{"2":{"52":1,"237":2,"435":1,"496":2}}],["||",{"2":{"51":1}}],["|",{"2":{"51":4,"52":1,"185":1,"427":1,"430":1,"454":4,"459":3,"466":1,"475":3,"478":2}}],["+=",{"2":{"101":1,"102":2,"111":1,"117":2}}],["+",{"2":{"50":1,"104":1,"106":1,"133":1,"145":1,"169":1,"192":3,"201":2,"205":2,"214":2,"215":2,"221":1,"231":1,"233":1,"243":1,"264":1,"302":1,"332":1,"367":1,"409":2,"416":4,"432":2,"441":1}}],["+1",{"2":{"44":2}}],["860",{"2":{"476":1}}],["815189234z",{"2":{"436":1}}],["815189174z",{"2":{"436":1}}],["819722082z",{"2":{"436":1}}],["8545",{"2":{"390":1}}],["8319",{"2":{"180":3}}],["8",{"0":{"331":1},"2":{"44":1,"99":2}}],["0123456789abcdef",{"2":{"466":1}}],["06",{"2":{"464":1}}],["08t17",{"2":{"464":1}}],["04",{"2":{"464":1}}],["09t18",{"2":{"436":2}}],["03",{"2":{"436":3}}],["02t18",{"2":{"436":4}}],["0a1",{"2":{"99":1}}],["0b3",{"2":{"99":1}}],["0",{"0":{"200":1,"212":1},"2":{"43":1,"52":3,"99":2,"104":1,"107":3,"115":1,"125":2,"140":3,"155":1,"185":1,"200":3,"206":2,"212":3,"267":3,"339":1,"352":1,"375":3,"390":1,"403":1,"406":1,"411":1,"424":1,"429":1,"437":1,"439":2,"440":1,"451":2,"452":2,"453":2,"459":3,"460":2,"468":3,"476":2}}],["0x91e8ac543c5fedf9f3ef8b9da1500db84305681f",{"2":{"459":1}}],["0x9766bf76b2e3e7bcb8c61410a3fc873f1e89b43f",{"2":{"118":2}}],["0x3251ba32",{"2":{"459":1}}],["0x3c4e11e4dbf23b87c14bd75d0da9c75707392d21",{"2":{"436":2}}],["0x5",{"2":{"476":4}}],["0x5c4eeb02dabf8976016ab414d617f9a162936dcace3cdef8c69ef6e262ad5ae7",{"2":{"439":1,"476":2}}],["0x574372ff1a0eede68b5358cce7bbb93155a9dfe0",{"2":{"436":2}}],["0x596af90cecdbf9a768886e771178fd5561dd27ab",{"2":{"390":1,"415":1,"416":2}}],["0xe6b9b21c077f382333220a072e4c44280b873907",{"2":{"421":1}}],["0xec9a7204a43d3f4a82c84fde92d25bfc9110981e",{"2":{"415":1,"416":1}}],["0xf87e31492faf9a91b02ee0deaad50d51d56d5d4d",{"2":{"459":1}}],["0xf2e9f728abd65089f25efda5852e605ced377f4e2c89dbf143b124623ed09b2c",{"2":{"439":1,"476":5}}],["0xff",{"2":{"420":1}}],["0xf9d09d634fb818b05149329c1dccfaea53639d96",{"2":{"420":1,"421":1}}],["0xdb374",{"2":{"476":1}}],["0xd72c236be524ec24f72329317e2785e687105b69",{"2":{"439":1}}],["0xd6043fe6f06d90ec2cb36ca5cd1b193a8515f350",{"2":{"433":1}}],["0xd130b43062d875a4b7af3f8fc036bc6e9d3e1b3e",{"2":{"421":1}}],["0xd01f11855bccb95f88d7a48492f66410d4637313",{"2":{"420":1,"421":1}}],["0xd4bbf5d234cc95441a8af0a317d8874ee425e74d",{"2":{"180":1}}],["0x6bd55a2877890bd58871eefe886770a7734077a74981910a75d7b1f044b5bf28",{"2":{"459":1}}],["0x6b175474e89094c44da98b954eedeac495271d0f",{"2":{"446":1}}],["0x63a21cca14ed7454b9cf6466af422b5c597c6b57",{"2":{"433":1}}],["0x631998e91476da5b870d741192fc5cbc55f5a52e",{"2":{"19":1,"25":3,"29":1,"32":7,"34":3,"38":3,"39":3,"67":1,"169":2,"175":3,"177":3,"180":2,"459":1}}],["0x603a600e3d39601a805130553df3363d3d373d3d3d363d30545af43d82803e903d91601857fd5bf3",{"2":{"420":1}}],["0x6192e0fdcd868b3de01c7fbc0ad98baebd7330c1",{"2":{"415":1,"416":2}}],["0x44c2ea42fb006a613a7b41d142576ed6b5055902",{"2":{"484":1}}],["0x4dfe1bbbcf077ddc3e01291eea2d5c70c2b422b415d95645b9adcfd678cb1d63",{"2":{"476":1}}],["0x4d4ee1b8583e31fe789eaf2e1b6e011c220c10b6",{"2":{"439":2,"440":1,"476":6,"478":1}}],["0x49be8c81414fae655f1f4615f5b437ca5160bdd4e4d8ce06275338ec6fe2e20b",{"2":{"476":4}}],["0x48656c6c6f2c20686176652061206e69636520646179",{"2":{"468":1}}],["0x479f6a5b0c1728947318714963a583c56a78366a",{"2":{"459":1}}],["0x4f9555c73908b6a5b61e0a744cb4e00fce7b20743d5799e4cb1774081bc6b2ec192c740e50f1adec84605636e09c9cdf4d2f6629f9ce64d8d0f3ae10305ef90400",{"2":{"453":1,"459":1,"460":1}}],["0x4fbf69aa2a75f9942a768dc8da7804ec965f7bea",{"2":{"415":1,"416":2}}],["0x4b0fc0c7d42566958d60f92115ab95167c837c891e2f4fa62a75bfed30d86af7291051fe5c88985269286548a42bed5b70bb16588e48998206a2e7a547f527d101",{"2":{"451":1}}],["0x468e8e29f6cfb0f6b7ff10ec6a1ab516ec849c04",{"2":{"184":1,"186":1}}],["0x01047de46debeeb83e1270b80ae65996ea64ad2c033e330cfffe9b725bf078423140124dce0cfe0cab9a61b385ca74fe77cd5e8a7147bfd87052f334cfbadc45c79a",{"2":{"468":1}}],["0x095ae61e8207c7856ea273235d6badb69d815f5e",{"2":{"459":1}}],["0x061150e5574716dbb1a2cdf54b3dce9f94395f65",{"2":{"448":1}}],["0x02390f3e6e5fd1c6786cb78fd3027c117a9955a7",{"2":{"421":1}}],["0x0",{"2":{"411":1}}],["0x000000000000000000000000959c65b72147faf3450d8b50a0de57e72ffc5e0d",{"2":{"476":1}}],["0x00000000000000000000000000e91788bcb998379027d36e6407a9187d7f313c",{"2":{"476":1}}],["0x0000000000000000000000000000000000001010",{"2":{"476":1}}],["0x00000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000008800000002000000000001004000000000000000000000000000000000800000000000000000000100000000400000000200400000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000002000000000000000000000000000000004000008000000000000001000000000000000000000000000000100000020000000000000000000000002000000020020002020040000000000000000040100000",{"2":{"476":1}}],["0x0000000000000000000000000000000000000000000000000000000000001010",{"2":{"476":1}}],["0x0000000000000000000000000000000000000000000000000000000000000000",{"2":{"439":1,"476":2}}],["0x000000000000000000000000000000000000000000000000001284e7c67266000000000000000000000000000000000000000000000000014c0fa753f2298415000000000000000000000000000000000000000000001386f7e2c243dcc978070000000000000000000000000000000000000000000000014bfd226c2bb71e15000000000000000000000000000000000000000000001386f7f5472ba33bde07",{"2":{"476":1}}],["0x0000000000000000000000000000000000000000",{"2":{"476":1}}],["0x0000000000000000000000001119e72b4af230becebd933d0e07f0eec51d8c2a0000000000000000000000000000000000000000000000000000000000000001",{"2":{"439":1,"476":2}}],["0x00",{"2":{"333":1,"440":1,"476":1,"478":1}}],["0x",{"2":{"269":1,"270":3,"440":1,"447":1,"476":3,"478":1,"502":1,"503":3}}],["0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",{"2":{"481":1}}],["0x1",{"2":{"476":1}}],["0x15",{"2":{"476":1}}],["0x153824576d03629b264683b430bbf9acea1d0975",{"2":{"440":1,"476":1,"478":1}}],["0x14",{"2":{"476":1}}],["0x14a00",{"2":{"476":1}}],["0x140d72763d1ce39ad4e2e73ec6e8fc53e5b73b64",{"2":{"459":1}}],["0x17ffa2d95b58228e1ecb0c6ac25a6efd20ba08e4",{"2":{"459":1}}],["0x17b66009af459dc8ebf37acf8a8b355379be2fe5",{"2":{"25":2}}],["0x112233",{"2":{"459":1}}],["0x1f180c27086c7a39ea2a7b25239d1ab92348f07ca7bb59d1438fcf527568f881",{"2":{"439":1,"476":2}}],["0x16",{"2":{"476":1}}],["0x1626ba7e",{"2":{"411":2}}],["0x1693ffc74edbb50d6138517fe5cd64fd1c917709",{"2":{"182":2,"339":1}}],["0xbdeafd3ee0550a73f615d2baea2e3d6d48fc857d",{"2":{"484":1}}],["0xbc5f07a5852fdf3dbd57a76835109220d0add8e8",{"2":{"451":1,"453":1,"459":1,"460":1}}],["0xbc4ca0eda7647a8ab7c2061c2e118a18a936f13d",{"2":{"43":2}}],["0xbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",{"2":{"410":1}}],["0xb392c99d9f8e3e0b248e5c283818be5bf5cecca7",{"2":{"335":1}}],["0xb537a160472183f2150d42eb1c3dd6684a55f74c",{"2":{"182":2,"339":1}}],["0xc9d9b33231d24dd8cc53fdd64f7abdd156f2a7e2",{"2":{"459":1}}],["0xcf67bcbd9d5dfd373b03f4fc8143e1c6744b5696",{"2":{"451":1,"452":1,"453":1,"459":1,"460":2}}],["0xcccccccccccccccccccccccccccccccccccccccc",{"2":{"410":1}}],["0xc2be9cf6d9ee4fd211f88620760e829792659b16",{"2":{"182":2}}],["0xc852bf35cb7b54a33844b181e6fd163387d85868",{"2":{"180":1}}],["0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",{"2":{"52":2}}],["0xacc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",{"2":{"439":1,"476":2}}],["0xa9c88358862211870db6f18bc9b3f6e4f8b3eae7",{"2":{"182":2,"339":1}}],["0xabc",{"2":{"168":1,"169":1,"171":1,"173":1}}],["0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",{"2":{"52":2,"459":1}}],["0xa1c57f48f0deb89f569dfbe6e2b7f46d33606fd4",{"2":{"25":2}}],["0x839ee023b21f4ffe2294025de0ac30ba7278d6fd",{"2":{"440":2,"478":1}}],["0x8e3e38fe7367dd3b52d1e281e4e8400447c8d8b9",{"2":{"168":1,"169":1,"171":1,"173":1}}],["0x8f3cf7ad23cd3cadbd9735aff958023239c6a063",{"2":{"25":2}}],["0x8bb759bb68995343ff1e9d57ac85ff5c5fb79334",{"2":{"19":1}}],["0x7b7d7ba79542584f9aef539f6696c070a4e1ced6",{"2":{"468":1}}],["0x7b1bd3474d789e18e2e329e2c53f819b6e687b4a",{"2":{"459":1}}],["0x7efe6ce415956c5f80c6530cc6cc81b4808f6118",{"2":{"421":1}}],["0x7d1afa7b718fb893db30a3abc0cfc608aacfebb0",{"2":{"52":1}}],["0x7c0ebabfc394ec6d926e801fe0e69a1f15a7fe4d",{"2":{"25":2}}],["0x7227e371540cf7b8e512544ba6871472031f3335",{"2":{"25":2,"43":1}}],["0x2f63834",{"2":{"476":4}}],["0x28ec6ddcdbc0987a99dde19792ff0c9be69ad2be873fb9351353171b74d2df3380f0ffcae2b8cb37a0659e374859420500b4399a2aab0209ee7919aaea575ac7",{"2":{"468":1}}],["0x223344",{"2":{"459":1}}],["0x27cabc9700ee6db2797b6ac1e1ece81c72a2cd8d",{"2":{"446":1}}],["0x27a11c1563a5dda238379b95c91b3abbad9c0cf6",{"2":{"44":2}}],["0x2791bca1f2de4661ed88a30c99a7a9449aa84174",{"2":{"25":2,"66":1}}],["0x2953399124f0cbb46d2cbacd8a89cf0599974963",{"2":{"25":2}}],["0xsequence",{"0":{"244":1},"2":{"16":5,"17":2,"19":1,"25":2,"28":4,"29":2,"38":2,"39":4,"48":3,"49":2,"57":1,"59":1,"60":2,"63":4,"64":1,"79":1,"81":1,"84":10,"85":2,"86":4,"87":1,"88":1,"104":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"184":1,"190":1,"192":1,"193":5,"194":1,"200":4,"205":1,"206":5,"207":1,"212":4,"215":1,"216":2,"223":2,"225":1,"231":1,"233":1,"236":1,"237":4,"239":1,"240":2,"243":1,"244":3,"267":7,"268":3,"277":1,"359":1,"361":1,"375":7,"376":3,"409":1,"410":2,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1,"465":1,"477":1,"479":1,"482":1,"485":1,"487":1,"488":1,"495":1,"496":4,"498":1,"499":2,"510":1}}],["90",{"2":{"490":1,"492":1}}],["911",{"2":{"332":1}}],["96",{"2":{"51":2}}],["9",{"0":{"332":1},"2":{"43":3}}],["6492",{"2":{"237":1,"496":1}}],["6f1",{"2":{"108":1}}],["66597",{"2":{"67":1}}],["6",{"0":{"282":1,"329":1,"515":1},"2":{"52":1,"94":1,"341":1,"362":1}}],["65548",{"2":{"44":3}}],["65535",{"2":{"424":1}}],["65535required",{"2":{"413":1}}],["65539",{"2":{"38":2,"39":1}}],["65538",{"2":{"38":2,"39":1}}],["65537",{"2":{"38":2,"39":1}}],["65556",{"2":{"32":1}}],["6x",{"2":{"32":1,"44":1}}],["284892",{"2":{"451":1,"453":1}}],["230",{"2":{"435":1}}],["255",{"2":{"414":1}}],["24th",{"2":{"381":1}}],["2nd",{"2":{"381":1}}],["27c266b7",{"2":{"180":3}}],["2fa",{"2":{"94":2}}],["22",{"2":{"32":2,"436":3}}],["2123",{"2":{"436":2}}],["21",{"2":{"32":2,"34":1}}],["2",{"0":{"95":1,"278":1,"314":1,"325":1,"352":1,"511":1},"1":{"96":1,"97":1,"98":1,"99":1,"100":1},"2":{"32":1,"38":1,"39":2,"44":1,"84":3,"99":2,"104":1,"141":1,"155":1,"158":1,"165":1,"184":1,"186":1,"312":1,"324":1,"339":1,"350":2,"352":2,"415":2,"416":4,"418":2,"429":1,"459":1}}],["200000000000000000000",{"2":{"446":1}}],["200",{"2":{"262":1,"446":1}}],["2024",{"2":{"464":1}}],["2020",{"2":{"381":1,"382":1,"459":1}}],["2023",{"2":{"99":4,"383":1,"436":4}}],["2022",{"2":{"99":3}}],["2021",{"2":{"99":1,"108":1,"381":1}}],["20",{"0":{"271":1,"504":1},"2":{"32":8,"34":2,"270":1,"271":3,"272":1,"464":1,"503":1,"504":3,"505":1}}],["42161",{"2":{"439":1,"446":1}}],["42",{"2":{"436":4}}],["462de2756e45c93698b89ada5ba4a3c9d1bfb9fb354ad2e7f36f1a9fefbc550b",{"2":{"185":4}}],["4046",{"2":{"180":3}}],["4",{"0":{"280":1,"327":1,"513":1},"2":{"32":1,"339":1,"410":1,"415":1}}],["486",{"2":{"3":8}}],["\tmessage",{"2":{"410":1}}],["\tdomain",{"2":{"410":1}}],["\tprimarytype",{"2":{"410":1}}],["\ttypes",{"2":{"410":1}}],["\ttokenbalances",{"2":{"168":1,"171":1}}],["\tok",{"2":{"180":1}}],["\turl",{"2":{"180":1}}],["\tfilter",{"2":{"173":2,"175":2,"177":1}}],["\tfmt",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1}}],["\tnftbalances",{"2":{"169":1}}],["\tcontractaddress",{"2":{"169":1,"175":1,"177":1}}],["\tif",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1}}],["\tincludemetadata",{"2":{"168":2,"169":2,"171":1,"173":2,"175":1,"177":2}}],["\tseqindexer",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1}}],["\taccountaddress",{"2":{"168":1,"169":1,"171":1,"173":1}}],["\t\twallet",{"2":{"410":1}}],["\t\tverifyingcontract",{"2":{"410":1}}],["\t\tversion",{"2":{"410":1}}],["\t\tcount",{"2":{"410":1}}],["\t\tcontractaddress",{"2":{"175":1,"177":1}}],["\t\tchainid",{"2":{"410":1}}],["\t\tname",{"2":{"410":2}}],["\t\tperson",{"2":{"410":1}}],["\t\tposition",{"2":{"68":1}}],["\t\t\t",{"2":{"180":1,"410":3,"459":2}}],["\t\t\t\t\t\t\t\t",{"2":{"459":2}}],["\t\t\t\t\t\t\t",{"2":{"459":4}}],["\t\t\t\t\t\t",{"2":{"459":5}}],["\t\t\t\t\t",{"2":{"459":4}}],["\t\t\t\t",{"2":{"180":1,"459":3}}],["\t\t\t\taccounts",{"2":{"180":1}}],["\t\t\tfilters",{"2":{"180":1}}],["\t\t\turl",{"2":{"180":1}}],["\t\taccountaddress",{"2":{"173":1}}],["\t\tlog",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1}}],["\t\t",{"2":{"68":1,"180":2,"410":1}}],["\t\tdefaulttheme",{"2":{"68":1}}],["\tverifiedonly",{"2":{"17":1}}],["\t",{"2":{"17":1,"25":1,"29":1,"38":1,"39":2,"49":1,"68":1,"168":6,"169":6,"171":7,"173":9,"175":9,"177":8,"180":7,"410":3}}],["🌄",{"2":{"15":1,"47":1}}],["qmw5gvygwb98gsn8vjtrwu4pln6jryexnxzknwpphvwtdm",{"2":{"332":1}}],["qmdjzqexj2wnny7pnnn4kauzckjh4va5xhoxmmis919ev3",{"2":{"325":1}}],["qmuqgkka8ew7exiuhnmwz4uoxa11wv7nfjhaogvabassyy",{"2":{"43":1}}],["qr",{"2":{"266":2}}],["qatar",{"2":{"13":1}}],["quantstamp",{"0":{"381":1},"2":{"380":1}}],["quantityremaining",{"2":{"183":1}}],["quantityraw",{"2":{"67":1}}],["quantity",{"2":{"183":1}}],["quick",{"2":{"357":1}}],["quicker",{"2":{"116":1}}],["quickly",{"2":{"55":1,"338":1,"357":1,"374":1}}],["quickstart",{"0":{"53":1,"336":1,"357":1,"372":1},"1":{"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"337":1,"338":1,"339":1,"340":1,"358":1,"359":1,"360":1,"361":1,"373":1,"374":1,"375":1,"376":1},"2":{"164":1,"166":1,"356":1}}],["quite",{"2":{"31":1}}],["quote",{"2":{"184":1,"186":1}}],["quot",{"2":{"3":4,"6":8,"17":8,"19":16,"24":2,"25":46,"29":8,"32":78,"37":2,"38":44,"39":56,"43":93,"44":68,"49":2,"52":88,"93":2,"99":58,"102":2,"104":8,"105":14,"106":4,"111":2,"114":2,"115":2,"118":8,"119":10,"125":12,"133":14,"145":2,"160":2,"168":26,"169":30,"171":24,"173":30,"175":28,"177":26,"180":34,"182":54,"183":6,"184":10,"185":22,"186":8,"190":8,"207":6,"236":2,"244":38,"255":2,"256":2,"257":12,"258":2,"259":6,"260":4,"261":2,"266":2,"267":13,"268":4,"285":4,"286":4,"289":4,"291":4,"293":4,"295":6,"303":8,"305":4,"307":2,"308":2,"324":12,"325":12,"328":2,"329":2,"334":4,"335":2,"339":32,"375":13,"376":4,"380":6,"390":6,"409":4,"411":2,"413":4,"414":10,"415":28,"420":20,"422":2,"423":2,"428":2,"429":4,"431":2,"433":10,"435":10,"436":82,"437":2,"439":74,"440":76,"445":2,"446":6,"447":6,"448":6,"451":36,"452":32,"453":38,"454":2,"455":2,"456":2,"457":2,"458":2,"459":254,"460":34,"464":16,"465":16,"466":2,"467":2,"468":36,"476":288,"478":66,"481":14,"484":14,"495":2}}],["queried",{"2":{"148":1,"183":1,"405":1,"406":1}}],["queries",{"2":{"16":1,"17":1,"22":1,"302":1}}],["querycontractmessagesender",{"2":{"305":1}}],["querycontract",{"2":{"305":2}}],["queryclient",{"2":{"63":1,"81":1,"85":4,"86":5}}],["queryclientprovider",{"2":{"63":2,"81":2,"85":3,"86":5}}],["querying",{"0":{"305":1},"2":{"19":1,"32":1,"43":1,"44":1,"46":1,"302":1,"305":1,"309":1}}],["query",{"2":{"1":1,"14":1,"16":1,"17":1,"20":6,"24":2,"27":1,"31":3,"32":6,"37":2,"84":3,"85":1,"86":1,"168":1,"169":1,"171":1,"173":1,"175":6,"177":6,"305":3}}],["questions",{"2":{"191":1,"237":1,"496":1}}],["question",{"2":{"0":1,"470":1}}],["=0",{"2":{"214":1}}],["==",{"2":{"186":1,"429":1}}],["===",{"2":{"184":1,"282":1,"455":1,"457":1,"515":1}}],["=",{"0":{"200":1,"212":1},"2":{"6":3,"16":2,"17":5,"25":4,"28":1,"29":2,"38":4,"39":8,"59":1,"63":2,"64":6,"65":1,"66":2,"68":1,"80":4,"81":3,"85":8,"86":10,"87":6,"88":5,"102":2,"109":1,"120":2,"122":2,"124":2,"128":2,"131":2,"133":7,"168":7,"169":8,"171":7,"173":8,"175":9,"177":8,"180":5,"182":2,"184":15,"185":2,"186":9,"189":3,"190":3,"194":1,"200":1,"206":1,"207":2,"212":1,"217":3,"225":2,"226":5,"235":2,"236":2,"237":6,"244":11,"245":1,"269":13,"270":13,"271":12,"272":13,"273":3,"277":3,"278":3,"279":2,"280":3,"281":2,"282":1,"283":1,"285":2,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":2,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":1,"303":10,"305":6,"306":2,"309":7,"311":2,"313":2,"314":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":2,"361":1,"390":4,"398":1,"403":1,"404":1,"409":3,"410":4,"411":1,"416":3,"418":3,"420":6,"421":1,"430":2,"433":3,"434":4,"435":14,"436":2,"437":2,"439":2,"440":2,"444":1,"445":2,"446":2,"447":1,"448":2,"477":1,"479":1,"482":1,"485":1,"487":1,"488":1,"494":2,"495":2,"496":6,"502":13,"503":13,"504":12,"505":13,"506":3,"510":3,"511":3,"512":2,"513":3,"514":2,"515":1}}],["yayxahnsi",{"2":{"357":1}}],["yarn",{"2":{"6":1,"16":1,"48":1,"63":1,"84":1,"193":1,"200":1,"206":1,"212":1,"216":1,"267":1,"375":1}}],["y",{"2":{"107":1,"140":1}}],["yet",{"2":{"116":1,"403":1,"406":1,"450":1,"466":1}}],["yes",{"2":{"105":1}}],["yemen",{"2":{"13":1}}],["york",{"2":{"12":1}}],["you",{"2":{"2":4,"3":5,"5":2,"11":1,"14":1,"15":3,"16":3,"17":2,"20":4,"21":1,"22":1,"23":1,"28":1,"31":1,"32":6,"35":1,"44":1,"45":2,"47":1,"52":4,"57":1,"58":2,"59":2,"61":1,"68":1,"79":2,"80":3,"81":2,"83":1,"84":1,"87":1,"89":1,"92":1,"93":2,"96":1,"97":1,"99":4,"101":5,"102":8,"104":5,"105":6,"106":8,"108":1,"109":1,"110":4,"111":4,"112":4,"114":1,"115":5,"116":4,"117":6,"118":3,"119":3,"120":5,"121":3,"122":5,"123":3,"124":5,"125":13,"126":3,"128":4,"130":7,"131":2,"133":5,"134":3,"135":5,"138":4,"139":2,"143":1,"144":1,"145":2,"146":7,"147":3,"148":1,"149":2,"153":1,"155":4,"156":4,"157":2,"158":5,"159":2,"161":1,"163":2,"164":2,"165":2,"168":2,"169":1,"171":1,"173":1,"175":3,"177":2,"179":2,"180":1,"181":1,"184":1,"191":6,"200":1,"204":1,"206":1,"212":1,"236":4,"237":4,"241":1,"242":4,"243":2,"244":9,"266":1,"267":3,"269":1,"270":1,"271":2,"272":1,"273":1,"282":1,"283":4,"285":2,"302":4,"303":7,"304":2,"305":3,"306":2,"307":2,"309":4,"310":2,"311":1,"314":2,"315":1,"319":3,"320":3,"321":2,"323":1,"324":4,"327":1,"330":1,"331":4,"332":4,"333":1,"334":1,"335":5,"340":1,"341":2,"351":3,"352":2,"355":2,"356":1,"357":6,"359":1,"360":2,"361":2,"362":2,"375":2,"379":1,"432":3,"434":1,"435":2,"443":1,"448":1,"450":3,"461":1,"463":1,"466":2,"488":1,"495":4,"496":4,"500":1,"501":4,"502":1,"503":1,"504":2,"505":1,"506":1,"515":1}}],["yourself",{"2":{"351":1,"432":1}}],["yoursite",{"2":{"244":2,"256":1}}],["yours",{"2":{"163":1}}],["yourcallshowauthfailurescreen",{"2":{"133":1}}],["yourcallreadytoreceivecode",{"2":{"133":1}}],["your",{"0":{"82":1,"202":1,"244":1,"264":1,"324":1,"326":1,"329":1,"377":1},"1":{"203":1,"378":1},"2":{"0":1,"2":2,"3":3,"4":1,"5":2,"6":2,"14":2,"15":2,"17":1,"19":4,"20":4,"22":1,"24":1,"28":2,"29":1,"31":1,"32":1,"37":1,"41":2,"45":1,"47":1,"49":1,"50":3,"52":2,"63":1,"80":2,"81":2,"82":2,"83":1,"85":3,"90":2,"91":3,"92":1,"93":2,"99":1,"101":1,"102":4,"104":3,"105":2,"106":3,"107":1,"110":3,"112":2,"114":2,"115":3,"116":1,"119":2,"120":1,"122":1,"124":1,"125":1,"126":1,"128":4,"130":1,"133":1,"134":4,"135":1,"142":1,"143":1,"145":2,"146":5,"147":2,"148":1,"149":2,"153":2,"155":2,"156":2,"157":1,"158":1,"159":2,"160":2,"161":1,"162":2,"163":8,"165":2,"166":1,"168":1,"171":1,"180":1,"184":8,"191":2,"202":2,"203":3,"204":1,"236":4,"237":5,"242":3,"243":2,"244":8,"256":1,"266":1,"267":4,"283":3,"284":1,"307":1,"309":2,"310":1,"311":1,"323":1,"324":2,"325":2,"326":2,"327":1,"328":3,"329":2,"330":1,"331":3,"333":2,"334":1,"335":1,"338":1,"340":1,"351":1,"352":1,"355":1,"357":3,"360":1,"370":1,"375":4,"377":2,"378":3,"379":1,"409":1,"410":1,"432":1,"433":1,"443":1,"461":1,"467":1,"495":4,"496":5,"501":3}}],["runtime",{"2":{"386":1}}],["runs",{"2":{"244":2,"354":1,"357":1,"465":1,"491":1}}],["running",{"2":{"145":1,"190":1,"245":1,"340":1,"354":1,"461":1,"466":1}}],["run",{"2":{"108":1,"145":4,"243":1,"465":1}}],["russian",{"2":{"13":1}}],["risk",{"2":{"461":1}}],["risks",{"2":{"367":1}}],["ripped",{"2":{"105":1}}],["right",{"2":{"71":3,"107":1,"115":1,"149":1,"430":1}}],["rotation",{"2":{"347":1}}],["rotate",{"2":{"128":1}}],["root",{"2":{"110":1,"435":1,"476":1}}],["robust",{"2":{"90":1,"202":1,"377":1}}],["router=",{"2":{"435":1}}],["routerprovider",{"2":{"435":2}}],["router",{"2":{"199":6,"201":2,"213":6,"214":2,"435":7}}],["route",{"2":{"20":1,"106":1,"302":1}}],["routes",{"2":{"20":1}}],["ration",{"2":{"256":1}}],["ratio",{"2":{"244":2}}],["rather",{"2":{"117":1,"302":1}}],["rainbow",{"2":{"192":1,"194":1,"345":1}}],["rainbowkit",{"0":{"192":1},"1":{"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1},"2":{"191":1,"192":3,"193":3,"194":3,"196":1,"199":1,"201":1,"209":1}}],["range",{"2":{"186":1,"289":1}}],["randombytes",{"2":{"278":1,"511":1}}],["random",{"2":{"44":1,"313":1,"397":1,"425":1}}],["rawtransactions",{"2":{"120":1,"122":1,"124":1}}],["rawtransaction",{"0":{"118":1},"2":{"118":1,"120":2,"122":2,"124":2,"126":2}}],["raw",{"0":{"455":1},"2":{"52":1,"118":2}}],["ramps",{"0":{"341":1,"362":1}}],["ramp",{"2":{"11":1,"244":2,"260":1,"341":5,"362":5}}],["rhode",{"2":{"12":1}}],["rpcurl",{"2":{"6":2,"184":2,"237":3,"496":3}}],["rpc",{"0":{"35":1,"36":1},"2":{"5":2,"6":2,"15":2,"19":3,"25":2,"31":6,"33":3,"35":2,"36":1,"38":2,"39":4,"52":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":2,"185":1,"283":2,"339":1,"355":1}}],["reorganizationno",{"2":{"475":1}}],["reused",{"2":{"471":1}}],["rejected",{"2":{"389":1,"397":1,"455":1}}],["rewrite",{"2":{"309":2}}],["reverted",{"2":{"439":1}}],["revert",{"2":{"400":1,"475":1}}],["revertonerror",{"0":{"400":1},"2":{"186":1,"398":2,"400":1,"403":1,"404":1}}],["revertreason",{"2":{"185":1,"439":2,"476":2}}],["req",{"2":{"180":3}}],["requiring",{"2":{"244":1,"274":1,"275":1,"309":1,"448":1,"507":1,"508":1}}],["requirefreshsigner",{"2":{"421":1}}],["required",{"0":{"486":1},"1":{"487":1},"2":{"98":1,"107":1,"133":1,"158":1,"159":1,"186":2,"243":1,"292":1,"302":1,"350":1,"352":1,"423":1,"429":1,"446":1,"467":1,"487":1}}],["requirements",{"0":{"108":1,"141":1},"2":{"95":1,"156":1}}],["require",{"2":{"50":1,"131":1,"188":1,"190":1,"237":1,"275":1,"309":1,"366":1,"402":1,"431":1,"433":1,"442":1,"443":1,"450":1,"488":1,"496":1,"508":1}}],["requires",{"2":{"1":1,"2":1,"4":1,"16":1,"25":1,"28":1,"38":1,"112":1,"128":1,"158":1,"168":1,"267":1,"273":1,"283":1,"375":1,"446":1,"506":1}}],["requested",{"2":{"452":1}}],["requestsendtransactionpayloadthe",{"2":{"478":1}}],["requests",{"0":{"152":1},"2":{"15":1,"20":1,"35":1,"47":1,"147":1,"148":1,"152":1,"266":1,"283":1,"460":1}}],["request",{"2":{"2":1,"3":1,"4":1,"20":1,"24":1,"25":1,"32":2,"37":1,"38":1,"39":3,"82":1,"126":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"183":1,"266":1,"339":1,"439":1,"440":1,"466":2,"475":1,"476":1,"478":1}}],["remaining",{"2":{"364":1}}],["removed",{"2":{"367":1,"475":1,"476":3}}],["remove",{"2":{"367":1}}],["removing",{"2":{"125":1}}],["remotely",{"2":{"243":1}}],["remoteconfigtracker",{"2":{"237":1,"496":1}}],["remote",{"2":{"237":1,"409":1,"410":1,"496":1}}],["remember",{"2":{"145":1,"433":1}}],["reduces",{"2":{"459":1}}],["reduced",{"2":{"428":1}}],["reduce",{"2":{"168":1,"169":1,"173":1,"177":1,"275":1,"417":1,"508":1}}],["reducing",{"2":{"128":1}}],["redirect",{"2":{"155":1,"247":1}}],["reddit",{"2":{"101":1,"102":1,"111":1,"117":1}}],["retrieving",{"0":{"405":1,"406":1},"1":{"406":1}}],["retrieve",{"2":{"181":1,"244":1,"273":1,"282":1,"506":1,"515":1}}],["retrieved",{"2":{"52":1}}],["returning",{"2":{"448":1}}],["returns",{"2":{"24":1,"120":1,"122":1,"124":1,"186":1,"316":1,"392":1,"406":1,"411":1,"436":1,"444":1,"445":4,"446":2,"466":1}}],["return",{"0":{"394":1},"2":{"3":1,"43":1,"44":1,"63":1,"64":1,"80":2,"81":1,"85":1,"86":2,"87":1,"88":1,"118":1,"168":3,"169":1,"173":1,"177":1,"184":1,"189":2,"190":2,"250":1,"296":1,"301":1,"305":1,"405":1,"411":5,"430":4,"435":3,"438":1,"439":1,"448":1}}],["returned",{"2":{"3":2,"19":1,"39":1,"95":1,"130":1,"236":1,"254":1,"409":1,"410":1,"440":1,"495":1}}],["reload",{"2":{"335":1}}],["relaying",{"2":{"242":1,"501":1}}],["relayerfeeoption",{"2":{"186":1}}],["relayerurl",{"2":{"184":2}}],["relayer",{"0":{"50":1},"1":{"51":1,"52":1},"2":{"47":7,"49":1,"50":6,"52":6,"184":4,"185":5,"186":4}}],["relevant",{"2":{"155":1,"439":1}}],["release",{"2":{"106":1,"466":1}}],["rely",{"2":{"81":1}}],["reliable",{"2":{"20":1}}],["reflect",{"2":{"266":1}}],["refreshedat",{"2":{"436":2}}],["refreshes",{"2":{"115":1}}],["refreshjobstatus",{"2":{"39":3}}],["refreshjob",{"2":{"39":1}}],["refresh",{"0":{"252":1},"2":{"39":3,"40":2,"252":2,"335":3}}],["refreshing",{"0":{"39":1},"1":{"40":1}}],["referencing",{"2":{"389":1,"397":1,"402":1}}],["references",{"2":{"16":1,"17":1,"380":1}}],["reference",{"0":{"31":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1},"2":{"15":2,"35":2,"47":2,"93":1,"120":1,"122":1,"124":1}}],["referred",{"2":{"123":1}}],["refer",{"2":{"11":1,"13":1,"57":1,"80":1,"85":1,"142":1,"143":1}}],["rendered",{"2":{"188":1,"189":1,"190":4,"255":1,"397":1,"403":1}}],["rendering",{"2":{"173":1,"188":1,"189":2,"199":1,"213":1}}],["render",{"2":{"20":3,"177":1,"188":1,"400":1,"435":1}}],["recursive",{"2":{"430":1}}],["recipientaddress",{"2":{"270":1,"271":1,"272":1,"273":1,"311":1,"503":1,"504":1,"505":1,"506":1}}],["recipient",{"2":{"270":1,"271":1,"272":1,"446":1,"455":1,"456":1,"457":1,"458":1,"503":1,"504":1,"505":1}}],["recipient4address",{"2":{"269":1,"502":1}}],["recipient3address",{"2":{"269":1,"502":1}}],["recipient2address",{"2":{"269":2,"270":1,"271":1,"272":1,"502":2,"503":1,"504":1,"505":1}}],["recipient1address",{"2":{"269":2,"270":1,"271":1,"272":1,"502":2,"503":1,"504":1,"505":1}}],["recovered",{"2":{"492":1}}],["recoveredsessionaddress",{"2":{"282":2,"515":2}}],["recover",{"2":{"490":1,"492":1}}],["recovering",{"2":{"158":1}}],["recovery",{"0":{"158":1,"489":1,"492":1},"1":{"490":1,"491":1,"492":1},"2":{"158":4,"347":1,"353":1,"489":2,"490":2,"492":1}}],["recognize",{"2":{"102":1,"106":1}}],["recommendations",{"2":{"367":1}}],["recommended",{"0":{"104":1},"1":{"105":1},"2":{"102":1,"111":1,"117":1,"119":1,"120":1,"122":1,"124":1,"125":1,"165":1,"189":1,"190":1,"194":1,"285":1,"295":1,"302":1,"309":1,"311":1,"321":1}}],["recommend",{"2":{"16":1,"19":1,"28":1,"31":1,"33":1,"45":1,"93":2,"102":1,"109":1,"125":1,"158":1}}],["receiptnologsmetatxnreceiptlog",{"2":{"475":1}}],["receiptnostatusstringstatus",{"2":{"475":1}}],["receiptsnotxnreceiptstringstring",{"2":{"475":1}}],["receipts",{"0":{"185":1,"438":1},"1":{"439":1,"440":1},"2":{"320":1,"438":2,"439":1,"476":2}}],["receipt",{"0":{"475":1},"1":{"476":1,"477":1},"2":{"126":1,"185":4,"186":4,"301":1,"303":5,"306":1,"309":2,"311":1,"318":1,"320":1,"439":4,"475":1,"476":1,"477":1,"488":2}}],["receives",{"2":{"445":1}}],["received",{"2":{"101":1,"130":1,"488":1}}],["receive",{"2":{"94":1,"102":1,"126":1,"134":1,"302":1,"304":1,"319":2,"320":2}}],["recent",{"2":{"20":1,"199":1,"213":1,"288":1,"463":1}}],["reason",{"2":{"403":1,"439":1,"440":1,"476":1,"478":1}}],["reasons",{"2":{"397":1}}],["reaches",{"2":{"429":1}}],["reached",{"2":{"409":1,"410":1}}],["reach",{"2":{"116":1,"191":1,"237":1,"496":1}}],["reactdom",{"2":{"435":1}}],["react",{"0":{"89":1,"222":1},"1":{"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1},"2":{"84":3,"85":1,"86":1,"88":1,"191":1,"222":3,"223":1,"225":2,"226":1,"230":1,"435":8}}],["really",{"2":{"242":1,"285":1,"501":1}}],["realm",{"2":{"90":1,"126":1,"202":1,"377":1}}],["real",{"2":{"19":1,"20":2,"148":2,"355":1,"466":1}}],["reader",{"2":{"237":1,"496":1}}],["readable",{"2":{"119":1,"125":1}}],["reading",{"0":{"390":1},"2":{"109":1}}],["ready",{"2":{"92":1,"134":1,"204":1,"330":1,"335":1,"356":1,"357":1,"360":1,"379":1}}],["read",{"0":{"109":1},"2":{"15":1,"27":1,"35":1,"43":1,"47":1,"106":2,"119":2,"244":1,"305":1,"335":1,"390":1}}],["re",{"2":{"16":1,"20":1,"28":1,"92":1,"101":2,"102":1,"107":1,"111":1,"117":1,"119":1,"125":3,"135":1,"140":1,"204":1,"243":1,"252":1,"379":1,"431":1}}],["reports",{"2":{"380":1}}],["repo",{"2":{"264":1}}],["repository",{"2":{"89":1,"357":1,"435":1,"465":1}}],["representation",{"2":{"469":1,"475":1}}],["representing",{"2":{"469":1}}],["represent",{"2":{"168":1,"426":1}}],["represents",{"2":{"150":1,"152":1,"403":1,"428":1,"429":1}}],["represented",{"2":{"46":1,"118":2,"427":1}}],["replay",{"2":{"51":1,"251":1,"435":1}}],["replaced",{"2":{"112":1}}],["replace",{"2":{"6":1,"99":1,"105":1,"110":1,"112":1,"364":1,"367":1,"431":1}}],["republic",{"2":{"13":2}}],["regardless",{"2":{"473":1}}],["region",{"2":{"341":1,"362":1}}],["regions",{"0":{"11":1,"13":1},"1":{"12":1,"13":1},"2":{"11":3}}],["registers",{"2":{"145":1}}],["registersession",{"2":{"128":1,"130":1}}],["registered",{"2":{"130":1,"134":1,"469":1}}],["registering",{"0":{"180":1},"2":{"129":1}}],["register",{"2":{"95":2,"128":2}}],["registry",{"2":{"20":1}}],["regulations",{"2":{"11":1,"13":1}}],["resembling",{"2":{"483":1,"486":1}}],["resource",{"2":{"105":1}}],["resources",{"2":{"104":1,"110":6,"339":1}}],["res",{"2":{"99":2,"182":3,"433":2,"477":2,"479":2,"482":2,"485":2,"487":2,"488":3}}],["resulting",{"2":{"409":1,"410":1,"411":1}}],["result",{"2":{"32":1,"102":3,"117":2,"118":1,"128":1,"139":2,"305":1,"354":1,"388":1,"429":1,"440":1,"445":2,"475":1,"476":1,"478":2}}],["resultsyes",{"2":{"475":1}}],["results",{"2":{"19":3,"115":1,"478":1}}],["restofonboardparams",{"2":{"217":1}}],["restwallets",{"2":{"217":1}}],["restarted",{"2":{"99":1}}],["rest",{"0":{"31":1,"34":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1},"2":{"20":1,"27":1,"31":3,"33":2,"34":1,"189":1,"190":1,"314":1,"351":1,"391":1}}],["restricted",{"0":{"11":1},"1":{"12":1,"13":1}}],["respect",{"2":{"411":1}}],["respectively",{"2":{"429":1,"448":1}}],["respective",{"2":{"18":1,"30":1,"191":1}}],["responds",{"2":{"186":1}}],["responsibility",{"2":{"354":1,"397":1,"429":1}}],["responsible",{"2":{"146":1}}],["responsive",{"2":{"128":1,"283":1}}],["responsenodataobjectholds",{"2":{"473":1}}],["response",{"0":{"439":1,"440":1,"472":1,"473":1,"475":1,"478":1,"480":1,"483":1,"486":1},"1":{"473":1,"474":1,"475":1,"476":2,"477":2,"478":1,"479":2,"480":1,"481":2,"482":2,"483":1,"484":2,"485":2,"486":1,"487":2,"488":1},"2":{"32":2,"43":1,"131":2,"168":2,"169":1,"173":2,"177":1,"183":1,"185":1,"186":2,"269":4,"302":1,"439":2,"440":2,"466":1,"472":2,"473":2,"475":1,"477":1,"478":1,"479":1,"482":1,"485":1,"486":1,"487":1,"488":2,"502":4}}],["responses",{"0":{"474":1},"1":{"475":1,"476":1,"477":1,"478":1,"479":1,"480":1,"481":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"488":1},"2":{"20":1,"32":1,"473":1,"477":1,"479":1,"482":1,"485":1,"487":1,"488":2}}],["resilient",{"2":{"5":1,"20":1}}],["v1",{"2":{"464":1,"465":4}}],["v18",{"2":{"16":1,"28":1}}],["vulnerate",{"2":{"353":1}}],["v3",{"2":{"237":1,"496":1}}],["v2",{"2":{"232":1,"237":2,"423":1,"496":2}}],["v6",{"0":{"222":1},"1":{"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1},"2":{"222":2,"223":1,"225":1,"230":1}}],["volume",{"2":{"148":1}}],["void",{"2":{"101":1,"102":3,"111":2,"117":3,"131":2,"133":5}}],["v",{"2":{"39":2,"184":1}}],["vs",{"0":{"45":1},"2":{"31":1}}],["ve",{"2":{"41":1,"45":1,"96":1,"97":1,"101":2,"105":1,"115":1,"120":1,"121":1,"122":1,"124":1,"125":1,"128":2,"130":1,"133":2,"134":1,"191":1,"243":2,"283":1,"307":1,"309":1,"331":1,"334":1,"488":1}}],["ver",{"2":{"464":2,"465":1}}],["verifies",{"2":{"411":1}}],["verifiedonly",{"2":{"19":2,"168":2,"169":2,"173":2,"177":2}}],["verified",{"2":{"19":3,"117":1,"168":1,"169":1,"173":1,"177":1,"248":1,"353":1,"411":1}}],["verification",{"0":{"411":1,"461":1},"1":{"462":1,"463":1,"464":1,"465":1,"466":1},"2":{"354":1,"408":1,"442":1,"443":1,"463":1}}],["verifiable",{"2":{"275":1,"508":1}}],["verifying",{"2":{"352":1,"461":1}}],["verifymessage",{"2":{"282":1,"515":1}}],["verify",{"0":{"280":1,"282":1,"513":1,"515":1},"2":{"236":2,"237":1,"242":1,"280":1,"282":1,"351":1,"354":1,"461":1,"465":1,"495":2,"496":1,"501":1,"513":1,"515":1}}],["versioning",{"2":{"107":1,"140":1}}],["version",{"0":{"190":1},"2":{"105":1,"106":1,"107":3,"115":1,"140":3,"188":1,"200":2,"206":2,"212":2,"214":2,"267":1,"354":1,"375":1,"450":1,"451":1,"452":1,"453":1,"459":1,"460":1,"465":1,"468":1}}],["version=v1",{"2":{"465":1}}],["version=",{"2":{"99":2}}],["versions",{"0":{"189":1,"200":1,"212":1},"2":{"99":3,"188":1,"214":1,"222":1,"463":1}}],["versa",{"2":{"45":1}}],["very",{"2":{"19":1,"102":1,"110":1,"118":1,"131":1,"145":1,"243":1}}],["venezuela",{"2":{"13":1}}],["virtual",{"2":{"346":1,"411":1}}],["virtually",{"2":{"51":1}}],["visualizations",{"2":{"148":1}}],["visibility",{"2":{"128":1}}],["visible",{"2":{"128":1,"341":1,"362":1}}],["viem",{"2":{"84":4,"200":1,"212":1}}],["viewable",{"2":{"117":1}}],["view",{"2":{"15":1,"47":1,"78":3,"99":2,"128":2,"146":1,"330":1,"357":1,"392":1,"411":1,"439":1,"440":1,"459":1}}],["vice",{"2":{"45":1}}],["via",{"0":{"266":1},"2":{"22":1,"39":2,"40":1,"52":1,"79":1,"91":1,"95":2,"102":2,"106":3,"110":1,"115":1,"147":1,"150":1,"151":1,"179":1,"185":1,"193":1,"203":1,"206":1,"223":1,"243":4,"266":3,"268":1,"309":1,"317":1,"318":1,"319":1,"320":1,"341":3,"352":1,"362":3,"364":1,"376":1,"378":1,"443":1}}],["video",{"2":{"3":2,"164":1,"191":1}}],["vary",{"2":{"267":1,"375":1}}],["var",{"2":{"186":1}}],["varies",{"2":{"390":1}}],["variety",{"2":{"15":1,"47":1,"50":1,"162":1,"164":1}}],["variable",{"2":{"125":1}}],["variables",{"2":{"125":1,"131":2}}],["variation",{"2":{"120":1,"122":1,"124":1}}],["various",{"2":{"23":1,"71":1,"84":1,"181":1,"214":1,"355":1}}],["vals",{"2":{"459":1}}],["valuable",{"2":{"147":1}}],["valueasstring",{"2":{"125":2,"126":1}}],["value=",{"2":{"99":2}}],["value",{"0":{"402":1},"2":{"43":8,"44":1,"118":4,"119":1,"149":1,"184":1,"186":2,"229":1,"248":1,"269":5,"270":2,"271":2,"273":1,"304":1,"354":1,"390":1,"398":2,"402":1,"404":1,"411":3,"424":1,"425":1,"430":2,"439":1,"440":2,"446":1,"447":1,"448":1,"455":1,"459":4,"465":2,"466":1,"476":1,"478":1,"502":5,"503":2,"504":2,"506":1}}],["valuestringthe",{"2":{"459":1}}],["values",{"0":{"394":1},"2":{"3":1,"70":1,"71":1,"76":1,"77":1,"110":1,"115":1,"118":1,"125":1,"285":1,"286":1,"289":1,"291":1,"293":1,"295":1,"420":1,"464":1,"466":2}}],["validity",{"2":{"398":1}}],["valid`",{"2":{"237":1,"496":1}}],["validationrequired",{"2":{"486":1,"488":1}}],["validations",{"0":{"447":1}}],["validation",{"0":{"391":1,"441":1,"444":1,"445":1,"448":1,"486":1},"1":{"392":1,"393":1,"394":1,"442":1,"443":1,"444":1,"445":2,"446":3,"447":2,"448":1,"487":1},"2":{"391":1,"431":1,"433":1,"434":2,"443":1,"444":2,"445":1,"446":5,"447":3,"448":4,"466":1,"486":1,"487":1,"488":2}}],["validating",{"2":{"237":1,"429":1,"496":1}}],["validated",{"2":{"393":1,"397":1,"417":2,"445":1,"471":1}}],["validatesession",{"2":{"445":2}}],["validatesequencewalletproof",{"2":{"237":2,"496":2}}],["validates",{"2":{"392":1,"431":1}}],["validate",{"2":{"237":1,"391":1,"392":1,"411":2,"420":1,"442":1,"445":1,"496":1}}],["validator",{"2":{"237":3,"496":3}}],["valid",{"0":{"416":1},"2":{"130":1,"133":1,"157":1,"183":1,"244":1,"282":1,"333":1,"354":1,"397":1,"403":1,"411":4,"413":1,"423":1,"424":1,"428":1,"429":1,"436":1,"445":1,"452":1,"471":1,"515":1}}],["jxlg9b",{"2":{"452":1}}],["join",{"2":{"451":1,"453":1}}],["joined",{"2":{"409":1,"410":1}}],["job",{"2":{"39":2}}],["jobid",{"2":{"39":1}}],["jelly",{"2":{"357":1}}],["jq",{"2":{"52":1,"185":1}}],["java",{"2":{"242":1,"501":1}}],["javascript",{"2":{"15":1,"237":1,"239":1,"496":1,"498":1}}],["jacket",{"2":{"43":1}}],["jpg",{"2":{"32":1}}],["july",{"2":{"381":1}}],["just",{"2":{"19":1,"32":1,"46":1,"91":1,"101":1,"105":1,"125":2,"128":1,"133":1,"146":1,"203":1,"236":1,"242":1,"243":3,"334":1,"378":1,"495":1,"501":1}}],["jurisdictions",{"2":{"11":1,"13":1}}],["js",{"0":{"16":1,"28":1,"48":1,"188":1,"189":1,"190":1,"264":2,"268":1,"376":1},"2":{"15":1,"16":1,"25":1,"28":1,"35":1,"38":1,"39":2,"47":1,"61":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"188":2,"190":1,"191":1,"241":1,"242":1,"243":2,"267":3,"268":3,"375":1,"376":3,"500":1,"501":1}}],["jsonrpcprovider",{"2":{"6":1,"237":1,"390":1,"496":1}}],["json",{"2":{"3":2,"25":3,"32":1,"38":3,"39":6,"43":1,"44":1,"52":1,"106":2,"168":3,"169":3,"171":3,"173":3,"175":3,"177":3,"180":3,"182":4,"183":3,"184":1,"185":1,"186":1,"267":2,"324":3,"325":2,"326":1,"327":1,"331":1,"332":3,"333":1,"339":1,"375":2,"449":1,"450":1,"468":1,"469":1}}],["jwt",{"2":{"2":1,"3":1,"94":1,"452":1}}],["1712775416",{"2":{"468":1}}],["1712775116",{"2":{"468":1}}],["177514099z",{"2":{"464":1}}],["1st",{"2":{"459":1}}],["167168",{"2":{"464":1}}],["1699440462",{"2":{"476":1}}],["1699440462686",{"2":{"476":1}}],["1699440762",{"2":{"476":1}}],["1699442705",{"2":{"440":1,"478":1}}],["1699442705965",{"2":{"440":1,"478":1}}],["1699443005",{"2":{"440":1,"478":1}}],["1600000000",{"2":{"451":1,"452":1,"453":1,"459":3,"460":1}}],["1600086400",{"2":{"451":1,"452":1,"453":1,"459":1,"460":1}}],["160",{"2":{"51":2,"427":1}}],["191",{"0":{"409":1},"2":{"409":1,"451":2,"469":1}}],["1147",{"2":{"476":1}}],["11",{"0":{"334":1},"2":{"436":4}}],["1155",{"0":{"177":1,"270":1,"503":1},"2":{"22":1,"32":2,"43":2,"44":2,"168":2,"270":2,"329":1,"331":1,"503":2}}],["102951017z",{"2":{"436":1}}],["102950917z",{"2":{"436":1}}],["109787921z",{"2":{"436":1}}],["109234880945084120673",{"2":{"436":4}}],["10",{"0":{"333":1},"2":{"436":2,"445":1}}],["10^decimals",{"2":{"118":1}}],["10^18",{"2":{"118":1}}],["1000",{"2":{"459":1}}],["1000000000000000000",{"2":{"118":1,"184":1,"186":1,"269":3,"273":1,"459":1,"502":3,"506":1}}],["10000000000",{"2":{"66":1}}],["100",{"2":{"67":1,"262":1}}],["14",{"2":{"104":1}}],["1447300",{"2":{"99":1}}],["18",{"2":{"52":2,"118":2,"119":1}}],["1271",{"2":{"397":1,"408":1,"414":1}}],["123",{"2":{"251":1,"332":2}}],["123456",{"2":{"445":1}}],["1234",{"2":{"39":3}}],["1200x400",{"2":{"244":2,"256":1}}],["128",{"2":{"52":1}}],["12",{"0":{"200":1,"212":1,"335":1},"2":{"44":2,"200":1,"212":1,"214":1,"420":1}}],["158456331411102687640546264635",{"2":{"43":1}}],["13+",{"2":{"188":1}}],["13",{"0":{"190":1},"2":{"188":1,"190":1}}],["131092",{"2":{"32":1}}],["137",{"2":{"25":1,"32":1,"38":1,"39":1,"66":1,"81":1,"85":1,"86":1,"217":1,"225":1,"440":2,"451":1,"459":1,"476":1,"478":1}}],["1",{"0":{"94":1,"277":1,"313":1,"324":1,"351":1,"510":1},"2":{"3":13,"25":1,"38":2,"39":3,"52":3,"96":1,"97":1,"99":3,"107":1,"118":4,"125":1,"126":1,"140":1,"143":1,"180":1,"182":2,"198":1,"200":2,"206":1,"211":1,"212":2,"244":2,"249":1,"256":1,"309":2,"311":1,"319":1,"320":1,"324":1,"333":1,"335":1,"339":1,"352":1,"410":2,"415":1,"416":1,"418":2,"429":2,"447":2,"448":2,"451":1,"452":1,"453":2,"459":2,"460":1,"464":2,"465":10,"468":1}}],["3843b48b32b98fa311cbcd1604c0c6931f03c75075212e8bb4c06d02a3d53509",{"2":{"465":1}}],["365294f408bcc5913b44110544bb611255d05666f89fd182900330bc117744fa563c2afcf74808b719ac7a29492099c6",{"2":{"465":1}}],["36000",{"2":{"249":1}}],["39381",{"2":{"459":1}}],["3rd",{"2":{"352":1}}],["32",{"2":{"278":1,"420":1,"436":3,"511":1}}],["3+",{"2":{"158":1}}],["30",{"2":{"149":1}}],["3",{"0":{"279":1,"326":1,"512":1},"2":{"3":1,"99":2,"108":1,"244":2,"256":1,"339":1,"364":1,"415":1,"416":2,"418":2,"423":1,"429":1,"436":1}}],["x19ethereum",{"2":{"409":1}}],["xattr",{"2":{"145":1}}],["xavier",{"2":{"44":1}}],["xavi",{"2":{"44":1}}],["xcodeproj",{"2":{"145":3}}],["xcode",{"0":{"145":1},"2":{"145":2}}],["xmlns",{"2":{"99":4}}],["xml",{"2":{"99":6}}],["xyz",{"2":{"16":1,"17":1,"109":1}}],["x",{"0":{"200":1,"212":1},"2":{"2":1,"16":1,"25":2,"28":1,"38":2,"39":4,"52":1,"107":1,"128":1,"140":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":1,"185":1,"200":1,"212":1,"214":1,"335":1,"352":2,"466":4}}],["x27",{"2":{"0":1,"3":1,"15":2,"16":8,"17":1,"19":1,"25":24,"28":7,"31":1,"32":5,"35":1,"38":16,"39":22,"41":1,"43":1,"44":2,"45":1,"47":1,"50":1,"52":4,"58":1,"59":6,"60":1,"63":2,"64":2,"66":6,"67":6,"68":5,"70":4,"76":9,"77":9,"80":6,"81":17,"85":18,"86":22,"87":5,"88":2,"92":1,"96":1,"97":1,"99":8,"101":6,"102":3,"104":1,"105":2,"106":2,"107":2,"108":1,"110":1,"111":1,"112":1,"114":1,"115":3,"116":1,"117":1,"119":1,"120":4,"121":1,"122":4,"124":4,"125":7,"128":5,"129":1,"130":1,"131":1,"133":3,"134":2,"135":2,"140":1,"146":3,"147":1,"168":16,"169":17,"171":13,"173":13,"175":13,"177":14,"180":14,"182":2,"183":2,"184":14,"185":6,"186":6,"189":4,"190":3,"191":2,"194":10,"204":1,"217":4,"220":1,"225":4,"226":4,"235":1,"236":5,"237":16,"240":1,"242":3,"243":3,"244":5,"246":2,"248":1,"251":1,"266":2,"269":17,"270":16,"271":10,"272":10,"275":2,"277":4,"278":2,"279":1,"280":4,"281":2,"282":4,"283":1,"285":1,"303":6,"305":3,"307":1,"309":1,"324":1,"326":3,"333":1,"334":1,"339":4,"346":2,"351":3,"352":3,"353":2,"354":1,"357":1,"361":6,"365":1,"379":1,"386":1,"388":1,"390":4,"391":2,"392":1,"397":1,"398":5,"399":1,"402":1,"403":2,"404":2,"405":1,"406":1,"409":2,"410":28,"411":1,"417":1,"418":8,"419":1,"421":12,"428":2,"429":2,"430":24,"432":1,"433":5,"434":4,"435":24,"436":4,"437":4,"443":2,"445":1,"450":1,"452":2,"459":5,"465":1,"466":2,"468":1,"469":2,"477":3,"479":3,"482":3,"485":3,"487":2,"488":4,"490":1,"491":1,"492":1,"494":1,"495":5,"496":16,"499":1,"501":3,"502":17,"503":16,"504":10,"505":10,"508":2,"510":4,"511":2,"512":1,"513":4,"514":2,"515":4}}],["hypervisor",{"2":{"354":1}}],["human",{"2":{"119":1,"125":1}}],["html",{"2":{"99":1}}],["http",{"2":{"15":2,"35":1,"47":1,"85":2,"86":2,"99":4,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"390":1}}],["https",{"2":{"3":8,"6":1,"15":2,"16":2,"17":2,"19":2,"25":2,"26":1,"28":1,"32":7,"34":6,"36":1,"38":2,"39":5,"43":6,"44":4,"47":2,"52":5,"60":1,"99":2,"104":1,"109":1,"157":1,"168":3,"169":3,"171":3,"173":3,"175":3,"177":3,"180":6,"182":2,"184":2,"185":1,"190":1,"192":1,"205":1,"215":1,"231":1,"233":1,"237":2,"240":1,"243":1,"244":2,"256":1,"268":2,"332":1,"335":2,"339":1,"369":1,"370":1,"376":2,"436":4,"451":1,"464":1,"465":1,"466":1,"496":2,"499":1}}],["h",{"2":{"25":2,"38":2,"39":4,"52":1,"131":1,"133":2,"138":2,"143":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":1,"185":1,"466":1}}],["hint",{"2":{"248":1}}],["hit",{"2":{"145":2}}],["hides",{"2":{"128":1}}],["hide",{"2":{"128":1}}],["hidden",{"2":{"93":1}}],["highly",{"2":{"188":1,"283":1,"285":1,"302":1}}],["high",{"2":{"20":1,"145":1,"148":1,"149":1,"468":1}}],["higher",{"2":{"4":1}}],["history",{"0":{"172":1,"173":1,"174":1,"175":1},"1":{"173":1,"175":1},"2":{"20":2,"22":2,"112":1,"173":6,"175":6}}],["horizon",{"2":{"366":3}}],["horik",{"2":{"44":1}}],["home",{"2":{"189":3}}],["hope",{"2":{"115":1,"116":1,"459":1}}],["hooks",{"2":{"189":2}}],["hook",{"2":{"64":1,"87":2,"88":1,"189":1,"435":1,"447":1,"448":2}}],["house",{"2":{"20":1}}],["hosted",{"2":{"351":1,"352":1}}],["hosting",{"2":{"323":1,"366":1}}],["hosts",{"2":{"16":1,"17":1,"157":1}}],["host",{"2":{"15":1,"47":1,"248":1}}],["however",{"2":{"11":1,"43":1,"79":1,"105":1,"106":1,"112":1,"309":1,"443":1,"465":1}}],["how",{"0":{"113":1,"148":1,"189":1,"190":1,"322":1,"477":1,"479":1,"482":1,"485":1,"487":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1},"2":{"3":1,"14":1,"24":2,"27":1,"32":1,"37":2,"41":1,"68":1,"80":2,"93":1,"101":1,"106":1,"119":2,"121":1,"123":1,"125":1,"128":1,"129":1,"131":1,"143":1,"146":1,"155":1,"156":1,"161":1,"237":1,"243":1,"285":1,"304":1,"308":1,"335":1,"341":1,"357":1,"362":1,"367":1,"422":1,"427":1,"467":1,"496":1}}],["he",{"2":{"445":1}}],["hence",{"2":{"431":1}}],["henrique",{"2":{"44":1}}],["held",{"2":{"492":1}}],["hello",{"2":{"409":1,"481":1}}],["helps",{"2":{"131":1,"143":1,"459":1}}],["helper",{"2":{"118":1}}],["helpful",{"2":{"19":1,"164":1,"175":1,"177":1,"308":1}}],["help",{"2":{"11":1,"19":1,"41":1,"93":1,"105":1,"115":1,"116":1,"168":1,"169":1,"173":1,"177":1,"191":1,"237":1,"275":1,"323":1,"366":1,"496":1,"508":1}}],["hexdataslice",{"2":{"420":1}}],["hexzeropad",{"2":{"420":1}}],["hex",{"2":{"409":1,"410":1}}],["hexlify",{"2":{"278":1,"511":1}}],["hextoaddress",{"2":{"184":1}}],["hexadecimal",{"2":{"102":1,"118":1,"285":2,"286":1,"288":1,"289":1,"290":1,"291":2,"293":1,"295":1,"321":2}}],["hesitate",{"2":{"116":1}}],["headless",{"2":{"355":1}}],["head",{"2":{"325":1,"334":1}}],["header",{"2":{"145":1,"339":1,"466":2}}],["headers",{"2":{"2":1,"182":1}}],["heavily",{"2":{"307":1}}],["heard",{"2":{"121":1}}],["healthok",{"2":{"464":1}}],["healthy",{"2":{"20":1}}],["health",{"2":{"20":1,"466":1}}],["here",{"2":{"15":1,"21":1,"22":1,"43":1,"44":1,"47":1,"68":1,"80":1,"102":1,"109":1,"129":1,"153":1,"155":1,"156":1,"175":1,"177":1,"190":2,"197":1,"201":3,"210":1,"214":4,"221":1,"230":1,"233":1,"237":1,"244":1,"356":1,"357":2,"360":1,"435":1,"469":1,"496":1}}],["had",{"2":{"367":1}}],["happen",{"2":{"352":1,"446":1}}],["happens",{"2":{"145":1}}],["hard",{"0":{"466":1}}],["hardware",{"2":{"158":1,"351":1,"354":1}}],["harmoniously",{"2":{"199":1,"213":1}}],["handling",{"2":{"431":1}}],["handlegooglelogin",{"2":{"435":3}}],["handles",{"2":{"117":1,"432":1}}],["handlers",{"2":{"244":1}}],["handler",{"2":{"102":1,"111":1,"117":1,"435":3}}],["handle",{"2":{"6":2,"34":1,"101":1,"125":1,"163":1,"355":1,"435":1,"467":1,"488":1}}],["hand",{"2":{"44":1,"145":1,"165":1}}],["hat",{"2":{"43":2}}],["haiti",{"2":{"13":1}}],["hawaii",{"2":{"12":1}}],["having",{"2":{"5":1,"93":1,"244":1,"490":1}}],["haven",{"2":{"104":1,"106":1,"466":1}}],["have",{"2":{"5":1,"19":1,"20":1,"23":1,"41":1,"43":1,"46":1,"51":1,"59":1,"99":1,"104":1,"105":1,"116":2,"118":1,"120":1,"122":1,"124":1,"125":1,"128":2,"130":1,"131":1,"145":1,"146":2,"149":1,"156":1,"158":1,"159":1,"161":1,"163":1,"165":1,"236":1,"237":2,"243":1,"244":1,"269":1,"284":1,"309":1,"310":1,"314":1,"324":1,"333":1,"354":1,"361":1,"403":1,"417":1,"424":1,"428":1,"429":1,"431":1,"459":1,"461":1,"463":1,"466":1,"473":1,"495":1,"496":2,"502":1}}],["hashalgorithm",{"2":{"465":1}}],["hashtree",{"2":{"430":7}}],["hashed",{"2":{"417":1,"430":1}}],["hasheddata",{"2":{"410":2}}],["hashes",{"2":{"173":1,"319":1,"397":1,"430":1}}],["hashfromstring",{"2":{"180":2}}],["hash",{"0":{"417":1,"418":1},"1":{"418":1,"420":1},"2":{"180":2,"186":1,"287":1,"296":1,"299":1,"300":1,"301":1,"319":1,"354":3,"391":1,"392":1,"396":1,"397":1,"405":1,"411":6,"420":2,"427":1,"428":1,"429":1,"435":3,"439":2,"475":1}}],["hasn",{"2":{"128":1,"351":1}}],["has",{"2":{"0":1,"19":1,"61":1,"119":2,"128":1,"164":1,"166":1,"241":1,"261":1,"266":1,"310":1,"365":1,"389":1,"390":1,"397":1,"412":1,"415":1,"429":2,"434":2,"447":2,"448":1,"500":1}}],["ubiquitous",{"2":{"309":1}}],["umd",{"2":{"268":3,"376":3}}],["ue",{"2":{"133":1}}],["ufunctions",{"2":{"133":1}}],["ufunction",{"2":{"131":1,"133":6}}],["uauthenticator",{"2":{"130":2,"131":1,"133":5,"135":1}}],["uobject",{"2":{"128":1,"130":1,"133":3}}],["utils",{"2":{"269":3,"270":2,"271":2,"272":2,"278":2,"280":1,"282":1,"390":2,"410":1,"418":3,"420":7,"430":4,"502":3,"503":2,"504":2,"505":2,"511":2,"513":1,"515":1}}],["utility",{"2":{"81":1,"280":1,"513":1}}],["utilizing",{"2":{"3":1,"355":1}}],["utilized",{"2":{"242":1,"501":1}}],["utilize",{"2":{"2":1,"45":1,"85":1,"87":1}}],["utf",{"2":{"99":2}}],["ui",{"0":{"112":1,"114":1,"133":1},"1":{"113":1,"114":1,"115":2,"116":2},"2":{"93":2,"106":1,"112":6,"113":1,"114":2,"115":1,"116":1,"128":6,"133":1,"134":1,"146":1,"163":1,"165":1}}],["uint96",{"2":{"430":1}}],["uint32",{"2":{"425":1}}],["uint160",{"2":{"427":1}}],["uint16",{"2":{"424":1,"429":1}}],["uint80",{"2":{"414":1}}],["uint8",{"2":{"304":1,"410":1,"418":4,"427":1,"429":1}}],["uint256",{"2":{"43":1,"44":1,"51":1,"125":1,"269":4,"270":4,"271":2,"272":2,"302":1,"333":2,"418":2,"427":2,"430":2,"459":3,"502":4,"503":4,"504":2,"505":2}}],["uint64",{"2":{"39":1,"183":1}}],["uint",{"2":{"39":1,"304":1}}],["ultimate",{"2":{"90":1,"202":1,"377":1}}],["ux",{"2":{"54":1}}],["unauthenticated",{"2":{"429":1}}],["unauthorized",{"2":{"157":1,"365":1}}],["unbalanced",{"2":{"426":1}}],["unusable",{"2":{"397":1,"400":1,"403":1}}],["unknown",{"2":{"397":1}}],["unsanitized",{"2":{"397":1}}],["unsafe",{"2":{"307":1}}],["unstoppable",{"2":{"32":1}}],["unpkg",{"2":{"268":1,"376":1}}],["unparalleled",{"2":{"123":1}}],["unexpected",{"2":{"110":1}}],["unnoticed",{"2":{"106":1}}],["unfamiliar",{"2":{"101":1,"102":1,"111":1,"117":1}}],["underwent",{"2":{"380":1}}],["underlying",{"2":{"346":1,"386":1,"388":1}}],["understand",{"2":{"304":1,"308":1}}],["understanding",{"0":{"304":1},"2":{"125":1,"467":1}}],["understands",{"2":{"116":1}}],["under",{"2":{"93":3,"99":1,"105":1,"110":1,"112":2,"119":1,"138":2,"145":2,"155":1,"157":2,"332":1,"333":1,"416":1,"490":1,"491":1}}],["undefined",{"2":{"78":1,"184":1,"186":1,"435":1}}],["unless",{"2":{"108":1,"125":1,"285":1}}],["unleash",{"2":{"91":1,"203":1,"378":1}}],["unlocked",{"2":{"490":1}}],["unlock",{"0":{"491":1},"2":{"90":1,"202":1,"364":2,"377":1,"491":2,"492":1}}],["unlimited",{"2":{"51":1,"403":2,"413":1}}],["unlikely",{"2":{"492":1}}],["unlike",{"2":{"51":1}}],["until",{"2":{"59":1,"128":1,"189":1,"361":1,"444":1,"492":1}}],["unix",{"2":{"471":1}}],["uniswap",{"2":{"266":1}}],["universal",{"2":{"91":1,"165":3,"166":1,"203":1,"373":1,"378":1}}],["unique",{"0":{"177":1},"2":{"22":1,"80":1,"110":1,"156":1,"324":1,"390":1,"452":1}}],["unit",{"2":{"32":1,"44":1}}],["unitypackage",{"2":{"106":2}}],["unityplayer",{"2":{"99":2}}],["unityplayeractivity",{"2":{"99":2}}],["unityactivity",{"2":{"99":2}}],["unitythemeselector",{"2":{"99":2}}],["unity3d",{"2":{"99":3}}],["unity",{"0":{"18":1,"30":1},"2":{"18":1,"30":1,"57":3,"99":4,"101":1,"102":3,"104":2,"105":3,"106":3,"107":3,"108":1,"109":2,"111":1,"114":1,"115":2,"117":1,"161":1,"163":1,"165":1,"247":1,"307":3,"355":1,"357":2}}],["united",{"2":{"11":1}}],["unverified",{"2":{"19":1}}],["unreal",{"0":{"18":1,"30":1,"129":1,"145":1},"2":{"18":1,"30":1,"129":1,"135":1,"140":3,"141":1,"145":5,"161":1,"163":1,"165":1,"247":1,"355":1,"357":1}}],["u",{"2":{"17":1,"29":1,"49":1}}],["ukraine",{"2":{"13":1}}],["uri",{"0":{"332":1},"2":{"43":2,"44":4}}],["uris",{"2":{"3":1,"155":1}}],["urls",{"2":{"157":1}}],["url",{"0":{"327":1},"2":{"3":2,"6":2,"32":2,"39":1,"44":1,"73":1,"95":2,"96":2,"97":2,"99":3,"104":2,"108":1,"110":1,"130":1,"180":5,"256":1,"283":2,"327":1,"331":1,"332":2,"339":1}}],["usual",{"2":{"434":2}}],["usually",{"2":{"125":1,"333":1,"459":1}}],["usdc",{"2":{"50":1,"52":2,"184":2,"186":2,"261":1,"347":1}}],["us",{"0":{"12":1},"2":{"11":1,"116":1,"125":1,"237":1,"351":1,"466":1,"496":1}}],["usable",{"2":{"50":1,"433":1}}],["usa",{"2":{"11":1}}],["usage",{"0":{"4":1,"31":1,"33":1,"194":1,"207":1,"217":1,"224":1,"232":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"225":1,"226":1},"2":{"27":1,"157":1,"191":1,"355":1,"357":1,"417":1}}],["useweb3react",{"2":{"226":2}}],["useismounted",{"2":{"189":2}}],["useeffect",{"2":{"189":1,"435":3}}],["usequencewallet",{"0":{"130":1},"2":{"128":6,"130":4}}],["useopenwalletmodal",{"2":{"88":3}}],["useopenconnectmodal",{"2":{"87":3}}],["useaccount",{"2":{"87":3}}],["usecheckoutmodal",{"2":{"64":3}}],["userid",{"2":{"436":2}}],["useraddress",{"2":{"182":2,"183":1,"277":1,"280":1,"510":1,"513":1}}],["userwallet",{"2":{"128":1}}],["user",{"2":{"52":3,"59":1,"87":2,"94":3,"95":1,"101":1,"134":1,"158":1,"163":2,"181":1,"182":1,"183":1,"235":1,"236":6,"237":1,"243":1,"244":5,"246":1,"254":1,"257":2,"258":3,"259":1,"266":9,"275":4,"279":1,"281":1,"351":3,"352":4,"353":2,"355":2,"361":1,"363":2,"364":4,"366":2,"367":4,"432":3,"434":4,"435":1,"436":1,"443":2,"445":2,"446":1,"449":1,"452":3,"467":1,"468":1,"469":2,"494":1,"495":6,"496":1,"508":4,"512":1,"514":1}}],["users",{"0":{"234":1,"493":1},"1":{"235":1,"236":1,"237":1,"494":1,"495":1,"496":1},"2":{"50":2,"90":1,"91":2,"95":1,"106":1,"112":1,"133":1,"165":6,"181":1,"202":1,"203":2,"232":1,"236":2,"243":8,"244":3,"256":1,"260":2,"261":1,"263":3,"274":1,"275":2,"284":1,"307":1,"341":3,"353":1,"362":3,"363":1,"365":1,"366":1,"367":3,"370":1,"377":1,"378":2,"441":1,"442":1,"443":1,"495":2,"507":1,"508":2}}],["usefulness",{"2":{"123":1}}],["useful",{"2":{"31":1,"70":1,"102":1,"105":2,"118":1,"263":1,"275":1,"508":1}}],["usestate",{"2":{"435":4}}],["usesessionhash",{"2":{"435":5}}],["uses",{"2":{"20":1,"43":1,"44":1,"95":1,"110":1,"199":3,"213":3,"354":1,"367":1,"386":1}}],["use",{"0":{"189":1,"190":1},"2":{"3":4,"5":1,"15":1,"20":2,"23":1,"27":1,"43":3,"45":3,"47":1,"51":1,"64":1,"80":2,"81":1,"89":1,"93":2,"99":1,"102":3,"106":1,"111":1,"112":1,"115":1,"117":1,"118":1,"119":2,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":1,"128":1,"129":1,"130":2,"131":1,"135":2,"138":1,"139":1,"143":1,"146":2,"147":1,"158":1,"163":2,"175":2,"177":2,"181":1,"189":1,"190":4,"191":1,"199":1,"200":1,"212":1,"213":1,"232":1,"236":1,"239":1,"242":1,"244":2,"254":1,"262":1,"281":1,"283":2,"284":1,"303":5,"305":4,"306":1,"309":2,"310":1,"311":1,"314":1,"321":1,"326":1,"333":1,"338":1,"344":1,"354":1,"364":1,"399":1,"435":1,"444":1,"447":1,"449":1,"450":1,"457":1,"469":1,"495":1,"498":1,"501":1,"514":1}}],["usedisconnect",{"2":{"87":1}}],["used",{"0":{"188":1},"2":{"2":1,"20":1,"46":1,"59":1,"70":1,"72":1,"105":1,"120":1,"122":1,"124":1,"133":1,"139":1,"158":1,"189":1,"205":1,"222":1,"231":1,"249":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"294":1,"295":1,"297":1,"298":1,"299":1,"300":1,"307":1,"314":1,"354":1,"357":1,"361":1,"367":1,"399":1,"400":1,"417":1,"420":1,"422":1,"423":1,"425":1,"426":1,"429":1,"431":1,"434":2,"435":5,"452":1,"457":1,"465":1,"475":1,"478":1}}],["using",{"0":{"7":1,"81":1,"189":1,"190":1,"192":1,"199":1,"200":1,"205":1,"212":1,"213":1,"215":1,"222":1,"231":1,"276":1,"509":1},"1":{"193":1,"194":1,"195":1,"196":1,"197":1,"198":1,"199":1,"200":1,"201":1,"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"232":1,"233":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"510":1,"511":1,"512":1,"513":1,"514":1,"515":1},"2":{"2":1,"5":1,"6":1,"16":2,"19":1,"20":3,"24":1,"25":1,"28":3,"37":1,"38":1,"40":3,"58":1,"59":1,"65":1,"68":1,"79":1,"81":1,"87":1,"88":1,"93":1,"105":1,"106":1,"108":1,"109":1,"112":2,"119":2,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"128":1,"130":2,"131":1,"134":1,"165":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"179":1,"184":1,"186":2,"188":2,"190":4,"191":2,"192":1,"198":1,"199":3,"200":1,"205":1,"206":1,"211":1,"212":1,"213":3,"214":1,"215":1,"231":1,"236":1,"237":1,"243":2,"244":1,"266":2,"274":1,"280":1,"283":3,"313":1,"321":1,"347":1,"352":1,"354":1,"355":1,"357":2,"361":1,"363":1,"364":1,"367":1,"370":1,"374":1,"389":1,"391":1,"397":1,"398":1,"419":1,"431":1,"433":1,"434":2,"435":1,"437":1,"439":1,"443":1,"448":1,"466":1,"468":1,"495":1,"496":1,"507":1,"513":1}}],["upgradeability",{"2":{"347":1}}],["upgraded",{"2":{"346":1}}],["upi",{"2":{"341":1,"362":1}}],["upon",{"2":{"210":1,"220":1,"282":1,"475":1,"478":1,"515":1}}],["ups",{"2":{"165":1}}],["uproject",{"2":{"146":1}}],["updating",{"0":{"335":1},"2":{"105":1,"106":1,"387":1,"391":1,"403":1}}],["updateimagehash",{"0":{"396":1},"1":{"397":1,"399":1,"400":1,"401":1,"402":1,"403":1},"2":{"396":1,"398":2,"403":1,"404":2}}],["updateimplementation",{"2":{"388":3,"398":1,"403":1}}],["updateconfiguration",{"0":{"388":1},"1":{"389":1}}],["updated",{"2":{"266":1,"395":1,"398":1,"403":3,"404":2,"405":1,"406":2,"417":1}}],["updates",{"0":{"404":1},"2":{"39":1,"112":1,"396":1,"419":1,"423":1,"425":1}}],["update",{"0":{"159":1,"331":1,"386":1,"398":1},"1":{"387":1,"388":1,"389":1,"390":1,"391":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":1,"398":1,"399":2,"400":2,"401":2,"402":2,"403":2,"404":2,"405":2,"406":2},"2":{"1":1,"2":1,"3":1,"105":1,"146":1,"159":1,"160":1,"325":1,"335":1,"388":1,"398":3,"400":1,"435":1}}],["uptime",{"2":{"20":1,"464":1}}],["uploaded",{"2":{"327":1,"333":1}}],["upload",{"0":{"326":1},"2":{"3":6,"325":1,"326":2}}],["up",{"0":{"85":1,"86":1,"325":1,"328":1,"433":1,"434":1},"1":{"434":1,"435":1},"2":{"2":1,"14":1,"19":1,"95":1,"99":1,"108":1,"128":1,"129":1,"142":1,"145":1,"155":1,"158":1,"161":1,"220":1,"328":1,"333":1,"355":1,"433":1,"435":1}}],["kms",{"2":{"354":2}}],["kind",{"2":{"352":1}}],["kinds",{"2":{"16":1,"17":1,"191":1}}],["kitwalletprovider",{"2":{"86":7}}],["kitconfig",{"2":{"68":2,"81":2,"86":1}}],["kitcheckoutprovider",{"2":{"63":4}}],["kitprovider",{"2":{"63":2,"68":3,"81":2,"85":4,"86":6}}],["kit",{"0":{"79":1,"83":1,"84":1,"85":1,"202":1,"377":1},"1":{"80":1,"84":1,"203":1,"378":1},"2":{"63":6,"64":1,"68":2,"70":1,"79":3,"80":2,"81":3,"82":1,"83":1,"84":8,"85":3,"86":4,"87":1,"88":1,"89":1,"90":1,"91":1,"92":2,"191":1,"202":1,"203":1,"204":2,"357":1,"377":1,"378":1,"379":2}}],["kitexavier",{"2":{"44":1}}],["korea",{"2":{"13":1}}],["keccak256",{"2":{"411":2,"418":5,"420":2,"428":1,"429":1,"430":2}}],["kept",{"2":{"158":1,"449":1}}],["keepwalletopened",{"0":{"253":1},"2":{"253":2}}],["keeping",{"2":{"163":1}}],["keeps",{"2":{"19":1}}],["keep",{"2":{"2":1,"131":1,"253":1}}],["keyword",{"2":{"125":1}}],["keyboard",{"2":{"104":1}}],["keystore",{"2":{"143":1}}],["keys",{"0":{"275":1,"276":1,"365":1,"508":1,"509":1},"1":{"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"510":1,"511":1,"512":1,"513":1,"514":1,"515":1},"2":{"2":1,"58":1,"99":1,"110":2,"138":1,"243":1,"274":2,"275":3,"347":1,"353":1,"354":1,"357":2,"363":3,"364":6,"365":1,"367":3,"469":1,"507":2,"508":3}}],["key",{"0":{"91":1,"203":1,"278":1,"281":1,"363":1,"366":1,"367":1,"378":1,"511":1,"514":1},"1":{"364":1,"365":1,"366":1,"367":1},"2":{"2":4,"6":2,"14":1,"16":1,"25":2,"28":2,"38":2,"39":3,"58":2,"59":2,"81":1,"85":1,"86":1,"110":1,"138":2,"139":3,"143":1,"145":2,"147":1,"149":1,"168":3,"169":1,"171":2,"173":2,"175":1,"177":1,"180":1,"184":2,"237":1,"244":1,"275":2,"278":1,"279":1,"280":2,"281":1,"282":2,"283":1,"313":2,"343":1,"347":1,"352":1,"354":3,"357":2,"360":2,"361":2,"363":3,"364":9,"365":1,"366":6,"367":6,"433":2,"434":3,"435":2,"436":2,"437":2,"439":2,"440":2,"449":3,"459":1,"468":1,"469":3,"496":1,"508":2,"511":1,"512":1,"513":2,"514":1,"515":2}}],["known",{"2":{"125":1,"303":2,"305":2,"380":1,"405":1,"406":1,"420":1}}],["know",{"2":{"0":1,"267":1,"375":1}}],["pseudo",{"2":{"430":1}}],["philosophy",{"2":{"363":1}}],["phone",{"2":{"243":2,"352":1,"369":1,"370":1}}],["phase",{"2":{"145":2}}],["python",{"2":{"242":1,"501":1}}],["pcr2",{"2":{"465":1}}],["pcr1",{"2":{"465":1}}],["pcr0",{"0":{"464":1},"2":{"354":3,"464":2,"465":3,"466":2}}],["pc",{"0":{"98":1},"2":{"108":1,"141":1}}],["png",{"2":{"32":2,"44":1,"52":3,"244":2,"256":1}}],["pnpm",{"2":{"6":1,"16":1,"48":1,"57":1,"63":1,"84":1,"267":1,"359":1,"375":1}}],["pixel",{"2":{"436":1}}],["pinata",{"0":{"325":1},"2":{"323":1,"325":2,"326":1,"327":1,"332":1,"333":1}}],["piece",{"2":{"20":1}}],["pick",{"2":{"19":1,"108":1,"244":1,"259":1}}],["plugin",{"2":{"129":1,"135":1,"138":1,"146":1,"193":3,"194":1}}],["plugins",{"2":{"99":1,"146":3}}],["plain",{"2":{"236":1,"495":1}}],["platform",{"2":{"95":1,"128":1,"133":1,"351":1,"354":1}}],["platformspecificsetup",{"2":{"108":1}}],["platforms",{"0":{"368":1},"1":{"369":1,"370":1,"371":1},"2":{"94":1,"95":1}}],["players",{"2":{"165":1}}],["playercontroller",{"2":{"128":1}}],["player",{"2":{"96":2,"97":2,"99":3}}],["playground",{"2":{"70":1}}],["play",{"2":{"32":1,"104":1,"105":1,"106":1,"279":1,"357":1,"512":1}}],["placed",{"2":{"190":1}}],["places",{"2":{"112":1}}],["place",{"2":{"20":1,"63":1,"110":1,"143":2,"352":1,"353":1}}],["plan",{"2":{"14":1,"125":1}}],["please",{"2":{"1":1,"4":1,"11":1,"13":2,"14":1,"25":1,"27":1,"39":2,"57":1,"85":1,"93":1,"99":3,"101":1,"106":1,"112":1,"115":1,"116":1,"118":1,"119":1,"125":1,"130":2,"142":1,"145":1,"166":1,"168":1,"191":2,"222":1,"264":1,"443":1,"465":1}}],["person",{"2":{"410":1}}],["personalized",{"2":{"181":1}}],["perspective",{"2":{"266":1}}],["per",{"2":{"183":1}}],["period",{"2":{"150":1,"492":2}}],["perfectly",{"2":{"239":1,"498":1}}],["perfect",{"2":{"115":2,"163":1}}],["performing",{"2":{"449":1}}],["performs",{"2":{"352":1}}],["performed",{"2":{"284":1,"448":1,"466":1,"467":1}}],["perform",{"2":{"115":1,"250":1,"281":1,"446":1,"468":1,"514":1}}],["permission",{"2":{"2":1}}],["people",{"2":{"13":1}}],["packet",{"2":{"450":1,"451":1,"452":1,"453":1,"459":1,"460":1,"475":1,"478":1}}],["packetobjectcontents",{"2":{"450":1}}],["packaging",{"0":{"142":1},"1":{"143":1,"144":1,"145":1},"2":{"142":1,"145":2}}],["packaged",{"2":{"145":1}}],["packages",{"0":{"84":1},"2":{"84":1,"267":2,"375":2}}],["package",{"0":{"104":1},"1":{"105":1},"2":{"79":1,"84":2,"104":5,"105":1,"106":6,"115":1,"145":1,"156":1,"193":1,"206":2,"215":1,"223":1,"239":1,"243":1,"267":5,"375":4,"435":1,"498":1}}],["pair",{"2":{"343":1,"469":1}}],["paid",{"2":{"293":1}}],["pawn",{"2":{"128":2,"146":6}}],["pattern",{"2":{"429":1}}],["patterns",{"2":{"164":1,"166":1}}],["patch",{"2":{"107":2,"140":2}}],["path=",{"2":{"104":1}}],["path",{"2":{"99":1,"145":1,"244":3,"435":2}}],["pasting",{"2":{"125":1}}],["pasted",{"2":{"266":1}}],["paste",{"2":{"99":1,"102":1,"104":1,"155":1,"325":1,"332":1}}],["password",{"2":{"434":1}}],["passes",{"2":{"319":1,"320":1}}],["passed",{"2":{"19":1,"76":2,"77":2,"133":1,"196":1,"209":1,"210":1,"251":1,"391":1,"452":1}}],["passing",{"2":{"68":1,"70":1,"78":1}}],["pass",{"2":{"2":1,"3":3,"19":1,"24":1,"37":1,"64":1,"81":1,"126":1,"133":2,"168":1,"236":1,"244":3,"319":1,"320":1,"433":1,"434":1,"459":1,"495":1}}],["palette",{"2":{"70":1}}],["pageprops",{"2":{"190":2}}],["pages",{"0":{"189":1},"2":{"188":2,"199":3,"201":1,"213":3,"214":1}}],["pagesize",{"2":{"183":1}}],["page",{"2":{"63":1,"76":1,"77":1,"86":1,"94":1,"153":1,"164":2,"166":1,"183":4,"188":1,"189":2,"261":1,"285":1,"464":1,"467":1}}],["paytrie",{"2":{"341":1,"362":1}}],["paypal",{"2":{"243":1}}],["payloadno",{"2":{"450":1,"451":1}}],["payloads",{"0":{"449":1,"472":1},"1":{"450":1,"451":1,"452":1,"453":1,"454":1,"455":1,"456":1,"457":1,"458":1,"459":1,"460":1,"473":1,"474":1,"475":1,"476":1,"477":1,"478":1,"479":1,"480":1,"481":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"488":1},"2":{"439":1,"440":1,"449":2,"477":2,"479":2,"482":2,"485":2,"487":2,"488":3}}],["payload",{"0":{"450":1,"452":1,"453":1,"454":1,"460":1},"1":{"451":1,"452":1,"453":1,"454":1,"455":2,"456":2,"457":2,"458":2,"459":2,"460":1},"2":{"145":1,"273":1,"449":1,"450":7,"452":3,"453":2,"454":2,"459":2,"460":2,"472":2,"506":1}}],["payable",{"2":{"125":3}}],["payments",{"2":{"62":1}}],["payment",{"2":{"52":2,"260":2,"261":2,"341":1,"362":1}}],["pay",{"2":{"50":1,"52":2,"186":1,"347":1}}],["parent",{"2":{"429":1}}],["parentheses",{"2":{"125":1}}],["param",{"2":{"411":2}}],["parametersasobjectarray",{"2":{"125":2,"126":1}}],["parameters",{"0":{"195":1,"208":1,"218":1,"389":1,"393":1,"397":1},"1":{"196":1,"197":1,"198":1,"209":1,"210":1,"211":1,"219":1,"220":1},"2":{"125":5,"245":1,"422":1,"431":1}}],["parameter",{"2":{"71":1,"101":1,"118":1,"119":1,"125":1,"133":1,"134":1,"196":1,"209":1,"283":1,"285":1,"302":1,"452":1}}],["parallelize",{"2":{"50":1}}],["parallel",{"2":{"50":1,"51":1}}],["parse",{"2":{"41":1,"45":1}}],["partner",{"2":{"353":3}}],["parties",{"2":{"490":1,"492":2}}],["partial",{"2":{"353":1,"400":1}}],["particularly",{"2":{"165":1,"188":1,"275":1,"307":1,"508":1}}],["particular",{"0":{"177":1},"2":{"22":3,"175":1,"179":1}}],["parts",{"2":{"129":2}}],["part",{"2":{"50":1,"61":1,"156":1,"241":1,"469":1,"500":1}}],["party",{"2":{"11":1,"351":1,"352":1,"354":3,"490":4,"491":2,"492":1}}],["purchasing",{"2":{"263":1}}],["purchase",{"2":{"262":1,"263":2,"341":2,"362":2}}],["purpose",{"2":{"107":1,"117":1,"129":1}}],["purple",{"2":{"43":1}}],["pulling",{"2":{"339":1}}],["pull",{"2":{"82":1}}],["publishing",{"2":{"99":1}}],["published",{"2":{"19":1,"466":1}}],["publishcollection",{"2":{"3":1}}],["publicclient",{"2":{"207":1}}],["publically",{"2":{"117":1}}],["public",{"2":{"2":1,"3":1,"5":1,"101":1,"102":3,"111":2,"117":3,"158":2,"354":1,"411":1,"469":1}}],["publicly",{"2":{"2":2,"351":1,"466":1,"490":1}}],["putting",{"2":{"125":1}}],["put",{"2":{"3":3,"106":1}}],["portrait",{"2":{"128":2}}],["potentially",{"2":{"284":1,"307":1}}],["potential",{"2":{"91":1,"165":1,"203":1,"378":1}}],["points",{"2":{"112":1}}],["point",{"2":{"80":1,"118":1,"128":1,"284":1,"285":1,"331":1,"338":1}}],["powers",{"2":{"340":1,"354":1,"461":1}}],["power",{"2":{"91":1,"203":1,"355":1,"378":1}}],["powered",{"2":{"32":1,"99":5}}],["powerful",{"2":{"20":1}}],["possibilities",{"2":{"90":1,"126":1,"202":1,"377":1}}],["possible",{"2":{"2":1,"13":1,"70":1,"71":1,"128":1,"244":1,"266":1,"274":2,"305":1,"350":1,"353":1,"355":1,"426":1,"429":1,"469":1,"507":2}}],["position",{"0":{"71":1},"2":{"71":1}}],["post",{"2":{"25":2,"38":2,"39":5,"52":1,"101":1,"102":1,"104":1,"111":1,"117":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":2,"183":1,"185":1,"339":1}}],["popups",{"2":{"244":1}}],["popup",{"2":{"244":2}}],["popular",{"0":{"345":1},"2":{"19":2,"32":1,"41":1,"90":1,"91":1,"165":1,"202":1,"203":1,"307":1,"377":1,"378":1}}],["pop",{"2":{"165":1,"355":1}}],["pops",{"2":{"2":1}}],["polygonindexer",{"2":{"109":1}}],["polygon",{"0":{"171":1},"2":{"15":2,"17":1,"25":5,"29":1,"32":6,"34":3,"38":4,"39":4,"43":1,"44":1,"47":2,"85":2,"86":2,"102":1,"109":1,"111":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":1,"168":5,"169":5,"171":5,"173":5,"175":6,"177":5,"180":3,"184":1,"185":1,"194":1,"207":1,"237":1,"244":1,"283":1,"321":1,"440":1,"496":1}}],["policy",{"2":{"13":1,"354":1}}],["policies",{"2":{"11":1}}],["prudent",{"2":{"365":1}}],["pr",{"2":{"112":1,"116":1}}],["practices",{"2":{"41":1}}],["practice",{"2":{"41":1,"43":1,"45":2,"307":1}}],["primarily",{"2":{"422":1}}],["primary",{"2":{"275":2,"508":2}}],["primitive",{"2":{"343":1}}],["println",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"186":2}}],["privatekeystring",{"2":{"313":1}}],["private",{"2":{"138":1,"139":1,"140":1,"275":1,"278":1,"313":2,"354":1,"363":3,"364":1,"367":1,"469":1,"508":1,"511":1}}],["privately",{"2":{"3":1}}],["price",{"2":{"183":1,"297":1}}],["pricepertoken",{"2":{"183":1}}],["pricesort",{"2":{"339":1}}],["prices",{"2":{"112":1}}],["pricing",{"0":{"4":1},"2":{"50":1}}],["prism",{"2":{"44":1}}],["priority",{"2":{"298":1}}],["prioritize",{"2":{"165":1}}],["prior",{"2":{"1":1,"3":1,"99":2,"128":1,"133":1}}],["prerequisites",{"0":{"463":1}}],["prepare",{"0":{"324":1}}],["prepared",{"2":{"159":1,"346":1}}],["pre",{"2":{"309":1,"310":1}}],["preview",{"2":{"332":1}}],["previously",{"2":{"266":1,"313":1,"465":1}}],["previous",{"2":{"3":1,"273":1,"465":1,"506":1}}],["prevent",{"2":{"157":1,"263":1,"435":1}}],["present",{"2":{"452":1}}],["presented",{"2":{"148":1}}],["press",{"2":{"104":1}}],["prefixedmessage",{"2":{"409":2}}],["prefilling",{"2":{"262":1}}],["prefabs",{"2":{"93":1,"112":1}}],["prefab",{"2":{"93":2,"112":1}}],["preference",{"2":{"367":1}}],["preferred",{"2":{"50":1,"165":1}}],["prefer",{"2":{"3":1,"165":1,"283":1}}],["proxy",{"2":{"388":1,"420":2}}],["pros",{"0":{"344":1,"347":1}}],["proofstring",{"2":{"237":1,"496":1}}],["proof",{"2":{"236":2,"237":6,"244":2,"249":1,"250":1,"452":2,"466":1,"495":2,"496":6}}],["prove",{"2":{"236":1,"495":1}}],["provisioning",{"2":{"144":1}}],["providing",{"2":{"90":1,"120":1,"122":1,"124":1,"125":1,"202":1,"351":1,"377":1}}],["provided",{"2":{"58":1,"78":3,"105":1,"118":1,"120":1,"122":1,"124":1,"180":1,"255":1,"283":1,"285":3,"303":2,"307":1,"309":1,"310":1,"321":1,"360":1,"386":1,"392":1,"398":1,"411":4,"425":1,"428":1,"434":1,"452":1}}],["provides",{"2":{"32":1,"37":1,"70":1,"79":1,"94":1,"107":1,"126":1,"140":1,"162":1,"165":1,"307":1,"315":1,"351":1,"353":1,"467":1,"491":1}}],["provide",{"2":{"15":1,"19":1,"35":1,"47":1,"57":1,"80":1,"81":1,"91":1,"93":1,"112":3,"125":3,"139":2,"158":1,"159":1,"163":1,"164":1,"166":1,"203":1,"275":1,"285":1,"301":1,"302":2,"303":1,"304":1,"307":1,"309":1,"332":1,"342":1,"351":1,"355":1,"378":1,"429":4,"434":1,"443":1,"508":1}}],["providerurl",{"2":{"128":1,"130":2}}],["provider",{"2":{"6":4,"20":1,"63":1,"130":1,"155":1,"156":1,"184":3,"190":1,"237":2,"244":1,"257":2,"261":1,"280":1,"341":1,"362":1,"390":2,"433":1,"435":2,"443":2,"496":2,"513":1}}],["providers",{"0":{"154":1},"1":{"155":1,"156":1},"2":{"5":1,"6":1,"11":1,"20":1,"84":1,"154":1,"237":1,"257":1,"260":2,"261":1,"341":4,"362":4,"390":1,"433":1,"443":1,"496":1}}],["produce",{"0":{"188":1},"2":{"188":1}}],["products",{"2":{"165":1}}],["production",{"2":{"157":1,"357":1}}],["product",{"2":{"112":1}}],["proper",{"2":{"155":2,"397":1}}],["properly",{"2":{"143":1,"158":1}}],["properties",{"0":{"45":1,"423":1},"1":{"424":1,"425":1,"426":1,"427":1,"428":1,"429":1},"2":{"32":1,"43":4,"44":2,"45":6,"423":1}}],["prone",{"2":{"125":1}}],["probably",{"2":{"121":1}}],["problem",{"2":{"20":1}}],["problems",{"2":{"0":1,"131":1}}],["progressively",{"2":{"243":1}}],["progress",{"2":{"112":1}}],["program",{"2":{"39":1,"386":1}}],["prompted",{"2":{"266":1,"332":1}}],["prompt",{"2":{"104":1,"106":1,"220":1,"236":1,"266":1,"447":1,"472":1,"495":1}}],["procedure",{"2":{"463":1}}],["proceed",{"2":{"94":1}}],["process",{"2":{"59":2,"91":1,"104":1,"115":1,"125":3,"131":2,"145":1,"164":1,"203":1,"244":1,"275":1,"333":1,"361":2,"378":1,"433":2,"434":2,"435":2,"436":2,"437":2,"439":2,"440":2,"508":1}}],["protocol",{"2":{"183":1,"243":1,"247":1,"339":1}}],["protocols",{"2":{"23":1,"266":1}}],["prototyp",{"2":{"180":6}}],["proto",{"2":{"180":2}}],["protects",{"2":{"350":1,"353":1}}],["protection",{"2":{"251":1,"353":1,"366":1,"443":1}}],["protected",{"2":{"158":1,"351":1,"489":1}}],["protect",{"2":{"51":1,"367":1}}],["pro",{"2":{"24":1,"31":1,"37":1,"145":1,"168":1,"433":1,"435":1,"436":2,"437":1}}],["projectfilesios",{"2":{"145":1}}],["projectname",{"0":{"74":1}}],["projectaccesskey",{"2":{"59":1,"81":1,"85":2,"86":2,"138":1,"184":6,"244":3,"361":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1}}],["projectid",{"2":{"3":2,"436":2}}],["project",{"0":{"58":1,"360":1},"2":{"2":1,"4":1,"6":1,"19":1,"32":1,"45":2,"52":2,"58":1,"59":1,"74":1,"96":1,"97":1,"99":2,"105":5,"106":2,"110":1,"145":8,"146":2,"147":1,"148":1,"149":1,"152":1,"155":2,"166":1,"184":3,"191":1,"267":2,"328":1,"352":1,"357":1,"360":1,"361":1,"375":2,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1,"490":2,"491":1}}],["projects",{"2":{"0":1,"3":10,"41":3,"45":1,"50":1}}],["cd",{"2":{"465":1}}],["cdn",{"0":{"268":1,"376":1},"2":{"268":1,"376":1}}],["circle",{"2":{"435":1}}],["cid",{"2":{"325":1,"326":1}}],["ctx",{"2":{"184":1,"185":1,"186":3}}],["c++",{"2":{"133":1,"146":3}}],["cpp",{"2":{"131":1,"133":2,"139":1}}],["c",{"2":{"102":1,"110":2,"304":1,"429":1}}],["cs",{"2":{"101":1}}],["c3bgcu3lkfr9bp9jfsslenpaaaaaaaaaa",{"2":{"16":1,"17":1,"25":4,"28":1,"29":1,"38":4,"39":4,"168":3,"169":4,"171":3,"173":3,"175":4,"177":4,"180":3}}],["cumulativegasused",{"2":{"476":1}}],["custodial",{"2":{"101":1,"165":2,"355":1,"367":1}}],["customization",{"0":{"116":1},"2":{"367":1}}],["customizable",{"2":{"114":1,"165":1}}],["customizability",{"0":{"114":1},"1":{"115":1,"116":1}}],["customize",{"2":{"68":1,"80":1,"116":1,"163":2,"244":1}}],["custom",{"0":{"79":1,"80":1,"81":1,"82":1,"133":1},"1":{"80":1},"2":{"23":1,"79":2,"80":6,"81":5,"82":2,"95":2,"99":1,"108":1,"120":1,"122":1,"124":1,"126":1,"128":1,"146":3,"164":1,"181":1,"190":1,"247":1,"307":1,"337":1,"443":1,"444":1}}],["cut",{"2":{"44":1}}],["currencies",{"2":{"118":1}}],["currencyaddress",{"2":{"183":1}}],["currencyaddresses",{"2":{"182":2,"183":1,"339":1}}],["currency",{"2":{"118":2,"183":2,"261":2,"263":4,"285":1,"311":1}}],["currently",{"2":{"58":1,"95":1,"312":1,"341":1,"353":1,"362":1,"364":1,"463":1}}],["current",{"0":{"390":1,"405":1},"1":{"406":1},"2":{"40":1,"394":1,"405":2,"436":1,"444":1,"460":1}}],["curious",{"2":{"101":1,"125":1}}],["curl",{"2":{"15":1,"25":1,"38":1,"39":2,"52":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"185":1,"335":1,"339":1,"464":1,"466":1}}],["cuba",{"2":{"13":1}}],["center",{"2":{"71":3}}],["central",{"2":{"13":1}}],["certainty",{"2":{"236":1,"495":1}}],["certain",{"2":{"11":1,"181":1,"448":1}}],["cross",{"2":{"182":1}}],["cr",{"2":{"145":1}}],["credential",{"2":{"435":1}}],["credentialresponse",{"2":{"435":2}}],["credentialsin",{"2":{"128":2,"130":2,"133":3,"146":1}}],["credentials",{"0":{"138":1},"2":{"58":1,"128":2,"129":1,"130":2,"133":3,"134":2,"138":2,"146":3,"155":1,"367":1}}],["credit",{"2":{"341":1,"362":1}}],["creation",{"2":{"351":1,"355":1,"391":1,"417":1,"420":1,"425":1,"432":1}}],["creating",{"0":{"3":1,"80":1},"2":{"79":1,"80":1,"82":1,"101":1,"109":1,"117":1,"120":1,"122":1,"124":1,"145":1,"283":1,"302":2}}],["creator",{"2":{"331":1}}],["creators",{"2":{"123":1}}],["createroot",{"2":{"435":1}}],["createhashrouter",{"2":{"435":2}}],["create2",{"2":{"420":1,"431":1}}],["creates",{"2":{"364":1}}],["createtransaction",{"2":{"311":2}}],["createtoken",{"2":{"3":1}}],["createclient",{"2":{"190":1}}],["createconfig",{"2":{"81":1,"85":2,"86":2,"207":1}}],["createconnector",{"2":{"80":2}}],["createcollection",{"2":{"3":1}}],["createasset",{"2":{"3":1}}],["createdat",{"2":{"183":1,"436":2}}],["createdby",{"2":{"183":1}}],["created",{"2":{"3":2,"105":1,"110":1,"115":1,"120":1,"122":1,"124":1,"156":1,"183":2,"309":1,"313":1,"314":1,"327":1,"331":1,"355":2,"364":1,"398":1,"409":1,"429":1,"433":1,"469":1,"490":2,"492":2}}],["create",{"2":{"2":1,"3":1,"6":2,"52":1,"59":1,"80":3,"81":1,"99":1,"105":1,"110":4,"115":2,"120":2,"122":2,"124":2,"126":1,"128":1,"133":1,"143":1,"146":2,"159":1,"163":1,"165":1,"166":1,"184":1,"190":1,"237":1,"278":1,"282":1,"283":2,"303":5,"305":1,"309":2,"311":1,"313":1,"325":1,"328":1,"361":1,"363":2,"426":1,"429":1,"496":1,"511":1,"515":1}}],["cryptography",{"2":{"367":1}}],["cryptographic",{"2":{"354":2,"466":1}}],["cryptographically",{"2":{"313":1,"351":1}}],["cryptocurrencies",{"2":{"341":1,"362":1}}],["cryptocurrency",{"2":{"52":1,"62":1,"66":1}}],["cryptocheckout",{"0":{"66":1},"2":{"65":1,"66":2}}],["crypto",{"0":{"66":1},"2":{"11":1,"351":1}}],["claim",{"2":{"251":1}}],["class",{"2":{"59":1,"109":2,"120":1,"122":1,"124":1,"146":2,"309":1,"361":1}}],["clone",{"2":{"465":2}}],["cloud",{"0":{"325":1},"2":{"155":1,"325":1,"332":1,"333":1}}],["cloudflare",{"0":{"8":1},"2":{"357":1}}],["clossing",{"2":{"460":1}}],["closing",{"2":{"129":1}}],["closer",{"2":{"468":1}}],["closesession",{"2":{"460":2}}],["close",{"0":{"437":1,"460":1},"2":{"87":1,"253":1,"460":1}}],["closedno",{"2":{"460":1}}],["closed",{"2":{"58":1,"183":1,"437":2}}],["clothes",{"2":{"43":1}}],["clipboard",{"2":{"266":2}}],["clientid=",{"2":{"435":1}}],["client=",{"2":{"63":1,"81":1,"85":1,"86":2,"190":1}}],["clients",{"0":{"283":1},"1":{"284":1,"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1},"2":{"33":1}}],["client",{"0":{"35":1},"2":{"15":2,"33":3,"35":2,"47":2,"125":1,"139":2,"143":6,"155":3,"189":2,"190":9,"237":1,"239":1,"242":2,"275":1,"280":1,"281":1,"282":1,"283":4,"284":1,"285":2,"286":1,"287":1,"288":1,"289":1,"290":2,"291":1,"292":1,"293":1,"294":2,"295":2,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"303":7,"305":3,"306":1,"309":5,"311":2,"317":2,"318":2,"319":2,"320":2,"435":1,"449":1,"452":1,"459":2,"460":2,"468":1,"496":1,"498":1,"501":2,"508":1,"513":1,"514":1,"515":1}}],["clicking",{"2":{"149":1}}],["clicks",{"2":{"91":1,"203":1,"236":1,"378":1,"495":1}}],["click",{"2":{"2":3,"32":1,"104":3,"105":3,"106":1,"110":1,"115":2,"145":7,"160":1,"190":1,"327":1,"328":1,"330":1,"332":1,"334":1}}],["cheap",{"2":{"344":1}}],["checkpoint",{"0":{"425":1},"2":{"423":1,"425":2,"430":1}}],["checked",{"2":{"417":1,"439":1}}],["checksum",{"2":{"465":2}}],["checks",{"2":{"398":1,"491":1}}],["checking",{"2":{"19":1,"66":1,"130":1}}],["check",{"2":{"15":1,"23":1,"40":2,"47":1,"92":1,"101":1,"102":1,"111":1,"117":1,"133":1,"164":1,"166":1,"204":1,"244":1,"285":1,"337":1,"339":1,"379":1,"444":1,"488":1}}],["checkoutconfig",{"2":{"66":1}}],["checkoutsettings",{"2":{"64":2,"65":2}}],["checkout",{"0":{"9":1,"64":1,"65":1,"66":1},"1":{"66":1,"67":1},"2":{"62":1,"63":6,"64":3,"65":1,"92":1,"204":1,"379":1}}],["chrome",{"0":{"265":1},"2":{"243":2,"264":1,"265":1,"371":1,"433":1,"435":1,"436":2,"437":1}}],["children",{"2":{"190":2}}],["child",{"2":{"146":1,"190":1}}],["china",{"2":{"13":1}}],["choosing",{"2":{"331":1}}],["chooses",{"2":{"266":1}}],["choose",{"2":{"6":1,"112":1,"163":1,"266":1,"341":1,"362":1,"367":1}}],["choices",{"2":{"165":1}}],["choice",{"2":{"163":1,"328":1,"433":1}}],["chose",{"2":{"106":1,"135":1,"266":1,"302":1}}],["chop",{"2":{"32":1}}],["chart",{"2":{"149":1}}],["chance",{"2":{"145":1}}],["changed",{"2":{"105":1,"391":1,"431":1}}],["changes",{"0":{"160":1},"2":{"40":1,"50":1,"106":2,"107":2,"115":1,"140":2,"145":1,"160":2,"222":1,"243":1,"435":1}}],["change",{"2":{"2":1,"13":1,"32":2,"149":1,"273":1,"354":1,"386":1,"391":1,"398":1,"419":1,"506":1}}],["challenging",{"2":{"106":1}}],["challenge",{"2":{"94":2}}],["chainindexer",{"2":{"109":3}}],["chainid",{"0":{"228":1,"290":1},"2":{"25":3,"32":1,"38":3,"39":3,"52":3,"66":1,"78":1,"184":5,"185":1,"225":1,"280":2,"290":2,"321":2,"410":2,"439":1,"440":1,"446":1,"447":1,"448":1,"513":2}}],["chain",{"2":{"2":1,"6":1,"16":2,"17":2,"19":1,"20":6,"25":1,"34":2,"37":1,"38":1,"39":1,"85":5,"86":5,"102":1,"109":1,"111":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":1,"184":1,"186":1,"228":1,"263":1,"270":1,"271":1,"272":1,"283":2,"285":2,"290":2,"294":2,"321":5,"329":1,"332":1,"335":1,"475":1,"490":1,"503":1,"504":1,"505":1}}],["chains",{"0":{"196":1,"209":1},"2":{"1":1,"20":3,"27":1,"31":2,"81":1,"85":4,"86":4,"194":1,"196":1,"207":1,"209":1,"267":1,"313":1}}],["calculated",{"2":{"427":1,"428":1,"429":1,"430":1}}],["caller",{"2":{"397":1}}],["called",{"2":{"26":1,"39":1,"43":1,"44":1,"184":1,"244":1,"267":1,"352":1,"375":1,"389":1,"392":1,"397":1,"398":1,"399":1,"401":2,"430":1,"435":1,"453":1,"454":1,"467":1,"489":1,"490":2}}],["callfunction",{"2":{"303":7}}],["calldata",{"2":{"269":1,"270":2,"411":1,"502":1,"503":2}}],["callable",{"2":{"146":2}}],["callback",{"0":{"446":1},"2":{"131":2,"184":1,"446":2}}],["callbacks",{"2":{"131":2}}],["callcontractfunction",{"2":{"120":1,"122":1,"124":1,"303":4,"309":1}}],["callshowauthsuccessscreen",{"2":{"133":4}}],["calls",{"2":{"19":2,"43":1,"128":1,"130":1,"133":2,"307":2,"389":1,"397":1,"449":2}}],["calling",{"0":{"303":1},"2":{"1":1,"19":1,"52":1,"102":1,"111":1,"117":1,"125":3,"128":1,"146":1,"302":1,"303":1,"388":1,"404":1,"405":1,"411":1,"431":1,"492":1}}],["call",{"0":{"339":1},"2":{"1":1,"2":1,"3":1,"6":1,"15":1,"40":1,"102":2,"111":1,"117":1,"125":5,"128":1,"130":2,"133":5,"134":1,"185":1,"242":1,"303":1,"335":1,"398":1,"459":2,"490":1,"491":1,"501":1}}],["caution",{"2":{"244":1,"397":1}}],["causes",{"2":{"190":1}}],["cause",{"2":{"107":3,"110":1,"140":3}}],["carefully",{"2":{"243":1}}],["cardtype",{"2":{"44":1}}],["cards",{"2":{"32":2,"44":2,"149":1}}],["card",{"2":{"32":2,"44":1,"341":2,"362":2}}],["capturables",{"2":{"131":1}}],["capturable",{"2":{"131":2}}],["capabilities",{"2":{"35":1,"184":1,"186":2,"242":1,"501":1}}],["cater",{"2":{"165":1}}],["category",{"2":{"99":12,"133":5}}],["catch",{"2":{"6":1,"237":1,"307":2,"435":1,"440":1,"447":1,"496":1}}],["cast",{"2":{"44":1}}],["cases",{"2":{"45":1,"50":1,"102":1,"106":1,"129":1,"236":1,"242":1,"397":1,"486":1,"495":1,"501":1}}],["case",{"2":{"14":1,"43":1,"78":1,"126":1,"133":1,"303":2,"305":2,"366":1,"391":1,"399":1,"400":1,"406":2,"459":1,"492":2}}],["caches",{"2":{"20":1}}],["canonical",{"2":{"469":1}}],["cancel",{"2":{"448":1}}],["cancelled",{"2":{"183":1,"446":1}}],["candidate",{"2":{"184":1,"406":1}}],["canvas",{"2":{"93":4}}],["cannot",{"0":{"13":1},"2":{"95":1,"158":1,"222":1,"302":1,"353":1,"357":1,"443":1,"471":1}}],["canada",{"2":{"11":1}}],["can",{"2":{"3":3,"5":1,"11":2,"16":1,"17":1,"19":1,"20":4,"21":1,"22":1,"32":3,"44":1,"45":1,"46":2,"50":1,"52":7,"57":1,"59":1,"61":1,"68":2,"70":1,"78":1,"79":1,"80":3,"81":1,"82":1,"87":1,"89":1,"93":1,"101":1,"102":4,"105":3,"106":1,"107":1,"111":2,"112":2,"115":2,"117":3,"118":2,"119":3,"120":1,"121":2,"122":1,"123":3,"124":1,"125":2,"130":1,"131":2,"133":1,"135":3,"138":3,"139":1,"140":1,"145":2,"146":1,"147":1,"153":1,"155":2,"156":1,"165":1,"175":1,"177":1,"179":1,"180":1,"181":1,"188":1,"189":2,"190":6,"191":1,"192":1,"198":1,"206":1,"211":1,"215":1,"226":1,"231":1,"232":1,"236":2,"237":1,"241":1,"242":2,"243":1,"244":6,"245":1,"248":1,"260":1,"263":1,"266":3,"267":2,"268":1,"269":1,"270":1,"271":2,"272":1,"275":3,"282":1,"283":2,"284":2,"303":2,"305":1,"306":1,"307":2,"308":1,"309":1,"321":1,"323":1,"324":2,"331":1,"335":2,"341":3,"346":2,"350":1,"351":3,"352":4,"355":5,"357":5,"359":1,"360":1,"361":1,"362":3,"363":2,"364":2,"366":1,"367":2,"375":1,"376":1,"386":1,"387":2,"389":1,"391":1,"397":1,"404":1,"405":2,"406":1,"410":1,"411":1,"419":1,"422":1,"424":1,"425":1,"426":2,"427":1,"429":6,"434":2,"435":2,"437":2,"440":1,"443":1,"445":1,"446":1,"448":1,"450":1,"457":1,"459":1,"465":1,"466":2,"490":2,"491":1,"492":2,"495":2,"496":1,"500":1,"501":2,"502":1,"503":1,"504":2,"505":1,"508":3,"515":1}}],["cost",{"2":{"417":1}}],["coding",{"2":{"163":1}}],["codestringidentifier",{"2":{"450":1}}],["codehash",{"2":{"420":2}}],["codeat",{"0":{"291":1},"2":{"291":1}}],["codein",{"2":{"133":1,"134":1}}],["code",{"0":{"159":1,"442":1},"2":{"15":1,"16":1,"25":1,"35":1,"38":1,"47":1,"86":1,"94":1,"101":1,"102":2,"119":1,"121":1,"123":1,"125":3,"134":2,"145":2,"159":2,"160":1,"166":1,"168":1,"189":1,"190":1,"192":1,"205":1,"215":1,"231":1,"244":1,"266":3,"291":1,"351":1,"352":1,"354":4,"357":1,"388":1,"420":2,"430":1,"431":3,"434":2,"439":1,"440":2,"442":1,"443":1,"445":4,"451":1,"452":2,"453":2,"454":1,"459":1,"460":2,"461":1,"465":1,"475":1,"476":2,"478":3,"480":1,"481":1,"483":1,"484":1,"486":1}}],["could",{"2":{"304":1,"324":1,"353":1,"367":1,"472":1,"488":1}}],["countdown",{"2":{"490":4,"492":2}}],["counterparty",{"2":{"490":1,"492":1}}],["counterfactual",{"2":{"398":1,"431":1}}],["counter",{"2":{"391":1,"406":1,"420":1}}],["count",{"2":{"150":1,"410":1}}],["course",{"2":{"20":1,"32":1,"243":1}}],["co",{"2":{"123":1}}],["cognito",{"2":{"94":2,"442":1}}],["coins",{"2":{"91":1,"203":1,"378":1}}],["coinbase",{"2":{"77":1}}],["coinquantity",{"2":{"66":1}}],["coingecko",{"2":{"19":1}}],["corrupt",{"2":{"388":1}}],["corruption",{"2":{"388":1}}],["correctness",{"2":{"429":1}}],["correct",{"2":{"199":1,"213":1,"397":1,"405":1,"411":1,"425":1,"429":1}}],["corresponds",{"2":{"392":1,"394":1,"397":1}}],["correspond",{"2":{"76":1,"77":1,"397":1}}],["corresponding",{"2":{"1":1,"15":1,"47":1,"50":1,"76":1,"77":1,"166":1,"175":1,"177":1,"412":1,"413":1,"472":1}}],["corner",{"2":{"149":1}}],["core",{"2":{"63":1,"84":1,"85":1,"226":1,"237":1,"388":1,"496":1}}],["covalenthq",{"2":{"52":2}}],["colleted",{"2":{"135":1}}],["collect",{"2":{"134":1,"143":1}}],["collected",{"2":{"133":2,"134":1}}],["collectible",{"0":{"270":1,"503":1},"2":{"270":2,"503":2}}],["collectibles",{"2":{"67":1,"91":1,"203":1,"378":1}}],["collectibleinfo",{"2":{"38":1}}],["collectionaddress",{"2":{"182":2,"183":1,"339":1}}],["collectionid",{"2":{"3":4}}],["collection",{"2":{"3":5,"169":2,"183":3,"329":1,"339":1}}],["collections",{"0":{"3":1,"169":1},"2":{"1":1,"3":10}}],["colorschememanager",{"2":{"115":4}}],["colors",{"2":{"70":2,"115":1,"163":1}}],["color",{"0":{"115":1},"2":{"52":1,"70":1,"115":3}}],["communication",{"2":{"352":1,"370":1}}],["communicating",{"2":{"352":1}}],["communicate",{"2":{"243":1}}],["commons",{"2":{"237":2,"496":2}}],["common",{"2":{"41":1,"164":1,"165":1,"166":1,"184":1,"236":1,"267":1,"495":1}}],["command",{"2":{"39":1,"145":1,"190":1,"200":1,"206":1,"212":1,"465":2}}],["commands",{"2":{"15":1,"108":2}}],["comma",{"2":{"32":1}}],["comes",{"2":{"363":1,"461":1,"466":1}}],["come",{"2":{"32":1}}],["combined",{"2":{"267":1,"364":1,"375":1,"397":1,"411":1,"413":1,"416":4}}],["combine",{"2":{"163":1,"191":1}}],["combinations",{"0":{"416":1}}],["combination",{"2":{"32":1,"190":1,"416":1,"426":1}}],["combat",{"2":{"19":1}}],["com",{"2":{"17":2,"19":1,"25":1,"29":2,"38":1,"39":2,"43":2,"44":2,"49":2,"52":3,"60":1,"99":8,"104":1,"106":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"190":1,"192":1,"205":1,"215":1,"231":1,"233":1,"240":1,"244":2,"256":1,"258":1,"268":1,"376":1,"436":4,"452":1,"465":1,"499":1}}],["coming",{"0":{"9":1,"116":1},"2":{"100":1,"112":1,"275":1,"389":1,"397":1,"508":1}}],["computing",{"2":{"420":1,"431":1}}],["computed",{"2":{"419":1}}],["compute",{"0":{"418":1,"420":1},"2":{"406":1,"420":1}}],["computer",{"2":{"326":1,"369":1}}],["comparison",{"2":{"466":1}}],["compare",{"2":{"465":1,"466":1}}],["compared",{"2":{"363":1,"405":1,"406":1}}],["compatible",{"2":{"1":1,"20":4,"27":1,"31":1,"43":1,"50":2,"191":1,"232":2,"243":1,"244":1,"355":2}}],["composed",{"2":{"267":1,"343":1,"375":1}}],["component",{"2":{"93":1,"128":2,"146":1,"190":12,"435":1}}],["components",{"0":{"308":1},"2":{"85":1,"86":1,"113":1,"189":1,"190":6,"308":1,"340":2}}],["compelling",{"2":{"165":1}}],["compromised",{"2":{"353":3,"363":1,"364":2,"366":1,"367":3}}],["comprised",{"2":{"113":1}}],["comprehensive",{"2":{"91":1,"203":1,"378":1}}],["compiled",{"2":{"102":1}}],["compile",{"2":{"102":1}}],["compliant",{"2":{"427":1}}],["complicated",{"2":{"125":2}}],["complexity",{"2":{"117":1,"163":1,"467":1}}],["complex",{"0":{"120":1,"122":1,"124":1},"2":{"117":1,"125":1,"126":1,"426":1}}],["completeness",{"2":{"284":1}}],["completes",{"2":{"94":1}}],["completely",{"2":{"43":1,"45":1,"105":1,"165":1}}],["complete",{"2":{"19":1,"60":1,"86":1,"240":1,"244":1,"357":2,"435":1,"444":1,"449":1,"499":1}}],["completedplease",{"2":{"38":1}}],["completedto",{"2":{"38":1}}],["completed",{"2":{"2":1,"128":1,"156":1,"420":1}}],["comply",{"2":{"11":1}}],["concludes",{"2":{"492":1}}],["convention",{"2":{"236":1,"495":1}}],["convenient",{"2":{"166":1,"275":1,"508":1}}],["convenience",{"2":{"31":1,"33":1,"116":1,"120":1,"122":1,"124":1,"165":1,"309":1,"310":2}}],["converted",{"2":{"304":1}}],["convert",{"2":{"119":1,"125":1}}],["congratulations",{"2":{"101":1,"334":1}}],["congo",{"2":{"13":1}}],["conflicts",{"2":{"80":1}}],["configs",{"2":{"411":1}}],["configjsonrpcprovider",{"2":{"237":1,"496":1}}],["configured",{"2":{"96":1,"97":1,"155":1,"156":1,"158":1,"392":1,"463":1,"490":1}}],["configure",{"2":{"65":1,"68":1,"72":1,"85":1,"153":1,"155":1,"156":1,"341":1,"352":1,"357":1,"360":1,"362":1}}],["configuring",{"0":{"65":1},"1":{"66":1,"67":1},"2":{"105":1}}],["configurations",{"2":{"81":1,"85":1,"357":1,"405":1,"423":1,"429":2}}],["configuration",{"0":{"66":1,"67":1,"68":1,"72":1,"159":1,"160":1,"385":1,"391":1,"398":1,"404":1,"405":1,"406":1,"412":1,"413":1,"417":1,"419":1,"422":1,"429":1,"431":1},"1":{"73":1,"74":1,"75":1,"76":1,"77":1,"392":1,"393":1,"394":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":2,"413":1,"414":2,"415":2,"416":2,"417":2,"418":3,"419":1,"420":3,"423":1,"424":1,"425":1,"426":1,"427":1,"428":1,"429":1,"430":1,"431":1},"2":{"58":1,"66":1,"67":1,"68":1,"81":2,"85":1,"92":1,"96":1,"97":1,"153":1,"157":1,"158":1,"159":2,"160":2,"161":1,"204":1,"350":1,"357":3,"360":1,"379":1,"391":2,"392":1,"393":1,"394":1,"395":1,"396":1,"397":3,"398":4,"400":1,"405":2,"412":1,"417":1,"418":2,"419":1,"422":1,"425":1,"429":5,"430":2,"431":3,"490":2,"492":1}}],["config=",{"2":{"63":1,"68":1,"81":2,"85":1,"86":3}}],["config",{"2":{"59":1,"63":1,"81":1,"85":2,"86":3,"105":1,"110":2,"138":3,"143":2,"184":4,"185":1,"361":1,"429":1,"430":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1}}],["confirmations",{"2":{"275":1,"355":1,"508":1}}],["confirmation",{"0":{"274":1,"507":1},"2":{"266":1,"274":1,"281":1,"507":1,"514":1}}],["confirms",{"2":{"266":1}}],["confirmed",{"2":{"186":1}}],["confirm",{"2":{"2":1,"275":1,"452":1,"508":1}}],["connectoptions",{"2":{"245":2}}],["connectorsforwallets",{"2":{"194":2}}],["connectors",{"0":{"79":1,"81":1,"82":1,"191":1},"1":{"80":1},"2":{"76":2,"77":2,"79":4,"80":5,"81":5,"82":2,"84":4,"85":3,"86":3,"188":1,"190":3,"191":4,"194":2,"207":4,"225":1,"226":2}}],["connector",{"0":{"80":1,"189":1,"190":1},"2":{"76":2,"77":2,"80":12,"81":3,"165":1,"192":1,"193":1,"194":1,"200":3,"205":1,"206":5,"207":2,"212":3,"213":2,"222":2,"223":2,"225":2,"226":1}}],["connectdetails",{"2":{"236":2,"237":1,"244":3,"245":1,"254":1,"495":2,"496":1}}],["connectweb3react",{"2":{"226":1}}],["connected",{"0":{"150":1},"2":{"101":1,"147":1,"150":2,"236":1,"244":1,"266":1,"290":1,"294":1,"495":1}}],["connecttowaas",{"2":{"101":1}}],["connect",{"0":{"87":1,"197":1,"210":1,"243":1,"245":1,"277":1,"510":1},"1":{"244":1,"245":1,"246":2,"247":2,"248":2,"249":2,"250":2,"251":2,"252":2,"253":2,"254":2,"255":2,"256":2,"257":2,"258":2,"259":2,"260":2,"261":2,"262":2,"263":2,"264":1,"265":1,"266":1},"2":{"77":1,"81":1,"85":1,"86":1,"87":1,"91":1,"192":1,"194":1,"197":2,"198":1,"203":1,"205":1,"207":1,"210":1,"211":1,"215":1,"219":1,"220":1,"228":1,"231":1,"232":2,"236":5,"237":1,"243":3,"244":7,"245":2,"246":2,"249":1,"250":1,"251":1,"252":3,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"266":1,"277":1,"341":1,"362":1,"378":1,"495":5,"496":1,"510":1}}],["connecting",{"0":{"101":1,"244":1,"264":1,"265":1,"266":1},"2":{"85":1,"101":1,"253":2,"254":1,"256":1,"266":1}}],["connecticut",{"2":{"12":1}}],["connections",{"2":{"91":1,"203":1,"378":1}}],["connection",{"2":{"6":1,"83":1,"87":1,"197":1,"210":2,"226":1,"229":1,"266":3,"284":1}}],["consensys",{"0":{"382":1},"2":{"380":1}}],["consent",{"2":{"105":1,"355":1}}],["considered",{"2":{"413":1,"416":1,"423":1,"424":1,"429":1,"443":1}}],["consider",{"2":{"307":1}}],["considerations",{"2":{"199":1,"213":1,"403":1}}],["consists",{"2":{"51":1}}],["consulted",{"2":{"190":1}}],["consumption",{"2":{"173":1}}],["cons",{"2":{"66":1}}],["console",{"2":{"6":2,"25":1,"38":1,"39":2,"66":1,"155":1,"156":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"184":1,"186":1,"235":1,"237":2,"244":2,"269":2,"270":2,"271":2,"272":2,"273":1,"280":2,"282":2,"390":1,"433":1,"435":2,"436":1,"439":1,"440":1,"444":1,"447":1,"448":1,"494":1,"496":2,"502":2,"503":2,"504":2,"505":2,"506":1,"513":2,"515":2}}],["constants",{"0":{"402":1,"403":1},"2":{"398":4,"404":2}}],["constraints",{"2":{"352":1}}],["constructions",{"2":{"355":1}}],["constructor",{"2":{"309":1}}],["construct",{"2":{"305":1,"311":1,"409":1,"410":1}}],["const",{"2":{"6":3,"16":2,"25":2,"28":1,"38":2,"39":4,"59":1,"63":1,"64":4,"65":1,"68":1,"80":2,"81":3,"85":6,"86":7,"87":4,"88":3,"131":4,"133":6,"134":1,"135":1,"168":3,"169":4,"171":3,"173":3,"175":4,"177":3,"180":3,"182":1,"184":4,"185":1,"186":3,"189":2,"190":2,"194":1,"207":2,"217":3,"225":2,"226":3,"235":2,"236":2,"237":5,"244":11,"245":1,"269":13,"270":13,"271":12,"272":13,"273":3,"277":3,"278":3,"279":2,"280":3,"281":2,"282":1,"361":1,"390":4,"398":1,"404":1,"409":4,"410":6,"418":2,"420":6,"421":1,"430":1,"433":3,"434":4,"435":9,"436":2,"437":2,"439":2,"440":2,"444":1,"445":2,"446":1,"448":1,"477":1,"479":1,"482":1,"485":1,"487":1,"488":1,"494":2,"495":2,"496":5,"502":13,"503":13,"504":12,"505":13,"506":3,"510":3,"511":3,"512":2,"513":3,"514":2,"515":1}}],["contains",{"2":{"43":1,"44":1,"45":1,"89":1,"145":1,"352":1,"388":1,"392":1,"452":1,"470":1,"475":1,"478":1,"480":1,"483":1,"486":1}}],["contain",{"2":{"43":1,"44":1,"99":1,"423":1,"426":1,"449":1}}],["containing",{"2":{"38":1,"39":1,"190":1,"364":1,"459":1,"466":1,"475":1}}],["contact",{"2":{"4":1,"25":1,"38":1,"39":2,"58":1,"168":1,"443":1}}],["contents",{"2":{"450":1}}],["content",{"2":{"25":2,"38":2,"39":4,"40":1,"52":1,"146":3,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":2,"183":1,"185":1,"189":1,"190":2,"325":1,"339":1,"473":1}}],["context",{"0":{"421":1},"2":{"17":1,"25":1,"29":1,"38":1,"39":2,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"283":1,"312":1,"398":1,"420":1,"422":1}}],["contribution",{"2":{"429":1}}],["contributes",{"2":{"427":1}}],["contribute",{"2":{"82":1}}],["controlled",{"2":{"158":1,"363":1,"490":3}}],["controlling",{"2":{"128":1,"367":1,"490":1}}],["control",{"2":{"19":1,"80":1,"106":1,"158":1,"163":1,"236":1,"363":1,"365":1,"366":1,"367":1,"422":1,"490":2,"495":1}}],["contractbytecodeasstring",{"2":{"306":1}}],["contractdeploymentresult",{"2":{"306":1}}],["contractdeploymentreturn",{"2":{"102":1}}],["contractdeployer",{"2":{"306":2}}],["contractcall",{"2":{"303":3,"309":1}}],["contractabi",{"2":{"303":2,"305":2}}],["contractabiasstring",{"2":{"125":2,"126":1}}],["contractaddress",{"2":{"32":1,"34":3,"38":3,"39":3,"43":1,"44":1,"52":3,"66":1,"67":1,"78":1,"125":2,"126":1,"168":2,"169":6,"173":1,"175":4,"177":6,"186":1,"291":1,"302":1,"303":2,"305":2,"306":1,"309":1,"476":1}}],["contractaddresses",{"2":{"25":3,"173":1,"180":3}}],["contracturi",{"2":{"26":1,"46":1}}],["contractinfo",{"2":{"25":1,"29":1}}],["contractmetadata",{"2":{"25":2}}],["contracts",{"0":{"302":1,"305":1,"306":1,"342":1},"1":{"303":1,"304":1,"305":1,"306":1,"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"19":2,"22":1,"25":1,"36":1,"39":1,"43":2,"44":1,"50":2,"52":1,"102":1,"126":1,"168":1,"169":1,"173":1,"177":1,"186":1,"304":1,"328":1,"346":2,"351":1,"380":1,"417":1,"429":2,"490":1,"492":1}}],["contract",{"0":{"24":1,"25":2,"26":1,"38":1,"102":1,"174":1,"175":1,"176":1,"177":1,"303":1,"329":1,"330":1,"331":1,"346":1,"380":1,"489":1,"490":1},"1":{"25":1,"26":1,"175":1,"177":1,"347":1,"381":1,"382":1,"383":1,"490":1,"491":1,"492":1},"2":{"3":4,"19":1,"20":1,"22":3,"24":5,"25":2,"26":1,"27":1,"31":3,"32":10,"34":1,"36":5,"37":3,"38":1,"39":1,"43":2,"44":2,"46":3,"50":1,"66":2,"101":1,"102":5,"119":2,"120":2,"121":1,"122":2,"123":2,"124":2,"125":4,"126":2,"165":1,"168":2,"169":4,"173":3,"175":8,"177":9,"179":1,"180":1,"183":4,"270":1,"272":1,"291":1,"302":8,"303":8,"305":9,"306":1,"309":5,"310":1,"323":1,"328":1,"329":2,"330":1,"331":3,"332":1,"335":1,"342":2,"346":1,"350":1,"352":1,"386":2,"390":1,"391":1,"397":1,"398":1,"408":1,"414":1,"417":2,"420":2,"427":1,"431":1,"456":1,"457":1,"458":1,"459":2,"489":2,"490":5,"491":4,"492":1,"503":1,"505":1}}],["contrast",{"2":{"2":1}}],["continue",{"2":{"13":1,"448":1}}],["copy",{"2":{"2":1,"125":1,"146":2,"155":1,"266":1,"325":1,"326":1,"327":1}}],["eyjpc3mioijodhrwoi8vbxktzg9tywlulmf1dggwlmnvbsisinn1yii6imf1dggwfdeymzq1niisimf1zci6ijeymzrhymnkzwyilcjlehaiojezmteyode5nzasimlhdci6mtmxmti4mdk3mcwibmftzsi6ikphbmugrg9liiwiz2l2zw5fbmftzsi6ikphbmuilcjmyw1pbhlfbmftzsi6ikrvzsj9",{"2":{"452":1}}],["eyjhbgcioijiuzi1niisinr5cci6ikpxvcj9",{"2":{"452":1}}],["eyjwcm9qzwn0swqioje2ode1lcjycgntzxj2zxiioijodhrwczovl3dhyxmuc2vxdwvuy2uuyxbwin0=",{"2":{"357":1}}],["eye",{"2":{"131":1}}],["eyes",{"2":{"43":1}}],["effectively",{"2":{"354":1,"365":1}}],["efforts",{"2":{"112":1}}],["effortlessly",{"2":{"90":1,"91":1,"202":1,"203":1,"377":1,"378":1}}],["ecdsa",{"2":{"343":1}}],["ecosystem",{"2":{"41":1,"82":1}}],["ephemeral",{"2":{"274":1,"275":1,"278":1,"507":1,"508":1,"511":1}}],["equal",{"2":{"319":1,"320":1,"424":1}}],["equally",{"2":{"269":1,"502":1}}],["equivalent",{"2":{"60":1,"240":1,"499":1}}],["ee69",{"2":{"180":3}}],["elsewhere",{"2":{"188":1}}],["else",{"2":{"133":1,"280":1,"282":1,"351":1,"440":1,"513":1,"515":1}}],["elements",{"2":{"93":1}}],["element",{"2":{"44":1,"96":1,"97":1,"435":2}}],["estimate",{"2":{"292":1}}],["estimategas",{"0":{"292":1},"2":{"292":1}}],["established",{"2":{"443":1}}],["establish",{"2":{"94":1}}],["establishing",{"2":{"93":1}}],["esocialsignintype",{"2":{"133":1}}],["essentials",{"2":{"104":1,"106":1}}],["essentially",{"2":{"102":1,"109":1,"332":1,"490":1}}],["edit",{"2":{"96":1,"97":1,"99":1,"106":1,"115":1}}],["editor",{"2":{"95":1,"104":1}}],["emittednotransactionhashstringhash",{"2":{"475":1}}],["emitted",{"2":{"439":1}}],["empower",{"2":{"106":1}}],["emailstringuser",{"2":{"452":1}}],["emailnoproof",{"2":{"452":1}}],["emailauth",{"2":{"134":1}}],["emailcode",{"2":{"133":1,"134":1}}],["emailin",{"2":{"133":1,"134":1}}],["emaillogin",{"2":{"133":1,"134":1}}],["emailed",{"2":{"94":1}}],["email",{"0":{"94":1,"134":1,"434":1,"442":1},"2":{"75":1,"94":1,"101":1,"133":1,"134":3,"254":1,"258":3,"259":1,"351":1,"352":1,"364":2,"367":2,"433":1,"434":11,"442":1,"443":1,"444":2,"445":1,"452":6}}],["embedded",{"0":{"86":1,"88":1,"153":1,"350":1,"355":1},"1":{"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"356":1},"2":{"57":2,"58":3,"59":1,"83":1,"84":1,"88":1,"91":1,"93":2,"107":2,"140":2,"153":1,"154":1,"159":2,"160":2,"161":1,"165":3,"166":1,"203":1,"324":1,"350":1,"354":1,"355":2,"356":1,"357":4,"360":1,"361":1,"378":1,"432":1,"434":1,"441":1,"449":6,"450":1,"452":2,"459":1,"472":1,"477":1,"479":1,"482":1,"485":1,"487":1,"488":1}}],["eoas",{"2":{"342":1,"343":1,"346":1}}],["eoawallet",{"2":{"313":2}}],["eoa",{"2":{"61":1,"241":1,"313":1,"314":1,"414":1,"427":1,"500":1}}],["ealiest",{"2":{"286":1,"289":1,"291":1,"293":1,"295":1}}],["each",{"2":{"126":2,"129":1,"133":1,"145":1,"168":1,"275":1,"319":1,"320":1,"324":1,"325":3,"350":1,"355":2,"363":2,"426":1,"429":3,"450":1,"466":1,"470":1,"472":1,"508":1}}],["earliest",{"2":{"285":2}}],["earlier",{"2":{"105":1,"332":1}}],["earring",{"2":{"43":1}}],["ease",{"2":{"184":1}}],["easier",{"2":{"116":1,"459":1}}],["easily",{"2":{"20":3,"32":1,"50":1,"62":1,"106":1,"119":2,"121":1,"123":1,"165":1,"231":1,"236":1,"242":1,"313":1,"314":1,"323":1,"355":1,"495":1,"501":1}}],["easy",{"0":{"462":1},"1":{"463":1,"464":1,"465":1},"2":{"20":2,"23":1,"41":1,"93":1,"126":1,"131":1,"153":1,"173":1,"269":1,"344":1,"502":1}}],["eif",{"2":{"465":3}}],["eip1271",{"2":{"237":1,"242":1,"496":1,"501":1}}],["eip1155",{"2":{"41":1}}],["eip712",{"2":{"236":4,"250":1,"495":4}}],["eip721",{"2":{"41":1}}],["eips",{"2":{"43":4,"44":2,"451":2}}],["eip",{"2":{"43":3,"44":2,"237":1,"397":1,"414":1,"451":2,"469":1,"496":1}}],["either",{"2":{"33":1,"40":1,"43":1,"45":2,"52":1,"81":1,"101":1,"125":1,"126":1,"128":1,"130":1,"135":1,"269":1,"319":1,"320":1,"352":1,"363":1,"387":1,"427":1,"438":1,"448":1,"452":1,"472":1,"490":1,"502":1}}],["etc",{"0":{"170":1,"171":1},"1":{"171":1},"2":{"25":1,"38":1,"39":1,"50":1,"184":1,"198":1,"210":1,"211":1,"324":1,"351":1,"352":1,"433":1}}],["ethtransaction",{"2":{"303":4,"309":2,"311":1,"317":1,"318":1,"319":2,"320":2}}],["ethauth",{"2":{"236":1,"237":7,"249":1,"250":1,"251":1,"495":1,"496":7}}],["ethrpc",{"2":{"184":1}}],["ethwallet",{"2":{"184":1,"313":4,"314":1,"319":2,"320":2}}],["eth",{"0":{"170":1,"171":1},"1":{"171":1},"2":{"118":3,"244":1,"311":1}}],["ethkit",{"0":{"61":1,"241":1,"500":1},"2":{"61":2,"241":2,"500":2}}],["ethiopia",{"2":{"13":1}}],["ether",{"2":{"52":1,"410":1,"459":1}}],["etherscan",{"2":{"125":1}}],["ethers",{"0":{"264":1,"402":1,"403":1},"2":{"6":7,"16":3,"48":3,"61":1,"84":3,"184":3,"193":2,"200":3,"206":2,"212":3,"216":2,"223":1,"237":3,"241":1,"243":1,"267":5,"268":2,"269":3,"270":2,"271":2,"272":2,"277":2,"278":3,"282":1,"375":4,"376":2,"390":4,"398":4,"404":2,"418":3,"420":7,"430":4,"496":3,"500":1,"502":3,"503":2,"504":2,"505":2,"510":2,"511":3,"515":1}}],["ethereum",{"0":{"171":1,"265":1,"409":1},"2":{"1":1,"15":1,"20":3,"27":1,"31":2,"32":1,"43":2,"44":1,"47":1,"50":2,"51":2,"61":1,"191":1,"241":1,"242":1,"243":3,"244":1,"267":1,"284":1,"307":1,"342":1,"343":1,"355":1,"370":1,"409":1,"451":1,"455":1,"456":1,"457":1,"458":1,"459":1,"475":2,"500":1,"501":1}}],["ever",{"2":{"128":1,"302":1,"431":1}}],["everywhere",{"2":{"243":1}}],["every",{"2":{"20":1,"158":2,"274":1,"386":1,"390":1,"412":1,"414":1,"417":1,"449":1,"466":1,"490":1,"491":1,"507":1}}],["everything",{"2":{"3":1,"19":1,"163":1,"307":1}}],["event",{"2":{"101":1,"111":1,"139":1,"145":1,"244":1}}],["events",{"0":{"179":1},"1":{"180":1},"2":{"20":1,"101":1,"102":3,"111":1,"117":2,"148":1,"151":1,"179":1,"180":1,"447":1}}],["even",{"2":{"20":1,"50":1,"105":1,"163":1,"168":1,"169":1,"173":1,"177":1,"269":1,"304":1,"354":1,"355":1,"363":1,"367":1,"389":1,"397":1,"502":1}}],["evm",{"2":{"15":1,"20":1,"37":1,"47":1,"118":1,"119":1,"125":2,"244":1,"304":1,"307":2,"313":1,"355":1}}],["evolve",{"2":{"13":1}}],["egypt",{"2":{"13":1}}],["err",{"2":{"17":1,"25":1,"29":1,"38":1,"39":2,"168":3,"169":3,"171":3,"173":3,"175":3,"177":3,"180":2,"237":2,"496":2}}],["errors",{"2":{"128":1,"188":1}}],["error",{"0":{"188":1},"2":{"6":1,"125":1,"131":2,"133":1,"145":1,"435":6,"440":3,"478":4}}],["erc1271",{"2":{"411":1,"427":1}}],["erc1155contractaddress",{"2":{"269":1,"270":2,"502":1,"503":2}}],["erc1155data",{"2":{"269":2,"502":2}}],["erc1155interface",{"2":{"269":2,"270":5,"502":2,"503":5}}],["erc1155tokenaddress",{"2":{"123":1,"126":1,"270":1,"503":1}}],["erc1155send",{"2":{"454":1,"458":1,"459":1}}],["erc1155s",{"2":{"105":1}}],["erc1155",{"0":{"25":1,"38":1,"44":1,"124":1,"168":1,"169":1,"175":1},"2":{"3":1,"19":1,"20":2,"22":1,"24":2,"31":1,"32":1,"36":4,"37":3,"43":2,"44":2,"45":1,"123":5,"124":9,"168":1,"169":1,"173":1,"175":1,"177":2,"180":1,"309":1,"310":1,"458":1}}],["erc21",{"2":{"122":1}}],["erc20send",{"2":{"454":1,"456":1,"459":1}}],["erc20contract",{"2":{"303":6,"305":4}}],["erc20data",{"2":{"269":2,"502":2}}],["erc20interface",{"2":{"269":2,"271":5,"502":2,"504":5}}],["erc20tokenaddress",{"2":{"119":1,"126":2}}],["erc20",{"0":{"25":1,"46":1,"120":1,"168":1,"175":1,"177":1},"2":{"19":1,"20":2,"22":2,"24":2,"31":1,"36":2,"46":3,"52":3,"119":5,"120":9,"125":1,"126":1,"173":1,"175":1,"177":2,"180":1,"302":1,"303":2,"305":2,"309":8,"310":1,"347":1,"456":1}}],["erc",{"0":{"270":1,"271":1,"272":1,"409":1,"410":1,"503":1,"504":1,"505":1},"2":{"43":1,"44":1,"270":3,"271":3,"272":3,"329":1,"331":1,"408":1,"409":1,"410":1,"503":3,"504":3,"505":3}}],["erc721send",{"2":{"454":1,"457":1,"459":1}}],["erc721contractaddress",{"2":{"269":1,"272":2,"502":1,"505":2}}],["erc721data",{"2":{"269":2,"502":2}}],["erc721interface",{"2":{"269":2,"272":5,"502":2,"505":5}}],["erc721tokenaddress",{"2":{"121":1,"126":1,"272":1,"505":1}}],["erc721",{"0":{"25":1,"38":1,"43":1,"122":1,"168":1,"169":1,"175":1},"2":{"3":1,"19":1,"20":2,"24":2,"31":1,"36":4,"37":3,"43":1,"45":1,"121":3,"122":8,"168":3,"169":1,"173":1,"175":1,"177":2,"180":1,"309":1,"310":1,"457":1}}],["e",{"2":{"3":1,"66":1,"99":1,"112":1,"120":1,"122":1,"124":1,"157":1,"184":1,"198":1,"211":1,"275":1,"302":1,"347":1,"351":1,"508":1}}],["ensuring",{"2":{"429":1}}],["ensures",{"2":{"491":1}}],["ensure",{"2":{"3":1,"6":1,"50":1,"104":1,"130":2,"145":1,"158":1,"236":1,"367":2,"397":1,"425":1,"471":1,"495":1}}],["enum",{"2":{"183":1}}],["engines",{"2":{"163":1,"165":1}}],["enclaves",{"2":{"354":1,"355":1}}],["enclave",{"0":{"461":1,"465":1},"1":{"462":1,"463":1,"464":1,"465":1,"466":1},"2":{"351":1,"354":6,"461":2,"466":4,"469":1,"491":1}}],["encrypted",{"2":{"351":1,"354":4}}],["encrypt",{"2":{"139":1,"354":1}}],["encryption",{"2":{"139":1}}],["encourage",{"2":{"114":1,"310":1}}],["encodepacked",{"2":{"428":1,"429":1}}],["encodetypeddatadigest",{"2":{"410":2}}],["encodefunctiondata",{"2":{"269":3,"270":3,"271":3,"272":3,"398":2,"404":1,"502":3,"503":3,"504":3,"505":3}}],["encode",{"2":{"125":1,"186":1,"270":2,"271":2,"272":2,"390":1,"410":1,"411":1,"418":5,"430":2,"459":1,"503":2,"504":2,"505":2}}],["encoded",{"2":{"51":1,"125":1,"409":2,"410":1,"411":1,"459":2,"466":1}}],["encoding",{"0":{"408":1},"1":{"409":1,"410":1,"411":1},"2":{"125":2,"302":1}}],["encoding=",{"2":{"99":2}}],["entity",{"2":{"354":1}}],["entire",{"2":{"125":1,"190":1,"302":1,"326":1,"467":1}}],["entirely",{"2":{"46":1,"114":1}}],["enter",{"2":{"94":1,"96":1,"97":1,"104":1,"160":1,"333":1}}],["entered",{"2":{"94":1}}],["enabled",{"2":{"168":1,"169":1,"173":1,"177":1,"267":1}}],["enable",{"2":{"95":1,"99":1,"146":1,"153":1}}],["enables",{"2":{"5":1,"62":1,"165":1,"181":1,"355":1}}],["enabling",{"2":{"91":1,"190":1,"203":1,"351":1,"378":1}}],["enjoy",{"2":{"82":1,"91":1,"203":1,"378":1}}],["environments",{"2":{"459":1}}],["environment",{"2":{"163":1,"165":1,"355":1}}],["env",{"2":{"59":2,"361":2,"433":2,"434":2,"435":2,"436":2,"437":2,"439":2,"440":2}}],["enforced",{"2":{"490":1}}],["enforce",{"2":{"51":1,"352":1,"452":1}}],["enqueuetokensforrefresh",{"2":{"39":6}}],["endingblocknumber",{"2":{"289":1}}],["endian",{"2":{"51":1}}],["endpoint",{"2":{"3":2,"5":1,"6":2,"15":2,"31":1,"32":1,"34":1,"36":1,"47":1,"52":1,"185":2,"335":2,"449":1}}],["endpointssequence",{"2":{"31":1}}],["endpoints",{"0":{"21":1,"34":1},"2":{"1":3,"5":1,"15":3,"31":3,"40":1,"47":2,"50":1}}],["end",{"2":{"3":2,"23":2,"340":2}}],["execute",{"2":{"478":1}}],["executednosucceededbooleanwhether",{"2":{"475":1,"478":1}}],["executed",{"2":{"51":1,"270":1,"271":1,"272":1,"439":1,"440":2,"476":1,"478":1,"503":1,"504":1,"505":1}}],["execution",{"2":{"475":1}}],["executing",{"2":{"403":2,"438":1,"483":1}}],["exact",{"2":{"354":1}}],["examine",{"2":{"125":1}}],["examples",{"0":{"201":1,"214":1,"345":1,"348":1},"2":{"15":1,"16":1,"17":1,"23":1,"34":1,"244":1}}],["example",{"0":{"32":1,"89":1,"182":1,"221":1,"230":1,"233":1,"339":1,"415":1,"476":1,"481":1,"484":1},"2":{"3":3,"15":1,"19":1,"22":1,"25":1,"32":2,"34":2,"38":1,"43":2,"44":1,"47":1,"66":1,"67":1,"80":2,"89":1,"111":1,"117":1,"118":2,"120":1,"122":1,"124":1,"125":1,"126":1,"146":1,"168":1,"169":1,"171":1,"173":1,"175":2,"177":2,"180":1,"189":3,"190":4,"191":1,"192":1,"199":2,"205":1,"213":2,"214":1,"215":1,"221":1,"231":1,"233":1,"236":1,"237":1,"242":1,"244":1,"246":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"264":1,"266":1,"273":1,"303":3,"304":1,"305":3,"309":3,"352":1,"364":1,"415":1,"465":2,"466":1,"468":1,"495":1,"496":1,"501":1,"506":1}}],["excellent",{"2":{"243":1}}],["exceptions",{"2":{"307":3}}],["exception",{"2":{"284":1,"304":1}}],["except",{"2":{"95":1,"434":1}}],["exclude",{"2":{"125":1}}],["excluding",{"2":{"108":1}}],["exists",{"2":{"146":1}}],["exist",{"2":{"99":2,"428":1,"433":1}}],["existing",{"2":{"50":1,"80":1,"95":1,"165":2,"450":1,"491":1}}],["extra",{"2":{"242":2,"307":1,"501":2}}],["extremely",{"2":{"93":1,"126":1}}],["extension",{"0":{"265":1,"371":1},"2":{"46":1,"243":2,"264":1,"265":1,"371":1}}],["extensions",{"2":{"32":1,"244":1}}],["extend",{"2":{"45":1,"106":1,"399":1}}],["externally",{"0":{"343":1},"1":{"344":1,"345":1},"2":{"342":1,"343":1,"401":1}}],["external",{"2":{"11":1,"351":1,"388":1,"396":1,"429":2}}],["expire",{"2":{"450":1}}],["expiresnumbertimestamp",{"2":{"450":1}}],["expires",{"2":{"440":1,"451":1,"452":1,"453":1,"459":1,"460":1,"476":1,"478":1}}],["expiresat",{"2":{"436":2,"468":1}}],["expiry",{"0":{"249":1},"2":{"183":2,"249":2}}],["express",{"2":{"429":1}}],["explanation",{"2":{"199":2,"213":2}}],["explain",{"2":{"143":1}}],["explicitly",{"2":{"190":1}}],["explorer",{"2":{"125":1}}],["explore",{"2":{"91":1,"203":1,"378":1}}],["experimental",{"2":{"188":1,"190":1}}],["experiment",{"2":{"115":1}}],["experience",{"2":{"68":1,"90":1,"91":1,"163":4,"165":2,"202":1,"203":1,"236":1,"243":1,"275":1,"307":1,"355":2,"367":1,"377":1,"378":1,"495":1,"508":1}}],["experiences",{"2":{"0":1,"165":1,"181":1,"351":1}}],["expected",{"2":{"321":1,"354":1}}],["expects",{"2":{"304":1}}],["expect",{"2":{"102":1,"112":1}}],["expand",{"2":{"96":1,"97":1,"145":1,"332":1,"333":1}}],["expanding",{"2":{"82":1}}],["exposes",{"2":{"117":1}}],["expose",{"2":{"109":1}}],["exposed",{"2":{"2":1}}],["exported=",{"2":{"99":1}}],["export",{"2":{"80":1,"189":1,"190":1,"225":1,"354":1,"421":1,"430":1,"435":3}}],["b7ada9ee8a3fa0a2c74c23ddd04a58f0b095d0465327b2d8461b9b81bcbc7236563ff0326c8614fe9205669636955199",{"2":{"465":1}}],["bql",{"2":{"452":1}}],["bsc",{"0":{"171":1}}],["bnb",{"0":{"171":1}}],["bd",{"2":{"140":1}}],["blueprint",{"2":{"146":2}}],["blueprintcallable",{"2":{"133":5}}],["blobs",{"2":{"354":1}}],["blob",{"2":{"43":2,"44":1,"190":1}}],["blockcount",{"2":{"293":2}}],["blockchains",{"2":{"307":1}}],["blockchain",{"0":{"109":1,"117":1,"179":1},"1":{"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"180":1},"2":{"14":1,"19":1,"20":1,"22":1,"91":1,"109":1,"117":3,"163":1,"165":2,"180":1,"203":1,"244":1,"267":1,"355":1,"363":1,"378":1}}],["blockrange",{"0":{"289":1},"2":{"289":2}}],["blockhash",{"2":{"287":1,"300":1,"476":4}}],["blockbyhash",{"0":{"287":1},"2":{"287":1}}],["blockbynumber",{"0":{"286":1},"2":{"286":1}}],["blocknoremovedbooleanwhether",{"2":{"475":1}}],["blocknoblockhashstringhash",{"2":{"475":1}}],["blocknumbers",{"2":{"289":1}}],["blocknumber",{"0":{"288":1},"2":{"285":5,"286":2,"288":2,"289":1,"291":3,"293":2,"295":3,"476":4}}],["blocknative",{"2":{"215":1}}],["blocking",{"2":{"244":2}}],["blocks",{"2":{"19":1,"289":1,"293":1,"307":2}}],["block",{"2":{"6":4,"125":1,"244":1,"285":3,"286":4,"287":4,"288":1,"289":2,"300":2,"439":1,"475":2}}],["bp",{"2":{"128":1,"146":1}}],["b",{"2":{"99":1,"104":1,"110":2,"146":1,"429":2,"465":1}}],["bielkqonjty9di9fillfb6imqinxoysw",{"2":{"452":1}}],["binaries",{"2":{"145":1}}],["binary",{"2":{"125":1,"426":1,"459":1}}],["bindufunction",{"2":{"133":1}}],["bind",{"2":{"133":3,"146":1}}],["biginteger",{"2":{"295":1,"304":1}}],["bigintegar",{"2":{"285":2,"292":1,"295":1,"297":1,"298":1,"300":1,"305":6,"309":1}}],["bigint",{"2":{"180":1}}],["big",{"2":{"51":1,"184":1}}],["bits",{"2":{"51":2}}],["bit",{"2":{"51":2,"145":1}}],["breaches",{"2":{"411":1}}],["break",{"2":{"186":1}}],["breaking",{"2":{"107":3,"140":3,"222":1}}],["breaks",{"2":{"43":1}}],["brave",{"2":{"436":1}}],["branded",{"2":{"352":1}}],["branding",{"2":{"163":1}}],["brackets",{"2":{"302":1}}],["broadcast",{"2":{"133":1}}],["broken",{"2":{"129":1}}],["browsable",{"2":{"99":2}}],["browse",{"2":{"99":1,"357":2}}],["browsers",{"2":{"244":3,"369":1}}],["browser",{"0":{"371":1},"2":{"25":1,"33":1,"38":1,"39":2,"135":1,"163":2,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"188":1,"190":4,"239":1,"243":3,"244":1,"340":1,"365":1,"370":1,"464":1,"498":1}}],["brown",{"2":{"43":1}}],["bring",{"2":{"13":1,"116":1}}],["bootmeasurement",{"2":{"465":1}}],["boolean",{"2":{"168":3,"169":2,"173":2,"177":2}}],["bool",{"2":{"133":1,"183":2,"304":2,"392":1,"411":1}}],["bob",{"2":{"410":1}}],["box",{"2":{"145":1}}],["bounded",{"2":{"413":1}}],["bounds",{"2":{"346":1}}],["bound",{"2":{"133":1}}],["bonus",{"0":{"310":1},"2":{"112":1}}],["bow",{"2":{"44":1}}],["bored",{"2":{"43":2}}],["body",{"2":{"25":1,"38":1,"39":2,"131":2,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"183":1}}],["both",{"2":{"3":1,"15":1,"25":1,"31":1,"38":1,"39":2,"41":1,"43":1,"45":5,"165":3,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"350":1,"351":1,"364":1,"403":2,"488":1,"490":1,"491":1,"492":1}}],["bottom",{"2":{"0":1,"71":3,"468":1}}],["buy",{"2":{"151":1}}],["burden",{"2":{"459":1}}],["burn",{"2":{"126":1}}],["burma",{"2":{"13":1}}],["bugfixes",{"2":{"107":1,"140":1}}],["bug",{"2":{"99":1,"190":1}}],["bundling",{"2":{"269":1,"502":1}}],["bundle",{"0":{"51":1},"2":{"51":1,"52":1,"270":1,"271":1,"272":1,"400":1,"403":3,"503":1,"504":1,"505":1}}],["bunch",{"2":{"50":1,"243":1}}],["bump",{"2":{"50":1}}],["building",{"0":{"238":1,"497":1},"1":{"239":1,"240":1,"241":1,"242":1,"498":1,"499":1,"500":1,"501":1},"2":{"164":1,"191":1,"242":1,"340":1,"501":1}}],["builds",{"2":{"107":1,"108":1,"140":1}}],["build",{"0":{"465":1},"2":{"19":1,"20":1,"23":1,"32":1,"52":1,"93":1,"99":1,"104":2,"106":1,"145":4,"147":1,"163":1,"181":1,"191":1,"274":1,"307":1,"324":1,"369":1,"370":1,"507":1}}],["builder",{"0":{"7":1,"147":1,"153":1,"322":1,"328":1},"1":{"148":1,"149":1,"150":1,"151":1,"152":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1},"2":{"1":1,"2":1,"6":1,"14":3,"16":1,"19":1,"25":1,"28":1,"38":1,"39":1,"52":1,"70":1,"102":1,"110":2,"119":3,"121":2,"123":2,"138":1,"147":1,"148":1,"149":1,"153":2,"159":1,"166":1,"168":1,"184":2,"186":2,"283":1,"323":1,"328":1,"329":1,"357":1,"360":1}}],["built",{"2":{"15":1,"20":2,"60":1,"61":1,"90":1,"107":1,"114":1,"128":1,"140":1,"145":1,"146":1,"202":1,"240":1,"241":1,"243":1,"357":1,"377":1,"466":1,"499":1,"500":1}}],["button",{"2":{"64":2,"87":2,"88":2,"232":1}}],["but",{"2":{"4":1,"19":2,"20":1,"31":2,"33":1,"41":1,"43":1,"46":1,"59":1,"60":1,"61":1,"106":1,"112":1,"115":1,"117":1,"125":1,"175":2,"177":2,"191":1,"237":1,"240":1,"241":1,"243":2,"267":1,"284":1,"310":1,"351":1,"352":1,"353":1,"361":1,"395":1,"401":1,"417":1,"429":2,"439":1,"466":1,"469":1,"496":1,"499":1,"500":1}}],["banner",{"2":{"244":2,"256":3}}],["bannerurl",{"0":{"256":1},"2":{"244":2,"256":1}}],["bangladesh",{"2":{"13":1}}],["balancequery",{"2":{"305":3}}],["balanceof",{"2":{"305":2,"309":1}}],["balanceat",{"0":{"285":1},"2":{"284":1,"285":2}}],["balance",{"0":{"171":1},"2":{"171":3,"285":5,"305":3,"309":1}}],["balances",{"0":{"169":1,"170":1},"1":{"171":1},"2":{"20":2,"168":2,"169":1}}],["bar",{"2":{"110":1,"115":1}}],["basics",{"2":{"324":1}}],["basic",{"2":{"85":1,"115":1,"118":2,"120":1,"122":1,"124":1}}],["basis",{"2":{"80":1}}],["base64",{"2":{"466":1}}],["baseuri",{"2":{"40":1}}],["baseuris",{"2":{"3":1}}],["basecardid",{"2":{"32":1,"44":1}}],["based",{"0":{"134":1,"135":1,"136":1},"2":{"20":1,"125":1,"128":1,"134":2,"135":2,"163":3,"188":1,"189":1,"199":3,"200":1,"201":2,"212":1,"307":1,"340":1,"354":1,"441":1}}],["base",{"0":{"332":1},"2":{"3":1,"331":1,"332":1}}],["batching",{"0":{"407":1},"2":{"126":1,"270":1,"271":1,"272":1,"503":1,"504":1,"505":1}}],["batch",{"0":{"126":1,"269":1,"502":1},"2":{"36":2,"126":3}}],["batched",{"2":{"32":1,"50":1,"126":1,"319":1,"320":1}}],["back",{"2":{"32":1,"149":1,"266":1,"364":1}}],["background",{"2":{"17":1,"25":1,"29":1,"38":1,"39":2,"43":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1}}],["backends",{"0":{"238":1,"497":1},"1":{"239":1,"240":1,"241":1,"242":1,"498":1,"499":1,"500":1,"501":1},"2":{"14":1,"50":1,"60":1,"61":1,"239":1,"240":1,"241":1,"498":1,"499":1,"500":1}}],["backend",{"0":{"242":1,"501":1},"2":{"2":1,"15":1,"133":1,"134":1,"146":2,"163":1,"188":1,"242":3,"353":1,"501":3}}],["backup",{"2":{"0":1,"344":1}}],["byte",{"2":{"304":1,"411":1}}],["bytes1",{"2":{"420":1}}],["bytes4",{"2":{"411":4}}],["bytes32",{"2":{"390":1,"392":1,"396":1,"406":1,"411":3,"418":1,"420":3,"427":1,"430":6,"459":2}}],["bytesn",{"2":{"304":1}}],["bytes",{"2":{"269":1,"270":2,"304":2,"333":1,"411":3,"420":1,"459":2,"502":1,"503":2}}],["bytecode",{"2":{"102":5,"291":1}}],["by",{"2":{"3":1,"5":1,"11":1,"19":2,"32":1,"39":1,"43":1,"46":3,"50":1,"51":1,"52":2,"68":1,"70":1,"78":1,"81":1,"82":2,"91":1,"93":2,"99":6,"105":2,"106":1,"109":1,"110":1,"115":1,"118":1,"120":2,"122":2,"123":1,"124":2,"125":1,"126":1,"128":1,"130":1,"138":1,"143":1,"149":1,"152":1,"157":1,"158":2,"163":1,"164":1,"168":2,"183":2,"189":1,"190":2,"191":1,"196":1,"203":1,"209":1,"229":1,"232":1,"236":1,"244":3,"255":1,"260":1,"261":1,"263":1,"266":2,"275":1,"283":1,"284":2,"285":1,"287":1,"289":1,"299":1,"300":1,"312":1,"346":1,"351":3,"352":3,"353":1,"354":3,"355":1,"357":1,"363":1,"364":1,"366":1,"367":1,"378":1,"380":1,"387":2,"389":1,"390":1,"391":1,"397":1,"398":1,"399":1,"400":1,"404":1,"405":1,"411":1,"412":1,"413":1,"420":2,"425":1,"427":1,"431":3,"434":2,"435":1,"439":1,"440":1,"443":1,"448":1,"450":3,"459":1,"466":2,"470":1,"471":1,"473":1,"489":1,"490":3,"492":1,"495":1,"508":1}}],["beautifully",{"2":{"369":1,"370":1}}],["beautify",{"2":{"114":1}}],["beauty",{"2":{"243":1}}],["beginning",{"2":{"490":1}}],["begin",{"2":{"163":1,"435":1}}],["began",{"2":{"105":1}}],["beyond",{"2":{"149":1,"399":1}}],["being",{"2":{"126":1,"139":2,"146":1,"183":1,"188":1,"401":1,"459":1,"461":1,"471":1}}],["before",{"2":{"126":1,"130":1,"138":1,"145":1,"189":2,"357":1,"403":2,"439":1,"440":2,"465":1,"469":1,"488":1}}],["bespoke",{"2":{"126":1}}],["best",{"2":{"50":1,"242":1,"244":2,"256":1,"307":1,"501":1}}],["beneficial",{"2":{"126":1}}],["benefit",{"2":{"20":1,"82":1}}],["benefits",{"2":{"5":1,"50":1,"165":1,"243":1}}],["behalf",{"2":{"275":1,"508":1}}],["behavior",{"2":{"422":1}}],["behaviour",{"2":{"110":1,"388":1,"395":1}}],["behaves",{"2":{"266":1}}],["behind",{"2":{"20":1,"311":1,"489":1}}],["becomes",{"2":{"363":1,"469":1,"471":1}}],["become",{"2":{"106":1}}],["because",{"2":{"105":1,"106":1,"346":1,"353":1,"386":1}}],["better",{"2":{"116":2,"125":1,"131":1}}],["between",{"0":{"163":1},"2":{"93":1,"244":1,"354":1,"424":1,"465":1}}],["beta",{"2":{"58":1,"140":1}}],["been",{"2":{"19":1,"128":1,"351":1,"417":1,"434":1,"447":2,"448":1,"466":1}}],["belong",{"2":{"427":1}}],["below",{"2":{"1":1,"3":2,"14":1,"15":2,"16":1,"17":1,"24":1,"31":1,"32":1,"35":1,"37":1,"41":1,"43":1,"47":1,"63":1,"85":1,"86":1,"129":1,"145":1,"168":1,"189":1,"190":1,"191":2,"214":1,"245":1,"397":1,"435":1}}],["bells",{"2":{"307":1}}],["believers",{"2":{"123":1}}],["believe",{"2":{"105":1,"466":1}}],["belarus",{"2":{"13":1}}],["be",{"0":{"13":1},"2":{"2":4,"3":1,"11":4,"19":4,"20":2,"23":1,"31":1,"34":1,"38":2,"39":1,"45":1,"50":2,"51":1,"52":1,"58":1,"59":1,"70":1,"73":1,"74":1,"75":1,"76":3,"77":3,"78":3,"101":1,"105":3,"106":2,"107":1,"110":1,"112":2,"115":1,"117":1,"119":1,"120":1,"122":1,"124":1,"125":3,"128":2,"130":3,"131":1,"133":3,"134":1,"138":2,"139":2,"140":1,"143":1,"145":1,"146":3,"156":1,"157":1,"158":4,"159":2,"168":2,"169":2,"173":2,"177":2,"180":1,"186":1,"188":1,"189":2,"190":9,"192":1,"196":1,"198":1,"206":1,"209":1,"210":1,"211":1,"215":1,"222":1,"223":1,"225":1,"226":1,"229":1,"231":1,"236":1,"244":1,"246":1,"248":2,"251":1,"254":1,"255":1,"257":1,"258":1,"259":1,"260":1,"261":1,"263":2,"266":2,"268":1,"269":2,"275":1,"282":1,"284":2,"286":1,"289":1,"291":1,"293":1,"295":1,"304":1,"307":1,"308":1,"309":1,"314":1,"319":3,"320":3,"321":1,"332":2,"333":1,"341":3,"346":1,"350":1,"352":2,"353":3,"355":3,"357":1,"361":1,"362":3,"363":2,"365":1,"366":1,"367":5,"376":1,"387":2,"389":2,"391":1,"393":1,"395":1,"397":4,"400":1,"401":1,"403":5,"404":1,"405":2,"406":2,"409":1,"410":1,"411":1,"413":1,"414":1,"419":1,"420":1,"423":1,"425":1,"426":1,"429":2,"431":1,"433":1,"434":3,"437":2,"439":1,"440":4,"443":1,"446":1,"448":1,"449":3,"450":1,"451":1,"452":2,"453":1,"455":2,"456":1,"457":2,"458":1,"459":2,"460":1,"464":1,"465":2,"466":2,"469":2,"470":1,"471":1,"472":1,"489":1,"490":1,"492":1,"495":1,"502":2,"508":1,"515":1}}],["gnosis",{"2":{"158":1,"348":1}}],["g",{"2":{"66":1,"112":1,"120":1,"122":1,"124":1,"184":1,"198":1,"211":1,"275":1,"302":1,"347":1,"351":1,"508":1}}],["guestmodule",{"0":{"384":1},"2":{"421":1}}],["guess",{"2":{"324":1}}],["guarantees",{"2":{"355":1}}],["guaranteed",{"2":{"354":1}}],["guarantee",{"2":{"351":1,"443":1}}],["guard",{"0":{"352":1,"366":1},"2":{"44":1,"352":4,"353":2,"364":2,"366":2,"367":1,"439":1}}],["gui",{"2":{"128":3,"134":2}}],["guides",{"2":{"109":1,"161":1,"164":1,"357":1}}],["guide",{"2":{"23":1,"79":1,"80":1,"83":1,"92":1,"143":1,"164":1,"204":1,"323":1,"340":2,"356":1,"357":1,"360":1,"379":1,"466":1}}],["grep",{"2":{"466":1}}],["greater",{"2":{"424":1}}],["great",{"2":{"101":1,"102":1,"111":1,"117":1,"466":1}}],["ground",{"2":{"340":1}}],["groupname",{"2":{"194":1}}],["group",{"2":{"50":1}}],["grin",{"2":{"43":1}}],["grade",{"2":{"32":1}}],["grab",{"2":{"14":1}}],["git",{"2":{"104":3,"463":1,"465":2}}],["githubusercontent",{"2":{"52":1}}],["github",{"2":{"17":2,"19":1,"25":1,"29":2,"38":1,"39":2,"43":2,"44":1,"49":2,"60":1,"89":1,"104":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"189":1,"190":2,"192":1,"205":1,"215":1,"231":1,"233":1,"240":1,"465":1,"499":1}}],["gives",{"2":{"146":1,"469":1}}],["give",{"0":{"6":1},"2":{"44":1,"115":2,"130":1,"440":1}}],["given",{"2":{"2":1,"110":1,"138":1,"285":2,"291":1,"292":1,"295":2,"296":1,"317":2,"318":2,"319":2,"320":2,"321":1,"390":1,"394":1,"398":1,"400":1,"451":1,"460":1}}],["got",{"2":{"332":1}}],["goerli",{"2":{"198":1,"211":1}}],["goes",{"2":{"125":1,"490":1}}],["good",{"2":{"80":1}}],["googlelogin",{"2":{"435":3}}],["googleoauthprovider",{"2":{"435":3}}],["googleclientid",{"2":{"143":1}}],["google",{"0":{"143":1,"155":1,"435":1},"2":{"76":1,"81":2,"91":1,"95":1,"143":1,"155":5,"203":1,"244":1,"257":2,"259":1,"352":1,"357":1,"367":1,"378":1,"433":1,"435":8,"436":4,"443":1}}],["golang",{"2":{"60":1,"240":1,"499":1}}],["goldcardid",{"2":{"32":1}}],["going",{"2":{"20":1}}],["go",{"0":{"17":1,"29":1,"49":1,"60":1,"240":1,"499":1},"2":{"15":2,"17":3,"20":1,"25":1,"29":3,"33":1,"35":1,"38":1,"39":2,"47":1,"49":3,"50":1,"60":6,"61":2,"106":1,"129":1,"146":1,"159":1,"161":1,"165":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":2,"180":1,"237":3,"240":6,"241":2,"242":1,"302":1,"441":1,"496":3,"499":6,"500":2,"501":1}}],["globe",{"2":{"13":1}}],["global",{"2":{"11":1}}],["genericfailure",{"2":{"128":1}}],["generates",{"2":{"354":1}}],["generated",{"2":{"275":1,"313":1,"324":1,"364":2,"367":2,"434":2,"438":1,"449":1,"450":1,"452":1,"453":1,"454":1,"460":1,"475":2,"508":1}}],["generate",{"0":{"278":1,"511":1},"2":{"143":2,"313":1,"367":1,"425":1}}],["generation",{"2":{"20":1}}],["general",{"0":{"473":1},"2":{"34":1,"102":1,"106":1,"117":1,"145":1,"307":2}}],["geographical",{"2":{"11":1}}],["getelementbyid",{"2":{"435":1}}],["getetherbalance",{"2":{"171":5}}],["getimagehash",{"2":{"405":1}}],["getfunction",{"2":{"398":2,"404":1}}],["getchainid",{"2":{"280":1,"513":1}}],["getcomponentinchildren",{"2":{"93":1}}],["getcontractinfo",{"2":{"25":1,"29":1,"36":1}}],["getcontractinfobatch",{"2":{"25":5,"36":1}}],["getcollection",{"2":{"3":1}}],["getprovider",{"2":{"280":1,"513":1}}],["getaddress",{"0":{"316":1},"2":{"235":1,"270":1,"272":1,"277":1,"278":1,"285":2,"295":2,"303":2,"309":1,"316":1,"420":1,"494":1,"503":1,"505":1,"510":1,"511":1}}],["getwallet",{"2":{"235":1,"236":1,"244":5,"494":1,"495":1}}],["getmetatxnreceipt",{"2":{"185":2}}],["getsessionhash",{"2":{"433":1,"434":1,"435":2}}],["getstorageat",{"2":{"390":1}}],["getstoredkey",{"2":{"139":1}}],["getstoredcredentials",{"2":{"130":2}}],["getsigner",{"2":{"184":1,"269":2,"270":2,"271":2,"272":2,"273":1,"277":1,"502":2,"503":2,"504":2,"505":2,"506":1,"510":1}}],["getuseractivities",{"0":{"181":1},"1":{"182":1,"183":1},"2":{"181":1,"182":3,"183":1}}],["getloginurl",{"2":{"133":1}}],["getlatestblock",{"2":{"6":2}}],["getvalid",{"2":{"130":1}}],["getkitconnectwallets",{"2":{"81":2}}],["getdefaultconnectors",{"2":{"81":1,"85":2,"86":2}}],["gettoporders",{"2":{"339":1}}],["gettokensupplies",{"2":{"177":7}}],["gettokenrefreshstatus",{"2":{"39":5}}],["gettokenmetadatabatch",{"2":{"36":1}}],["gettokenmetadata",{"2":{"36":1,"38":6}}],["gettokenbalances",{"2":{"16":1,"17":1,"168":9,"169":7,"171":2}}],["gettransactionhistory",{"2":{"173":7,"175":7,"180":1}}],["getting",{"0":{"22":1,"56":1,"83":1,"164":1,"166":1,"358":1},"1":{"57":1,"58":1,"59":1,"84":1,"359":1,"360":1,"361":1},"2":{"92":1,"204":1,"379":1}}],["getblock",{"2":{"6":1}}],["get",{"0":{"327":1},"2":{"0":1,"3":1,"6":1,"14":1,"17":1,"19":1,"29":1,"34":3,"49":1,"55":1,"84":1,"105":1,"125":1,"130":1,"135":1,"140":2,"145":1,"164":2,"166":2,"235":1,"285":4,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"293":1,"294":1,"295":1,"297":1,"298":1,"299":1,"300":1,"321":1,"335":1,"338":1,"340":1,"369":1,"370":1,"374":1,"433":2,"455":1,"466":1,"494":1}}],["gains",{"2":{"490":1}}],["gain",{"2":{"353":2}}],["gather",{"2":{"324":1,"326":1}}],["gate",{"2":{"115":1}}],["gateway",{"0":{"5":1},"1":{"6":1},"2":{"5":1,"20":2,"283":1}}],["gaming",{"2":{"165":3,"355":1}}],["gameobject",{"2":{"93":1,"115":1}}],["game",{"2":{"15":2,"20":1,"22":1,"32":1,"47":1,"54":1,"55":1,"78":1,"86":1,"91":1,"105":5,"162":1,"163":6,"165":2,"191":1,"203":1,"267":1,"279":1,"329":1,"340":1,"355":1,"357":1,"378":1,"440":1,"451":1,"453":1,"512":1}}],["games",{"2":{"0":1,"14":1,"20":3,"107":1,"123":1,"140":1,"153":1}}],["gasused",{"2":{"440":1,"476":2,"478":1}}],["gaslist",{"2":{"413":1}}],["gaslimitestimator",{"2":{"311":1}}],["gaslimit",{"0":{"403":1},"2":{"303":1,"311":1,"398":2,"403":2,"404":1,"440":1,"476":1,"478":1}}],["gasless",{"2":{"165":1}}],["gastipcap",{"2":{"298":1}}],["gasprice",{"2":{"297":1,"303":1,"311":1}}],["gas",{"0":{"52":1},"2":{"50":7,"118":3,"126":1,"184":1,"186":2,"285":1,"292":2,"293":1,"297":1,"298":1,"311":1,"403":1,"417":1,"475":1,"478":1}}],["gt",{"2":{"2":2,"6":2,"34":10,"45":2,"51":3,"63":10,"64":4,"66":1,"68":3,"80":2,"81":8,"85":9,"86":21,"87":6,"88":4,"93":1,"96":2,"97":2,"99":42,"104":2,"106":1,"108":3,"110":4,"112":1,"115":3,"128":1,"130":1,"131":2,"133":10,"138":1,"145":3,"155":1,"182":1,"184":1,"189":4,"190":6,"206":1,"226":2,"237":2,"244":1,"267":1,"268":4,"289":2,"304":6,"305":5,"326":1,"335":3,"375":1,"376":4,"411":1,"429":1,"435":16,"446":1,"447":1,"448":1,"496":2}}],["due",{"2":{"115":1,"145":1,"189":1,"222":1,"443":1,"475":1}}],["during",{"2":{"110":1,"138":1,"145":1,"159":1,"391":1,"417":1,"425":2,"431":2,"489":1}}],["dropsession",{"2":{"437":1}}],["dropdown",{"2":{"2":1}}],["drawer",{"2":{"146":1}}],["drag",{"2":{"93":1,"106":1,"145":1}}],["day",{"2":{"490":1,"492":1}}],["days",{"2":{"149":1}}],["dangerous",{"2":{"388":1,"403":1}}],["dashboard",{"2":{"352":1}}],["dark",{"2":{"70":1,"244":1}}],["daicontractaddress",{"2":{"269":1,"271":3,"502":1,"504":3}}],["daily",{"2":{"147":1}}],["dai",{"2":{"50":1,"446":2}}],["damage",{"2":{"32":1,"353":1}}],["dapps",{"2":{"20":1,"50":1,"191":1,"214":1,"245":1,"266":1,"370":1}}],["dapp",{"0":{"244":1,"264":1,"265":1},"2":{"15":1,"20":1,"22":1,"47":1,"50":1,"190":1,"191":3,"192":2,"205":2,"215":2,"231":2,"233":1,"236":2,"237":1,"242":1,"243":3,"244":9,"246":1,"248":1,"250":1,"256":1,"264":2,"266":6,"267":1,"370":1,"375":1,"495":2,"496":1,"501":1}}],["datadelayedencodedatathe",{"2":{"459":1}}],["datatypes",{"2":{"304":2}}],["data2",{"2":{"270":2,"271":2,"272":2,"503":2,"504":2,"505":2}}],["data1",{"2":{"270":2,"271":2,"272":2,"503":2,"504":2,"505":2}}],["databeat",{"2":{"148":2}}],["database",{"2":{"117":2,"148":2,"354":1}}],["databases",{"2":{"20":1}}],["data",{"0":{"304":1,"409":1,"410":1,"470":1},"2":{"14":1,"19":2,"20":6,"39":1,"44":1,"45":3,"99":4,"118":1,"133":1,"148":1,"149":2,"181":1,"186":3,"269":4,"270":6,"271":4,"272":4,"303":1,"305":1,"333":1,"339":1,"351":1,"354":3,"355":1,"398":2,"404":1,"409":1,"410":2,"411":1,"439":3,"440":2,"452":1,"455":1,"457":2,"458":1,"459":7,"468":1,"470":1,"475":1,"476":7,"478":3,"480":1,"481":1,"483":1,"484":1,"486":1,"502":4,"503":6,"504":4,"505":4}}],["d",{"2":{"15":1,"16":1,"17":1,"25":1,"32":2,"35":1,"38":1,"39":2,"47":1,"52":1,"125":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":1,"180":1,"182":1,"185":1,"191":1,"237":1,"242":2,"440":1,"496":1,"501":2}}],["digest",{"2":{"428":1,"430":1}}],["digit",{"2":{"94":1}}],["diligence",{"0":{"382":1},"2":{"380":1}}],["difficult",{"2":{"307":1}}],["differ",{"2":{"465":1}}],["differs",{"2":{"199":1,"213":1,"386":1}}],["differing",{"2":{"129":1}}],["difference",{"2":{"270":1,"272":1,"503":1,"505":1}}],["differences",{"0":{"163":1},"2":{"41":1}}],["different",{"2":{"129":1,"191":1,"244":1,"270":1,"271":1,"272":1,"342":1,"350":1,"352":1,"354":1,"470":1,"472":1,"503":1,"504":1,"505":1}}],["dive",{"2":{"92":1,"165":1,"204":1,"356":1,"379":1}}],["dictionary",{"2":{"44":1,"45":1}}],["dice",{"2":{"44":1}}],["die",{"2":{"44":1}}],["disappears",{"2":{"492":1}}],["disaster",{"0":{"492":1},"2":{"158":1,"489":2}}],["disabled",{"2":{"93":1}}],["dist",{"2":{"268":1,"376":1}}],["distribution",{"0":{"268":1,"376":1},"2":{"268":1,"376":1,"429":1}}],["district",{"2":{"43":1}}],["distractions",{"2":{"355":1}}],["distract",{"2":{"165":1}}],["distinct",{"2":{"150":1,"441":1}}],["disk",{"2":{"129":1,"133":1}}],["discuss",{"2":{"443":1}}],["disconnect",{"2":{"252":1,"266":1}}],["disconnectweb3react",{"2":{"226":1}}],["discouraged",{"2":{"188":1}}],["discord",{"2":{"91":1,"95":1,"203":1,"237":1,"257":1,"378":1,"496":1}}],["discretion",{"2":{"11":1}}],["displaying",{"2":{"83":1}}],["displayedassets",{"0":{"78":1}}],["displayed",{"2":{"76":1,"77":1,"78":4,"128":1,"229":1,"266":1,"341":1,"362":1}}],["dispatched",{"2":{"185":1}}],["dispatches",{"2":{"52":1}}],["dispatch",{"2":{"50":1,"52":1,"273":1,"506":1}}],["dispatching",{"2":{"50":1}}],["direct",{"2":{"245":1,"352":1,"398":1}}],["directive",{"2":{"190":4}}],["directory",{"0":{"189":1,"190":1},"2":{"19":2,"146":1,"188":2,"190":2}}],["directly",{"2":{"15":1,"18":1,"20":1,"24":2,"30":1,"31":1,"37":2,"52":1,"102":1,"111":1,"117":1,"267":1,"275":1,"303":1,"341":1,"352":1,"362":1,"375":1,"406":1,"417":2,"434":1,"435":1,"508":1}}],["debit",{"2":{"341":1,"362":1}}],["debugging",{"2":{"307":1}}],["derive",{"2":{"278":1,"511":1}}],["deactivate",{"2":{"226":1}}],["deactivated",{"2":{"226":1}}],["deactivation",{"0":{"226":1}}],["deal",{"2":{"125":1}}],["decoding",{"2":{"302":1}}],["decode",{"2":{"390":2}}],["decodeproof",{"2":{"237":1,"496":1}}],["decoded",{"2":{"173":1}}],["decentralized",{"2":{"275":1,"508":1}}],["declare",{"2":{"190":1}}],["declared",{"2":{"190":1,"403":1}}],["declaration",{"2":{"190":1}}],["decryption",{"2":{"354":1}}],["decrypt",{"2":{"139":1}}],["decimalnormalizer",{"2":{"118":2,"119":1,"120":1,"125":2,"126":2,"309":2,"311":1}}],["decimals",{"2":{"32":1,"43":1,"44":1,"46":1,"52":3,"118":3,"119":4}}],["decisions",{"2":{"13":1}}],["denoted",{"2":{"125":1}}],["deny",{"2":{"11":1}}],["delightful",{"2":{"244":1}}],["delivery",{"2":{"50":1}}],["delete",{"2":{"145":3}}],["delegatecall",{"0":{"399":1},"2":{"398":2,"399":2,"404":1}}],["delegates",{"2":{"133":2}}],["delegate",{"2":{"133":1,"146":1,"305":1}}],["del",{"2":{"133":3}}],["delayed",{"2":{"125":1,"459":1}}],["delayedencodesubpackettype",{"2":{"459":1}}],["delayedencodedata",{"2":{"125":2,"126":1,"459":2}}],["delayedencode",{"0":{"125":1,"459":1},"2":{"125":4,"126":1,"454":1,"459":3}}],["deep",{"2":{"95":2,"99":3}}],["departments",{"2":{"429":1}}],["department",{"2":{"429":2}}],["deprecated",{"2":{"362":1}}],["depth",{"2":{"197":1,"210":1,"339":1}}],["depending",{"2":{"199":1,"213":1,"331":1,"461":1}}],["depends",{"2":{"189":1,"461":1}}],["depend",{"2":{"188":1,"267":1,"375":1,"470":1}}],["dependency",{"2":{"267":1,"375":1}}],["dependencies",{"2":{"84":1,"267":1,"375":1}}],["dependent",{"2":{"133":1}}],["dependant",{"2":{"115":1}}],["deploycontract",{"2":{"102":4}}],["deploymentresult",{"2":{"306":2}}],["deployment",{"0":{"102":1,"384":1},"2":{"102":1,"387":1,"431":1}}],["deployedwalletcontext",{"2":{"237":1,"496":1}}],["deployedcontractaddress",{"2":{"102":1}}],["deployed",{"2":{"50":1,"302":1,"331":1,"406":2,"431":1,"490":1,"491":3,"492":1}}],["deploying",{"0":{"306":1},"2":{"39":1,"102":2,"126":1}}],["deploy",{"0":{"8":1,"329":1},"2":{"3":2,"5":1,"102":2,"119":1,"121":1,"123":1,"160":1,"306":2,"328":1,"329":1,"431":1}}],["defi",{"2":{"246":1}}],["defines",{"2":{"388":1,"396":1,"422":1}}],["define",{"2":{"157":1,"352":1,"422":1}}],["defined",{"2":{"45":2,"133":1,"198":1,"211":1,"283":1,"309":1,"310":1,"312":1,"390":1,"398":1,"399":1,"401":1,"412":1,"420":2,"450":2,"473":1}}],["definition",{"2":{"125":1}}],["defense",{"2":{"105":2,"352":1}}],["defaultabicoder",{"2":{"390":2,"418":1}}],["defaultpurchaseamount",{"0":{"262":1},"2":{"262":1}}],["defaultfundingcurrency",{"0":{"261":1},"2":{"244":2,"261":1,"263":2}}],["defaulting",{"2":{"118":1}}],["defaultchainid",{"2":{"85":1,"86":1}}],["defaultnetwork",{"0":{"198":1,"211":1},"2":{"81":1,"194":1,"207":1,"244":1}}],["defaulttheme",{"0":{"70":1},"2":{"70":1}}],["defaults",{"2":{"59":1,"115":1,"295":1,"367":1}}],["default",{"2":{"19":1,"93":1,"99":3,"112":1,"128":1,"149":1,"157":1,"168":3,"169":1,"173":1,"177":1,"189":1,"190":1,"197":1,"198":2,"211":2,"219":1,"228":1,"232":1,"249":1,"253":1,"260":1,"261":1,"262":2,"263":2,"285":2,"309":1,"367":1,"435":1,"490":1}}],["determining",{"2":{"311":1}}],["determined",{"2":{"248":1}}],["determine",{"2":{"78":1,"303":1}}],["determines",{"2":{"70":1,"71":1,"75":1,"76":1,"77":1,"419":1,"423":1,"446":1}}],["detected",{"2":{"491":1}}],["detect",{"0":{"477":1,"479":1,"482":1,"485":1,"487":1},"2":{"87":1}}],["detects",{"2":{"20":1}}],["detailed",{"2":{"155":1}}],["detail",{"2":{"46":1}}],["details",{"0":{"330":1},"2":{"43":1,"44":1,"80":1,"173":1,"175":1,"177":3,"210":1,"266":1,"330":1,"333":1,"352":1,"452":1,"467":1}}],["demand",{"0":{"384":1},"2":{"243":2,"264":1,"355":1}}],["demystify",{"2":{"41":1}}],["demos",{"2":{"164":1,"166":1}}],["demo",{"0":{"54":1,"337":1,"356":1,"373":1},"2":{"54":1,"85":1,"86":1,"91":1,"105":3,"115":2,"190":1,"191":1,"192":1,"194":1,"201":3,"203":1,"205":1,"207":1,"214":4,"215":1,"221":1,"225":1,"230":1,"231":1,"233":2,"244":2,"264":1,"337":1,"357":4,"373":1,"378":1,"435":2}}],["demonstrates",{"2":{"237":1,"496":1}}],["demonstrated",{"2":{"189":1}}],["demonstrate",{"2":{"31":1}}],["demonstrating",{"2":{"3":1}}],["democratic",{"2":{"13":1}}],["desc",{"2":{"339":1}}],["describing",{"2":{"478":1}}],["described",{"2":{"46":1,"189":1,"190":1,"245":1}}],["describe",{"2":{"41":1}}],["description",{"2":{"32":3,"43":2,"44":1,"197":1,"210":1,"324":2,"325":2}}],["destinations",{"2":{"145":1}}],["desktop",{"0":{"135":1},"2":{"128":1,"135":2,"243":1}}],["design",{"2":{"126":1,"347":1}}],["designed",{"2":{"19":1,"20":1,"23":1,"148":1,"165":1,"243":1}}],["desired",{"2":{"115":1}}],["devices",{"2":{"365":1,"370":1}}],["device",{"2":{"279":1,"363":1,"364":1,"437":1,"469":2,"512":1}}],["deviate",{"2":{"41":1}}],["developed",{"2":{"191":1,"243":1}}],["developer",{"2":{"156":1,"341":1,"362":1}}],["developers",{"2":{"62":1,"68":1,"165":1,"181":1,"243":1}}],["developing",{"2":{"163":1,"307":1}}],["development",{"2":{"157":1,"162":1,"163":1,"166":1,"184":1,"267":1,"340":1,"352":1}}],["dev",{"2":{"0":1,"61":1,"182":2,"241":1,"339":1,"411":1,"500":1}}],["dom",{"2":{"435":1}}],["domains",{"2":{"157":1}}],["doing",{"2":{"309":1,"357":1}}],["doubt",{"2":{"125":1}}],["don",{"2":{"115":1,"116":1,"125":1,"147":1,"266":1,"269":1,"303":1,"417":1,"419":1,"432":1,"443":1,"502":1}}],["done",{"2":{"2":1,"58":1,"101":2,"102":1,"109":1,"131":1,"134":1,"135":1,"266":1,"364":1,"440":1}}],["do",{"0":{"189":1,"190":1},"2":{"32":1,"43":1,"46":1,"101":1,"102":2,"104":1,"106":2,"110":1,"111":1,"116":1,"117":2,"128":1,"139":2,"147":1,"189":1,"191":1,"236":2,"237":3,"302":2,"325":1,"346":1,"357":1,"466":1,"495":2,"496":3}}],["download",{"2":{"106":1}}],["downtime",{"2":{"20":1}}],["down",{"2":{"20":1,"76":1,"77":1,"96":1,"97":1,"302":1}}],["downside",{"2":{"19":1}}],["docker",{"2":{"463":1}}],["document",{"2":{"125":1,"354":1,"435":1,"466":5,"489":1}}],["documented",{"2":{"109":1}}],["documentation",{"2":{"1":1,"20":1,"23":1,"50":1,"57":1,"85":1,"105":2,"118":1,"119":1,"121":1,"123":1,"284":1,"285":1,"339":1}}],["docs",{"2":{"16":1,"17":1,"26":2,"43":2,"93":1,"99":1,"109":1,"143":1,"144":1,"191":1}}],["doesn",{"2":{"50":1,"99":2,"108":1,"128":1,"386":1,"397":1,"398":1,"402":1,"403":1,"433":1}}],["does",{"0":{"188":1},"2":{"0":1,"95":1,"118":1,"352":1,"431":1,"442":1,"450":1}}],["lv7xncqh",{"2":{"44":1}}],["lsm",{"2":{"20":1}}],["layout",{"0":{"413":1,"414":1},"1":{"414":1,"415":2,"416":2,"417":1,"418":1}}],["label",{"2":{"162":1,"163":3,"164":1}}],["launch",{"2":{"146":1,"335":1}}],["launcher",{"2":{"99":2}}],["lastly",{"2":{"340":1}}],["lastest",{"2":{"214":1}}],["last",{"2":{"145":1,"149":1}}],["later",{"2":{"108":1,"141":1,"222":1,"303":1,"305":1,"309":1,"464":1}}],["latency",{"2":{"20":1}}],["latestblock",{"2":{"6":2}}],["latest",{"2":{"6":5,"17":1,"29":1,"49":1,"106":1,"206":2,"268":1,"285":3,"286":1,"289":1,"291":1,"293":1,"295":3,"376":1}}],["landscape",{"2":{"128":1}}],["languages",{"0":{"242":1,"501":1}}],["language",{"2":{"15":1,"35":1,"47":1,"50":1,"237":1,"242":1,"496":1,"501":1}}],["lanka",{"2":{"13":1}}],["len",{"2":{"409":1}}],["length",{"2":{"319":2,"320":2}}],["lemur",{"2":{"332":1}}],["leaves",{"2":{"469":1}}],["leaf",{"2":{"426":2,"427":1,"428":1,"429":1,"430":1}}],["lead",{"2":{"388":1}}],["leading",{"2":{"91":1,"203":1,"378":1}}],["leaked",{"2":{"353":1}}],["least",{"2":{"158":1,"364":1}}],["learning",{"2":{"89":1}}],["learn",{"2":{"24":2,"27":1,"37":2,"119":1,"121":1,"123":1,"125":1,"340":1,"341":1,"354":1,"362":1}}],["left",{"2":{"68":1,"71":3,"145":2,"430":1,"459":1}}],["lets",{"2":{"466":1}}],["let",{"2":{"32":2,"125":1,"418":1,"468":1}}],["leverage",{"2":{"357":1}}],["leverages",{"2":{"20":1,"94":1,"340":1}}],["leveraging",{"2":{"55":1,"164":1,"338":1,"339":1,"357":2,"373":1}}],["levels",{"2":{"429":1}}],["level",{"0":{"26":1,"423":1},"1":{"424":1,"425":1,"426":1,"427":1,"428":1,"429":1},"2":{"3":4,"24":3,"26":1,"27":1,"32":3,"34":2,"149":1,"243":1,"468":1}}],["lebanon",{"2":{"13":1}}],["loss",{"2":{"388":1}}],["lost",{"2":{"364":3,"366":1}}],["long",{"2":{"244":1,"333":1,"434":1}}],["longer",{"2":{"20":1,"183":1}}],["locally",{"2":{"463":1,"465":1,"469":1}}],["localhost",{"2":{"357":1,"390":1}}],["localstorage",{"2":{"278":1,"511":1}}],["local",{"2":{"275":1,"278":1,"282":1,"409":1,"410":1,"508":1,"511":1,"515":1}}],["locate",{"2":{"93":1,"110":1,"115":1}}],["located",{"2":{"32":1,"110":1}}],["location",{"2":{"71":1}}],["locations",{"2":{"11":1}}],["locked",{"2":{"490":2}}],["lock",{"2":{"490":1}}],["locking",{"2":{"263":1}}],["lockfundingcurrencytodefault",{"0":{"263":1},"2":{"244":2}}],["lots",{"2":{"131":2}}],["loading",{"2":{"282":1,"435":1,"515":1}}],["load",{"2":{"110":2}}],["love",{"2":{"82":1}}],["low",{"2":{"20":1}}],["looking",{"2":{"45":1,"163":1}}],["lookup",{"2":{"32":1}}],["look",{"2":{"13":1,"86":1,"92":1,"125":1,"149":1,"204":1,"236":1,"267":1,"303":1,"305":1,"324":1,"325":1,"332":2,"340":1,"375":1,"379":1,"464":1,"468":1,"495":1}}],["louisiana",{"2":{"12":1}}],["lognologindexnumberindex",{"2":{"475":1}}],["lognotransactionindexnumberindex",{"2":{"475":1}}],["lognotopicsstring",{"2":{"475":1}}],["lognoblocknumbernumberthe",{"2":{"475":1}}],["lognodatastringdata",{"2":{"475":1}}],["logic",{"2":{"346":1}}],["logically",{"2":{"308":1}}],["logindex",{"2":{"476":3}}],["login",{"0":{"154":1,"245":1,"364":1,"442":1,"443":1},"1":{"155":1,"156":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"365":1,"366":1,"367":1},"2":{"95":1,"101":1,"133":5,"146":1,"154":1,"155":1,"156":1,"165":1,"351":3,"353":1,"363":1,"364":2,"367":1,"435":5,"441":1,"444":1}}],["loginpanel",{"2":{"93":5}}],["logins",{"2":{"91":1,"165":1,"203":1,"364":1,"378":1,"434":2,"444":2}}],["logging",{"2":{"256":1,"442":1,"443":1}}],["logsbloom",{"2":{"476":1}}],["logs",{"2":{"185":1,"435":1,"439":3,"475":1,"476":3}}],["logtemp",{"2":{"133":1}}],["logolight",{"2":{"80":2}}],["logodark",{"2":{"80":2}}],["logos",{"2":{"52":2,"163":1}}],["logourl",{"0":{"73":1},"2":{"52":3}}],["logouri",{"2":{"32":1}}],["logo",{"2":{"32":1,"73":1}}],["log",{"2":{"6":1,"25":1,"38":1,"39":2,"66":1,"133":1,"165":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":1,"184":1,"186":1,"235":1,"237":2,"244":2,"269":2,"270":2,"271":2,"272":2,"273":1,"280":2,"282":2,"390":1,"433":1,"434":1,"435":1,"436":1,"439":1,"440":1,"443":1,"444":1,"447":1,"448":1,"475":3,"494":1,"496":2,"502":2,"503":2,"504":2,"505":2,"506":1,"513":2,"515":2}}],["lt",{"0":{"200":1,"212":1},"2":{"6":2,"34":10,"45":2,"51":3,"63":9,"64":2,"68":3,"81":8,"85":8,"86":19,"87":4,"88":2,"99":38,"131":2,"133":1,"189":3,"190":5,"200":1,"212":1,"214":1,"236":4,"237":1,"244":1,"267":1,"268":4,"289":2,"305":5,"335":3,"375":1,"376":4,"427":2,"435":11,"495":4,"496":1}}],["little",{"2":{"323":1}}],["live",{"2":{"192":2,"205":2,"215":2,"231":2,"466":1}}],["lives",{"2":{"105":1}}],["lightweight",{"2":{"307":1}}],["light",{"2":{"68":1,"70":1,"244":1,"255":1,"425":1}}],["linux",{"2":{"97":2,"463":1}}],["links",{"2":{"142":1}}],["linking",{"2":{"95":1,"99":3}}],["link",{"2":{"32":1,"95":1}}],["linear",{"2":{"429":1}}],["line",{"2":{"0":1,"39":1,"352":1}}],["likewise",{"2":{"269":1,"502":1}}],["like",{"2":{"15":1,"16":1,"17":1,"19":1,"32":3,"35":1,"41":1,"47":1,"51":1,"61":1,"86":1,"91":1,"125":1,"133":5,"155":1,"156":1,"163":1,"165":4,"168":1,"169":1,"171":1,"173":1,"175":1,"199":1,"203":1,"236":1,"237":1,"241":1,"242":2,"243":2,"244":2,"267":1,"303":1,"305":1,"324":2,"325":1,"332":1,"355":1,"363":1,"375":1,"378":1,"429":1,"443":1,"447":1,"452":1,"464":1,"495":1,"496":1,"500":1,"501":2}}],["libs",{"2":{"421":1}}],["lib",{"2":{"268":1,"376":1}}],["libraries",{"2":{"188":4,"189":1,"191":2,"199":3,"201":2,"214":1,"459":1}}],["library",{"0":{"59":1,"189":1,"190":1,"361":1},"2":{"6":1,"59":1,"90":1,"107":1,"120":1,"122":1,"124":1,"189":1,"190":2,"202":1,"242":1,"304":1,"307":3,"308":1,"314":1,"360":1,"361":1,"377":1,"409":1,"410":1,"501":1}}],["libya",{"2":{"13":1}}],["limit",{"2":{"244":1,"259":1,"475":1,"478":1}}],["limitation",{"2":{"189":2}}],["limited",{"0":{"12":1},"2":{"11":1,"275":1,"353":1,"429":1,"459":1,"508":1}}],["limits",{"2":{"4":2,"352":1}}],["listsessions",{"2":{"436":1,"437":1}}],["listing",{"2":{"183":1}}],["listen",{"0":{"175":1,"179":1,"447":1},"1":{"180":1},"2":{"20":1,"22":1,"179":2,"180":1}}],["list",{"0":{"11":1,"168":1,"436":1},"1":{"12":1,"13":1},"2":{"13":1,"15":1,"16":1,"17":1,"21":1,"47":1,"51":1,"52":1,"67":1,"76":1,"77":1,"78":2,"81":1,"145":1,"168":1,"169":1,"173":5,"177":1,"184":1,"194":1,"207":1,"260":1,"289":2,"405":1,"412":1,"436":1,"475":1}}],["ll",{"2":{"0":1,"15":1,"44":1,"58":1,"59":1,"101":1,"102":2,"110":1,"112":1,"120":3,"122":3,"124":3,"128":1,"129":1,"133":1,"134":1,"146":2,"168":1,"236":1,"285":1,"303":5,"305":3,"324":1,"361":1,"495":1}}],["npx",{"2":{"190":1}}],["npm",{"2":{"16":1,"28":2,"48":1,"63":1,"84":1,"193":2,"200":1,"206":2,"212":1,"216":2,"223":2,"243":1,"267":2,"375":2}}],["n",{"2":{"44":3,"96":1,"97":1,"304":1,"409":1,"428":1,"429":2,"430":2}}],["nuget",{"2":{"106":1}}],["nullthe",{"2":{"475":1,"478":1}}],["nullreason",{"2":{"475":2,"478":1}}],["null",{"2":{"32":1,"43":1,"44":1,"185":1,"189":1,"439":1,"440":1,"476":5,"478":1}}],["numbers",{"2":{"118":2}}],["number",{"2":{"25":1,"31":1,"32":1,"38":1,"39":1,"78":1,"147":1,"151":1,"152":1,"183":4,"198":1,"211":1,"228":1,"249":1,"251":1,"275":1,"284":1,"286":1,"288":1,"300":1,"303":1,"315":1,"333":1,"352":1,"429":1,"475":2,"508":1}}],["navigating",{"2":{"115":1}}],["navigate",{"2":{"2":1,"99":1,"110":1,"160":1,"328":1,"331":1,"435":2}}],["nativereceipt",{"2":{"439":1,"476":1}}],["natively",{"2":{"357":1}}],["native",{"0":{"170":1,"171":1,"268":1,"376":1},"1":{"171":1},"2":{"52":1,"109":1,"165":2,"269":1,"270":1,"271":1,"272":1,"350":1,"355":1,"502":1,"503":1,"504":1,"505":1}}],["nametyperangedescription",{"2":{"414":1}}],["nametyperangedescriptionthresholduint161",{"2":{"413":1}}],["nametypedescriptionoptionalsessionidstringsession",{"2":{"483":1,"486":1}}],["nametypedescriptionoptionalsessionstringidentifier",{"2":{"451":1}}],["nametypedescriptionoptionalmessagestringthe",{"2":{"480":1}}],["nametypedescriptionoptionalexecutedbooleanwhether",{"2":{"475":1,"478":1}}],["nametypedescriptionoptionaladdressstringthe",{"2":{"475":1}}],["nametypedescriptionoptionalidstringunique",{"2":{"475":1}}],["nametypedescriptionoptionaltxhashstringtransaction",{"2":{"475":1}}],["nametypedescriptionoptionaltypestringtransaction",{"2":{"455":1,"456":1,"457":1,"458":1}}],["nametypedescriptionoptionalcodestringidentifies",{"2":{"473":1}}],["nametypedescriptionoptionalcodestringthe",{"2":{"452":1,"453":1,"454":1,"460":1}}],["nametypedescriptionoptionalversionstringthe",{"2":{"450":1}}],["nametypedescription",{"2":{"389":1,"393":1,"394":1,"397":1}}],["named",{"2":{"324":1}}],["namely",{"2":{"162":1}}],["names",{"2":{"125":2,"334":1}}],["name=",{"2":{"99":14}}],["name",{"0":{"470":1},"2":{"25":1,"32":3,"38":1,"39":1,"43":3,"44":3,"46":1,"52":3,"74":1,"80":2,"99":1,"106":1,"115":1,"125":1,"145":1,"197":1,"210":1,"220":1,"236":1,"244":3,"246":1,"255":1,"267":2,"302":1,"324":2,"325":2,"327":1,"329":1,"335":1,"375":2,"410":4,"439":1,"440":1,"450":1,"459":6,"468":1,"470":1,"495":1}}],["nitro",{"2":{"351":1,"354":2,"355":1,"434":1,"491":1}}],["nil",{"2":{"17":4,"39":1,"168":4,"169":3,"171":3,"173":2,"175":2,"177":2,"184":1}}],["nicaragua",{"2":{"13":1}}],["nosessionstringidentifier",{"2":{"460":1}}],["nosessionstringthe",{"2":{"452":1}}],["nov",{"2":{"459":1}}],["nova",{"2":{"361":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1}}],["noidentifierstringunique",{"2":{"454":1}}],["nomessagestringmessage",{"2":{"453":1}}],["nobody",{"2":{"116":1,"351":1,"355":1}}],["nonpayable",{"2":{"459":1}}],["nonetworkstringnetwork",{"2":{"453":1,"454":1}}],["none",{"2":{"282":1,"285":1,"515":1}}],["non",{"2":{"101":1,"107":1,"121":1,"125":1,"134":1,"140":1,"165":2,"355":1,"367":1,"406":3,"429":1}}],["nonce=",{"2":{"435":1}}],["nonceat",{"0":{"295":1},"2":{"295":2}}],["nonce",{"2":{"51":7,"251":1,"295":4,"303":1,"311":1,"433":1,"466":2}}],["nonces",{"2":{"50":1,"51":2}}],["no",{"0":{"274":1,"507":1},"2":{"20":2,"43":1,"78":1,"93":1,"98":1,"107":1,"112":1,"125":1,"139":1,"163":1,"183":1,"243":1,"285":1,"352":1,"354":3,"355":1,"398":1,"399":1,"429":1,"453":1,"454":1,"486":1}}],["nor",{"2":{"449":1}}],["north",{"2":{"13":1}}],["normally",{"2":{"190":1,"469":1}}],["normalizeasbiginteger",{"2":{"120":1,"126":1,"309":2}}],["normalize",{"2":{"118":2,"119":1,"125":2,"126":1,"311":1}}],["normal",{"2":{"2":1,"425":1}}],["nodejs",{"0":{"239":1,"498":1},"2":{"239":1,"498":1}}],["nodes",{"2":{"6":1,"20":2,"184":1,"284":1}}],["node",{"0":{"5":1,"16":1,"28":1,"48":1},"1":{"6":1},"2":{"5":1,"15":1,"16":2,"20":4,"25":1,"28":2,"33":1,"35":1,"38":1,"39":2,"47":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"283":1,"430":13}}],["nowalletstringthe",{"2":{"483":1}}],["nowalletstringaddress",{"2":{"453":1,"460":1}}],["now",{"2":{"3":1,"145":1,"161":1,"180":1,"326":1,"331":1,"335":1}}],["notifications",{"2":{"492":1}}],["notifies",{"2":{"491":1}}],["notifying",{"2":{"491":1}}],["notice",{"2":{"112":1,"168":1,"303":1,"411":1,"428":1,"450":1,"452":1,"455":1,"457":1,"460":1,"466":1}}],["notokenstringthe",{"2":{"456":1,"457":1,"458":1}}],["notostringthe",{"2":{"455":1}}],["notransactions",{"2":{"454":1}}],["notable",{"2":{"270":1,"272":1,"503":1,"505":1}}],["nothing",{"2":{"133":1,"266":1,"469":1}}],["noted",{"2":{"465":1}}],["notexpired",{"2":{"459":2}}],["notes",{"0":{"19":1}}],["note",{"0":{"488":1},"2":{"13":1,"16":1,"28":1,"43":1,"46":1,"59":1,"93":1,"95":1,"99":2,"104":1,"105":1,"106":3,"115":1,"118":1,"119":1,"123":1,"128":2,"222":1,"236":1,"244":1,"273":1,"282":1,"284":1,"285":1,"286":1,"289":1,"291":1,"293":1,"295":1,"303":1,"321":1,"361":1,"380":1,"433":1,"464":1,"465":1,"495":1,"506":1,"515":1}}],["not",{"2":{"0":1,"2":3,"5":1,"11":2,"19":1,"44":1,"46":1,"93":1,"95":1,"110":1,"118":2,"119":2,"120":1,"122":1,"124":1,"125":1,"128":1,"133":1,"139":1,"186":2,"237":1,"262":1,"280":1,"284":1,"302":1,"307":1,"309":1,"321":1,"346":1,"352":2,"355":1,"397":2,"403":1,"406":1,"431":1,"440":1,"442":1,"446":1,"450":1,"459":1,"466":2,"467":1,"496":1,"513":1}}],["neither",{"2":{"490":1,"491":1}}],["necessitate",{"2":{"486":1}}],["necessary",{"2":{"84":1,"135":1,"160":1,"184":1,"355":1}}],["never",{"2":{"417":2,"430":1,"440":1,"449":1,"469":1}}],["nesting",{"2":{"131":1,"429":1}}],["nested",{"0":{"407":1,"429":1},"2":{"131":1,"428":2,"429":3,"430":3}}],["neon",{"2":{"43":1}}],["nethereum",{"2":{"107":1,"307":1}}],["net",{"2":{"32":4,"44":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1}}],["networkid",{"0":{"294":1},"2":{"294":2}}],["networks",{"0":{"21":1},"2":{"15":2,"20":1,"21":1,"32":1,"34":1,"47":2,"50":1,"175":1,"177":1}}],["network",{"0":{"170":1,"171":1,"219":1},"1":{"171":1},"2":{"6":2,"32":4,"34":4,"50":1,"52":2,"59":1,"118":1,"125":2,"126":1,"175":2,"177":2,"184":2,"197":1,"198":2,"210":1,"211":2,"217":1,"219":1,"273":1,"296":1,"311":1,"328":1,"361":1,"367":2,"433":1,"434":1,"435":1,"436":1,"437":1,"439":2,"440":5,"451":1,"453":1,"459":1,"468":1,"476":1,"478":1,"506":1}}],["nepal",{"2":{"13":1}}],["nebraska",{"2":{"12":1}}],["nextjs",{"0":{"187":1,"189":1,"199":1,"213":1},"1":{"188":1,"189":1,"190":1},"2":{"188":3,"189":1,"190":6,"199":2,"201":2,"213":2,"214":2}}],["next",{"0":{"92":1,"188":1,"189":1,"190":1,"204":1,"379":1},"2":{"2":1,"20":1,"81":1,"94":1,"105":1,"110":1,"134":1,"188":2,"190":2,"285":1,"325":1}}],["needed",{"2":{"80":1,"101":1,"106":1,"164":1,"166":1,"267":1,"275":1,"340":1,"364":1,"422":1,"423":1,"464":1,"508":1}}],["needing",{"2":{"52":1}}],["needs",{"2":{"20":1,"116":1,"266":1,"398":1,"406":1}}],["need",{"2":{"2":1,"20":3,"23":1,"58":1,"59":1,"81":1,"102":1,"105":1,"110":1,"115":1,"120":1,"122":1,"124":1,"125":1,"128":1,"133":1,"138":1,"143":1,"144":1,"146":2,"147":1,"155":1,"156":1,"191":1,"266":1,"284":1,"302":1,"307":1,"309":1,"324":1,"351":1,"361":1,"363":1,"399":1,"401":1,"432":2,"434":1,"443":1,"450":1,"463":1}}],["newimagehash",{"2":{"398":1,"404":1}}],["newint",{"2":{"184":1}}],["newindexer",{"2":{"17":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1}}],["newestblock",{"2":{"293":2}}],["newer",{"2":{"16":1,"28":1,"105":1}}],["newrpcrelayer",{"2":{"184":1}}],["newprovider",{"2":{"184":1}}],["newwalletsingleowner",{"2":{"184":1}}],["newwalletfrommnemonic",{"2":{"184":1}}],["newbigint",{"2":{"180":1}}],["newobject",{"2":{"133":1}}],["newly",{"2":{"110":1,"115":1,"303":1}}],["newlydeployedcontractaddress",{"2":{"102":1,"306":1}}],["newtonsoft",{"2":{"106":2}}],["newmetadata",{"2":{"25":1,"29":1,"38":1,"39":2}}],["new",{"2":{"0":1,"2":1,"6":1,"12":1,"16":1,"25":1,"28":1,"38":1,"39":3,"52":1,"59":2,"85":1,"86":1,"96":1,"97":1,"99":2,"101":1,"107":1,"109":1,"115":1,"118":2,"119":2,"120":4,"121":2,"122":4,"123":4,"124":4,"125":7,"126":12,"140":1,"145":2,"165":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"190":1,"207":1,"225":1,"237":4,"243":1,"269":3,"270":2,"271":2,"272":2,"277":1,"278":2,"282":1,"283":1,"293":1,"302":1,"303":4,"305":2,"309":2,"313":2,"314":1,"327":1,"328":1,"361":2,"367":1,"389":1,"390":1,"397":1,"429":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1,"450":1,"452":1,"496":4,"502":3,"503":2,"504":2,"505":2,"510":1,"511":2,"515":1}}],["nftbalances",{"2":{"169":4}}],["nfts",{"2":{"20":1,"22":1,"121":1}}],["nft",{"0":{"9":1,"272":1,"505":1},"2":{"1":1,"3":2,"14":1,"20":2,"27":1,"31":1,"169":1,"183":1,"272":2,"331":1,"352":1,"505":2}}],["mnemonic",{"2":{"184":6}}],["myetherwallet",{"2":{"345":1}}],["mypinata",{"2":{"332":1}}],["mypage",{"2":{"85":3,"86":3}}],["myapp",{"2":{"190":1}}],["myanmar",{"2":{"13":1}}],["mytokenaddress",{"2":{"120":2,"122":2,"124":2}}],["mytoken",{"2":{"120":3,"122":3,"124":3}}],["myreactcomponent",{"2":{"87":1}}],["my",{"0":{"188":1},"2":{"80":2,"81":3,"217":1,"246":1,"267":1,"375":1}}],["mycustomlogolight",{"2":{"80":1}}],["mycustomlogodark",{"2":{"80":1}}],["mycustomconnectoroptions",{"2":{"80":1}}],["mycustomconnector",{"2":{"80":2,"81":1}}],["mycomponent",{"2":{"64":1,"88":1}}],["md",{"2":{"43":2,"44":1}}],["much",{"2":{"105":1,"427":1}}],["mutable",{"2":{"105":1}}],["mumbai",{"2":{"59":1,"335":1}}],["must",{"2":{"34":1,"76":1,"77":1,"95":1,"110":1,"112":1,"117":1,"139":2,"157":1,"158":2,"159":1,"168":1,"180":1,"188":1,"189":1,"190":1,"225":1,"353":1,"391":1,"411":1,"420":1,"439":1,"450":1,"452":1,"469":2}}],["multisignature",{"2":{"363":1}}],["multisig",{"2":{"350":1}}],["multisigs",{"2":{"350":1}}],["multi",{"2":{"20":1,"123":1,"426":1}}],["multiple",{"2":{"0":1,"5":1,"51":1,"115":1,"123":2,"126":1,"165":1,"243":1,"266":1,"269":1,"270":2,"271":2,"272":2,"347":1,"363":2,"429":1,"502":1,"503":2,"504":2,"505":2}}],["mimics",{"2":{"395":1}}],["migration",{"0":{"385":1}}],["might",{"2":{"165":1,"335":1,"433":1,"443":1,"464":1,"465":1,"466":3}}],["mitm",{"2":{"353":1}}],["mistakes",{"2":{"335":1}}],["miss",{"2":{"131":1}}],["missed",{"2":{"14":1}}],["mix",{"2":{"269":1,"502":1}}],["mixed",{"2":{"43":1}}],["millions",{"2":{"165":1}}],["middle",{"2":{"71":2}}],["minimum",{"2":{"324":1}}],["min",{"2":{"268":2,"376":2}}],["minutes",{"2":{"163":1,"445":1}}],["minor",{"2":{"107":2,"140":2}}],["mined",{"2":{"19":1,"50":1}}],["minted",{"2":{"334":2}}],["minter",{"0":{"8":1}}],["mints",{"2":{"331":1}}],["minting",{"0":{"333":1},"2":{"66":1,"335":1,"357":1}}],["mint",{"0":{"7":1},"2":{"119":1,"120":2,"121":1,"123":1,"124":2,"125":3,"309":1,"331":1,"332":1,"333":3,"335":1}}],["mind",{"2":{"2":1}}],["mail",{"2":{"410":1}}],["mainmoduleinterface",{"2":{"398":2,"404":2}}],["mainmoduleupgradable",{"2":{"395":1,"398":3,"403":1,"404":1,"405":1,"406":1,"421":1}}],["mainmoduleupgradeable",{"0":{"385":1,"395":1},"1":{"396":1,"397":1},"2":{"431":1}}],["mainmodule",{"2":{"386":1,"391":2,"395":1,"398":3,"419":1,"420":2,"421":1,"431":4}}],["maintaining",{"2":{"243":1,"275":1,"508":1}}],["main",{"2":{"78":3,"99":3,"165":1,"308":1,"435":3}}],["mainnet",{"2":{"15":2,"16":1,"25":1,"38":1,"39":1,"43":1,"47":2,"52":1,"85":2,"86":2,"184":1,"198":1,"211":1,"237":1,"244":1,"496":1}}],["marked",{"2":{"403":1}}],["marketplaces",{"0":{"162":1},"1":{"163":1,"164":1},"2":{"45":1}}],["marketplace",{"0":{"23":1,"151":1},"2":{"23":5,"66":1,"151":2,"162":3,"163":10,"164":4,"182":4,"183":1,"337":1,"338":1,"339":2,"340":3,"357":1}}],["market",{"2":{"11":1,"339":1}}],["march",{"2":{"383":1}}],["maxcost",{"2":{"459":1}}],["max",{"2":{"298":1}}],["matches",{"2":{"354":1,"452":1}}],["match",{"2":{"269":1,"502":1}}],["material",{"2":{"126":1,"354":1}}],["matic",{"0":{"170":1,"171":1},"1":{"171":1},"2":{"52":3,"118":3,"171":2,"244":1}}],["magicvalue",{"2":{"411":1}}],["magic",{"2":{"126":1,"411":3}}],["major",{"2":{"107":2,"140":2}}],["made",{"2":{"102":1,"105":1,"107":1,"133":3,"140":1,"148":1,"307":1,"355":1}}],["macbook",{"2":{"433":1,"435":1,"436":2,"437":1}}],["machine",{"2":{"104":1,"346":1}}],["mac",{"2":{"97":3,"108":1,"133":2,"141":1,"145":1}}],["macos",{"0":{"97":1},"2":{"104":1,"108":1,"142":1,"145":1,"463":1}}],["macao",{"2":{"13":1}}],["mapped",{"2":{"304":1}}],["mappings",{"0":{"304":1}}],["map",{"2":{"45":2}}],["master",{"2":{"43":2,"44":1,"52":1,"190":1}}],["making",{"2":{"20":1,"112":1,"126":1,"133":1,"307":1,"367":1}}],["makes",{"2":{"20":2,"165":1,"351":1,"449":1,"459":1}}],["make",{"2":{"15":1,"16":1,"17":1,"20":1,"22":1,"33":1,"47":1,"80":1,"93":1,"99":1,"106":1,"114":1,"117":1,"119":1,"128":3,"130":3,"131":1,"135":1,"145":1,"155":1,"156":1,"160":2,"175":1,"177":1,"266":1,"284":1,"302":1,"335":1,"463":1,"465":1,"466":1}}],["malicious",{"2":{"363":1,"366":1,"367":1}}],["mali",{"2":{"13":1}}],["may",{"2":{"11":1,"15":1,"20":1,"50":1,"105":1,"115":2,"125":1,"175":1,"177":1,"188":1,"190":1,"191":2,"223":1,"244":1,"267":1,"307":1,"309":2,"314":1,"319":1,"320":1,"342":1,"354":1,"375":1,"382":1,"388":1,"397":1,"414":1,"426":1,"447":1,"460":1,"486":1}}],["manipulate",{"2":{"450":1}}],["manifest",{"2":{"99":5}}],["manual",{"0":{"106":1},"2":{"99":1}}],["manually",{"0":{"7":1},"2":{"110":1,"445":1,"450":1}}],["mana",{"2":{"44":1}}],["managing",{"0":{"3":1}}],["management",{"0":{"363":1,"432":1},"1":{"364":1,"365":1,"366":1,"367":1,"433":1,"434":1,"435":1,"436":1,"437":1},"2":{"351":1,"354":1,"355":1,"432":1}}],["manages",{"2":{"133":1}}],["manager",{"0":{"104":1,"115":1},"1":{"105":1},"2":{"104":4,"105":1,"106":5,"115":1}}],["managed",{"2":{"1":1,"3":1,"14":1,"448":1}}],["manage",{"0":{"322":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1},"2":{"1":1,"50":1,"91":1,"129":1,"203":1,"323":1,"378":1}}],["many",{"2":{"13":1,"45":1,"119":1,"191":1,"236":1,"242":1,"422":1,"495":1,"501":1}}],["mandated",{"2":{"11":1}}],["move",{"0":{"330":1},"2":{"285":1}}],["moonpay",{"2":{"244":2,"260":1,"341":1,"362":1}}],["mounted",{"2":{"189":2}}],["mouth",{"2":{"43":1}}],["moments",{"2":{"145":1}}],["moment",{"2":{"140":1}}],["mobile",{"0":{"136":1,"370":1},"2":{"128":2,"191":1,"243":2,"244":1,"370":2}}],["mocks",{"2":{"112":1}}],["most",{"2":{"20":1,"33":1,"106":1,"118":2,"168":1,"244":1,"284":1,"288":1,"315":1,"343":1}}],["monitoring",{"0":{"491":1},"2":{"491":2}}],["monitors",{"2":{"20":1}}],["mono",{"2":{"108":2}}],["monobehaviour",{"2":{"93":1,"115":1}}],["money",{"2":{"5":1,"11":1}}],["more",{"0":{"116":1},"2":{"13":1,"32":2,"43":1,"46":1,"57":1,"80":1,"91":1,"93":1,"99":2,"104":1,"106":1,"116":1,"118":1,"156":1,"164":1,"168":1,"183":2,"190":1,"197":1,"199":1,"203":1,"210":1,"213":1,"236":1,"244":1,"266":1,"339":1,"341":1,"347":1,"354":1,"362":1,"363":2,"378":1,"469":1,"495":1}}],["morocco",{"2":{"13":1}}],["moldova",{"2":{"13":1}}],["modifier",{"2":{"389":1,"397":1}}],["modified",{"2":{"158":1}}],["modification",{"2":{"273":1,"506":1}}],["modifications",{"2":{"159":1,"160":1}}],["modify",{"2":{"40":1,"106":1,"309":1,"331":1,"332":1}}],["moduleauth",{"2":{"391":1}}],["modules",{"0":{"386":1},"1":{"387":1,"388":1,"389":1,"390":1,"391":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":1,"398":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1},"2":{"386":3,"387":1,"391":1,"399":1}}],["module",{"2":{"63":1,"216":1,"351":1,"354":1,"386":1,"387":1,"391":2,"395":1,"399":1}}],["modular",{"2":{"20":2,"84":1,"267":1}}],["modern",{"2":{"243":1,"369":1}}],["moderately",{"2":{"363":1}}],["moderate",{"2":{"4":1}}],["modes",{"2":{"128":1}}],["mode",{"2":{"93":1,"106":1,"115":1,"128":2}}],["model",{"0":{"353":1},"2":{"50":1,"353":1}}],["modals",{"2":{"71":1,"165":1,"355":1}}],["modal",{"0":{"64":1,"65":1,"72":1,"87":1,"88":1},"1":{"66":1,"67":1,"73":1,"74":1,"75":1,"76":1,"77":1},"2":{"2":1,"62":1,"64":1,"65":1,"70":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"83":1,"87":2}}],["merkle",{"2":{"426":1,"430":1}}],["merges",{"2":{"165":1}}],["mechanism",{"2":{"423":1,"489":2}}],["measures",{"2":{"243":1}}],["measure",{"2":{"157":1}}],["meaning",{"2":{"422":1}}],["meant",{"2":{"115":1,"352":1}}],["means",{"2":{"19":1,"20":2,"243":1,"352":1,"353":1,"354":2,"364":1,"370":1,"389":1,"397":1,"398":1,"432":1,"461":1}}],["memory",{"2":{"131":1}}],["members",{"2":{"0":1}}],["messagenosignaturestringthe",{"2":{"480":1}}],["messages",{"0":{"111":1},"2":{"237":1,"274":1,"275":1,"408":1,"409":1,"496":1,"507":1,"508":1}}],["message",{"0":{"234":1,"279":1,"281":1,"453":1,"480":1,"493":1,"512":1,"514":1},"1":{"235":1,"236":1,"237":1,"481":1,"482":1,"494":1,"495":1,"496":1},"2":{"105":1,"111":2,"236":4,"275":1,"279":1,"281":3,"282":1,"321":4,"392":1,"409":5,"410":1,"440":2,"446":1,"451":1,"453":1,"468":2,"478":3,"480":1,"481":1,"482":1,"488":1,"495":4,"508":1,"512":1,"514":3,"515":1}}],["menu",{"2":{"96":1,"97":1,"266":1}}],["mentioned",{"2":{"34":1}}],["me",{"2":{"44":1,"194":1}}],["metric",{"2":{"149":3}}],["metrics",{"2":{"147":1,"148":1,"149":1}}],["metatxnreceiptlog",{"2":{"475":1}}],["metatxnreceipt",{"2":{"475":1}}],["metatxnid",{"2":{"186":2}}],["metatxhash",{"2":{"439":1,"476":1}}],["metatxid",{"2":{"185":2}}],["metatransactionids",{"2":{"173":1}}],["metamask",{"2":{"77":1,"80":1,"81":1,"91":1,"165":1,"191":1,"192":1,"203":1,"205":1,"215":1,"243":2,"264":1,"345":1,"378":1}}],["meta",{"2":{"50":3,"99":2,"173":1,"186":1,"242":1,"267":1,"347":1,"352":1,"375":1,"475":4,"501":1}}],["metal",{"2":{"44":1}}],["metadataclient",{"2":{"25":2,"38":2,"39":4}}],["metadatawhen",{"2":{"24":1,"37":1}}],["metadataoptions",{"2":{"17":3,"19":3,"168":1,"169":1,"173":1,"177":1}}],["metadatafield",{"2":{"3":1}}],["metadata",{"0":{"1":1,"3":1,"19":1,"24":1,"25":1,"26":1,"27":1,"31":1,"36":1,"37":1,"38":1,"39":1,"41":1,"42":1,"168":1,"169":1,"322":1,"324":1,"326":1,"332":1,"335":1},"1":{"2":1,"3":1,"4":1,"25":1,"26":1,"28":1,"29":1,"30":1,"32":1,"33":1,"34":1,"35":1,"36":1,"38":1,"39":1,"40":2,"41":1,"42":1,"43":2,"44":2,"45":2,"46":2,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1},"2":{"1":5,"2":1,"3":18,"4":1,"19":3,"20":4,"22":1,"24":4,"25":8,"26":1,"27":5,"28":5,"29":2,"30":1,"31":9,"32":10,"33":1,"34":8,"35":4,"36":7,"37":6,"38":10,"39":21,"40":6,"41":3,"43":6,"44":4,"45":2,"46":1,"168":2,"169":2,"173":2,"177":3,"323":1,"324":1,"325":1,"326":1,"331":1,"332":1,"335":4}}],["methods",{"0":{"36":1,"131":1,"284":1,"315":1},"1":{"285":1,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":1},"2":{"19":1,"36":1,"46":1,"93":1,"120":1,"122":1,"124":1,"165":1,"284":2,"307":1,"310":2,"315":1,"331":1,"399":1,"401":1,"438":1}}],["method",{"2":{"3":1,"25":1,"38":1,"39":2,"43":2,"44":2,"93":1,"102":1,"111":1,"112":1,"117":1,"119":1,"120":1,"122":1,"124":1,"125":4,"168":2,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"188":1,"189":1,"190":1,"237":1,"244":1,"302":1,"303":2,"305":1,"321":1,"389":2,"397":2,"398":1,"404":1,"405":2,"406":1,"411":1,"441":1,"442":1,"444":1,"445":4,"490":2,"492":1,"496":1}}],["occurs",{"2":{"483":1}}],["occure",{"2":{"151":1}}],["otp",{"2":{"352":1,"434":4}}],["othermethods",{"2":{"459":1}}],["otherwise",{"2":{"285":1,"409":1,"410":1,"411":1,"445":2}}],["otherconnectors",{"2":{"207":1}}],["otherrainbowkitwallets",{"2":{"194":1}}],["others",{"2":{"82":1,"128":1}}],["other",{"0":{"242":1,"501":1},"2":{"11":1,"20":2,"50":1,"80":1,"81":1,"84":1,"93":1,"96":1,"97":1,"130":1,"165":2,"191":1,"194":1,"196":1,"207":1,"209":1,"225":1,"226":1,"237":1,"242":1,"263":1,"333":1,"352":2,"355":1,"386":1,"389":1,"397":1,"429":1,"460":1,"490":2,"492":1,"496":1,"501":1}}],["omit",{"2":{"321":1}}],["omitted",{"2":{"19":2,"248":1}}],["os",{"2":{"266":2}}],["old",{"2":{"471":1}}],["older",{"0":{"200":1,"212":1},"2":{"199":1,"200":1,"201":1,"212":1,"213":1,"214":2}}],["oldsilver",{"2":{"32":1}}],["ok",{"2":{"180":4}}],["okay",{"2":{"43":1}}],["oauth",{"2":{"153":1,"155":1,"352":1,"435":4}}],["oidc",{"2":{"93":1,"95":1}}],["observe",{"2":{"490":1}}],["obvious",{"2":{"125":1}}],["objectdark",{"2":{"70":1}}],["objects",{"2":{"45":1,"123":1,"449":1,"454":1,"458":1}}],["object",{"2":{"44":2,"45":1,"64":1,"65":1,"70":2,"72":1,"102":1,"104":2,"106":1,"111":1,"115":3,"117":1,"120":1,"122":1,"124":1,"125":1,"135":1,"168":1,"169":1,"173":2,"175":1,"177":1,"180":1,"236":2,"245":1,"283":1,"302":2,"303":3,"321":1,"439":2,"440":1,"459":1,"468":1,"495":2}}],["obtained",{"2":{"434":1,"435":1}}],["obtain",{"2":{"2":1,"93":1,"102":1,"111":1,"117":1,"434":2,"435":2}}],["obtaining",{"0":{"2":1},"2":{"1":1}}],["ogimage",{"2":{"32":1}}],["outlines",{"2":{"489":1}}],["output",{"2":{"464":1,"465":2}}],["outputs",{"2":{"459":2}}],["outside",{"2":{"120":1,"122":1,"124":1,"157":1,"244":1}}],["out",{"0":{"464":1},"2":{"23":1,"54":1,"66":1,"91":1,"92":1,"101":1,"102":1,"105":2,"111":1,"115":1,"116":1,"117":1,"164":1,"166":1,"191":1,"203":1,"204":1,"237":1,"244":1,"337":1,"339":1,"356":1,"357":3,"360":1,"373":1,"378":1,"379":1,"409":1,"410":1,"465":1,"496":1}}],["ours",{"2":{"128":1}}],["our",{"2":{"1":1,"2":2,"3":1,"5":1,"6":1,"13":1,"14":1,"19":1,"20":1,"23":2,"25":1,"32":1,"38":1,"39":2,"46":1,"54":2,"55":1,"61":1,"90":1,"91":1,"92":1,"93":2,"95":1,"105":3,"106":1,"107":1,"108":1,"109":1,"115":2,"116":1,"119":2,"120":1,"121":2,"122":1,"123":2,"124":1,"126":1,"147":1,"148":1,"161":1,"162":2,"163":4,"164":2,"165":1,"166":2,"168":1,"179":1,"190":1,"191":3,"202":1,"203":1,"204":1,"241":1,"283":1,"284":1,"302":1,"303":2,"305":2,"307":1,"309":1,"337":1,"338":1,"340":2,"355":1,"357":1,"373":1,"377":1,"378":1,"379":1,"500":1}}],["opcode",{"2":{"420":1}}],["operated",{"2":{"351":1,"354":1}}],["operate",{"2":{"350":1}}],["operates",{"2":{"165":1,"354":1}}],["operation",{"2":{"388":1,"400":1,"403":1,"425":1,"433":1,"449":1}}],["operations",{"2":{"198":1,"211":1,"354":1}}],["operational",{"2":{"59":1,"361":1}}],["opensession",{"2":{"452":2}}],["opensea",{"2":{"19":1,"26":2,"43":3,"46":1}}],["openning",{"2":{"450":1,"452":1}}],["openwithoptions",{"2":{"244":2}}],["openwalletintent",{"2":{"244":1}}],["openwallet",{"2":{"244":3}}],["opened",{"0":{"483":1},"1":{"484":1,"485":1},"2":{"112":1,"433":1,"434":1,"452":1,"485":1}}],["openidauthentication",{"2":{"108":1}}],["opening",{"0":{"64":1},"2":{"105":1,"126":1,"248":1}}],["open",{"0":{"452":1},"2":{"61":1,"64":1,"88":2,"93":2,"96":1,"97":1,"104":1,"112":1,"145":2,"183":1,"191":1,"241":1,"244":2,"253":1,"261":1,"327":1,"354":1,"434":2,"435":1,"464":1,"483":1,"500":1}}],["optimal",{"2":{"50":1}}],["optionally",{"2":{"118":1,"120":1,"122":1,"124":1,"173":5,"244":1,"268":1,"376":1,"466":1}}],["optional",{"0":{"197":1,"198":1,"210":1,"211":1,"219":1,"220":1,"229":1},"2":{"86":1,"119":1,"133":1,"168":5,"169":4,"173":4,"177":4,"180":1,"251":1,"321":1,"450":1,"452":1}}],["option",{"2":{"19":1,"31":1,"149":1,"184":3,"186":4,"190":1,"243":2,"245":1,"258":1,"263":1,"266":1,"309":1}}],["options",{"0":{"68":1,"69":1,"163":1,"184":1,"210":1,"211":1,"227":1,"245":1},"1":{"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"228":1,"229":1,"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1},"2":{"6":1,"19":1,"68":2,"76":2,"77":2,"80":2,"92":1,"162":1,"163":1,"165":2,"168":1,"169":1,"173":1,"177":1,"184":6,"186":1,"197":2,"204":1,"207":1,"210":1,"225":2,"244":2,"259":1,"341":2,"362":2,"363":1,"379":1,"461":1}}],["opportunities",{"2":{"13":1}}],["owner",{"2":{"355":1,"491":1}}],["owned",{"0":{"343":1},"1":{"344":1,"345":1},"2":{"78":1,"168":1,"342":1,"343":1,"366":1}}],["owns",{"2":{"354":1}}],["ownable",{"0":{"310":1},"2":{"310":4}}],["own",{"2":{"5":1,"11":1,"32":1,"80":1,"91":1,"107":1,"112":1,"114":1,"116":1,"135":1,"146":1,"153":1,"163":1,"203":1,"283":1,"307":1,"309":1,"335":1,"338":1,"340":1,"357":3,"360":1,"363":1,"378":1,"429":2}}],["override",{"2":{"70":1,"388":1,"392":1,"396":1,"411":1}}],["overwritten",{"2":{"70":1,"106":1}}],["overview",{"0":{"62":1,"149":1,"162":1,"165":1,"349":1},"1":{"150":1,"151":1,"152":1,"163":1,"164":1,"166":1,"350":1,"351":1,"352":1,"353":1,"354":1},"2":{"14":1,"149":1}}],["over",{"2":{"5":1,"131":1,"146":1,"325":1,"334":1,"366":1,"367":1,"490":3,"492":1}}],["org",{"2":{"451":1}}],["organized",{"2":{"450":1}}],["organizations",{"2":{"20":1}}],["orchestration",{"2":{"163":1}}],["original",{"2":{"475":1}}],["originaddress",{"2":{"32":1}}],["origin",{"0":{"248":1},"2":{"248":1}}],["origins",{"0":{"157":1},"2":{"155":1,"157":2}}],["or",{"0":{"18":1,"25":1,"30":1,"38":1,"264":1},"2":{"3":4,"6":1,"15":2,"16":3,"19":1,"20":3,"22":1,"23":1,"24":1,"25":4,"28":2,"31":1,"32":2,"33":1,"34":1,"35":1,"36":4,"37":2,"38":4,"39":7,"40":1,"43":1,"45":2,"47":1,"48":2,"50":3,"52":1,"63":2,"66":1,"70":1,"80":1,"81":1,"84":2,"92":1,"93":1,"95":1,"99":2,"101":1,"102":3,"104":3,"106":1,"108":1,"111":1,"116":1,"117":1,"118":2,"125":3,"126":1,"128":2,"130":1,"133":1,"135":1,"139":1,"141":1,"147":1,"163":2,"165":2,"168":1,"169":1,"171":1,"173":1,"175":1,"177":2,"179":1,"180":1,"181":1,"182":1,"183":1,"191":3,"193":1,"199":3,"200":1,"204":1,"206":1,"212":1,"213":1,"216":1,"237":2,"239":1,"242":2,"243":1,"244":1,"256":1,"263":1,"267":2,"269":1,"274":1,"275":1,"280":1,"282":1,"286":1,"289":1,"291":1,"293":1,"295":1,"302":1,"303":2,"304":1,"305":1,"309":1,"311":1,"319":2,"320":2,"333":1,"340":1,"342":1,"351":1,"352":1,"353":2,"355":1,"363":1,"364":3,"367":3,"369":1,"370":1,"375":2,"379":1,"387":1,"391":1,"406":1,"414":1,"424":2,"426":1,"427":1,"429":2,"438":1,"439":1,"440":1,"443":1,"446":2,"448":2,"452":1,"459":1,"460":1,"463":1,"464":1,"472":1,"488":1,"496":2,"498":1,"501":2,"502":1,"507":1,"508":1,"513":1,"515":1}}],["ordered",{"2":{"469":1}}],["orderid",{"2":{"183":1,"459":1}}],["ordering",{"2":{"51":1,"423":1}}],["orderbook",{"2":{"183":1}}],["orderbookorder",{"2":{"183":1}}],["orderbookcontractaddress",{"2":{"182":2,"183":2,"339":1}}],["orderstatus",{"2":{"183":2}}],["orders",{"2":{"181":1,"183":3,"339":1}}],["ordersummaryitems",{"0":{"67":1},"2":{"65":1,"67":2}}],["order",{"0":{"67":1},"2":{"0":1,"1":1,"2":1,"3":1,"11":1,"20":1,"67":1,"76":1,"77":1,"95":1,"105":1,"125":1,"129":1,"143":1,"146":1,"168":1,"183":8,"301":1,"303":1,"311":1,"350":1,"420":1,"425":1,"433":1,"449":1}}],["onvalidationrequired",{"0":{"446":1},"2":{"446":2,"447":2,"448":3}}],["onmeta",{"2":{"341":1,"362":1}}],["onboard",{"0":{"215":1},"1":{"216":1,"217":1,"218":1,"219":1,"220":1,"221":1},"2":{"191":1,"215":3,"216":2,"217":3,"221":1,"243":1}}],["onboarding",{"2":{"90":1,"91":1,"110":1,"138":1,"153":1,"156":1,"202":1,"203":1,"243":1,"356":1,"377":1,"378":1}}],["onfailuretest",{"2":{"131":1}}],["onresponse",{"2":{"131":1}}],["onramp",{"0":{"10":1}}],["onsessionstatechanged",{"2":{"435":2}}],["onsendtransactionfailedhandler",{"2":{"117":2}}],["onsendtransactionfailed",{"2":{"102":1,"117":2}}],["onsendtransactioncompletehandler",{"2":{"117":2}}],["onsendtransactioncomplete",{"2":{"102":1,"117":2}}],["onsuccess=",{"2":{"435":1}}],["onsuccess",{"2":{"128":1}}],["onsignmessagecompletehandler",{"2":{"111":2}}],["onsignmessagecomplete",{"2":{"111":2}}],["ondeploycontractfailedhandler",{"2":{"102":2}}],["ondeploycontractfailed",{"2":{"102":2}}],["ondeploycontractcompletehandler",{"2":{"102":2}}],["ondeploycontractcomplete",{"2":{"102":2}}],["onwaaswalletcreatedhander",{"2":{"102":1,"111":1,"117":1}}],["onwaaswalletcreatedhandler",{"2":{"101":3}}],["onwaaswalletcreated",{"2":{"101":2}}],["onclick=",{"2":{"64":1,"87":1,"88":1}}],["onclick",{"2":{"64":2,"87":2,"88":2,"244":1}}],["onchainreader",{"2":{"237":1,"496":1}}],["onchain",{"2":{"40":1}}],["once",{"2":{"2":1,"58":1,"87":1,"94":1,"95":1,"101":1,"128":1,"130":1,"145":1,"146":2,"156":1,"158":2,"159":1,"186":1,"189":1,"244":1,"266":1,"314":1,"319":1,"320":1,"330":1,"356":1,"360":1,"364":1,"404":1,"434":1,"445":1,"490":1,"492":1}}],["onlyself",{"2":{"388":1,"389":1,"396":1,"397":1}}],["only",{"0":{"190":1},"2":{"11":1,"52":1,"58":1,"78":1,"84":1,"101":1,"106":2,"108":2,"126":1,"133":1,"140":1,"168":1,"169":1,"173":1,"177":1,"184":1,"188":1,"189":1,"257":1,"263":1,"267":1,"270":1,"272":1,"273":2,"282":1,"302":1,"309":1,"319":1,"320":1,"341":1,"352":3,"354":3,"355":1,"357":1,"362":1,"363":2,"367":1,"375":1,"387":1,"389":1,"391":1,"397":1,"424":1,"429":1,"436":1,"440":1,"452":1,"457":1,"463":1,"465":1,"490":1,"503":1,"505":1,"506":2,"515":1}}],["on",{"0":{"8":1,"9":1,"10":1,"19":1,"135":1,"136":1,"171":4,"325":1,"328":1,"341":1,"362":1,"384":1},"2":{"2":2,"11":1,"14":1,"15":2,"19":2,"20":3,"25":1,"31":1,"32":2,"37":1,"43":3,"44":2,"46":1,"47":1,"50":1,"52":1,"57":1,"71":1,"80":2,"81":1,"90":1,"93":1,"94":2,"95":1,"104":5,"105":2,"106":1,"108":1,"110":1,"112":1,"114":1,"115":1,"118":1,"119":1,"125":5,"129":4,"131":1,"133":2,"139":1,"140":1,"145":7,"149":1,"155":1,"156":1,"161":1,"163":2,"165":2,"168":2,"169":2,"171":2,"173":2,"175":4,"177":3,"180":1,"183":1,"186":1,"188":4,"189":2,"190":1,"191":1,"199":3,"200":1,"202":1,"212":1,"213":3,"237":4,"239":1,"242":1,"243":5,"244":3,"246":1,"263":1,"264":1,"267":2,"270":1,"271":1,"272":1,"275":1,"280":1,"282":1,"285":3,"307":2,"309":1,"310":1,"324":1,"326":1,"327":2,"328":2,"329":1,"330":1,"331":2,"332":1,"339":1,"341":5,"343":1,"351":1,"353":1,"354":2,"355":1,"357":1,"362":5,"363":2,"369":1,"370":2,"375":2,"377":1,"386":1,"390":1,"391":1,"399":1,"401":1,"403":1,"411":1,"417":1,"429":1,"440":2,"441":1,"452":2,"453":2,"454":2,"459":2,"461":2,"463":1,"467":1,"469":1,"470":1,"490":2,"491":3,"492":1,"496":4,"498":1,"501":1,"503":1,"504":1,"505":1,"508":1,"513":1,"515":1}}],["one",{"0":{"442":1},"2":{"0":1,"3":1,"19":1,"20":2,"32":1,"34":1,"99":1,"102":1,"118":1,"126":1,"128":1,"131":1,"145":1,"149":1,"168":1,"180":1,"189":1,"190":1,"191":1,"255":1,"266":1,"270":1,"271":1,"272":1,"319":1,"320":1,"331":1,"350":1,"363":1,"364":1,"387":1,"392":1,"405":1,"434":1,"442":1,"443":1,"490":2,"492":1,"503":1,"504":1,"505":1}}],["official",{"2":{"76":1,"77":1,"79":1,"80":1,"189":1,"467":1}}],["off",{"2":{"44":1,"340":1}}],["offered",{"2":{"109":1}}],["offer",{"2":{"33":1,"156":1,"163":1,"165":1,"183":1,"191":1,"243":1,"351":1}}],["offers",{"2":{"1":1,"15":1,"23":1,"27":1,"31":1,"35":1,"47":1,"50":1,"165":1,"355":1}}],["often",{"2":{"41":1,"123":1}}],["of",{"0":{"11":1,"25":1,"51":1,"168":1,"169":1,"189":1,"200":1,"212":1,"269":1,"416":1,"474":1,"502":1},"1":{"12":1,"13":1,"475":1,"476":1,"477":1,"478":1,"479":1,"480":1,"481":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"488":1},"2":{"0":3,"3":3,"5":1,"11":1,"13":2,"15":3,"16":2,"17":2,"18":1,"19":3,"20":6,"21":1,"22":2,"25":3,"30":1,"31":2,"32":4,"34":3,"35":2,"36":6,"38":3,"39":2,"43":4,"44":1,"45":3,"46":1,"47":3,"50":7,"51":3,"52":1,"54":1,"59":1,"60":2,"61":2,"67":1,"71":1,"73":1,"74":1,"76":1,"77":1,"78":1,"80":2,"81":2,"82":1,"90":2,"91":2,"102":1,"105":4,"106":1,"109":3,"110":1,"112":2,"113":1,"115":1,"116":1,"117":2,"118":4,"120":3,"121":1,"122":3,"123":1,"124":3,"125":4,"126":4,"128":1,"129":3,"130":2,"131":4,"133":4,"135":1,"146":1,"147":1,"149":1,"150":1,"151":1,"152":1,"156":1,"157":2,"162":2,"163":1,"164":2,"165":2,"168":4,"169":5,"171":1,"173":7,"175":5,"177":5,"180":3,"181":1,"183":12,"184":2,"185":1,"188":1,"189":3,"190":5,"191":3,"194":1,"197":2,"199":1,"200":3,"202":2,"203":2,"206":2,"207":1,"210":1,"212":3,"213":1,"214":3,"220":1,"221":2,"222":1,"229":1,"236":1,"240":2,"241":2,"243":7,"244":1,"246":1,"248":1,"255":2,"256":1,"260":1,"261":1,"264":1,"266":1,"267":2,"270":1,"271":1,"272":1,"275":1,"283":1,"284":3,"285":2,"292":1,"300":1,"302":1,"303":2,"305":1,"308":1,"309":5,"312":2,"314":1,"315":2,"319":2,"320":2,"321":1,"325":1,"327":2,"328":1,"331":3,"333":1,"340":1,"343":2,"346":2,"350":4,"352":4,"353":3,"354":4,"355":4,"356":1,"357":1,"361":1,"363":3,"364":2,"365":1,"366":1,"367":2,"375":1,"377":2,"378":2,"380":1,"386":3,"388":3,"389":2,"390":1,"391":5,"392":1,"393":1,"395":1,"397":5,"398":2,"402":1,"403":3,"405":1,"406":1,"408":1,"409":1,"410":1,"412":1,"413":2,"414":3,"415":1,"416":4,"417":2,"418":1,"419":2,"420":2,"422":4,"424":2,"426":1,"428":2,"429":4,"430":1,"431":8,"432":1,"433":1,"436":1,"437":1,"439":2,"443":1,"444":1,"449":3,"450":5,"451":2,"452":1,"453":2,"454":3,"456":1,"458":3,"459":1,"460":2,"461":3,"463":1,"464":1,"465":3,"466":2,"467":1,"469":3,"470":1,"471":1,"473":2,"475":19,"478":3,"490":3,"492":1,"495":1,"499":2,"500":2,"503":1,"504":1,"505":1,"508":1}}],["ignored",{"2":{"244":1,"257":1,"258":1,"259":1,"416":1}}],["i32",{"2":{"183":2}}],["iwallet",{"2":{"112":1,"312":2,"313":2,"314":2,"315":1}}],["iindexer",{"2":{"109":2}}],["icon",{"2":{"104":1,"106":1,"145":1}}],["icons",{"2":{"32":1,"52":1}}],["ipfs",{"2":{"43":2,"323":1,"324":1,"325":3,"332":1}}],["ios",{"0":{"96":1,"144":1},"2":{"96":2,"104":1,"108":1,"141":1,"142":1,"144":1,"145":1,"357":1}}],["io",{"2":{"26":1,"43":1,"237":1,"268":1,"376":1,"496":1}}],["id1",{"2":{"459":1}}],["identity",{"2":{"236":1,"237":1,"352":1,"353":1,"442":1,"443":1,"495":1,"496":1}}],["identifier",{"2":{"156":1,"325":1,"440":1,"452":1,"454":1,"459":1,"475":1,"476":1,"478":1}}],["ideas",{"2":{"116":2}}],["ideally",{"2":{"158":1}}],["ideal",{"2":{"106":1}}],["idea",{"2":{"50":1}}],["idtokenstringoauth2",{"2":{"452":1}}],["idtokenin",{"2":{"133":1,"135":1}}],["idtoken",{"2":{"93":1,"94":1,"95":1,"101":1,"433":2,"434":6,"435":2,"436":1,"437":1,"439":1,"440":1,"452":2}}],["idstringthe",{"2":{"458":1}}],["idsyou",{"2":{"168":1}}],["ids",{"0":{"169":1},"2":{"32":2,"38":1,"39":1,"123":1,"173":1,"179":1,"180":1,"182":1,"183":1}}],["id",{"2":{"25":1,"32":3,"34":1,"38":1,"39":3,"40":1,"43":1,"44":2,"46":1,"76":1,"77":1,"80":2,"81":1,"85":2,"86":2,"133":1,"135":2,"143":6,"155":3,"156":1,"183":1,"184":1,"185":1,"186":1,"197":1,"210":1,"228":1,"269":1,"270":2,"290":1,"294":1,"321":3,"324":1,"331":1,"332":2,"333":1,"335":1,"352":1,"435":1,"436":2,"437":2,"439":1,"452":1,"457":1,"458":3,"459":3,"476":2,"483":1,"486":1,"502":1,"503":2}}],["iraq",{"2":{"13":1}}],["iran",{"2":{"13":1}}],["iethclient",{"2":{"283":2,"284":1}}],["ierc20",{"2":{"186":1}}],["ie",{"0":{"170":1},"1":{"171":1},"2":{"3":1,"25":1,"38":1,"39":1,"50":1,"252":1}}],["i",{"0":{"189":1,"190":1},"2":{"3":1,"44":2,"99":1,"157":1}}],["immediately",{"2":{"186":1}}],["imperative",{"2":{"403":1}}],["improved",{"2":{"363":1}}],["improperly",{"2":{"307":1}}],["implicit",{"2":{"95":1}}],["implementing",{"2":{"310":1}}],["implements",{"2":{"146":1}}],["implemented",{"2":{"120":1,"122":1,"124":1,"133":1,"139":1,"284":1,"342":1,"346":1,"391":1,"431":1}}],["implementationaddressaddress",{"2":{"389":1}}],["implementations",{"2":{"312":1}}],["implementation",{"0":{"387":1,"390":1},"1":{"388":1,"389":1,"390":1},"2":{"15":1,"35":1,"47":1,"109":1,"135":2,"139":1,"356":1,"357":1,"386":1,"388":4,"389":1,"390":4,"398":1,"431":3,"491":1}}],["implement",{"2":{"15":1,"35":1,"47":1,"93":1,"344":1,"346":2,"391":1,"432":1}}],["imported",{"2":{"110":2,"115":1,"190":1,"194":1,"207":1}}],["importing",{"2":{"105":1}}],["important",{"0":{"308":1},"2":{"93":1,"110":1,"113":1,"304":1,"315":1,"450":1}}],["importantly",{"2":{"2":1}}],["import",{"2":{"6":2,"16":1,"17":1,"25":2,"28":1,"29":1,"38":2,"39":4,"49":1,"59":1,"63":1,"64":1,"81":1,"85":6,"86":8,"87":2,"88":1,"104":4,"105":2,"106":3,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":1,"184":2,"189":2,"190":2,"194":2,"207":1,"217":1,"225":1,"226":2,"236":1,"237":5,"244":2,"277":2,"361":1,"390":1,"409":1,"410":2,"433":1,"434":1,"435":8,"436":1,"437":1,"439":1,"440":1,"477":1,"479":1,"482":1,"485":1,"487":1,"488":1,"495":1,"496":5,"510":2}}],["imagehashbytes32hash",{"2":{"393":1,"397":1}}],["imagehash",{"0":{"417":1,"430":1},"1":{"418":1,"420":1},"2":{"392":3,"394":1,"396":2,"397":3,"403":3,"406":4,"417":2,"418":1,"419":1,"420":1,"429":1,"430":3,"431":4}}],["images",{"0":{"324":1},"2":{"32":1,"324":1,"325":1,"334":1}}],["image",{"0":{"418":1},"2":{"3":7,"32":1,"43":1,"44":1,"244":2,"256":3,"324":1,"325":1}}],["iterate",{"2":{"409":2,"410":2,"411":1}}],["items",{"2":{"169":1,"323":1}}],["item",{"0":{"322":1},"1":{"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1},"2":{"145":2,"168":1,"324":1,"329":1}}],["itself",{"2":{"270":1,"272":1,"354":1,"367":1,"389":1,"390":1,"397":1,"401":2,"434":1,"503":1,"505":1}}],["its",{"2":{"81":1,"123":1,"190":1,"236":1,"244":1,"354":1,"429":2,"450":1,"495":1}}],["it",{"0":{"6":1,"113":1,"148":1},"2":{"2":3,"14":1,"19":2,"20":10,"31":1,"32":1,"43":2,"44":1,"52":1,"59":1,"61":1,"81":1,"93":3,"99":3,"101":1,"105":3,"106":3,"110":1,"112":1,"114":2,"115":2,"119":1,"125":5,"126":1,"128":2,"131":1,"133":1,"134":2,"145":2,"146":5,"148":1,"155":1,"158":2,"159":1,"165":2,"183":2,"190":1,"191":1,"192":1,"198":1,"199":1,"205":1,"211":1,"213":1,"215":1,"231":1,"236":1,"241":1,"243":1,"244":1,"267":1,"274":1,"278":1,"285":1,"302":3,"303":1,"304":1,"305":2,"308":1,"309":1,"311":1,"314":1,"317":1,"318":1,"325":2,"330":1,"331":1,"332":3,"333":3,"335":1,"346":1,"351":2,"352":5,"353":3,"354":3,"361":1,"369":1,"370":1,"386":3,"387":1,"389":1,"397":2,"400":1,"403":3,"404":1,"405":1,"414":1,"424":1,"429":3,"431":1,"433":1,"439":1,"440":2,"445":2,"446":2,"450":1,"452":4,"459":3,"461":2,"465":1,"466":2,"467":2,"469":2,"470":1,"477":1,"479":1,"482":1,"485":1,"488":1,"490":1,"495":1,"500":1,"507":1,"511":1}}],["isopensessionresponse",{"2":{"485":1}}],["isfailedtransactionresponse",{"2":{"479":1}}],["isfeerequired",{"2":{"52":1}}],["isthis",{"2":{"436":2}}],["issendtransactionresponse",{"2":{"488":1}}],["issenttransactionresponse",{"2":{"439":3,"440":2,"477":1}}],["issessionvalid",{"2":{"444":2}}],["issignedmessageresponse",{"2":{"482":1}}],["issignedin",{"2":{"435":1}}],["issignerleaf",{"2":{"430":1}}],["issubdigestleaf",{"2":{"430":1}}],["issuedat",{"2":{"468":1}}],["issuednumbertimestamp",{"2":{"450":1}}],["issued",{"2":{"440":1,"450":1,"451":1,"452":1,"453":1,"459":1,"460":1,"476":1,"478":1}}],["issuer",{"2":{"436":2}}],["issue",{"2":{"188":1}}],["isvalidationrequiredresponse",{"2":{"487":1,"488":1}}],["isvalidsignature",{"2":{"411":3}}],["isvalidbooltrue",{"2":{"394":1}}],["isvalidimage",{"0":{"392":1},"1":{"393":1,"394":1},"2":{"392":1}}],["isvalidmessagesignature",{"2":{"280":1,"513":1}}],["isvalid",{"2":{"280":2,"392":1,"411":2,"444":2,"513":2}}],["ismounted",{"2":{"189":2}}],["islisting",{"2":{"183":1,"339":1}}],["island",{"2":{"12":1}}],["isbound",{"2":{"133":1}}],["isnestedleaf",{"2":{"430":1}}],["isn",{"2":{"106":1,"115":1}}],["isconnected",{"2":{"87":2}}],["is",{"2":{"1":1,"2":3,"3":4,"4":1,"13":1,"14":2,"15":3,"18":1,"19":3,"20":7,"22":2,"23":1,"30":1,"31":2,"32":2,"33":1,"34":1,"43":5,"44":2,"45":5,"47":2,"50":1,"51":1,"58":2,"59":1,"60":4,"61":1,"72":1,"80":1,"84":1,"85":1,"90":1,"93":3,"95":1,"99":1,"101":2,"102":4,"105":4,"106":2,"109":3,"110":2,"111":2,"112":3,"113":1,"114":1,"115":1,"117":3,"118":4,"119":3,"121":1,"123":1,"125":2,"126":2,"129":1,"130":2,"131":1,"133":9,"134":2,"140":1,"145":2,"146":1,"153":1,"155":1,"156":1,"158":3,"163":2,"165":3,"168":1,"169":1,"173":1,"175":1,"177":2,"183":4,"184":2,"185":1,"188":4,"189":5,"190":5,"191":1,"192":1,"193":1,"194":1,"196":1,"197":1,"200":1,"201":3,"202":1,"205":1,"206":1,"207":1,"209":1,"210":1,"212":1,"214":3,"215":1,"216":1,"221":1,"222":1,"230":1,"231":1,"232":2,"233":1,"236":3,"237":3,"239":1,"240":4,"241":1,"242":2,"243":6,"244":2,"249":2,"251":1,"253":1,"257":1,"258":1,"259":1,"262":1,"266":6,"267":2,"269":1,"270":3,"271":1,"272":3,"274":2,"283":1,"285":4,"290":1,"294":1,"302":3,"304":1,"307":2,"309":2,"311":1,"312":1,"313":2,"314":2,"319":5,"320":5,"321":1,"330":1,"331":1,"333":2,"335":1,"342":1,"351":3,"352":2,"353":4,"354":7,"355":1,"361":1,"363":2,"364":3,"366":1,"367":3,"375":1,"377":1,"386":1,"390":1,"391":2,"392":2,"395":1,"396":1,"397":4,"398":4,"399":2,"400":1,"401":1,"402":2,"403":4,"404":1,"405":1,"406":3,"409":2,"410":2,"411":5,"416":1,"417":4,"422":1,"424":2,"425":2,"426":1,"427":2,"428":4,"429":7,"430":6,"431":1,"433":1,"434":3,"435":7,"439":1,"440":3,"442":1,"444":1,"445":1,"446":4,"448":1,"449":2,"450":2,"452":3,"453":2,"454":2,"459":2,"460":1,"466":3,"467":1,"468":1,"469":3,"470":1,"475":1,"478":3,"480":1,"483":1,"486":1,"487":1,"490":7,"491":1,"492":1,"495":3,"496":3,"498":1,"499":4,"500":1,"501":2,"502":1,"503":3,"504":1,"505":3,"507":2}}],["if",{"2":{"0":1,"3":1,"4":1,"15":1,"16":1,"19":1,"28":1,"32":1,"35":1,"44":1,"45":1,"47":1,"78":1,"80":2,"92":1,"99":2,"101":2,"102":2,"104":2,"105":1,"106":4,"110":1,"111":2,"117":2,"119":2,"120":1,"122":1,"124":1,"125":3,"130":1,"131":2,"133":2,"145":1,"146":2,"155":1,"156":1,"163":1,"165":1,"168":1,"169":1,"173":1,"177":1,"183":3,"184":1,"186":3,"189":1,"191":2,"200":1,"204":1,"206":1,"212":1,"237":3,"242":3,"243":3,"244":4,"257":1,"258":1,"259":1,"262":1,"263":1,"266":2,"267":1,"273":1,"275":1,"280":1,"282":2,"283":1,"285":1,"302":1,"303":2,"304":2,"305":2,"306":1,"319":4,"320":4,"321":2,"332":1,"335":1,"346":1,"353":1,"354":1,"363":1,"364":2,"366":2,"367":2,"375":1,"379":1,"389":1,"392":1,"394":1,"397":1,"400":1,"403":1,"405":1,"406":1,"409":1,"410":1,"411":3,"424":1,"428":1,"429":1,"430":3,"431":1,"433":1,"435":1,"439":2,"440":2,"443":1,"445":2,"446":2,"450":1,"452":2,"457":1,"475":2,"477":1,"478":1,"479":1,"482":1,"485":1,"487":1,"488":2,"496":3,"501":3,"506":1,"508":1,"513":1,"515":2}}],["inaccessible",{"2":{"429":1,"492":1}}],["inactive",{"2":{"353":1}}],["inner",{"2":{"429":1}}],["initwallet",{"2":{"244":2}}],["initiate",{"2":{"492":1}}],["initiateauth",{"2":{"434":1}}],["initiated",{"2":{"266":1}}],["initiating",{"2":{"229":1}}],["initialization",{"0":{"225":1},"2":{"431":2}}],["initialize",{"0":{"277":1,"510":1},"2":{"398":1}}],["initializes",{"2":{"190":1}}],["initialized",{"2":{"80":1,"190":1,"225":1,"226":1}}],["initial",{"0":{"159":1,"419":1,"431":1},"1":{"420":1},"2":{"128":1,"159":1,"163":1,"386":1,"387":1,"419":1,"425":1,"431":5}}],["individual",{"2":{"363":1}}],["indicating",{"2":{"190":1}}],["indeed",{"2":{"466":1}}],["independently",{"2":{"351":1,"352":1,"353":1,"461":1}}],["independent",{"2":{"50":1,"51":2,"363":2,"380":1,"425":1}}],["indexing",{"2":{"20":1}}],["index",{"2":{"20":1,"185":1,"439":1,"476":2}}],["indexeddb",{"2":{"365":2}}],["indexeable",{"2":{"39":1}}],["indexes",{"2":{"20":1}}],["indexer",{"0":{"14":1,"20":1},"1":{"15":1,"16":1,"17":1,"18":1,"21":1,"22":1},"2":{"14":4,"15":9,"16":6,"17":5,"18":1,"19":3,"20":9,"24":2,"31":1,"37":2,"39":1,"107":1,"109":3,"140":1,"168":12,"169":12,"171":12,"173":13,"175":15,"177":14,"179":1,"180":11,"340":1}}],["inherit",{"2":{"189":1,"310":1}}],["inherits",{"2":{"146":1}}],["incorrect",{"2":{"397":1}}],["increase",{"2":{"243":1}}],["increment",{"2":{"107":3,"140":3}}],["including",{"0":{"177":1},"2":{"22":2,"81":1,"123":1,"181":1,"197":1,"210":1,"311":1,"449":1}}],["includes",{"2":{"173":1,"243":1,"354":1,"436":1,"439":1}}],["includecollectiontokens",{"2":{"168":1}}],["includecontracts",{"2":{"19":1,"168":1,"169":1,"173":1,"177":1}}],["includedpaymentproviders",{"0":{"260":1},"2":{"244":2,"260":1}}],["included",{"2":{"20":1,"168":2,"169":2,"173":2,"177":2,"284":1,"439":1,"466":1}}],["includemetadata",{"2":{"17":2,"24":1,"37":1,"168":3,"169":3,"171":1,"173":3,"175":2,"177":3}}],["include",{"2":{"3":1,"19":1,"32":1,"41":1,"52":1,"70":1,"71":1,"118":1,"119":1,"126":1,"303":1,"397":1,"466":1}}],["invalidating",{"2":{"354":1}}],["invalid",{"2":{"282":1,"388":1,"416":1,"424":1,"515":1}}],["involve",{"2":{"438":1}}],["involved",{"2":{"165":1}}],["involves",{"2":{"102":1,"449":1}}],["invoking",{"0":{"88":1}}],["invoke",{"2":{"87":1}}],["investigate",{"2":{"0":1}}],["inputs",{"2":{"459":2}}],["input",{"2":{"75":1,"118":1,"128":1,"397":1}}],["inline",{"2":{"75":1}}],["insightful",{"2":{"148":1}}],["insights",{"2":{"147":1}}],["inside",{"2":{"18":1,"30":1,"50":1}}],["insecurely",{"2":{"139":1}}],["inspector",{"2":{"115":2}}],["instantiating",{"2":{"244":1}}],["instances",{"2":{"447":1,"490":2,"491":2}}],["instance",{"2":{"59":1,"109":1,"168":1,"244":2,"361":1,"434":2,"490":5,"491":1,"492":1}}],["installed",{"2":{"104":1,"193":1,"206":2,"223":1,"243":1,"268":1,"376":1,"463":1}}],["installing",{"0":{"84":1},"2":{"83":1,"106":1}}],["installation",{"0":{"14":1,"15":1,"16":1,"17":1,"18":1,"28":1,"29":1,"30":1,"47":1,"48":1,"49":1,"57":1,"103":1,"137":1,"193":1,"206":1,"216":1,"223":1,"359":1},"1":{"15":1,"16":2,"17":2,"18":2,"48":1,"49":1,"104":1,"105":1,"106":1,"138":1,"139":1},"2":{"28":1}}],["install",{"0":{"267":1,"375":1},"1":{"268":1,"376":1},"2":{"6":2,"16":2,"28":2,"48":2,"50":1,"57":2,"63":3,"84":5,"86":1,"105":1,"193":1,"200":2,"206":1,"212":2,"216":1,"223":1,"243":1,"244":2,"265":1,"267":2,"359":2,"371":1,"375":2}}],["instead",{"2":{"43":1,"81":1,"99":1,"200":1,"212":1,"236":1,"283":1,"303":1,"363":1,"398":1,"417":2,"430":1,"432":1,"459":1,"495":1}}],["instructions",{"0":{"40":1},"2":{"14":1,"143":1}}],["infinity",{"2":{"428":2}}],["infura",{"2":{"237":2,"496":2}}],["infer",{"2":{"46":1}}],["informed",{"2":{"367":1}}],["informs",{"2":{"190":1}}],["information",{"2":{"13":1,"15":1,"20":2,"32":1,"43":1,"46":1,"57":1,"139":3,"156":1,"159":1,"164":1,"168":1,"190":1,"366":1,"449":1}}],["info",{"2":{"25":1,"43":1,"99":2,"244":1,"367":1,"391":1}}],["infrastructure",{"2":{"5":2,"20":1,"60":1,"240":1,"340":1,"354":1,"499":1}}],["int256",{"2":{"304":1}}],["intrusive",{"2":{"165":1}}],["introduction",{"0":{"107":1,"140":1,"307":1,"323":1},"1":{"108":1,"141":1,"308":1}}],["introduced",{"2":{"19":1}}],["introducing",{"2":{"14":1}}],["int",{"2":{"119":1,"180":1,"293":1,"304":1}}],["intend",{"2":{"367":1}}],["intents",{"0":{"467":1},"1":{"468":1,"469":1,"470":1,"471":1},"2":{"467":1,"468":1,"471":1,"488":1}}],["intent",{"2":{"99":19,"244":3,"352":1,"449":1,"468":3,"469":1,"470":3,"471":1,"472":1,"475":1,"478":1,"480":1,"483":1}}],["integers",{"2":{"304":1}}],["integer",{"2":{"262":1,"294":1,"304":2}}],["integrity",{"2":{"236":1,"248":1,"461":2,"465":1,"495":1}}],["integration",{"0":{"63":1,"127":1,"133":1,"188":1},"1":{"64":1,"65":1,"66":1,"67":1,"128":1,"129":1,"130":1,"131":1},"2":{"82":1,"91":1,"107":1,"140":1,"164":1,"165":2,"166":1,"203":1,"221":1,"245":1,"357":2,"378":1}}],["integrations",{"0":{"161":1},"2":{"25":1,"33":1,"38":1,"39":2,"168":1}}],["integrating",{"2":{"50":1,"90":1,"202":1,"244":1,"341":1,"362":1,"377":1,"450":1}}],["integrated",{"2":{"18":1,"30":1,"31":1,"107":1,"260":1,"261":1,"355":1}}],["integrate",{"0":{"9":1,"10":1,"202":1,"377":1},"1":{"203":1,"378":1},"2":{"0":1,"14":1,"15":1,"35":1,"47":1,"63":1,"79":1,"91":1,"92":1,"153":1,"161":1,"163":1,"165":1,"203":1,"204":1,"242":1,"355":1,"357":1,"370":1,"378":1,"379":1,"459":1,"501":1}}],["interchangeably",{"2":{"314":1}}],["intercepted",{"2":{"128":1}}],["interpret",{"2":{"275":1,"508":1}}],["interoperability",{"2":{"243":1}}],["internaltype",{"2":{"459":4}}],["internally",{"2":{"392":1,"430":1,"467":1}}],["internal",{"2":{"148":1,"351":1,"392":1,"429":3}}],["intermediate",{"2":{"145":1}}],["interfacing",{"2":{"84":1}}],["interfaces",{"2":{"181":1}}],["interface",{"2":{"33":2,"35":1,"50":1,"109":1,"266":1,"269":3,"270":2,"271":2,"272":2,"283":1,"284":1,"310":1,"312":2,"314":1,"315":1,"391":3,"459":1,"502":3,"503":2,"504":2,"505":2}}],["interested",{"2":{"52":1}}],["interaction",{"2":{"281":1,"514":1}}],["interactions",{"0":{"120":1,"122":1,"124":1},"2":{"120":1,"122":1,"124":1,"275":1,"467":1,"508":1}}],["interacting",{"2":{"66":1,"118":1,"125":1,"304":1,"309":1,"429":1,"472":1}}],["interact",{"2":{"23":1,"52":1,"59":1,"310":1,"351":1,"361":1,"432":1}}],["intelligently",{"2":{"20":1}}],["into",{"0":{"202":1,"377":1},"1":{"203":1,"378":1},"2":{"5":1,"14":1,"52":1,"90":1,"92":2,"99":1,"102":1,"105":1,"106":1,"125":1,"126":1,"128":1,"129":1,"146":2,"155":1,"163":1,"165":4,"190":1,"199":1,"202":1,"204":2,"213":1,"256":1,"267":1,"285":1,"304":1,"319":1,"320":1,"326":1,"355":1,"356":1,"357":2,"375":1,"377":1,"379":2,"430":2,"465":1,"490":1}}],["in",{"0":{"72":1,"79":1,"94":1,"95":1,"147":1,"153":1,"168":1,"176":1,"177":1,"322":1,"433":1,"434":1},"1":{"73":1,"74":1,"75":1,"76":1,"77":1,"80":1,"96":1,"97":1,"98":1,"99":1,"100":1,"148":1,"149":1,"150":1,"151":1,"152":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"177":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"434":1,"435":1},"2":{"0":3,"1":1,"2":5,"3":6,"11":3,"13":1,"14":1,"15":1,"17":1,"19":2,"20":8,"22":3,"25":2,"28":1,"29":1,"31":1,"32":3,"34":1,"38":2,"39":6,"41":3,"43":3,"45":5,"46":2,"49":1,"50":3,"51":1,"52":3,"54":1,"55":1,"60":3,"63":1,"67":1,"70":1,"72":1,"73":2,"74":2,"75":2,"76":4,"77":3,"78":5,"80":1,"81":1,"83":2,"86":1,"87":2,"90":1,"91":1,"93":1,"94":2,"95":5,"96":2,"97":2,"99":7,"101":3,"102":4,"104":4,"105":2,"106":6,"107":1,"108":3,"110":5,"111":1,"112":3,"115":7,"117":1,"118":2,"119":1,"121":1,"123":4,"125":6,"126":2,"128":2,"129":2,"131":1,"133":6,"134":1,"138":2,"139":3,"140":2,"143":2,"145":5,"146":6,"147":1,"148":4,"149":2,"153":2,"156":1,"158":1,"162":1,"163":5,"165":3,"168":6,"169":3,"171":3,"173":4,"175":3,"177":5,"180":3,"181":1,"182":1,"183":4,"184":1,"188":2,"189":4,"190":7,"191":1,"197":1,"202":1,"203":1,"210":1,"220":1,"232":1,"236":3,"237":3,"239":1,"240":3,"242":2,"244":2,"249":2,"254":2,"257":2,"258":2,"259":2,"260":1,"261":1,"266":1,"269":1,"270":2,"271":1,"272":2,"274":1,"275":2,"278":1,"282":1,"283":2,"284":2,"285":2,"286":1,"288":1,"289":2,"290":1,"291":2,"293":1,"294":1,"295":1,"300":1,"301":1,"302":1,"303":3,"304":1,"307":7,"311":1,"312":2,"319":1,"320":1,"321":1,"323":1,"324":1,"325":1,"328":1,"333":1,"335":1,"337":1,"339":1,"340":1,"341":1,"344":1,"350":1,"351":1,"352":1,"353":4,"354":2,"355":1,"357":1,"362":1,"364":1,"365":2,"366":1,"367":1,"377":1,"378":1,"380":1,"388":1,"391":1,"392":1,"397":1,"399":1,"400":1,"406":2,"410":1,"420":1,"422":1,"425":1,"429":1,"433":3,"434":2,"435":1,"439":1,"440":1,"442":1,"443":2,"449":2,"450":3,"459":4,"464":1,"465":1,"466":4,"469":1,"470":1,"471":1,"475":3,"478":1,"486":1,"490":2,"492":3,"495":3,"496":3,"498":1,"499":3,"501":2,"502":1,"503":2,"504":1,"505":2,"507":1,"508":2,"511":1,"515":1}}],["fmt",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"184":1,"186":2}}],["fscriptdelegate",{"2":{"133":1}}],["fsequenceerror",{"2":{"131":2}}],["fstoredcredentials",{"2":{"130":1}}],["fstring",{"2":{"130":1,"131":2,"133":4,"134":1,"135":1}}],["ffailurecallback",{"2":{"131":1}}],["fcredentials",{"2":{"130":2,"133":2,"146":1}}],["fly",{"2":{"324":1}}],["flexible",{"2":{"243":1,"347":1}}],["flexibility",{"2":{"106":1}}],["flagged",{"2":{"400":1}}],["flag",{"2":{"130":1,"252":1}}],["floating",{"2":{"118":1}}],["flows",{"2":{"441":1}}],["flow",{"0":{"489":1,"492":1},"1":{"490":1,"491":1,"492":1},"2":{"95":1,"266":1,"357":1,"489":1,"492":1}}],["feb",{"2":{"381":1}}],["feehistoryresult",{"2":{"293":2}}],["feehistory",{"0":{"293":1},"2":{"293":2}}],["feeoptions",{"2":{"184":1}}],["feetokens",{"2":{"52":2}}],["fee",{"0":{"184":1},"2":{"52":3,"184":4,"186":1,"298":1}}],["fees",{"0":{"52":1},"2":{"52":1,"293":1,"347":1,"459":1}}],["feel",{"2":{"32":1,"82":1,"93":1,"106":1,"112":1,"191":1}}],["few",{"2":{"22":1,"91":1,"105":1,"113":1,"115":1,"129":1,"145":1,"203":1,"378":1}}],["federation",{"2":{"13":1}}],["fetches",{"0":{"168":1},"2":{"173":1,"177":1}}],["fetching",{"0":{"184":1,"185":1},"2":{"37":1,"112":1,"168":1}}],["fetch",{"0":{"25":1,"38":1,"169":1,"171":1,"173":1,"175":1,"177":1},"2":{"6":2,"20":1,"22":4,"24":1,"34":2,"36":4,"37":1,"38":1,"39":1,"40":2,"168":1,"182":3,"185":1}}],["features",{"0":{"91":1,"203":1,"378":1},"2":{"20":1,"23":1,"50":1,"105":1,"107":1,"140":1,"242":2,"357":1,"501":2}}],["feature",{"2":{"5":1,"11":1,"63":1,"188":1,"190":2,"326":1}}],["future",{"2":{"471":1}}],["fur",{"2":{"43":1}}],["furthermore",{"2":{"165":1}}],["further",{"2":{"0":1,"244":1,"467":1}}],["full",{"2":{"15":1,"21":1,"32":1,"35":1,"44":1,"47":1,"76":1,"77":1,"107":1,"140":1,"163":1,"189":1,"190":1,"252":1,"264":1,"439":1,"440":1}}],["fully",{"2":{"11":1,"23":1,"109":1,"232":1,"302":1,"355":1,"429":1}}],["funds",{"2":{"244":1,"388":1,"402":1}}],["funding",{"2":{"11":1,"262":1,"263":1}}],["funcstringthe",{"2":{"459":1}}],["func",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"459":2}}],["functionyesdatastringadditional",{"2":{"457":1}}],["functionnameasstring",{"2":{"125":2,"126":1}}],["functions",{"0":{"303":1},"2":{"102":1,"117":1,"120":1,"122":1,"124":1,"128":1,"199":1,"213":1,"267":1,"280":1,"513":1}}],["functionality",{"2":{"109":1,"129":1,"191":1,"266":1,"270":1,"271":1,"272":1,"342":1,"346":1,"399":1,"503":1,"504":1,"505":1}}],["functional",{"2":{"23":1,"355":1,"435":1}}],["function",{"2":{"6":3,"80":1,"81":1,"85":1,"86":1,"101":1,"111":1,"118":1,"125":5,"139":2,"146":2,"190":1,"236":1,"242":1,"269":3,"270":2,"271":2,"272":2,"302":3,"303":1,"388":1,"392":2,"396":1,"398":1,"411":1,"430":4,"431":1,"435":5,"436":1,"459":5,"495":1,"501":1,"502":3,"503":2,"504":2,"505":2}}],["fungible",{"2":{"119":1,"121":1,"123":1}}],["fashion",{"2":{"410":1}}],["fast",{"2":{"1":1,"20":3,"23":1,"27":1,"31":1,"50":1}}],["fatal",{"2":{"168":1,"169":1,"171":1,"173":1,"175":1,"177":1}}],["fate",{"2":{"44":1}}],["false",{"0":{"399":1},"2":{"168":1,"169":1,"173":1,"177":1,"183":1,"244":2,"263":1,"398":2,"404":1,"435":1,"436":1,"440":1,"444":1,"445":2,"446":1,"448":1,"476":3,"478":1}}],["fall",{"2":{"44":1}}],["fauthenticatorconfig",{"2":{"143":1}}],["familiar",{"2":{"92":1,"125":1,"165":1,"204":1,"243":1,"355":1,"379":1}}],["facing",{"2":{"355":1}}],["facilitate",{"2":{"62":1}}],["facet",{"2":{"350":1}}],["facebook",{"2":{"76":1,"81":1,"91":1,"95":1,"203":1,"257":1,"378":1,"433":1,"443":1}}],["factual",{"2":{"391":1,"406":1,"420":1}}],["factory",{"2":{"386":1,"387":1,"391":1,"398":2,"419":1,"420":2,"421":1,"431":1}}],["fact",{"2":{"20":1,"43":1,"60":1,"240":1,"363":1,"499":1}}],["failing",{"2":{"440":1}}],["fails",{"2":{"145":1,"319":1,"320":1,"400":1,"440":2}}],["failedyesgasusednumberamount",{"2":{"475":1,"478":1}}],["failedtransactionresponse",{"2":{"440":1}}],["failedtransactionreturn",{"2":{"117":1}}],["failed",{"0":{"440":1,"478":1},"1":{"479":1},"2":{"438":2,"439":1,"478":2,"479":1}}],["failedcontractdeploymentreturn",{"2":{"102":1}}],["failure",{"2":{"110":1,"139":1,"302":1,"475":1,"478":1}}],["failures",{"2":{"20":1}}],["fail",{"2":{"5":1,"126":1,"145":1,"307":1,"319":1,"320":1}}],["friendlyname",{"2":{"436":2}}],["freshly",{"2":{"331":1}}],["frequent",{"2":{"275":1,"508":1}}],["free",{"2":{"4":1,"14":1,"32":2,"50":1,"52":3,"82":1,"93":1,"112":1,"191":1}}],["framework",{"2":{"140":1,"165":1}}],["frommnemonic",{"2":{"184":1}}],["from",{"0":{"13":1,"109":1},"2":{"0":1,"2":1,"3":1,"5":1,"6":2,"11":1,"15":1,"16":3,"19":2,"20":5,"22":1,"25":2,"28":3,"36":2,"38":2,"39":4,"41":1,"43":1,"59":1,"63":1,"64":1,"78":1,"81":1,"82":1,"85":6,"86":8,"87":3,"88":1,"94":1,"99":1,"101":1,"102":3,"104":3,"109":1,"111":2,"117":2,"119":1,"123":1,"125":2,"130":2,"133":1,"134":4,"138":1,"145":1,"146":1,"148":1,"168":4,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"184":2,"185":1,"189":2,"190":1,"194":2,"207":1,"217":1,"225":1,"226":3,"236":3,"237":5,"242":2,"243":1,"244":2,"263":1,"266":4,"269":2,"270":2,"272":2,"273":1,"275":2,"277":2,"283":1,"289":1,"303":1,"305":1,"310":1,"321":1,"323":1,"324":1,"325":1,"332":1,"350":1,"351":1,"352":2,"353":1,"361":1,"363":1,"365":1,"366":1,"369":1,"370":1,"386":1,"389":1,"390":1,"397":1,"409":1,"410":2,"433":1,"434":2,"435":10,"436":1,"437":2,"439":1,"440":1,"448":1,"465":1,"468":1,"477":2,"478":1,"479":2,"482":2,"485":2,"487":2,"488":2,"495":3,"496":5,"501":2,"502":2,"503":2,"505":2,"506":1,"508":2,"510":2}}],["frontend",{"2":{"50":1,"353":2}}],["front",{"2":{"0":1}}],["fiat",{"0":{"341":1,"362":1}}],["fixedbyte",{"2":{"304":1}}],["fixed",{"2":{"304":1,"391":1}}],["fixing",{"2":{"188":1}}],["fit",{"2":{"106":2,"163":1,"308":1}}],["fillorkillorder",{"2":{"459":2}}],["fill",{"2":{"110":1,"333":1}}],["filters",{"2":{"179":1,"180":6}}],["filter",{"2":{"99":9,"149":1,"173":6,"175":5,"177":1,"180":1,"183":1}}],["files",{"0":{"326":1},"2":{"105":2,"324":1,"325":3,"326":1,"327":1,"331":1}}],["file",{"0":{"465":1},"2":{"3":1,"99":2,"106":1,"138":1,"143":1,"145":2,"324":1,"325":1,"333":1,"435":1,"465":1,"466":1}}],["firm",{"2":{"123":1}}],["fired",{"2":{"133":1,"148":1}}],["fires",{"2":{"130":1}}],["fire",{"2":{"50":1,"134":2,"135":1}}],["first",{"0":{"398":1},"1":{"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1},"2":{"2":1,"32":1,"81":1,"99":1,"102":1,"108":1,"120":1,"122":1,"124":1,"145":1,"244":1,"324":2,"364":1,"398":1,"403":2,"452":1}}],["fieldtypedescriptionerrorstringthe",{"2":{"478":1}}],["fields",{"2":{"45":2,"80":1,"439":1,"450":1,"473":1}}],["field",{"2":{"43":1,"45":2,"66":1,"67":1,"81":1,"96":1,"97":1,"143":1,"155":1,"469":1,"475":1,"478":1,"480":1,"483":1,"486":1}}],["finishvalidatesession",{"2":{"445":2}}],["finishes",{"2":{"403":2}}],["finished",{"2":{"145":1,"266":1}}],["finalizeauth",{"2":{"434":2}}],["finalize",{"0":{"334":1}}],["finally",{"2":{"3":1,"45":1,"46":1,"134":1,"333":1}}],["fingerprints",{"2":{"143":1}}],["fine",{"2":{"45":1}}],["finding",{"2":{"105":1}}],["findobjectoftype",{"2":{"93":1}}],["find",{"0":{"464":1},"2":{"3":1,"15":1,"146":1,"155":2,"184":1,"236":1,"405":1,"406":1,"495":1}}],["foolproof",{"2":{"466":1}}],["fom",{"2":{"183":1}}],["focus",{"2":{"163":1,"165":1,"331":1}}],["fonts",{"2":{"163":1}}],["found",{"2":{"105":1,"110":1,"112":2,"138":1,"146":1,"156":1,"189":1,"190":2,"282":1,"284":1,"515":1}}],["folder",{"0":{"327":1},"2":{"104":2,"105":2,"110":4,"145":2,"146":7,"188":3,"190":2,"326":4,"327":2,"332":1,"333":1}}],["follows",{"2":{"107":1,"140":1,"266":1,"409":1,"427":1,"428":1,"429":1,"430":2,"450":1}}],["followed",{"2":{"51":1}}],["following",{"0":{"13":1},"2":{"3":1,"6":1,"11":2,"99":1,"101":1,"115":1,"128":1,"129":1,"138":1,"142":1,"143":1,"144":1,"145":2,"154":1,"200":1,"206":1,"212":1,"237":1,"323":1,"353":1,"357":1,"403":1,"423":1,"429":1,"431":1,"432":1,"463":1,"464":1,"465":1,"468":1,"473":1,"496":1}}],["follow",{"2":{"1":1,"15":1,"35":1,"47":1,"63":1,"85":1,"161":1,"181":1,"256":1,"356":1,"357":1,"360":1}}],["forbidden",{"2":{"455":1}}],["forest",{"2":{"357":1}}],["foreach",{"2":{"85":1,"86":1}}],["force",{"2":{"252":1}}],["forwarder",{"2":{"146":1}}],["forward",{"2":{"135":1,"146":2}}],["formerly",{"2":{"380":1}}],["forms",{"2":{"342":1}}],["form",{"2":{"112":1,"118":1,"343":1}}],["formats",{"2":{"37":1,"41":1}}],["format",{"2":{"34":1,"41":1,"43":1,"45":2,"94":1,"118":1,"119":2,"125":4,"285":2,"286":1,"288":1,"289":1,"290":1,"291":2,"293":1,"294":1,"295":1,"321":2,"335":1,"466":1}}],["forum",{"2":{"99":1}}],["forget",{"2":{"50":1,"115":1}}],["for",{"0":{"38":1,"173":1,"175":1,"235":1,"242":1,"447":1,"494":1,"501":1},"2":{"0":1,"1":1,"2":1,"3":4,"4":1,"5":2,"13":2,"15":3,"16":3,"17":3,"19":1,"20":5,"22":3,"23":1,"24":3,"25":2,"27":1,"31":4,"32":3,"33":3,"35":1,"37":5,"38":1,"39":3,"41":1,"43":5,"44":2,"45":1,"47":3,"50":5,"51":1,"52":5,"57":2,"60":1,"61":2,"66":1,"70":2,"76":1,"77":1,"80":3,"84":2,"85":3,"89":1,"90":1,"93":1,"94":1,"95":1,"99":2,"101":1,"102":2,"104":1,"105":1,"106":1,"107":2,"110":1,"111":2,"112":2,"117":3,"118":2,"120":3,"122":3,"123":1,"124":3,"125":1,"126":2,"128":2,"133":2,"140":1,"142":1,"143":2,"144":1,"146":2,"148":2,"149":3,"150":1,"155":1,"156":1,"158":5,"159":1,"162":1,"163":1,"164":3,"165":5,"166":1,"168":4,"169":2,"171":1,"173":4,"175":2,"177":3,"181":1,"182":1,"183":2,"184":1,"185":1,"186":2,"188":4,"190":1,"191":4,"197":1,"198":2,"199":2,"201":5,"202":1,"211":2,"213":2,"214":4,"222":1,"230":1,"233":1,"236":1,"237":3,"239":1,"240":1,"241":2,"242":2,"243":4,"244":1,"247":1,"248":1,"249":1,"251":1,"262":1,"264":1,"266":2,"267":2,"275":3,"283":1,"284":1,"285":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":1,"298":1,"301":1,"302":2,"303":1,"304":2,"307":2,"309":2,"310":3,"311":2,"313":1,"315":1,"316":1,"318":1,"320":1,"323":2,"324":1,"325":2,"326":1,"331":2,"332":2,"333":1,"335":1,"338":1,"339":2,"340":1,"346":1,"352":1,"354":1,"355":1,"357":3,"363":1,"364":3,"367":2,"377":1,"391":1,"397":3,"403":2,"405":1,"406":1,"409":1,"410":1,"411":1,"413":1,"418":1,"420":1,"423":3,"428":2,"430":1,"433":1,"434":2,"436":1,"439":1,"442":1,"444":2,"447":2,"448":1,"451":1,"452":2,"454":1,"455":1,"457":1,"458":1,"459":2,"460":1,"465":2,"466":2,"468":1,"470":1,"472":1,"475":6,"478":3,"488":1,"490":4,"491":1,"492":1,"495":1,"496":3,"498":1,"499":1,"500":2,"501":2,"508":3}}],["wyre",{"2":{"362":1}}],["w3c",{"2":{"243":1}}],["won",{"2":{"351":1}}],["wooden",{"2":{"332":1}}],["wouldn",{"2":{"353":1}}],["would",{"2":{"102":1,"125":1,"155":1,"156":1,"196":1,"209":1,"244":1,"303":1,"305":1,"366":1,"367":1,"466":1,"468":1}}],["world",{"2":{"90":1,"202":1,"377":1,"409":1,"481":1}}],["worker",{"2":{"357":1}}],["workers",{"0":{"8":1}}],["workflow",{"2":{"236":1,"495":1}}],["working",{"2":{"101":1,"102":1,"111":1,"117":1,"189":1,"307":1,"308":1,"321":1,"489":1}}],["works",{"0":{"113":1,"148":1},"2":{"25":1,"38":1,"39":2,"93":2,"125":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1,"239":1,"243":1,"244":3,"256":1,"369":1,"370":1,"429":1,"498":1}}],["work",{"2":{"3":1,"19":1,"32":1,"82":1,"95":1,"106":1,"108":1,"110":1,"112":1,"147":1,"191":2,"243":4,"285":1,"333":1,"434":1,"463":1,"467":1}}],["wrong",{"2":{"263":2}}],["wrapping",{"2":{"130":1,"307":2}}],["wrappers",{"2":{"80":1,"106":1,"309":3}}],["wrapper",{"0":{"85":1,"86":1},"2":{"68":1,"85":2,"86":1,"102":1,"109":1,"120":1,"122":1,"124":1,"190":6,"309":1,"310":1}}],["wrapped",{"2":{"52":1}}],["wrap",{"2":{"85":1,"190":2}}],["writing",{"2":{"131":1}}],["written",{"2":{"60":1,"165":1,"237":1,"239":1,"240":1,"242":1,"465":1,"496":1,"498":1,"499":1,"501":1}}],["write",{"0":{"117":1},"1":{"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1},"2":{"2":2,"106":1,"117":1,"331":1,"332":1,"334":1,"449":1}}],["wuelppex0pttvjabl8biuxpaaaaaaaaaa",{"2":{"39":2}}],["www",{"2":{"32":1,"44":1}}],["why",{"0":{"188":1,"342":1},"1":{"343":1,"344":1,"345":1,"346":1,"347":1,"348":1},"2":{"478":1}}],["whose",{"2":{"183":1}}],["who",{"2":{"165":1,"243":1,"353":1,"422":1,"443":1}}],["whole",{"2":{"118":1,"126":1,"319":1,"320":1,"400":1,"429":1,"430":1,"467":1}}],["whistles",{"2":{"307":1}}],["white",{"2":{"162":1,"163":3,"164":1}}],["whitelisted",{"2":{"157":1,"357":1}}],["whitespace",{"2":{"125":1,"469":1}}],["while",{"2":{"102":1,"107":1,"116":1,"140":1,"163":2,"188":1,"236":1,"243":1,"254":1,"266":1,"275":1,"302":1,"307":1,"319":1,"320":1,"351":1,"355":1,"367":1,"370":1,"398":1,"431":1,"466":1,"467":1,"469":1,"490":1,"495":1,"508":1}}],["which",{"2":{"3":1,"19":3,"20":1,"43":2,"44":2,"50":2,"61":1,"76":1,"77":1,"78":1,"102":2,"109":1,"111":1,"115":2,"117":1,"128":1,"135":1,"146":1,"168":1,"169":1,"173":1,"177":1,"189":1,"190":4,"199":2,"200":1,"201":2,"212":1,"213":2,"220":1,"236":2,"239":1,"241":1,"243":1,"246":1,"264":1,"266":1,"267":1,"270":1,"271":1,"272":1,"303":1,"310":1,"311":1,"315":1,"319":1,"320":1,"341":2,"342":1,"350":1,"362":2,"370":1,"389":1,"392":1,"397":1,"405":1,"428":1,"431":1,"453":1,"454":1,"459":1,"495":2,"498":1,"500":1,"503":1,"504":1,"505":1}}],["whether",{"2":{"75":1,"199":1,"213":1,"254":1,"263":1,"411":1,"443":1,"446":1}}],["whereby",{"2":{"50":1}}],["where",{"2":{"34":1,"43":1,"101":1,"102":1,"118":1,"125":1,"128":1,"130":2,"131":2,"133":1,"242":1,"256":1,"274":1,"304":1,"307":1,"331":1,"426":1,"466":1,"469":1,"475":1,"501":1,"507":1}}],["whenever",{"2":{"310":1,"432":1,"469":1}}],["when",{"0":{"188":1},"2":{"19":1,"39":1,"43":1,"44":1,"81":1,"93":1,"102":1,"105":2,"106":1,"108":1,"110":1,"111":1,"117":1,"118":1,"120":1,"122":1,"124":1,"125":2,"126":1,"130":1,"134":1,"145":1,"147":1,"148":1,"183":1,"189":1,"190":2,"199":1,"213":1,"229":1,"236":1,"244":2,"245":1,"256":1,"261":1,"285":1,"302":2,"303":1,"304":1,"307":4,"308":1,"309":1,"352":1,"357":1,"364":1,"398":1,"403":2,"411":1,"435":2,"443":1,"446":2,"448":1,"450":3,"452":1,"453":1,"454":1,"460":1,"461":1,"471":1,"472":1,"490":1,"491":1,"495":1}}],["whatever",{"2":{"135":1}}],["what",{"0":{"163":1,"468":1},"2":{"22":2,"190":1,"331":1,"346":1,"352":1,"399":1,"466":1}}],["warning",{"2":{"388":1,"403":1}}],["waitfortransactionreceipt",{"0":{"301":1},"2":{"301":1}}],["waits",{"2":{"186":1,"318":1,"320":1}}],["wait",{"2":{"145":1,"185":2,"186":3,"189":2,"301":1,"303":1}}],["was",{"2":{"105":2,"183":2,"185":1,"367":1,"380":1,"411":1,"439":2,"450":1,"475":3,"478":1}}],["washington",{"2":{"12":1}}],["wagmiclient",{"2":{"190":2}}],["wagmiconfig",{"2":{"63":2,"81":3,"85":3,"86":4,"190":2,"207":1}}],["wagmiwrapper",{"2":{"190":6}}],["wagmiprovider",{"2":{"85":1,"86":1,"190":1}}],["wagmi",{"0":{"200":1,"205":1,"212":1},"1":{"206":1,"207":1,"208":1,"209":1,"210":1,"211":1,"212":1,"213":1,"214":1},"2":{"76":1,"77":1,"80":3,"81":1,"84":4,"85":5,"86":2,"87":2,"90":1,"188":2,"189":5,"190":4,"191":1,"199":5,"200":4,"201":4,"202":1,"205":3,"206":5,"207":2,"212":4,"213":3,"214":5,"377":1}}],["waasadapter",{"2":{"314":1}}],["waastowalletadapter",{"2":{"314":3,"319":2,"320":2}}],["waastenantkey",{"2":{"138":1}}],["waaswallet",{"2":{"101":4,"102":9,"111":4,"112":1,"117":5,"118":1,"314":3}}],["waaslogin",{"2":{"101":1}}],["waasconfigkey",{"2":{"59":1,"361":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1}}],["waas",{"0":{"101":1,"354":1},"2":{"57":1,"59":4,"93":1,"94":1,"101":2,"105":1,"110":2,"117":1,"118":1,"119":1,"120":3,"121":1,"122":3,"123":1,"124":3,"125":2,"126":1,"138":1,"157":1,"158":1,"354":2,"357":4,"359":1,"360":1,"361":4,"432":1,"433":6,"434":6,"435":5,"436":5,"437":6,"439":5,"440":5,"444":1,"445":2,"446":1,"447":2,"448":1,"461":1,"464":1,"465":4,"466":1,"468":1,"469":1,"477":1,"479":1,"482":1,"485":1,"487":1,"488":1,"489":1,"490":3,"491":1,"492":1}}],["wants",{"2":{"366":1}}],["want",{"2":{"52":1,"101":1,"105":1,"106":1,"120":1,"122":1,"124":1,"125":3,"133":1,"145":1,"191":1,"236":1,"243":1,"254":1,"273":1,"285":2,"303":3,"306":1,"331":1,"335":1,"495":1,"506":1}}],["ways",{"2":{"243":1,"352":1,"357":1}}],["way",{"0":{"462":1,"466":1},"1":{"463":1,"464":1,"465":1},"2":{"23":1,"82":1,"115":2,"165":1,"275":1,"351":1,"354":1,"391":1,"398":1,"429":2,"490":1,"508":1}}],["walletaddress",{"2":{"435":2}}],["walletauthoptions",{"0":{"77":1},"2":{"81":2}}],["walletcontext",{"2":{"421":1}}],["walletcontractbytecode",{"2":{"420":1}}],["walletconnect",{"0":{"266":1},"2":{"91":1,"203":1,"243":1,"264":1,"266":4,"378":1}}],["walletconnectprojectid",{"2":{"85":1,"86":1}}],["walletproxybytecode",{"2":{"420":1}}],["walletpanel",{"2":{"112":1}}],["walletinterface",{"2":{"398":2}}],["wallet",{"0":{"86":1,"88":1,"112":1,"153":1,"158":1,"168":1,"172":1,"173":1,"188":1,"189":1,"190":1,"191":1,"235":1,"236":1,"237":1,"243":1,"245":1,"265":1,"274":1,"277":1,"355":1,"369":1,"370":1,"371":1,"386":1,"387":1,"391":1,"401":1,"406":1,"412":1,"419":1,"420":1,"421":1,"422":1,"494":1,"495":1,"496":1,"507":1,"510":1},"1":{"113":1,"114":1,"115":1,"116":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"173":1,"244":1,"245":1,"246":2,"247":2,"248":2,"249":2,"250":2,"251":2,"252":2,"253":2,"254":2,"255":2,"256":2,"257":2,"258":2,"259":2,"260":2,"261":2,"262":2,"263":2,"264":1,"265":1,"266":1,"356":1,"387":1,"388":2,"389":2,"390":2,"391":1,"392":2,"393":2,"394":2,"395":1,"396":1,"397":1,"398":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1,"413":1,"414":1,"415":1,"416":1,"417":1,"418":1,"419":1,"420":2,"423":1,"424":1,"425":1,"426":1,"427":1,"428":1,"429":1,"430":1,"431":1},"2":{"20":2,"22":3,"54":1,"55":1,"57":2,"58":3,"59":2,"77":3,"78":1,"83":1,"84":3,"85":1,"86":4,"88":3,"91":3,"93":3,"101":2,"102":4,"107":2,"111":3,"112":2,"117":3,"118":2,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":3,"140":2,"150":1,"153":1,"154":1,"158":6,"159":2,"160":2,"161":1,"165":8,"168":2,"169":1,"171":2,"173":4,"180":1,"184":5,"186":2,"188":3,"190":2,"191":2,"192":2,"197":1,"203":3,"205":2,"215":2,"219":1,"228":1,"229":1,"231":2,"232":3,"233":1,"235":3,"236":6,"237":1,"242":1,"243":12,"244":19,"245":2,"246":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":3,"254":2,"255":2,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"266":2,"267":1,"269":2,"270":3,"271":3,"272":3,"273":2,"274":1,"275":5,"277":6,"278":1,"279":1,"280":3,"281":1,"285":3,"295":2,"303":6,"306":1,"309":3,"311":2,"312":1,"313":2,"316":2,"317":1,"318":1,"319":5,"320":5,"321":3,"333":1,"341":2,"342":1,"343":1,"350":1,"351":2,"354":6,"355":4,"356":1,"357":4,"360":1,"361":2,"362":2,"363":8,"364":3,"367":1,"370":2,"373":1,"378":3,"380":3,"386":1,"387":1,"388":3,"389":3,"390":5,"391":3,"392":3,"393":1,"394":1,"395":1,"396":2,"397":6,"398":6,"399":1,"400":2,"401":2,"403":3,"404":2,"405":3,"406":5,"409":6,"410":7,"411":2,"412":1,"414":1,"417":2,"419":4,"420":5,"422":3,"423":2,"425":2,"427":1,"429":2,"431":5,"432":1,"433":1,"434":1,"440":3,"441":1,"449":6,"450":2,"451":1,"452":4,"453":2,"454":1,"455":1,"459":2,"460":2,"467":1,"468":1,"469":1,"472":1,"476":1,"477":1,"478":1,"479":1,"482":1,"483":1,"484":1,"485":1,"487":1,"488":1,"490":2,"494":3,"495":6,"496":1,"501":1,"502":2,"503":3,"504":3,"505":3,"506":2,"507":1,"508":5,"510":6,"511":1,"512":1,"513":3,"514":1}}],["wallets",{"0":{"150":1,"165":1,"202":1,"312":1,"342":1,"346":1,"350":1,"364":1,"377":1},"1":{"166":1,"203":1,"313":1,"314":1,"315":1,"316":1,"317":1,"318":1,"319":1,"320":1,"321":1,"343":1,"344":1,"345":1,"346":1,"347":2,"348":1,"365":1,"366":1,"367":1,"378":1},"2":{"20":2,"51":2,"52":1,"61":1,"76":1,"77":1,"79":1,"85":1,"90":1,"91":1,"147":1,"150":1,"152":1,"158":1,"165":3,"166":3,"191":1,"194":2,"196":1,"202":1,"203":1,"209":1,"217":1,"241":1,"243":1,"314":1,"342":2,"346":3,"350":1,"351":1,"352":1,"353":5,"355":3,"367":1,"377":1,"378":1,"386":2,"387":1,"388":1,"391":1,"397":1,"398":1,"406":1,"408":1,"417":1,"422":1,"425":1,"426":1,"429":2,"431":2,"500":1}}],["walkthrough",{"0":{"340":1},"2":{"23":1}}],["walk",{"2":{"3":1,"79":1,"83":1,"164":1}}],["wip",{"2":{"133":2,"136":1}}],["width=",{"2":{"435":1}}],["width",{"2":{"128":1}}],["wish",{"2":{"102":1,"105":1,"111":1,"117":1,"125":1,"130":1,"146":2,"305":1,"310":1,"443":1}}],["windows",{"2":{"97":2,"133":2,"142":1}}],["window",{"2":{"96":1,"97":1,"99":1,"104":2,"106":2,"244":1,"253":1}}],["will",{"2":{"2":3,"3":4,"11":2,"13":1,"19":4,"20":1,"32":1,"43":1,"44":2,"45":1,"50":2,"58":1,"75":1,"76":2,"77":2,"78":2,"79":1,"83":1,"86":1,"87":1,"91":1,"93":2,"94":1,"101":1,"104":3,"105":2,"106":5,"107":3,"109":1,"110":4,"112":2,"118":1,"125":1,"126":1,"128":4,"134":2,"135":1,"138":1,"139":2,"140":3,"143":1,"145":1,"146":1,"149":3,"157":2,"158":1,"159":2,"166":1,"168":2,"188":1,"189":1,"190":2,"191":1,"197":1,"198":1,"203":1,"210":1,"211":1,"219":1,"220":1,"228":1,"229":1,"236":3,"243":3,"244":2,"246":1,"248":1,"250":1,"252":1,"253":1,"254":2,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"263":1,"266":1,"273":1,"283":1,"284":1,"285":2,"302":3,"303":1,"304":1,"311":2,"313":1,"319":4,"320":4,"327":1,"329":1,"332":4,"333":2,"341":2,"352":3,"354":1,"357":1,"362":2,"367":2,"370":1,"378":1,"388":1,"389":1,"397":2,"400":1,"403":1,"409":2,"410":2,"411":1,"428":1,"429":1,"431":1,"434":2,"438":1,"439":1,"440":4,"445":1,"450":1,"452":3,"455":1,"463":1,"464":1,"465":1,"466":1,"467":1,"470":1,"472":1,"492":1,"495":3,"506":1}}],["without",{"2":{"20":2,"52":1,"102":1,"105":1,"111":1,"117":1,"126":1,"165":1,"243":1,"244":2,"274":1,"275":1,"281":2,"307":1,"397":1,"404":1,"438":1,"469":2,"491":1,"507":1,"508":1,"514":2}}],["within",{"2":{"3":1,"11":1,"85":1,"91":1,"102":1,"105":2,"111":1,"117":1,"145":1,"146":1,"163":1,"203":1,"243":1,"346":1,"352":1,"378":1,"428":1,"429":1,"445":1,"459":1}}],["with",{"0":{"12":1,"83":1,"101":1,"179":1,"188":1,"189":1,"190":1,"234":1,"238":1,"244":1,"264":1,"265":1,"276":1,"281":1,"358":1,"493":1,"497":1,"509":1,"514":1},"1":{"84":1,"180":1,"235":1,"236":1,"237":1,"239":1,"240":1,"241":1,"242":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"359":1,"360":1,"361":1,"494":1,"495":1,"496":1,"498":1,"499":1,"500":1,"501":1,"510":1,"511":1,"512":1,"513":1,"514":1,"515":1},"2":{"0":2,"3":2,"4":1,"5":1,"6":2,"11":2,"14":1,"15":4,"19":4,"20":4,"23":1,"25":1,"31":1,"33":1,"35":1,"38":1,"39":3,"41":1,"47":1,"50":2,"52":1,"55":1,"57":1,"58":1,"59":1,"60":1,"66":2,"70":1,"79":1,"80":1,"82":1,"84":1,"85":1,"90":2,"91":3,"92":1,"93":4,"94":2,"95":1,"99":4,"101":5,"102":3,"104":3,"105":4,"106":2,"107":1,"110":3,"111":2,"115":2,"116":1,"117":3,"118":2,"120":5,"122":5,"124":5,"125":4,"128":2,"131":1,"133":2,"134":2,"135":3,"140":1,"148":1,"152":1,"155":1,"156":1,"157":1,"159":1,"161":1,"163":3,"164":1,"165":2,"166":1,"168":1,"179":1,"180":1,"181":1,"182":1,"184":1,"188":2,"189":2,"190":6,"191":4,"192":1,"199":4,"201":2,"202":2,"203":3,"204":1,"205":2,"206":1,"213":4,"214":2,"215":1,"222":1,"231":2,"232":2,"236":2,"237":2,"240":1,"242":2,"243":4,"244":1,"245":1,"255":1,"257":2,"258":2,"267":1,"270":1,"271":1,"272":1,"275":1,"279":1,"284":1,"285":1,"286":1,"303":1,"304":1,"307":2,"308":1,"309":2,"310":2,"314":2,"321":1,"323":1,"325":1,"332":1,"334":1,"335":1,"338":1,"340":1,"341":1,"351":2,"352":3,"353":2,"354":1,"355":2,"357":1,"359":1,"360":1,"361":1,"362":1,"363":1,"364":3,"365":1,"369":1,"370":1,"374":1,"375":1,"377":2,"378":3,"379":1,"380":1,"388":1,"409":1,"411":2,"412":1,"413":1,"414":1,"416":1,"425":1,"429":1,"431":1,"432":1,"433":2,"434":3,"435":1,"437":1,"441":1,"442":1,"445":2,"449":4,"452":1,"455":1,"458":2,"459":1,"465":2,"466":2,"467":1,"469":1,"472":1,"473":1,"475":2,"490":1,"492":1,"495":2,"496":2,"499":1,"501":2,"503":1,"504":1,"505":1,"508":1,"512":1}}],["weight",{"2":{"397":1,"413":2,"414":2,"415":4,"416":4,"418":4,"423":1,"427":3,"428":3,"429":10,"430":2}}],["weights",{"2":{"392":1,"396":1,"412":1,"423":1,"424":1,"426":1}}],["weighted",{"2":{"44":1}}],["weeds",{"2":{"285":1}}],["week",{"2":{"249":1}}],["were",{"2":{"275":1,"304":1,"353":1,"478":1,"508":1}}],["weth",{"2":{"52":1}}],["websocketpublicclient",{"2":{"207":1}}],["websocketprovider",{"2":{"190":1}}],["webhookeventfilter",{"2":{"180":1}}],["webhooklistener",{"2":{"180":1}}],["webhook",{"0":{"178":1,"180":1},"1":{"179":1,"180":1},"2":{"180":5}}],["webhooks",{"0":{"179":1},"1":{"180":1},"2":{"22":1,"179":1}}],["web2",{"2":{"165":2,"243":1}}],["webgl",{"0":{"100":1},"2":{"95":1,"108":1,"357":1}}],["webapp",{"2":{"15":1,"25":1,"32":2,"38":1,"39":2,"44":1,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":1}}],["webapps",{"2":{"14":1}}],["web",{"0":{"9":1,"10":1,"16":1,"28":1,"48":1,"369":1},"2":{"15":1,"33":1,"35":1,"47":1,"135":1,"143":3,"163":1,"243":3,"351":1,"357":1,"369":1,"370":1}}],["web3modal",{"0":{"231":1},"1":{"232":1,"233":1},"2":{"191":1,"231":3,"232":1,"233":2,"244":1,"264":1}}],["web3",{"0":{"202":1,"215":1,"222":1,"264":1,"377":1},"1":{"203":1,"216":1,"217":1,"218":1,"219":1,"220":1,"221":1,"223":1,"224":1,"225":1,"226":1,"227":1,"228":1,"229":1,"230":1,"378":1},"2":{"0":1,"20":1,"77":1,"85":1,"90":2,"91":2,"165":2,"191":3,"202":2,"203":2,"215":3,"216":2,"217":1,"221":1,"222":3,"223":1,"225":2,"226":1,"230":1,"243":6,"267":1,"329":1,"370":1,"377":2,"378":2}}],["we",{"2":{"0":1,"13":1,"15":1,"16":1,"19":2,"20":1,"28":1,"31":2,"33":2,"35":1,"41":2,"43":1,"45":2,"46":1,"47":1,"57":1,"83":1,"93":2,"95":2,"101":1,"102":2,"105":3,"106":3,"107":1,"109":1,"110":1,"112":2,"114":1,"115":2,"116":2,"120":1,"122":1,"123":1,"124":1,"125":2,"129":1,"131":3,"133":1,"140":1,"158":1,"163":1,"164":1,"165":2,"175":2,"177":2,"189":2,"190":3,"236":1,"243":1,"284":1,"303":2,"305":2,"307":1,"309":1,"310":2,"351":1,"367":1,"443":3,"466":2,"495":1}}],["well",{"2":{"0":1,"15":1,"31":1,"32":1,"35":1,"41":1,"47":1,"125":1,"143":1,"162":1,"165":2,"242":1,"273":1,"303":2,"305":2,"310":1,"357":1,"367":1,"409":1,"410":1,"466":1,"489":1,"492":1,"501":1,"506":1}}],["ts",{"2":{"435":1,"440":1,"476":1,"478":1}}],["tsx",{"2":{"190":1,"435":1}}],["tsuccesscallback",{"2":{"131":1}}],["tx",{"2":{"439":3,"440":4,"446":1,"448":1,"459":1}}],["txnreceipt",{"2":{"476":1}}],["txnresponse",{"2":{"270":4,"271":4,"272":4,"273":2,"503":4,"504":4,"505":4,"506":2}}],["txnhash",{"2":{"185":1}}],["txhash",{"2":{"186":1,"439":2,"476":1}}],["tx5drvi",{"2":{"32":1}}],["turn",{"2":{"190":1}}],["turned",{"2":{"188":1}}],["tutorial",{"2":{"155":1}}],["tunisia",{"2":{"13":1}}],["tfunction",{"2":{"131":2}}],["tfunctions",{"2":{"131":2}}],["typically",{"2":{"117":1,"236":1,"275":1,"495":1,"508":1}}],["typical",{"2":{"117":1}}],["typefielddata",{"2":{"459":1}}],["typeno",{"2":{"473":1}}],["typenopacket",{"2":{"450":1}}],["typenosignaturessignature",{"2":{"450":1}}],["typedescriptiondelayedencodedataabistringthe",{"2":{"459":1}}],["typedefault",{"2":{"78":1}}],["typedefaultbooleantrue",{"2":{"75":1}}],["typedefaultstringundefined",{"2":{"73":1,"74":1}}],["typedefaultstringcenter",{"2":{"71":1}}],["typedefaultstring",{"2":{"70":1,"76":1,"77":1}}],["typeddata",{"2":{"410":2}}],["typed",{"2":{"410":1}}],["typescript",{"0":{"358":1},"1":{"359":1,"360":1,"361":1},"2":{"15":2,"35":1,"47":1,"50":1,"57":2,"161":1,"165":3,"237":1,"239":1,"355":1,"357":1,"359":1,"496":1,"498":1}}],["types",{"0":{"474":1},"1":{"475":1,"476":1,"477":1,"478":1,"479":1,"480":1,"481":1,"482":1,"483":1,"484":1,"485":1,"486":1,"487":1,"488":1},"2":{"3":1,"117":1,"302":1,"426":1}}],["type",{"0":{"304":1,"451":1},"2":{"3":1,"25":2,"32":2,"38":2,"39":4,"43":8,"44":2,"45":2,"52":4,"126":2,"128":1,"130":1,"133":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":2,"183":1,"185":1,"244":1,"305":1,"339":1,"410":3,"439":1,"440":1,"455":1,"456":1,"457":1,"458":1,"459":12,"470":1,"473":2,"476":1,"478":1}}],["tmp",{"2":{"104":1,"106":1,"418":4}}],["twitter",{"2":{"433":1}}],["twitch",{"2":{"76":1,"257":1}}],["two",{"2":{"58":1,"93":1,"165":1,"270":1,"271":1,"272":1,"285":1,"331":1,"342":1,"352":1,"364":2,"380":1,"441":1,"461":1,"466":1,"490":1,"503":1,"504":1,"505":1}}],["tweaking",{"2":{"32":1}}],["t",{"2":{"50":1,"59":1,"81":1,"99":2,"104":1,"106":2,"108":1,"115":2,"116":1,"125":1,"128":2,"147":1,"184":1,"266":1,"269":1,"303":1,"305":3,"351":2,"353":1,"361":1,"386":1,"391":1,"397":1,"398":1,"402":1,"403":1,"406":1,"417":1,"419":1,"432":1,"433":1,"443":1,"466":1,"502":1}}],["tnqwlujz",{"2":{"32":1}}],["tip",{"2":{"24":1,"31":1,"37":1,"168":1,"192":1,"205":1,"215":1,"231":1,"244":1}}],["tips",{"0":{"19":1},"2":{"367":1}}],["timestamps",{"0":{"471":1},"2":{"471":1}}],["times",{"2":{"44":1,"115":1,"158":1}}],["time",{"0":{"333":1,"442":1},"2":{"11":1,"19":2,"20":2,"32":1,"107":1,"115":1,"140":1,"148":2,"149":1,"150":1,"163":1,"183":1,"236":1,"274":1,"275":1,"303":1,"305":1,"333":1,"340":1,"353":1,"364":1,"387":1,"403":1,"417":1,"434":1,"442":1,"443":1,"490":1,"495":1,"507":1,"508":1}}],["timezones",{"2":{"0":1}}],["tenant",{"2":{"490":3}}],["technology",{"2":{"354":1}}],["technique",{"2":{"199":1,"213":1}}],["technically",{"2":{"43":1}}],["technical",{"2":{"16":1,"17":1,"45":1,"461":1}}],["text",{"2":{"133":1,"236":1,"495":1}}],["textmeshpro",{"2":{"104":1,"106":1}}],["tested",{"2":{"307":1}}],["test",{"2":{"59":1,"128":1,"357":3,"360":1}}],["testing",{"0":{"40":1},"2":{"20":1,"23":1,"89":1,"108":1}}],["templates",{"2":{"164":1,"166":1}}],["template",{"0":{"55":1,"338":1,"374":1},"2":{"55":1,"105":3,"164":1,"338":1,"374":1}}],["terms",{"2":{"13":1,"45":1,"367":1}}],["team",{"2":{"0":3,"4":1,"25":1,"38":1,"39":2,"58":1,"61":1,"110":1,"138":1,"140":1,"168":1,"191":1,"241":1,"351":1,"491":1,"500":1}}],["tries",{"2":{"446":1}}],["trigger",{"0":{"445":1},"1":{"446":1},"2":{"445":1,"472":1,"492":1}}],["triggering",{"0":{"87":1},"2":{"83":1}}],["triggered",{"2":{"66":1,"244":1,"446":3,"447":2,"448":1,"475":1,"478":1,"480":1,"489":1}}],["triggertransaction",{"2":{"66":1}}],["triggercheckout",{"2":{"64":2}}],["truly",{"2":{"355":1}}],["trusted",{"2":{"354":3,"442":1,"443":1,"444":1}}],["trust",{"0":{"489":1,"490":1},"1":{"490":1,"491":1,"492":1},"2":{"237":1,"345":1,"351":1,"489":2,"490":7,"491":2,"492":2,"496":1}}],["true",{"0":{"400":1},"2":{"17":2,"19":2,"24":1,"37":1,"52":1,"87":1,"88":1,"99":3,"168":4,"169":3,"171":1,"173":3,"175":2,"177":3,"183":1,"186":1,"188":1,"190":1,"207":1,"236":2,"244":1,"250":1,"252":1,"253":1,"254":1,"263":1,"339":1,"398":2,"403":1,"404":1,"436":1,"440":1,"444":2,"445":4,"446":2,"448":2,"457":1,"459":1,"464":1,"476":2,"478":1,"495":2}}],["tranfereth",{"2":{"311":1}}],["transparently",{"2":{"467":1}}],["transports",{"2":{"81":1,"85":3,"86":3}}],["transact",{"2":{"52":1}}],["transactionindex",{"2":{"476":4}}],["transactionno",{"2":{"475":1}}],["transactionnonativereceiptanynative",{"2":{"475":1}}],["transactionnoreceiptsmetatxnreceipt",{"2":{"475":1}}],["transactionnoreceiptmetatxnreceiptreceipt",{"2":{"475":1}}],["transactionnorevertreasonstring",{"2":{"475":1}}],["transactionnorequestsendtransactionpayloadthe",{"2":{"475":1}}],["transactionnometatxhashstringhash",{"2":{"475":1}}],["transactionnowalletstringaddress",{"2":{"454":1}}],["transactionyessimulationssimulateresult",{"2":{"475":1}}],["transactionyes",{"2":{"455":1,"457":1,"458":1}}],["transactionfailed",{"2":{"440":1,"478":2}}],["transactionreceipt",{"2":{"301":2,"303":4,"309":2,"311":1,"318":2,"320":4,"439":1,"475":1,"476":1}}],["transactionreturn",{"2":{"117":1}}],["transactioncreator",{"2":{"303":4,"309":2}}],["transactioncount",{"0":{"300":1},"2":{"300":2}}],["transactioncall",{"2":{"292":2}}],["transactionbyhash",{"0":{"299":1},"2":{"299":1}}],["transaction2",{"2":{"269":2,"270":2,"271":2,"272":2,"502":2,"503":2,"504":2,"505":2}}],["transaction1",{"2":{"269":2,"270":2,"271":2,"272":2,"502":2,"503":2,"504":2,"505":2}}],["transactionhash",{"2":{"296":1,"299":1,"301":1,"317":1,"476":4}}],["transactionhashes",{"2":{"173":1,"319":1}}],["transactionhistoryfilter",{"2":{"173":1,"175":1,"177":1}}],["transactionhistory",{"2":{"173":2,"175":2}}],["transaction",{"0":{"51":1,"152":1,"172":1,"173":1,"175":1,"185":1,"407":1,"438":1,"439":1,"440":1,"454":1,"455":1,"475":1,"478":1},"1":{"173":1,"439":1,"440":1,"455":1,"456":1,"457":1,"458":1,"459":1,"476":1,"477":1,"479":1},"2":{"22":2,"50":3,"51":2,"52":2,"66":1,"102":1,"112":1,"117":3,"118":4,"119":2,"120":1,"121":2,"122":1,"123":4,"124":1,"125":4,"126":6,"147":1,"152":1,"158":1,"165":1,"173":7,"175":4,"184":1,"185":2,"186":6,"242":1,"269":1,"270":4,"271":4,"272":4,"273":4,"292":1,"296":3,"299":4,"301":1,"303":4,"309":3,"311":1,"317":1,"318":1,"319":3,"320":2,"330":1,"334":1,"357":1,"389":1,"392":1,"397":1,"400":2,"402":3,"403":4,"404":1,"424":1,"438":3,"439":7,"440":3,"446":1,"447":1,"452":1,"454":2,"455":1,"459":3,"475":5,"476":1,"477":1,"478":4,"479":1,"488":2,"501":1,"502":1,"503":4,"504":4,"505":4,"506":4}}],["transactions",{"0":{"126":1,"151":1,"186":1,"269":1,"273":1,"502":1,"506":1},"2":{"20":2,"22":1,"50":10,"51":2,"52":4,"117":1,"126":5,"151":1,"152":1,"165":1,"179":1,"184":4,"186":5,"269":4,"270":1,"271":1,"272":1,"300":1,"319":3,"320":3,"347":1,"352":2,"398":1,"403":2,"404":1,"408":1,"422":1,"433":1,"438":1,"439":1,"440":3,"453":1,"454":1,"455":1,"459":2,"476":1,"478":2,"502":4,"503":1,"504":1,"505":1}}],["transferredyesdatastringadditional",{"2":{"455":1}}],["transferring",{"2":{"402":1}}],["transfereth",{"2":{"311":1}}],["transfertransaction",{"2":{"311":2}}],["transfers",{"0":{"311":1},"2":{"120":1,"122":1,"124":1,"270":2,"271":2,"272":2,"503":2,"504":2,"505":2}}],["transfer",{"2":{"52":1,"186":1,"269":2,"270":1,"271":7,"272":1,"302":2,"303":4,"309":1,"311":1,"502":2,"503":1,"504":7,"505":1}}],["tradeoff",{"2":{"367":1}}],["trades",{"2":{"181":1}}],["traditional",{"2":{"165":1,"351":1,"363":1}}],["trading",{"2":{"32":1,"183":1}}],["trait",{"2":{"43":8}}],["trackers",{"2":{"237":2,"496":2}}],["tracking",{"2":{"181":1}}],["track",{"2":{"19":1,"175":1}}],["trees",{"2":{"428":1}}],["tree",{"0":{"426":1},"1":{"427":1,"428":1,"429":1},"2":{"20":1,"423":1,"426":3,"428":1,"429":3,"430":4}}],["trying",{"2":{"91":1,"203":1,"378":1}}],["try",{"0":{"6":1,"54":1,"337":1,"356":1,"373":1},"2":{"32":1,"54":1,"145":1,"168":1,"169":1,"171":1,"173":1,"175":1,"192":2,"205":2,"215":2,"231":2,"237":1,"307":2,"356":1,"357":2,"369":1,"370":1,"373":1,"435":1,"440":2,"496":1}}],["troubles",{"2":{"0":1}}],["tampered",{"2":{"351":1,"466":1}}],["tailored",{"2":{"267":1}}],["taking",{"2":{"266":1}}],["taken",{"2":{"403":1}}],["takes",{"2":{"244":1,"431":1,"445":1}}],["take",{"2":{"46":1,"92":1,"102":1,"111":1,"115":1,"117":1,"145":2,"163":1,"199":1,"204":1,"213":1,"302":1,"340":1,"342":1,"352":1,"363":1,"379":1,"468":1}}],["tag",{"2":{"261":1}}],["tablet",{"2":{"369":1,"370":1}}],["tab",{"2":{"145":3,"149":1,"327":1}}],["tanstack",{"2":{"84":3,"85":1,"86":1}}],["tasks",{"2":{"307":1}}],["task",{"2":{"39":1,"102":2,"111":2,"117":2,"303":1}}],["taskid",{"2":{"39":3}}],["targets",{"2":{"93":1,"165":1}}],["target",{"2":{"15":1,"25":1,"32":1,"35":1,"38":1,"39":2,"47":1,"168":1}}],["talking",{"2":{"0":1}}],["tackle",{"2":{"0":1}}],["thought",{"2":{"117":1}}],["those",{"2":{"52":1,"146":1,"163":1,"165":1,"267":1,"375":1}}],["than",{"2":{"116":1,"237":1,"242":1,"496":1,"501":1}}],["that",{"2":{"0":1,"2":1,"3":3,"5":1,"11":2,"13":1,"15":1,"19":1,"20":7,"41":1,"43":2,"44":2,"45":2,"50":1,"51":1,"52":5,"59":1,"78":1,"89":1,"93":1,"102":1,"104":1,"105":3,"106":3,"107":1,"110":1,"112":1,"115":1,"117":1,"118":1,"119":1,"120":2,"122":2,"124":2,"125":2,"126":1,"128":1,"130":1,"139":1,"145":4,"146":1,"149":2,"151":1,"155":1,"156":1,"158":2,"161":1,"165":1,"168":1,"185":1,"190":3,"199":1,"210":1,"213":1,"219":1,"222":1,"228":1,"243":2,"244":1,"249":1,"257":1,"266":2,"267":1,"273":1,"275":2,"284":1,"302":1,"303":1,"304":1,"307":3,"314":2,"319":1,"320":1,"333":1,"335":1,"340":1,"341":1,"346":2,"351":1,"352":3,"353":1,"354":5,"355":3,"357":1,"361":1,"362":1,"363":3,"364":1,"366":1,"367":2,"375":1,"388":1,"389":1,"390":1,"395":1,"396":1,"397":2,"398":1,"400":1,"403":1,"411":2,"413":1,"417":1,"422":1,"424":1,"425":1,"428":1,"429":1,"430":1,"434":2,"435":2,"436":1,"438":1,"439":2,"442":1,"445":1,"446":1,"449":4,"450":3,"452":3,"455":1,"457":1,"460":1,"461":1,"465":1,"466":3,"475":2,"478":1,"490":1,"491":1,"492":1,"506":1,"508":2}}],["throwing",{"2":{"307":1}}],["throw",{"2":{"307":2}}],["throughout",{"2":{"314":1}}],["through",{"2":{"1":1,"3":1,"14":1,"79":1,"83":1,"93":1,"125":1,"128":1,"129":1,"133":2,"164":1,"188":1,"190":1,"192":1,"205":1,"215":1,"216":1,"243":1,"275":1,"355":1,"409":2,"410":2,"411":1,"441":1,"464":1,"467":1,"508":1}}],["threshold",{"0":{"424":1},"2":{"367":1,"391":1,"392":1,"396":1,"397":1,"409":1,"410":1,"411":1,"412":1,"415":2,"416":2,"418":2,"423":1,"424":2,"427":1,"429":5,"430":2}}],["threat",{"0":{"353":1}}],["threats",{"2":{"350":1}}],["threads",{"2":{"99":1}}],["three",{"2":{"51":1,"364":3}}],["thus",{"2":{"50":1,"470":1}}],["thing",{"2":{"131":1}}],["things",{"2":{"19":1,"51":1,"131":1,"285":1,"324":1,"429":2}}],["think",{"2":{"61":1,"241":1,"243":1,"267":1,"500":1}}],["third",{"2":{"11":1,"105":1,"351":1,"354":3}}],["this",{"2":{"2":5,"3":2,"11":1,"13":1,"16":1,"19":3,"20":2,"25":1,"28":1,"38":1,"43":2,"45":1,"58":1,"78":1,"79":1,"82":1,"83":1,"86":1,"93":5,"95":1,"99":3,"101":3,"102":2,"104":5,"105":4,"106":3,"107":1,"109":1,"110":3,"111":1,"112":2,"115":2,"117":1,"118":3,"119":2,"120":1,"121":1,"122":1,"123":1,"124":1,"125":7,"128":3,"133":16,"134":3,"138":3,"139":1,"140":1,"143":1,"145":2,"146":4,"157":1,"158":1,"159":1,"165":1,"166":1,"168":2,"175":2,"177":2,"184":1,"186":2,"188":2,"189":3,"190":5,"191":1,"196":1,"198":1,"199":2,"209":1,"211":1,"213":2,"236":7,"243":5,"244":1,"248":1,"267":1,"274":1,"279":2,"283":2,"285":1,"302":1,"310":1,"311":1,"312":1,"313":1,"323":1,"324":2,"325":2,"326":1,"327":2,"331":3,"332":3,"333":3,"335":1,"340":1,"346":1,"351":3,"352":3,"353":4,"354":1,"355":1,"364":1,"366":3,"367":1,"370":1,"375":1,"388":1,"389":2,"391":2,"392":1,"396":1,"397":3,"398":2,"399":1,"400":1,"403":1,"405":1,"406":2,"409":1,"410":1,"411":1,"415":1,"417":1,"420":1,"428":2,"429":3,"430":1,"432":1,"434":1,"436":1,"439":1,"440":5,"442":1,"443":1,"444":1,"445":1,"446":1,"448":1,"452":3,"453":1,"454":1,"458":1,"459":3,"460":1,"466":2,"467":1,"472":1,"475":2,"478":3,"489":1,"490":1,"491":2,"492":1,"495":7,"507":1,"512":2}}],["theme=",{"2":{"99":2}}],["theme",{"0":{"255":1},"2":{"70":1,"244":2,"255":2}}],["themselves",{"2":{"46":1,"351":1,"367":1,"399":1}}],["them",{"2":{"44":1,"50":1,"52":1,"91":1,"101":1,"112":1,"121":1,"129":1,"146":1,"163":1,"203":1,"275":1,"284":1,"307":1,"319":1,"320":1,"350":1,"367":1,"378":1,"450":1,"452":1,"491":1,"508":1}}],["they",{"0":{"468":1},"2":{"19":1,"43":1,"45":1,"46":1,"50":1,"52":1,"76":1,"77":1,"106":1,"125":1,"130":1,"236":1,"244":1,"254":2,"266":1,"275":3,"303":1,"307":1,"308":1,"346":1,"354":1,"357":1,"364":1,"420":1,"429":2,"440":1,"450":1,"467":1,"471":1,"490":1,"495":1,"508":3}}],["then",{"2":{"17":1,"19":1,"28":1,"29":1,"49":1,"86":1,"96":2,"97":2,"129":1,"138":1,"145":1,"146":3,"160":1,"163":1,"190":2,"194":1,"207":1,"236":3,"237":1,"242":1,"243":1,"252":1,"275":1,"318":1,"320":1,"326":1,"335":1,"398":1,"425":1,"433":1,"434":1,"495":3,"496":1,"501":1,"508":1}}],["theses",{"2":{"157":1}}],["these",{"0":{"163":1},"2":{"11":1,"63":1,"68":1,"85":1,"105":2,"106":1,"108":1,"110":1,"112":1,"115":1,"126":1,"131":1,"133":2,"138":1,"143":2,"144":1,"163":2,"284":2,"309":2,"324":2,"346":1,"352":1,"353":1,"355":1,"357":2,"367":1,"380":1,"389":1,"397":1,"420":1,"464":1,"470":1,"471":1}}],["their",{"2":{"11":1,"43":1,"46":1,"50":1,"91":1,"95":1,"125":1,"139":1,"189":1,"190":1,"203":1,"236":3,"243":3,"244":1,"266":2,"274":1,"275":3,"309":1,"334":1,"341":1,"352":1,"362":1,"363":3,"364":5,"365":3,"366":1,"367":4,"378":1,"412":1,"413":1,"423":1,"428":1,"442":1,"443":1,"459":1,"467":1,"468":1,"490":1,"495":3,"507":1,"508":3}}],["therefore",{"2":{"102":1,"188":1,"232":1,"417":1}}],["there",{"2":{"3":1,"43":1,"95":1,"102":1,"105":2,"106":1,"115":1,"145":1,"183":1,"190":1,"199":1,"213":1,"284":1,"285":1,"312":1,"357":1,"398":1,"399":1,"490":1}}],["the",{"0":{"13":1,"64":1,"65":1,"85":1,"86":1,"87":1,"88":1,"163":1,"173":1,"175":1,"189":1,"190":1,"235":1,"265":1,"327":1,"332":1,"405":1,"406":1,"416":1,"462":1,"464":1,"465":1,"466":1,"494":1},"1":{"66":1,"67":1,"406":1,"463":1,"464":1,"465":1},"2":{"0":6,"1":4,"2":7,"3":13,"4":2,"5":1,"6":8,"11":4,"13":2,"14":4,"15":12,"16":2,"17":2,"18":2,"19":11,"20":21,"21":1,"22":5,"23":3,"24":1,"25":1,"27":2,"30":2,"31":8,"32":14,"33":4,"34":5,"35":8,"37":1,"38":2,"39":6,"41":5,"43":7,"44":6,"45":8,"46":3,"47":10,"50":10,"51":1,"52":9,"57":4,"58":2,"59":2,"60":1,"61":1,"62":1,"63":4,"64":2,"65":2,"66":1,"67":3,"68":3,"70":5,"71":4,"72":2,"73":2,"74":2,"75":2,"76":7,"77":7,"78":5,"79":1,"80":3,"81":4,"82":2,"83":2,"84":5,"85":4,"86":4,"87":6,"88":2,"89":1,"90":3,"91":2,"92":2,"93":7,"94":8,"95":4,"96":5,"97":5,"99":10,"101":4,"102":7,"104":3,"105":16,"106":11,"107":1,"109":5,"110":13,"111":4,"112":5,"113":1,"114":1,"115":16,"116":1,"117":5,"118":6,"119":5,"120":4,"121":1,"122":4,"123":4,"124":4,"125":24,"126":5,"128":14,"129":4,"130":11,"133":10,"134":4,"135":3,"138":3,"139":1,"140":3,"142":1,"143":4,"145":29,"146":15,"147":1,"148":3,"149":8,"150":2,"151":2,"152":2,"154":1,"155":5,"156":2,"158":4,"160":3,"161":1,"163":4,"164":4,"165":12,"166":2,"168":8,"169":5,"171":2,"173":4,"175":6,"177":8,"179":1,"180":4,"181":2,"183":29,"184":2,"185":6,"186":8,"188":7,"189":13,"190":24,"191":5,"192":2,"193":2,"194":3,"196":1,"197":5,"198":1,"199":9,"200":3,"201":2,"202":3,"203":2,"204":2,"205":2,"206":6,"207":3,"209":1,"210":1,"211":1,"212":3,"213":11,"214":3,"215":2,"216":1,"219":2,"220":2,"222":2,"223":2,"225":1,"226":2,"228":2,"229":2,"231":1,"232":3,"233":1,"235":1,"236":12,"237":8,"239":1,"240":1,"241":1,"242":5,"243":7,"244":11,"245":1,"246":1,"248":2,"250":2,"253":3,"254":1,"255":2,"256":1,"257":1,"258":1,"259":1,"261":5,"262":2,"263":6,"264":1,"266":25,"267":3,"269":2,"270":4,"271":2,"272":4,"273":6,"275":4,"278":1,"279":2,"280":2,"281":1,"282":4,"283":4,"284":2,"285":13,"286":1,"287":1,"288":1,"289":1,"290":3,"291":1,"292":2,"294":3,"295":1,"296":2,"298":1,"300":1,"301":1,"302":4,"303":12,"304":2,"305":6,"306":1,"307":4,"308":2,"309":5,"310":2,"311":4,"312":3,"314":3,"315":2,"316":2,"317":2,"318":3,"319":8,"320":9,"321":8,"324":1,"325":3,"326":2,"327":2,"328":2,"330":2,"331":4,"332":5,"333":5,"334":2,"335":4,"339":2,"340":4,"341":5,"342":2,"343":1,"346":3,"350":4,"351":1,"352":11,"353":11,"354":30,"355":6,"356":2,"357":5,"359":1,"360":3,"361":2,"362":5,"363":7,"364":9,"365":1,"366":3,"367":9,"370":1,"373":1,"375":2,"377":3,"378":2,"379":2,"386":8,"387":2,"388":8,"389":4,"390":5,"391":11,"392":6,"394":2,"395":3,"396":3,"397":17,"398":16,"399":4,"400":3,"401":4,"402":3,"403":14,"404":3,"405":6,"406":8,"409":7,"410":8,"411":13,"414":2,"416":2,"417":11,"419":8,"420":11,"422":6,"423":4,"424":6,"425":4,"426":3,"427":5,"428":5,"429":14,"430":8,"431":23,"432":2,"433":4,"434":13,"435":18,"436":1,"437":2,"438":1,"439":13,"440":8,"441":1,"443":1,"444":3,"445":9,"446":5,"447":1,"448":3,"449":12,"450":9,"451":3,"452":11,"453":4,"454":5,"455":1,"457":2,"458":2,"459":13,"460":6,"461":4,"463":2,"464":3,"465":15,"466":11,"467":3,"468":7,"469":12,"470":5,"471":3,"472":1,"473":3,"475":29,"477":1,"478":9,"479":1,"480":2,"482":1,"483":2,"485":1,"486":2,"487":1,"488":1,"489":3,"490":16,"491":2,"492":11,"494":1,"495":12,"496":8,"498":1,"499":1,"500":1,"501":5,"502":2,"503":4,"504":2,"505":4,"506":6,"508":4,"511":1,"512":2,"513":2,"514":1,"515":4}}],["tolerance",{"2":{"461":1}}],["tostringthe",{"2":{"459":1}}],["torus",{"0":{"367":1},"2":{"364":3,"367":7}}],["toggle",{"2":{"168":2,"169":1,"173":1,"177":1}}],["toggling",{"2":{"149":1}}],["together",{"2":{"125":1,"126":2,"129":1,"308":1,"319":1,"320":1,"429":2}}],["touch",{"2":{"140":1}}],["toaddress",{"2":{"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":4,"303":4,"309":2}}],["tower",{"2":{"105":2}}],["toying",{"2":{"70":1}}],["took",{"2":{"366":1}}],["too",{"2":{"31":1,"191":1,"192":1,"205":1,"215":1,"231":1,"243":2,"244":1}}],["toolkit",{"2":{"61":1,"90":1,"202":1,"241":1,"377":1,"500":1}}],["tools=",{"2":{"99":2}}],["tools",{"0":{"116":1},"2":{"61":1,"90":1,"99":2,"116":1,"191":1,"202":1,"241":1,"377":1,"463":1,"466":1,"500":1}}],["tool",{"2":{"20":1}}],["total",{"0":{"177":1},"2":{"22":3,"149":1,"151":1,"152":1,"177":1,"413":1,"428":1,"429":2}}],["topics",{"2":{"439":2,"475":1,"476":5}}],["top",{"0":{"423":1},"1":{"424":1,"425":1,"426":1,"427":1,"428":1,"429":1},"2":{"20":1,"68":1,"71":3,"110":1,"115":1,"145":1,"149":1,"339":1}}],["tokennovals",{"2":{"458":1}}],["tokenyesproof",{"2":{"452":1}}],["tokenresponse",{"2":{"435":2}}],["tokenbaseuri",{"2":{"332":2}}],["tokenbalances",{"2":{"16":1,"17":1,"168":4,"171":3}}],["token2id",{"2":{"270":1,"503":1}}],["token1id",{"2":{"270":1,"503":1}}],["token4id",{"2":{"269":1,"502":1}}],["tokencontract",{"2":{"183":1}}],["tokendetails",{"2":{"177":4}}],["tokenuri",{"2":{"43":2}}],["tokenmetadata",{"2":{"38":2,"39":1}}],["tokenidasstring",{"2":{"121":1,"123":1,"126":2}}],["tokenids",{"2":{"38":3,"39":3,"180":2,"182":2,"183":1,"339":1}}],["tokenid",{"2":{"3":4,"32":1,"34":3,"43":1,"44":1,"52":3,"67":1,"124":1,"183":2,"269":1,"270":1,"272":4,"333":2,"502":1,"503":1,"505":4}}],["tokens",{"0":{"3":1,"7":1,"167":1,"168":1,"176":1,"177":1,"270":1,"271":1,"272":1,"309":1,"503":1,"504":1,"505":1},"1":{"168":1,"169":1,"177":1},"2":{"3":8,"19":1,"20":4,"22":4,"24":1,"32":4,"34":6,"36":1,"37":1,"38":1,"43":2,"44":1,"46":3,"50":1,"52":6,"119":1,"120":1,"121":1,"122":1,"123":2,"124":1,"168":3,"171":1,"177":1,"183":2,"263":1,"309":1,"310":1,"331":1,"333":1,"334":2,"335":4,"347":1,"456":1,"458":1,"492":1}}],["token",{"0":{"2":1,"37":1,"38":1,"39":1,"41":1,"169":1,"174":1,"324":1},"1":{"38":1,"39":1,"40":2,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"175":1},"2":{"1":3,"2":4,"3":6,"14":1,"19":2,"20":7,"22":4,"24":2,"27":2,"31":4,"32":7,"34":1,"36":3,"37":6,"38":2,"39":2,"40":7,"41":2,"43":3,"44":3,"45":1,"46":3,"52":4,"118":1,"119":4,"121":2,"123":4,"133":1,"135":2,"168":5,"169":1,"173":4,"175":4,"177":8,"179":1,"180":1,"182":1,"183":3,"184":1,"186":2,"269":2,"270":3,"271":4,"272":3,"323":1,"324":5,"325":4,"332":2,"333":2,"334":1,"335":2,"341":1,"352":1,"362":1,"446":1,"456":1,"457":1,"458":1,"459":3,"502":2,"503":3,"504":4,"505":3}}],["today",{"2":{"0":1,"14":1,"184":1}}],["to",{"0":{"12":1,"117":1,"175":1,"179":1,"265":1,"322":1,"330":1,"401":1,"477":1,"479":1,"482":1,"485":1,"487":1},"1":{"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"180":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1},"2":{"0":5,"1":3,"2":8,"3":10,"5":2,"6":5,"11":3,"13":5,"14":3,"15":3,"16":1,"17":1,"19":11,"20":16,"22":2,"23":6,"24":4,"25":1,"27":3,"31":4,"32":13,"35":2,"37":4,"38":3,"39":4,"41":4,"43":1,"44":2,"45":5,"47":3,"50":5,"51":2,"52":7,"57":1,"58":2,"59":3,"62":1,"63":1,"64":1,"68":1,"72":1,"73":1,"74":1,"76":2,"77":2,"78":1,"79":1,"80":6,"81":3,"82":1,"84":2,"85":3,"86":1,"87":1,"91":1,"92":1,"93":7,"94":3,"95":5,"96":2,"97":2,"99":6,"101":2,"102":6,"104":2,"105":10,"106":8,"109":1,"110":6,"111":3,"112":7,"114":2,"115":10,"116":4,"117":5,"118":5,"119":5,"120":4,"121":1,"122":4,"123":2,"124":4,"125":16,"126":3,"128":5,"129":2,"130":4,"131":5,"133":11,"134":3,"135":3,"138":2,"139":3,"140":1,"142":2,"143":6,"144":1,"145":9,"146":14,"147":3,"148":1,"149":2,"153":2,"155":3,"156":3,"159":1,"160":4,"161":1,"162":1,"163":4,"164":3,"165":5,"166":4,"168":7,"169":3,"173":4,"175":2,"177":6,"179":3,"180":3,"181":2,"183":1,"184":1,"185":1,"186":6,"188":1,"189":3,"190":2,"191":6,"192":1,"194":1,"196":1,"197":1,"198":3,"199":2,"200":1,"203":1,"204":1,"207":1,"209":1,"210":1,"211":3,"212":1,"213":2,"219":2,"220":1,"222":1,"225":1,"226":1,"228":2,"232":1,"235":1,"236":11,"237":4,"242":2,"243":9,"244":10,"246":1,"250":1,"251":1,"253":1,"254":3,"257":1,"258":1,"259":1,"260":1,"261":2,"262":1,"263":5,"266":7,"267":5,"269":11,"270":7,"271":7,"272":7,"273":5,"274":1,"275":3,"279":2,"281":1,"283":1,"284":2,"285":5,"286":1,"287":1,"288":1,"289":1,"290":2,"291":1,"294":2,"295":2,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"302":5,"303":7,"304":3,"305":4,"306":1,"307":2,"308":1,"309":4,"310":3,"311":2,"314":1,"319":1,"320":1,"321":2,"325":2,"326":1,"328":1,"330":1,"331":5,"332":4,"333":6,"334":2,"335":3,"337":1,"338":1,"340":2,"341":5,"342":1,"344":3,"346":2,"350":2,"351":6,"352":1,"353":5,"354":7,"355":2,"357":5,"360":1,"361":3,"362":5,"363":4,"364":2,"365":1,"366":1,"367":7,"369":1,"370":2,"375":3,"378":1,"379":1,"386":1,"387":2,"388":2,"389":1,"390":1,"391":3,"392":2,"393":1,"394":1,"395":1,"397":4,"398":8,"399":2,"400":1,"401":2,"403":2,"404":2,"405":3,"406":3,"408":1,"409":1,"411":2,"413":1,"417":1,"420":2,"422":1,"423":1,"424":1,"425":2,"426":1,"427":2,"428":2,"429":4,"432":2,"433":2,"434":10,"435":7,"439":3,"440":6,"442":1,"443":4,"444":1,"445":1,"446":2,"447":2,"448":1,"449":4,"450":3,"452":4,"453":2,"454":1,"455":2,"456":1,"457":2,"458":1,"459":12,"460":1,"461":2,"463":1,"465":1,"468":3,"469":1,"471":1,"475":1,"476":1,"478":2,"489":1,"490":3,"492":1,"494":1,"495":11,"496":4,"501":2,"502":11,"503":7,"504":7,"505":7,"506":5,"507":1,"508":3,"512":2,"514":1}}],["aqaaaaaaaegvyziwa9fmslyeg",{"2":{"357":1}}],["azure",{"2":{"332":1}}],["aws",{"2":{"354":3,"355":1,"466":1,"491":1}}],["awesome",{"2":{"243":1}}],["away",{"2":{"125":1}}],["aware",{"2":{"11":1,"131":1,"237":1,"496":1}}],["await",{"2":{"6":1,"16":1,"25":1,"38":1,"39":2,"102":2,"111":2,"117":2,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1,"182":2,"184":1,"185":1,"186":2,"236":1,"237":2,"244":2,"245":1,"246":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1,"269":2,"270":3,"271":2,"272":3,"273":1,"277":1,"278":1,"279":1,"280":2,"281":1,"285":2,"286":1,"287":1,"288":1,"289":1,"290":1,"291":1,"292":1,"293":1,"294":1,"295":2,"296":1,"297":1,"298":1,"299":1,"300":1,"301":1,"303":6,"305":3,"306":1,"309":5,"311":2,"317":1,"318":1,"319":1,"320":1,"321":2,"390":1,"409":1,"410":1,"433":2,"434":4,"435":3,"436":2,"437":3,"439":2,"440":2,"444":1,"445":2,"446":1,"447":1,"448":1,"495":1,"496":2,"502":2,"503":3,"504":2,"505":3,"506":1,"510":1,"511":1,"512":1,"513":2,"514":1}}],["ahead",{"2":{"159":1,"161":1}}],["ayourclass",{"2":{"133":2}}],["aviator",{"2":{"357":1}}],["avalanche",{"0":{"171":1}}],["avax",{"0":{"171":1}}],["availability",{"2":{"20":1}}],["available",{"0":{"69":1},"1":{"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1},"2":{"4":1,"11":2,"20":2,"31":2,"33":1,"58":1,"60":1,"80":1,"92":1,"94":1,"95":1,"140":1,"153":1,"188":2,"192":1,"197":1,"201":1,"204":1,"205":1,"210":1,"214":3,"215":1,"216":1,"221":1,"222":1,"230":1,"231":1,"233":1,"239":1,"240":1,"243":1,"244":1,"255":1,"259":1,"283":1,"341":1,"346":1,"351":1,"362":1,"379":1,"435":1,"466":1,"490":1,"498":1,"499":1}}],["avoid",{"2":{"80":1,"131":1,"244":1}}],["absolute",{"2":{"236":1,"495":1}}],["abstracted",{"2":{"125":1}}],["abstraction",{"2":{"50":1}}],["ability",{"2":{"367":1}}],["abis",{"2":{"125":1,"309":1}}],["abi",{"2":{"120":1,"122":1,"124":1,"125":5,"302":3,"303":1,"304":1,"309":1,"310":1,"411":1,"418":4,"428":1,"429":1,"430":2,"459":4}}],["about",{"2":{"24":1,"32":1,"37":1,"46":1,"147":1,"190":1,"244":1,"335":1,"340":1,"354":1,"449":1}}],["above",{"0":{"190":1},"2":{"3":2,"19":1,"25":1,"32":3,"34":1,"104":1,"118":2,"119":1,"125":1,"188":1,"189":1,"190":2,"236":1,"237":1,"244":1,"286":1,"289":1,"291":1,"293":1,"295":1,"360":1,"409":1,"410":1,"416":1,"465":1,"466":1,"495":1,"496":1}}],["able",{"2":{"19":1,"31":1,"106":1,"143":1,"243":3,"260":1,"263":1,"266":1,"353":2,"354":2,"367":1,"409":1,"461":1}}],["admire",{"0":{"334":1}}],["adapter",{"2":{"314":1}}],["advanced",{"0":{"307":1},"1":{"308":1},"2":{"85":1,"106":1,"118":1,"307":1}}],["advantages",{"2":{"165":1}}],["advantage",{"2":{"46":1,"302":1}}],["adhere",{"2":{"19":1}}],["addr",{"2":{"427":1}}],["addressno",{"2":{"483":1}}],["addressnovalsobject",{"2":{"458":1}}],["addressnovaluestringamount",{"2":{"456":1}}],["addressnovaluestringthe",{"2":{"455":1}}],["addressnoidstringtoken",{"2":{"457":1}}],["addressnotostringthe",{"2":{"456":1,"457":1,"458":1}}],["addressyes",{"2":{"452":1}}],["addresses",{"2":{"22":1,"25":2,"36":1,"52":2,"150":1,"168":1,"169":1,"173":2,"177":1,"180":1,"183":1,"389":2,"397":3}}],["address",{"0":{"25":1,"173":1,"235":1,"420":1,"494":1},"2":{"17":1,"19":1,"22":2,"32":4,"36":1,"38":1,"39":1,"46":1,"94":1,"102":1,"118":1,"120":1,"122":1,"124":1,"125":1,"133":1,"158":2,"168":3,"169":4,"171":3,"173":6,"175":5,"177":4,"179":2,"180":1,"183":5,"235":3,"236":3,"237":3,"242":1,"244":1,"258":1,"269":7,"270":8,"271":2,"272":8,"278":1,"291":1,"295":1,"302":1,"304":2,"305":2,"309":2,"316":3,"325":1,"331":1,"333":4,"335":1,"388":1,"390":10,"398":1,"401":1,"406":2,"410":1,"414":3,"415":4,"417":1,"418":5,"419":3,"420":4,"427":2,"430":2,"431":2,"435":1,"436":2,"439":2,"440":1,"443":1,"459":3,"475":1,"476":5,"483":1,"486":1,"494":3,"495":3,"496":3,"501":1,"502":7,"503":8,"504":2,"505":8,"511":1}}],["adds",{"2":{"363":1}}],["addwebhooklistener",{"2":{"180":6}}],["adddynamic",{"2":{"133":2}}],["adding",{"2":{"52":1,"155":1,"156":1}}],["additional",{"2":{"43":1,"44":1,"52":1,"79":1,"98":1,"147":1,"157":1,"168":1,"169":1,"173":1,"177":1,"191":1,"243":1,"342":1,"366":2,"404":1,"416":1,"442":1,"443":2,"486":1}}],["additionally",{"2":{"15":1,"26":1,"35":1,"43":1,"46":1,"47":1,"84":1,"118":1,"164":1,"191":1,"355":1,"463":1}}],["addition",{"2":{"32":1,"41":1,"102":1,"105":1,"190":1,"191":1}}],["added",{"2":{"26":1,"115":1,"192":1,"194":1,"207":1,"215":1,"367":1,"429":1}}],["add",{"2":{"2":2,"6":1,"16":1,"48":1,"63":1,"84":1,"86":1,"96":1,"97":1,"99":2,"102":1,"104":2,"106":3,"112":2,"133":1,"138":1,"145":1,"157":1,"193":1,"200":1,"206":1,"212":1,"216":1,"244":1,"267":4,"351":1,"367":2,"375":4}}],["affected",{"2":{"13":1}}],["african",{"2":{"13":1}}],["afghanistan",{"2":{"13":1}}],["after",{"2":{"2":1,"99":1,"107":1,"115":1,"128":1,"133":3,"135":1,"140":1,"145":1,"155":2,"156":1,"183":1,"244":1,"253":2,"325":1,"387":1,"466":1,"480":1,"483":1}}],["among",{"2":{"429":1}}],["amountstringamount",{"2":{"458":1}}],["amountnovals",{"2":{"458":1}}],["amountasbiginteger",{"2":{"303":4}}],["amountasstring",{"2":{"119":1,"123":1,"126":2}}],["amount1",{"2":{"270":1,"271":1,"272":1,"503":1,"504":1,"505":1}}],["amount4",{"2":{"269":1,"502":1}}],["amount3",{"2":{"269":1,"502":1}}],["amount2",{"2":{"269":1,"270":1,"271":1,"272":1,"502":1,"503":1,"504":1,"505":1}}],["amount",{"2":{"119":1,"120":1,"124":1,"125":1,"126":1,"262":2,"270":1,"271":2,"292":1,"333":1,"403":1,"459":2,"503":1,"504":2}}],["amountrequiredraw",{"2":{"66":1}}],["amazon",{"2":{"94":2,"351":1,"354":1,"442":1}}],["america",{"2":{"11":1}}],["amp",{"0":{"2":1,"4":1,"19":1,"21":1,"31":1,"385":1,"386":1},"1":{"32":1,"33":1,"34":1,"35":1,"36":1,"387":1,"388":1,"389":1,"390":1,"391":1,"392":1,"393":1,"394":1,"395":1,"396":1,"397":1,"398":1,"399":1,"400":1,"401":1,"402":1,"403":1,"404":1,"405":1,"406":1},"2":{"1":3,"2":1,"13":1,"17":3,"22":1,"27":3,"31":1,"87":2,"131":2,"133":10,"134":1,"135":1,"155":1,"168":2,"169":3,"171":2,"173":3,"175":3,"177":3,"180":2,"184":1,"186":1,"340":2,"416":3,"435":2}}],["audits",{"0":{"380":1},"1":{"381":1,"382":1,"383":1},"2":{"380":1}}],["audit",{"2":{"354":1}}],["audited",{"2":{"351":1,"354":1}}],["audio",{"2":{"3":2}}],["automatic",{"0":{"448":1},"2":{"448":1}}],["automatically",{"2":{"20":3,"31":1,"50":1,"87":1,"93":1,"104":2,"106":1,"108":1,"129":1,"191":1,"236":3,"248":1,"253":1,"257":1,"258":1,"329":1,"370":1,"428":1,"431":1,"433":1,"492":1,"495":3}}],["auto",{"2":{"364":1}}],["autoconnect",{"2":{"190":2,"207":1}}],["authorizationmessage",{"2":{"279":2,"280":1,"512":2,"513":1}}],["authorization",{"0":{"279":1,"280":1,"512":1,"513":1},"2":{"237":1,"496":1}}],["authorized",{"2":{"280":2,"513":2}}],["authorizenonce",{"0":{"251":1},"2":{"251":2}}],["authorize",{"0":{"250":1},"2":{"236":2,"244":1,"250":2,"275":2,"279":1,"495":2,"508":2,"512":1}}],["authfailure",{"2":{"133":2}}],["authrequirescode",{"2":{"133":3,"134":1}}],["authsuccess",{"2":{"130":1,"133":3,"134":1,"135":1}}],["auth",{"0":{"155":1,"156":1,"351":1,"435":1},"2":{"129":1,"130":2,"133":1,"134":1,"143":1,"146":1,"155":2,"156":1,"184":1,"237":1,"247":1,"257":1,"351":1,"352":1,"353":2,"432":2,"433":1,"435":4,"441":1,"443":1,"465":2,"496":1}}],["authenticating",{"2":{"352":1}}],["authentication",{"0":{"93":1,"132":1,"134":1,"135":1,"136":1},"1":{"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"133":1,"134":1,"135":1,"136":1},"2":{"57":1,"76":1,"77":1,"93":4,"128":1,"133":1,"134":1,"135":1,"165":1,"275":1,"357":2,"364":1,"432":1,"443":1,"452":1,"508":1}}],["authenticator",{"2":{"133":3,"134":1,"465":2}}],["authenticates",{"2":{"353":1}}],["authenticated",{"2":{"59":1,"361":1,"449":1}}],["authenticate",{"0":{"234":1,"236":1,"237":1,"493":1,"495":1,"496":1},"1":{"235":1,"236":1,"237":1,"494":1,"495":1,"496":1},"2":{"6":1,"236":2,"237":1,"352":1,"432":1,"452":1,"495":2,"496":1}}],["achieves",{"2":{"352":1}}],["act",{"2":{"275":1,"508":1}}],["actor",{"2":{"128":1,"146":2,"363":1,"366":1,"367":1}}],["acting",{"2":{"363":1}}],["active",{"2":{"437":1}}],["activate",{"2":{"226":2}}],["activated",{"2":{"226":1}}],["activation",{"0":{"226":1}}],["activities",{"2":{"183":2}}],["activity",{"2":{"99":4,"181":1,"266":1,"366":1}}],["actions",{"2":{"275":1,"352":1,"448":1,"467":1,"486":1,"508":1}}],["action",{"0":{"449":1},"1":{"450":1,"451":1,"452":1,"453":1,"454":1,"455":1,"456":1,"457":1,"458":1,"459":1,"460":1},"2":{"99":8,"244":1,"275":1,"281":1,"337":1,"352":1,"446":2,"448":1,"449":4,"468":1,"472":1,"508":1,"514":1}}],["actually",{"2":{"273":1,"354":1,"506":1}}],["actual",{"2":{"6":1,"236":1,"244":1,"267":1,"375":1,"495":1}}],["across",{"2":{"13":1,"15":1,"20":1,"41":1,"47":1}}],["acquire",{"2":{"6":1,"58":1,"138":1}}],["acc36ed4ef40db74137266e48d863083a5c7e85e2735d69adafcb5b362b6cfc0",{"2":{"439":2,"476":3}}],["accelerating",{"2":{"340":1}}],["accelerate",{"2":{"162":1,"166":1}}],["accepts",{"2":{"118":1,"303":1}}],["accepting",{"2":{"101":1}}],["accepted",{"2":{"52":1,"244":1}}],["accessing",{"2":{"439":1}}],["accessible",{"2":{"3":2,"33":1,"364":1}}],["accessed",{"0":{"13":1},"2":{"11":1,"283":1,"355":1}}],["access",{"0":{"12":1},"2":{"2":3,"6":2,"11":1,"14":1,"16":1,"19":1,"25":2,"28":2,"38":2,"39":3,"58":1,"59":1,"81":1,"85":1,"86":1,"93":1,"110":1,"120":1,"122":1,"124":1,"138":1,"140":1,"168":3,"169":1,"171":2,"173":2,"175":1,"177":1,"180":1,"184":2,"243":3,"244":2,"260":2,"351":3,"353":3,"354":3,"355":1,"357":1,"360":1,"361":1,"365":2,"367":1,"422":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1,"469":1,"490":1}}],["accurately",{"2":{"20":1}}],["accounts",{"0":{"343":1},"1":{"344":1,"345":1},"2":{"51":2,"95":1,"153":1,"180":4,"342":1,"343":2,"436":4,"489":1,"490":2,"492":4}}],["accountaddresses",{"2":{"173":1}}],["accountaddress",{"2":{"17":2,"168":7,"169":6,"171":6,"173":4,"175":2,"180":1}}],["account",{"0":{"2":1},"2":{"1":2,"2":2,"17":1,"101":1,"156":1,"168":5,"169":4,"171":4,"173":5,"179":1,"184":2,"185":1,"186":1,"199":1,"213":1,"236":1,"242":1,"244":1,"325":1,"328":1,"351":1,"364":3,"367":1,"432":1,"433":1,"467":1,"495":1,"501":1}}],["aggregating",{"2":{"5":1}}],["against",{"2":{"44":1,"51":1,"353":2,"367":1,"398":1,"406":1,"417":2}}],["again",{"2":{"2":1,"145":2,"160":1,"252":1,"332":1,"364":1,"465":1,"471":1}}],["aka",{"0":{"171":1},"2":{"3":1}}],["atomic",{"2":{"400":1}}],["attestation",{"2":{"354":3,"466":8}}],["attested",{"2":{"351":1}}],["attempted",{"2":{"478":1}}],["attempts",{"2":{"188":1,"478":1}}],["attempting",{"2":{"130":1}}],["attempt",{"2":{"104":1,"106":1,"197":1,"219":1,"220":1,"228":1}}],["attacker",{"2":{"353":2,"365":1}}],["attackers",{"2":{"351":1}}],["attacks",{"2":{"51":1,"435":1}}],["attached",{"2":{"93":1,"115":1}}],["attach",{"2":{"32":1,"146":1}}],["attributes",{"0":{"45":1,"331":1},"2":{"32":1,"43":6,"44":1,"45":6,"324":1,"331":1}}],["at",{"2":{"3":1,"11":2,"20":1,"32":2,"54":1,"92":1,"107":1,"110":2,"139":1,"140":2,"145":2,"149":1,"155":1,"156":1,"158":2,"168":1,"204":1,"236":1,"285":4,"291":2,"295":2,"303":1,"305":1,"319":1,"320":1,"324":1,"340":1,"353":1,"364":1,"369":1,"370":1,"373":1,"379":1,"386":1,"387":1,"468":2,"495":1}}],["alphabetically",{"2":{"450":1,"469":1}}],["alpha",{"2":{"115":1}}],["already",{"2":{"92":1,"99":2,"104":1,"106":2,"146":1,"184":1,"204":1,"244":1,"257":1,"258":1,"259":1,"266":2,"302":1,"333":1,"379":1,"433":1}}],["alternatively",{"2":{"163":1,"166":1,"266":2,"303":1,"305":1}}],["alternative",{"2":{"27":1}}],["always",{"2":{"20":1,"107":1,"140":1,"168":1,"169":1,"173":1,"177":1,"237":1,"266":1,"335":1,"352":1,"402":1,"403":1,"431":1,"440":1,"465":1,"488":1,"496":1}}],["alongside",{"2":{"194":1,"207":1,"449":1}}],["along",{"2":{"15":1,"155":1,"332":1}}],["algeria",{"2":{"13":1}}],["alaska",{"2":{"12":1}}],["also",{"2":{"3":1,"14":1,"19":2,"24":1,"31":1,"32":1,"37":1,"52":1,"60":1,"61":1,"79":1,"80":1,"104":1,"105":1,"112":1,"133":1,"143":1,"144":1,"149":1,"164":1,"191":3,"198":1,"211":1,"239":1,"240":1,"241":1,"244":2,"263":1,"266":1,"267":1,"309":2,"310":1,"341":1,"346":1,"352":1,"353":1,"357":2,"362":1,"375":1,"398":1,"406":1,"410":1,"435":1,"498":1,"499":1,"500":1}}],["allowlists",{"2":{"352":1}}],["allowed",{"0":{"157":1},"2":{"157":3,"352":1,"399":1}}],["allowing",{"2":{"51":1,"84":1,"125":1,"243":1}}],["allow",{"2":{"50":3,"95":1,"120":1,"122":1,"124":1,"146":1,"179":1,"243":1,"258":1,"263":1,"355":1,"408":1}}],["allows",{"2":{"20":1,"31":1,"125":1,"126":2,"165":1,"190":2,"236":3,"243":1,"314":1,"331":1,"341":1,"342":1,"346":1,"354":2,"362":1,"366":1,"388":1,"391":1,"395":1,"417":1,"495":3}}],["ally",{"2":{"44":1}}],["all",{"0":{"177":1,"189":1},"2":{"2":1,"19":2,"20":7,"22":4,"23":1,"60":1,"78":1,"91":1,"94":1,"95":1,"109":1,"120":1,"122":1,"124":1,"125":1,"126":3,"129":2,"156":1,"157":1,"158":1,"159":2,"166":1,"168":2,"169":1,"173":1,"175":2,"177":2,"188":1,"189":1,"190":2,"191":2,"198":1,"203":1,"211":1,"237":1,"240":1,"243":1,"260":1,"307":1,"310":1,"319":1,"320":1,"324":1,"326":1,"327":1,"340":1,"351":1,"364":1,"367":1,"369":1,"370":1,"378":1,"388":1,"391":1,"398":1,"403":1,"431":1,"449":1,"466":1,"467":2,"473":1,"490":1,"491":1,"496":1,"499":1}}],["arcadeum",{"2":{"380":2}}],["architectures",{"2":{"145":1}}],["architecture",{"0":{"350":1,"490":1},"2":{"3":1}}],["args",{"2":{"459":3}}],["argent",{"2":{"348":1}}],["argument",{"2":{"112":1,"445":1}}],["arguments",{"2":{"19":1,"93":1,"303":2,"459":2}}],["arbitrum",{"2":{"182":2,"339":1,"361":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1}}],["arbitrary",{"2":{"44":1,"45":1,"52":1,"125":1,"185":1,"303":1,"310":1,"346":1}}],["artstation",{"2":{"44":1}}],["artist",{"2":{"44":1}}],["artists",{"2":{"44":1}}],["armor",{"2":{"44":1}}],["array",{"2":{"25":1,"38":2,"39":2,"43":1,"45":1,"76":1,"77":1,"126":1,"173":4,"180":2,"183":2,"411":1,"454":1,"458":1,"459":1,"475":3}}],["aren",{"2":{"184":1}}],["areas",{"2":{"45":1}}],["are",{"0":{"163":1,"416":1,"468":1},"2":{"2":1,"14":1,"19":5,"20":1,"22":1,"31":1,"41":1,"45":1,"46":2,"50":3,"52":2,"76":1,"77":1,"78":2,"80":1,"93":1,"95":1,"102":1,"110":1,"112":1,"118":2,"120":1,"122":1,"123":1,"124":1,"125":3,"126":1,"130":3,"131":1,"133":2,"134":1,"148":3,"165":1,"168":1,"169":1,"173":1,"177":1,"183":2,"190":1,"191":1,"199":1,"200":1,"206":1,"212":1,"213":1,"214":1,"242":2,"243":2,"244":1,"245":1,"275":2,"284":2,"285":1,"303":1,"304":1,"312":1,"315":1,"321":1,"331":1,"335":1,"341":1,"343":2,"346":3,"350":2,"352":1,"353":3,"354":1,"356":1,"357":3,"360":1,"362":1,"364":3,"365":1,"367":1,"380":1,"386":1,"389":1,"397":3,"398":1,"399":1,"401":1,"409":2,"410":1,"416":1,"417":1,"420":1,"422":1,"424":1,"425":1,"426":1,"427":1,"429":1,"431":1,"433":1,"435":1,"436":1,"438":1,"439":1,"440":1,"448":1,"449":3,"450":1,"455":1,"466":1,"467":1,"471":2,"489":1,"490":2,"492":2,"501":2,"508":2}}],["arise",{"2":{"0":1}}],["apk",{"2":{"99":2}}],["ape",{"2":{"43":2}}],["appprotocol",{"0":{"247":1}}],["appprops",{"2":{"190":1}}],["appropriate",{"2":{"110":1,"115":1,"125":1,"200":1,"212":1,"303":1,"311":1}}],["approach",{"2":{"102":1,"111":1,"117":1,"131":1}}],["appname",{"0":{"220":1,"229":1},"2":{"81":1,"85":1,"86":1,"217":1,"225":3,"229":1}}],["applied",{"2":{"425":1}}],["applicable",{"2":{"201":2}}],["application",{"2":{"5":1,"25":2,"31":1,"38":2,"39":4,"52":1,"83":1,"85":1,"91":1,"92":1,"95":2,"99":4,"102":1,"110":1,"128":1,"143":4,"147":1,"156":1,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2,"182":2,"183":1,"185":1,"189":4,"190":1,"199":1,"203":1,"204":1,"213":1,"274":1,"275":1,"282":1,"339":1,"355":1,"357":3,"378":1,"379":1,"432":1,"435":2,"449":1,"459":1,"507":1,"508":1,"515":1}}],["applications",{"0":{"202":1,"377":1},"1":{"203":1,"378":1},"2":{"0":1,"19":1,"90":1,"148":1,"202":1,"236":1,"237":1,"275":2,"307":1,"351":1,"357":1,"377":1,"495":1,"496":1,"508":2}}],["apply",{"2":{"115":3}}],["appleid",{"2":{"367":1}}],["applevision",{"2":{"145":1}}],["apple",{"0":{"156":1,"435":1},"2":{"76":1,"95":1,"156":4,"257":1,"259":1,"357":1,"435":1}}],["appear",{"2":{"125":1,"450":1}}],["appears",{"2":{"43":1,"80":1,"125":1}}],["appended",{"2":{"332":1}}],["append",{"2":{"6":1,"186":1,"420":1}}],["apps",{"2":{"20":2,"112":1,"144":1}}],["app",{"0":{"190":1,"246":1},"2":{"3":8,"6":1,"15":2,"16":1,"17":2,"25":2,"28":2,"29":1,"32":4,"34":6,"36":1,"38":2,"39":4,"43":2,"44":1,"47":2,"49":1,"52":1,"63":2,"68":1,"81":4,"85":4,"86":3,"89":1,"99":1,"114":1,"145":2,"168":3,"169":3,"171":3,"173":3,"175":3,"177":3,"180":3,"182":2,"184":2,"185":1,"188":2,"189":1,"190":3,"191":1,"194":2,"196":1,"197":1,"199":5,"201":4,"207":2,"209":1,"210":1,"213":5,"214":5,"217":1,"220":1,"225":1,"230":1,"236":1,"237":1,"243":1,"244":2,"246":3,"307":1,"335":2,"339":1,"351":1,"353":1,"369":1,"370":1,"435":1,"464":1,"466":1,"495":1,"496":1}}],["apis",{"2":{"105":1,"148":1,"155":1,"162":1,"163":4,"164":2,"340":1,"355":1}}],["api",{"0":{"1":1,"23":1,"31":1,"50":1,"127":1,"128":1,"129":1,"131":1,"167":1,"339":1,"354":1},"1":{"2":1,"3":1,"4":1,"32":1,"33":1,"34":1,"35":1,"36":1,"51":1,"52":1,"128":1,"129":1,"130":1,"131":1,"168":1,"169":1},"2":{"1":4,"2":6,"3":1,"14":3,"15":4,"16":1,"20":6,"23":3,"25":1,"27":5,"28":2,"31":3,"33":1,"35":1,"36":1,"38":1,"47":3,"50":1,"58":1,"94":1,"105":1,"107":1,"110":2,"128":5,"130":1,"138":1,"140":1,"146":1,"151":1,"164":1,"168":2,"171":1,"173":1,"181":1,"182":2,"183":1,"283":1,"338":1,"339":1,"354":1,"357":1,"434":1,"449":4,"459":1,"468":1,"469":1,"471":1,"472":1,"477":1,"479":1,"482":1,"485":1,"487":1,"488":1}}],["announced",{"2":{"246":1}}],["anonymizes",{"2":{"148":1}}],["another",{"2":{"15":1,"25":1,"32":1,"35":1,"38":1,"39":2,"43":1,"47":1,"168":1,"352":1,"364":1,"414":1,"491":1}}],["analytics",{"0":{"147":1},"1":{"148":1,"149":1,"150":1,"151":1,"152":1},"2":{"148":2}}],["anatomy",{"0":{"51":1},"2":{"468":1}}],["animation",{"2":{"3":2}}],["an",{"0":{"188":1},"2":{"3":5,"16":1,"19":1,"22":1,"23":1,"25":2,"28":1,"31":1,"36":1,"38":2,"39":1,"43":2,"44":3,"45":2,"52":1,"61":1,"80":4,"89":1,"93":1,"94":1,"95":1,"102":2,"104":1,"109":1,"111":2,"112":2,"115":1,"117":2,"118":1,"119":3,"120":2,"121":3,"122":2,"123":3,"124":2,"125":4,"131":1,"134":1,"139":1,"143":1,"146":2,"156":2,"159":1,"163":1,"168":2,"169":1,"171":1,"173":1,"175":1,"177":1,"180":2,"183":4,"185":1,"188":1,"190":3,"191":1,"199":2,"200":1,"212":1,"213":2,"220":1,"221":2,"233":1,"236":2,"237":1,"241":1,"243":2,"250":1,"251":1,"258":1,"262":1,"266":1,"270":2,"271":1,"272":2,"274":1,"302":1,"303":2,"304":3,"305":1,"309":2,"310":1,"313":1,"314":2,"319":2,"320":2,"321":1,"325":1,"331":1,"352":1,"353":2,"354":1,"355":2,"364":1,"365":1,"388":1,"397":1,"398":1,"403":1,"414":1,"426":1,"427":2,"431":1,"432":1,"433":1,"434":5,"437":1,"440":3,"442":1,"445":1,"446":1,"451":1,"452":1,"459":2,"461":1,"468":1,"469":1,"478":2,"483":2,"486":1,"490":1,"491":1,"495":2,"496":1,"500":1,"503":2,"504":1,"505":2,"507":1}}],["android=",{"2":{"99":2}}],["androidmanifest",{"2":{"99":1}}],["android",{"0":{"99":1},"2":{"99":41,"108":1,"141":1,"142":1,"143":3,"357":1}}],["and",{"0":{"3":1,"52":1,"145":1,"159":1,"168":2,"169":2,"189":1,"190":2,"245":1,"277":1,"324":1,"334":1,"384":1,"470":1,"510":1},"1":{"246":1,"247":1,"248":1,"249":1,"250":1,"251":1,"252":1,"253":1,"254":1,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1},"2":{"0":1,"1":4,"2":5,"3":6,"5":1,"6":3,"11":2,"14":2,"15":5,"18":1,"19":5,"20":14,"23":3,"24":1,"27":1,"30":1,"31":3,"32":6,"33":1,"35":1,"37":2,"41":3,"43":1,"44":1,"45":8,"46":2,"47":4,"50":4,"51":1,"52":1,"57":1,"58":1,"60":1,"61":1,"64":1,"76":1,"77":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":2,"89":1,"90":1,"91":3,"93":3,"94":2,"96":1,"97":1,"99":4,"101":1,"102":4,"104":2,"105":3,"106":4,"107":2,"110":4,"111":1,"112":3,"114":1,"115":3,"116":1,"117":4,"118":4,"119":1,"120":2,"121":1,"122":2,"123":1,"124":2,"125":4,"126":1,"128":2,"131":1,"133":1,"134":1,"135":1,"139":1,"140":2,"142":1,"143":3,"145":4,"146":1,"148":3,"149":1,"151":1,"153":1,"155":2,"157":1,"158":2,"159":1,"160":2,"161":1,"162":1,"163":5,"164":2,"165":5,"166":3,"169":1,"173":1,"177":1,"179":2,"181":2,"186":1,"188":4,"189":2,"190":7,"191":2,"194":1,"197":1,"202":1,"203":3,"207":1,"214":1,"226":1,"232":1,"236":3,"237":1,"240":1,"241":1,"243":6,"244":5,"248":2,"250":1,"254":1,"264":1,"266":2,"267":1,"269":1,"275":3,"278":1,"282":1,"283":1,"284":1,"285":1,"286":1,"289":1,"291":1,"293":1,"295":1,"296":1,"301":1,"302":2,"303":3,"305":2,"307":1,"308":1,"309":2,"310":2,"311":1,"317":1,"318":1,"319":2,"320":2,"321":1,"324":1,"325":2,"328":1,"329":1,"331":1,"332":2,"333":1,"334":2,"335":1,"340":1,"341":1,"342":1,"346":1,"351":4,"352":5,"354":9,"355":6,"357":4,"360":1,"362":1,"364":3,"366":1,"367":5,"377":1,"378":3,"380":1,"392":2,"398":1,"402":1,"403":1,"406":1,"408":1,"409":2,"410":1,"411":2,"412":1,"415":1,"417":3,"419":1,"422":1,"423":2,"424":1,"426":2,"427":1,"429":5,"433":1,"434":1,"435":4,"436":1,"440":1,"444":2,"449":2,"450":1,"452":2,"455":1,"458":1,"459":2,"461":1,"463":1,"464":1,"466":2,"467":1,"468":1,"470":2,"471":1,"488":1,"491":2,"492":1,"495":3,"496":1,"499":1,"500":1,"502":1,"508":3,"511":1,"515":1}}],["anyyesindexnumberindex",{"2":{"475":1}}],["anyone",{"2":{"351":1,"354":1,"449":1,"469":1}}],["anywhere",{"2":{"102":1,"111":1,"117":1}}],["anything",{"2":{"19":1,"244":1}}],["any",{"0":{"25":1,"38":1,"168":1,"173":1,"175":1,"265":1},"2":{"0":1,"14":1,"19":1,"20":1,"22":3,"24":2,"31":1,"32":2,"37":4,"45":2,"50":2,"52":3,"59":1,"93":1,"105":1,"106":1,"107":1,"116":1,"120":1,"122":1,"124":1,"125":1,"126":1,"128":2,"133":1,"140":1,"147":1,"157":1,"168":1,"169":1,"171":1,"173":3,"175":4,"177":4,"237":1,"243":3,"244":1,"266":1,"304":1,"309":1,"310":1,"332":1,"333":1,"353":1,"354":1,"361":1,"369":1,"370":1,"380":1,"397":2,"404":1,"416":2,"424":1,"426":1,"428":1,"429":1,"431":1,"435":1,"437":2,"438":1,"439":1,"440":1,"496":1}}],["answer",{"2":{"0":2,"434":1}}],["aspects",{"2":{"432":1}}],["aspect",{"2":{"244":2,"256":1}}],["askforemail",{"0":{"254":1},"2":{"254":2}}],["asking",{"2":{"236":1,"443":1,"452":1,"495":1}}],["ask",{"0":{"235":1,"494":1},"2":{"254":1,"271":1,"504":1}}],["asks",{"2":{"105":1}}],["asequencebackendmanager",{"2":{"133":1}}],["assymmetric",{"2":{"469":1}}],["assigned",{"2":{"387":2}}],["assistance",{"2":{"25":1,"38":1,"39":2,"168":1}}],["assured",{"2":{"351":1}}],["assumes",{"2":{"244":1}}],["assuming",{"2":{"128":1,"488":1}}],["asstring",{"2":{"321":2}}],["assembled",{"2":{"303":1}}],["assets",{"2":{"3":1,"32":3,"44":1,"78":5,"99":1,"104":1,"105":2,"110":2,"115":1,"163":3,"165":1}}],["assetid",{"2":{"3":2}}],["assetidorassettype",{"2":{"3":1}}],["assettype",{"2":{"3":3}}],["asset",{"2":{"3":6,"43":1,"44":1}}],["associate",{"2":{"452":1}}],["associated",{"2":{"152":1,"278":1,"411":1,"475":1,"511":1}}],["association",{"2":{"93":1}}],["asynchronous",{"2":{"102":1,"111":1,"117":1,"307":1}}],["async",{"2":{"6":1,"66":1,"102":1,"111":1,"117":1,"182":1,"184":1,"226":2,"303":1,"307":1,"435":3}}],["as",{"0":{"268":1,"376":1},"2":{"0":2,"2":3,"3":2,"13":3,"15":3,"19":2,"20":1,"25":1,"31":2,"32":2,"34":1,"35":2,"38":1,"39":1,"43":1,"44":1,"45":4,"46":1,"47":2,"50":2,"51":1,"58":1,"59":1,"61":1,"76":1,"77":1,"80":2,"84":1,"85":1,"86":1,"91":1,"93":1,"95":1,"101":2,"102":1,"105":2,"106":2,"112":4,"115":1,"117":1,"118":5,"119":1,"121":1,"123":2,"125":4,"126":1,"128":1,"134":1,"140":1,"143":2,"147":1,"156":1,"162":2,"163":1,"165":5,"168":1,"183":1,"188":1,"196":1,"203":1,"209":1,"226":1,"228":1,"236":1,"237":2,"241":1,"242":1,"251":1,"262":1,"266":2,"268":1,"269":1,"270":2,"271":2,"272":2,"273":1,"275":2,"283":1,"284":1,"285":1,"286":1,"289":1,"291":1,"293":1,"294":1,"295":1,"302":2,"303":2,"305":3,"309":1,"310":1,"314":1,"319":1,"320":1,"324":1,"325":1,"333":2,"338":1,"340":1,"341":1,"342":1,"346":1,"350":1,"354":1,"355":1,"357":2,"361":1,"362":1,"367":1,"376":1,"378":1,"380":1,"390":1,"391":1,"409":4,"410":3,"411":1,"417":1,"420":1,"423":1,"427":1,"428":1,"429":1,"430":3,"431":2,"433":1,"434":4,"445":1,"446":1,"450":1,"465":3,"466":1,"467":2,"469":1,"489":2,"492":2,"495":1,"496":2,"500":1,"501":1,"502":1,"503":2,"504":2,"505":2,"506":1,"508":2}}],["a",{"0":{"2":1,"6":1,"8":1,"51":1,"54":1,"80":1,"176":1,"177":1,"180":1,"189":1,"190":1,"269":1,"278":1,"337":1,"356":1,"373":1,"502":1,"511":1},"1":{"177":1},"2":{"0":1,"1":3,"2":4,"5":1,"6":4,"14":1,"15":2,"19":1,"20":10,"22":4,"23":2,"25":2,"27":1,"31":2,"32":6,"33":2,"36":3,"37":1,"38":2,"39":5,"43":2,"44":3,"46":3,"47":1,"50":6,"51":7,"52":3,"55":1,"58":1,"59":2,"60":1,"64":1,"66":1,"70":2,"76":2,"77":2,"78":1,"80":5,"81":1,"82":1,"85":1,"90":2,"91":3,"92":1,"93":4,"94":2,"95":2,"99":3,"101":3,"102":8,"104":4,"105":8,"106":3,"107":3,"109":1,"110":5,"111":2,"112":6,"113":1,"115":3,"116":1,"117":6,"118":11,"119":1,"120":4,"122":4,"123":1,"124":4,"125":8,"126":5,"128":2,"129":3,"130":1,"131":1,"133":4,"134":2,"139":2,"140":4,"143":1,"145":5,"146":6,"148":1,"153":1,"155":3,"157":1,"158":3,"162":1,"163":4,"164":4,"165":5,"166":1,"168":3,"169":2,"171":2,"173":7,"175":3,"177":3,"179":1,"180":2,"181":1,"182":2,"183":1,"185":1,"189":3,"190":10,"191":2,"192":1,"197":1,"198":1,"201":3,"202":2,"203":3,"204":1,"205":1,"210":1,"211":1,"214":4,"215":1,"229":1,"230":1,"231":1,"236":6,"237":2,"240":1,"242":4,"243":6,"244":4,"245":1,"252":1,"256":2,"257":1,"262":1,"264":2,"266":1,"267":3,"268":1,"269":1,"270":3,"271":4,"272":3,"273":2,"274":1,"275":7,"278":1,"279":1,"281":1,"282":1,"283":7,"284":2,"285":3,"286":1,"287":1,"289":2,"291":3,"292":1,"293":1,"295":2,"296":2,"297":1,"299":1,"300":1,"301":1,"302":6,"303":7,"304":1,"305":4,"306":1,"307":1,"309":3,"310":1,"311":1,"312":1,"313":4,"314":3,"315":1,"319":5,"320":5,"321":2,"323":1,"324":2,"326":1,"327":1,"333":1,"334":1,"337":1,"338":2,"339":1,"340":2,"341":1,"342":1,"343":1,"350":2,"351":6,"352":2,"353":1,"354":9,"355":2,"357":7,"361":2,"362":1,"363":7,"364":5,"366":3,"367":6,"374":1,"375":2,"376":1,"377":2,"378":3,"379":1,"387":2,"389":1,"390":1,"391":1,"392":1,"395":1,"397":2,"398":1,"400":2,"402":1,"403":1,"405":1,"406":3,"409":1,"410":2,"412":3,"413":1,"415":1,"416":1,"417":1,"422":1,"423":2,"424":1,"425":2,"426":3,"427":2,"428":2,"429":4,"430":4,"432":1,"433":3,"434":3,"435":6,"436":1,"437":1,"439":2,"440":2,"442":2,"443":2,"445":2,"446":4,"449":4,"450":1,"452":2,"460":1,"461":1,"463":1,"466":5,"467":1,"468":4,"469":4,"472":4,"473":1,"475":2,"477":1,"478":1,"479":1,"480":1,"482":1,"485":1,"488":4,"489":2,"490":2,"491":1,"492":1,"495":6,"496":2,"499":1,"501":4,"502":1,"503":3,"504":4,"505":3,"506":2,"507":1,"508":7,"511":1,"512":1,"514":1,"515":1}}],["src=",{"2":{"268":2,"376":2}}],["sri",{"2":{"13":1}}],["sqnc",{"2":{"146":1}}],["sso",{"0":{"143":1},"2":{"133":1,"135":2}}],["ssssssssssssssssssssssssssssssssssssssssnnnnnnnnnnnnnnnnnnnnnnnn",{"2":{"51":1}}],["swapping",{"2":{"131":1}}],["switches",{"2":{"128":1}}],["switch",{"2":{"128":1}}],["switching",{"2":{"93":1}}],["sfts",{"2":{"123":1}}],["snippets",{"2":{"166":1}}],["snippet",{"2":{"101":1,"102":1,"118":1,"119":1,"121":1,"123":1,"125":1,"237":1,"283":1,"496":1}}],["smart",{"0":{"303":1,"342":1,"346":1},"1":{"343":1,"344":1,"345":1,"346":1,"347":2,"348":1},"2":{"101":1,"102":4,"120":1,"122":1,"124":1,"125":3,"126":3,"165":1,"237":1,"267":1,"291":1,"303":2,"304":1,"305":2,"342":2,"346":2,"350":1,"351":1,"397":1,"414":1,"459":1,"496":1}}],["smallest",{"2":{"354":1}}],["small",{"2":{"43":1,"273":1,"506":1}}],["smooth",{"2":{"90":1,"91":1,"165":1,"202":1,"203":1,"377":1,"378":1}}],["sha256",{"2":{"465":1}}],["sha384",{"2":{"465":2}}],["shape=",{"2":{"435":1}}],["sha",{"2":{"143":1}}],["shared",{"2":{"449":1}}],["share",{"0":{"82":1},"2":{"82":1,"156":1,"254":1}}],["showcasing",{"2":{"357":1}}],["showcase",{"2":{"163":1}}],["showcases",{"2":{"105":1}}],["showing",{"2":{"327":1}}],["showauthsuccessdelegate",{"2":{"133":3}}],["shows",{"2":{"128":1,"151":1}}],["show",{"2":{"128":1,"149":2,"220":1,"261":1}}],["showemailinput",{"0":{"75":1}}],["shown",{"2":{"67":1,"73":1,"74":1,"75":1,"76":1,"77":1}}],["should",{"2":{"2":2,"39":1,"45":1,"80":1,"104":1,"106":1,"256":1,"267":1,"282":1,"286":1,"289":1,"291":1,"293":1,"295":1,"307":2,"309":1,"324":1,"325":1,"331":1,"332":1,"365":1,"375":1,"400":1,"403":4,"405":1,"431":1,"446":1,"449":3,"451":1,"455":1,"456":1,"457":1,"458":1,"515":1}}],["slot",{"2":{"390":5}}],["sleepy",{"2":{"43":1}}],["slightly",{"2":{"41":1}}],["sdk",{"0":{"57":1,"90":1,"161":1,"358":1,"359":1},"1":{"91":1,"359":1,"360":1,"361":1},"2":{"39":1,"50":1,"57":3,"59":1,"60":1,"93":1,"94":1,"99":5,"101":1,"105":4,"106":6,"107":2,"109":1,"110":2,"112":2,"120":1,"122":1,"124":1,"126":1,"129":1,"140":3,"161":3,"165":1,"191":1,"237":1,"240":1,"267":2,"312":1,"357":5,"359":1,"361":1,"375":2,"432":1,"434":3,"435":2,"440":1,"449":1,"450":1,"452":1,"453":1,"454":1,"476":1,"478":1,"496":1,"499":1}}],["sdks",{"2":{"15":1,"18":1,"20":1,"30":1,"35":1,"47":1,"57":1,"58":1,"147":1,"148":1,"150":1,"161":1,"166":1,"191":1,"355":1,"429":1,"467":1}}],["skywvr",{"2":{"32":1}}],["skyweavercover",{"2":{"32":1}}],["skyweaver",{"2":{"11":1,"32":10,"44":3,"175":3,"177":3}}],["sync",{"2":{"425":1}}],["synonymous",{"2":{"380":1}}],["systems",{"2":{"128":1,"139":1,"463":1}}],["system",{"2":{"57":1,"105":1,"106":1,"108":2,"114":1,"142":1,"148":1,"342":1,"355":1,"432":1,"467":1,"491":1}}],["symbol",{"2":{"32":1,"52":3,"184":1,"186":1,"309":2}}],["syria",{"2":{"13":1}}],["split",{"2":{"354":1}}],["sprintf",{"2":{"184":1}}],["spothq",{"2":{"52":1}}],["sponsoring",{"2":{"52":1}}],["sponsorship",{"0":{"52":1},"2":{"184":1,"186":2}}],["sponsor",{"2":{"50":1,"52":1}}],["sponsored",{"2":{"50":1,"52":1}}],["space",{"2":{"51":3,"347":1}}],["spam",{"0":{"19":1},"2":{"19":2,"168":1,"169":1,"173":1,"177":1}}],["spec",{"2":{"146":1}}],["spectator",{"2":{"146":3}}],["special",{"2":{"102":1,"199":1,"213":1,"244":1,"285":1,"286":1,"289":1,"291":1,"293":1,"295":1}}],["specified",{"2":{"168":1,"262":1,"263":1,"271":1,"287":1,"289":1,"291":1,"469":1,"470":1,"504":1}}],["specifies",{"2":{"66":1,"67":1,"354":1}}],["specifics",{"0":{"145":1}}],["specific",{"2":{"20":1,"43":1,"44":1,"50":1,"70":1,"95":1,"168":1,"169":1,"173":1,"177":1,"179":1,"181":1,"182":1,"266":1,"267":1,"275":1,"286":1,"335":1,"339":1,"357":2,"375":1,"473":1,"508":1}}],["specifying",{"2":{"81":1,"468":1}}],["specify",{"2":{"32":1,"173":5,"244":1,"245":1,"257":1,"258":1,"259":1,"262":1,"341":1,"362":1}}],["spell",{"2":{"44":1}}],["salt",{"2":{"386":1,"398":1,"417":1,"420":1,"423":1,"431":2}}],["sale",{"2":{"183":1}}],["sardine",{"2":{"341":1,"362":1}}],["savings",{"2":{"126":1}}],["saved",{"2":{"158":1}}],["saves",{"2":{"115":1}}],["save",{"2":{"5":1,"105":1,"160":1,"163":1}}],["safeguarding",{"2":{"365":1}}],["safeguards",{"2":{"353":1}}],["safety",{"2":{"310":1}}],["safetransferfrom",{"2":{"269":4,"270":5,"272":5,"457":1,"502":4,"503":5,"505":5}}],["safely",{"2":{"159":1}}],["safe",{"2":{"158":2,"348":1,"353":1,"449":1,"457":1,"459":1}}],["safemint",{"2":{"122":2}}],["safer",{"2":{"106":1}}],["say",{"2":{"32":1}}],["same",{"2":{"15":1,"32":1,"45":1,"47":1,"123":1,"196":1,"209":1,"236":1,"269":1,"314":1,"403":1,"425":1,"433":1,"465":2,"495":1,"502":1}}],["samples",{"0":{"105":1},"2":{"104":2,"105":3}}],["sample",{"2":{"15":1,"105":8,"110":1,"113":1,"357":2,"435":1,"464":1}}],["soliditykeccak256",{"2":{"430":3}}],["soliditypack",{"2":{"418":1,"420":2,"430":1}}],["solutions",{"2":{"16":1,"17":1}}],["sociallogin",{"2":{"133":1,"135":1}}],["social",{"0":{"95":1,"135":1,"136":1,"364":1,"443":1},"1":{"96":1,"97":1,"98":1,"99":1,"100":1,"365":1,"366":1,"367":1},"2":{"76":1,"91":1,"95":2,"101":1,"104":1,"108":2,"110":1,"165":2,"181":1,"203":1,"347":1,"351":1,"363":1,"364":3,"367":2,"378":1,"433":1,"434":1,"435":1,"443":1,"444":1}}],["socialauthoptions",{"0":{"76":1},"2":{"81":2}}],["so",{"2":{"19":1,"20":1,"46":1,"52":4,"80":1,"93":2,"110":1,"116":1,"125":2,"133":4,"139":1,"158":1,"159":1,"189":1,"237":1,"302":2,"309":2,"314":1,"332":1,"346":1,"351":1,"355":1,"399":1,"401":1,"496":1}}],["sourced",{"2":{"191":1}}],["sources",{"2":{"19":2}}],["source",{"2":{"15":1,"35":1,"47":1,"61":1,"105":1,"125":2,"138":1,"192":1,"205":1,"215":1,"231":1,"241":1,"244":1,"268":1,"351":1,"354":2,"357":1,"376":1,"500":1}}],["south",{"2":{"13":1}}],["somalia",{"2":{"13":1}}],["sometimes",{"2":{"45":1,"145":1}}],["something",{"2":{"26":1,"101":1,"102":2,"111":1,"117":2,"131":1,"267":1,"324":1,"332":1,"375":1}}],["some",{"2":{"11":1,"25":1,"38":1,"41":1,"45":1,"46":1,"50":1,"95":1,"102":1,"105":3,"106":1,"108":1,"112":3,"115":1,"125":1,"131":1,"188":1,"242":1,"244":1,"308":1,"344":1,"433":1,"460":1,"486":1,"501":1}}],["soon",{"0":{"9":1,"116":1},"2":{"100":1}}],["scope",{"2":{"275":1,"409":1,"410":1,"434":1,"508":1}}],["scalable",{"2":{"340":1}}],["scaled",{"2":{"93":1}}],["scaler",{"2":{"93":1}}],["scale",{"2":{"5":1,"93":2}}],["scanned",{"2":{"266":2}}],["scan",{"2":{"232":1,"266":1}}],["scenarios",{"2":{"344":1,"353":1,"429":1}}],["scenario",{"2":{"158":1,"353":5,"489":1}}],["scene",{"2":{"93":1,"104":1,"105":2,"106":1,"112":1,"115":3}}],["scenes",{"2":{"20":1,"311":1}}],["scripting",{"2":{"105":1}}],["script",{"2":{"104":1,"105":1,"115":1,"145":5,"268":5,"376":5}}],["scriptableobject",{"2":{"110":3}}],["scriptable",{"2":{"104":1,"115":3,"283":1}}],["scripts",{"2":{"102":1,"105":1}}],["scroll",{"2":{"96":1,"97":1,"332":1,"333":1}}],["screen",{"2":{"2":1,"71":1,"93":1,"246":1,"330":1}}],["scheme=",{"2":{"99":2}}],["schemes",{"2":{"96":1,"97":1,"108":1}}],["scheme",{"0":{"115":1},"2":{"95":2,"96":1,"97":1,"99":3,"110":1,"115":3,"157":1}}],["schemas",{"2":{"99":4}}],["schema",{"0":{"183":1},"2":{"15":1,"43":1,"44":1}}],["s",{"2":{"3":1,"19":1,"31":1,"32":3,"43":1,"44":1,"52":1,"60":1,"68":1,"76":1,"77":1,"80":2,"87":1,"101":1,"105":1,"107":1,"114":1,"125":1,"131":1,"135":1,"146":1,"183":2,"184":1,"185":1,"186":2,"190":1,"220":1,"235":1,"237":1,"240":1,"242":1,"244":1,"248":1,"251":1,"266":1,"275":2,"279":1,"326":1,"333":1,"346":2,"351":1,"352":3,"353":1,"357":1,"363":1,"365":1,"367":1,"388":1,"391":1,"392":1,"399":1,"403":1,"405":1,"411":1,"413":1,"443":1,"445":1,"450":1,"452":2,"459":1,"465":1,"466":1,"468":1,"469":2,"477":1,"479":1,"482":1,"485":1,"488":1,"490":1,"491":1,"492":1,"494":1,"496":1,"499":1,"501":1,"508":2,"512":1}}],["sufficient",{"2":{"443":1}}],["suffix",{"2":{"332":1}}],["sum",{"2":{"423":1,"424":1}}],["summarize",{"2":{"129":1}}],["summary",{"0":{"67":1},"2":{"67":1,"168":1}}],["suspicious",{"2":{"366":1}}],["suggestgastipcap",{"0":{"298":1},"2":{"298":1}}],["suggestgasprice",{"0":{"297":1},"2":{"297":1}}],["suggested",{"2":{"297":1,"298":1}}],["suggesting",{"2":{"43":1}}],["surf",{"2":{"243":1}}],["sure",{"2":{"15":1,"20":1,"47":1,"50":1,"80":1,"99":1,"119":2,"133":1,"146":1,"155":1,"156":1,"175":1,"177":1}}],["succeedednoresultstring",{"2":{"475":1,"478":1}}],["succeeded",{"2":{"185":1,"266":1,"439":2,"440":1,"476":3,"478":1}}],["success",{"2":{"146":1}}],["successful",{"0":{"439":1},"2":{"129":3,"438":1,"472":1,"475":1,"480":1}}],["successfultransactionreturn",{"2":{"117":1}}],["successfulcontractdeploymentreturn",{"2":{"102":1}}],["successfully",{"2":{"94":1,"95":1,"435":1,"439":1,"483":1}}],["such",{"2":{"3":2,"32":1,"46":1,"50":1,"80":1,"84":1,"91":1,"147":1,"188":1,"190":1,"199":1,"203":1,"213":1,"236":1,"340":1,"353":1,"355":1,"367":2,"378":1,"446":1,"447":1,"450":1,"466":1,"486":1,"492":1,"495":1}}],["suite",{"2":{"162":1}}],["suit",{"2":{"45":1,"114":1}}],["subpacket",{"2":{"459":1}}],["subpaths",{"2":{"157":1}}],["subdigests",{"2":{"428":1}}],["subdigest",{"0":{"428":1},"2":{"428":3,"430":1}}],["subtree",{"0":{"429":1},"2":{"426":1,"429":1}}],["subtle",{"2":{"41":1}}],["sub",{"2":{"267":3,"375":3}}],["submits",{"2":{"317":1,"318":1,"319":1,"320":1}}],["submitted",{"2":{"126":1,"319":3,"320":3}}],["submit",{"2":{"112":1,"116":1,"296":1}}],["substituting",{"2":{"465":2}}],["substitute",{"2":{"99":2}}],["subsequent",{"0":{"404":1},"2":{"159":1,"419":1}}],["subscribe",{"2":{"101":1}}],["subject",{"2":{"13":1,"436":2}}],["supplied",{"2":{"128":1}}],["supplies",{"0":{"177":1},"2":{"22":1,"175":1,"177":3}}],["supplement",{"2":{"105":1}}],["supplying",{"2":{"134":1}}],["supply",{"2":{"22":2,"51":1}}],["supports",{"2":{"37":1,"61":1,"154":1,"241":1,"264":1,"266":2,"341":1,"362":1,"500":1}}],["supported",{"0":{"21":1},"2":{"15":1,"21":1,"31":1,"32":1,"34":1,"41":1,"47":1,"96":1,"97":1,"145":1,"175":1,"177":1,"196":1,"209":1,"257":2,"261":1,"346":1,"363":1,"434":1,"435":1}}],["support",{"0":{"0":1,"242":1,"501":1},"2":{"0":3,"16":1,"17":1,"20":3,"25":1,"38":1,"39":2,"43":1,"79":1,"118":1,"155":1,"165":1,"168":1,"191":1,"243":1,"341":1,"347":1,"351":1,"362":1,"370":1,"397":1,"408":1,"414":1,"443":1}}],["super",{"2":{"20":2}}],["sudan",{"2":{"13":2}}],["stops",{"2":{"471":1}}],["storage",{"2":{"275":1,"278":1,"282":1,"386":1,"390":2,"417":1,"431":2,"508":1,"511":1,"515":1}}],["stores",{"2":{"129":1,"148":1}}],["storedcredentialsvalid",{"2":{"133":1}}],["storedcredentials",{"2":{"130":1}}],["stored",{"2":{"2":1,"139":4,"159":1,"275":1,"282":1,"354":2,"363":1,"365":1,"390":1,"417":1,"430":1,"449":1,"469":1,"508":1,"515":1}}],["store",{"2":{"2":1,"20":1,"45":2,"162":1,"163":2,"278":1,"386":1,"417":1,"511":1}}],["still",{"2":{"102":1,"106":1,"107":1,"112":2,"140":1,"242":1,"275":1,"353":1,"398":1,"436":1,"501":1,"508":1}}],["style",{"2":{"99":2}}],["styling",{"2":{"70":1}}],["strategy",{"2":{"354":1}}],["straightforward",{"2":{"165":1,"302":1}}],["straight",{"2":{"165":1}}],["streamlining",{"2":{"275":1,"508":1}}],["streamlines",{"2":{"267":1}}],["strength",{"2":{"44":1}}],["strictmode",{"2":{"435":2}}],["strictly",{"2":{"302":1,"450":1,"455":1}}],["stripe",{"2":{"243":1}}],["stringify",{"2":{"182":1,"184":1,"186":1}}],["strings",{"2":{"25":1,"38":2,"39":2}}],["string",{"2":{"25":2,"38":3,"39":3,"43":3,"44":1,"45":2,"78":1,"102":2,"110":1,"111":1,"118":1,"120":1,"122":1,"124":1,"125":1,"168":3,"169":4,"171":2,"173":8,"175":2,"177":3,"180":4,"183":15,"236":1,"283":1,"285":3,"287":1,"288":1,"290":1,"291":1,"294":2,"296":2,"302":2,"304":5,"306":1,"309":1,"317":1,"319":3,"321":2,"397":1,"409":1,"410":2,"430":3,"459":4,"495":1}}],["structured",{"0":{"410":1},"2":{"410":1}}],["structure",{"0":{"450":1,"473":1},"1":{"451":1,"452":1,"453":1,"454":1,"455":1,"456":1,"457":1,"458":1,"459":1,"460":1},"2":{"188":3,"190":2,"199":2,"201":2,"213":2,"214":2,"450":2,"473":1}}],["structures",{"2":{"43":1}}],["struct",{"2":{"134":1}}],["structs",{"2":{"130":1}}],["stunt",{"2":{"43":1}}],["stud",{"2":{"43":1}}],["step",{"0":{"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1},"2":{"3":1,"110":1,"164":2,"433":1,"465":1}}],["steps",{"0":{"92":1,"204":1,"379":1},"2":{"3":2,"63":1,"85":1,"98":1,"145":1}}],["standalone",{"2":{"108":2,"141":2}}],["standard",{"2":{"41":1,"43":1,"45":1,"119":1,"120":1,"121":1,"122":1,"123":2,"124":1,"191":1,"237":1,"242":2,"269":1,"270":1,"272":1,"309":1,"313":1,"370":1,"408":1,"473":1,"496":1,"501":2,"502":1,"503":1,"505":1}}],["standards",{"0":{"26":1,"41":1,"42":1},"1":{"43":1,"44":1,"45":1,"46":1},"2":{"19":1,"27":2,"37":1,"41":4,"43":1,"243":1}}],["static",{"2":{"109":1,"426":1,"428":3,"430":1}}],["status",{"0":{"444":1},"1":{"445":1,"446":1,"447":1},"2":{"39":1,"87":1,"183":1,"185":2,"439":3,"444":1,"464":1,"476":3,"490":1}}],["statemutability",{"2":{"459":2}}],["states",{"0":{"12":1},"2":{"11":3}}],["state",{"0":{"491":1},"2":{"2":1,"12":1,"106":1,"406":1,"425":1,"435":1,"490":3,"491":2}}],["stays",{"2":{"20":1}}],["starttime",{"2":{"464":1}}],["startingblocknumber",{"2":{"289":1}}],["starting",{"2":{"80":1,"105":1,"338":1,"468":1}}],["started",{"0":{"22":1,"56":1,"83":1,"164":1,"166":1,"358":1},"1":{"57":1,"58":1,"59":1,"84":1,"359":1,"360":1,"361":1},"2":{"14":1,"55":1,"84":1,"92":1,"164":2,"166":2,"204":1,"338":1,"369":1,"370":1,"374":1,"379":1}}],["start",{"2":{"0":1,"52":1,"58":1,"59":1,"131":1,"133":1,"134":2,"135":1,"163":2,"361":1}}],["stack",{"2":{"0":1,"5":1,"267":2,"340":1}}],["si",{"2":{"466":1}}],["situation",{"2":{"242":1,"501":1}}],["situations",{"2":{"188":1}}],["site",{"2":{"180":3}}],["side",{"0":{"237":1,"496":1},"2":{"133":1,"145":1,"199":1,"213":1,"237":1,"242":1,"275":1,"280":1,"281":1,"282":1,"353":1,"449":1,"452":1,"496":1,"501":1,"508":1,"513":1,"514":1,"515":1}}],["size",{"2":{"93":1,"96":1,"97":1}}],["six",{"2":{"44":1}}],["simulateresult",{"2":{"475":1,"478":1}}],["simulationno",{"2":{"475":1,"478":1}}],["simulationnogaslimitnumbergas",{"2":{"475":1,"478":1}}],["simulationyesreasonstring",{"2":{"475":1,"478":1}}],["simulation",{"2":{"440":1,"475":4,"478":4}}],["simulationssimulateresult",{"2":{"478":1}}],["simulations",{"2":{"439":1,"440":1,"476":1,"478":1}}],["simulating",{"2":{"440":1}}],["similarly",{"2":{"133":1,"225":1,"226":1,"319":1,"320":1,"434":1}}],["similar",{"2":{"41":1,"93":1,"117":1,"131":1,"146":1,"267":1,"270":1,"272":1,"310":1,"410":1,"503":1,"505":1}}],["simply",{"2":{"3":2,"15":1,"31":1,"32":1,"35":1,"47":1,"105":1,"126":1,"303":1,"305":1,"325":1,"468":1}}],["simpler",{"2":{"236":1,"495":1}}],["simple",{"2":{"1":1,"14":1,"20":2,"23":1,"27":1,"31":1,"33":1,"50":1,"128":1,"236":1,"243":1,"333":1,"344":1,"351":1,"435":1,"466":1,"495":1}}],["silently",{"2":{"307":1,"447":1}}],["silence",{"2":{"32":1}}],["silvercardid",{"2":{"32":1}}],["silver",{"2":{"32":1,"43":1,"44":3}}],["sign+verify",{"2":{"236":1,"495":1}}],["signtransactions",{"2":{"186":1,"273":1,"506":1}}],["signedmessage",{"2":{"321":2,"480":1,"481":1}}],["signedtransactionstring",{"2":{"296":1}}],["signed",{"0":{"409":1,"480":1},"1":{"481":1,"482":1},"2":{"186":2,"236":3,"237":1,"244":2,"257":1,"258":1,"259":1,"273":1,"275":1,"296":1,"354":1,"409":3,"410":1,"411":1,"424":1,"453":1,"466":1,"468":1,"480":1,"482":1,"488":1,"495":3,"496":1,"506":1,"508":1}}],["signer",{"0":{"351":1,"352":1,"414":1,"427":1},"1":{"415":1,"416":1},"2":{"158":1,"184":4,"269":4,"270":4,"271":4,"272":4,"273":2,"277":2,"279":1,"391":1,"414":2,"418":6,"426":1,"427":2,"502":4,"503":4,"504":4,"505":4,"506":2,"510":2,"512":1}}],["signerssigner",{"2":{"413":1}}],["signers",{"0":{"416":1},"2":{"158":1,"350":1,"386":1,"389":1,"391":1,"392":1,"396":1,"397":4,"409":1,"410":1,"412":1,"413":2,"415":2,"416":2,"418":1,"423":1,"424":1,"426":1,"427":1,"429":2}}],["signmessagereturn",{"2":{"111":1}}],["signmessage",{"0":{"321":1},"2":{"111":3,"279":1,"281":1,"321":2,"409":1,"410":1,"451":1,"453":3,"468":1,"488":1,"512":1,"514":1}}],["signs",{"2":{"87":1,"95":1,"317":1,"318":1,"319":1,"320":1,"354":1}}],["signinwithemail",{"0":{"258":1},"2":{"258":2}}],["signinwith",{"0":{"257":1},"2":{"257":2}}],["signinoptions",{"0":{"259":1},"2":{"244":2,"259":2}}],["signingin",{"2":{"435":1}}],["signing",{"2":{"93":1,"110":1,"111":1,"145":1,"165":1,"236":1,"250":1,"266":1,"273":1,"275":1,"408":1,"409":1,"410":1,"433":2,"446":1,"451":1,"495":1,"506":1,"508":1}}],["signin",{"0":{"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"135":1,"136":1},"1":{"73":1,"74":1,"75":1,"76":1,"77":1},"2":{"72":1,"81":1,"133":1,"433":1,"434":1,"435":1,"436":1,"437":1,"439":1,"440":1}}],["signatureno",{"2":{"480":1}}],["signaturevalidation",{"2":{"411":1}}],["signaturestringsignature",{"2":{"451":1}}],["signatures",{"0":{"274":1,"410":1,"469":1,"507":1},"2":{"242":1,"391":1,"392":1,"398":1,"409":1,"410":1,"411":5,"417":1,"422":1,"424":1,"450":1,"451":1,"453":1,"459":1,"460":1,"468":1,"469":1,"501":1}}],["signature",{"0":{"234":1,"280":1,"282":1,"408":1,"451":1,"493":1,"513":1,"515":1},"1":{"235":1,"236":1,"237":1,"409":1,"410":1,"411":1,"494":1,"495":1,"496":1},"2":{"51":1,"111":1,"125":2,"236":1,"237":1,"279":1,"280":2,"282":3,"302":1,"303":1,"321":1,"408":1,"409":2,"410":2,"411":8,"413":1,"414":1,"417":1,"423":1,"426":2,"428":3,"429":1,"431":1,"449":1,"451":3,"452":1,"453":1,"459":1,"460":1,"468":1,"469":2,"481":1,"495":1,"496":1,"512":1,"513":2,"515":3}}],["sign",{"0":{"72":1,"94":1,"95":1,"111":1,"279":1,"281":1,"433":2,"434":2,"453":1,"512":1,"514":1},"1":{"73":1,"74":1,"75":1,"76":1,"77":1,"96":1,"97":1,"98":1,"99":1,"100":1,"434":2,"435":2},"2":{"14":1,"52":1,"72":1,"73":1,"74":1,"75":1,"76":1,"87":1,"94":1,"95":2,"101":1,"104":1,"108":2,"110":1,"111":1,"156":1,"236":2,"244":1,"254":1,"257":1,"258":1,"259":1,"274":1,"279":1,"281":1,"321":1,"330":1,"332":1,"334":1,"350":1,"352":1,"422":1,"429":1,"433":1,"434":1,"468":1,"480":1,"495":2,"507":1,"512":1,"514":1}}],["singlesigner",{"2":{"184":1}}],["single",{"2":{"5":1,"32":1,"36":1,"46":1,"50":1,"123":1,"126":1,"168":1,"267":1,"269":1,"270":2,"271":3,"272":2,"319":1,"320":1,"326":1,"343":1,"363":1,"375":1,"430":2,"469":1,"502":1,"503":2,"504":3,"505":2}}],["since",{"2":{"2":1,"105":1,"126":1,"133":1,"293":1,"309":1,"365":1,"402":1,"403":1,"490":1}}],["several",{"2":{"267":1,"340":1,"357":1,"375":1}}],["sepolia",{"2":{"182":2,"339":1}}],["separated",{"2":{"32":1}}],["separate",{"2":{"20":1,"325":1}}],["self",{"2":{"389":1,"397":1,"402":1}}],["selling",{"2":{"163":1}}],["sell",{"2":{"151":1,"163":1}}],["selector",{"2":{"411":1}}],["selects",{"2":{"266":1}}],["selecting",{"2":{"190":1}}],["selection",{"2":{"184":1}}],["selectfee",{"2":{"184":1}}],["selectedoption",{"2":{"186":5}}],["selected",{"2":{"150":1}}],["select",{"2":{"96":2,"97":2,"145":1,"166":1,"184":1,"186":1,"329":1}}],["series",{"2":{"133":1,"149":1}}],["serves",{"2":{"105":1}}],["servers",{"2":{"101":1,"366":1}}],["serverless",{"0":{"8":1},"2":{"335":1,"357":1}}],["server",{"0":{"237":1,"496":1},"2":{"3":2,"15":1,"20":1,"188":2,"190":1,"199":1,"213":1,"237":2,"242":1,"280":1,"282":1,"496":2,"501":1,"513":1,"515":1}}],["services",{"2":{"19":2,"45":1,"155":1,"156":1,"242":1,"501":1}}],["service",{"0":{"2":1,"354":1},"2":{"1":4,"2":2,"3":1,"11":1,"13":1,"14":1,"19":1,"20":1,"23":1,"27":2,"31":3,"33":1,"35":2,"37":1,"39":1,"41":1,"50":1,"112":1,"283":1,"351":1,"352":1,"354":3,"491":1}}],["semi",{"2":{"123":1,"425":1}}],["semantic",{"2":{"107":1,"140":1}}],["sessionopened",{"2":{"483":1,"484":1}}],["sessionnoproofobjectcontains",{"2":{"452":1}}],["sessionno",{"2":{"451":1}}],["sessionid",{"2":{"433":1,"437":1,"468":1,"469":1,"484":1}}],["sessionhash",{"2":{"433":3,"434":2,"435":6}}],["sessionaddress",{"2":{"278":1,"282":1,"511":1,"515":1}}],["sessionwallet",{"2":{"278":2,"281":1,"511":2,"514":1}}],["sessionprivatekey",{"2":{"278":4,"511":4}}],["sessionsyespacket",{"2":{"450":1}}],["sessionsignature",{"2":{"281":1,"282":1,"514":1,"515":1}}],["sessions",{"0":{"436":1},"2":{"237":2,"433":1,"436":4,"437":2,"467":1,"496":2}}],["session",{"0":{"275":1,"276":1,"278":1,"281":1,"282":1,"365":1,"432":1,"437":1,"445":1,"447":1,"448":1,"452":1,"460":1,"483":1,"508":1,"509":1,"511":1,"514":1,"515":1},"1":{"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"433":1,"434":1,"435":1,"436":1,"437":1,"446":1,"484":1,"485":1,"510":1,"511":1,"512":1,"513":1,"514":1,"515":1},"2":{"93":1,"94":1,"129":2,"130":1,"184":4,"185":1,"266":1,"274":1,"275":4,"279":1,"280":2,"281":1,"282":5,"351":2,"364":4,"365":2,"366":1,"432":1,"434":3,"435":5,"437":4,"439":1,"440":1,"444":1,"445":2,"446":3,"447":3,"448":2,"450":1,"451":2,"452":5,"453":1,"459":1,"460":6,"468":1,"469":3,"483":1,"485":1,"507":1,"508":4,"512":1,"513":2,"514":1,"515":5}}],["sensitive",{"2":{"355":1}}],["sensical",{"2":{"41":1}}],["senttransactionresponse",{"2":{"439":1}}],["sent",{"2":{"148":1,"152":1,"269":1,"333":1,"439":1,"440":2,"449":1,"459":2,"475":1,"502":1}}],["sendnodatastringadditional",{"2":{"458":1}}],["sendnosafeboolwhether",{"2":{"457":1}}],["sendno",{"2":{"456":1}}],["sendpayload",{"2":{"449":1}}],["sendquery",{"2":{"305":3}}],["sendrawtransaction",{"0":{"296":1},"2":{"296":1}}],["sends",{"2":{"186":1,"331":1,"442":1,"447":1}}],["sendmetatxn",{"2":{"185":1}}],["senderc1155values",{"2":{"123":3,"126":2}}],["senderc1155",{"0":{"123":1,"458":1},"1":{"124":1},"2":{"123":1,"126":1}}],["senderc721",{"0":{"121":1,"457":1},"1":{"122":1},"2":{"121":1,"126":1}}],["senderc20",{"0":{"119":1,"456":1},"1":{"120":1},"2":{"119":1,"126":1,"446":1}}],["sendtransactionandwaitforreceipt",{"0":{"318":1},"2":{"303":2,"309":1,"311":1,"318":1,"320":1}}],["sendtransactionmethod",{"2":{"303":1}}],["sendtransactionmethodandwaitforreceipt",{"2":{"303":2,"309":1}}],["sendtransactionbatchandwaitforreceipts",{"0":{"320":1}}],["sendtransactionbatch",{"0":{"319":1},"2":{"270":1,"272":1,"319":1,"503":1,"505":1}}],["sendtransaction",{"0":{"317":1},"2":{"102":1,"117":2,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":2,"186":2,"269":2,"270":1,"271":2,"272":1,"273":2,"317":1,"439":1,"440":2,"447":1,"448":1,"454":2,"459":1,"476":1,"478":1,"488":1,"502":2,"503":1,"504":2,"505":1,"506":2}}],["sending",{"0":{"186":1,"269":1,"270":1,"271":1,"272":1,"273":1,"502":1,"503":1,"504":1,"505":1,"506":1},"2":{"102":1,"117":1,"126":2,"270":2,"272":2,"309":1,"433":1,"438":1,"440":1,"446":1,"503":2,"505":2}}],["send",{"0":{"454":1},"1":{"455":1,"456":1,"457":1,"458":1,"459":1},"2":{"50":1,"52":2,"118":2,"119":1,"120":1,"121":1,"122":1,"123":2,"124":1,"125":1,"134":1,"180":1,"186":1,"270":2,"271":3,"272":2,"303":1,"305":1,"309":1,"434":2,"443":1,"445":1,"452":1,"453":1,"454":1,"468":1,"475":1,"478":1,"503":2,"504":3,"505":2}}],["seamless",{"2":{"54":1,"82":1,"163":1,"165":1,"236":1,"352":1,"355":1,"356":1,"495":1}}],["seamlessly",{"0":{"202":1,"377":1},"1":{"203":1,"378":1},"2":{"20":1,"91":1,"203":1,"378":1}}],["seaman",{"2":{"43":1}}],["sequentially",{"2":{"319":1,"320":1}}],["sequenceonboard",{"2":{"217":2}}],["sequenceoptions",{"2":{"217":1}}],["sequencemodule",{"2":{"217":2}}],["sequencemetadata",{"2":{"25":2,"28":2,"38":2,"39":4}}],["sequencewallet",{"2":{"194":2}}],["sequencewaas",{"2":{"59":2,"361":2,"433":2,"434":2,"435":2,"436":2,"437":2,"439":1,"440":1}}],["sequenceutils",{"2":{"421":1}}],["sequenceui",{"2":{"146":1}}],["sequenceunreal",{"2":{"145":2}}],["sequenceplugin",{"2":{"138":2,"146":4}}],["sequencebackendmanager",{"2":{"133":3}}],["sequencesdk",{"2":{"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":2,"126":1}}],["sequencecontext",{"2":{"421":1}}],["sequenceconnector",{"2":{"207":2,"225":2,"226":3}}],["sequenceconfig",{"2":{"96":1,"97":1,"99":1,"104":1,"110":4,"283":1}}],["sequencecanvas",{"2":{"115":1}}],["sequenceethclient",{"2":{"283":2,"284":1}}],["sequenceethereum",{"2":{"107":1,"120":1,"122":1,"124":1,"283":1,"304":1,"307":3,"308":1,"312":1,"314":1}}],["sequenceencryptor",{"2":{"139":1}}],["sequenceexamples",{"2":{"93":1,"112":2}}],["sequencekit",{"0":{"90":1},"1":{"91":1},"2":{"165":1,"373":1,"374":1}}],["sequenceindexer",{"2":{"16":2,"168":2,"169":2,"171":2,"173":2,"175":2,"177":2,"180":2}}],["sequence",{"0":{"11":1,"12":1,"13":1,"51":1,"79":1,"83":1,"84":1,"128":1,"129":1,"131":1,"165":1,"202":1,"238":1,"265":1,"276":1,"277":1,"322":1,"328":1,"351":1,"352":1,"355":1,"377":1,"497":1,"509":1,"510":1},"1":{"12":1,"13":1,"80":1,"84":1,"166":1,"203":1,"239":1,"240":1,"241":1,"242":1,"277":1,"278":1,"279":1,"280":1,"281":1,"282":1,"323":1,"324":1,"325":1,"326":1,"327":1,"328":1,"329":1,"330":1,"331":1,"332":1,"333":1,"334":1,"335":1,"356":1,"378":1,"498":1,"499":1,"500":1,"501":1,"510":1,"511":1,"512":1,"513":1,"514":1,"515":1},"2":{"0":2,"1":2,"3":8,"4":2,"5":1,"6":1,"11":2,"13":1,"14":5,"15":5,"16":3,"17":4,"18":3,"19":6,"20":5,"23":2,"24":2,"25":5,"27":2,"28":2,"29":2,"30":3,"31":3,"32":4,"34":6,"36":1,"37":3,"38":5,"39":10,"41":1,"43":4,"44":1,"47":4,"49":2,"50":5,"51":7,"52":4,"58":2,"59":1,"60":5,"61":1,"63":1,"68":1,"70":2,"77":1,"79":2,"80":2,"81":2,"82":1,"83":1,"84":1,"89":1,"90":1,"91":1,"92":2,"99":5,"104":1,"105":1,"106":1,"107":2,"109":2,"110":2,"113":1,"115":1,"126":2,"128":6,"129":1,"133":1,"138":3,"140":4,"145":3,"146":3,"147":2,"148":1,"150":1,"151":1,"153":1,"154":1,"162":1,"165":1,"166":1,"168":7,"169":6,"171":6,"173":6,"175":7,"177":6,"179":1,"180":5,"182":2,"184":7,"185":1,"186":5,"191":6,"192":2,"197":1,"198":1,"202":1,"203":1,"204":2,"205":2,"210":1,"211":1,"215":2,"216":3,"217":1,"219":1,"220":1,"221":1,"225":1,"226":2,"228":1,"229":1,"231":2,"232":2,"233":1,"235":2,"236":3,"237":4,"240":5,"241":1,"242":5,"243":10,"244":9,"245":1,"255":2,"260":1,"261":1,"264":1,"265":1,"266":6,"267":3,"274":1,"275":1,"279":1,"280":1,"323":1,"328":1,"329":1,"333":1,"335":3,"339":2,"340":2,"341":4,"342":1,"348":1,"350":1,"351":2,"352":4,"353":4,"354":3,"355":3,"356":1,"357":5,"361":1,"362":4,"363":2,"364":3,"367":1,"369":3,"370":4,"371":1,"375":1,"377":1,"378":1,"379":2,"380":3,"386":2,"387":1,"391":1,"398":1,"408":1,"409":1,"410":1,"412":1,"422":1,"423":1,"428":1,"429":1,"430":2,"431":1,"432":1,"433":1,"434":1,"435":8,"439":1,"440":1,"443":1,"449":1,"464":1,"466":1,"472":1,"483":1,"489":1,"490":1,"491":3,"494":2,"495":3,"496":4,"499":5,"500":1,"501":5,"507":1,"508":1,"512":1,"513":1}}],["seqmetadata",{"2":{"25":2,"29":2,"38":2,"39":4}}],["seqindexer",{"2":{"17":2,"168":1,"169":1,"171":1,"173":1,"175":1,"177":1,"180":1}}],["setunlocksat",{"2":{"490":2,"491":1,"492":1}}],["setupcredentials",{"2":{"146":1}}],["setup",{"0":{"58":1,"59":1,"110":1,"143":1,"146":1,"360":1,"361":1},"2":{"102":1,"104":3,"105":1,"110":1,"111":1,"117":1,"128":2,"133":1,"144":1,"146":2,"158":1,"159":1,"189":1,"357":1,"367":1}}],["seterror",{"2":{"435":3}}],["setbasemetadatauri",{"2":{"331":1,"332":1}}],["setitem",{"2":{"278":1,"511":1}}],["setrelayer",{"2":{"184":1}}],["setprovider",{"2":{"184":1}}],["setopenwalletmodal",{"2":{"88":2}}],["setopenconnectmodal",{"2":{"87":2}}],["setting",{"0":{"85":1,"86":1},"2":{"155":1,"158":1,"188":1,"190":1}}],["settings",{"0":{"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1},"2":{"2":1,"19":1,"64":1,"66":1,"96":4,"97":4,"99":2,"110":1,"138":1,"145":2,"146":1,"244":8,"255":1,"256":1,"257":1,"258":1,"259":1,"260":1,"261":1,"262":1,"263":1}}],["setsigningin",{"2":{"435":1}}],["setsessionhash",{"2":{"435":3}}],["sets",{"2":{"3":1,"128":1,"435":1}}],["set",{"0":{"325":1,"328":1,"332":1},"2":{"2":1,"3":1,"19":1,"43":1,"95":1,"99":3,"115":3,"142":1,"263":1,"328":1,"331":1,"332":1,"386":1,"391":1,"403":1,"422":1,"428":1}}],["seemlessly",{"2":{"126":1}}],["seen",{"2":{"41":1,"45":1,"350":1,"465":1}}],["see",{"2":{"2":1,"14":1,"16":2,"17":2,"21":1,"24":1,"31":1,"32":3,"37":1,"43":3,"44":2,"45":1,"76":1,"77":1,"93":1,"99":2,"101":1,"106":2,"108":1,"118":1,"125":1,"147":2,"148":1,"149":1,"163":1,"168":1,"188":2,"191":3,"199":4,"213":4,"237":1,"242":1,"244":1,"256":1,"264":1,"334":1,"337":1,"341":1,"357":1,"362":1,"369":1,"370":1,"406":1,"433":1,"435":3,"439":1,"440":1,"451":1,"466":1,"496":1,"501":1}}],["security",{"0":{"139":1},"2":{"157":1,"243":2,"342":1,"351":1,"354":2,"363":1,"367":2,"461":1}}],["secured",{"2":{"364":1}}],["secure",{"2":{"90":1,"91":1,"148":1,"202":1,"203":1,"275":2,"351":1,"354":1,"355":1,"363":2,"377":1,"378":1,"469":1,"491":1,"508":2}}],["securely",{"2":{"2":2,"139":2,"335":1,"469":1}}],["secondsno",{"2":{"450":1}}],["secondsnopacket",{"2":{"450":1}}],["seconds",{"2":{"115":1,"249":2}}],["second",{"2":{"32":1,"105":1,"118":1,"433":1}}],["secret",{"2":{"2":3,"3":1,"449":1}}],["section",{"2":{"1":1,"3":1,"43":1,"46":1,"96":1,"97":1,"99":1,"118":1,"155":1,"160":1,"168":1,"199":2,"213":2,"328":1,"331":1,"334":1,"409":1,"410":1,"439":1,"440":1}}]],"serializationVersion":2} diff --git a/api/indexer/examples/fetch-tokens/index.html b/api/indexer/examples/fetch-tokens/index.html index ee6b4dd66d..8cc95766c2 100644 --- a/api/indexer/examples/fetch-tokens/index.html +++ b/api/indexer/examples/fetch-tokens/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Tokens API

diff --git a/api/indexer/examples/native-network-balance/index.html b/api/indexer/examples/native-network-balance/index.html index d51aab51c6..1dab9d8852 100644 --- a/api/indexer/examples/native-network-balance/index.html +++ b/api/indexer/examples/native-network-balance/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Native network balances (ie. ETH, MATIC, etc.)

diff --git a/api/indexer/examples/transaction-history/index.html b/api/indexer/examples/transaction-history/index.html index 0f26bc3c84..b88ab31764 100644 --- a/api/indexer/examples/transaction-history/index.html +++ b/api/indexer/examples/transaction-history/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Wallet transaction history

diff --git a/api/indexer/examples/transation-history-token-contract/index.html b/api/indexer/examples/transation-history-token-contract/index.html index edf3b585b3..e83d5cd745 100644 --- a/api/indexer/examples/transation-history-token-contract/index.html +++ b/api/indexer/examples/transation-history-token-contract/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Contract token history

diff --git a/api/indexer/examples/unique-tokens/index.html b/api/indexer/examples/unique-tokens/index.html index be5c4de8a6..3666d26bd7 100644 --- a/api/indexer/examples/unique-tokens/index.html +++ b/api/indexer/examples/unique-tokens/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Tokens in a contract

diff --git a/api/indexer/examples/webhook-listener/index.html b/api/indexer/examples/webhook-listener/index.html index b4defaaf65..3bd17f16ae 100644 --- a/api/indexer/examples/webhook-listener/index.html +++ b/api/indexer/examples/webhook-listener/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Webhook

diff --git a/api/indexer/installation/index.html b/api/indexer/installation/index.html index 61c41de6ce..3229c2b40e 100644 --- a/api/indexer/installation/index.html +++ b/api/indexer/installation/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Indexer Installation

diff --git a/api/indexer/metadata-tips/index.html b/api/indexer/metadata-tips/index.html index 607579f27a..63f4095c3c 100644 --- a/api/indexer/metadata-tips/index.html +++ b/api/indexer/metadata-tips/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Metadata Tips & Notes on Spam

diff --git a/api/indexer/overview/index.html b/api/indexer/overview/index.html index 765d32f6bc..7dd11f67c4 100644 --- a/api/indexer/overview/index.html +++ b/api/indexer/overview/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Indexer

diff --git a/api/marketplace/examples/create-simple-orders/index.html b/api/marketplace/examples/create-simple-orders/index.html index 877a64b160..54b6f97ba9 100644 --- a/api/marketplace/examples/create-simple-orders/index.html +++ b/api/marketplace/examples/create-simple-orders/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Create an Order via Blockexplorer

diff --git a/api/marketplace/examples/get-orderbook/index.html b/api/marketplace/examples/get-orderbook/index.html index fffe626222..4cff110c99 100644 --- a/api/marketplace/examples/get-orderbook/index.html +++ b/api/marketplace/examples/get-orderbook/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

GetOrderbookOrders

diff --git a/api/marketplace/examples/get-top-orders/index.html b/api/marketplace/examples/get-top-orders/index.html index 6ee52472fa..2aed1bc454 100644 --- a/api/marketplace/examples/get-top-orders/index.html +++ b/api/marketplace/examples/get-top-orders/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

GetTopOrders

diff --git a/api/marketplace/examples/get-user-activities/index.html b/api/marketplace/examples/get-user-activities/index.html index b40e28f7c6..81602046a5 100644 --- a/api/marketplace/examples/get-user-activities/index.html +++ b/api/marketplace/examples/get-user-activities/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

GetUserActivities

diff --git a/api/marketplace/examples/orderbook-transactions/index.html b/api/marketplace/examples/orderbook-transactions/index.html index 4c6a48ba34..27d5b8e011 100644 --- a/api/marketplace/examples/orderbook-transactions/index.html +++ b/api/marketplace/examples/orderbook-transactions/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Sequence Market Orderbook Transactions

diff --git a/api/marketplace/overview/index.html b/api/marketplace/overview/index.html index 9d21c34f32..1a640a4c1b 100644 --- a/api/marketplace/overview/index.html +++ b/api/marketplace/overview/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Marketplace API

diff --git a/api/metadata/contract-metadata/index.html b/api/metadata/contract-metadata/index.html index 3353f4bd91..e2515ce978 100644 --- a/api/metadata/contract-metadata/index.html +++ b/api/metadata/contract-metadata/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Contract Metadata

diff --git a/api/metadata/index.html b/api/metadata/index.html index b9eaf6c32f..9b6f5eea9a 100644 --- a/api/metadata/index.html +++ b/api/metadata/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Metadata API

diff --git a/api/metadata/overview/index.html b/api/metadata/overview/index.html index dac59b0a8d..e9a7ba0815 100644 --- a/api/metadata/overview/index.html +++ b/api/metadata/overview/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Metadata

diff --git a/api/metadata/rest-api/index.html b/api/metadata/rest-api/index.html index cb5bbc95df..4efe15f67f 100644 --- a/api/metadata/rest-api/index.html +++ b/api/metadata/rest-api/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Metadata REST API Reference & Usage

diff --git a/api/metadata/token-metadata/index.html b/api/metadata/token-metadata/index.html index e992da15a2..16f7d5d32e 100644 --- a/api/metadata/token-metadata/index.html +++ b/api/metadata/token-metadata/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Token Metadata

diff --git a/api/node-gateway/index.html b/api/node-gateway/index.html index fc5483c947..316d10edfe 100644 --- a/api/node-gateway/index.html +++ b/api/node-gateway/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Node Gateway

diff --git a/api/relayer/examples/fetch-fee-options/index.html b/api/relayer/examples/fetch-fee-options/index.html index 16da3117f2..8a1c53effb 100644 --- a/api/relayer/examples/fetch-fee-options/index.html +++ b/api/relayer/examples/fetch-fee-options/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Fetching fee options

diff --git a/api/relayer/examples/fetch-transaction-receipts/index.html b/api/relayer/examples/fetch-transaction-receipts/index.html index ca10be60c6..d149de95c2 100644 --- a/api/relayer/examples/fetch-transaction-receipts/index.html +++ b/api/relayer/examples/fetch-transaction-receipts/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Fetching transaction receipts

diff --git a/api/relayer/examples/send-transactions/index.html b/api/relayer/examples/send-transactions/index.html index 4f679fc2ff..6959ce08d0 100644 --- a/api/relayer/examples/send-transactions/index.html +++ b/api/relayer/examples/send-transactions/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Sending transactions

diff --git a/api/relayer/installation/index.html b/api/relayer/installation/index.html index 7dde913199..06897c6c47 100644 --- a/api/relayer/installation/index.html +++ b/api/relayer/installation/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Installation

diff --git a/api/relayer/overview/index.html b/api/relayer/overview/index.html index 09b53ffde3..b2cb91a095 100644 --- a/api/relayer/overview/index.html +++ b/api/relayer/overview/index.html @@ -12,8 +12,8 @@ - - + +
Skip to content

Relayer API

diff --git a/assets/01-deploy-D7rCzihm.js b/assets/01-deploy-B3PiTnA6.js similarity index 99% rename from assets/01-deploy-D7rCzihm.js rename to assets/01-deploy-B3PiTnA6.js index dc4bbec94f..2a62419ce1 100644 --- a/assets/01-deploy-D7rCzihm.js +++ b/assets/01-deploy-B3PiTnA6.js @@ -1,4 +1,4 @@ -import{d as a,j as e,e as d}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const o={title:"Deploy Process V1",description:"undefined"};function t(n){const s={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"deploy-process-v1",children:["Deploy Process V1",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-process-v1",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e,e as d}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const o={title:"Deploy Process V1",description:"undefined"};function t(n){const s={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"deploy-process-v1",children:["Deploy Process V1",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-process-v1",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.p,{children:["The following steps are required to deploy the ",e.jsx(s.a,{href:"/solutions/technical-references/internals/v1/deploy",children:"Sequence Wallet V1 Context"})," on a new network."]}),` `,e.jsx(d,{type:"info",children:e.jsxs(s.p,{children:["Notice ",e.jsx("br",{}),` For most popular networks this process `,e.jsx(s.strong,{children:"is not"}),` required; due to the wallet contracts diff --git a/assets/android-CmcWYvVq.js b/assets/5189-4337-DBHsDifh.js similarity index 75% rename from assets/android-CmcWYvVq.js rename to assets/5189-4337-DBHsDifh.js index 04587697eb..02edfbd55e 100644 --- a/assets/android-CmcWYvVq.js +++ b/assets/5189-4337-DBHsDifh.js @@ -1 +1 @@ -import{d as r,j as n}from"./index-BG6_g6N7.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; +import{d as r,j as n}from"./index-XAh3cByi.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/CardGrid-Dee1eEnV.js b/assets/CardGrid-Bkj_ERUR.js similarity index 87% rename from assets/CardGrid-Dee1eEnV.js rename to assets/CardGrid-Bkj_ERUR.js index 80e3865808..5be4fe74cb 100644 --- a/assets/CardGrid-Dee1eEnV.js +++ b/assets/CardGrid-Bkj_ERUR.js @@ -1 +1 @@ -import{j as s}from"./index-BG6_g6N7.js";const n=({title:a,description:r,icon:c,link:d})=>{const e=s.jsxs("div",{className:"card",children:[s.jsx("div",{className:"card-icon",children:c}),s.jsxs("div",{className:"card-content",children:[s.jsx("h2",{className:"card-title",children:a}),s.jsx("p",{className:"card-description",children:r})]})]});return s.jsx("a",{href:d,className:"card-link",children:e})},t=({children:a})=>s.jsx("div",{className:"card-grid",children:a});export{t as C,n as a}; +import{j as s}from"./index-XAh3cByi.js";const n=({title:a,description:r,icon:c,link:d})=>{const e=s.jsxs("div",{className:"card",children:[s.jsx("div",{className:"card-icon",children:c}),s.jsxs("div",{className:"card-content",children:[s.jsx("h2",{className:"card-title",children:a}),s.jsx("p",{className:"card-description",children:r})]})]});return s.jsx("a",{href:d,className:"card-link",children:e})},t=({children:a})=>s.jsx("div",{className:"card-grid",children:a});export{t as C,n as a}; diff --git a/assets/FAQ-B-oPq44y.js b/assets/FAQ-Dxs2K3Xv.js similarity index 99% rename from assets/FAQ-B-oPq44y.js rename to assets/FAQ-Dxs2K3Xv.js index 2213d78b67..041c67e97b 100644 --- a/assets/FAQ-B-oPq44y.js +++ b/assets/FAQ-Dxs2K3Xv.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const a={sidebar_label:"FAQ"};function i(n){const s={a:"a",code:"code",div:"div",h2:"h2",h3:"h3",p:"p",pre:"pre",span:"span",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.p,{children:"Below are frequently asked questions related to the integration of the Sequence wallet connector."}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const a={sidebar_label:"FAQ"};function i(n){const s={a:"a",code:"code",div:"div",h2:"h2",h3:"h3",p:"p",pre:"pre",span:"span",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.p,{children:"Below are frequently asked questions related to the integration of the Sequence wallet connector."}),` `,e.jsxs(s.h2,{id:"nextjs",children:["NextJs",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#nextjs",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(s.h3,{id:"why-does-my-wallet-integration-produce-an-error-when-used-with-nextjs",children:["Why does my wallet integration produce an error when used with next.js?",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#why-does-my-wallet-integration-produce-an-error-when-used-with-nextjs",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(s.p,{children:"Wallet libraries and connectors must be rendered in the browser. This is particularly true for Wagmi and Wagmi-based libraries. Attempts to render the page elsewhere, such as on backend server, can produce errors in some situations. Rendering on the server is therefore highly discouraged."}),` diff --git a/assets/Video-CiIVMpgC.js b/assets/Video--Gq6B73C.js similarity index 90% rename from assets/Video-CiIVMpgC.js rename to assets/Video--Gq6B73C.js index ee3f87931c..d0793f08ff 100644 --- a/assets/Video-CiIVMpgC.js +++ b/assets/Video--Gq6B73C.js @@ -1 +1 @@ -import{r as t,j as s}from"./index-BG6_g6N7.js";const a=i=>{const e=t.useRef(null),r=t.useRef(null);return t.useEffect(()=>{const c=()=>{r.current&&e.current&&(r.current.style.display="block",e.current.style.display="none",r.current.src+="?autoplay=1")},n=e.current;return n.addEventListener("click",c),()=>{n.removeEventListener("click",c)}},[]),s.jsxs("div",{className:"video-container",children:[s.jsx("img",{ref:e,className:"preview-image",src:i.videoPreviewSrc,alt:"Preview"}),s.jsx("video",{ref:r,className:"video-frame",width:"560",height:"315",controls:!0,muted:!0,src:i.videoSrc,type:"video/mp4",style:{display:"none"}})]})};export{a as V}; +import{r as t,j as s}from"./index-XAh3cByi.js";const a=i=>{const e=t.useRef(null),r=t.useRef(null);return t.useEffect(()=>{const c=()=>{r.current&&e.current&&(r.current.style.display="block",e.current.style.display="none",r.current.src+="?autoplay=1")},n=e.current;return n.addEventListener("click",c),()=>{n.removeEventListener("click",c)}},[]),s.jsxs("div",{className:"video-container",children:[s.jsx("img",{ref:e,className:"preview-image",src:i.videoPreviewSrc,alt:"Preview"}),s.jsx("video",{ref:r,className:"video-frame",width:"560",height:"315",controls:!0,muted:!0,src:i.videoSrc,type:"video/mp4",style:{display:"none"}})]})};export{a as V}; diff --git a/assets/action-payloads-DMgLhsRB.js b/assets/action-payloads-C9CQQ1j5.js similarity index 99% rename from assets/action-payloads-DMgLhsRB.js rename to assets/action-payloads-C9CQQ1j5.js index 4a05cae54e..83dd6d5b97 100644 --- a/assets/action-payloads-DMgLhsRB.js +++ b/assets/action-payloads-C9CQQ1j5.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-BG6_g6N7.js";const d={title:"Action payloads",description:"undefined"};function l(i){const e={a:"a",aside:"aside",blockquote:"blockquote",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"action-payloads",children:["Action payloads",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#action-payloads",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-XAh3cByi.js";const d={title:"Action payloads",description:"undefined"};function l(i){const e={a:"a",aside:"aside",blockquote:"blockquote",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"action-payloads",children:["Action payloads",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#action-payloads",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Every Sequence Embedded Wallet action that involves a write operation makes use of a payload. Payloads are JSON objects that contain all information about the intent of the action, alongside with the signature of the user that is performing the action."}),` `,s.jsx(e.p,{children:"Payloads are generated with the Embedded Wallet SDK and should be sent to the Embedded Wallet API in order to complete the action."}),` `,s.jsxs(e.aside,{"data-callout":"tip",children:[s.jsxs(e.p,{children:["Calls to the Embedded Wallet API are authenticated with the Embedded Wallet API key, including calls to the ",s.jsx(e.code,{children:"/sendPayload"})," endpoint."]}),s.jsx(e.p,{children:"The Embedded Wallet API key is a secret key that should be kept safe and should never be shared with anyone, nor stored in a client-side application."})]}),` diff --git a/assets/analytics-Bqxx7fM1.js b/assets/analytics-tIxLfKgY.js similarity index 98% rename from assets/analytics-Bqxx7fM1.js rename to assets/analytics-tIxLfKgY.js index 570660941b..e2da511fc1 100644 --- a/assets/analytics-Bqxx7fM1.js +++ b/assets/analytics-tIxLfKgY.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const r={title:"Analytics in Builder",description:"undefined"};function a(n){const t={a:"a",aside:"aside",div:"div",em:"em",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",p:"p",strong:"strong",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"analytics-in-builder",children:["Analytics in Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#analytics-in-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const r={title:"Analytics in Builder",description:"undefined"};function a(n){const t={a:"a",aside:"aside",div:"div",em:"em",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",p:"p",strong:"strong",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"analytics-in-builder",children:["Analytics in Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#analytics-in-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:`When you use Sequence, via our SDKs, to build your application, you can see key insights in Sequence Builder. You don't need to do any additional work to see valuable metrics about your project, such as the number of connected wallets or daily transaction requests.`}),` diff --git a/assets/iOS-CmcWYvVq.js b/assets/android-bRRaAnqq.js similarity index 75% rename from assets/iOS-CmcWYvVq.js rename to assets/android-bRRaAnqq.js index 04587697eb..02edfbd55e 100644 --- a/assets/iOS-CmcWYvVq.js +++ b/assets/android-bRRaAnqq.js @@ -1 +1 @@ -import{d as r,j as n}from"./index-BG6_g6N7.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; +import{d as r,j as n}from"./index-XAh3cByi.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/api-integration-nT-hPth-.js b/assets/api-integration-2IO0N7QE.js similarity index 99% rename from assets/api-integration-nT-hPth-.js rename to assets/api-integration-2IO0N7QE.js index f9c7d3b0e0..3984270295 100644 --- a/assets/api-integration-nT-hPth-.js +++ b/assets/api-integration-2IO0N7QE.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const a={title:"API Integration",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"api-integration",children:["API Integration",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#api-integration",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const a={title:"API Integration",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"api-integration",children:["API Integration",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#api-integration",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.h3,{id:"sequence-api",children:["Sequence API",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-api",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(s.p,{children:["After you've completed initial authentication and have intercepted the credentials either through your UI or ours, to use the Sequence API you'll need to create a ",e.jsx(s.code,{children:"[USequenceWallet]"})," by using:"]}),` `,e.jsx(s.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:e.jsx(s.code,{children:e.jsxs(s.span,{className:"line",children:[e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"`[USequenceWallet "}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"*"}),e.jsx(s.span,{style:{color:"#E36209","--shiki-dark":"#F69D50"},children:" Api"}),e.jsx(s.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:" USequenceWallet"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(CredentialsIn)]` or `[USequenceWallet * Api = USequenceWallet::Make("}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"CredentialsIn"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:", "}),e.jsx(s.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"ProviderURL"}),e.jsx(s.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:")]`"})]})})}),` diff --git a/assets/architecture-BNgaCcor.js b/assets/architecture-2NKK-4JR.js similarity index 99% rename from assets/architecture-BNgaCcor.js rename to assets/architecture-2NKK-4JR.js index ad676b1d42..a04404e754 100644 --- a/assets/architecture-BNgaCcor.js +++ b/assets/architecture-2NKK-4JR.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const r={title:"Overview",description:"undefined"};function n(a){const t={a:"a",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"overview",children:["Overview",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const r={title:"Overview",description:"undefined"};function n(a){const t={a:"a",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",strong:"strong",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"overview",children:["Overview",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(t.h2,{id:"embedded-wallets-architecture",children:["Embedded Wallets Architecture",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#embedded-wallets-architecture",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(t.p,{children:"Sequence Embedded Wallets are native smart contract multisigs, the configuration of the multisig can be seen as a 2/2, both of which are required to sign in order to operate them; each one of the signers protects the wallet from a different facet of possible threats."}),` `,e.jsxs(t.h2,{id:"signer-1-sequence-auth",children:["Signer 1: Sequence Auth",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#signer-1-sequence-auth",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/auth-address-CTdGsSyF.js b/assets/auth-address-DCLM4-dc.js similarity index 99% rename from assets/auth-address-CTdGsSyF.js rename to assets/auth-address-DCLM4-dc.js index 0188b93c2b..26fcbc8e8a 100644 --- a/assets/auth-address-CTdGsSyF.js +++ b/assets/auth-address-DCLM4-dc.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-BG6_g6N7.js";const a={title:"Authenticate Users with Message Signature",description:"undefined"};function r(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authenticate-users-with-message-signature",children:["Authenticate Users with Message Signature",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authenticate-users-with-message-signature",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-XAh3cByi.js";const a={title:"Authenticate Users with Message Signature",description:"undefined"};function r(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authenticate-users-with-message-signature",children:["Authenticate Users with Message Signature",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authenticate-users-with-message-signature",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h2,{id:"ask-for-the-wallet-address",children:["Ask for the wallet address",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#ask-for-the-wallet-address",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:"To get the user's Sequence wallet address:"}),` `,s.jsx(e.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(e.code,{children:[s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" wallet"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" sequence."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"getWallet"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"()"})]}),` diff --git a/assets/auth-address-DzIAvudm.js b/assets/auth-address-q5iOn_cj.js similarity index 99% rename from assets/auth-address-DzIAvudm.js rename to assets/auth-address-q5iOn_cj.js index 0188b93c2b..26fcbc8e8a 100644 --- a/assets/auth-address-DzIAvudm.js +++ b/assets/auth-address-q5iOn_cj.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-BG6_g6N7.js";const a={title:"Authenticate Users with Message Signature",description:"undefined"};function r(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authenticate-users-with-message-signature",children:["Authenticate Users with Message Signature",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authenticate-users-with-message-signature",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-XAh3cByi.js";const a={title:"Authenticate Users with Message Signature",description:"undefined"};function r(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authenticate-users-with-message-signature",children:["Authenticate Users with Message Signature",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authenticate-users-with-message-signature",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h2,{id:"ask-for-the-wallet-address",children:["Ask for the wallet address",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#ask-for-the-wallet-address",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:"To get the user's Sequence wallet address:"}),` `,s.jsx(e.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(e.code,{children:[s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" wallet"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" sequence."}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"getWallet"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"()"})]}),` diff --git a/assets/authentication-C3lG4pLk.js b/assets/authentication-BIRu5GPw.js similarity index 99% rename from assets/authentication-C3lG4pLk.js rename to assets/authentication-BIRu5GPw.js index 19e15159e2..104e049a60 100644 --- a/assets/authentication-C3lG4pLk.js +++ b/assets/authentication-BIRu5GPw.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-BG6_g6N7.js";const a={title:"Authentication",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authentication",children:["Authentication",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authentication",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-XAh3cByi.js";const a={title:"Authentication",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authentication",children:["Authentication",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authentication",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h3,{id:"custom-ui-integration",children:["Custom UI Integration",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#custom-ui-integration",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["In a C++ backend with a series of pass through ",s.jsx(e.code,{children:"[UFUNCTIONS]"})," setup similarly to ",s.jsx(e.code,{children:"[SequenceBackendManager.h/.cpp]"}),". Each of these calls are implemented in ",s.jsx(e.code,{children:"[UAuthenticator]"})," you just need to pass through the data with YOUR UAuthenticator UObject"]}),` `,s.jsx(e.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(e.code,{children:[s.jsx(e.span,{className:"line",children:s.jsx(e.span,{style:{color:"#6A737D","--shiki-dark":"#768390"},children:"//This call is platform dependent on windows & mac this is required for SSO WIP"})}),` diff --git a/assets/authentication-vY9W46eZ.js b/assets/authentication-ChcPb0ip.js similarity index 99% rename from assets/authentication-vY9W46eZ.js rename to assets/authentication-ChcPb0ip.js index f6c4bc3dcd..5b5744f1ab 100644 --- a/assets/authentication-vY9W46eZ.js +++ b/assets/authentication-ChcPb0ip.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-BG6_g6N7.js";const a={title:"Authentication",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authentication",children:["Authentication",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authentication",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-XAh3cByi.js";const a={title:"Authentication",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"authentication",children:["Authentication",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#authentication",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["As a WaaS SDK, authentication is extremely important. Authentication works by establishing a session signing wallet through association with an ",s.jsx(e.a,{href:"https://auth0.com/docs/secure/tokens/id-tokens/id-token-structure#sample-id-token",children:"OIDC idToken"}),". For more on how our Embedded Wallet works, please ",s.jsx(e.a,{href:"/solutions/wallets/embedded-wallet/overview",children:"see Embedded Wallet docs"}),"."]}),` `,s.jsxs(e.p,{children:["To implement authentication, we recommend using our ",s.jsx(e.code,{children:"LoginPanel"})," prefab. Locate this prefab under ",s.jsx(e.code,{children:"SequenceExamples > Prefabs"})," and drag it under a ",s.jsx(e.a,{href:"https://docs.unity3d.com/2020.1/Documentation/Manual/UICanvas.html",children:"Canvas"}),` in your scene. We recommend having the `,s.jsx(e.code,{children:"Canvas Scaler"})," component attached to your ",s.jsx(e.code,{children:"Canvas"}),' use the "Scale with Screen Size" UI Scale Mode. This will make it so that the LoginPanel (and any other UI elements under this Canvas) are scaled automatically when switching between build targets.']}),` diff --git a/assets/building-backends-9F7Pmovf.js b/assets/building-backends-L4KCyi28.js similarity index 98% rename from assets/building-backends-9F7Pmovf.js rename to assets/building-backends-L4KCyi28.js index 7c96b8a933..1e66f8c127 100644 --- a/assets/building-backends-9F7Pmovf.js +++ b/assets/building-backends-L4KCyi28.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const r={title:"Building Backends with Sequence",description:"undefined"};function s(t){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"building-backends-with-sequence",children:["Building Backends with Sequence",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#building-backends-with-sequence",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const r={title:"Building Backends with Sequence",description:"undefined"};function s(t){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"building-backends-with-sequence",children:["Building Backends with Sequence",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#building-backends-with-sequence",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.h3,{id:"nodejs",children:["nodejs",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#nodejs",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.p,{children:["The ",e.jsx(n.a,{href:"https://github.com/0xsequence/sequence.js",children:"0xsequence"}),` package which is available for browser / client use, also works perfectly on nodejs backends written in Javascript or Typescript.`]}),` diff --git a/assets/building-backends-D2FPQeru.js b/assets/building-backends-QPy24YOg.js similarity index 98% rename from assets/building-backends-D2FPQeru.js rename to assets/building-backends-QPy24YOg.js index 7c96b8a933..1e66f8c127 100644 --- a/assets/building-backends-D2FPQeru.js +++ b/assets/building-backends-QPy24YOg.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const r={title:"Building Backends with Sequence",description:"undefined"};function s(t){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"building-backends-with-sequence",children:["Building Backends with Sequence",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#building-backends-with-sequence",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const r={title:"Building Backends with Sequence",description:"undefined"};function s(t){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"building-backends-with-sequence",children:["Building Backends with Sequence",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#building-backends-with-sequence",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.h3,{id:"nodejs",children:["nodejs",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#nodejs",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.p,{children:["The ",e.jsx(n.a,{href:"https://github.com/0xsequence/sequence.js",children:"0xsequence"}),` package which is available for browser / client use, also works perfectly on nodejs backends written in Javascript or Typescript.`]}),` diff --git a/assets/building-relaying-server-DF4VjEP5.js b/assets/building-relaying-server-C7vW5CBa.js similarity index 99% rename from assets/building-relaying-server-DF4VjEP5.js rename to assets/building-relaying-server-C7vW5CBa.js index c47348a197..146477ee3b 100644 --- a/assets/building-relaying-server-DF4VjEP5.js +++ b/assets/building-relaying-server-C7vW5CBa.js @@ -1,4 +1,4 @@ -import{d as r,j as s,e as i}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Building a Relaying Server",description:"undefined"};function l(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",p:"p",pre:"pre",span:"span",...r(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"building-a-relaying-server",children:["Building a Relaying Server",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#building-a-relaying-server",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s,e as i}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Building a Relaying Server",description:"undefined"};function l(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",p:"p",pre:"pre",span:"span",...r(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"building-a-relaying-server",children:["Building a Relaying Server",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#building-a-relaying-server",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:`With Sequence, you can create a smart contract wallet your server can use to dispatch transactions for your users without you having to be worried about transaction speed, throughput and re-orgs.`}),` `,s.jsx(i,{type:"info",children:s.jsx(e.p,{children:"By default, Sequence transactions will be executed sequentially."})}),` diff --git a/assets/chain-support-72pkJN_2.js b/assets/chain-support-CAp0Jfap.js similarity index 98% rename from assets/chain-support-72pkJN_2.js rename to assets/chain-support-CAp0Jfap.js index 83cba1cbb2..8f40dfb486 100644 --- a/assets/chain-support-72pkJN_2.js +++ b/assets/chain-support-CAp0Jfap.js @@ -1,4 +1,4 @@ -import{j as e,d as p}from"./index-BG6_g6N7.js";const d=({title:t})=>e.jsx("th",{children:t}),c=({children:t,index:n})=>{const r=n%2===0?"#3c393f":"#1e1d1f";return e.jsx("tr",{style:{backgroundColor:r},children:t})},a=({content:t,imgSrc:n})=>e.jsx("td",{children:e.jsxs("div",{className:"cell-content",children:[n&&e.jsx("img",{src:n,alt:"",className:"cell-image network-logo"}),e.jsx("span",{className:"cell-text",children:t})]})}),s=({rows:t,columns:n})=>e.jsxs("table",{children:[e.jsx("thead",{children:e.jsx("tr",{children:n.map(r=>e.jsx(d,{title:r}))})}),e.jsx("tbody",{children:t.map((r,i)=>e.jsxs(c,{index:i,children:[e.jsx(a,{content:r.network,imgSrc:r.networkImage}),e.jsx(a,{content:r.chainHandle}),e.jsx(a,{content:r.indexerEndpoint})]},i))})]}),h={title:"Multi-Chain Support",description:"undefined"};function o(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",strong:"strong",...p(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"multi-chain-support",children:["Multi-Chain Support",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#multi-chain-support",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{j as e,d as p}from"./index-XAh3cByi.js";const d=({title:t})=>e.jsx("th",{children:t}),c=({children:t,index:n})=>{const r=n%2===0?"#3c393f":"#1e1d1f";return e.jsx("tr",{style:{backgroundColor:r},children:t})},a=({content:t,imgSrc:n})=>e.jsx("td",{children:e.jsxs("div",{className:"cell-content",children:[n&&e.jsx("img",{src:n,alt:"",className:"cell-image network-logo"}),e.jsx("span",{className:"cell-text",children:t})]})}),s=({rows:t,columns:n})=>e.jsxs("table",{children:[e.jsx("thead",{children:e.jsx("tr",{children:n.map(r=>e.jsx(d,{title:r}))})}),e.jsx("tbody",{children:t.map((r,i)=>e.jsxs(c,{index:i,children:[e.jsx(a,{content:r.network,imgSrc:r.networkImage}),e.jsx(a,{content:r.chainHandle}),e.jsx(a,{content:r.indexerEndpoint})]},i))})]}),h={title:"Multi-Chain Support",description:"undefined"};function o(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",strong:"strong",...p(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"multi-chain-support",children:["Multi-Chain Support",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#multi-chain-support",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,` `,e.jsxs(n.strong,{children:["Sequence Status Page: ",e.jsx(n.a,{href:"https://status.sequence.info",children:"https://status.sequence.info"})]}),` `,e.jsxs(n.p,{children:[`Sequence can support all EVM compatible chains. The networks below are currently supported by Sequence Wallet, Sequence Indexer, diff --git a/assets/checkout-C8LEfIgE.js b/assets/checkout-B4UHRtYW.js similarity index 99% rename from assets/checkout-C8LEfIgE.js rename to assets/checkout-B4UHRtYW.js index 1ad6ce55a6..a8d8b7de4d 100644 --- a/assets/checkout-C8LEfIgE.js +++ b/assets/checkout-B4UHRtYW.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-BG6_g6N7.js";const a={sidebar_label:"Checkout",title:"Overview",description:"undefined"};function l(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"overview",children:["Overview",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-XAh3cByi.js";const a={sidebar_label:"Checkout",title:"Overview",description:"undefined"};function l(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"overview",children:["Overview",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(i.p,{children:"The checkout modal enables developers to easily facilitate cryptocurrency payments."}),` `,s.jsx("div",{class:"text--center",children:s.jsx("img",{src:"/img/kit/checkout-modal.png"})}),` `,s.jsx(i.header,{children:s.jsxs(i.h1,{id:"integration",children:["Integration",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integration",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` diff --git a/assets/clients-BxLM8xrW.js b/assets/clients-DLuXEITI.js similarity index 99% rename from assets/clients-BxLM8xrW.js rename to assets/clients-DLuXEITI.js index f3bedfb183..c5bf9f7061 100644 --- a/assets/clients-BxLM8xrW.js +++ b/assets/clients-DLuXEITI.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-BG6_g6N7.js";const r={title:"Clients",description:"undefined"};function n(a){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...s(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"clients",children:["Clients",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#clients",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-XAh3cByi.js";const r={title:"Clients",description:"undefined"};function n(a){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...s(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"clients",children:["Clients",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#clients",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(i.p,{children:["In the context of SequenceEthereum, a ",e.jsx(i.code,{children:"Client"})," is defined by the ",e.jsxs(i.a,{href:"https://github.com/0xsequence/sequence-unity/blob/master/Assets/SequenceSDK/Ethereum/Provider/IEthClient.cs",children:[e.jsx(i.code,{children:"IEthClient"})," interface"]}),"."]}),` `,e.jsxs(i.p,{children:["Creating a client requires a ",e.jsx(i.code,{children:"Chain"}),". This will use our highly available and responsive Node Gateway service for your RPC requests; accessed using the API key from the Builder you've provided in your ",e.jsx(i.code,{children:"SequenceConfig"})," scriptable object. If you prefer to use your own RPC URL, you can create a ",e.jsx(i.code,{children:"SequenceEthClient"})," using a URL string as a parameter instead."]}),` `,e.jsx(i.p,{children:"You can create a client using this snippet:"}),` diff --git a/assets/configuration-CGKlLIFM.js b/assets/configuration-B5pMyXcn.js similarity index 99% rename from assets/configuration-CGKlLIFM.js rename to assets/configuration-B5pMyXcn.js index 6f7ba8bf70..1d91f349ec 100644 --- a/assets/configuration-CGKlLIFM.js +++ b/assets/configuration-B5pMyXcn.js @@ -1,4 +1,4 @@ -import{d as t,j as e}from"./index-BG6_g6N7.js";const d={sidebar_label:"Configuration",title:"Configuration Options",description:"undefined"};function s(n){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...t(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"configuration-options",children:["Configuration Options",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#configuration-options",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as t,j as e}from"./index-XAh3cByi.js";const d={sidebar_label:"Configuration",title:"Configuration Options",description:"undefined"};function s(n){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...t(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"configuration-options",children:["Configuration Options",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#configuration-options",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(i.p,{children:["Developers can customize the Sequence Kit experience by passing configuration options to the ",e.jsx(i.code,{children:"KitProvider"})," wrapper."]}),` `,e.jsx(i.p,{children:"Here's how you can configure the kit using these options:"}),` `,e.jsx(i.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:e.jsxs(i.code,{children:[e.jsx(i.span,{className:"line","data-empty-line":!0,children:" "}),` diff --git a/assets/configuration-D_ik4Rx1.js b/assets/configuration-C9EpHVaQ.js similarity index 99% rename from assets/configuration-D_ik4Rx1.js rename to assets/configuration-C9EpHVaQ.js index e65835421c..a142aad31a 100644 --- a/assets/configuration-D_ik4Rx1.js +++ b/assets/configuration-C9EpHVaQ.js @@ -1,4 +1,4 @@ -import{d as l,j as e}from"./index-BG6_g6N7.js";const a={title:"Wallet Configuration",description:"undefined"};function n(i){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...l(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"wallet-configuration",children:["Wallet Configuration",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-configuration",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as e}from"./index-XAh3cByi.js";const a={title:"Wallet Configuration",description:"undefined"};function n(i){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...l(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"wallet-configuration",children:["Wallet Configuration",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-configuration",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:'In the context of Sequence Wallets, the "Wallet Configuration" is a set of parameters that defines the behavior of the wallet, primarily used to define the access control of the wallet, meaning who can sign transactions and how many signatures are needed.'}),` `,e.jsxs(s.h2,{id:"top-level-properties",children:["Top level properties",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#top-level-properties",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(s.p,{children:"Sequence v2 configurations contain the following 3 properties:"}),` diff --git a/assets/connect-wallet-C35QV4if.js b/assets/connect-wallet-BoxIW1C-.js similarity index 99% rename from assets/connect-wallet-C35QV4if.js rename to assets/connect-wallet-BoxIW1C-.js index 518f9b9be2..91c418d0ed 100644 --- a/assets/connect-wallet-C35QV4if.js +++ b/assets/connect-wallet-BoxIW1C-.js @@ -1,4 +1,4 @@ -import{d as l,j as e}from"./index-BG6_g6N7.js";const r={title:"Connect Wallet",description:"undefined"};function i(s){const n={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",...l(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"connect-wallet",children:["Connect Wallet",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#connect-wallet",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as e}from"./index-XAh3cByi.js";const r={title:"Connect Wallet",description:"undefined"};function i(s){const n={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",...l(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"connect-wallet",children:["Connect Wallet",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#connect-wallet",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"Sequence is a very flexible wallet which allow users multiple ways to connect / access their wallet. This includes:"}),` `,e.jsxs(n.ol,{children:[` `,e.jsxs(n.li,{children:[` diff --git a/assets/connect-wallet-C-S7CgVB.js b/assets/connect-wallet-Bx11cq4A.js similarity index 99% rename from assets/connect-wallet-C-S7CgVB.js rename to assets/connect-wallet-Bx11cq4A.js index 3d84dc4ed1..d30178ec99 100644 --- a/assets/connect-wallet-C-S7CgVB.js +++ b/assets/connect-wallet-Bx11cq4A.js @@ -1,4 +1,4 @@ -import{d as l,j as e,e as a}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c={title:"Connect Wallet",description:"undefined"};function i(n){const s={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",...l(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"connect-wallet",children:["Connect Wallet",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#connect-wallet",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as e,e as a}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c={title:"Connect Wallet",description:"undefined"};function i(n){const s={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",...l(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"connect-wallet",children:["Connect Wallet",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#connect-wallet",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:"Sequence is a very flexible wallet which allow users multiple ways to connect / access their wallet. This includes:"}),` `,e.jsxs(s.ol,{children:[` `,e.jsxs(s.li,{children:[` diff --git a/assets/contract-audits-DpVjYx7O.js b/assets/contract-audits-D1mZU8TH.js similarity index 97% rename from assets/contract-audits-DpVjYx7O.js rename to assets/contract-audits-D1mZU8TH.js index 156ff437b4..ec7e87a7cd 100644 --- a/assets/contract-audits-DpVjYx7O.js +++ b/assets/contract-audits-D1mZU8TH.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const r={title:"Contract Audits",description:"undefined"};function s(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"contract-audits",children:["Contract Audits",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-audits",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const r={title:"Contract Audits",description:"undefined"};function s(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"contract-audits",children:["Contract Audits",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-audits",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"Sequence wallet contracts underwent two independent audits by Consensys Diligence and Quantstamp."}),` `,e.jsxs(n.p,{children:[e.jsx(n.strong,{children:"Note"}),': Sequence Wallet was formerly known as "Arcadeum Wallet". Any references of "Arcadeum" in these reports are synonymous with "Sequence".']}),` `,e.jsxs(n.h2,{id:"quantstamp",children:["Quantstamp",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quantstamp",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/contract-metadata-BG_tBpGs.js b/assets/contract-metadata-DTbzXUIV.js similarity index 99% rename from assets/contract-metadata-BG_tBpGs.js rename to assets/contract-metadata-DTbzXUIV.js index cd3ca0281a..6153625843 100644 --- a/assets/contract-metadata-BG_tBpGs.js +++ b/assets/contract-metadata-DTbzXUIV.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-BG6_g6N7.js";const l={title:"Contract Metadata",description:"undefined"};function n(a){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...a.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"contract-metadata",children:["Contract Metadata",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-metadata",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-XAh3cByi.js";const l={title:"Contract Metadata",description:"undefined"};function n(a){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...a.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"contract-metadata",children:["Contract Metadata",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-metadata",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.ul,{children:[` `,s.jsx(e.li,{children:s.jsx(e.a,{href:"/api/metadata/token-metadata#fetch-token-metadata-for-any-erc721-or-erc1155-contract",children:"Learn how to query contract-level metadata directly for any contract"})}),` `,s.jsx(e.li,{children:s.jsx(e.a,{href:"/api/metadata/token-metadata#token-metadata-standards",children:"Learn about contract-level metadata for ERC20, ERC721 and ERC1155 tokens"})}),` diff --git a/assets/contracts-BEUlfJIE.js b/assets/contracts-CjCZOfhv.js similarity index 97% rename from assets/contracts-BEUlfJIE.js rename to assets/contracts-CjCZOfhv.js index 43f91b9a33..8e06009645 100644 --- a/assets/contracts-BEUlfJIE.js +++ b/assets/contracts-CjCZOfhv.js @@ -1,4 +1,4 @@ -import{d as o,j as e}from"./index-BG6_g6N7.js";import{V as a}from"./Video-CiIVMpgC.js";const s={title:"Contracts in Builder",description:"undefined"};function i(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",img:"img",li:"li",p:"p",ul:"ul",...o(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"contracts-in-builder",children:["Contracts in Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contracts-in-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as o,j as e}from"./index-XAh3cByi.js";import{V as a}from"./Video--Gq6B73C.js";const s={title:"Contracts in Builder",description:"undefined"};function i(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",img:"img",li:"li",p:"p",ul:"ul",...o(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"contracts-in-builder",children:["Contracts in Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contracts-in-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Sequence Builder simplifies smart contract deployment and management with a suite of user-friendly features. Import, deploy, and add contract collaborators to a smart contract in the contracts dashboard and interact directly with your contract."}),` `,e.jsxs(t.h5,{id:"what-are-my-deployment-options",children:["What are my deployment options?",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#what-are-my-deployment-options",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(t.p,{children:"Deployment of contracts with Sequence Builder is simplified through a streamlined process directly within our dashboard. Choose from various contract templates (ERC1155, ERC721, ERC20). The Builder also gives you the option to upload your own custom contracts - saved to your project - and can be deployed directly to a network of your choosing."}),` diff --git a/assets/contracts-DjDW2TeL.js b/assets/contracts-qX_qk_af.js similarity index 99% rename from assets/contracts-DjDW2TeL.js rename to assets/contracts-qX_qk_af.js index f37e1a1afa..52fd72b7dc 100644 --- a/assets/contracts-DjDW2TeL.js +++ b/assets/contracts-qX_qk_af.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const i={title:"Contracts",description:"undefined"};function a(t){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...r(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"contracts",children:["Contracts",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contracts",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const i={title:"Contracts",description:"undefined"};function a(t){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...r(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"contracts",children:["Contracts",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contracts",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Creating a ",e.jsx(n.code,{children:"Contract"})," object for an already deployed contract is rather straightforward."]}),` `,e.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:e.jsx(n.code,{children:e.jsx(n.span,{className:"line",children:e.jsx(n.span,{children:"Contract contract = new Contract(contractAddress, abi);"})})})}),` `,e.jsxs(n.p,{children:["While it is not strictly required, it is ",e.jsx("i",{children:"highly"}),` recommended to provide the contract ABI as a string when creating a contract object. Failure to do so will make it so that you cannot fully take advantage of our ABI encoding and decoding. diff --git a/assets/create-simple-orders-BeMs4cgm.js b/assets/create-simple-orders-BZNiwCSW.js similarity index 99% rename from assets/create-simple-orders-BeMs4cgm.js rename to assets/create-simple-orders-BZNiwCSW.js index 559b9db942..5ef64ae72f 100644 --- a/assets/create-simple-orders-BeMs4cgm.js +++ b/assets/create-simple-orders-BZNiwCSW.js @@ -1,4 +1,4 @@ -import{d as i,j as e,e as l}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const t={title:"Create an Order via Blockexplorer",description:"undefined"};function r(n){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"create-an-order-via-blockexplorer",children:["Create an Order via Blockexplorer",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#create-an-order-via-blockexplorer",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e,e as l}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const t={title:"Create an Order via Blockexplorer",description:"undefined"};function r(n){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"create-an-order-via-blockexplorer",children:["Create an Order via Blockexplorer",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#create-an-order-via-blockexplorer",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.p,{children:["All transactions run through a contract at address ",e.jsx(s.code,{children:"0xB537a160472183f2150d42EB1c3DD6684A55f74c"})," on all currently offered networks:"]}),` `,e.jsxs(s.ul,{children:[` `,e.jsx(s.li,{children:"polygon"}),` diff --git a/assets/custom-connectors-C6W190Un.js b/assets/custom-connectors-DubimWDi.js similarity index 99% rename from assets/custom-connectors-C6W190Un.js rename to assets/custom-connectors-DubimWDi.js index a99d96c0ad..2d7d09755a 100644 --- a/assets/custom-connectors-C6W190Un.js +++ b/assets/custom-connectors-DubimWDi.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-BG6_g6N7.js";const c={sidebar_label:"Custom Connectors",title:"Custom Connectors in Sequence Kit",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...r(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"custom-connectors-in-sequence-kit",children:["Custom Connectors in Sequence Kit",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#custom-connectors-in-sequence-kit",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-XAh3cByi.js";const c={sidebar_label:"Custom Connectors",title:"Custom Connectors in Sequence Kit",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...r(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"custom-connectors-in-sequence-kit",children:["Custom Connectors in Sequence Kit",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#custom-connectors-in-sequence-kit",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["Sequence Kit provides official connectors via the ",s.jsx(e.a,{href:"https://github.com/0xsequence/kit/tree/master/packages/connectors",children:"@0xsequence/kit-connectors"})," package. However, you can also integrate custom connectors with Sequence Kit to support additional wallets. This guide will walk you through creating and using custom connectors."]}),` `,s.jsxs(e.h2,{id:"creating-a-custom-connector",children:["Creating a Custom Connector",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#creating-a-custom-connector",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["To create a custom connector, you can use an existing connector as a basis. For example, the ",s.jsx(e.a,{href:"https://github.com/0xsequence/kit/blob/master/packages/connectors/src/connectors/metamask/metamask.ts",children:"Metamask Connector"})," is a good starting point. Here's an example of how to create a custom connector:"]}),` diff --git a/assets/custom-marketplace-CnGNUq38.js b/assets/custom-marketplace-5fhElc0j.js similarity index 99% rename from assets/custom-marketplace-CnGNUq38.js rename to assets/custom-marketplace-5fhElc0j.js index e0bd8f08e1..59573953eb 100644 --- a/assets/custom-marketplace-CnGNUq38.js +++ b/assets/custom-marketplace-5fhElc0j.js @@ -1,4 +1,4 @@ -import{d as r,j as s,e as i}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Build a Custom Marketplace",description:"undefined"};function n(l){const e={a:"a",code:"code",details:"details",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",img:"img",li:"li",p:"p",pre:"pre",span:"span",summary:"summary",ul:"ul",...r(),...l.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"build-a-custom-marketplace",children:["Build a Custom Marketplace",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#build-a-custom-marketplace",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s,e as i}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Build a Custom Marketplace",description:"undefined"};function n(l){const e={a:"a",code:"code",details:"details",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",img:"img",li:"li",p:"p",pre:"pre",span:"span",summary:"summary",ul:"ul",...r(),...l.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"build-a-custom-marketplace",children:["Build a Custom Marketplace",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#build-a-custom-marketplace",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"In this guide we will go through the process of creating a custom marketplace from a few simple tools from the Sequence stack."}),` `,s.jsx(e.p,{children:"The tools will enable you to perform:"}),` `,s.jsxs(e.ul,{children:[` diff --git a/assets/deploy-Cahny4J9.js b/assets/deploy-B8RwPBe1.js similarity index 98% rename from assets/deploy-Cahny4J9.js rename to assets/deploy-B8RwPBe1.js index f51c990ecb..ba3f6a5b31 100644 --- a/assets/deploy-Cahny4J9.js +++ b/assets/deploy-B8RwPBe1.js @@ -1,4 +1,4 @@ -import{d as i,j as e,e as r}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const o={title:"Deploy Process V2",description:"undefined"};function t(s){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...i(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"deploy-process-v2",children:["Deploy Process V2",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-process-v2",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e,e as r}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const o={title:"Deploy Process V2",description:"undefined"};function t(s){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...i(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"deploy-process-v2",children:["Deploy Process V2",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-process-v2",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["The following steps are required to deploy the ",e.jsx(n.a,{href:"/solutions/technical-references/internals/v2/deploy",children:"Sequence Wallet Context"})," on a new network."]}),` `,e.jsx(r,{type:"info",children:e.jsxs(n.p,{children:["Notice ",e.jsx("br",{}),` For most popular networks this process `,e.jsx(n.strong,{children:"is not"}),` required; due to the wallet contracts diff --git a/assets/deploy-BPDvQs8w.js b/assets/deploy-BzkY3z_7.js similarity index 99% rename from assets/deploy-BPDvQs8w.js rename to assets/deploy-BzkY3z_7.js index 75d11e8f86..99e3ce0446 100644 --- a/assets/deploy-BPDvQs8w.js +++ b/assets/deploy-BzkY3z_7.js @@ -1,4 +1,4 @@ -import{d as a,j as e,e as d}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const o={title:"Deploy Process V1",description:"undefined"};function t(n){const s={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"deploy-process-v1",children:["Deploy Process V1",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-process-v1",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e,e as d}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const o={title:"Deploy Process V1",description:"undefined"};function t(n){const s={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"deploy-process-v1",children:["Deploy Process V1",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-process-v1",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.p,{children:["The following steps are required to deploy the ",e.jsx(s.a,{href:"/solutions/technical-references/internals/v1/deploy",children:"Sequence Wallet V1 Context"})," on a new network."]}),` `,e.jsx(d,{type:"info",children:e.jsxs(s.p,{children:["Notice ",e.jsx("br",{}),` For most popular networks this process `,e.jsx(s.strong,{children:"is not"}),` required; due to the wallet contracts diff --git a/assets/deploy-ERC20-currency-B53gvu_W.js b/assets/deploy-ERC20-currency-DlMExY16.js similarity index 99% rename from assets/deploy-ERC20-currency-B53gvu_W.js rename to assets/deploy-ERC20-currency-DlMExY16.js index 2ae00efcc7..60b4bbbd8a 100644 --- a/assets/deploy-ERC20-currency-B53gvu_W.js +++ b/assets/deploy-ERC20-currency-DlMExY16.js @@ -1,4 +1,4 @@ -import{d as s,j as e,e as i}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const a={title:"How to Deploy in-game Currency in Builder",description:"undefined"};function r(t){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",p:"p",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"how-to-deploy-in-game-currency-in-builder",children:["How to Deploy in-game Currency in Builder",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#how-to-deploy-in-game-currency-in-builder",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e,e as i}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const a={title:"How to Deploy in-game Currency in Builder",description:"undefined"};function r(t){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",p:"p",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"how-to-deploy-in-game-currency-in-builder",children:["How to Deploy in-game Currency in Builder",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#how-to-deploy-in-game-currency-in-builder",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.h2,{id:"introduction",children:["Introduction",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(n.p,{children:"In this guide, we'll walk you through the process of creating your own in-game currency through deploying and minting from an ERC20 contract."}),` `,e.jsx(n.p,{children:"Currency tokens add new and interesting dimensions to in-game economies, transactions, and player interactions to unlock and distribute value."}),` diff --git a/assets/deploy-an-item-collection-DcjKTGVi.js b/assets/deploy-an-item-collection-BAxVVf5g.js similarity index 99% rename from assets/deploy-an-item-collection-DcjKTGVi.js rename to assets/deploy-an-item-collection-BAxVVf5g.js index e546d93237..a11ac678db 100644 --- a/assets/deploy-an-item-collection-DcjKTGVi.js +++ b/assets/deploy-an-item-collection-BAxVVf5g.js @@ -1,4 +1,4 @@ -import{d as s,j as e,e as i}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const a={title:"How to Deploy an Item Collection Contract",description:"undefined"};function c(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",p:"p",...s(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"how-to-deploy-an-item-collection-contract",children:["How to Deploy an Item Collection Contract",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#how-to-deploy-an-item-collection-contract",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e,e as i}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const a={title:"How to Deploy an Item Collection Contract",description:"undefined"};function c(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",p:"p",...s(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"how-to-deploy-an-item-collection-contract",children:["How to Deploy an Item Collection Contract",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#how-to-deploy-an-item-collection-contract",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"This guide walks through how to setup and deploy a Web3 Game Item contract in Builder."}),` `,e.jsxs(i,{type:"warning",children:[e.jsx(t.p,{children:"Prerequisite: Create a Project"}),e.jsxs(t.p,{children:["This guide assumes that you have already ",e.jsx(t.a,{href:"/solutions/builder/getting-started",children:"signed up for Builder and created a Project"}),"."]})]}),` `,e.jsxs(t.h4,{id:"erc721-vs-erc1155",children:["ERC721 vs. ERC1155",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#erc721-vs-erc1155",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/deploy-contracts-8ixtIFMy.js b/assets/deploy-contracts-D0qgs-cI.js similarity index 98% rename from assets/deploy-contracts-8ixtIFMy.js rename to assets/deploy-contracts-D0qgs-cI.js index 118bd380c0..dc6d44223f 100644 --- a/assets/deploy-contracts-8ixtIFMy.js +++ b/assets/deploy-contracts-D0qgs-cI.js @@ -1,4 +1,4 @@ -import{d as t,j as e}from"./index-BG6_g6N7.js";const i={title:"Contract Deployment",description:"undefined"};function s(a){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...t(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"contract-deployment",children:["Contract Deployment",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-deployment",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as t,j as e}from"./index-XAh3cByi.js";const i={title:"Contract Deployment",description:"undefined"};function s(a){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...t(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"contract-deployment",children:["Contract Deployment",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-deployment",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["While, in general, we would recommend deploying your smart contracts via the ",e.jsx(n.a,{href:"https://sequence.build/",children:"Builder"}),", we recognize that there are some use cases where deploying a smart contract from Unity (or a Made-With-Unity application) is useful."]}),` `,e.jsxs(n.p,{children:["Contract deployment involves sending a transaction, which is done via an ",e.jsx(n.a,{href:"https://medium.com/@sonusprocks/async-await-in-c-unity-explained-in-easy-words-571ebb6a9369",children:"asynchronous Task"}),". You can use ",e.jsx(n.code,{children:"await"})," when calling ",e.jsx(n.code,{children:"WaaSWallet.DeployContract"})," from within an async Task if you wish to obtain the ",e.jsx(n.code,{children:"ContractDeploymentReturn"})," object directly. Or, you can take the recommended approach which is to setup handler functions for the ",e.jsx(n.code,{children:"WaaSWallet.OnDeployContractComplete"})," and ",e.jsx(n.code,{children:"WaaSWallet.OnDeployContractFailed"})," events and call the ",e.jsx(n.code,{children:"WaaSWallet.DeployContract"})," method from anywhere (without await)."]}),` `,e.jsxs(n.p,{children:[e.jsx(n.code,{children:"WaaSWallet.DeployContract"})," is essentially a wrapper for a very special ",e.jsx(n.code,{children:"WaaSWallet.SendTransaction"})," call and therefore, you can expect to still receive the ",e.jsx(n.code,{children:"WaaSWallet.OnSendTransactionComplete"})," or ",e.jsx(n.code,{children:"WaaSWallet.OnSendTransactionFailed"})," events in addition."]}),` diff --git a/assets/deployment-CbSjPzBU.js b/assets/deployment-CrTV9zGg.js similarity index 98% rename from assets/deployment-CbSjPzBU.js rename to assets/deployment-CrTV9zGg.js index 7e639a2079..a24947c11c 100644 --- a/assets/deployment-CbSjPzBU.js +++ b/assets/deployment-CrTV9zGg.js @@ -1,4 +1,4 @@ -import{d as r,j as e,e as a}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Contract Deployment",description:"undefined"};function i(n){const t={a:"a",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"contract-deployment",children:["Contract Deployment",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-deployment",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e,e as a}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Contract Deployment",description:"undefined"};function i(n){const t={a:"a",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"contract-deployment",children:["Contract Deployment",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-deployment",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Sequence contract wallets are fully deterministic; a wallet will map to the same address on any network that is EVM compatible."}),` `,e.jsx(t.p,{children:"This means that when a wallet is created, its address can be derived in advance, and it will be the same on networks like Ethereum, Arbitrum, Polygon, and others."}),` `,e.jsxs(a,{type:"warning",children:[e.jsxs(t.p,{children:[e.jsx(t.strong,{children:"Limitations"}),e.jsx("br",{}),` diff --git a/assets/embedded-wallet-BxFTKEU8.js b/assets/embedded-wallet-DBe8hhaG.js similarity index 99% rename from assets/embedded-wallet-BxFTKEU8.js rename to assets/embedded-wallet-DBe8hhaG.js index 656d918446..99b66e67f6 100644 --- a/assets/embedded-wallet-BxFTKEU8.js +++ b/assets/embedded-wallet-DBe8hhaG.js @@ -1,4 +1,4 @@ -import{d as t,j as e}from"./index-BG6_g6N7.js";const r={title:"Embedded Wallet in Builder",description:"undefined"};function o(n){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",ul:"ul",...t(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"embedded-wallet-in-builder",children:["Embedded Wallet in Builder",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#embedded-wallet-in-builder",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as t,j as e}from"./index-XAh3cByi.js";const r={title:"Embedded Wallet in Builder",description:"undefined"};function o(n){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",ul:"ul",...t(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"embedded-wallet-in-builder",children:["Embedded Wallet in Builder",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#embedded-wallet-in-builder",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(i.p,{children:["You can configure a ",e.jsx(i.a,{href:"/solutions/wallets/embedded-wallet/overview",children:"Sequence Embedded Wallet"})," in Builder and integrate your own OAuth accounts to enable easy onboarding to your games. Configuration page in Builder ",e.jsx(i.a,{href:"https://sequence.build/project/default/wallet/in-game-wallet",children:"is available here"}),"."]}),` `,e.jsxs(i.h2,{id:"login-providers",children:["Login Providers",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#login-providers",children:e.jsx(i.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(i.p,{children:"Sequence Embedded Wallet supports the following login providers:"}),` diff --git a/assets/enclave-verification-D1O6-8to.js b/assets/enclave-verification-CoMYKGDj.js similarity index 99% rename from assets/enclave-verification-D1O6-8to.js rename to assets/enclave-verification-CoMYKGDj.js index 76a0e21764..f076f9caad 100644 --- a/assets/enclave-verification-D1O6-8to.js +++ b/assets/enclave-verification-CoMYKGDj.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-BG6_g6N7.js";const r={title:"Enclave verification",description:"undefined"};function a(i){const n={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...s(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"enclave-verification",children:["Enclave verification",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#enclave-verification",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-XAh3cByi.js";const r={title:"Enclave verification",description:"undefined"};function a(i){const n={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...s(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"enclave-verification",children:["Enclave verification",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#enclave-verification",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"The security of an WaaS enclave depends on being able to independently verify the integrity of the code that powers it."}),` `,e.jsx(n.p,{children:"You have two options when it comes to verifying the integrity of a running enclave depending on your risk tolerance and technical means."}),` `,e.jsxs(n.h2,{id:"the-easy-way",children:["The easy way",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#the-easy-way",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/fetch-fee-options-BchxiuTq.js b/assets/fetch-fee-options-CyAgBDOd.js similarity index 99% rename from assets/fetch-fee-options-BchxiuTq.js rename to assets/fetch-fee-options-CyAgBDOd.js index 02f18b1d3b..5693eba4e3 100644 --- a/assets/fetch-fee-options-BchxiuTq.js +++ b/assets/fetch-fee-options-CyAgBDOd.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-BG6_g6N7.js";const a=void 0;function l(i){const e={a:"a",aside:"aside",code:"code",div:"div",h2:"h2",p:"p",pre:"pre",span:"span",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"fetching-fee-options",children:["Fetching fee options",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetching-fee-options",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as n,j as s}from"./index-XAh3cByi.js";const a=void 0;function l(i){const e={a:"a",aside:"aside",code:"code",div:"div",h2:"h2",p:"p",pre:"pre",span:"span",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"fetching-fee-options",children:["Fetching fee options",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetching-fee-options",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.aside,{"data-callout":"warning",children:s.jsx(e.p,{children:`Fee selection is only necessary if you aren't already using Sequence Builder's gas sponsorship capabilities! Create your project in Sequence Builder for ease of development today!`})}),` `,s.jsxs(e.div,{className:"code-group",children:[s.jsx(e.div,{"data-title":"TypeScript",children:s.jsx(e.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0","data-title":"TypeScript","data-lang":"typescript",children:s.jsxs(e.code,{children:[s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"import"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" { Session } "}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"from"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" '@0xsequence/auth'"})]}),` diff --git a/assets/fetch-tokens-DeY7ooC4.js b/assets/fetch-tokens-DSFHNZt3.js similarity index 99% rename from assets/fetch-tokens-DeY7ooC4.js rename to assets/fetch-tokens-DSFHNZt3.js index e47cad476b..5d0ef1ee9f 100644 --- a/assets/fetch-tokens-DeY7ooC4.js +++ b/assets/fetch-tokens-DSFHNZt3.js @@ -1,4 +1,4 @@ -import{d as i,j as s}from"./index-BG6_g6N7.js";const a={title:"Tokens API",description:"undefined"};function l(n){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"tokens-api",children:["Tokens API",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tokens-api",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as s}from"./index-XAh3cByi.js";const a={title:"Tokens API",description:"undefined"};function l(n){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"tokens-api",children:["Tokens API",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tokens-api",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h3,{id:"fetches-list-of-erc20-erc721-and-erc1155-tokens-and-metadata-in-any-wallet",children:["Fetches list of ERC20, ERC721 and ERC1155 tokens and metadata in any wallet.",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetches-list-of-erc20-erc721-and-erc1155-tokens-and-metadata-in-any-wallet",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:s.jsxs(e.em,{children:["Sequence Indexer ",s.jsx(e.code,{children:"GetTokenBalances"})," Method:"]})}),` `,s.jsxs(e.ul,{children:[` diff --git a/assets/fetch-transaction-receipts-CAM6psIi.js b/assets/fetch-transaction-receipts-CoN72VxY.js similarity index 99% rename from assets/fetch-transaction-receipts-CAM6psIi.js rename to assets/fetch-transaction-receipts-CoN72VxY.js index 6e93e1ee01..745737c173 100644 --- a/assets/fetch-transaction-receipts-CAM6psIi.js +++ b/assets/fetch-transaction-receipts-CoN72VxY.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-BG6_g6N7.js";const r=void 0;function a(i){const e={a:"a",code:"code",div:"div",h2:"h2",p:"p",pre:"pre",span:"span",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"fetching-transaction-receipts",children:["Fetching transaction receipts",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetching-transaction-receipts",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as n,j as s}from"./index-XAh3cByi.js";const r=void 0;function a(i){const e={a:"a",code:"code",div:"div",h2:"h2",p:"p",pre:"pre",span:"span",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"fetching-transaction-receipts",children:["Fetching transaction receipts",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetching-transaction-receipts",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["To fetch a transaction receipt for an arbitrary transaction that was dispatched via the relayer, call the ",s.jsx(e.code,{children:"/GetMetaTxnReceipt"}),` endpoint. The `,s.jsx(e.code,{children:"metaTxID"})," is the ",s.jsx(e.code,{children:"txnHash"})," from the response of the ",s.jsx(e.code,{children:"/SendMetaTxn"})," endpoint."]}),` `,s.jsxs(e.div,{className:"code-group",children:[s.jsx(e.div,{"data-title":"cURL",children:s.jsx(e.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0","data-title":"cURL","data-lang":"sh",children:s.jsxs(e.code,{children:[s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"curl"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" -s"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" -X"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" POST"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" -H"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" 'Content-Type: application/json'"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#F47067"},children:" \\"})]}),` diff --git a/assets/fiat-on-ramps-jUs35Ot8.js b/assets/fiat-on-ramps-C1kKRZ4s.js similarity index 96% rename from assets/fiat-on-ramps-jUs35Ot8.js rename to assets/fiat-on-ramps-C1kKRZ4s.js index e9647a0a6f..37d0da2178 100644 --- a/assets/fiat-on-ramps-jUs35Ot8.js +++ b/assets/fiat-on-ramps-C1kKRZ4s.js @@ -1,4 +1,4 @@ -import{d as t,j as e}from"./index-BG6_g6N7.js";const s={slug:"/fiat-on-ramps",title:"Fiat On-Ramps",description:"undefined"};function r(i){const n={a:"a",div:"div",h1:"h1",header:"header",img:"img",li:"li",p:"p",ul:"ul",...t(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"fiat-on-ramps",children:["Fiat On-Ramps",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fiat-on-ramps",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as t,j as e}from"./index-XAh3cByi.js";const s={slug:"/fiat-on-ramps",title:"Fiat On-Ramps",description:"undefined"};function r(i){const n={a:"a",div:"div",h1:"h1",header:"header",img:"img",li:"li",p:"p",ul:"ul",...t(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"fiat-on-ramps",children:["Fiat On-Ramps",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fiat-on-ramps",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"Sequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;"}),` `,e.jsxs(n.ul,{children:[` `,e.jsx(n.li,{children:e.jsx(n.a,{href:"https://www.moonpay.com/",children:"Moonpay"})}),` diff --git a/assets/fiat-on-ramps-2bExQQ8h.js b/assets/fiat-on-ramps-P9y0Lprh.js similarity index 96% rename from assets/fiat-on-ramps-2bExQQ8h.js rename to assets/fiat-on-ramps-P9y0Lprh.js index cc06479b6a..9f0814bc86 100644 --- a/assets/fiat-on-ramps-2bExQQ8h.js +++ b/assets/fiat-on-ramps-P9y0Lprh.js @@ -1,4 +1,4 @@ -import{d as t,j as e}from"./index-BG6_g6N7.js";const a={slug:"/fiat-on-ramps",title:"Fiat On-Ramps",description:"undefined"};function i(r){const n={a:"a",div:"div",h1:"h1",header:"header",img:"img",li:"li",p:"p",ul:"ul",...t(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"fiat-on-ramps",children:["Fiat On-Ramps",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fiat-on-ramps",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as t,j as e}from"./index-XAh3cByi.js";const a={slug:"/fiat-on-ramps",title:"Fiat On-Ramps",description:"undefined"};function i(r){const n={a:"a",div:"div",h1:"h1",header:"header",img:"img",li:"li",p:"p",ul:"ul",...t(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"fiat-on-ramps",children:["Fiat On-Ramps",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fiat-on-ramps",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"Sequence Wallet allows users to purchase cryptocurrencies directly with their credit card and debit card via on-ramp providers. Currently Sequence supports 6 on-ramp providers;"}),` `,e.jsxs(n.ul,{children:[` `,e.jsx(n.li,{children:e.jsx(n.a,{href:"https://www.moonpay.com/",children:"Moonpay"})}),` diff --git a/assets/gas-tank-BAfu7q9M.js b/assets/gas-tank-9wNYvgcg.js similarity index 95% rename from assets/gas-tank-BAfu7q9M.js rename to assets/gas-tank-9wNYvgcg.js index f68afcd9e6..f3ae5e3c24 100644 --- a/assets/gas-tank-BAfu7q9M.js +++ b/assets/gas-tank-9wNYvgcg.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";import{V as t}from"./Video-CiIVMpgC.js";const d={title:"Gas Tank in Builder",description:"undefined"};function s(a){const n={a:"a",div:"div",em:"em",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"gas-tank-in-builder",children:["Gas Tank in Builder",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#gas-tank-in-builder",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";import{V as t}from"./Video--Gq6B73C.js";const d={title:"Gas Tank in Builder",description:"undefined"};function s(a){const n={a:"a",div:"div",em:"em",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"gas-tank-in-builder",children:["Gas Tank in Builder",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#gas-tank-in-builder",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Sequence wallets are controlled by smart contracts, enabling transaction fees to be abstracted away from users, a concept known in web3 as ",e.jsx(n.em,{children:"gas"}),". With Sequence Builder's Gas Tank, you have a streamlined process for sponsoring gas for your users."]}),` `,e.jsxs(n.h5,{id:"why-would-i-want-to-sponsor-gas-for-my-game",children:["Why would I want to sponsor gas for my game?",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#why-would-i-want-to-sponsor-gas-for-my-game",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(n.p,{children:"Obtaining the crypto needed to cover fees poses a challenge for traditional gamers. Sponsoring gas on their behalf solves this problem."}),` diff --git a/assets/get-orderbook-BtgfiHLC.js b/assets/get-orderbook-CK2fd8cT.js similarity index 99% rename from assets/get-orderbook-BtgfiHLC.js rename to assets/get-orderbook-CK2fd8cT.js index 7ec2b5840c..10c5105fa8 100644 --- a/assets/get-orderbook-BtgfiHLC.js +++ b/assets/get-orderbook-CK2fd8cT.js @@ -1,4 +1,4 @@ -import{d as i,j as s,e as l}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const a=void 0;function n(r){const e={a:"a",code:"code",div:"div",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...i(),...r.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"getorderbookorders",children:["GetOrderbookOrders",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#getorderbookorders",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as i,j as s,e as l}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const a=void 0;function n(r){const e={a:"a",code:"code",div:"div",em:"em",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...i(),...r.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"getorderbookorders",children:["GetOrderbookOrders",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#getorderbookorders",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["With the use of the ",s.jsx(e.code,{children:"GetOrderbookOrders"})," api developers can build custom marketplaces around the api, as an example, one can implement a frontend to fulfill certain orders (not just the best price) for a collectible"]}),` `,s.jsx(e.p,{children:s.jsx(e.img,{src:"/img/marketplace/custom-marketplace-listings.png",alt:"GetOrderbookOrders"})}),` `,s.jsxs(e.h3,{id:"example",children:["Example",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#example",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/get-top-orders-C55CfIab.js b/assets/get-top-orders-DA_Dw8yv.js similarity index 99% rename from assets/get-top-orders-C55CfIab.js rename to assets/get-top-orders-DA_Dw8yv.js index 37cb472acb..0a1e52cae3 100644 --- a/assets/get-top-orders-C55CfIab.js +++ b/assets/get-top-orders-DA_Dw8yv.js @@ -1,4 +1,4 @@ -import{d as i,j as s}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c=void 0;function l(r){const e={a:"a",code:"code",div:"div",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...i(),...r.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"gettoporders",children:["GetTopOrders",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#gettoporders",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as i,j as s}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c=void 0;function l(r){const e={a:"a",code:"code",div:"div",h2:"h2",h3:"h3",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...i(),...r.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"gettoporders",children:["GetTopOrders",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#gettoporders",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["With the use of the ",s.jsx(e.code,{children:"GetTopOrders"})," api developers can build bots to retrieve best orders to execute on, or, just simple notifiers to track the best orders to take action."]}),` `,s.jsxs(e.div,{className:"code-group",children:[s.jsx(e.div,{"data-title":"cURL",children:s.jsx(e.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0","data-title":"cURL","data-lang":"shell",children:s.jsxs(e.code,{children:[s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"curl"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" --request"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" POST"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#F47067"},children:" \\"})]}),` `,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" --url"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" https://dev-marketplace-api.sequence.app/arbitrum-sepolia/rpc/Marketplace/GetTopOrders"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#F47067"},children:" \\"})]}),` diff --git a/assets/get-user-activities-CP8AopuV.js b/assets/get-user-activities-D2rdVCSP.js similarity index 99% rename from assets/get-user-activities-CP8AopuV.js rename to assets/get-user-activities-D2rdVCSP.js index aa54e55739..7fb3d328ad 100644 --- a/assets/get-user-activities-CP8AopuV.js +++ b/assets/get-user-activities-D2rdVCSP.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-BG6_g6N7.js";const c=void 0;function r(i){const e={a:"a",code:"code",div:"div",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"getuseractivities",children:["GetUserActivities",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#getuseractivities",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as n,j as s}from"./index-XAh3cByi.js";const c=void 0;function r(i){const e={a:"a",code:"code",div:"div",h2:"h2",h3:"h3",img:"img",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"getuseractivities",children:["GetUserActivities",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#getuseractivities",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["Enables you to retrieve activity data for a specific user, including orders and trades. With the use of the ",s.jsx(e.code,{children:"GetUserActivities"})," api developers can build custom and personalized social or tracking experiences to follow certain users in various interfaces."]}),` `,s.jsx(e.p,{children:s.jsx(e.img,{src:"/img/marketplace/activities.png",alt:"GetUserActivities"})}),` `,s.jsxs(e.h3,{id:"example",children:["Example",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#example",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/getting-started-DtQ87dP6.js b/assets/getting-started-BnQlVg14.js similarity index 98% rename from assets/getting-started-DtQ87dP6.js rename to assets/getting-started-BnQlVg14.js index c8c42ef801..62529cc945 100644 --- a/assets/getting-started-DtQ87dP6.js +++ b/assets/getting-started-BnQlVg14.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";import{C as l,a as n}from"./CardGrid-Dee1eEnV.js";const c={title:"Get Started",description:"undefined"};function t(s){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",p:"p",pre:"pre",span:"span",...r(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"get-started",children:["Get Started",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#get-started",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-XAh3cByi.js";import{C as l,a as n}from"./CardGrid-Bkj_ERUR.js";const c={title:"Get Started",description:"undefined"};function t(s){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",p:"p",pre:"pre",span:"span",...r(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"get-started",children:["Get Started",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#get-started",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(i.p,{children:"Signing up and creating a project is easy to do with Sequence Builder and should take you less than a few minutes. In this tutorial, we will help you sign up for Builder and then create your first project."}),` `,e.jsx(i.p,{children:"Let's get started!"}),` `,e.jsxs(i.h2,{id:"sign-up-for-builder",children:["Sign up for Builder",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sign-up-for-builder",children:e.jsx(i.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/getting-started-Ds6gJJHd.js b/assets/getting-started-D1rWwgSO.js similarity index 99% rename from assets/getting-started-Ds6gJJHd.js rename to assets/getting-started-D1rWwgSO.js index 2dccc1a57f..d4c0fbfb79 100644 --- a/assets/getting-started-Ds6gJJHd.js +++ b/assets/getting-started-D1rWwgSO.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-BG6_g6N7.js";const a={sidebar_label:"Getting Started",title:"Getting Started with Sequence Kit",description:"undefined"};function l(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"getting-started-with-sequence-kit",children:["Getting Started with Sequence Kit",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#getting-started-with-sequence-kit",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-XAh3cByi.js";const a={sidebar_label:"Getting Started",title:"Getting Started with Sequence Kit",description:"undefined"};function l(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"getting-started-with-sequence-kit",children:["Getting Started with Sequence Kit",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#getting-started-with-sequence-kit",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(i.p,{children:"In this guide, we will walk you through installing Sequence Kit, triggering the connection modal, and displaying the embedded wallet in your application."}),` `,s.jsxs(i.h2,{id:"installing-sequence-kit-packages",children:["Installing Sequence Kit Packages",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installing-sequence-kit-packages",children:s.jsx(i.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(i.p,{children:["Sequence Kit is modular, allowing you to install only the necessary packages. To get started, install the ",s.jsx(i.code,{children:"kit"})," core package, the ",s.jsx(i.code,{children:"connectors"})," package for interfacing with various wallet providers, and the ",s.jsx(i.code,{children:"wallet"})," for the embedded wallet. Additionally, install other dependencies such as wagmi, viem, and 0xsequence."]}),` diff --git a/assets/guest-module-BaAl8n41.js b/assets/guest-module-DvFQUC64.js similarity index 90% rename from assets/guest-module-BaAl8n41.js rename to assets/guest-module-DvFQUC64.js index 90bae50328..2cde488df3 100644 --- a/assets/guest-module-BaAl8n41.js +++ b/assets/guest-module-DvFQUC64.js @@ -1 +1 @@ -import{d as o,j as d}from"./index-BG6_g6N7.js";const r={title:"GuestModule and on-demand deployment",description:"undefined"};function t(n){const e={a:"a",div:"div",h1:"h1",header:"header",...o(),...n.components};return d.jsx(e.header,{children:d.jsxs(e.h1,{id:"guestmodule-and-on-demand-deployment",children:["GuestModule and on-demand deployment",d.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#guestmodule-and-on-demand-deployment",children:d.jsx(e.div,{"data-autolink-icon":!0})})]})})}function s(n={}){const{wrapper:e}={...o(),...n.components};return e?d.jsx(e,{...n,children:d.jsx(t,{...n})}):t(n)}export{s as default,r as frontmatter}; +import{d as o,j as d}from"./index-XAh3cByi.js";const r={title:"GuestModule and on-demand deployment",description:"undefined"};function t(n){const e={a:"a",div:"div",h1:"h1",header:"header",...o(),...n.components};return d.jsx(e.header,{children:d.jsxs(e.h1,{id:"guestmodule-and-on-demand-deployment",children:["GuestModule and on-demand deployment",d.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#guestmodule-and-on-demand-deployment",children:d.jsx(e.div,{"data-autolink-icon":!0})})]})})}function s(n={}){const{wrapper:e}={...o(),...n.components};return e?d.jsx(e,{...n,children:d.jsx(t,{...n})}):t(n)}export{s as default,r as frontmatter}; diff --git a/assets/5189-4337-Cu1rjX6F.js b/assets/iOS-bRRaAnqq.js similarity index 75% rename from assets/5189-4337-Cu1rjX6F.js rename to assets/iOS-bRRaAnqq.js index 04587697eb..02edfbd55e 100644 --- a/assets/5189-4337-Cu1rjX6F.js +++ b/assets/iOS-bRRaAnqq.js @@ -1 +1 @@ -import{d as r,j as n}from"./index-BG6_g6N7.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; +import{d as r,j as n}from"./index-XAh3cByi.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/index-iPNcXBcC.js b/assets/index-CP7FC5Wv.js similarity index 98% rename from assets/index-iPNcXBcC.js rename to assets/index-CP7FC5Wv.js index 9875822823..3a9ea8dd65 100644 --- a/assets/index-iPNcXBcC.js +++ b/assets/index-CP7FC5Wv.js @@ -1 +1 @@ -import{j as e,L as I,c as n,u as S,a as R,R as q,b as _,T as f,C as g,r as h,d as P}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";var z="vocs_Button_button",B="vocs_Button_button_accent";function A({children:t,className:l,href:s,variant:o}){return e.jsx(I,{className:n(l,z,o==="accent"&&B),href:s,variant:"styleless",children:t})}var T="vocs_HomePage_button",E="vocs_HomePage_buttons",W="vocs_HomePage_description",G="vocs_HomePage_logo",w="vocs_HomePage_packageManager",U="vocs_HomePage",D="vocs_HomePage_tabs",v="vocs_HomePage_tabsContent",O="vocs_HomePage_tabsList",F="vocs_HomePage_tagline",K="vocs_HomePage_title";function $({children:t,className:l}){return e.jsx("div",{className:n(l,U),children:t})}function m({className:t}){const{logoUrl:l,title:s}=S();return l?e.jsx("div",{className:n(t,G),children:e.jsx(R,{})}):e.jsx("h1",{className:n(t,K),children:s})}function J({children:t,className:l}){return e.jsx("div",{className:n(l,F),children:t})}function X({children:t,className:l}){return e.jsx("div",{className:n(l,W),children:t})}function Q({children:t,className:l}){return e.jsx("div",{className:n(l,E),children:t})}function Y(t){return e.jsx(A,{...t,className:n(T,t.className)})}function e1({name:t,type:l="install"}){return e.jsxs(q,{className:D,defaultValue:"npm",children:[e.jsxs(_,{className:O,children:[e.jsx(f,{value:"npm",children:"npm"}),e.jsx(f,{value:"pnpm",children:"pnpm"}),e.jsx(f,{value:"yarn",children:"yarn"})]}),e.jsxs(g,{className:v,value:"npm",children:[e.jsx("span",{className:w,children:"npm"})," ",l==="init"?"init":"install"," ",t]}),e.jsxs(g,{className:v,value:"pnpm",children:[e.jsx("span",{className:w,children:"pnpm"})," ",l==="init"?"create":"install"," ",t]}),e.jsxs(g,{className:v,value:"yarn",children:[e.jsx("span",{className:w,children:"yarn"})," ",l==="init"?"create":"install"," ",t]})]})}const t1=Object.freeze(Object.defineProperty({__proto__:null,Button:Y,Buttons:Q,Description:X,InstallPackage:e1,Logo:m,Root:$,Tagline:J},Symbol.toStringTag,{value:"Module"}));function l1({children:t,className:l}){return e.jsxs("div",{className:n("relative",l),children:[e.jsx("div",{className:"absolute inset-0 z-0 flex items-center dark:bg-matrix-dark bg-matrix-light mix-blend-normal dark:mix-blend-multiply",children:e.jsx("div",{style:{height:"100%",width:"100%",maxHeight:"465px"}})}),e.jsx("div",{className:"relative z-10",children:t})]})}const s1=({logo:t})=>e.jsx(l1,{className:"pt-20 pb-40 -mb-10 px-5 z-0",children:e.jsxs("section",{className:"flex flex-col items-center gap-4 max-w-screen-lg mx-auto",children:[t,e.jsx("h2",{className:"text-xl font-bold text-themed-primary max-w-3xl text-center text-wrap px-6",children:"Welcome to Sequence docs. Here you can learn about the modular Sequence products that empower game developers to build engaging web3 games on any Ethereum-compatible chain."})]})}),o1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M17.333 7.86186L15.553 3.41174H5.11305L3.33301 7.86186V7.94115C3.33301 8.28156 3.43174 8.78299 3.74002 9.21116C3.85255 9.36746 3.99075 9.51049 4.15654 9.63056V16.5882H16.5095V9.63056C16.6753 9.51049 16.8135 9.36746 16.926 9.21116C17.2343 8.78299 17.333 8.28156 17.333 7.94115V7.86186ZM15.6859 9.96693C15.5572 9.98849 15.4201 9.99998 15.2742 9.99998C14.485 9.99998 13.951 9.66363 13.6271 9.21773C13.3032 9.66363 12.7692 9.99998 11.9801 9.99998C11.1909 9.99998 10.6569 9.66363 10.333 9.21773C10.0091 9.66363 9.47511 9.99998 8.68595 9.99998C7.89679 9.99998 7.36277 9.66363 7.03889 9.21773C6.71501 9.66363 6.18099 9.99998 5.39183 9.99998C5.24595 9.99998 5.10879 9.98849 4.98007 9.96693V13.3985H15.6859V9.96693ZM14.0389 7.94115C14.0389 8.14977 14.1049 8.47187 14.2907 8.72997C14.4614 8.96708 14.7496 9.17645 15.2742 9.17645C15.7988 9.17645 16.087 8.96708 16.2577 8.72997C16.423 8.50039 16.4934 8.22017 16.507 8.01423L16.4778 7.94115H14.0389ZM14.9954 4.23527L16.1483 7.11763H13.9575L13.317 4.23527H14.9954ZM13.1139 7.11763L12.4733 4.23527H10.7448V7.11763H13.1139ZM7.55225 7.11763L8.19277 4.23527H9.92124V7.11763H7.55225ZM7.34915 4.23527L6.70863 7.11763H4.51767L5.67061 4.23527H7.34915ZM4.15903 8.01423L4.18826 7.94115H6.62713C6.62713 8.14977 6.56115 8.47187 6.37532 8.72997C6.2046 8.96708 5.91645 9.17645 5.39183 9.17645C4.86721 9.17645 4.57906 8.96708 4.40835 8.72997C4.24304 8.50039 4.17258 8.22017 4.15903 8.01423ZM9.66944 8.72997C9.85527 8.47187 9.92124 8.14977 9.92124 7.94115H7.45065C7.45065 8.14977 7.51663 8.47187 7.70246 8.72997C7.87318 8.96708 8.16133 9.17645 8.68595 9.17645C9.21057 9.17645 9.49872 8.96708 9.66944 8.72997ZM12.9636 8.72997C13.1494 8.47187 13.2154 8.14977 13.2154 7.94115H10.7448C10.7448 8.14977 10.8107 8.47187 10.9966 8.72997C11.1673 8.96708 11.4554 9.17645 11.9801 9.17645C12.5047 9.17645 12.7928 8.96708 12.9636 8.72997Z",fill:"currentColor"})}),n1=()=>e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10 1.59937C6.19712 1.59937 3.11426 4.68223 3.11426 8.48515C3.11419 8.54272 3.13215 8.6008 3.16933 8.65041L7.24573 14.081V18.4007H12.7544V14.081L16.8307 8.65041C16.8679 8.6008 16.8859 8.54272 16.8858 8.48515C16.8858 4.68223 13.803 1.59937 10 1.59937ZM10 6.55713C8.93523 6.55713 8.07202 7.42033 8.07202 8.48515H8.07747C8.42243 10.2099 9.17381 13.9938 9.17381 13.9938H10.8263C10.8263 13.9938 11.5777 10.2099 11.9226 8.48515H11.9281C11.9281 7.42033 11.0648 6.55713 10 6.55713ZM7.86545 13.9938L3.66512 8.38616C3.66512 7.32135 4.52833 6.55713 5.59314 6.55713C6.65795 6.55713 7.52116 7.42033 7.52116 8.48515C7.52116 8.48515 8.27248 12.269 8.61744 13.9938H7.86545ZM12.1346 13.9938L16.335 8.38616C16.335 7.32135 15.4717 6.55713 14.4069 6.55713C13.3421 6.55713 12.4789 7.42033 12.4789 8.48515C12.4789 8.48515 11.7276 12.269 11.3826 13.9938H12.1346Z",fill:"currentColor"})}),r1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("rect",{x:"8.75781",y:"7.84082",width:"3.81818",height:"9.33333",rx:"1",fill:"currentColor"}),e.jsx("rect",{x:"13.8486",y:"2.75",width:"3.81818",height:"14.4242",rx:"1",fill:"currentColor"}),e.jsx("rect",{width:"3.81818",height:"5.93939",rx:"1",transform:"matrix(-1 0 0 1 7.48535 11.235)",fill:"currentColor"})]}),a1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.41883 3.25H1.83301V2.25H5.24719L7.24719 12.8085H15.833V13.8085H6.41883L4.41883 3.25Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.8473 5.25H5.24609V4.25H18.0566L16.7467 11.1018H6.33324V10.1018H15.9198L16.8473 5.25Z",fill:"currentColor"}),e.jsx("path",{d:"M8.63434 15.9743C8.63434 16.6488 8.08752 17.1956 7.41299 17.1956C6.73846 17.1956 6.19165 16.6488 6.19165 15.9743C6.19165 15.2997 6.73846 14.7529 7.41299 14.7529C8.08752 14.7529 8.63434 15.2997 8.63434 15.9743Z",fill:"currentColor"}),e.jsx("path",{d:"M15.8331 15.9743C15.8331 16.6488 15.2863 17.1956 14.6117 17.1956C13.9372 17.1956 13.3904 16.6488 13.3904 15.9743C13.3904 15.2997 13.9372 14.7529 14.6117 14.7529C15.2863 14.7529 15.8331 15.2997 15.8331 15.9743Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.8418 7.17578H16.8556V8.17578H5.8418V7.17578Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14.8617 4.95987L14.2679 10.4599L13.2737 10.3525L13.8674 4.85254L14.8617 4.95987Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.7421 4.95987L8.33585 10.4599L9.33008 10.3525L8.73633 4.85254L7.7421 4.95987Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.8018 5.03125V10.4688H10.8018V5.03125H11.8018Z",fill:"currentColor"})]}),i1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M6.37207 13.3255V6.12305H13.5745V7.86233H8.11067V13.3255H6.37207Z",fill:"currentColor"}),e.jsx("path",{d:"M3 9.95198V2.74951H10.2025V4.4888H4.7386V9.95198H3Z",fill:"currentColor"}),e.jsx("path",{d:"M9.79883 16.7503V9.54785H17.0013V16.7503H9.79883Z",fill:"currentColor"})]}),H=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M15.5263 5.46622C14.6201 5.04221 13.6511 4.73406 12.638 4.55859C12.5136 4.78353 12.3682 5.08608 12.268 5.32676C11.1911 5.1648 10.1241 5.1648 9.067 5.32676C8.9668 5.08608 8.81815 4.78353 8.69262 4.55859C7.67846 4.73406 6.70835 5.04334 5.8021 5.46847C3.9742 8.23067 3.47869 10.9243 3.72644 13.5796C4.93881 14.485 6.11373 15.035 7.26883 15.3948C7.55403 15.0023 7.80839 14.5851 8.02751 14.1453C7.61018 13.9868 7.21047 13.7911 6.83279 13.5639C6.93298 13.4896 7.03099 13.412 7.12568 13.3322C9.42927 14.4096 11.9322 14.4096 14.2083 13.3322C14.3041 13.412 14.402 13.4896 14.5012 13.5639C14.1224 13.7922 13.7215 13.9879 13.3042 14.1465C13.5233 14.5851 13.7766 15.0035 14.0629 15.396C15.2191 15.0361 16.3951 14.4861 17.6075 13.5796C17.8982 10.5014 17.1109 7.83253 15.5263 5.46622ZM8.34134 11.9466C7.64983 11.9466 7.08273 11.301 7.08273 10.5149C7.08273 9.72873 7.63772 9.08205 8.34134 9.08205C9.04499 9.08205 9.61207 9.7276 9.59996 10.5149C9.60105 11.301 9.04499 11.9466 8.34134 11.9466ZM12.9926 11.9466C12.3011 11.9466 11.734 11.301 11.734 10.5149C11.734 9.72873 12.2889 9.08205 12.9926 9.08205C13.6962 9.08205 14.2633 9.7276 14.2512 10.5149C14.2512 11.301 13.6962 11.9466 12.9926 11.9466Z",fill:"currentColor"})}),c1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("rect",{x:"4.0293",y:"5.14441",width:"5.21037",height:"8.17765",transform:"rotate(-30 4.0293 5.14441)",fill:"currentColor"}),e.jsx("path",{d:"M10.5859 6.08032L17.9184 1.84689",stroke:"currentColor",strokeWidth:"1.5"}),e.jsx("path",{d:"M4.64405 15.3871L2.66699 13.41H16.2818L15.5595 15.3871H14.2129C13.8833 15.3871 13.2243 15.5848 13.2243 16.3756C13.2243 17.1664 13.8833 17.3642 14.2129 17.3642H14.8101V18.847H5.98069V17.3642H7.07656C7.86739 17.3642 8.06509 16.7051 8.06509 16.3756C8.06509 16.0461 7.86739 15.3871 7.07656 15.3871H4.64405Z",fill:"currentColor"})]}),d1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.33301 6.01534V14.1745C1.33301 15.8398 2.70302 17.1898 4.39301 17.1898H16.273C17.963 17.1898 19.333 15.8398 19.333 14.1745V6.01534C19.333 4.35001 17.963 3 16.273 3H4.39301C2.70302 3 1.33301 4.35001 1.33301 6.01534ZM5.833 6.54745C5.833 6.05765 5.43006 5.66059 4.933 5.66059C4.43595 5.66059 4.033 6.05765 4.033 6.54745C4.033 7.03725 4.43595 7.43431 4.933 7.43431C5.43006 7.43431 5.833 7.03725 5.833 6.54745ZM4.933 12.7498C5.43006 12.7498 5.833 13.1469 5.833 13.6367C5.833 14.1265 5.43006 14.5236 4.933 14.5236C4.43595 14.5236 4.033 14.1265 4.033 13.6367C4.033 13.1469 4.43595 12.7498 4.933 12.7498ZM16.633 10.0949C16.633 9.6051 16.2301 9.20804 15.733 9.20804C15.236 9.20804 14.833 9.6051 14.833 10.0949C14.833 10.5847 15.236 10.9818 15.733 10.9818C16.2301 10.9818 16.633 10.5847 16.633 10.0949ZM8.53301 5.66059H15.733C16.2301 5.66059 16.633 6.05765 16.633 6.54745C16.633 7.03725 16.2301 7.43431 15.733 7.43431H8.53301C8.03596 7.43431 7.63301 7.03725 7.63301 6.54745C7.63301 6.05765 8.03596 5.66059 8.53301 5.66059ZM15.733 12.7498H8.53301C8.03596 12.7498 7.63301 13.1469 7.63301 13.6367C7.63301 14.1265 8.03596 14.5236 8.53301 14.5236H15.733C16.2301 14.5236 16.633 14.1265 16.633 13.6367C16.633 13.1469 16.2301 12.7498 15.733 12.7498ZM4.93301 9.20804H12.133C12.6301 9.20804 13.033 9.6051 13.033 10.0949C13.033 10.5847 12.6301 10.9818 12.133 10.9818H4.93301C4.43595 10.9818 4.03301 10.5847 4.03301 10.0949C4.03301 9.6051 4.43595 9.20804 4.93301 9.20804Z",fill:"currentColor"})}),C1=()=>e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5 6.04947C5 6.49261 5.38931 6.85185 5.86954 6.85185H16C16.5523 6.85185 17 7.29957 17 7.85185V15C17 15.5523 16.5523 16 16 16H5.49505C4.11707 16 3 14.9692 3 13.6977V6.30233C3 5.03079 4.11707 4 5.49505 4H13.8765C14.2208 4 14.5 4.27917 14.5 4.62355C14.5 4.96792 14.2208 5.24709 13.8765 5.24709H5.86955C5.38931 5.24709 5 5.60633 5 6.04947ZM12 11.5C12 10.6716 12.6716 10 13.5 10C14.3284 10 15 10.6716 15 11.5C15 12.3284 14.3284 13 13.5 13C12.6716 13 12 12.3284 12 11.5Z",fill:"currentColor"})}),x1=()=>e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.9486 8.39806L15.2266 2L8.80794 3.71482L7.88709 5.33059L6.02143 5.3169L1.31886 9.99999L6.01969 14.6831L7.88536 14.6694L8.80621 16.2852L15.2266 18L16.9486 11.602L16.0039 10L16.9486 8.39806ZM4.8953 9.11821L8.15888 5.79769L12.6743 4.64239L10.0825 9.11821H4.8953ZM14.205 14.4763L11.6129 10L14.205 5.52369L15.4579 10L14.205 14.4763ZM8.15888 14.2006L4.8953 10.8801H10.0825L12.6743 15.3559L8.15888 14.2006Z",fill:"currentColor"})}),h1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M10.715 1C5.78414 1 1.79095 5.02806 1.79095 10C1.79095 14.9719 5.78414 19 10.715 19C15.6425 19 19.6391 14.9719 19.6391 10C19.6391 5.02806 15.6431 1 10.7122 1H10.715ZM10.715 1.39544C12.9915 1.39544 15.1357 2.29206 16.7473 3.91488C18.3555 5.53206 19.2521 7.72075 19.2465 10C19.2465 12.2967 18.3588 14.4589 16.7473 16.0851C15.1565 17.6995 12.9825 18.6074 10.715 18.6046C8.44758 18.6074 6.27352 17.6995 4.68277 16.0851C3.07458 14.4679 2.17514 12.2793 2.18077 10C2.18077 7.70331 3.0712 5.54106 4.67995 3.91488C6.2707 2.29769 8.44758 1.38925 10.715 1.39544ZM10.2667 4.56231C8.81377 4.95213 7.46883 5.69913 5.67614 7.75563C3.88345 9.81213 4.2232 11.5114 4.2232 11.5114C4.2232 11.5114 4.7182 10.3426 5.90789 9.11181C6.4732 8.52906 6.89227 8.33275 7.18252 8.33275C7.44014 8.31813 7.65727 8.52625 7.65727 8.78388V12.9588C7.65727 13.3716 7.39064 13.4628 7.14483 13.4566C6.9367 13.4538 6.7432 13.3806 6.7432 13.3806C7.96495 15.1559 10.8888 15.4051 10.8888 15.4051L12.1719 14.0337L12.2011 14.0601L13.3762 15.0619C15.5266 13.7845 16.5639 11.4175 16.5639 11.4175C15.6031 12.4311 14.9934 12.6685 14.63 12.6685C14.3077 12.6657 14.1817 12.4778 14.1817 12.4778C14.1643 12.3901 14.135 11.1182 14.1232 9.847C14.1114 8.53131 14.1232 7.21338 14.1879 7.21C14.5597 6.5125 15.7438 5.10625 15.7438 5.10625C13.532 5.54275 12.3277 6.99288 12.3277 6.99288C11.9705 6.71163 11.2438 6.75831 11.2438 6.75831C11.5835 6.94563 11.9233 7.49069 11.9233 7.94181V12.3833C11.9233 12.3833 11.1819 13.0364 10.611 13.0364C10.2712 13.0364 10.0631 12.8519 9.94889 12.6994C9.90502 12.6409 9.86677 12.5763 9.83752 12.5059V7.02156C9.7582 7.08006 9.66145 7.11212 9.56527 7.1155C9.44208 7.1155 9.31608 7.05419 9.23114 6.87531C9.16645 6.74031 9.12539 6.53838 9.12539 6.2425C9.12539 5.23169 10.2678 4.56063 10.2678 4.56063L10.2667 4.56231Z",fill:"currentColor"})}),m1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M1.9022 8.56378C1.87595 8.59003 1.9022 8.61628 1.92845 8.61628L5.26238 8.59003C5.31488 8.59003 5.34113 8.56378 5.36738 8.53753L5.52489 8.30126C5.55114 8.27501 5.52489 8.24876 5.49864 8.24876H2.19096C2.13846 8.24876 2.11221 8.27501 2.08596 8.30126L1.9022 8.56378Z",fill:"currentColor"}),e.jsx("path",{d:"M0.510874 9.40382C0.484622 9.43007 0.510874 9.45633 0.537125 9.45633H4.92111C4.94736 9.45633 4.99986 9.43007 4.99986 9.40382L5.07862 9.14131C5.07862 9.11506 5.05237 9.08881 5.02611 9.08881H0.799639C0.747136 9.08881 0.720885 9.11506 0.694634 9.14131L0.510874 9.40382Z",fill:"currentColor"}),e.jsx("path",{d:"M2.74224 10.2701C2.71599 10.2964 2.74224 10.3226 2.76849 10.3226L4.78985 10.2964C4.8161 10.2964 4.84235 10.2701 4.84235 10.2439L4.86861 10.0339C4.86861 10.0076 4.84235 9.98135 4.8161 9.98135H2.9785C2.926 9.98135 2.89975 10.0076 2.8735 10.0339L2.74224 10.2701Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10.8277 8.82629L12.3765 8.43252C12.4815 8.40627 12.5078 8.38002 12.4815 8.27501C12.2452 7.72373 11.904 7.27746 11.4052 6.96244C10.6702 6.46367 9.83012 6.35866 8.96382 6.51617C7.88752 6.69993 7.02122 7.25121 6.36494 8.1175C5.76115 8.90505 5.44614 9.82384 5.57739 10.8214C5.6824 11.6614 6.07617 12.344 6.75871 12.869C7.49375 13.4203 8.33379 13.604 9.25259 13.4728C10.3551 13.3153 11.2214 12.764 11.8777 11.8977C12.0213 11.7182 12.1434 11.5265 12.2462 11.3256C12.4014 11.8749 12.7121 12.3504 13.164 12.7377C13.8203 13.289 14.5816 13.5253 15.4217 13.5515C15.5058 13.5422 15.5933 13.5362 15.6842 13.5299C15.8483 13.5186 16.0233 13.5066 16.2092 13.4728C17.0493 13.289 17.8105 12.9215 18.4143 12.2915C19.2544 11.4252 19.6219 10.4276 19.4644 9.16756C19.3331 8.27501 18.8869 7.59247 18.1518 7.0937C17.3643 6.54242 16.4717 6.46366 15.5267 6.62117C14.4241 6.83118 13.6103 7.27746 12.9278 8.17C12.6465 8.53332 12.4333 8.91756 12.2974 9.32507H9.33134C9.20009 9.32507 9.12133 9.43007 9.09508 9.48258C8.98155 9.68694 8.80909 10.0681 8.67965 10.3541C8.65944 10.3988 8.64028 10.4411 8.62256 10.4801C8.57005 10.6376 8.62256 10.7689 8.80632 10.7689H10.5914C10.4864 10.9001 10.4077 11.0051 10.3289 11.1101L10.3289 11.1102C9.90887 11.5827 9.38385 11.7927 8.75381 11.7139C8.01877 11.6089 7.49375 11.0052 7.49375 10.2701C7.49375 9.50883 7.80876 8.90505 8.4388 8.51127C8.96382 8.17001 9.54136 8.09125 10.1189 8.38002C10.3289 8.45877 10.4339 8.56378 10.5652 8.72129C10.6594 8.8627 10.6902 8.85599 10.7905 8.83414C10.8019 8.83166 10.8143 8.82897 10.8277 8.82629ZM17.6268 9.82381V9.82384C17.5743 10.6114 17.1805 11.2152 16.4192 11.5827C15.9467 11.8189 15.4217 11.8452 14.9229 11.6352C14.2666 11.3202 13.9253 10.5851 14.0828 9.87635C14.2929 9.01005 14.8441 8.45877 15.7104 8.27501C16.603 8.065 17.443 8.59003 17.6005 9.50883C17.6268 9.61382 17.6268 9.69257 17.6268 9.82381Z",fill:"currentColor"})]}),u1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M10.0032 19.25C9.75546 19.25 9.50941 19.185 9.29221 19.06L7.02908 17.7201C6.69106 17.5311 6.856 17.4642 6.96749 17.4257C7.41818 17.2679 7.50964 17.2322 7.9907 16.959C8.04127 16.9302 8.10745 16.9404 8.1592 16.9709L9.89783 18.0026C9.96061 18.0366 10.0497 18.0366 10.1079 18.0026L16.8869 14.0896C16.9497 14.054 16.9905 13.981 16.9905 13.9063V6.08372C16.9905 6.00567 16.9497 5.9361 16.8856 5.89707L10.1093 1.98745C10.0465 1.95012 9.96333 1.95012 9.90055 1.98745L3.12557 5.89707C3.0599 5.9344 3.01816 6.00736 3.01816 6.08203V13.9047C3.01816 13.9793 3.05889 14.0506 3.12337 14.0862L4.97976 15.1586C5.9877 15.6626 6.60367 15.0687 6.60367 14.4714V6.7506C6.60367 6.6403 6.69021 6.55546 6.80051 6.55546H7.65913C7.76604 6.55546 7.85428 6.6403 7.85428 6.7506V14.4748C7.85428 15.8187 7.12122 16.5908 5.84686 16.5908C5.45488 16.5908 5.14605 16.5908 4.28403 16.1666L2.5057 15.1417C2.06621 14.8871 1.79471 14.412 1.79471 13.9047V6.08203C1.79471 5.57296 2.06621 5.09783 2.5057 4.8467L9.29153 0.931991C9.72085 0.689336 10.291 0.689336 10.7169 0.931991L17.4943 4.84839C17.9321 5.10123 18.2053 5.57466 18.2053 6.08372V13.9063C18.2053 14.4137 17.9321 14.8871 17.4943 15.1417L10.7169 19.0564C10.4997 19.182 10.2537 19.2464 10.0025 19.2464",fill:"currentColor"}),e.jsx("path",{d:"M12.0972 13.8597C9.13101 13.8597 8.5091 12.4981 8.5091 11.3561C8.5091 11.2475 8.59666 11.161 8.70543 11.161H9.58102C9.67774 11.161 9.7592 11.2314 9.77447 11.3269C9.90682 12.2191 10.3005 12.6692 12.0941 12.6692C13.5229 12.6692 14.1304 12.3464 14.1304 11.5887C14.1304 11.1526 13.9573 10.8285 11.7378 10.6113C9.88137 10.4281 8.73428 10.0191 8.73428 8.53436C8.73428 7.16667 9.88816 6.35217 11.8209 6.35217C13.9912 6.35217 15.067 7.10558 15.2028 8.72441C15.2079 8.78041 15.1875 8.83471 15.1502 8.87543C15.1129 8.91446 15.0603 8.93822 15.006 8.93822H14.1253C14.0336 8.93822 13.9539 8.87374 13.9352 8.7855C13.7231 7.84712 13.2107 7.54677 11.8175 7.54677C10.2581 7.54677 10.0765 8.08978 10.0765 8.49703C10.0765 8.99082 10.2903 9.13506 12.3945 9.41334C14.4782 9.68994 15.4675 10.0802 15.4675 11.5446C15.4675 13.0209 14.2356 13.8677 12.0873 13.8677",fill:"currentColor"})]}),p1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M14.1875 10.4387C14.1714 8.66751 15.6353 7.8165 15.7013 7.77467C14.8776 6.56974 13.5971 6.40565 13.1402 6.38635C12.0511 6.27535 11.0135 7.02823 10.4601 7.02823C9.90665 7.02823 9.05402 6.40243 8.14992 6.42013C6.96106 6.43783 5.86552 7.11027 5.25259 8.17524C4.01869 10.3148 4.93728 13.4888 6.14061 15.2279C6.72941 16.0773 7.42921 17.0344 8.35101 16.999C9.23903 16.9637 9.57364 16.4247 10.6451 16.4247C11.7165 16.4247 12.0189 16.999 12.9552 16.9814C13.9092 16.962 14.5141 16.1126 15.098 15.26C15.7721 14.2739 16.0504 13.3183 16.0665 13.2684C16.0456 13.2604 14.2068 12.5558 14.1875 10.4387Z",fill:"currentColor"}),e.jsx("path",{d:"M12.4259 5.23612C12.915 4.64411 13.2448 3.82045 13.1547 3C12.4501 3.02896 11.5974 3.46975 11.0923 4.06175C10.6402 4.58459 10.2429 5.42273 10.3507 6.22708C11.1341 6.28822 11.9369 5.82651 12.4259 5.23612Z",fill:"currentColor"})]}),f1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.26508 1.01587C5.32169 0.983195 5.39406 1.00259 5.42674 1.05919L6.34966 2.6578C7.14861 1.93639 8.22788 1.4513 9.43534 1.33485H10.5645C11.772 1.45134 12.8513 1.93649 13.6503 2.65793L14.5733 1.05919C14.606 1.00259 14.6784 0.983196 14.735 1.01588C14.7916 1.04855 14.811 1.12093 14.7783 1.17753L13.8267 2.82567C14.5865 3.58625 15.0512 4.5756 15.0663 5.65919H4.93349C4.94859 4.57551 5.41337 3.58612 6.1732 2.82554L5.22177 1.17753C5.18909 1.12093 5.20848 1.04855 5.26508 1.01587ZM8.49066 3.64912C8.49161 3.96265 8.23213 4.21755 7.91103 4.21842C7.59009 4.21921 7.32911 3.9658 7.32816 3.65228V3.64912C7.32729 3.33552 7.58677 3.08069 7.90779 3.07982C8.22873 3.07896 8.48972 3.33229 8.49066 3.64597V3.64912ZM12.8295 3.64912C12.8305 3.96265 12.571 4.21755 12.2499 4.21842C11.9289 4.21921 11.668 3.9658 11.667 3.65228V3.64912C11.6661 3.33552 11.9256 3.08069 12.2466 3.07982C12.5676 3.07896 12.8286 3.33229 12.8295 3.64597V3.64912Z",fill:"currentColor"}),e.jsx("path",{d:"M4.89373 6.26809C4.89373 6.22454 4.89696 6.18146 4.90067 6.13886H15.101C15.1046 6.18131 15.1062 6.22454 15.1062 6.26809V13.5703C15.1062 14.3555 14.4846 14.9882 13.7128 14.9882H13.6579V17.8765C13.6579 18.4971 13.1549 19 12.5344 19C11.914 19 11.4109 18.4971 11.4109 17.8765V14.9882H8.58912V17.8765C8.58912 18.497 8.0861 19 7.46559 19C6.84517 19 6.34214 18.497 6.34214 17.8765V14.9882H6.287C5.51533 14.9882 4.89373 14.3556 4.89373 13.5703V6.26809Z",fill:"currentColor"}),e.jsx("path",{d:"M3.08856 6.78871C3.70898 6.78871 4.21201 7.29174 4.21201 7.91224V12.7319C4.21201 13.3524 3.70898 13.8554 3.08856 13.8554C2.46805 13.8554 1.96503 13.3524 1.96503 12.732V7.91232C1.96495 7.29182 2.46798 6.78871 3.08856 6.78871Z",fill:"currentColor"}),e.jsx("path",{d:"M16.9115 6.78871C17.5319 6.78871 18.0349 7.29174 18.0349 7.91224V12.7319C18.0349 13.3524 17.5319 13.8554 16.9115 13.8554C16.291 13.8554 15.788 13.3524 15.788 12.732V7.91232C15.788 7.29182 16.291 6.78871 16.9115 6.78871Z",fill:"currentColor"})]}),g1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M12.2161 9.99981C12.2161 10.8859 11.4978 11.6042 10.6118 11.6042C9.72572 11.6042 9.00743 10.8859 9.00743 9.99981C9.00743 9.11375 9.72572 8.39546 10.6118 8.39546C11.4978 8.39546 12.2161 9.11375 12.2161 9.99981Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.82782 3.26238C10.0868 3.47284 10.3488 3.70689 10.6119 3.96264C10.8749 3.70695 11.1369 3.47295 11.3958 3.26254C12.0645 2.71903 12.729 2.31926 13.3494 2.11854C13.9698 1.91785 14.5895 1.90424 15.1118 2.20581C15.6341 2.50738 15.9322 3.05082 16.0686 3.68844C16.205 4.32611 16.191 5.10144 16.0547 5.95233C16.0019 6.28176 15.9302 6.62569 15.8403 6.98129C16.1933 7.08121 16.527 7.19114 16.8387 7.31016C17.6437 7.61754 18.3222 7.9931 18.8062 8.43006C19.2902 8.86697 19.6118 9.39682 19.6118 9.99995C19.6118 10.6031 19.2902 11.1329 18.8062 11.5698C18.3222 12.0068 17.6437 12.3824 16.8387 12.6897C16.527 12.8088 16.1933 12.9187 15.8403 13.0186C15.9302 13.3742 16.0019 13.7182 16.0547 14.0476C16.191 14.8985 16.205 15.6738 16.0686 16.3115C15.9322 16.9491 15.6341 17.4925 15.1118 17.7941C14.5895 18.0957 13.9698 18.0821 13.3494 17.8814C12.729 17.6807 12.0645 17.2809 11.3958 16.7374C11.1369 16.527 10.8749 16.293 10.6119 16.0373C10.3488 16.293 10.0868 16.5271 9.82782 16.7375C9.15909 17.281 8.49462 17.6808 7.87418 17.8815C7.25381 18.0822 6.63414 18.0958 6.11181 17.7943C5.58948 17.4927 5.29143 16.9493 5.15505 16.3116C5.01866 15.674 5.03264 14.8986 5.16896 14.0477C5.22175 13.7183 5.2934 13.3743 5.38336 13.0186C5.03039 12.9187 4.69668 12.8088 4.38497 12.6897C3.57992 12.3824 2.90147 12.0068 2.41743 11.5698C1.93343 11.1329 1.61182 10.6031 1.61182 9.99995C1.61182 9.39682 1.93343 8.86697 2.41743 8.43006C2.90147 7.9931 3.57992 7.61754 4.38497 7.31016C4.69668 7.19114 5.03039 7.08121 5.38336 6.98129C5.2934 6.62563 5.22175 6.28165 5.16896 5.95217C5.03264 5.10128 5.01866 4.32595 5.15505 3.68828C5.29143 3.05067 5.58948 2.50722 6.11181 2.20566C6.63414 1.90409 7.25381 1.91769 7.87418 2.11839C8.49462 2.31911 9.15909 2.71888 9.82782 3.26238ZM6.50312 2.88342C6.76685 2.73115 7.13693 2.70243 7.6333 2.86301C8.12961 3.02357 8.70889 3.36147 9.33422 3.8697C9.5745 4.06499 9.81914 4.28342 10.0659 4.52332C9.55055 5.08073 9.0373 5.71622 8.54244 6.41558C7.68933 6.49446 6.88233 6.62119 6.14191 6.78878C6.05754 6.45515 5.99069 6.13409 5.94171 5.82837C5.81423 5.03269 5.81124 4.36208 5.92035 3.85198C6.02947 3.34182 6.23938 3.03568 6.50312 2.88342ZM9.56361 6.3454C9.90985 5.88844 10.2614 5.46697 10.6119 5.08568C10.9624 5.46697 11.3139 5.88845 11.6601 6.34541C11.316 6.32973 10.9662 6.32169 10.6118 6.32169C10.2575 6.32169 9.90766 6.32973 9.56361 6.3454ZM6.35594 7.54281C6.86142 7.42988 7.4022 7.33621 7.97108 7.26484C7.78545 7.55501 7.60355 7.85398 7.42634 8.16091C7.24917 8.46778 7.08123 8.77474 6.92278 9.08053C6.70015 8.55219 6.51088 8.03703 6.35594 7.54281ZM8.1041 8.55221C7.8236 9.03805 7.56802 9.52241 7.338 9.99996C7.56802 10.4775 7.8236 10.9619 8.1041 11.4477C8.38463 11.9336 8.67634 12.3972 8.97493 12.8352C9.50353 12.8748 10.0508 12.8956 10.6118 12.8956C11.1729 12.8956 11.7202 12.8748 12.2488 12.8352C12.5474 12.3972 12.839 11.9337 13.1195 11.4479C13.4 10.962 13.6557 10.4776 13.8857 9.99996C13.6557 9.52236 13.4 9.03795 13.1195 8.55206C12.839 8.06622 12.5473 7.60269 12.2488 7.16472C11.7202 7.12514 11.1729 7.1043 10.6118 7.1043C10.0508 7.1043 9.50354 7.12513 8.97495 7.16471C8.67635 7.60273 8.38463 8.06632 8.1041 8.55221ZM5.59592 7.73447C5.821 8.45948 6.11473 9.22172 6.47298 9.99996C6.11474 10.7782 5.821 11.5404 5.59593 12.2654C5.26483 12.1717 4.95337 12.0691 4.66413 11.9586C3.91132 11.6712 3.32905 11.3385 2.94184 10.9889C2.55459 10.6393 2.39443 10.3045 2.39443 9.99995C2.39443 9.69541 2.55459 9.36056 2.94184 9.01098C3.32905 8.66144 3.91132 8.32872 4.66413 8.04128C4.95337 7.93085 5.26482 7.82821 5.59592 7.73447ZM6.92278 10.9194C6.70016 11.4477 6.51089 11.9629 6.35594 12.4571C6.86142 12.57 7.4022 12.6637 7.97106 12.7351C7.78544 12.4449 7.60354 12.1459 7.42634 11.839C7.24917 11.5321 7.08123 11.2252 6.92278 10.9194ZM5.94171 14.1716C5.9907 13.8658 6.05755 13.5448 6.14192 13.2111C6.88233 13.3787 7.68932 13.5054 8.54243 13.5843C9.03729 14.2837 9.55055 14.9192 10.0659 15.4766C9.81913 15.7165 9.5745 15.9349 9.33422 16.1302C8.70889 16.6385 8.12961 16.9764 7.6333 17.1369C7.13693 17.2975 6.76685 17.2688 6.50312 17.1165C6.23938 16.9642 6.02947 16.6581 5.92035 16.1479C5.81124 15.6378 5.81423 14.9672 5.94171 14.1716ZM11.8894 16.1301C11.6492 15.9348 11.4046 15.7164 11.1579 15.4766C11.6732 14.9192 12.1865 14.2837 12.6813 13.5843C13.5344 13.5054 14.3413 13.3787 15.0817 13.2111C15.1661 13.5447 15.2329 13.8657 15.2819 14.1714C15.4094 14.9671 15.4124 15.6377 15.3033 16.1478C15.1942 16.6579 14.9842 16.9641 14.7205 17.1164C14.4568 17.2686 14.0867 17.2973 13.5903 17.1368C13.094 16.9762 12.5147 16.6383 11.8894 16.1301ZM10.6119 14.9142C10.9624 14.5329 11.3139 14.1115 11.6602 13.6545C11.3161 13.6702 10.9662 13.6782 10.6118 13.6782C10.2575 13.6782 9.90765 13.6702 9.56359 13.6545C9.90983 14.1115 10.2613 14.533 10.6119 14.9142ZM14.8677 12.4571C14.3623 12.57 13.8215 12.6637 13.2527 12.735C13.4383 12.4449 13.6201 12.146 13.7973 11.8392C13.9745 11.5322 14.1424 11.2252 14.3009 10.9194C14.5235 11.4477 14.7128 11.9629 14.8677 12.4571ZM15.6277 12.2654C15.4027 11.5404 15.1089 10.7782 14.7507 9.99996C15.1089 9.22172 15.4027 8.45948 15.6277 7.73448C15.9588 7.82822 16.2703 7.93085 16.5595 8.04128C17.3123 8.32872 17.8946 8.66144 18.2818 9.01098C18.669 9.36056 18.8292 9.69541 18.8292 9.99995C18.8292 10.3045 18.669 10.6393 18.2818 10.9889C17.8946 11.3385 17.3123 11.6712 16.5595 11.9586C16.2703 12.069 15.9588 12.1717 15.6277 12.2654ZM12.6813 6.41559C13.5344 6.49447 14.3413 6.6212 15.0817 6.78879C15.1661 6.45521 15.2329 6.1342 15.2819 5.82852C15.4094 5.03285 15.4124 4.36223 15.3033 3.85213C15.1942 3.34197 14.9842 3.03584 14.7205 2.88357C14.4568 2.7313 14.0867 2.70258 13.5903 2.86316C13.094 3.02372 12.5147 3.36162 11.8894 3.86986C11.6492 4.06511 11.4046 4.28349 11.1579 4.52333C11.6732 5.08074 12.1864 5.71623 12.6813 6.41559ZM14.3009 9.08051C14.5235 8.55218 14.7128 8.03703 14.8677 7.54281C14.3623 7.42989 13.8215 7.33622 13.2526 7.26485C13.4382 7.55497 13.6201 7.85388 13.7973 8.16075C13.9745 8.46767 14.1424 8.77467 14.3009 9.08051Z",fill:"currentColor"})]}),w1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.66699 6.57143V2H7.23843V6.57143H2.66699ZM3.66699 3H6.23843V5.57143H3.66699V3Z",fill:"currentColor"}),e.jsx("path",{d:"M8.38135 2V6.57143H12.9528V2H8.38135Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14.0959 6.57143V2H18.6674V6.57143H14.0959ZM15.0959 3H17.6674V5.57143H15.0959V3Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.66699 7.71436V12.2858H7.23843V7.71436H2.66699ZM6.23843 8.71436H3.66699V11.2858H6.23843V8.71436Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8.38135 12.2858V7.71436H12.9528V12.2858H8.38135ZM9.38135 8.71436H11.9528V11.2858H9.38135V8.71436Z",fill:"currentColor"}),e.jsx("path",{d:"M14.0959 7.71436V12.2858H18.6674V7.71436H14.0959Z",fill:"currentColor"}),e.jsx("path",{d:"M2.66699 17.9999V13.4285H7.23843V17.9999H2.66699Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8.3811 13.4285V17.9999H12.9525V13.4285H8.3811ZM11.9525 14.4285H9.3811V16.9999H11.9525V14.4285Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14.0957 17.9999V13.4285H18.6671V17.9999H14.0957ZM15.0957 14.4285H17.6671V16.9999H15.0957V14.4285Z",fill:"currentColor"})]}),v1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M16.333 6.5L10.333 3L4.33301 6.5M16.333 6.5V13.5L10.333 17M16.333 6.5L10.333 10M10.333 17L4.33301 13.5V6.5M10.333 17L10.333 10M4.33301 6.5L10.333 10",stroke:"currentColor",strokeWidth:"1.5"})}),N=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M10.6127 3.44091C12.6754 3.44091 12.9196 3.45028 13.7308 3.48779C14.4847 3.52217 14.8918 3.65345 15.1632 3.76284C15.5221 3.90662 15.7814 4.08166 16.0498 4.35984C16.3212 4.64114 16.4871 4.90682 16.6258 5.27877C16.7313 5.56007 16.858 5.98515 16.8911 6.76343C16.9273 7.60735 16.9364 7.86052 16.9364 9.99531C16.9364 12.1332 16.9273 12.3864 16.8911 13.2272C16.858 14.0086 16.7313 14.4306 16.6258 14.7119C16.4871 15.0838 16.3182 15.3526 16.0498 15.6308C15.7784 15.9121 15.5221 16.084 15.1632 16.2278C14.8918 16.3372 14.4817 16.4685 13.7308 16.5028C12.9166 16.5403 12.6724 16.5497 10.6127 16.5497C8.5501 16.5497 8.30584 16.5403 7.49466 16.5028C6.74077 16.4685 6.33367 16.3372 6.06227 16.2278C5.70341 16.084 5.44408 15.909 5.17569 15.6308C4.90429 15.3495 4.73844 15.0838 4.59972 14.7119C4.49418 14.4306 4.36752 14.0055 4.33435 13.2272C4.29816 12.3833 4.28912 12.1301 4.28912 9.99531C4.28912 7.85739 4.29816 7.60422 4.33435 6.76343C4.36752 5.98203 4.49418 5.56007 4.59972 5.27877C4.73844 4.90682 4.90731 4.63802 5.17569 4.35984C5.44709 4.07853 5.70341 3.90662 6.06227 3.76284C6.33367 3.65345 6.74378 3.52217 7.49466 3.48779C8.30584 3.45028 8.5501 3.44091 10.6127 3.44091ZM10.6127 2C8.51693 2 8.25458 2.00938 7.43133 2.04688C6.6111 2.08439 6.04719 2.22192 5.55867 2.41883C5.04904 2.62512 4.61781 2.89705 4.1896 3.34401C3.75838 3.78785 3.49603 4.23481 3.297 4.75991C3.10702 5.26939 2.97433 5.85075 2.93815 6.70092C2.90196 7.55734 2.89291 7.82926 2.89291 10.0016C2.89291 12.1739 2.90196 12.4458 2.93815 13.2991C2.97433 14.1492 3.10702 14.7337 3.297 15.2401C3.49603 15.7683 3.75838 16.2153 4.1896 16.6591C4.61781 17.103 5.04904 17.378 5.55565 17.5812C6.04719 17.7781 6.60808 17.9156 7.42831 17.9531C8.25156 17.9906 8.51392 18 10.6097 18C12.7055 18 12.9679 17.9906 13.7911 17.9531C14.6114 17.9156 15.1753 17.7781 15.6638 17.5812C16.1704 17.378 16.6016 17.103 17.0299 16.6591C17.4581 16.2153 17.7234 15.7683 17.9194 15.2432C18.1094 14.7337 18.2421 14.1524 18.2783 13.3022C18.3145 12.4489 18.3235 12.177 18.3235 10.0047C18.3235 7.83239 18.3145 7.56046 18.2783 6.70717C18.2421 5.857 18.1094 5.27251 17.9194 4.76617C17.7295 4.23481 17.4671 3.78785 17.0359 3.34401C16.6077 2.90018 16.1765 2.62512 15.6698 2.42196C15.1783 2.22504 14.6174 2.08752 13.7972 2.05001C12.9709 2.00938 12.7086 2 10.6127 2Z",fill:"currentColor"}),e.jsx("path",{d:"M10.6131 5.89154C8.42377 5.89154 6.64761 7.73252 6.64761 10.0017C6.64761 12.2709 8.42377 14.1119 10.6131 14.1119C12.8024 14.1119 14.5785 12.2709 14.5785 10.0017C14.5785 7.73252 12.8024 5.89154 10.6131 5.89154ZM10.6131 12.6679C9.19274 12.6679 8.0408 11.4739 8.0408 10.0017C8.0408 8.52955 9.19274 7.33557 10.6131 7.33557C12.0334 7.33557 13.1853 8.52955 13.1853 10.0017C13.1853 11.4739 12.0334 12.6679 10.6131 12.6679Z",fill:"currentColor"}),e.jsx("path",{d:"M15.6614 5.72876C15.6614 6.26011 15.2452 6.68832 14.7356 6.68832C14.2229 6.68832 13.8098 6.25699 13.8098 5.72876C13.8098 5.1974 14.2259 4.76919 14.7356 4.76919C15.2452 4.76919 15.6614 5.20053 15.6614 5.72876Z",fill:"currentColor"})]}),L=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M7.64165 16.5455C13.6779 16.5455 16.9804 11.5085 16.9804 7.14179C16.9804 7.00019 16.9773 6.85544 16.971 6.71383C17.6135 6.246 18.1679 5.66653 18.6082 5.00264C18.0099 5.27069 17.3746 5.44575 16.7242 5.52185C17.4091 5.10844 17.9219 4.459 18.1676 3.69391C17.5233 4.07843 16.8186 4.34967 16.0838 4.49601C15.5888 3.96632 14.9342 3.6156 14.2213 3.49808C13.5085 3.38056 12.777 3.50278 12.14 3.84585C11.5031 4.18891 10.9961 4.73372 10.6974 5.39603C10.3988 6.05834 10.3252 6.80127 10.4879 7.50996C9.18321 7.44403 7.90684 7.10275 6.74154 6.50824C5.57623 5.91373 4.54801 5.07926 3.72353 4.05893C3.30448 4.78644 3.17625 5.64732 3.3649 6.46661C3.55355 7.2859 4.04492 8.00212 4.73915 8.46971C4.21797 8.45305 3.7082 8.31175 3.25197 8.05749V8.0984C3.2515 8.86186 3.51361 9.60193 3.99376 10.1928C4.4739 10.7837 5.14243 11.1889 5.88572 11.3395C5.40292 11.4726 4.8962 11.4919 4.40478 11.3962C4.61452 12.0528 5.0226 12.627 5.57206 13.0388C6.12153 13.4506 6.78496 13.6794 7.46978 13.6933C6.30716 14.6129 4.871 15.1117 3.39259 15.1093C3.13041 15.1089 2.86848 15.0927 2.60822 15.0609C4.11012 16.0311 5.85724 16.5464 7.64165 16.5455Z",fill:"currentColor"})}),j=Object.freeze(Object.defineProperty({__proto__:null,AirdropperIcon:n1,AnalyticsIcon:r1,AndroidIcon:f1,CartIcon:a1,CollectiblesIcon:i1,DiscordIcon:H,GolangIcon:m1,IOSIcon:p1,IndexerIcon:w1,InstagramIcon:N,MarketplaceIcon:o1,MinterIcon:c1,NodeGatewayIcon:v1,NodeJSIcon:u1,ReactIcon:g1,SequenceIcon:d1,TwitterIcon:L,UnityIcon:x1,UnrealIcon:h1,WalletIcon:C1},Symbol.toStringTag,{value:"Module"})),b1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"Solutions"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80 mr-8",children:"Follow our solution guides to boost your game's acquisition, monetization and retention with the power of web3."})]}),e.jsxs("div",{className:"flex md:flex-row flex-col gap-4",children:[e.jsx(b,{theme:"purple",heading:"Acquire players",items:[{icon:"WalletIcon",title:"Universal Wallet",body:"Easily onboard web3-native players with a complete Universal Wallet.",link:"/solutions/wallets/universal-wallet/overview"},{icon:"WalletIcon",title:"Embedded Wallet",body:"Gasless Transactions. No popups. Deliver a seamless experience for both web2 and web3 players with Sequence Wallet-as-a-Service embedded into your game or app.",link:"/solutions/wallets/embedded-wallet/overview"},{icon:"CollectiblesIcon",title:"Collectibles",body:"Manage contracts and collections with our no-code Builder.",link:"/solutions/collectibles/contracts/deploy-an-item-collection"}]}),e.jsx(b,{theme:"green",heading:"Earn more revenue",items:[{icon:"MarketplaceIcon",title:"White-Label Marketplace",body:"Launch an in-game collectibles marketplace within minutes.",link:"/solutions/marketplaces/white-label-marketplace"},{icon:"SequenceIcon",title:"Marketplace APIs",body:"Integrate custom in-game marketplaces with our APIs.",link:"/solutions/marketplaces/orderbook/overview"},{icon:"SequenceIcon",title:"Onramps",body:"Allow players to convert from fiat to any crypto globally.",link:"/solutions/payments/onramps/fiat-on-ramps"}]}),e.jsx(b,{theme:"yellow",heading:"Retain and grow",items:[{icon:"MinterIcon",title:"Minter",body:"Securely mint achievement tokens tied to your game.",link:"/guides/mint-collectibles-serverless#1-setup-cloudflare-environment-with-wrangler-cli-and-deploy-a-test"},{icon:"AnalyticsIcon",title:"Analytics",body:"Track every aspect of web3 activity within your games.",link:"/solutions/builder/analytics"}]})]})]}),b=({heading:t,items:l,theme:s})=>e.jsx("div",{className:"flex-1 h-fit shrink-0 rounded-xl dark:bg-white-10 bg-white overflow-hidden",children:e.jsxs("div",{className:"flex flex-col gap-3 p-4 relative",children:[e.jsx("div",{className:n("absolute inset-0 opacity-20 z-0 pointer-events-none",{"dark:bg-gradient-to-b from-[#3400A0] to-transparent":s==="purple","dark:bg-gradient-to-b from-[#0A3F16] to-transparent":s==="green","dark:bg-gradient-to-b from-[#897031] to-transparent":s==="yellow"})}),e.jsx("p",{className:"px-4 font-bold text-themed-primary z-10",children:t}),l.map((o,r)=>{const i=j[o.icon];return e.jsxs("a",{href:o.link,className:"hover-fade p-4 rounded-md z-10 dark:bg-white-10 bg-black-7",children:[e.jsx("div",{className:"flex gap-2",children:e.jsxs("p",{className:"flex items-start gap-2 text-xl leading-7 font-bold text-themed-primary",children:[e.jsx("span",{className:"mt-1",children:e.jsx(i,{})}),o.title]})}),e.jsx("p",{className:"text-themed-secondary text-sm font-medium",children:o.body})]},r)})]})}),a=({href:t,...l})=>t!=null&&t.startsWith("/")?e.jsx("a",{href:t,...l}):e.jsx("a",{href:t,target:"_blank",rel:"noopener noreferrer",...l}),j1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"Guides"}),e.jsx("p",{className:"text-md leading-6 font-medium dark:text-white-80 text-black-80 mr-8",children:"Follow our step-by-step guides and open source code templates to accelerate your time to market."})]}),e.jsxs("div",{className:"flex flex-wrap gap-4 md:flex-row flex-col",children:[e.jsx(C,{title:"Build a web3 game with WebGL",body:"Follow a step by step guide to build a web-based game demo that leverages Sequence Embedded Wallet with custom in-game achievement tokens.",link:"/guides/webgl-guide"}),e.jsx(C,{title:"Build a web3 game with Unity",body:"Learn how to build an engaging iOS and Android game that uses Sequence Embedded Wallets under the hood for an integrated marketplace and in-game currency.",link:"/guides/unity-guide"}),e.jsx(C,{title:"Create web3 lootboxes",body:"With this tutorial, build a web-based maze where lootbox items are generated using AI and dynamically minted into the player's universal wallet.",link:"/guides/lootbox"}),e.jsx(C,{title:"Orderbook Marketplace",body:"Build an API-driven marketplace where players can mint, then sell or buy items using a custom web-based interface leveraging Sequence Orderbook APIs.",link:"/guides/custom-marketplace-guide"})]})]}),C=({title:t,body:l,link:s,image:o})=>e.jsxs("div",{className:"flex flex-col gap-4 p-4 dark:bg-white-10 bg-white rounded-xl md:w-[calc(50%-8px)]",children:[o&&e.jsx("div",{className:"rounded-md overflow-hidden w-full aspect-[2]",children:e.jsx("img",{src:o,className:"object-cover w-full h-full"})}),e.jsx("p",{className:"text-xl leading-7 text-themed-primary font-bold",children:t}),e.jsx("p",{className:"text-themed-secondary text-md font-medium leading-6",children:l}),e.jsx(a,{href:s,className:"hover-fade rounded-md dark:bg-white-15 bg-black-7 px-4 py-3 text-themed-primary text-sm font-bold w-fit",children:"Read guide"})]}),y1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"SDKs"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80 mr-8",children:"Leverage our open source SDKs to easily integrate from any popular game development framework or language."})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 md:flex-row flex-col",children:[e.jsx(c,{icon:"UnityIcon",title:"Unity",body:"Integrate Sequence with our native Unity library.",link:"/sdk/unity/overview"}),e.jsx(c,{icon:"UnrealIcon",title:"Unreal Engine",body:"Integrate Sequence with our native Unreal Engine library.",link:"/sdk/unreal/overview"}),e.jsx(c,{icon:"GolangIcon",title:"Go",body:"Leverage Sequence APIs easily from your Go backend.",link:"/sdk/go/overview"}),e.jsx(c,{icon:"NodeJSIcon",title:"Typescript",body:"Integrate Sequence APIs with our TypeScript SDK.",link:"/sdk/typescript/guides/overview"}),e.jsx(c,{icon:"SequenceIcon",title:"Sequence Kit",body:"Add web onboarding for any web3 wallet.",link:"/sdk/sequence-kit/overview"})]})]}),c=({title:t,body:l,icon:s,link:o})=>{const r=j[s];return e.jsxs(a,{href:o,className:"hover-fade p-4 dark:bg-white-10 bg-white rounded-xl md:w-[calc(33%-(16px/3))]",children:[e.jsxs("p",{className:"font-bold text-themed-primary text-xl leading-7 flex items-center gap-2",children:[e.jsx(r,{}),t]}),e.jsx("p",{className:"text-sm font-medium text-themed-secondary",children:l})]})},k1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"APIs"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80 mr-8",children:"Use our modular APIs for more advanced integrations and for accessing on-chain data through easy-to-use interfaces."})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 md:flex-row flex-col",children:[e.jsx(d,{title:"Marketplace API",icon:"MarketplaceIcon",body:"Integrate sell and buy operations through our orderbook interface.",link:"/api/marketplace/overview"}),e.jsx(d,{title:"Indexer API",icon:"IndexerIcon",body:"Query wallets and contracts on Ethereum-compatible chains.",link:"/api/indexer/overview"}),e.jsx(d,{title:"Metadata API",icon:"SequenceIcon",body:"Fetch token details on any collection and collectible.",link:"/api/metadata/overview"}),e.jsx(d,{title:"Transactions API",icon:"SequenceIcon",body:"Send and optimize transactions on any chain through our performant Sequence Relayer.",link:"/api/relayer/overview"}),e.jsx(d,{title:"Node Gateway",icon:"NodeGatewayIcon",body:"Leverage Sequence's auto-scaling node service.",link:"/api/node-gateway"})]})]}),d=({title:t,body:l,icon:s,link:o})=>{const r=j[s];return e.jsxs(a,{href:o,className:"hover-fade p-4 dark:bg-white-10 bg-white rounded-xl md:w-[calc(33%-(16px/3))]",children:[e.jsxs("p",{className:"font-bold text-themed-primary text-xl leading-7 flex items-center gap-2",children:[e.jsx(r,{}),t]}),e.jsx("p",{className:"text-sm font-medium text-themed-secondary",children:l})]})},M1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"Support"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80 mr-8",children:"Follow our solution guides to boost your game's acquisition, monetization and retention with the power of web3."})]}),e.jsxs("div",{className:"flex flex-wrap gap-x-10 gap-y-5 md:flex-row flex-col",children:[e.jsx(x,{link:"/support",title:"Chat Support",body:"Chat with our support team on specific questions."}),e.jsx(x,{link:"https://discord.gg/sequence",title:"Community",body:"Join our Discord community to learn from others building on Sequence."}),e.jsx(x,{link:"https://go.crisp.chat/chat/embed/?website_id=9ef4395b-6bb1-4645-8e02-6071d89290a1",title:"Contact our team",body:"Reach out to our integration team to discuss how you can partner with Sequence."}),e.jsx(x,{link:"https://support.sequence.xyz",title:"Knowledge Base",body:"Browse FAQs and answers to common support requests."})]})]}),x=({title:t,body:l,link:s})=>e.jsxs("div",{className:"md:w-[calc(50%-20px)] border-t dark:border-white-10 border-black-10 flex flex-col gap-3 py-5",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-themed-primary font-bold text-xl leading-7",children:t}),e.jsx("p",{className:"text-themed-secondary font-medium text-sm leading-5 md:pr-0 pr-6",children:l})]}),e.jsx(a,{href:s,className:"hover-fade px-5 py-3 dark:bg-white-15 bg-black-7 rounded-full w-fit text-sm leading-5 font-bold text-themed-primary",children:"Contact us"})]});function H1({children:t,className:l}){return e.jsxs("div",{className:n("relative",l),children:[e.jsx("div",{className:"absolute inset-0 z-0 flex items-center",children:e.jsx("div",{className:"w-full h-full max-h-[600px] dark:bg-gradient-dark bg-gradient-light"})}),e.jsx("div",{className:"relative z-10",children:t})]})}const N1=({logo:t})=>{const[l,s]=I1(),[o,r]=h.useState("");return e.jsx("footer",{className:"border-t border-black-10 px-5 pt-15",children:e.jsxs("div",{className:"w-full max-w-screen-lg mx-auto flex flex-col gap-10",children:[e.jsxs("div",{className:"flex flex-col gap-5",children:[e.jsx(a,{href:"https://sequence.xyz",className:"hover-fade w-fit",children:t}),e.jsxs("div",{className:"flex gap-10 md:items-start md:flex-row flex-col",children:[e.jsx("div",{className:"flex-1",children:e.jsx("form",{onSubmit:i=>{i.preventDefault(),s(o)},children:e.jsxs("div",{className:"flex items-center rounded-lg border dark:border-white-25 border-black-10 p-3 md:max-w-[378px]",children:[e.jsx("input",{className:n("pl-1 pr-4 w-full outline-none bg-transparent text-sm","dark:text-white-80 text-black-80","dark:placeholder:text-white-50 placeholder:text-black-50"),placeholder:"Stay up to date",type:"text",value:l==="invalid"?"Please enter a valid email address!":l==="success"?"Thanks for joining!":o,disabled:l!=="initial",onChange:i=>r(i.target.value)}),e.jsx("button",{type:"submit",disabled:l!=="initial",className:"hover-fade px-3 py-1 rounded text-themed-primary dark:bg-white-15 bg-black-7 font-bold text-[0.625rem] leading-[1rem] disabled:pointer-events-none","aria-label":"Join",children:e.jsx("div",{className:"flex justify-center w-[22px]",children:l==="loading"?e.jsx("div",{className:"py-0.5",children:e.jsx("div",{className:n("w-3 h-3 border-2 rounded-full border border-l-transparent animate-spin","dark:border-t-white border-t-black-80","dark:border-r-white border-r-black-80","dark:border-b-white border-b-black-80")})}):"Join"})})]})})}),e.jsx("div",{className:"flex-1 flex gap-2 text-xs font-medium text-themed-secondary",children:L1.map((i,u)=>e.jsx("div",{className:"w-1/2 flex md:flex-row flex-col gap-2.5",children:i.map((p,Z)=>e.jsx("div",{className:"md:grow flex flex-col gap-3",children:p.map((y,V)=>e.jsx(a,{href:y.href,className:"w-fit hover-fade",children:y.text},V))},Z))},u))})]})]}),e.jsxs("div",{className:"border-t dark:border-white-10 border-black-10 flex items-center justify-between py-7",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a,{href:"https://twitter.com/0xsequence",className:"text-themed-secondary hover-fade",children:e.jsx(L,{})}),e.jsx(a,{href:"https://discord.gg/sequence",className:"text-themed-secondary hover-fade",children:e.jsx(H,{})}),e.jsx(a,{href:"https://www.instagram.com/0xsequence",className:"text-themed-secondary hover-fade",children:e.jsx(N,{})})]}),e.jsx(a,{href:"https://horizon.io",className:"hover-fade",children:e.jsx("img",{src:"/img/horizon-logo.png",className:"max-w-24 dark:invert-0 invert"})})]})]})})},L1=[[[{text:"Home",href:"https://sequence.xyz"},{text:"Pricing",href:"https://sequence.xyz/pricing"},{text:"Blog",href:"https://sequence.xyz/blog"}],[{text:"Terms",href:"https://sequence.xyz/terms"},{text:"Privacy",href:"https://sequence.xyz/privacy"}]],[[{text:"Contact",href:"https://sequence.xyz/contact"},{text:"Media Kit",href:"https://40061393.fs1.hubspotusercontent-na1.net/hubfs/40061393/Sequence%20Media%20Kit%202024.pdf"},{text:"Docs",href:"https://docs.sequence.xyz"}],[{text:"Sequence Builder",href:"https://sequence.build"},{text:"Sequence Wallet",href:"https://sequence.app"}]]],Z1=/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/,V1="65e38f6a-690c-4318-80db-be3b97a34448",I1=()=>{const[t,l]=h.useState("initial"),s=h.useRef(void 0);return h.useEffect(()=>()=>{clearTimeout(s.current),s.current=void 0},[]),[t,async r=>{if(!Z1.test(r)){l("invalid"),clearTimeout(s.current),s.current=setTimeout(()=>l("initial"),1500);return}l("loading");const u=await fetch(`https://sequence-contentful.vercel.app/api/forms/${V1}`,{method:"POST",body:JSON.stringify({fields:[{name:"email",value:r}],context:{pageUri:window.location.href,pageName:"Sequence docs footer"},skipValidation:"false"})}),{result:p}=await u.json();if(p==="error"){l("error"),clearTimeout(s.current),s.current=setTimeout(()=>l("initial"),1500);return}l("success")}]},q1={title:"Sequence - Web3 Gaming Platform",layout:"landing",showLogo:!1,content:{horizontalPadding:"0px",width:"100%",verticalPadding:"0px"}};function k(t){return t1||M("HomePage",!1),m||M("HomePage.Logo",!0),e.jsxs("div",{className:"flex flex-col",children:[e.jsx(s1,{logo:e.jsx(m,{className:"w-52"})}),e.jsx("div",{className:"px-5 z-10",children:e.jsx("div",{className:"w-full max-w-screen-lg mx-auto",children:e.jsx(b1,{})})}),e.jsx(H1,{className:"px-5 mt-30",children:e.jsx("div",{className:"w-full max-w-screen-lg mx-auto",children:e.jsx(j1,{})})}),e.jsx("div",{className:"px-5 my-30",children:e.jsxs("div",{className:"w-full max-w-screen-lg mx-auto flex flex-col gap-30",children:[e.jsx(y1,{}),e.jsx(k1,{}),e.jsx(M1,{})]})}),e.jsx(N1,{logo:e.jsx(m,{className:"w-32"})})]})}function _1(t={}){const{wrapper:l}={...P(),...t.components};return l?e.jsx(l,{...t,children:e.jsx(k,{...t})}):k()}function M(t,l){throw new Error("Expected "+(l?"component":"object")+" `"+t+"` to be defined: you likely forgot to import, pass, or provide it.")}export{_1 as default,q1 as frontmatter}; +import{j as e,L as I,c as n,u as S,a as R,R as q,b as _,T as f,C as g,r as h,d as P}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";var z="vocs_Button_button",B="vocs_Button_button_accent";function A({children:t,className:l,href:s,variant:o}){return e.jsx(I,{className:n(l,z,o==="accent"&&B),href:s,variant:"styleless",children:t})}var T="vocs_HomePage_button",E="vocs_HomePage_buttons",W="vocs_HomePage_description",G="vocs_HomePage_logo",w="vocs_HomePage_packageManager",U="vocs_HomePage",D="vocs_HomePage_tabs",v="vocs_HomePage_tabsContent",O="vocs_HomePage_tabsList",F="vocs_HomePage_tagline",K="vocs_HomePage_title";function $({children:t,className:l}){return e.jsx("div",{className:n(l,U),children:t})}function m({className:t}){const{logoUrl:l,title:s}=S();return l?e.jsx("div",{className:n(t,G),children:e.jsx(R,{})}):e.jsx("h1",{className:n(t,K),children:s})}function J({children:t,className:l}){return e.jsx("div",{className:n(l,F),children:t})}function X({children:t,className:l}){return e.jsx("div",{className:n(l,W),children:t})}function Q({children:t,className:l}){return e.jsx("div",{className:n(l,E),children:t})}function Y(t){return e.jsx(A,{...t,className:n(T,t.className)})}function e1({name:t,type:l="install"}){return e.jsxs(q,{className:D,defaultValue:"npm",children:[e.jsxs(_,{className:O,children:[e.jsx(f,{value:"npm",children:"npm"}),e.jsx(f,{value:"pnpm",children:"pnpm"}),e.jsx(f,{value:"yarn",children:"yarn"})]}),e.jsxs(g,{className:v,value:"npm",children:[e.jsx("span",{className:w,children:"npm"})," ",l==="init"?"init":"install"," ",t]}),e.jsxs(g,{className:v,value:"pnpm",children:[e.jsx("span",{className:w,children:"pnpm"})," ",l==="init"?"create":"install"," ",t]}),e.jsxs(g,{className:v,value:"yarn",children:[e.jsx("span",{className:w,children:"yarn"})," ",l==="init"?"create":"install"," ",t]})]})}const t1=Object.freeze(Object.defineProperty({__proto__:null,Button:Y,Buttons:Q,Description:X,InstallPackage:e1,Logo:m,Root:$,Tagline:J},Symbol.toStringTag,{value:"Module"}));function l1({children:t,className:l}){return e.jsxs("div",{className:n("relative",l),children:[e.jsx("div",{className:"absolute inset-0 z-0 flex items-center dark:bg-matrix-dark bg-matrix-light mix-blend-normal dark:mix-blend-multiply",children:e.jsx("div",{style:{height:"100%",width:"100%",maxHeight:"465px"}})}),e.jsx("div",{className:"relative z-10",children:t})]})}const s1=({logo:t})=>e.jsx(l1,{className:"pt-20 pb-40 -mb-10 px-5 z-0",children:e.jsxs("section",{className:"flex flex-col items-center gap-4 max-w-screen-lg mx-auto",children:[t,e.jsx("h2",{className:"text-xl font-bold text-themed-primary max-w-3xl text-center text-wrap px-6",children:"Welcome to Sequence docs. Here you can learn about the modular Sequence products that empower game developers to build engaging web3 games on any Ethereum-compatible chain."})]})}),o1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M17.333 7.86186L15.553 3.41174H5.11305L3.33301 7.86186V7.94115C3.33301 8.28156 3.43174 8.78299 3.74002 9.21116C3.85255 9.36746 3.99075 9.51049 4.15654 9.63056V16.5882H16.5095V9.63056C16.6753 9.51049 16.8135 9.36746 16.926 9.21116C17.2343 8.78299 17.333 8.28156 17.333 7.94115V7.86186ZM15.6859 9.96693C15.5572 9.98849 15.4201 9.99998 15.2742 9.99998C14.485 9.99998 13.951 9.66363 13.6271 9.21773C13.3032 9.66363 12.7692 9.99998 11.9801 9.99998C11.1909 9.99998 10.6569 9.66363 10.333 9.21773C10.0091 9.66363 9.47511 9.99998 8.68595 9.99998C7.89679 9.99998 7.36277 9.66363 7.03889 9.21773C6.71501 9.66363 6.18099 9.99998 5.39183 9.99998C5.24595 9.99998 5.10879 9.98849 4.98007 9.96693V13.3985H15.6859V9.96693ZM14.0389 7.94115C14.0389 8.14977 14.1049 8.47187 14.2907 8.72997C14.4614 8.96708 14.7496 9.17645 15.2742 9.17645C15.7988 9.17645 16.087 8.96708 16.2577 8.72997C16.423 8.50039 16.4934 8.22017 16.507 8.01423L16.4778 7.94115H14.0389ZM14.9954 4.23527L16.1483 7.11763H13.9575L13.317 4.23527H14.9954ZM13.1139 7.11763L12.4733 4.23527H10.7448V7.11763H13.1139ZM7.55225 7.11763L8.19277 4.23527H9.92124V7.11763H7.55225ZM7.34915 4.23527L6.70863 7.11763H4.51767L5.67061 4.23527H7.34915ZM4.15903 8.01423L4.18826 7.94115H6.62713C6.62713 8.14977 6.56115 8.47187 6.37532 8.72997C6.2046 8.96708 5.91645 9.17645 5.39183 9.17645C4.86721 9.17645 4.57906 8.96708 4.40835 8.72997C4.24304 8.50039 4.17258 8.22017 4.15903 8.01423ZM9.66944 8.72997C9.85527 8.47187 9.92124 8.14977 9.92124 7.94115H7.45065C7.45065 8.14977 7.51663 8.47187 7.70246 8.72997C7.87318 8.96708 8.16133 9.17645 8.68595 9.17645C9.21057 9.17645 9.49872 8.96708 9.66944 8.72997ZM12.9636 8.72997C13.1494 8.47187 13.2154 8.14977 13.2154 7.94115H10.7448C10.7448 8.14977 10.8107 8.47187 10.9966 8.72997C11.1673 8.96708 11.4554 9.17645 11.9801 9.17645C12.5047 9.17645 12.7928 8.96708 12.9636 8.72997Z",fill:"currentColor"})}),n1=()=>e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10 1.59937C6.19712 1.59937 3.11426 4.68223 3.11426 8.48515C3.11419 8.54272 3.13215 8.6008 3.16933 8.65041L7.24573 14.081V18.4007H12.7544V14.081L16.8307 8.65041C16.8679 8.6008 16.8859 8.54272 16.8858 8.48515C16.8858 4.68223 13.803 1.59937 10 1.59937ZM10 6.55713C8.93523 6.55713 8.07202 7.42033 8.07202 8.48515H8.07747C8.42243 10.2099 9.17381 13.9938 9.17381 13.9938H10.8263C10.8263 13.9938 11.5777 10.2099 11.9226 8.48515H11.9281C11.9281 7.42033 11.0648 6.55713 10 6.55713ZM7.86545 13.9938L3.66512 8.38616C3.66512 7.32135 4.52833 6.55713 5.59314 6.55713C6.65795 6.55713 7.52116 7.42033 7.52116 8.48515C7.52116 8.48515 8.27248 12.269 8.61744 13.9938H7.86545ZM12.1346 13.9938L16.335 8.38616C16.335 7.32135 15.4717 6.55713 14.4069 6.55713C13.3421 6.55713 12.4789 7.42033 12.4789 8.48515C12.4789 8.48515 11.7276 12.269 11.3826 13.9938H12.1346Z",fill:"currentColor"})}),r1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("rect",{x:"8.75781",y:"7.84082",width:"3.81818",height:"9.33333",rx:"1",fill:"currentColor"}),e.jsx("rect",{x:"13.8486",y:"2.75",width:"3.81818",height:"14.4242",rx:"1",fill:"currentColor"}),e.jsx("rect",{width:"3.81818",height:"5.93939",rx:"1",transform:"matrix(-1 0 0 1 7.48535 11.235)",fill:"currentColor"})]}),a1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.41883 3.25H1.83301V2.25H5.24719L7.24719 12.8085H15.833V13.8085H6.41883L4.41883 3.25Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.8473 5.25H5.24609V4.25H18.0566L16.7467 11.1018H6.33324V10.1018H15.9198L16.8473 5.25Z",fill:"currentColor"}),e.jsx("path",{d:"M8.63434 15.9743C8.63434 16.6488 8.08752 17.1956 7.41299 17.1956C6.73846 17.1956 6.19165 16.6488 6.19165 15.9743C6.19165 15.2997 6.73846 14.7529 7.41299 14.7529C8.08752 14.7529 8.63434 15.2997 8.63434 15.9743Z",fill:"currentColor"}),e.jsx("path",{d:"M15.8331 15.9743C15.8331 16.6488 15.2863 17.1956 14.6117 17.1956C13.9372 17.1956 13.3904 16.6488 13.3904 15.9743C13.3904 15.2997 13.9372 14.7529 14.6117 14.7529C15.2863 14.7529 15.8331 15.2997 15.8331 15.9743Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.8418 7.17578H16.8556V8.17578H5.8418V7.17578Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14.8617 4.95987L14.2679 10.4599L13.2737 10.3525L13.8674 4.85254L14.8617 4.95987Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M7.7421 4.95987L8.33585 10.4599L9.33008 10.3525L8.73633 4.85254L7.7421 4.95987Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M11.8018 5.03125V10.4688H10.8018V5.03125H11.8018Z",fill:"currentColor"})]}),i1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M6.37207 13.3255V6.12305H13.5745V7.86233H8.11067V13.3255H6.37207Z",fill:"currentColor"}),e.jsx("path",{d:"M3 9.95198V2.74951H10.2025V4.4888H4.7386V9.95198H3Z",fill:"currentColor"}),e.jsx("path",{d:"M9.79883 16.7503V9.54785H17.0013V16.7503H9.79883Z",fill:"currentColor"})]}),H=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M15.5263 5.46622C14.6201 5.04221 13.6511 4.73406 12.638 4.55859C12.5136 4.78353 12.3682 5.08608 12.268 5.32676C11.1911 5.1648 10.1241 5.1648 9.067 5.32676C8.9668 5.08608 8.81815 4.78353 8.69262 4.55859C7.67846 4.73406 6.70835 5.04334 5.8021 5.46847C3.9742 8.23067 3.47869 10.9243 3.72644 13.5796C4.93881 14.485 6.11373 15.035 7.26883 15.3948C7.55403 15.0023 7.80839 14.5851 8.02751 14.1453C7.61018 13.9868 7.21047 13.7911 6.83279 13.5639C6.93298 13.4896 7.03099 13.412 7.12568 13.3322C9.42927 14.4096 11.9322 14.4096 14.2083 13.3322C14.3041 13.412 14.402 13.4896 14.5012 13.5639C14.1224 13.7922 13.7215 13.9879 13.3042 14.1465C13.5233 14.5851 13.7766 15.0035 14.0629 15.396C15.2191 15.0361 16.3951 14.4861 17.6075 13.5796C17.8982 10.5014 17.1109 7.83253 15.5263 5.46622ZM8.34134 11.9466C7.64983 11.9466 7.08273 11.301 7.08273 10.5149C7.08273 9.72873 7.63772 9.08205 8.34134 9.08205C9.04499 9.08205 9.61207 9.7276 9.59996 10.5149C9.60105 11.301 9.04499 11.9466 8.34134 11.9466ZM12.9926 11.9466C12.3011 11.9466 11.734 11.301 11.734 10.5149C11.734 9.72873 12.2889 9.08205 12.9926 9.08205C13.6962 9.08205 14.2633 9.7276 14.2512 10.5149C14.2512 11.301 13.6962 11.9466 12.9926 11.9466Z",fill:"currentColor"})}),c1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("rect",{x:"4.0293",y:"5.14441",width:"5.21037",height:"8.17765",transform:"rotate(-30 4.0293 5.14441)",fill:"currentColor"}),e.jsx("path",{d:"M10.5859 6.08032L17.9184 1.84689",stroke:"currentColor",strokeWidth:"1.5"}),e.jsx("path",{d:"M4.64405 15.3871L2.66699 13.41H16.2818L15.5595 15.3871H14.2129C13.8833 15.3871 13.2243 15.5848 13.2243 16.3756C13.2243 17.1664 13.8833 17.3642 14.2129 17.3642H14.8101V18.847H5.98069V17.3642H7.07656C7.86739 17.3642 8.06509 16.7051 8.06509 16.3756C8.06509 16.0461 7.86739 15.3871 7.07656 15.3871H4.64405Z",fill:"currentColor"})]}),d1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M1.33301 6.01534V14.1745C1.33301 15.8398 2.70302 17.1898 4.39301 17.1898H16.273C17.963 17.1898 19.333 15.8398 19.333 14.1745V6.01534C19.333 4.35001 17.963 3 16.273 3H4.39301C2.70302 3 1.33301 4.35001 1.33301 6.01534ZM5.833 6.54745C5.833 6.05765 5.43006 5.66059 4.933 5.66059C4.43595 5.66059 4.033 6.05765 4.033 6.54745C4.033 7.03725 4.43595 7.43431 4.933 7.43431C5.43006 7.43431 5.833 7.03725 5.833 6.54745ZM4.933 12.7498C5.43006 12.7498 5.833 13.1469 5.833 13.6367C5.833 14.1265 5.43006 14.5236 4.933 14.5236C4.43595 14.5236 4.033 14.1265 4.033 13.6367C4.033 13.1469 4.43595 12.7498 4.933 12.7498ZM16.633 10.0949C16.633 9.6051 16.2301 9.20804 15.733 9.20804C15.236 9.20804 14.833 9.6051 14.833 10.0949C14.833 10.5847 15.236 10.9818 15.733 10.9818C16.2301 10.9818 16.633 10.5847 16.633 10.0949ZM8.53301 5.66059H15.733C16.2301 5.66059 16.633 6.05765 16.633 6.54745C16.633 7.03725 16.2301 7.43431 15.733 7.43431H8.53301C8.03596 7.43431 7.63301 7.03725 7.63301 6.54745C7.63301 6.05765 8.03596 5.66059 8.53301 5.66059ZM15.733 12.7498H8.53301C8.03596 12.7498 7.63301 13.1469 7.63301 13.6367C7.63301 14.1265 8.03596 14.5236 8.53301 14.5236H15.733C16.2301 14.5236 16.633 14.1265 16.633 13.6367C16.633 13.1469 16.2301 12.7498 15.733 12.7498ZM4.93301 9.20804H12.133C12.6301 9.20804 13.033 9.6051 13.033 10.0949C13.033 10.5847 12.6301 10.9818 12.133 10.9818H4.93301C4.43595 10.9818 4.03301 10.5847 4.03301 10.0949C4.03301 9.6051 4.43595 9.20804 4.93301 9.20804Z",fill:"currentColor"})}),C1=()=>e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5 6.04947C5 6.49261 5.38931 6.85185 5.86954 6.85185H16C16.5523 6.85185 17 7.29957 17 7.85185V15C17 15.5523 16.5523 16 16 16H5.49505C4.11707 16 3 14.9692 3 13.6977V6.30233C3 5.03079 4.11707 4 5.49505 4H13.8765C14.2208 4 14.5 4.27917 14.5 4.62355C14.5 4.96792 14.2208 5.24709 13.8765 5.24709H5.86955C5.38931 5.24709 5 5.60633 5 6.04947ZM12 11.5C12 10.6716 12.6716 10 13.5 10C14.3284 10 15 10.6716 15 11.5C15 12.3284 14.3284 13 13.5 13C12.6716 13 12 12.3284 12 11.5Z",fill:"currentColor"})}),x1=()=>e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M16.9486 8.39806L15.2266 2L8.80794 3.71482L7.88709 5.33059L6.02143 5.3169L1.31886 9.99999L6.01969 14.6831L7.88536 14.6694L8.80621 16.2852L15.2266 18L16.9486 11.602L16.0039 10L16.9486 8.39806ZM4.8953 9.11821L8.15888 5.79769L12.6743 4.64239L10.0825 9.11821H4.8953ZM14.205 14.4763L11.6129 10L14.205 5.52369L15.4579 10L14.205 14.4763ZM8.15888 14.2006L4.8953 10.8801H10.0825L12.6743 15.3559L8.15888 14.2006Z",fill:"currentColor"})}),h1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M10.715 1C5.78414 1 1.79095 5.02806 1.79095 10C1.79095 14.9719 5.78414 19 10.715 19C15.6425 19 19.6391 14.9719 19.6391 10C19.6391 5.02806 15.6431 1 10.7122 1H10.715ZM10.715 1.39544C12.9915 1.39544 15.1357 2.29206 16.7473 3.91488C18.3555 5.53206 19.2521 7.72075 19.2465 10C19.2465 12.2967 18.3588 14.4589 16.7473 16.0851C15.1565 17.6995 12.9825 18.6074 10.715 18.6046C8.44758 18.6074 6.27352 17.6995 4.68277 16.0851C3.07458 14.4679 2.17514 12.2793 2.18077 10C2.18077 7.70331 3.0712 5.54106 4.67995 3.91488C6.2707 2.29769 8.44758 1.38925 10.715 1.39544ZM10.2667 4.56231C8.81377 4.95213 7.46883 5.69913 5.67614 7.75563C3.88345 9.81213 4.2232 11.5114 4.2232 11.5114C4.2232 11.5114 4.7182 10.3426 5.90789 9.11181C6.4732 8.52906 6.89227 8.33275 7.18252 8.33275C7.44014 8.31813 7.65727 8.52625 7.65727 8.78388V12.9588C7.65727 13.3716 7.39064 13.4628 7.14483 13.4566C6.9367 13.4538 6.7432 13.3806 6.7432 13.3806C7.96495 15.1559 10.8888 15.4051 10.8888 15.4051L12.1719 14.0337L12.2011 14.0601L13.3762 15.0619C15.5266 13.7845 16.5639 11.4175 16.5639 11.4175C15.6031 12.4311 14.9934 12.6685 14.63 12.6685C14.3077 12.6657 14.1817 12.4778 14.1817 12.4778C14.1643 12.3901 14.135 11.1182 14.1232 9.847C14.1114 8.53131 14.1232 7.21338 14.1879 7.21C14.5597 6.5125 15.7438 5.10625 15.7438 5.10625C13.532 5.54275 12.3277 6.99288 12.3277 6.99288C11.9705 6.71163 11.2438 6.75831 11.2438 6.75831C11.5835 6.94563 11.9233 7.49069 11.9233 7.94181V12.3833C11.9233 12.3833 11.1819 13.0364 10.611 13.0364C10.2712 13.0364 10.0631 12.8519 9.94889 12.6994C9.90502 12.6409 9.86677 12.5763 9.83752 12.5059V7.02156C9.7582 7.08006 9.66145 7.11212 9.56527 7.1155C9.44208 7.1155 9.31608 7.05419 9.23114 6.87531C9.16645 6.74031 9.12539 6.53838 9.12539 6.2425C9.12539 5.23169 10.2678 4.56063 10.2678 4.56063L10.2667 4.56231Z",fill:"currentColor"})}),m1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M1.9022 8.56378C1.87595 8.59003 1.9022 8.61628 1.92845 8.61628L5.26238 8.59003C5.31488 8.59003 5.34113 8.56378 5.36738 8.53753L5.52489 8.30126C5.55114 8.27501 5.52489 8.24876 5.49864 8.24876H2.19096C2.13846 8.24876 2.11221 8.27501 2.08596 8.30126L1.9022 8.56378Z",fill:"currentColor"}),e.jsx("path",{d:"M0.510874 9.40382C0.484622 9.43007 0.510874 9.45633 0.537125 9.45633H4.92111C4.94736 9.45633 4.99986 9.43007 4.99986 9.40382L5.07862 9.14131C5.07862 9.11506 5.05237 9.08881 5.02611 9.08881H0.799639C0.747136 9.08881 0.720885 9.11506 0.694634 9.14131L0.510874 9.40382Z",fill:"currentColor"}),e.jsx("path",{d:"M2.74224 10.2701C2.71599 10.2964 2.74224 10.3226 2.76849 10.3226L4.78985 10.2964C4.8161 10.2964 4.84235 10.2701 4.84235 10.2439L4.86861 10.0339C4.86861 10.0076 4.84235 9.98135 4.8161 9.98135H2.9785C2.926 9.98135 2.89975 10.0076 2.8735 10.0339L2.74224 10.2701Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10.8277 8.82629L12.3765 8.43252C12.4815 8.40627 12.5078 8.38002 12.4815 8.27501C12.2452 7.72373 11.904 7.27746 11.4052 6.96244C10.6702 6.46367 9.83012 6.35866 8.96382 6.51617C7.88752 6.69993 7.02122 7.25121 6.36494 8.1175C5.76115 8.90505 5.44614 9.82384 5.57739 10.8214C5.6824 11.6614 6.07617 12.344 6.75871 12.869C7.49375 13.4203 8.33379 13.604 9.25259 13.4728C10.3551 13.3153 11.2214 12.764 11.8777 11.8977C12.0213 11.7182 12.1434 11.5265 12.2462 11.3256C12.4014 11.8749 12.7121 12.3504 13.164 12.7377C13.8203 13.289 14.5816 13.5253 15.4217 13.5515C15.5058 13.5422 15.5933 13.5362 15.6842 13.5299C15.8483 13.5186 16.0233 13.5066 16.2092 13.4728C17.0493 13.289 17.8105 12.9215 18.4143 12.2915C19.2544 11.4252 19.6219 10.4276 19.4644 9.16756C19.3331 8.27501 18.8869 7.59247 18.1518 7.0937C17.3643 6.54242 16.4717 6.46366 15.5267 6.62117C14.4241 6.83118 13.6103 7.27746 12.9278 8.17C12.6465 8.53332 12.4333 8.91756 12.2974 9.32507H9.33134C9.20009 9.32507 9.12133 9.43007 9.09508 9.48258C8.98155 9.68694 8.80909 10.0681 8.67965 10.3541C8.65944 10.3988 8.64028 10.4411 8.62256 10.4801C8.57005 10.6376 8.62256 10.7689 8.80632 10.7689H10.5914C10.4864 10.9001 10.4077 11.0051 10.3289 11.1101L10.3289 11.1102C9.90887 11.5827 9.38385 11.7927 8.75381 11.7139C8.01877 11.6089 7.49375 11.0052 7.49375 10.2701C7.49375 9.50883 7.80876 8.90505 8.4388 8.51127C8.96382 8.17001 9.54136 8.09125 10.1189 8.38002C10.3289 8.45877 10.4339 8.56378 10.5652 8.72129C10.6594 8.8627 10.6902 8.85599 10.7905 8.83414C10.8019 8.83166 10.8143 8.82897 10.8277 8.82629ZM17.6268 9.82381V9.82384C17.5743 10.6114 17.1805 11.2152 16.4192 11.5827C15.9467 11.8189 15.4217 11.8452 14.9229 11.6352C14.2666 11.3202 13.9253 10.5851 14.0828 9.87635C14.2929 9.01005 14.8441 8.45877 15.7104 8.27501C16.603 8.065 17.443 8.59003 17.6005 9.50883C17.6268 9.61382 17.6268 9.69257 17.6268 9.82381Z",fill:"currentColor"})]}),u1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M10.0032 19.25C9.75546 19.25 9.50941 19.185 9.29221 19.06L7.02908 17.7201C6.69106 17.5311 6.856 17.4642 6.96749 17.4257C7.41818 17.2679 7.50964 17.2322 7.9907 16.959C8.04127 16.9302 8.10745 16.9404 8.1592 16.9709L9.89783 18.0026C9.96061 18.0366 10.0497 18.0366 10.1079 18.0026L16.8869 14.0896C16.9497 14.054 16.9905 13.981 16.9905 13.9063V6.08372C16.9905 6.00567 16.9497 5.9361 16.8856 5.89707L10.1093 1.98745C10.0465 1.95012 9.96333 1.95012 9.90055 1.98745L3.12557 5.89707C3.0599 5.9344 3.01816 6.00736 3.01816 6.08203V13.9047C3.01816 13.9793 3.05889 14.0506 3.12337 14.0862L4.97976 15.1586C5.9877 15.6626 6.60367 15.0687 6.60367 14.4714V6.7506C6.60367 6.6403 6.69021 6.55546 6.80051 6.55546H7.65913C7.76604 6.55546 7.85428 6.6403 7.85428 6.7506V14.4748C7.85428 15.8187 7.12122 16.5908 5.84686 16.5908C5.45488 16.5908 5.14605 16.5908 4.28403 16.1666L2.5057 15.1417C2.06621 14.8871 1.79471 14.412 1.79471 13.9047V6.08203C1.79471 5.57296 2.06621 5.09783 2.5057 4.8467L9.29153 0.931991C9.72085 0.689336 10.291 0.689336 10.7169 0.931991L17.4943 4.84839C17.9321 5.10123 18.2053 5.57466 18.2053 6.08372V13.9063C18.2053 14.4137 17.9321 14.8871 17.4943 15.1417L10.7169 19.0564C10.4997 19.182 10.2537 19.2464 10.0025 19.2464",fill:"currentColor"}),e.jsx("path",{d:"M12.0972 13.8597C9.13101 13.8597 8.5091 12.4981 8.5091 11.3561C8.5091 11.2475 8.59666 11.161 8.70543 11.161H9.58102C9.67774 11.161 9.7592 11.2314 9.77447 11.3269C9.90682 12.2191 10.3005 12.6692 12.0941 12.6692C13.5229 12.6692 14.1304 12.3464 14.1304 11.5887C14.1304 11.1526 13.9573 10.8285 11.7378 10.6113C9.88137 10.4281 8.73428 10.0191 8.73428 8.53436C8.73428 7.16667 9.88816 6.35217 11.8209 6.35217C13.9912 6.35217 15.067 7.10558 15.2028 8.72441C15.2079 8.78041 15.1875 8.83471 15.1502 8.87543C15.1129 8.91446 15.0603 8.93822 15.006 8.93822H14.1253C14.0336 8.93822 13.9539 8.87374 13.9352 8.7855C13.7231 7.84712 13.2107 7.54677 11.8175 7.54677C10.2581 7.54677 10.0765 8.08978 10.0765 8.49703C10.0765 8.99082 10.2903 9.13506 12.3945 9.41334C14.4782 9.68994 15.4675 10.0802 15.4675 11.5446C15.4675 13.0209 14.2356 13.8677 12.0873 13.8677",fill:"currentColor"})]}),p1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M14.1875 10.4387C14.1714 8.66751 15.6353 7.8165 15.7013 7.77467C14.8776 6.56974 13.5971 6.40565 13.1402 6.38635C12.0511 6.27535 11.0135 7.02823 10.4601 7.02823C9.90665 7.02823 9.05402 6.40243 8.14992 6.42013C6.96106 6.43783 5.86552 7.11027 5.25259 8.17524C4.01869 10.3148 4.93728 13.4888 6.14061 15.2279C6.72941 16.0773 7.42921 17.0344 8.35101 16.999C9.23903 16.9637 9.57364 16.4247 10.6451 16.4247C11.7165 16.4247 12.0189 16.999 12.9552 16.9814C13.9092 16.962 14.5141 16.1126 15.098 15.26C15.7721 14.2739 16.0504 13.3183 16.0665 13.2684C16.0456 13.2604 14.2068 12.5558 14.1875 10.4387Z",fill:"currentColor"}),e.jsx("path",{d:"M12.4259 5.23612C12.915 4.64411 13.2448 3.82045 13.1547 3C12.4501 3.02896 11.5974 3.46975 11.0923 4.06175C10.6402 4.58459 10.2429 5.42273 10.3507 6.22708C11.1341 6.28822 11.9369 5.82651 12.4259 5.23612Z",fill:"currentColor"})]}),f1=()=>e.jsxs("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M5.26508 1.01587C5.32169 0.983195 5.39406 1.00259 5.42674 1.05919L6.34966 2.6578C7.14861 1.93639 8.22788 1.4513 9.43534 1.33485H10.5645C11.772 1.45134 12.8513 1.93649 13.6503 2.65793L14.5733 1.05919C14.606 1.00259 14.6784 0.983196 14.735 1.01588C14.7916 1.04855 14.811 1.12093 14.7783 1.17753L13.8267 2.82567C14.5865 3.58625 15.0512 4.5756 15.0663 5.65919H4.93349C4.94859 4.57551 5.41337 3.58612 6.1732 2.82554L5.22177 1.17753C5.18909 1.12093 5.20848 1.04855 5.26508 1.01587ZM8.49066 3.64912C8.49161 3.96265 8.23213 4.21755 7.91103 4.21842C7.59009 4.21921 7.32911 3.9658 7.32816 3.65228V3.64912C7.32729 3.33552 7.58677 3.08069 7.90779 3.07982C8.22873 3.07896 8.48972 3.33229 8.49066 3.64597V3.64912ZM12.8295 3.64912C12.8305 3.96265 12.571 4.21755 12.2499 4.21842C11.9289 4.21921 11.668 3.9658 11.667 3.65228V3.64912C11.6661 3.33552 11.9256 3.08069 12.2466 3.07982C12.5676 3.07896 12.8286 3.33229 12.8295 3.64597V3.64912Z",fill:"currentColor"}),e.jsx("path",{d:"M4.89373 6.26809C4.89373 6.22454 4.89696 6.18146 4.90067 6.13886H15.101C15.1046 6.18131 15.1062 6.22454 15.1062 6.26809V13.5703C15.1062 14.3555 14.4846 14.9882 13.7128 14.9882H13.6579V17.8765C13.6579 18.4971 13.1549 19 12.5344 19C11.914 19 11.4109 18.4971 11.4109 17.8765V14.9882H8.58912V17.8765C8.58912 18.497 8.0861 19 7.46559 19C6.84517 19 6.34214 18.497 6.34214 17.8765V14.9882H6.287C5.51533 14.9882 4.89373 14.3556 4.89373 13.5703V6.26809Z",fill:"currentColor"}),e.jsx("path",{d:"M3.08856 6.78871C3.70898 6.78871 4.21201 7.29174 4.21201 7.91224V12.7319C4.21201 13.3524 3.70898 13.8554 3.08856 13.8554C2.46805 13.8554 1.96503 13.3524 1.96503 12.732V7.91232C1.96495 7.29182 2.46798 6.78871 3.08856 6.78871Z",fill:"currentColor"}),e.jsx("path",{d:"M16.9115 6.78871C17.5319 6.78871 18.0349 7.29174 18.0349 7.91224V12.7319C18.0349 13.3524 17.5319 13.8554 16.9115 13.8554C16.291 13.8554 15.788 13.3524 15.788 12.732V7.91232C15.788 7.29182 16.291 6.78871 16.9115 6.78871Z",fill:"currentColor"})]}),g1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M12.2161 9.99981C12.2161 10.8859 11.4978 11.6042 10.6118 11.6042C9.72572 11.6042 9.00743 10.8859 9.00743 9.99981C9.00743 9.11375 9.72572 8.39546 10.6118 8.39546C11.4978 8.39546 12.2161 9.11375 12.2161 9.99981Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M9.82782 3.26238C10.0868 3.47284 10.3488 3.70689 10.6119 3.96264C10.8749 3.70695 11.1369 3.47295 11.3958 3.26254C12.0645 2.71903 12.729 2.31926 13.3494 2.11854C13.9698 1.91785 14.5895 1.90424 15.1118 2.20581C15.6341 2.50738 15.9322 3.05082 16.0686 3.68844C16.205 4.32611 16.191 5.10144 16.0547 5.95233C16.0019 6.28176 15.9302 6.62569 15.8403 6.98129C16.1933 7.08121 16.527 7.19114 16.8387 7.31016C17.6437 7.61754 18.3222 7.9931 18.8062 8.43006C19.2902 8.86697 19.6118 9.39682 19.6118 9.99995C19.6118 10.6031 19.2902 11.1329 18.8062 11.5698C18.3222 12.0068 17.6437 12.3824 16.8387 12.6897C16.527 12.8088 16.1933 12.9187 15.8403 13.0186C15.9302 13.3742 16.0019 13.7182 16.0547 14.0476C16.191 14.8985 16.205 15.6738 16.0686 16.3115C15.9322 16.9491 15.6341 17.4925 15.1118 17.7941C14.5895 18.0957 13.9698 18.0821 13.3494 17.8814C12.729 17.6807 12.0645 17.2809 11.3958 16.7374C11.1369 16.527 10.8749 16.293 10.6119 16.0373C10.3488 16.293 10.0868 16.5271 9.82782 16.7375C9.15909 17.281 8.49462 17.6808 7.87418 17.8815C7.25381 18.0822 6.63414 18.0958 6.11181 17.7943C5.58948 17.4927 5.29143 16.9493 5.15505 16.3116C5.01866 15.674 5.03264 14.8986 5.16896 14.0477C5.22175 13.7183 5.2934 13.3743 5.38336 13.0186C5.03039 12.9187 4.69668 12.8088 4.38497 12.6897C3.57992 12.3824 2.90147 12.0068 2.41743 11.5698C1.93343 11.1329 1.61182 10.6031 1.61182 9.99995C1.61182 9.39682 1.93343 8.86697 2.41743 8.43006C2.90147 7.9931 3.57992 7.61754 4.38497 7.31016C4.69668 7.19114 5.03039 7.08121 5.38336 6.98129C5.2934 6.62563 5.22175 6.28165 5.16896 5.95217C5.03264 5.10128 5.01866 4.32595 5.15505 3.68828C5.29143 3.05067 5.58948 2.50722 6.11181 2.20566C6.63414 1.90409 7.25381 1.91769 7.87418 2.11839C8.49462 2.31911 9.15909 2.71888 9.82782 3.26238ZM6.50312 2.88342C6.76685 2.73115 7.13693 2.70243 7.6333 2.86301C8.12961 3.02357 8.70889 3.36147 9.33422 3.8697C9.5745 4.06499 9.81914 4.28342 10.0659 4.52332C9.55055 5.08073 9.0373 5.71622 8.54244 6.41558C7.68933 6.49446 6.88233 6.62119 6.14191 6.78878C6.05754 6.45515 5.99069 6.13409 5.94171 5.82837C5.81423 5.03269 5.81124 4.36208 5.92035 3.85198C6.02947 3.34182 6.23938 3.03568 6.50312 2.88342ZM9.56361 6.3454C9.90985 5.88844 10.2614 5.46697 10.6119 5.08568C10.9624 5.46697 11.3139 5.88845 11.6601 6.34541C11.316 6.32973 10.9662 6.32169 10.6118 6.32169C10.2575 6.32169 9.90766 6.32973 9.56361 6.3454ZM6.35594 7.54281C6.86142 7.42988 7.4022 7.33621 7.97108 7.26484C7.78545 7.55501 7.60355 7.85398 7.42634 8.16091C7.24917 8.46778 7.08123 8.77474 6.92278 9.08053C6.70015 8.55219 6.51088 8.03703 6.35594 7.54281ZM8.1041 8.55221C7.8236 9.03805 7.56802 9.52241 7.338 9.99996C7.56802 10.4775 7.8236 10.9619 8.1041 11.4477C8.38463 11.9336 8.67634 12.3972 8.97493 12.8352C9.50353 12.8748 10.0508 12.8956 10.6118 12.8956C11.1729 12.8956 11.7202 12.8748 12.2488 12.8352C12.5474 12.3972 12.839 11.9337 13.1195 11.4479C13.4 10.962 13.6557 10.4776 13.8857 9.99996C13.6557 9.52236 13.4 9.03795 13.1195 8.55206C12.839 8.06622 12.5473 7.60269 12.2488 7.16472C11.7202 7.12514 11.1729 7.1043 10.6118 7.1043C10.0508 7.1043 9.50354 7.12513 8.97495 7.16471C8.67635 7.60273 8.38463 8.06632 8.1041 8.55221ZM5.59592 7.73447C5.821 8.45948 6.11473 9.22172 6.47298 9.99996C6.11474 10.7782 5.821 11.5404 5.59593 12.2654C5.26483 12.1717 4.95337 12.0691 4.66413 11.9586C3.91132 11.6712 3.32905 11.3385 2.94184 10.9889C2.55459 10.6393 2.39443 10.3045 2.39443 9.99995C2.39443 9.69541 2.55459 9.36056 2.94184 9.01098C3.32905 8.66144 3.91132 8.32872 4.66413 8.04128C4.95337 7.93085 5.26482 7.82821 5.59592 7.73447ZM6.92278 10.9194C6.70016 11.4477 6.51089 11.9629 6.35594 12.4571C6.86142 12.57 7.4022 12.6637 7.97106 12.7351C7.78544 12.4449 7.60354 12.1459 7.42634 11.839C7.24917 11.5321 7.08123 11.2252 6.92278 10.9194ZM5.94171 14.1716C5.9907 13.8658 6.05755 13.5448 6.14192 13.2111C6.88233 13.3787 7.68932 13.5054 8.54243 13.5843C9.03729 14.2837 9.55055 14.9192 10.0659 15.4766C9.81913 15.7165 9.5745 15.9349 9.33422 16.1302C8.70889 16.6385 8.12961 16.9764 7.6333 17.1369C7.13693 17.2975 6.76685 17.2688 6.50312 17.1165C6.23938 16.9642 6.02947 16.6581 5.92035 16.1479C5.81124 15.6378 5.81423 14.9672 5.94171 14.1716ZM11.8894 16.1301C11.6492 15.9348 11.4046 15.7164 11.1579 15.4766C11.6732 14.9192 12.1865 14.2837 12.6813 13.5843C13.5344 13.5054 14.3413 13.3787 15.0817 13.2111C15.1661 13.5447 15.2329 13.8657 15.2819 14.1714C15.4094 14.9671 15.4124 15.6377 15.3033 16.1478C15.1942 16.6579 14.9842 16.9641 14.7205 17.1164C14.4568 17.2686 14.0867 17.2973 13.5903 17.1368C13.094 16.9762 12.5147 16.6383 11.8894 16.1301ZM10.6119 14.9142C10.9624 14.5329 11.3139 14.1115 11.6602 13.6545C11.3161 13.6702 10.9662 13.6782 10.6118 13.6782C10.2575 13.6782 9.90765 13.6702 9.56359 13.6545C9.90983 14.1115 10.2613 14.533 10.6119 14.9142ZM14.8677 12.4571C14.3623 12.57 13.8215 12.6637 13.2527 12.735C13.4383 12.4449 13.6201 12.146 13.7973 11.8392C13.9745 11.5322 14.1424 11.2252 14.3009 10.9194C14.5235 11.4477 14.7128 11.9629 14.8677 12.4571ZM15.6277 12.2654C15.4027 11.5404 15.1089 10.7782 14.7507 9.99996C15.1089 9.22172 15.4027 8.45948 15.6277 7.73448C15.9588 7.82822 16.2703 7.93085 16.5595 8.04128C17.3123 8.32872 17.8946 8.66144 18.2818 9.01098C18.669 9.36056 18.8292 9.69541 18.8292 9.99995C18.8292 10.3045 18.669 10.6393 18.2818 10.9889C17.8946 11.3385 17.3123 11.6712 16.5595 11.9586C16.2703 12.069 15.9588 12.1717 15.6277 12.2654ZM12.6813 6.41559C13.5344 6.49447 14.3413 6.6212 15.0817 6.78879C15.1661 6.45521 15.2329 6.1342 15.2819 5.82852C15.4094 5.03285 15.4124 4.36223 15.3033 3.85213C15.1942 3.34197 14.9842 3.03584 14.7205 2.88357C14.4568 2.7313 14.0867 2.70258 13.5903 2.86316C13.094 3.02372 12.5147 3.36162 11.8894 3.86986C11.6492 4.06511 11.4046 4.28349 11.1579 4.52333C11.6732 5.08074 12.1864 5.71623 12.6813 6.41559ZM14.3009 9.08051C14.5235 8.55218 14.7128 8.03703 14.8677 7.54281C14.3623 7.42989 13.8215 7.33622 13.2526 7.26485C13.4382 7.55497 13.6201 7.85388 13.7973 8.16075C13.9745 8.46767 14.1424 8.77467 14.3009 9.08051Z",fill:"currentColor"})]}),w1=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.66699 6.57143V2H7.23843V6.57143H2.66699ZM3.66699 3H6.23843V5.57143H3.66699V3Z",fill:"currentColor"}),e.jsx("path",{d:"M8.38135 2V6.57143H12.9528V2H8.38135Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14.0959 6.57143V2H18.6674V6.57143H14.0959ZM15.0959 3H17.6674V5.57143H15.0959V3Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M2.66699 7.71436V12.2858H7.23843V7.71436H2.66699ZM6.23843 8.71436H3.66699V11.2858H6.23843V8.71436Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8.38135 12.2858V7.71436H12.9528V12.2858H8.38135ZM9.38135 8.71436H11.9528V11.2858H9.38135V8.71436Z",fill:"currentColor"}),e.jsx("path",{d:"M14.0959 7.71436V12.2858H18.6674V7.71436H14.0959Z",fill:"currentColor"}),e.jsx("path",{d:"M2.66699 17.9999V13.4285H7.23843V17.9999H2.66699Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M8.3811 13.4285V17.9999H12.9525V13.4285H8.3811ZM11.9525 14.4285H9.3811V16.9999H11.9525V14.4285Z",fill:"currentColor"}),e.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M14.0957 17.9999V13.4285H18.6671V17.9999H14.0957ZM15.0957 14.4285H17.6671V16.9999H15.0957V14.4285Z",fill:"currentColor"})]}),v1=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M16.333 6.5L10.333 3L4.33301 6.5M16.333 6.5V13.5L10.333 17M16.333 6.5L10.333 10M10.333 17L4.33301 13.5V6.5M10.333 17L10.333 10M4.33301 6.5L10.333 10",stroke:"currentColor",strokeWidth:"1.5"})}),N=()=>e.jsxs("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[e.jsx("path",{d:"M10.6127 3.44091C12.6754 3.44091 12.9196 3.45028 13.7308 3.48779C14.4847 3.52217 14.8918 3.65345 15.1632 3.76284C15.5221 3.90662 15.7814 4.08166 16.0498 4.35984C16.3212 4.64114 16.4871 4.90682 16.6258 5.27877C16.7313 5.56007 16.858 5.98515 16.8911 6.76343C16.9273 7.60735 16.9364 7.86052 16.9364 9.99531C16.9364 12.1332 16.9273 12.3864 16.8911 13.2272C16.858 14.0086 16.7313 14.4306 16.6258 14.7119C16.4871 15.0838 16.3182 15.3526 16.0498 15.6308C15.7784 15.9121 15.5221 16.084 15.1632 16.2278C14.8918 16.3372 14.4817 16.4685 13.7308 16.5028C12.9166 16.5403 12.6724 16.5497 10.6127 16.5497C8.5501 16.5497 8.30584 16.5403 7.49466 16.5028C6.74077 16.4685 6.33367 16.3372 6.06227 16.2278C5.70341 16.084 5.44408 15.909 5.17569 15.6308C4.90429 15.3495 4.73844 15.0838 4.59972 14.7119C4.49418 14.4306 4.36752 14.0055 4.33435 13.2272C4.29816 12.3833 4.28912 12.1301 4.28912 9.99531C4.28912 7.85739 4.29816 7.60422 4.33435 6.76343C4.36752 5.98203 4.49418 5.56007 4.59972 5.27877C4.73844 4.90682 4.90731 4.63802 5.17569 4.35984C5.44709 4.07853 5.70341 3.90662 6.06227 3.76284C6.33367 3.65345 6.74378 3.52217 7.49466 3.48779C8.30584 3.45028 8.5501 3.44091 10.6127 3.44091ZM10.6127 2C8.51693 2 8.25458 2.00938 7.43133 2.04688C6.6111 2.08439 6.04719 2.22192 5.55867 2.41883C5.04904 2.62512 4.61781 2.89705 4.1896 3.34401C3.75838 3.78785 3.49603 4.23481 3.297 4.75991C3.10702 5.26939 2.97433 5.85075 2.93815 6.70092C2.90196 7.55734 2.89291 7.82926 2.89291 10.0016C2.89291 12.1739 2.90196 12.4458 2.93815 13.2991C2.97433 14.1492 3.10702 14.7337 3.297 15.2401C3.49603 15.7683 3.75838 16.2153 4.1896 16.6591C4.61781 17.103 5.04904 17.378 5.55565 17.5812C6.04719 17.7781 6.60808 17.9156 7.42831 17.9531C8.25156 17.9906 8.51392 18 10.6097 18C12.7055 18 12.9679 17.9906 13.7911 17.9531C14.6114 17.9156 15.1753 17.7781 15.6638 17.5812C16.1704 17.378 16.6016 17.103 17.0299 16.6591C17.4581 16.2153 17.7234 15.7683 17.9194 15.2432C18.1094 14.7337 18.2421 14.1524 18.2783 13.3022C18.3145 12.4489 18.3235 12.177 18.3235 10.0047C18.3235 7.83239 18.3145 7.56046 18.2783 6.70717C18.2421 5.857 18.1094 5.27251 17.9194 4.76617C17.7295 4.23481 17.4671 3.78785 17.0359 3.34401C16.6077 2.90018 16.1765 2.62512 15.6698 2.42196C15.1783 2.22504 14.6174 2.08752 13.7972 2.05001C12.9709 2.00938 12.7086 2 10.6127 2Z",fill:"currentColor"}),e.jsx("path",{d:"M10.6131 5.89154C8.42377 5.89154 6.64761 7.73252 6.64761 10.0017C6.64761 12.2709 8.42377 14.1119 10.6131 14.1119C12.8024 14.1119 14.5785 12.2709 14.5785 10.0017C14.5785 7.73252 12.8024 5.89154 10.6131 5.89154ZM10.6131 12.6679C9.19274 12.6679 8.0408 11.4739 8.0408 10.0017C8.0408 8.52955 9.19274 7.33557 10.6131 7.33557C12.0334 7.33557 13.1853 8.52955 13.1853 10.0017C13.1853 11.4739 12.0334 12.6679 10.6131 12.6679Z",fill:"currentColor"}),e.jsx("path",{d:"M15.6614 5.72876C15.6614 6.26011 15.2452 6.68832 14.7356 6.68832C14.2229 6.68832 13.8098 6.25699 13.8098 5.72876C13.8098 5.1974 14.2259 4.76919 14.7356 4.76919C15.2452 4.76919 15.6614 5.20053 15.6614 5.72876Z",fill:"currentColor"})]}),L=()=>e.jsx("svg",{width:"21",height:"20",viewBox:"0 0 21 20",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:e.jsx("path",{d:"M7.64165 16.5455C13.6779 16.5455 16.9804 11.5085 16.9804 7.14179C16.9804 7.00019 16.9773 6.85544 16.971 6.71383C17.6135 6.246 18.1679 5.66653 18.6082 5.00264C18.0099 5.27069 17.3746 5.44575 16.7242 5.52185C17.4091 5.10844 17.9219 4.459 18.1676 3.69391C17.5233 4.07843 16.8186 4.34967 16.0838 4.49601C15.5888 3.96632 14.9342 3.6156 14.2213 3.49808C13.5085 3.38056 12.777 3.50278 12.14 3.84585C11.5031 4.18891 10.9961 4.73372 10.6974 5.39603C10.3988 6.05834 10.3252 6.80127 10.4879 7.50996C9.18321 7.44403 7.90684 7.10275 6.74154 6.50824C5.57623 5.91373 4.54801 5.07926 3.72353 4.05893C3.30448 4.78644 3.17625 5.64732 3.3649 6.46661C3.55355 7.2859 4.04492 8.00212 4.73915 8.46971C4.21797 8.45305 3.7082 8.31175 3.25197 8.05749V8.0984C3.2515 8.86186 3.51361 9.60193 3.99376 10.1928C4.4739 10.7837 5.14243 11.1889 5.88572 11.3395C5.40292 11.4726 4.8962 11.4919 4.40478 11.3962C4.61452 12.0528 5.0226 12.627 5.57206 13.0388C6.12153 13.4506 6.78496 13.6794 7.46978 13.6933C6.30716 14.6129 4.871 15.1117 3.39259 15.1093C3.13041 15.1089 2.86848 15.0927 2.60822 15.0609C4.11012 16.0311 5.85724 16.5464 7.64165 16.5455Z",fill:"currentColor"})}),j=Object.freeze(Object.defineProperty({__proto__:null,AirdropperIcon:n1,AnalyticsIcon:r1,AndroidIcon:f1,CartIcon:a1,CollectiblesIcon:i1,DiscordIcon:H,GolangIcon:m1,IOSIcon:p1,IndexerIcon:w1,InstagramIcon:N,MarketplaceIcon:o1,MinterIcon:c1,NodeGatewayIcon:v1,NodeJSIcon:u1,ReactIcon:g1,SequenceIcon:d1,TwitterIcon:L,UnityIcon:x1,UnrealIcon:h1,WalletIcon:C1},Symbol.toStringTag,{value:"Module"})),b1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"Solutions"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80 mr-8",children:"Follow our solution guides to boost your game's acquisition, monetization and retention with the power of web3."})]}),e.jsxs("div",{className:"flex md:flex-row flex-col gap-4",children:[e.jsx(b,{theme:"purple",heading:"Acquire players",items:[{icon:"WalletIcon",title:"Embedded Wallet",body:"Gasless Transactions. No popups. Deliver a seamless experience for both web2 and web3 players with Sequence Wallet-as-a-Service embedded into your game or app.",link:"/solutions/wallets/embedded-wallet/overview"},{icon:"WalletIcon",title:"Universal Wallet",body:"Easily onboard web3-native players with a complete Universal Wallet.",link:"/solutions/wallets/universal-wallet/overview"},{icon:"CollectiblesIcon",title:"Collectibles",body:"Manage contracts and collections with our no-code Builder.",link:"/solutions/collectibles/contracts/deploy-an-item-collection"}]}),e.jsx(b,{theme:"green",heading:"Earn more revenue",items:[{icon:"MarketplaceIcon",title:"White-Label Marketplace",body:"Launch an in-game collectibles marketplace within minutes.",link:"/solutions/marketplaces/white-label-marketplace"},{icon:"SequenceIcon",title:"Marketplace APIs",body:"Integrate custom in-game marketplaces with our APIs.",link:"/solutions/marketplaces/orderbook/overview"},{icon:"SequenceIcon",title:"Onramps",body:"Allow players to convert from fiat to any crypto globally.",link:"/solutions/payments/onramps/fiat-on-ramps"}]}),e.jsx(b,{theme:"yellow",heading:"Retain and grow",items:[{icon:"MinterIcon",title:"Minter",body:"Securely mint achievement tokens tied to your game.",link:"/guides/mint-collectibles-serverless#1-setup-cloudflare-environment-with-wrangler-cli-and-deploy-a-test"},{icon:"AnalyticsIcon",title:"Analytics",body:"Track every aspect of web3 activity within your games.",link:"/solutions/builder/analytics"}]})]})]}),b=({heading:t,items:l,theme:s})=>e.jsx("div",{className:"flex-1 h-fit shrink-0 rounded-xl dark:bg-white-10 bg-white overflow-hidden",children:e.jsxs("div",{className:"flex flex-col gap-3 p-4 relative",children:[e.jsx("div",{className:n("absolute inset-0 opacity-20 z-0 pointer-events-none",{"dark:bg-gradient-to-b from-[#3400A0] to-transparent":s==="purple","dark:bg-gradient-to-b from-[#0A3F16] to-transparent":s==="green","dark:bg-gradient-to-b from-[#897031] to-transparent":s==="yellow"})}),e.jsx("p",{className:"px-4 font-bold text-themed-primary z-10",children:t}),l.map((o,r)=>{const i=j[o.icon];return e.jsxs("a",{href:o.link,className:"hover-fade p-4 rounded-md z-10 dark:bg-white-10 bg-black-7",children:[e.jsx("div",{className:"flex gap-2",children:e.jsxs("p",{className:"flex items-start gap-2 text-xl leading-7 font-bold text-themed-primary",children:[e.jsx("span",{className:"mt-1",children:e.jsx(i,{})}),o.title]})}),e.jsx("p",{className:"text-themed-secondary text-sm font-medium",children:o.body})]},r)})]})}),a=({href:t,...l})=>t!=null&&t.startsWith("/")?e.jsx("a",{href:t,...l}):e.jsx("a",{href:t,target:"_blank",rel:"noopener noreferrer",...l}),j1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"Guides"}),e.jsx("p",{className:"text-md leading-6 font-medium dark:text-white-80 text-black-80 mr-8",children:"Follow our step-by-step guides and open source code templates to accelerate your time to market."})]}),e.jsxs("div",{className:"flex flex-wrap gap-4 md:flex-row flex-col",children:[e.jsx(C,{title:"Build a web3 game with WebGL",body:"Follow a step by step guide to build a web-based game demo that leverages Sequence Embedded Wallet with custom in-game achievement tokens.",link:"/guides/webgl-guide"}),e.jsx(C,{title:"Build a web3 game with Unity",body:"Learn how to build an engaging iOS and Android game that uses Sequence Embedded Wallets under the hood for an integrated marketplace and in-game currency.",link:"/guides/unity-guide"}),e.jsx(C,{title:"Create web3 lootboxes",body:"With this tutorial, build a web-based maze where lootbox items are generated using AI and dynamically minted into the player's universal wallet.",link:"/guides/lootbox-guide"}),e.jsx(C,{title:"Orderbook Marketplace",body:"Build an API-driven marketplace where players can mint, then sell or buy items using a custom web-based interface leveraging Sequence Orderbook APIs.",link:"/guides/custom-marketplace"})]})]}),C=({title:t,body:l,link:s,image:o})=>e.jsxs("div",{className:"flex flex-col gap-4 p-4 dark:bg-white-10 bg-white rounded-xl md:w-[calc(50%-8px)]",children:[o&&e.jsx("div",{className:"rounded-md overflow-hidden w-full aspect-[2]",children:e.jsx("img",{src:o,className:"object-cover w-full h-full"})}),e.jsx("p",{className:"text-xl leading-7 text-themed-primary font-bold",children:t}),e.jsx("p",{className:"text-themed-secondary text-md font-medium leading-6",children:l}),e.jsx(a,{href:s,className:"hover-fade rounded-md dark:bg-white-15 bg-black-7 px-4 py-3 text-themed-primary text-sm font-bold w-fit",children:"Read guide"})]}),y1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"SDKs"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80 mr-8",children:"Leverage our open source SDKs to easily integrate from any popular game development framework or language."})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 md:flex-row flex-col",children:[e.jsx(c,{icon:"UnityIcon",title:"Unity",body:"Integrate Sequence with our native Unity library.",link:"/sdk/unity/overview"}),e.jsx(c,{icon:"UnrealIcon",title:"Unreal Engine",body:"Integrate Sequence with our native Unreal Engine library.",link:"/sdk/unreal/overview"}),e.jsx(c,{icon:"GolangIcon",title:"Go",body:"Leverage Sequence APIs easily from your Go backend.",link:"/sdk/go/overview"}),e.jsx(c,{icon:"NodeJSIcon",title:"Typescript",body:"Integrate Sequence APIs with our TypeScript SDK.",link:"/sdk/typescript/guides/overview"}),e.jsx(c,{icon:"SequenceIcon",title:"Sequence Kit",body:"Add web onboarding for any web3 wallet.",link:"/sdk/sequence-kit/overview"})]})]}),c=({title:t,body:l,icon:s,link:o})=>{const r=j[s];return e.jsxs(a,{href:o,className:"hover-fade p-4 dark:bg-white-10 bg-white rounded-xl md:w-[calc(33%-(16px/3))]",children:[e.jsxs("p",{className:"font-bold text-themed-primary text-xl leading-7 flex items-center gap-2",children:[e.jsx(r,{}),t]}),e.jsx("p",{className:"text-sm font-medium text-themed-secondary",children:l})]})},k1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"APIs"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80 mr-8",children:"Use our modular APIs for more advanced integrations and for accessing on-chain data through easy-to-use interfaces."})]}),e.jsxs("div",{className:"flex flex-wrap gap-2 md:flex-row flex-col",children:[e.jsx(d,{title:"Marketplace API",icon:"MarketplaceIcon",body:"Integrate sell and buy operations through our orderbook interface.",link:"/api/marketplace/overview"}),e.jsx(d,{title:"Indexer API",icon:"IndexerIcon",body:"Query wallets and contracts on Ethereum-compatible chains.",link:"/api/indexer/overview"}),e.jsx(d,{title:"Metadata API",icon:"SequenceIcon",body:"Fetch token details on any collection and collectible.",link:"/api/metadata/overview"}),e.jsx(d,{title:"Transactions API",icon:"SequenceIcon",body:"Send and optimize transactions on any chain through our performant Sequence Relayer.",link:"/api/relayer/overview"}),e.jsx(d,{title:"Node Gateway",icon:"NodeGatewayIcon",body:"Leverage Sequence's auto-scaling node service.",link:"/api/node-gateway"})]})]}),d=({title:t,body:l,icon:s,link:o})=>{const r=j[s];return e.jsxs(a,{href:o,className:"hover-fade p-4 dark:bg-white-10 bg-white rounded-xl md:w-[calc(33%-(16px/3))]",children:[e.jsxs("p",{className:"font-bold text-themed-primary text-xl leading-7 flex items-center gap-2",children:[e.jsx(r,{}),t]}),e.jsx("p",{className:"text-sm font-medium text-themed-secondary",children:l})]})},M1=()=>e.jsxs("section",{className:"flex flex-col gap-5 border-t dark:border-white-10 border-black-10",children:[e.jsxs("div",{className:"flex flex-col gap-1 py-5",children:[e.jsx("h3",{className:"text-3xl text-themed-primary font-bold",children:"Support"}),e.jsx("p",{className:"text-md leading-6 font-medium max-w-xl dark:text-white-80 text-black-80 mr-8",children:"Follow our solution guides to boost your game's acquisition, monetization and retention with the power of web3."})]}),e.jsxs("div",{className:"flex flex-wrap gap-x-10 gap-y-5 md:flex-row flex-col",children:[e.jsx(x,{link:"/support",title:"Chat Support",body:"Chat with our support team on specific questions."}),e.jsx(x,{link:"https://discord.gg/sequence",title:"Community",body:"Join our Discord community to learn from others building on Sequence."}),e.jsx(x,{link:"https://go.crisp.chat/chat/embed/?website_id=9ef4395b-6bb1-4645-8e02-6071d89290a1",title:"Contact our team",body:"Reach out to our integration team to discuss how you can partner with Sequence."}),e.jsx(x,{link:"https://support.sequence.xyz",title:"Knowledge Base",body:"Browse FAQs and answers to common support requests."})]})]}),x=({title:t,body:l,link:s})=>e.jsxs("div",{className:"md:w-[calc(50%-20px)] border-t dark:border-white-10 border-black-10 flex flex-col gap-3 py-5",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-themed-primary font-bold text-xl leading-7",children:t}),e.jsx("p",{className:"text-themed-secondary font-medium text-sm leading-5 md:pr-0 pr-6",children:l})]}),e.jsx(a,{href:s,className:"hover-fade px-5 py-3 dark:bg-white-15 bg-black-7 rounded-full w-fit text-sm leading-5 font-bold text-themed-primary",children:"Contact us"})]});function H1({children:t,className:l}){return e.jsxs("div",{className:n("relative",l),children:[e.jsx("div",{className:"absolute inset-0 z-0 flex items-center",children:e.jsx("div",{className:"w-full h-full max-h-[600px] dark:bg-gradient-dark bg-gradient-light"})}),e.jsx("div",{className:"relative z-10",children:t})]})}const N1=({logo:t})=>{const[l,s]=I1(),[o,r]=h.useState("");return e.jsx("footer",{className:"border-t border-black-10 px-5 pt-15",children:e.jsxs("div",{className:"w-full max-w-screen-lg mx-auto flex flex-col gap-10",children:[e.jsxs("div",{className:"flex flex-col gap-5",children:[e.jsx(a,{href:"https://sequence.xyz",className:"hover-fade w-fit",children:t}),e.jsxs("div",{className:"flex gap-10 md:items-start md:flex-row flex-col",children:[e.jsx("div",{className:"flex-1",children:e.jsx("form",{onSubmit:i=>{i.preventDefault(),s(o)},children:e.jsxs("div",{className:"flex items-center rounded-lg border dark:border-white-25 border-black-10 p-3 md:max-w-[378px]",children:[e.jsx("input",{className:n("pl-1 pr-4 w-full outline-none bg-transparent text-sm","dark:text-white-80 text-black-80","dark:placeholder:text-white-50 placeholder:text-black-50"),placeholder:"Stay up to date",type:"text",value:l==="invalid"?"Please enter a valid email address!":l==="success"?"Thanks for joining!":o,disabled:l!=="initial",onChange:i=>r(i.target.value)}),e.jsx("button",{type:"submit",disabled:l!=="initial",className:"hover-fade px-3 py-1 rounded text-themed-primary dark:bg-white-15 bg-black-7 font-bold text-[0.625rem] leading-[1rem] disabled:pointer-events-none","aria-label":"Join",children:e.jsx("div",{className:"flex justify-center w-[22px]",children:l==="loading"?e.jsx("div",{className:"py-0.5",children:e.jsx("div",{className:n("w-3 h-3 border-2 rounded-full border border-l-transparent animate-spin","dark:border-t-white border-t-black-80","dark:border-r-white border-r-black-80","dark:border-b-white border-b-black-80")})}):"Join"})})]})})}),e.jsx("div",{className:"flex-1 flex gap-2 text-xs font-medium text-themed-secondary",children:L1.map((i,u)=>e.jsx("div",{className:"w-1/2 flex md:flex-row flex-col gap-2.5",children:i.map((p,Z)=>e.jsx("div",{className:"md:grow flex flex-col gap-3",children:p.map((y,V)=>e.jsx(a,{href:y.href,className:"w-fit hover-fade",children:y.text},V))},Z))},u))})]})]}),e.jsxs("div",{className:"border-t dark:border-white-10 border-black-10 flex items-center justify-between py-7",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(a,{href:"https://twitter.com/0xsequence",className:"text-themed-secondary hover-fade",children:e.jsx(L,{})}),e.jsx(a,{href:"https://discord.gg/sequence",className:"text-themed-secondary hover-fade",children:e.jsx(H,{})}),e.jsx(a,{href:"https://www.instagram.com/0xsequence",className:"text-themed-secondary hover-fade",children:e.jsx(N,{})})]}),e.jsx(a,{href:"https://horizon.io",className:"hover-fade",children:e.jsx("img",{src:"/img/horizon-logo.png",className:"max-w-24 dark:invert-0 invert"})})]})]})})},L1=[[[{text:"Home",href:"https://sequence.xyz"},{text:"Pricing",href:"https://sequence.xyz/pricing"},{text:"Blog",href:"https://sequence.xyz/blog"}],[{text:"Terms",href:"https://sequence.xyz/terms"},{text:"Privacy",href:"https://sequence.xyz/privacy"}]],[[{text:"Contact",href:"https://sequence.xyz/contact"},{text:"Media Kit",href:"https://40061393.fs1.hubspotusercontent-na1.net/hubfs/40061393/Sequence%20Media%20Kit%202024.pdf"},{text:"Docs",href:"https://docs.sequence.xyz"}],[{text:"Sequence Builder",href:"https://sequence.build"},{text:"Sequence Wallet",href:"https://sequence.app"}]]],Z1=/(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])/,V1="65e38f6a-690c-4318-80db-be3b97a34448",I1=()=>{const[t,l]=h.useState("initial"),s=h.useRef(void 0);return h.useEffect(()=>()=>{clearTimeout(s.current),s.current=void 0},[]),[t,async r=>{if(!Z1.test(r)){l("invalid"),clearTimeout(s.current),s.current=setTimeout(()=>l("initial"),1500);return}l("loading");const u=await fetch(`https://sequence-contentful.vercel.app/api/forms/${V1}`,{method:"POST",body:JSON.stringify({fields:[{name:"email",value:r}],context:{pageUri:window.location.href,pageName:"Sequence docs footer"},skipValidation:"false"})}),{result:p}=await u.json();if(p==="error"){l("error"),clearTimeout(s.current),s.current=setTimeout(()=>l("initial"),1500);return}l("success")}]},q1={title:"Sequence - Web3 Gaming Platform",layout:"landing",showLogo:!1,content:{horizontalPadding:"0px",width:"100%",verticalPadding:"0px"}};function k(t){return t1||M("HomePage",!1),m||M("HomePage.Logo",!0),e.jsxs("div",{className:"flex flex-col",children:[e.jsx(s1,{logo:e.jsx(m,{className:"w-52"})}),e.jsx("div",{className:"px-5 z-10",children:e.jsx("div",{className:"w-full max-w-screen-lg mx-auto",children:e.jsx(b1,{})})}),e.jsx(H1,{className:"px-5 mt-30",children:e.jsx("div",{className:"w-full max-w-screen-lg mx-auto",children:e.jsx(j1,{})})}),e.jsx("div",{className:"px-5 my-30",children:e.jsxs("div",{className:"w-full max-w-screen-lg mx-auto flex flex-col gap-30",children:[e.jsx(y1,{}),e.jsx(k1,{}),e.jsx(M1,{})]})}),e.jsx(N1,{logo:e.jsx(m,{className:"w-32"})})]})}function _1(t={}){const{wrapper:l}={...P(),...t.components};return l?e.jsx(l,{...t,children:e.jsx(k,{...t})}):k()}function M(t,l){throw new Error("Expected "+(l?"component":"object")+" `"+t+"` to be defined: you likely forgot to import, pass, or provide it.")}export{_1 as default,q1 as frontmatter}; diff --git a/assets/index-BG6_g6N7.js b/assets/index-XAh3cByi.js similarity index 68% rename from assets/index-BG6_g6N7.js rename to assets/index-XAh3cByi.js index 26f260c4d1..b784b4b2af 100644 --- a/assets/index-BG6_g6N7.js +++ b/assets/index-XAh3cByi.js @@ -1,6 +1,6 @@ function __vite__mapDeps(indexes) { if (!__vite__mapDeps.viteFileDeps) { - __vite__mapDeps.viteFileDeps = ["assets/index-iPNcXBcC.js","assets/HomePage.css.js.vanilla-l0sNRNKZ.js","assets/custom-marketplace-CnGNUq38.js","assets/lootbox-guide-BV6SYIJN.js","assets/mint-collectibles-serverless-DXTaJDF6.js","assets/unity-guide-W8MN8zEw.js","assets/Video-CiIVMpgC.js","assets/webgl-guide-CiV3i4Bp.js","assets/token-directory-BodrMyGl.js","assets/building-relaying-server-DF4VjEP5.js","assets/contracts-BEUlfJIE.js","assets/gas-tank-BAfu7q9M.js","assets/getting-started-DtQ87dP6.js","assets/CardGrid-Dee1eEnV.js","assets/indexer-5eI5-5FE.js","assets/marketplaces-DHQK1A-o.js","assets/node-gateway-TxKmukUr.js","assets/overview-DWxXbuA7.js","assets/project-management-BedU01yT.js","assets/project-settings-BEPVGB9H.js","assets/wallet-sdks-xDR8aVZr.js","assets/white-label-marketplace-CPSX2FiA.js","assets/create-simple-orders-BeMs4cgm.js","assets/get-orderbook-BtgfiHLC.js","assets/get-top-orders-C55CfIab.js","assets/orderbook-transactions-BikCYCAV.js","assets/sign-message-DJ6UFovk.js","assets/deploy-ERC20-currency-B53gvu_W.js","assets/deploy-an-item-collection-DcjKTGVi.js","assets/overview-BtwLSJPF.js","assets/deployment-CbSjPzBU.js","assets/01-deploy-D7rCzihm.js","assets/deploy-BPDvQs8w.js","assets/wallet-factory-CUnVnojT.js","assets/deploy-Cahny4J9.js","assets/use-wallets-CXkYQaLo.js","assets/connect-wallet-C-S7CgVB.js","assets/sign-message-D9pzRJyv.js"] + __vite__mapDeps.viteFileDeps = ["assets/index-CP7FC5Wv.js","assets/HomePage.css.js.vanilla-l0sNRNKZ.js","assets/custom-marketplace-5fhElc0j.js","assets/lootbox-guide-DfI-7UoT.js","assets/mint-collectibles-serverless-Cy5umKSC.js","assets/unity-guide-23-brBJD.js","assets/Video--Gq6B73C.js","assets/webgl-guide-Bgv-p5F2.js","assets/token-directory-CW87wFck.js","assets/building-relaying-server-C7vW5CBa.js","assets/contracts-CjCZOfhv.js","assets/gas-tank-9wNYvgcg.js","assets/getting-started-BnQlVg14.js","assets/CardGrid-Bkj_ERUR.js","assets/indexer-Db7ZsYzX.js","assets/marketplaces-BUP1pddE.js","assets/node-gateway-PMwccG6C.js","assets/overview-DvG5SP2k.js","assets/project-management-N3iaYEL6.js","assets/project-settings-CpIzeA-Q.js","assets/wallet-sdks-BSJMRl7O.js","assets/white-label-marketplace-BSVmR35g.js","assets/create-simple-orders-BZNiwCSW.js","assets/get-orderbook-CK2fd8cT.js","assets/get-top-orders-DA_Dw8yv.js","assets/orderbook-transactions-D8wEswpa.js","assets/sign-message-jXkjk3js.js","assets/deploy-ERC20-currency-DlMExY16.js","assets/deploy-an-item-collection-BAxVVf5g.js","assets/overview-CoEZJSU7.js","assets/deployment-CrTV9zGg.js","assets/01-deploy-B3PiTnA6.js","assets/deploy-BzkY3z_7.js","assets/wallet-factory-BmKesde3.js","assets/deploy-B8RwPBe1.js","assets/use-wallets-h6ggXjOH.js","assets/connect-wallet-Bx11cq4A.js","assets/sign-message-CnPe3YyQ.js"] } return indexes.map((i) => __vite__mapDeps.viteFileDeps[i]) } @@ -40,10 +40,10 @@ function Nc(e,t){for(var n=0;nl||o[a]!==i[l]){var s=` -`+o[a].replace(" at new "," at ");return e.displayName&&s.includes("")&&(s=s.replace("",e.displayName)),s}while(1<=a&&0<=l);break}}}finally{us=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Xo(e):""}function Zy(e){switch(e.tag){case 5:return Xo(e.type);case 16:return Xo("Lazy");case 13:return Xo("Suspense");case 19:return Xo("SuspenseList");case 0:case 2:case 15:return e=cs(e.type,!1),e;case 11:return e=cs(e.type.render,!1),e;case 1:return e=cs(e.type,!0),e;default:return""}}function du(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Vr:return"Fragment";case Ur:return"Portal";case su:return"Profiler";case Wc:return"StrictMode";case uu:return"Suspense";case cu:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case wm:return(e.displayName||"Context")+".Consumer";case _m:return(e._context.displayName||"Context")+".Provider";case Kc:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Gc:return t=e.displayName||null,t!==null?t:du(e.type)||"Memo";case On:t=e._payload,e=e._init;try{return du(e(t))}catch{}}return null}function Xy(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return du(t);case 8:return t===Wc?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Kn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function km(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Jy(e){var t=km(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(a){r=""+a,i.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function ea(e){e._valueTracker||(e._valueTracker=Jy(e))}function bm(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=km(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ka(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function fu(e,t){var n=t.checked;return Te({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Cf(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Kn(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Cm(e,t){t=t.checked,t!=null&&Hc(e,"checked",t,!1)}function pu(e,t){Cm(e,t);var n=Kn(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?hu(e,t.type,n):t.hasOwnProperty("defaultValue")&&hu(e,t.type,Kn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Pf(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function hu(e,t,n){(t!=="number"||Ka(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Jo=Array.isArray;function to(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=ta.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function hi(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var ri={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ex=["Webkit","ms","Moz","O"];Object.keys(ri).forEach(function(e){ex.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ri[t]=ri[e]})});function Tm(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||ri.hasOwnProperty(e)&&ri[e]?(""+t).trim():t+"px"}function Rm(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=Tm(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var tx=Te({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function gu(e,t){if(t){if(tx[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(M(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(M(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(M(61))}if(t.style!=null&&typeof t.style!="object")throw Error(M(62))}}function yu(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var xu=null;function qc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var _u=null,no=null,ro=null;function Tf(e){if(e=Fi(e)){if(typeof _u!="function")throw Error(M(280));var t=e.stateNode;t&&(t=Rl(t),_u(e.stateNode,e.type,t))}}function $m(e){no?ro?ro.push(e):ro=[e]:no=e}function Om(){if(no){var e=no,t=ro;if(ro=no=null,Tf(e),t)for(e=0;e>>=0,e===0?32:31-(fx(e)/px|0)|0}var na=64,ra=4194304;function ei(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Qa(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,i=e.pingedLanes,a=n&268435455;if(a!==0){var l=a&~o;l!==0?r=ei(l):(i&=a,i!==0&&(r=ei(i)))}else a=n&~o,a!==0?r=ei(a):i!==0&&(r=ei(i));if(r===0)return 0;if(t!==0&&t!==r&&!(t&o)&&(o=r&-r,i=t&-t,o>=i||o===16&&(i&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function ji(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Wt(t),e[t]=n}function gx(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=ii),jf=" ",zf=!1;function Xm(e,t){switch(e){case"keyup":return Wx.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Jm(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Br=!1;function Gx(e,t){switch(e){case"compositionend":return Jm(t);case"keypress":return t.which!==32?null:(zf=!0,jf);case"textInput":return e=t.data,e===jf&&zf?null:e;default:return null}}function qx(e,t){if(Br)return e==="compositionend"||!nd&&Xm(e,t)?(e=Qm(),$a=Jc=Nn=null,Br=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Bf(n)}}function rv(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?rv(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ov(){for(var e=window,t=Ka();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ka(e.document)}return t}function rd(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function r_(e){var t=ov(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&rv(n.ownerDocument.documentElement,n)){if(r!==null&&rd(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=r.end===void 0?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=Hf(n,i);var a=Hf(n,r);o&&a&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Hr=null,Pu=null,li=null,Au=!1;function Wf(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Au||Hr==null||Hr!==Ka(r)||(r=Hr,"selectionStart"in r&&rd(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),li&&_i(li,r)||(li=r,r=Ja(Pu,"onSelect"),0Gr||(e.current=Iu[Gr],Iu[Gr]=null,Gr--)}function ve(e,t){Gr++,Iu[Gr]=e.current,e.current=t}var Gn={},ot=er(Gn),vt=er(!1),vr=Gn;function fo(e,t){var n=e.type.contextTypes;if(!n)return Gn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},i;for(i in n)o[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function gt(e){return e=e.childContextTypes,e!=null}function tl(){ye(vt),ye(ot)}function Xf(e,t,n){if(ot.current!==Gn)throw Error(M(168));ve(ot,t),ve(vt,n)}function pv(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(M(108,Xy(e)||"Unknown",o));return Te({},n,r)}function nl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Gn,vr=ot.current,ve(ot,e),ve(vt,vt.current),!0}function Jf(e,t,n){var r=e.stateNode;if(!r)throw Error(M(169));n?(e=pv(e,t,vr),r.__reactInternalMemoizedMergedChildContext=e,ye(vt),ye(ot),ve(ot,e)):ye(vt),ve(vt,n)}var sn=null,$l=!1,bs=!1;function hv(e){sn===null?sn=[e]:sn.push(e)}function m_(e){$l=!0,hv(e)}function tr(){if(!bs&&sn!==null){bs=!0;var e=0,t=de;try{var n=sn;for(de=1;e>=a,o-=a,un=1<<32-Wt(t)+o|n<A?(S=P,P=null):S=P.sibling;var O=f(m,P,_[A],E);if(O===null){P===null&&(P=S);break}e&&P&&O.alternate===null&&t(m,P),v=i(O,v,A),k===null?C=O:k.sibling=O,k=O,P=S}if(A===_.length)return n(m,P),be&&ir(m,A),C;if(P===null){for(;A<_.length;A++)P=u(m,_[A],E),P!==null&&(v=i(P,v,A),k===null?C=P:k.sibling=P,k=P);return be&&ir(m,A),C}for(P=r(m,P);A<_.length;A++)S=h(P,m,A,_[A],E),S!==null&&(e&&S.alternate!==null&&P.delete(S.key===null?A:S.key),v=i(S,v,A),k===null?C=S:k.sibling=S,k=S);return e&&P.forEach(function(j){return t(m,j)}),be&&ir(m,A),C}function g(m,v,_,E){var C=Do(_);if(typeof C!="function")throw Error(M(150));if(_=C.call(_),_==null)throw Error(M(151));for(var k=C=null,P=v,A=v=0,S=null,O=_.next();P!==null&&!O.done;A++,O=_.next()){P.index>A?(S=P,P=null):S=P.sibling;var j=f(m,P,O.value,E);if(j===null){P===null&&(P=S);break}e&&P&&j.alternate===null&&t(m,P),v=i(j,v,A),k===null?C=j:k.sibling=j,k=j,P=S}if(O.done)return n(m,P),be&&ir(m,A),C;if(P===null){for(;!O.done;A++,O=_.next())O=u(m,O.value,E),O!==null&&(v=i(O,v,A),k===null?C=O:k.sibling=O,k=O);return be&&ir(m,A),C}for(P=r(m,P);!O.done;A++,O=_.next())O=h(P,m,A,O.value,E),O!==null&&(e&&O.alternate!==null&&P.delete(O.key===null?A:O.key),v=i(O,v,A),k===null?C=O:k.sibling=O,k=O);return e&&P.forEach(function(N){return t(m,N)}),be&&ir(m,A),C}function w(m,v,_,E){if(typeof _=="object"&&_!==null&&_.type===Vr&&_.key===null&&(_=_.props.children),typeof _=="object"&&_!==null){switch(_.$$typeof){case Ji:e:{for(var C=_.key,k=v;k!==null;){if(k.key===C){if(C=_.type,C===Vr){if(k.tag===7){n(m,k.sibling),v=o(k,_.props.children),v.return=m,m=v;break e}}else if(k.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===On&&ap(C)===k.type){n(m,k.sibling),v=o(k,_.props),v.ref=Fo(m,k,_),v.return=m,m=v;break e}n(m,k);break}else t(m,k);k=k.sibling}_.type===Vr?(v=hr(_.props.children,m.mode,E,_.key),v.return=m,m=v):(E=za(_.type,_.key,_.props,null,m.mode,E),E.ref=Fo(m,v,_),E.return=m,m=E)}return a(m);case Ur:e:{for(k=_.key;v!==null;){if(v.key===k)if(v.tag===4&&v.stateNode.containerInfo===_.containerInfo&&v.stateNode.implementation===_.implementation){n(m,v.sibling),v=o(v,_.children||[]),v.return=m,m=v;break e}else{n(m,v);break}else t(m,v);v=v.sibling}v=Os(_,m.mode,E),v.return=m,m=v}return a(m);case On:return k=_._init,w(m,v,k(_._payload),E)}if(Jo(_))return y(m,v,_,E);if(Do(_))return g(m,v,_,E);ca(m,_)}return typeof _=="string"&&_!==""||typeof _=="number"?(_=""+_,v!==null&&v.tag===6?(n(m,v.sibling),v=o(v,_),v.return=m,m=v):(n(m,v),v=$s(_,m.mode,E),v.return=m,m=v),a(m)):n(m,v)}return w}var ho=Ev(!0),kv=Ev(!1),Ui={},tn=er(Ui),bi=er(Ui),Ci=er(Ui);function ur(e){if(e===Ui)throw Error(M(174));return e}function fd(e,t){switch(ve(Ci,t),ve(bi,e),ve(tn,Ui),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:vu(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=vu(t,e)}ye(tn),ve(tn,t)}function mo(){ye(tn),ye(bi),ye(Ci)}function bv(e){ur(Ci.current);var t=ur(tn.current),n=vu(t,e.type);t!==n&&(ve(bi,e),ve(tn,n))}function pd(e){bi.current===e&&(ye(tn),ye(bi))}var Ae=er(0);function sl(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Cs=[];function hd(){for(var e=0;en?n:4,e(!0);var r=Ps.transition;Ps.transition={};try{e(!1),t()}finally{de=n,Ps.transition=r}}function Fv(){return Dt().memoizedState}function x_(e,t,n){var r=Hn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Uv(e))Vv(t,n);else if(n=yv(e,t,n,r),n!==null){var o=lt();Kt(n,e,r,o),Bv(n,t,r)}}function __(e,t,n){var r=Hn(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Uv(e))Vv(t,o);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var a=t.lastRenderedState,l=i(a,n);if(o.hasEagerState=!0,o.eagerState=l,Gt(l,a)){var s=t.interleaved;s===null?(o.next=o,cd(t)):(o.next=s.next,s.next=o),t.interleaved=o;return}}catch{}finally{}n=yv(e,t,o,r),n!==null&&(o=lt(),Kt(n,e,r,o),Bv(n,t,r))}}function Uv(e){var t=e.alternate;return e===Se||t!==null&&t===Se}function Vv(e,t){si=ul=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Bv(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Qc(e,n)}}var cl={readContext:Lt,useCallback:et,useContext:et,useEffect:et,useImperativeHandle:et,useInsertionEffect:et,useLayoutEffect:et,useMemo:et,useReducer:et,useRef:et,useState:et,useDebugValue:et,useDeferredValue:et,useTransition:et,useMutableSource:et,useSyncExternalStore:et,useId:et,unstable_isNewReconciler:!1},w_={readContext:Lt,useCallback:function(e,t){return Zt().memoizedState=[e,t===void 0?null:t],e},useContext:Lt,useEffect:sp,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Da(4194308,4,Dv.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Da(4194308,4,e,t)},useInsertionEffect:function(e,t){return Da(4,2,e,t)},useMemo:function(e,t){var n=Zt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Zt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=x_.bind(null,Se,e),[r.memoizedState,e]},useRef:function(e){var t=Zt();return e={current:e},t.memoizedState=e},useState:lp,useDebugValue:xd,useDeferredValue:function(e){return Zt().memoizedState=e},useTransition:function(){var e=lp(!1),t=e[0];return e=y_.bind(null,e[1]),Zt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Se,o=Zt();if(be){if(n===void 0)throw Error(M(407));n=n()}else{if(n=t(),Ge===null)throw Error(M(349));yr&30||Av(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,sp(Tv.bind(null,r,i,e),[e]),r.flags|=2048,Si(9,Sv.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Zt(),t=Ge.identifierPrefix;if(be){var n=cn,r=un;n=(r&~(1<<32-Wt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Pi++,0")&&(s=s.replace("",e.displayName)),s}while(1<=a&&0<=l);break}}}finally{us=!1,Error.prepareStackTrace=n}return(e=e?e.displayName||e.name:"")?Xo(e):""}function Zy(e){switch(e.tag){case 5:return Xo(e.type);case 16:return Xo("Lazy");case 13:return Xo("Suspense");case 19:return Xo("SuspenseList");case 0:case 2:case 15:return e=cs(e.type,!1),e;case 11:return e=cs(e.type.render,!1),e;case 1:return e=cs(e.type,!0),e;default:return""}}function du(e){if(e==null)return null;if(typeof e=="function")return e.displayName||e.name||null;if(typeof e=="string")return e;switch(e){case Vr:return"Fragment";case Ur:return"Portal";case su:return"Profiler";case Wc:return"StrictMode";case uu:return"Suspense";case cu:return"SuspenseList"}if(typeof e=="object")switch(e.$$typeof){case wm:return(e.displayName||"Context")+".Consumer";case _m:return(e._context.displayName||"Context")+".Provider";case Kc:var t=e.render;return e=e.displayName,e||(e=t.displayName||t.name||"",e=e!==""?"ForwardRef("+e+")":"ForwardRef"),e;case Gc:return t=e.displayName||null,t!==null?t:du(e.type)||"Memo";case On:t=e._payload,e=e._init;try{return du(e(t))}catch{}}return null}function Xy(e){var t=e.type;switch(e.tag){case 24:return"Cache";case 9:return(t.displayName||"Context")+".Consumer";case 10:return(t._context.displayName||"Context")+".Provider";case 18:return"DehydratedFragment";case 11:return e=t.render,e=e.displayName||e.name||"",t.displayName||(e!==""?"ForwardRef("+e+")":"ForwardRef");case 7:return"Fragment";case 5:return t;case 4:return"Portal";case 3:return"Root";case 6:return"Text";case 16:return du(t);case 8:return t===Wc?"StrictMode":"Mode";case 22:return"Offscreen";case 12:return"Profiler";case 21:return"Scope";case 13:return"Suspense";case 19:return"SuspenseList";case 25:return"TracingMarker";case 1:case 0:case 17:case 2:case 14:case 15:if(typeof t=="function")return t.displayName||t.name||null;if(typeof t=="string")return t}return null}function Kn(e){switch(typeof e){case"boolean":case"number":case"string":case"undefined":return e;case"object":return e;default:return""}}function km(e){var t=e.type;return(e=e.nodeName)&&e.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Jy(e){var t=km(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&typeof n<"u"&&typeof n.get=="function"&&typeof n.set=="function"){var o=n.get,i=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(a){r=""+a,i.call(this,a)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(a){r=""+a},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}function ea(e){e._valueTracker||(e._valueTracker=Jy(e))}function bm(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=km(e)?e.checked?"true":"false":e.value),e=r,e!==n?(t.setValue(e),!0):!1}function Ka(e){if(e=e||(typeof document<"u"?document:void 0),typeof e>"u")return null;try{return e.activeElement||e.body}catch{return e.body}}function fu(e,t){var n=t.checked;return Te({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:n??e._wrapperState.initialChecked})}function Cf(e,t){var n=t.defaultValue==null?"":t.defaultValue,r=t.checked!=null?t.checked:t.defaultChecked;n=Kn(t.value!=null?t.value:n),e._wrapperState={initialChecked:r,initialValue:n,controlled:t.type==="checkbox"||t.type==="radio"?t.checked!=null:t.value!=null}}function Cm(e,t){t=t.checked,t!=null&&Hc(e,"checked",t,!1)}function pu(e,t){Cm(e,t);var n=Kn(t.value),r=t.type;if(n!=null)r==="number"?(n===0&&e.value===""||e.value!=n)&&(e.value=""+n):e.value!==""+n&&(e.value=""+n);else if(r==="submit"||r==="reset"){e.removeAttribute("value");return}t.hasOwnProperty("value")?hu(e,t.type,n):t.hasOwnProperty("defaultValue")&&hu(e,t.type,Kn(t.defaultValue)),t.checked==null&&t.defaultChecked!=null&&(e.defaultChecked=!!t.defaultChecked)}function Pf(e,t,n){if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var r=t.type;if(!(r!=="submit"&&r!=="reset"||t.value!==void 0&&t.value!==null))return;t=""+e._wrapperState.initialValue,n||t===e.value||(e.value=t),e.defaultValue=t}n=e.name,n!==""&&(e.name=""),e.defaultChecked=!!e._wrapperState.initialChecked,n!==""&&(e.name=n)}function hu(e,t,n){(t!=="number"||Ka(e.ownerDocument)!==e)&&(n==null?e.defaultValue=""+e._wrapperState.initialValue:e.defaultValue!==""+n&&(e.defaultValue=""+n))}var Jo=Array.isArray;function to(e,t,n,r){if(e=e.options,t){t={};for(var o=0;o"+t.valueOf().toString()+"",t=ta.firstChild;e.firstChild;)e.removeChild(e.firstChild);for(;t.firstChild;)e.appendChild(t.firstChild)}});function hi(e,t){if(t){var n=e.firstChild;if(n&&n===e.lastChild&&n.nodeType===3){n.nodeValue=t;return}}e.textContent=t}var ri={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,zoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},ex=["Webkit","ms","Moz","O"];Object.keys(ri).forEach(function(e){ex.forEach(function(t){t=t+e.charAt(0).toUpperCase()+e.substring(1),ri[t]=ri[e]})});function Tm(e,t,n){return t==null||typeof t=="boolean"||t===""?"":n||typeof t!="number"||t===0||ri.hasOwnProperty(e)&&ri[e]?(""+t).trim():t+"px"}function Rm(e,t){e=e.style;for(var n in t)if(t.hasOwnProperty(n)){var r=n.indexOf("--")===0,o=Tm(n,t[n],r);n==="float"&&(n="cssFloat"),r?e.setProperty(n,o):e[n]=o}}var tx=Te({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});function gu(e,t){if(t){if(tx[e]&&(t.children!=null||t.dangerouslySetInnerHTML!=null))throw Error(M(137,e));if(t.dangerouslySetInnerHTML!=null){if(t.children!=null)throw Error(M(60));if(typeof t.dangerouslySetInnerHTML!="object"||!("__html"in t.dangerouslySetInnerHTML))throw Error(M(61))}if(t.style!=null&&typeof t.style!="object")throw Error(M(62))}}function yu(e,t){if(e.indexOf("-")===-1)return typeof t.is=="string";switch(e){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var xu=null;function qc(e){return e=e.target||e.srcElement||window,e.correspondingUseElement&&(e=e.correspondingUseElement),e.nodeType===3?e.parentNode:e}var _u=null,no=null,ro=null;function Tf(e){if(e=Fi(e)){if(typeof _u!="function")throw Error(M(280));var t=e.stateNode;t&&(t=Rl(t),_u(e.stateNode,e.type,t))}}function $m(e){no?ro?ro.push(e):ro=[e]:no=e}function Om(){if(no){var e=no,t=ro;if(ro=no=null,Tf(e),t)for(e=0;e>>=0,e===0?32:31-(fx(e)/px|0)|0}var na=64,ra=4194304;function ei(e){switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return e&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return e&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;default:return e}}function Qa(e,t){var n=e.pendingLanes;if(n===0)return 0;var r=0,o=e.suspendedLanes,i=e.pingedLanes,a=n&268435455;if(a!==0){var l=a&~o;l!==0?r=ei(l):(i&=a,i!==0&&(r=ei(i)))}else a=n&~o,a!==0?r=ei(a):i!==0&&(r=ei(i));if(r===0)return 0;if(t!==0&&t!==r&&!(t&o)&&(o=r&-r,i=t&-t,o>=i||o===16&&(i&4194240)!==0))return t;if(r&4&&(r|=n&16),t=e.entangledLanes,t!==0)for(e=e.entanglements,t&=r;0n;n++)t.push(e);return t}function ji(e,t,n){e.pendingLanes|=t,t!==536870912&&(e.suspendedLanes=0,e.pingedLanes=0),e=e.eventTimes,t=31-Wt(t),e[t]=n}function gx(e,t){var n=e.pendingLanes&~t;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.expiredLanes&=t,e.mutableReadLanes&=t,e.entangledLanes&=t,t=e.entanglements;var r=e.eventTimes;for(e=e.expirationTimes;0=ii),jf=" ",zf=!1;function Xm(e,t){switch(e){case"keyup":return Wx.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function Jm(e){return e=e.detail,typeof e=="object"&&"data"in e?e.data:null}var Br=!1;function Gx(e,t){switch(e){case"compositionend":return Jm(t);case"keypress":return t.which!==32?null:(zf=!0,jf);case"textInput":return e=t.data,e===jf&&zf?null:e;default:return null}}function qx(e,t){if(Br)return e==="compositionend"||!nd&&Xm(e,t)?(e=Qm(),$a=Jc=Nn=null,Br=!1,e):null;switch(e){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}e:{for(;n;){if(n.nextSibling){n=n.nextSibling;break e}n=n.parentNode}n=void 0}n=Bf(n)}}function rv(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?rv(e,t.parentNode):"contains"in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function ov(){for(var e=window,t=Ka();t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href=="string"}catch{n=!1}if(n)e=t.contentWindow;else break;t=Ka(e.document)}return t}function rd(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t==="input"&&(e.type==="text"||e.type==="search"||e.type==="tel"||e.type==="url"||e.type==="password")||t==="textarea"||e.contentEditable==="true")}function r2(e){var t=ov(),n=e.focusedElem,r=e.selectionRange;if(t!==n&&n&&n.ownerDocument&&rv(n.ownerDocument.documentElement,n)){if(r!==null&&rd(n)){if(t=r.start,e=r.end,e===void 0&&(e=t),"selectionStart"in n)n.selectionStart=t,n.selectionEnd=Math.min(e,n.value.length);else if(e=(t=n.ownerDocument||document)&&t.defaultView||window,e.getSelection){e=e.getSelection();var o=n.textContent.length,i=Math.min(r.start,o);r=r.end===void 0?i:Math.min(r.end,o),!e.extend&&i>r&&(o=r,r=i,i=o),o=Hf(n,i);var a=Hf(n,r);o&&a&&(e.rangeCount!==1||e.anchorNode!==o.node||e.anchorOffset!==o.offset||e.focusNode!==a.node||e.focusOffset!==a.offset)&&(t=t.createRange(),t.setStart(o.node,o.offset),e.removeAllRanges(),i>r?(e.addRange(t),e.extend(a.node,a.offset)):(t.setEnd(a.node,a.offset),e.addRange(t)))}}for(t=[],e=n;e=e.parentNode;)e.nodeType===1&&t.push({element:e,left:e.scrollLeft,top:e.scrollTop});for(typeof n.focus=="function"&&n.focus(),n=0;n=document.documentMode,Hr=null,Pu=null,li=null,Au=!1;function Wf(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Au||Hr==null||Hr!==Ka(r)||(r=Hr,"selectionStart"in r&&rd(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),li&&_i(li,r)||(li=r,r=Ja(Pu,"onSelect"),0Gr||(e.current=Iu[Gr],Iu[Gr]=null,Gr--)}function ve(e,t){Gr++,Iu[Gr]=e.current,e.current=t}var Gn={},ot=er(Gn),vt=er(!1),vr=Gn;function fo(e,t){var n=e.type.contextTypes;if(!n)return Gn;var r=e.stateNode;if(r&&r.__reactInternalMemoizedUnmaskedChildContext===t)return r.__reactInternalMemoizedMaskedChildContext;var o={},i;for(i in n)o[i]=t[i];return r&&(e=e.stateNode,e.__reactInternalMemoizedUnmaskedChildContext=t,e.__reactInternalMemoizedMaskedChildContext=o),o}function gt(e){return e=e.childContextTypes,e!=null}function tl(){ye(vt),ye(ot)}function Xf(e,t,n){if(ot.current!==Gn)throw Error(M(168));ve(ot,t),ve(vt,n)}function pv(e,t,n){var r=e.stateNode;if(t=t.childContextTypes,typeof r.getChildContext!="function")return n;r=r.getChildContext();for(var o in r)if(!(o in t))throw Error(M(108,Xy(e)||"Unknown",o));return Te({},n,r)}function nl(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMergedChildContext||Gn,vr=ot.current,ve(ot,e),ve(vt,vt.current),!0}function Jf(e,t,n){var r=e.stateNode;if(!r)throw Error(M(169));n?(e=pv(e,t,vr),r.__reactInternalMemoizedMergedChildContext=e,ye(vt),ye(ot),ve(ot,e)):ye(vt),ve(vt,n)}var sn=null,$l=!1,bs=!1;function hv(e){sn===null?sn=[e]:sn.push(e)}function m2(e){$l=!0,hv(e)}function tr(){if(!bs&&sn!==null){bs=!0;var e=0,t=de;try{var n=sn;for(de=1;e>=a,o-=a,un=1<<32-Wt(t)+o|n<A?(S=P,P=null):S=P.sibling;var O=f(m,P,_[A],E);if(O===null){P===null&&(P=S);break}e&&P&&O.alternate===null&&t(m,P),v=i(O,v,A),k===null?C=O:k.sibling=O,k=O,P=S}if(A===_.length)return n(m,P),be&&ir(m,A),C;if(P===null){for(;A<_.length;A++)P=u(m,_[A],E),P!==null&&(v=i(P,v,A),k===null?C=P:k.sibling=P,k=P);return be&&ir(m,A),C}for(P=r(m,P);A<_.length;A++)S=h(P,m,A,_[A],E),S!==null&&(e&&S.alternate!==null&&P.delete(S.key===null?A:S.key),v=i(S,v,A),k===null?C=S:k.sibling=S,k=S);return e&&P.forEach(function(j){return t(m,j)}),be&&ir(m,A),C}function g(m,v,_,E){var C=Do(_);if(typeof C!="function")throw Error(M(150));if(_=C.call(_),_==null)throw Error(M(151));for(var k=C=null,P=v,A=v=0,S=null,O=_.next();P!==null&&!O.done;A++,O=_.next()){P.index>A?(S=P,P=null):S=P.sibling;var j=f(m,P,O.value,E);if(j===null){P===null&&(P=S);break}e&&P&&j.alternate===null&&t(m,P),v=i(j,v,A),k===null?C=j:k.sibling=j,k=j,P=S}if(O.done)return n(m,P),be&&ir(m,A),C;if(P===null){for(;!O.done;A++,O=_.next())O=u(m,O.value,E),O!==null&&(v=i(O,v,A),k===null?C=O:k.sibling=O,k=O);return be&&ir(m,A),C}for(P=r(m,P);!O.done;A++,O=_.next())O=h(P,m,A,O.value,E),O!==null&&(e&&O.alternate!==null&&P.delete(O.key===null?A:O.key),v=i(O,v,A),k===null?C=O:k.sibling=O,k=O);return e&&P.forEach(function(N){return t(m,N)}),be&&ir(m,A),C}function w(m,v,_,E){if(typeof _=="object"&&_!==null&&_.type===Vr&&_.key===null&&(_=_.props.children),typeof _=="object"&&_!==null){switch(_.$$typeof){case Ji:e:{for(var C=_.key,k=v;k!==null;){if(k.key===C){if(C=_.type,C===Vr){if(k.tag===7){n(m,k.sibling),v=o(k,_.props.children),v.return=m,m=v;break e}}else if(k.elementType===C||typeof C=="object"&&C!==null&&C.$$typeof===On&&ap(C)===k.type){n(m,k.sibling),v=o(k,_.props),v.ref=Fo(m,k,_),v.return=m,m=v;break e}n(m,k);break}else t(m,k);k=k.sibling}_.type===Vr?(v=hr(_.props.children,m.mode,E,_.key),v.return=m,m=v):(E=za(_.type,_.key,_.props,null,m.mode,E),E.ref=Fo(m,v,_),E.return=m,m=E)}return a(m);case Ur:e:{for(k=_.key;v!==null;){if(v.key===k)if(v.tag===4&&v.stateNode.containerInfo===_.containerInfo&&v.stateNode.implementation===_.implementation){n(m,v.sibling),v=o(v,_.children||[]),v.return=m,m=v;break e}else{n(m,v);break}else t(m,v);v=v.sibling}v=Os(_,m.mode,E),v.return=m,m=v}return a(m);case On:return k=_._init,w(m,v,k(_._payload),E)}if(Jo(_))return y(m,v,_,E);if(Do(_))return g(m,v,_,E);ca(m,_)}return typeof _=="string"&&_!==""||typeof _=="number"?(_=""+_,v!==null&&v.tag===6?(n(m,v.sibling),v=o(v,_),v.return=m,m=v):(n(m,v),v=$s(_,m.mode,E),v.return=m,m=v),a(m)):n(m,v)}return w}var ho=Ev(!0),kv=Ev(!1),Ui={},tn=er(Ui),bi=er(Ui),Ci=er(Ui);function ur(e){if(e===Ui)throw Error(M(174));return e}function fd(e,t){switch(ve(Ci,t),ve(bi,e),ve(tn,Ui),e=t.nodeType,e){case 9:case 11:t=(t=t.documentElement)?t.namespaceURI:vu(null,"");break;default:e=e===8?t.parentNode:t,t=e.namespaceURI||null,e=e.tagName,t=vu(t,e)}ye(tn),ve(tn,t)}function mo(){ye(tn),ye(bi),ye(Ci)}function bv(e){ur(Ci.current);var t=ur(tn.current),n=vu(t,e.type);t!==n&&(ve(bi,e),ve(tn,n))}function pd(e){bi.current===e&&(ye(tn),ye(bi))}var Ae=er(0);function sl(e){for(var t=e;t!==null;){if(t.tag===13){var n=t.memoizedState;if(n!==null&&(n=n.dehydrated,n===null||n.data==="$?"||n.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===e)break;for(;t.sibling===null;){if(t.return===null||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Cs=[];function hd(){for(var e=0;en?n:4,e(!0);var r=Ps.transition;Ps.transition={};try{e(!1),t()}finally{de=n,Ps.transition=r}}function Fv(){return Dt().memoizedState}function x2(e,t,n){var r=Hn(e);if(n={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null},Uv(e))Vv(t,n);else if(n=yv(e,t,n,r),n!==null){var o=lt();Kt(n,e,r,o),Bv(n,t,r)}}function _2(e,t,n){var r=Hn(e),o={lane:r,action:n,hasEagerState:!1,eagerState:null,next:null};if(Uv(e))Vv(t,o);else{var i=e.alternate;if(e.lanes===0&&(i===null||i.lanes===0)&&(i=t.lastRenderedReducer,i!==null))try{var a=t.lastRenderedState,l=i(a,n);if(o.hasEagerState=!0,o.eagerState=l,Gt(l,a)){var s=t.interleaved;s===null?(o.next=o,cd(t)):(o.next=s.next,s.next=o),t.interleaved=o;return}}catch{}finally{}n=yv(e,t,o,r),n!==null&&(o=lt(),Kt(n,e,r,o),Bv(n,t,r))}}function Uv(e){var t=e.alternate;return e===Se||t!==null&&t===Se}function Vv(e,t){si=ul=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function Bv(e,t,n){if(n&4194240){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Qc(e,n)}}var cl={readContext:Lt,useCallback:et,useContext:et,useEffect:et,useImperativeHandle:et,useInsertionEffect:et,useLayoutEffect:et,useMemo:et,useReducer:et,useRef:et,useState:et,useDebugValue:et,useDeferredValue:et,useTransition:et,useMutableSource:et,useSyncExternalStore:et,useId:et,unstable_isNewReconciler:!1},w2={readContext:Lt,useCallback:function(e,t){return Zt().memoizedState=[e,t===void 0?null:t],e},useContext:Lt,useEffect:sp,useImperativeHandle:function(e,t,n){return n=n!=null?n.concat([e]):null,Da(4194308,4,Dv.bind(null,t,e),n)},useLayoutEffect:function(e,t){return Da(4194308,4,e,t)},useInsertionEffect:function(e,t){return Da(4,2,e,t)},useMemo:function(e,t){var n=Zt();return t=t===void 0?null:t,e=e(),n.memoizedState=[e,t],e},useReducer:function(e,t,n){var r=Zt();return t=n!==void 0?n(t):t,r.memoizedState=r.baseState=t,e={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:t},r.queue=e,e=e.dispatch=x2.bind(null,Se,e),[r.memoizedState,e]},useRef:function(e){var t=Zt();return e={current:e},t.memoizedState=e},useState:lp,useDebugValue:xd,useDeferredValue:function(e){return Zt().memoizedState=e},useTransition:function(){var e=lp(!1),t=e[0];return e=y2.bind(null,e[1]),Zt().memoizedState=e,[t,e]},useMutableSource:function(){},useSyncExternalStore:function(e,t,n){var r=Se,o=Zt();if(be){if(n===void 0)throw Error(M(407));n=n()}else{if(n=t(),Ge===null)throw Error(M(349));yr&30||Av(r,t,n)}o.memoizedState=n;var i={value:n,getSnapshot:t};return o.queue=i,sp(Tv.bind(null,r,i,e),[e]),r.flags|=2048,Si(9,Sv.bind(null,r,i,n,t),void 0,null),n},useId:function(){var e=Zt(),t=Ge.identifierPrefix;if(be){var n=cn,r=un;n=(r&~(1<<32-Wt(r)-1)).toString(32)+n,t=":"+t+"R"+n,n=Pi++,0<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[Xt]=t,e[ki]=r,Xv(e,t,!1,!1),t.stateNode=e;e:{switch(a=yu(n,r),n){case"dialog":ge("cancel",e),ge("close",e),o=r;break;case"iframe":case"object":case"embed":ge("load",e),o=r;break;case"video":case"audio":for(o=0;ogo&&(t.flags|=128,r=!0,Uo(i,!1),t.lanes=4194304)}else{if(!r)if(e=sl(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Uo(i,!0),i.tail===null&&i.tailMode==="hidden"&&!a.alternate&&!be)return tt(t),null}else 2*Me()-i.renderingStartTime>go&&n!==1073741824&&(t.flags|=128,r=!0,Uo(i,!1),t.lanes=4194304);i.isBackwards?(a.sibling=t.child,t.child=a):(n=i.last,n!==null?n.sibling=a:t.child=a,i.last=a)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Me(),t.sibling=null,n=Ae.current,ve(Ae,r?n&1|2:n&1),t):(tt(t),null);case 22:case 23:return Cd(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?wt&1073741824&&(tt(t),t.subtreeFlags&6&&(t.flags|=8192)):tt(t),null;case 24:return null;case 25:return null}throw Error(M(156,t.tag))}function T_(e,t){switch(id(t),t.tag){case 1:return gt(t.type)&&tl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return mo(),ye(vt),ye(ot),hd(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return pd(t),null;case 13:if(ye(Ae),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(M(340));po()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ye(Ae),null;case 4:return mo(),null;case 10:return ud(t.type._context),null;case 22:case 23:return Cd(),null;case 24:return null;default:return null}}var fa=!1,nt=!1,R_=typeof WeakSet=="function"?WeakSet:Set,H=null;function Zr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Ie(e,t,r)}else n.current=null}function Wu(e,t,n){try{n()}catch(r){Ie(e,t,r)}}var gp=!1;function $_(e,t){if(Su=Za,e=ov(),rd(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var a=0,l=-1,s=-1,c=0,d=0,u=e,f=null;t:for(;;){for(var h;u!==n||o!==0&&u.nodeType!==3||(l=a+o),u!==i||r!==0&&u.nodeType!==3||(s=a+r),u.nodeType===3&&(a+=u.nodeValue.length),(h=u.firstChild)!==null;)f=u,u=h;for(;;){if(u===e)break t;if(f===n&&++c===o&&(l=a),f===i&&++d===r&&(s=a),(h=u.nextSibling)!==null)break;u=f,f=u.parentNode}u=h}n=l===-1||s===-1?null:{start:l,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(Tu={focusedElem:e,selectionRange:n},Za=!1,H=t;H!==null;)if(t=H,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,H=e;else for(;H!==null;){t=H;try{var y=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var g=y.memoizedProps,w=y.memoizedState,m=t.stateNode,v=m.getSnapshotBeforeUpdate(t.elementType===t.type?g:zt(t.type,g),w);m.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var _=t.stateNode.containerInfo;_.nodeType===1?_.textContent="":_.nodeType===9&&_.documentElement&&_.removeChild(_.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(M(163))}}catch(E){Ie(t,t.return,E)}if(e=t.sibling,e!==null){e.return=t.return,H=e;break}H=t.return}return y=gp,gp=!1,y}function ui(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,i!==void 0&&Wu(t,n,i)}o=o.next}while(o!==r)}}function Ll(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Ku(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function t0(e){var t=e.alternate;t!==null&&(e.alternate=null,t0(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Xt],delete t[ki],delete t[Ou],delete t[p_],delete t[h_])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function n0(e){return e.tag===5||e.tag===3||e.tag===4}function yp(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||n0(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Gu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=el));else if(r!==4&&(e=e.child,e!==null))for(Gu(e,t,n),e=e.sibling;e!==null;)Gu(e,t,n),e=e.sibling}function qu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(qu(e,t,n),e=e.sibling;e!==null;)qu(e,t,n),e=e.sibling}var Ye=null,Ft=!1;function Tn(e,t,n){for(n=n.child;n!==null;)r0(e,t,n),n=n.sibling}function r0(e,t,n){if(en&&typeof en.onCommitFiberUnmount=="function")try{en.onCommitFiberUnmount(Pl,n)}catch{}switch(n.tag){case 5:nt||Zr(n,t);case 6:var r=Ye,o=Ft;Ye=null,Tn(e,t,n),Ye=r,Ft=o,Ye!==null&&(Ft?(e=Ye,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ye.removeChild(n.stateNode));break;case 18:Ye!==null&&(Ft?(e=Ye,n=n.stateNode,e.nodeType===8?ks(e.parentNode,n):e.nodeType===1&&ks(e,n),yi(e)):ks(Ye,n.stateNode));break;case 4:r=Ye,o=Ft,Ye=n.stateNode.containerInfo,Ft=!0,Tn(e,t,n),Ye=r,Ft=o;break;case 0:case 11:case 14:case 15:if(!nt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var i=o,a=i.destroy;i=i.tag,a!==void 0&&(i&2||i&4)&&Wu(n,t,a),o=o.next}while(o!==r)}Tn(e,t,n);break;case 1:if(!nt&&(Zr(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){Ie(n,t,l)}Tn(e,t,n);break;case 21:Tn(e,t,n);break;case 22:n.mode&1?(nt=(r=nt)||n.memoizedState!==null,Tn(e,t,n),nt=r):Tn(e,t,n);break;default:Tn(e,t,n)}}function xp(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new R_),t.forEach(function(r){var o=F_.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function jt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=a),r&=~i}if(r=o,r=Me()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*I_(r/1960))-r,10e?16:e,Mn===null)var r=!1;else{if(e=Mn,Mn=null,pl=0,se&6)throw Error(M(331));var o=se;for(se|=4,H=e.current;H!==null;){var i=H,a=i.child;if(H.flags&16){var l=i.deletions;if(l!==null){for(var s=0;sMe()-kd?pr(e,0):Ed|=n),yt(e,t)}function d0(e,t){t===0&&(e.mode&1?(t=ra,ra<<=1,!(ra&130023424)&&(ra=4194304)):t=1);var n=lt();e=mn(e,t),e!==null&&(ji(e,t,n),yt(e,n))}function z_(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),d0(e,n)}function F_(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(M(314))}r!==null&&r.delete(t),d0(e,n)}var f0;f0=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||vt.current)mt=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return mt=!1,A_(e,t,n);mt=!!(e.flags&131072)}else mt=!1,be&&t.flags&1048576&&mv(t,ol,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Na(e,t),e=t.pendingProps;var o=fo(t,ot.current);io(t,n),o=vd(null,t,r,e,o,n);var i=gd();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,gt(r)?(i=!0,nl(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,dd(t),o.updater=Ol,t.stateNode=o,o._reactInternals=t,ju(t,r,e,n),t=Uu(null,t,r,!0,i,n)):(t.tag=0,be&&i&&od(t),it(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Na(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=V_(r),e=zt(r,e),o){case 0:t=Fu(null,t,r,e,n);break e;case 1:t=hp(null,t,r,e,n);break e;case 11:t=fp(null,t,r,e,n);break e;case 14:t=pp(null,t,r,zt(r.type,e),n);break e}throw Error(M(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:zt(r,o),Fu(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:zt(r,o),hp(e,t,r,o,n);case 3:e:{if(Yv(t),e===null)throw Error(M(387));r=t.pendingProps,i=t.memoizedState,o=i.element,xv(e,t),ll(t,r,null,n);var a=t.memoizedState;if(r=a.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){o=vo(Error(M(423)),t),t=mp(e,t,r,n,o);break e}else if(r!==o){o=vo(Error(M(424)),t),t=mp(e,t,r,n,o);break e}else for(kt=Un(t.stateNode.containerInfo.firstChild),bt=t,be=!0,Vt=null,n=kv(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(po(),r===o){t=vn(e,t,n);break e}it(e,t,r,n)}t=t.child}return t;case 5:return bv(t),e===null&&Du(t),r=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,a=o.children,Ru(r,o)?a=null:i!==null&&Ru(r,i)&&(t.flags|=32),qv(e,t),it(e,t,a,n),t.child;case 6:return e===null&&Du(t),null;case 13:return Qv(e,t,n);case 4:return fd(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=ho(t,null,r,n):it(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:zt(r,o),fp(e,t,r,o,n);case 7:return it(e,t,t.pendingProps,n),t.child;case 8:return it(e,t,t.pendingProps.children,n),t.child;case 12:return it(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,a=o.value,ve(il,r._currentValue),r._currentValue=a,i!==null)if(Gt(i.value,a)){if(i.children===o.children&&!vt.current){t=vn(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var l=i.dependencies;if(l!==null){a=i.child;for(var s=l.firstContext;s!==null;){if(s.context===r){if(i.tag===1){s=dn(-1,n&-n),s.tag=2;var c=i.updateQueue;if(c!==null){c=c.shared;var d=c.pending;d===null?s.next=s:(s.next=d.next,d.next=s),c.pending=s}}i.lanes|=n,s=i.alternate,s!==null&&(s.lanes|=n),Nu(i.return,n,t),l.lanes|=n;break}s=s.next}}else if(i.tag===10)a=i.type===t.type?null:i.child;else if(i.tag===18){if(a=i.return,a===null)throw Error(M(341));a.lanes|=n,l=a.alternate,l!==null&&(l.lanes|=n),Nu(a,n,t),a=i.sibling}else a=i.child;if(a!==null)a.return=i;else for(a=i;a!==null;){if(a===t){a=null;break}if(i=a.sibling,i!==null){i.return=a.return,a=i;break}a=a.return}i=a}it(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,io(t,n),o=Lt(o),r=r(o),t.flags|=1,it(e,t,r,n),t.child;case 14:return r=t.type,o=zt(r,t.pendingProps),o=zt(r.type,o),pp(e,t,r,o,n);case 15:return Kv(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:zt(r,o),Na(e,t),t.tag=1,gt(r)?(e=!0,nl(t)):e=!1,io(t,n),wv(t,r,o),ju(t,r,o,n),Uu(null,t,r,!0,e,n);case 19:return Zv(e,t,n);case 22:return Gv(e,t,n)}throw Error(M(156,t.tag))};function p0(e,t){return zm(e,t)}function U_(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ot(e,t,n,r){return new U_(e,t,n,r)}function Ad(e){return e=e.prototype,!(!e||!e.isReactComponent)}function V_(e){if(typeof e=="function")return Ad(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Kc)return 11;if(e===Gc)return 14}return 2}function Wn(e,t){var n=e.alternate;return n===null?(n=Ot(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function za(e,t,n,r,o,i){var a=2;if(r=e,typeof e=="function")Ad(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Vr:return hr(n.children,o,i,t);case Wc:a=8,o|=8;break;case su:return e=Ot(12,n,t,o|2),e.elementType=su,e.lanes=i,e;case uu:return e=Ot(13,n,t,o),e.elementType=uu,e.lanes=i,e;case cu:return e=Ot(19,n,t,o),e.elementType=cu,e.lanes=i,e;case Em:return Nl(n,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case _m:a=10;break e;case wm:a=9;break e;case Kc:a=11;break e;case Gc:a=14;break e;case On:a=16,r=null;break e}throw Error(M(130,e==null?e:typeof e,""))}return t=Ot(a,n,t,o),t.elementType=e,t.type=r,t.lanes=i,t}function hr(e,t,n,r){return e=Ot(7,e,r,t),e.lanes=n,e}function Nl(e,t,n,r){return e=Ot(22,e,r,t),e.elementType=Em,e.lanes=n,e.stateNode={isHidden:!1},e}function $s(e,t,n){return e=Ot(6,e,null,t),e.lanes=n,e}function Os(e,t,n){return t=Ot(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function B_(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=fs(0),this.expirationTimes=fs(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=fs(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Sd(e,t,n,r,o,i,a,l,s){return e=new B_(e,t,n,l,s),t===1?(t=1,i===!0&&(t|=8)):t=0,i=Ot(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},dd(i),e}function H_(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(g0)}catch(e){console.error(e)}}g0(),mm.exports=At;var Ao=mm.exports;const y0=Xn(Ao),Y_=Nc({__proto__:null,default:y0},[Ao]);var x0,Ap=Ao;Ap.createRoot,x0=Ap.hydrateRoot;/** +`+i.stack}return{value:e,source:t,stack:o,digest:null}}function Ts(e,t,n){return{value:e,source:null,stack:n??null,digest:t??null}}function zu(e,t){try{console.error(t.value)}catch(n){setTimeout(function(){throw n})}}var b2=typeof WeakMap=="function"?WeakMap:Map;function Hv(e,t,n){n=dn(-1,n),n.tag=3,n.payload={element:null};var r=t.value;return n.callback=function(){fl||(fl=!0,Yu=r),zu(e,t)},n}function Wv(e,t,n){n=dn(-1,n),n.tag=3;var r=e.type.getDerivedStateFromError;if(typeof r=="function"){var o=t.value;n.payload=function(){return r(o)},n.callback=function(){zu(e,t)}}var i=e.stateNode;return i!==null&&typeof i.componentDidCatch=="function"&&(n.callback=function(){zu(e,t),typeof r!="function"&&(Bn===null?Bn=new Set([this]):Bn.add(this));var a=t.stack;this.componentDidCatch(t.value,{componentStack:a!==null?a:""})}),n}function up(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new b2;var o=new Set;r.set(t,o)}else o=r.get(t),o===void 0&&(o=new Set,r.set(t,o));o.has(n)||(o.add(n),e=j2.bind(null,e,t,n),t.then(e,e))}function cp(e){do{var t;if((t=e.tag===13)&&(t=e.memoizedState,t=t!==null?t.dehydrated!==null:!0),t)return e;e=e.return}while(e!==null);return null}function dp(e,t,n,r,o){return e.mode&1?(e.flags|=65536,e.lanes=o,e):(e===t?e.flags|=65536:(e.flags|=128,n.flags|=131072,n.flags&=-52805,n.tag===1&&(n.alternate===null?n.tag=17:(t=dn(-1,1),t.tag=2,Vn(n,t,1))),n.lanes|=1),e)}var C2=_n.ReactCurrentOwner,mt=!1;function it(e,t,n,r){t.child=e===null?kv(t,null,n,r):ho(t,e.child,n,r)}function fp(e,t,n,r,o){n=n.render;var i=t.ref;return io(t,o),r=vd(e,t,n,r,i,o),n=gd(),e!==null&&!mt?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,vn(e,t,o)):(be&&n&&od(t),t.flags|=1,it(e,t,r,o),t.child)}function pp(e,t,n,r,o){if(e===null){var i=n.type;return typeof i=="function"&&!Ad(i)&&i.defaultProps===void 0&&n.compare===null&&n.defaultProps===void 0?(t.tag=15,t.type=i,Kv(e,t,i,r,o)):(e=za(n.type,null,r,t,t.mode,o),e.ref=t.ref,e.return=t,t.child=e)}if(i=e.child,!(e.lanes&o)){var a=i.memoizedProps;if(n=n.compare,n=n!==null?n:_i,n(a,r)&&e.ref===t.ref)return vn(e,t,o)}return t.flags|=1,e=Wn(i,r),e.ref=t.ref,e.return=t,t.child=e}function Kv(e,t,n,r,o){if(e!==null){var i=e.memoizedProps;if(_i(i,r)&&e.ref===t.ref)if(mt=!1,t.pendingProps=r=i,(e.lanes&o)!==0)e.flags&131072&&(mt=!0);else return t.lanes=e.lanes,vn(e,t,o)}return Fu(e,t,n,r,o)}function Gv(e,t,n){var r=t.pendingProps,o=r.children,i=e!==null?e.memoizedState:null;if(r.mode==="hidden")if(!(t.mode&1))t.memoizedState={baseLanes:0,cachePool:null,transitions:null},ve(Xr,wt),wt|=n;else{if(!(n&1073741824))return e=i!==null?i.baseLanes|n:n,t.lanes=t.childLanes=1073741824,t.memoizedState={baseLanes:e,cachePool:null,transitions:null},t.updateQueue=null,ve(Xr,wt),wt|=e,null;t.memoizedState={baseLanes:0,cachePool:null,transitions:null},r=i!==null?i.baseLanes:n,ve(Xr,wt),wt|=r}else i!==null?(r=i.baseLanes|n,t.memoizedState=null):r=n,ve(Xr,wt),wt|=r;return it(e,t,o,n),t.child}function qv(e,t){var n=t.ref;(e===null&&n!==null||e!==null&&e.ref!==n)&&(t.flags|=512,t.flags|=2097152)}function Fu(e,t,n,r,o){var i=gt(n)?vr:ot.current;return i=fo(t,i),io(t,o),n=vd(e,t,n,r,i,o),r=gd(),e!==null&&!mt?(t.updateQueue=e.updateQueue,t.flags&=-2053,e.lanes&=~o,vn(e,t,o)):(be&&r&&od(t),t.flags|=1,it(e,t,n,o),t.child)}function hp(e,t,n,r,o){if(gt(n)){var i=!0;nl(t)}else i=!1;if(io(t,o),t.stateNode===null)Na(e,t),wv(t,n,r),ju(t,n,r,o),r=!0;else if(e===null){var a=t.stateNode,l=t.memoizedProps;a.props=l;var s=a.context,c=n.contextType;typeof c=="object"&&c!==null?c=Lt(c):(c=gt(n)?vr:ot.current,c=fo(t,c));var d=n.getDerivedStateFromProps,u=typeof d=="function"||typeof a.getSnapshotBeforeUpdate=="function";u||typeof a.UNSAFE_componentWillReceiveProps!="function"&&typeof a.componentWillReceiveProps!="function"||(l!==r||s!==c)&&ip(t,a,r,c),In=!1;var f=t.memoizedState;a.state=f,ll(t,r,a,o),s=t.memoizedState,l!==r||f!==s||vt.current||In?(typeof d=="function"&&(Mu(t,n,d,r),s=t.memoizedState),(l=In||op(t,n,l,r,f,s,c))?(u||typeof a.UNSAFE_componentWillMount!="function"&&typeof a.componentWillMount!="function"||(typeof a.componentWillMount=="function"&&a.componentWillMount(),typeof a.UNSAFE_componentWillMount=="function"&&a.UNSAFE_componentWillMount()),typeof a.componentDidMount=="function"&&(t.flags|=4194308)):(typeof a.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),a.props=r,a.state=s,a.context=c,r=l):(typeof a.componentDidMount=="function"&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,xv(e,t),l=t.memoizedProps,c=t.type===t.elementType?l:zt(t.type,l),a.props=c,u=t.pendingProps,f=a.context,s=n.contextType,typeof s=="object"&&s!==null?s=Lt(s):(s=gt(n)?vr:ot.current,s=fo(t,s));var h=n.getDerivedStateFromProps;(d=typeof h=="function"||typeof a.getSnapshotBeforeUpdate=="function")||typeof a.UNSAFE_componentWillReceiveProps!="function"&&typeof a.componentWillReceiveProps!="function"||(l!==u||f!==s)&&ip(t,a,r,s),In=!1,f=t.memoizedState,a.state=f,ll(t,r,a,o);var y=t.memoizedState;l!==u||f!==y||vt.current||In?(typeof h=="function"&&(Mu(t,n,h,r),y=t.memoizedState),(c=In||op(t,n,c,r,f,y,s)||!1)?(d||typeof a.UNSAFE_componentWillUpdate!="function"&&typeof a.componentWillUpdate!="function"||(typeof a.componentWillUpdate=="function"&&a.componentWillUpdate(r,y,s),typeof a.UNSAFE_componentWillUpdate=="function"&&a.UNSAFE_componentWillUpdate(r,y,s)),typeof a.componentDidUpdate=="function"&&(t.flags|=4),typeof a.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof a.componentDidUpdate!="function"||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!="function"||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=y),a.props=r,a.state=y,a.context=s,r=c):(typeof a.componentDidUpdate!="function"||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=4),typeof a.getSnapshotBeforeUpdate!="function"||l===e.memoizedProps&&f===e.memoizedState||(t.flags|=1024),r=!1)}return Uu(e,t,n,r,i,o)}function Uu(e,t,n,r,o,i){qv(e,t);var a=(t.flags&128)!==0;if(!r&&!a)return o&&Jf(t,n,!1),vn(e,t,i);r=t.stateNode,C2.current=t;var l=a&&typeof n.getDerivedStateFromError!="function"?null:r.render();return t.flags|=1,e!==null&&a?(t.child=ho(t,e.child,null,i),t.child=ho(t,null,l,i)):it(e,t,l,i),t.memoizedState=r.state,o&&Jf(t,n,!0),t.child}function Yv(e){var t=e.stateNode;t.pendingContext?Xf(e,t.pendingContext,t.pendingContext!==t.context):t.context&&Xf(e,t.context,!1),fd(e,t.containerInfo)}function mp(e,t,n,r,o){return po(),ad(o),t.flags|=256,it(e,t,n,r),t.child}var Vu={dehydrated:null,treeContext:null,retryLane:0};function Bu(e){return{baseLanes:e,cachePool:null,transitions:null}}function Qv(e,t,n){var r=t.pendingProps,o=Ae.current,i=!1,a=(t.flags&128)!==0,l;if((l=a)||(l=e!==null&&e.memoizedState===null?!1:(o&2)!==0),l?(i=!0,t.flags&=-129):(e===null||e.memoizedState!==null)&&(o|=1),ve(Ae,o&1),e===null)return Du(t),e=t.memoizedState,e!==null&&(e=e.dehydrated,e!==null)?(t.mode&1?e.data==="$!"?t.lanes=8:t.lanes=1073741824:t.lanes=1,null):(a=r.children,e=r.fallback,i?(r=t.mode,i=t.child,a={mode:"hidden",children:a},!(r&1)&&i!==null?(i.childLanes=0,i.pendingProps=a):i=Nl(a,r,0,null),e=hr(e,r,n,null),i.return=t,e.return=t,i.sibling=e,t.child=i,t.child.memoizedState=Bu(n),t.memoizedState=Vu,e):_d(t,a));if(o=e.memoizedState,o!==null&&(l=o.dehydrated,l!==null))return P2(e,t,a,r,l,o,n);if(i){i=r.fallback,a=t.mode,o=e.child,l=o.sibling;var s={mode:"hidden",children:r.children};return!(a&1)&&t.child!==o?(r=t.child,r.childLanes=0,r.pendingProps=s,t.deletions=null):(r=Wn(o,s),r.subtreeFlags=o.subtreeFlags&14680064),l!==null?i=Wn(l,i):(i=hr(i,a,n,null),i.flags|=2),i.return=t,r.return=t,r.sibling=i,t.child=r,r=i,i=t.child,a=e.child.memoizedState,a=a===null?Bu(n):{baseLanes:a.baseLanes|n,cachePool:null,transitions:a.transitions},i.memoizedState=a,i.childLanes=e.childLanes&~n,t.memoizedState=Vu,r}return i=e.child,e=i.sibling,r=Wn(i,{mode:"visible",children:r.children}),!(t.mode&1)&&(r.lanes=n),r.return=t,r.sibling=null,e!==null&&(n=t.deletions,n===null?(t.deletions=[e],t.flags|=16):n.push(e)),t.child=r,t.memoizedState=null,r}function _d(e,t){return t=Nl({mode:"visible",children:t},e.mode,0,null),t.return=e,e.child=t}function da(e,t,n,r){return r!==null&&ad(r),ho(t,e.child,null,n),e=_d(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function P2(e,t,n,r,o,i,a){if(n)return t.flags&256?(t.flags&=-257,r=Ts(Error(M(422))),da(e,t,a,r)):t.memoizedState!==null?(t.child=e.child,t.flags|=128,null):(i=r.fallback,o=t.mode,r=Nl({mode:"visible",children:r.children},o,0,null),i=hr(i,o,a,null),i.flags|=2,r.return=t,i.return=t,r.sibling=i,t.child=r,t.mode&1&&ho(t,e.child,null,a),t.child.memoizedState=Bu(a),t.memoizedState=Vu,i);if(!(t.mode&1))return da(e,t,a,null);if(o.data==="$!"){if(r=o.nextSibling&&o.nextSibling.dataset,r)var l=r.dgst;return r=l,i=Error(M(419)),r=Ts(i,r,void 0),da(e,t,a,r)}if(l=(a&e.childLanes)!==0,mt||l){if(r=Ge,r!==null){switch(a&-a){case 4:o=2;break;case 16:o=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:o=32;break;case 536870912:o=268435456;break;default:o=0}o=o&(r.suspendedLanes|a)?0:o,o!==0&&o!==i.retryLane&&(i.retryLane=o,mn(e,o),Kt(r,e,o,-1))}return Pd(),r=Ts(Error(M(421))),da(e,t,a,r)}return o.data==="$?"?(t.flags|=128,t.child=e.child,t=z2.bind(null,e),o._reactRetry=t,null):(e=i.treeContext,kt=Un(o.nextSibling),bt=t,be=!0,Vt=null,e!==null&&(Rt[$t++]=un,Rt[$t++]=cn,Rt[$t++]=gr,un=e.id,cn=e.overflow,gr=t),t=_d(t,r.children),t.flags|=4096,t)}function vp(e,t,n){e.lanes|=t;var r=e.alternate;r!==null&&(r.lanes|=t),Nu(e.return,t,n)}function Rs(e,t,n,r,o){var i=e.memoizedState;i===null?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:o}:(i.isBackwards=t,i.rendering=null,i.renderingStartTime=0,i.last=r,i.tail=n,i.tailMode=o)}function Zv(e,t,n){var r=t.pendingProps,o=r.revealOrder,i=r.tail;if(it(e,t,r.children,n),r=Ae.current,r&2)r=r&1|2,t.flags|=128;else{if(e!==null&&e.flags&128)e:for(e=t.child;e!==null;){if(e.tag===13)e.memoizedState!==null&&vp(e,n,t);else if(e.tag===19)vp(e,n,t);else if(e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break e;for(;e.sibling===null;){if(e.return===null||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}if(ve(Ae,r),!(t.mode&1))t.memoizedState=null;else switch(o){case"forwards":for(n=t.child,o=null;n!==null;)e=n.alternate,e!==null&&sl(e)===null&&(o=n),n=n.sibling;n=o,n===null?(o=t.child,t.child=null):(o=n.sibling,n.sibling=null),Rs(t,!1,o,n,i);break;case"backwards":for(n=null,o=t.child,t.child=null;o!==null;){if(e=o.alternate,e!==null&&sl(e)===null){t.child=o;break}e=o.sibling,o.sibling=n,n=o,o=e}Rs(t,!0,n,null,i);break;case"together":Rs(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function Na(e,t){!(t.mode&1)&&e!==null&&(e.alternate=null,t.alternate=null,t.flags|=2)}function vn(e,t,n){if(e!==null&&(t.dependencies=e.dependencies),xr|=t.lanes,!(n&t.childLanes))return null;if(e!==null&&t.child!==e.child)throw Error(M(153));if(t.child!==null){for(e=t.child,n=Wn(e,e.pendingProps),t.child=n,n.return=t;e.sibling!==null;)e=e.sibling,n=n.sibling=Wn(e,e.pendingProps),n.return=t;n.sibling=null}return t.child}function A2(e,t,n){switch(t.tag){case 3:Yv(t),po();break;case 5:bv(t);break;case 1:gt(t.type)&&nl(t);break;case 4:fd(t,t.stateNode.containerInfo);break;case 10:var r=t.type._context,o=t.memoizedProps.value;ve(il,r._currentValue),r._currentValue=o;break;case 13:if(r=t.memoizedState,r!==null)return r.dehydrated!==null?(ve(Ae,Ae.current&1),t.flags|=128,null):n&t.child.childLanes?Qv(e,t,n):(ve(Ae,Ae.current&1),e=vn(e,t,n),e!==null?e.sibling:null);ve(Ae,Ae.current&1);break;case 19:if(r=(n&t.childLanes)!==0,e.flags&128){if(r)return Zv(e,t,n);t.flags|=128}if(o=t.memoizedState,o!==null&&(o.rendering=null,o.tail=null,o.lastEffect=null),ve(Ae,Ae.current),r)break;return null;case 22:case 23:return t.lanes=0,Gv(e,t,n)}return vn(e,t,n)}var Xv,Hu,Jv,e0;Xv=function(e,t){for(var n=t.child;n!==null;){if(n.tag===5||n.tag===6)e.appendChild(n.stateNode);else if(n.tag!==4&&n.child!==null){n.child.return=n,n=n.child;continue}if(n===t)break;for(;n.sibling===null;){if(n.return===null||n.return===t)return;n=n.return}n.sibling.return=n.return,n=n.sibling}};Hu=function(){};Jv=function(e,t,n,r){var o=e.memoizedProps;if(o!==r){e=t.stateNode,ur(tn.current);var i=null;switch(n){case"input":o=fu(e,o),r=fu(e,r),i=[];break;case"select":o=Te({},o,{value:void 0}),r=Te({},r,{value:void 0}),i=[];break;case"textarea":o=mu(e,o),r=mu(e,r),i=[];break;default:typeof o.onClick!="function"&&typeof r.onClick=="function"&&(e.onclick=el)}gu(n,r);var a;n=null;for(c in o)if(!r.hasOwnProperty(c)&&o.hasOwnProperty(c)&&o[c]!=null)if(c==="style"){var l=o[c];for(a in l)l.hasOwnProperty(a)&&(n||(n={}),n[a]="")}else c!=="dangerouslySetInnerHTML"&&c!=="children"&&c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&c!=="autoFocus"&&(pi.hasOwnProperty(c)?i||(i=[]):(i=i||[]).push(c,null));for(c in r){var s=r[c];if(l=o!=null?o[c]:void 0,r.hasOwnProperty(c)&&s!==l&&(s!=null||l!=null))if(c==="style")if(l){for(a in l)!l.hasOwnProperty(a)||s&&s.hasOwnProperty(a)||(n||(n={}),n[a]="");for(a in s)s.hasOwnProperty(a)&&l[a]!==s[a]&&(n||(n={}),n[a]=s[a])}else n||(i||(i=[]),i.push(c,n)),n=s;else c==="dangerouslySetInnerHTML"?(s=s?s.__html:void 0,l=l?l.__html:void 0,s!=null&&l!==s&&(i=i||[]).push(c,s)):c==="children"?typeof s!="string"&&typeof s!="number"||(i=i||[]).push(c,""+s):c!=="suppressContentEditableWarning"&&c!=="suppressHydrationWarning"&&(pi.hasOwnProperty(c)?(s!=null&&c==="onScroll"&&ge("scroll",e),i||l===s||(i=[])):(i=i||[]).push(c,s))}n&&(i=i||[]).push("style",n);var c=i;(t.updateQueue=c)&&(t.flags|=4)}};e0=function(e,t,n,r){n!==r&&(t.flags|=4)};function Uo(e,t){if(!be)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;t!==null;)t.alternate!==null&&(n=t),t=t.sibling;n===null?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;n!==null;)n.alternate!==null&&(r=n),n=n.sibling;r===null?t||e.tail===null?e.tail=null:e.tail.sibling=null:r.sibling=null}}function tt(e){var t=e.alternate!==null&&e.alternate.child===e.child,n=0,r=0;if(t)for(var o=e.child;o!==null;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags&14680064,r|=o.flags&14680064,o.return=e,o=o.sibling;else for(o=e.child;o!==null;)n|=o.lanes|o.childLanes,r|=o.subtreeFlags,r|=o.flags,o.return=e,o=o.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function S2(e,t,n){var r=t.pendingProps;switch(id(t),t.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return tt(t),null;case 1:return gt(t.type)&&tl(),tt(t),null;case 3:return r=t.stateNode,mo(),ye(vt),ye(ot),hd(),r.pendingContext&&(r.context=r.pendingContext,r.pendingContext=null),(e===null||e.child===null)&&(ua(t)?t.flags|=4:e===null||e.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Vt!==null&&(Xu(Vt),Vt=null))),Hu(e,t),tt(t),null;case 5:pd(t);var o=ur(Ci.current);if(n=t.type,e!==null&&t.stateNode!=null)Jv(e,t,n,r,o),e.ref!==t.ref&&(t.flags|=512,t.flags|=2097152);else{if(!r){if(t.stateNode===null)throw Error(M(166));return tt(t),null}if(e=ur(tn.current),ua(t)){r=t.stateNode,n=t.type;var i=t.memoizedProps;switch(r[Xt]=t,r[ki]=i,e=(t.mode&1)!==0,n){case"dialog":ge("cancel",r),ge("close",r);break;case"iframe":case"object":case"embed":ge("load",r);break;case"video":case"audio":for(o=0;o<\/script>",e=e.removeChild(e.firstChild)):typeof r.is=="string"?e=a.createElement(n,{is:r.is}):(e=a.createElement(n),n==="select"&&(a=e,r.multiple?a.multiple=!0:r.size&&(a.size=r.size))):e=a.createElementNS(e,n),e[Xt]=t,e[ki]=r,Xv(e,t,!1,!1),t.stateNode=e;e:{switch(a=yu(n,r),n){case"dialog":ge("cancel",e),ge("close",e),o=r;break;case"iframe":case"object":case"embed":ge("load",e),o=r;break;case"video":case"audio":for(o=0;ogo&&(t.flags|=128,r=!0,Uo(i,!1),t.lanes=4194304)}else{if(!r)if(e=sl(a),e!==null){if(t.flags|=128,r=!0,n=e.updateQueue,n!==null&&(t.updateQueue=n,t.flags|=4),Uo(i,!0),i.tail===null&&i.tailMode==="hidden"&&!a.alternate&&!be)return tt(t),null}else 2*Me()-i.renderingStartTime>go&&n!==1073741824&&(t.flags|=128,r=!0,Uo(i,!1),t.lanes=4194304);i.isBackwards?(a.sibling=t.child,t.child=a):(n=i.last,n!==null?n.sibling=a:t.child=a,i.last=a)}return i.tail!==null?(t=i.tail,i.rendering=t,i.tail=t.sibling,i.renderingStartTime=Me(),t.sibling=null,n=Ae.current,ve(Ae,r?n&1|2:n&1),t):(tt(t),null);case 22:case 23:return Cd(),r=t.memoizedState!==null,e!==null&&e.memoizedState!==null!==r&&(t.flags|=8192),r&&t.mode&1?wt&1073741824&&(tt(t),t.subtreeFlags&6&&(t.flags|=8192)):tt(t),null;case 24:return null;case 25:return null}throw Error(M(156,t.tag))}function T2(e,t){switch(id(t),t.tag){case 1:return gt(t.type)&&tl(),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return mo(),ye(vt),ye(ot),hd(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 5:return pd(t),null;case 13:if(ye(Ae),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(M(340));po()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ye(Ae),null;case 4:return mo(),null;case 10:return ud(t.type._context),null;case 22:case 23:return Cd(),null;case 24:return null;default:return null}}var fa=!1,nt=!1,R2=typeof WeakSet=="function"?WeakSet:Set,H=null;function Zr(e,t){var n=e.ref;if(n!==null)if(typeof n=="function")try{n(null)}catch(r){Ie(e,t,r)}else n.current=null}function Wu(e,t,n){try{n()}catch(r){Ie(e,t,r)}}var gp=!1;function $2(e,t){if(Su=Za,e=ov(),rd(e)){if("selectionStart"in e)var n={start:e.selectionStart,end:e.selectionEnd};else e:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var o=r.anchorOffset,i=r.focusNode;r=r.focusOffset;try{n.nodeType,i.nodeType}catch{n=null;break e}var a=0,l=-1,s=-1,c=0,d=0,u=e,f=null;t:for(;;){for(var h;u!==n||o!==0&&u.nodeType!==3||(l=a+o),u!==i||r!==0&&u.nodeType!==3||(s=a+r),u.nodeType===3&&(a+=u.nodeValue.length),(h=u.firstChild)!==null;)f=u,u=h;for(;;){if(u===e)break t;if(f===n&&++c===o&&(l=a),f===i&&++d===r&&(s=a),(h=u.nextSibling)!==null)break;u=f,f=u.parentNode}u=h}n=l===-1||s===-1?null:{start:l,end:s}}else n=null}n=n||{start:0,end:0}}else n=null;for(Tu={focusedElem:e,selectionRange:n},Za=!1,H=t;H!==null;)if(t=H,e=t.child,(t.subtreeFlags&1028)!==0&&e!==null)e.return=t,H=e;else for(;H!==null;){t=H;try{var y=t.alternate;if(t.flags&1024)switch(t.tag){case 0:case 11:case 15:break;case 1:if(y!==null){var g=y.memoizedProps,w=y.memoizedState,m=t.stateNode,v=m.getSnapshotBeforeUpdate(t.elementType===t.type?g:zt(t.type,g),w);m.__reactInternalSnapshotBeforeUpdate=v}break;case 3:var _=t.stateNode.containerInfo;_.nodeType===1?_.textContent="":_.nodeType===9&&_.documentElement&&_.removeChild(_.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(M(163))}}catch(E){Ie(t,t.return,E)}if(e=t.sibling,e!==null){e.return=t.return,H=e;break}H=t.return}return y=gp,gp=!1,y}function ui(e,t,n){var r=t.updateQueue;if(r=r!==null?r.lastEffect:null,r!==null){var o=r=r.next;do{if((o.tag&e)===e){var i=o.destroy;o.destroy=void 0,i!==void 0&&Wu(t,n,i)}o=o.next}while(o!==r)}}function Ll(e,t){if(t=t.updateQueue,t=t!==null?t.lastEffect:null,t!==null){var n=t=t.next;do{if((n.tag&e)===e){var r=n.create;n.destroy=r()}n=n.next}while(n!==t)}}function Ku(e){var t=e.ref;if(t!==null){var n=e.stateNode;switch(e.tag){case 5:e=n;break;default:e=n}typeof t=="function"?t(e):t.current=e}}function t0(e){var t=e.alternate;t!==null&&(e.alternate=null,t0(t)),e.child=null,e.deletions=null,e.sibling=null,e.tag===5&&(t=e.stateNode,t!==null&&(delete t[Xt],delete t[ki],delete t[Ou],delete t[p2],delete t[h2])),e.stateNode=null,e.return=null,e.dependencies=null,e.memoizedProps=null,e.memoizedState=null,e.pendingProps=null,e.stateNode=null,e.updateQueue=null}function n0(e){return e.tag===5||e.tag===3||e.tag===4}function yp(e){e:for(;;){for(;e.sibling===null;){if(e.return===null||n0(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.flags&2||e.child===null||e.tag===4)continue e;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Gu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.nodeType===8?n.parentNode.insertBefore(e,t):n.insertBefore(e,t):(n.nodeType===8?(t=n.parentNode,t.insertBefore(e,n)):(t=n,t.appendChild(e)),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=el));else if(r!==4&&(e=e.child,e!==null))for(Gu(e,t,n),e=e.sibling;e!==null;)Gu(e,t,n),e=e.sibling}function qu(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(e=e.child,e!==null))for(qu(e,t,n),e=e.sibling;e!==null;)qu(e,t,n),e=e.sibling}var Ye=null,Ft=!1;function Tn(e,t,n){for(n=n.child;n!==null;)r0(e,t,n),n=n.sibling}function r0(e,t,n){if(en&&typeof en.onCommitFiberUnmount=="function")try{en.onCommitFiberUnmount(Pl,n)}catch{}switch(n.tag){case 5:nt||Zr(n,t);case 6:var r=Ye,o=Ft;Ye=null,Tn(e,t,n),Ye=r,Ft=o,Ye!==null&&(Ft?(e=Ye,n=n.stateNode,e.nodeType===8?e.parentNode.removeChild(n):e.removeChild(n)):Ye.removeChild(n.stateNode));break;case 18:Ye!==null&&(Ft?(e=Ye,n=n.stateNode,e.nodeType===8?ks(e.parentNode,n):e.nodeType===1&&ks(e,n),yi(e)):ks(Ye,n.stateNode));break;case 4:r=Ye,o=Ft,Ye=n.stateNode.containerInfo,Ft=!0,Tn(e,t,n),Ye=r,Ft=o;break;case 0:case 11:case 14:case 15:if(!nt&&(r=n.updateQueue,r!==null&&(r=r.lastEffect,r!==null))){o=r=r.next;do{var i=o,a=i.destroy;i=i.tag,a!==void 0&&(i&2||i&4)&&Wu(n,t,a),o=o.next}while(o!==r)}Tn(e,t,n);break;case 1:if(!nt&&(Zr(n,t),r=n.stateNode,typeof r.componentWillUnmount=="function"))try{r.props=n.memoizedProps,r.state=n.memoizedState,r.componentWillUnmount()}catch(l){Ie(n,t,l)}Tn(e,t,n);break;case 21:Tn(e,t,n);break;case 22:n.mode&1?(nt=(r=nt)||n.memoizedState!==null,Tn(e,t,n),nt=r):Tn(e,t,n);break;default:Tn(e,t,n)}}function xp(e){var t=e.updateQueue;if(t!==null){e.updateQueue=null;var n=e.stateNode;n===null&&(n=e.stateNode=new R2),t.forEach(function(r){var o=F2.bind(null,e,r);n.has(r)||(n.add(r),r.then(o,o))})}}function jt(e,t){var n=t.deletions;if(n!==null)for(var r=0;ro&&(o=a),r&=~i}if(r=o,r=Me()-r,r=(120>r?120:480>r?480:1080>r?1080:1920>r?1920:3e3>r?3e3:4320>r?4320:1960*I2(r/1960))-r,10e?16:e,Mn===null)var r=!1;else{if(e=Mn,Mn=null,pl=0,se&6)throw Error(M(331));var o=se;for(se|=4,H=e.current;H!==null;){var i=H,a=i.child;if(H.flags&16){var l=i.deletions;if(l!==null){for(var s=0;sMe()-kd?pr(e,0):Ed|=n),yt(e,t)}function d0(e,t){t===0&&(e.mode&1?(t=ra,ra<<=1,!(ra&130023424)&&(ra=4194304)):t=1);var n=lt();e=mn(e,t),e!==null&&(ji(e,t,n),yt(e,n))}function z2(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),d0(e,n)}function F2(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,o=e.memoizedState;o!==null&&(n=o.retryLane);break;case 19:r=e.stateNode;break;default:throw Error(M(314))}r!==null&&r.delete(t),d0(e,n)}var f0;f0=function(e,t,n){if(e!==null)if(e.memoizedProps!==t.pendingProps||vt.current)mt=!0;else{if(!(e.lanes&n)&&!(t.flags&128))return mt=!1,A2(e,t,n);mt=!!(e.flags&131072)}else mt=!1,be&&t.flags&1048576&&mv(t,ol,t.index);switch(t.lanes=0,t.tag){case 2:var r=t.type;Na(e,t),e=t.pendingProps;var o=fo(t,ot.current);io(t,n),o=vd(null,t,r,e,o,n);var i=gd();return t.flags|=1,typeof o=="object"&&o!==null&&typeof o.render=="function"&&o.$$typeof===void 0?(t.tag=1,t.memoizedState=null,t.updateQueue=null,gt(r)?(i=!0,nl(t)):i=!1,t.memoizedState=o.state!==null&&o.state!==void 0?o.state:null,dd(t),o.updater=Ol,t.stateNode=o,o._reactInternals=t,ju(t,r,e,n),t=Uu(null,t,r,!0,i,n)):(t.tag=0,be&&i&&od(t),it(null,t,o,n),t=t.child),t;case 16:r=t.elementType;e:{switch(Na(e,t),e=t.pendingProps,o=r._init,r=o(r._payload),t.type=r,o=t.tag=V2(r),e=zt(r,e),o){case 0:t=Fu(null,t,r,e,n);break e;case 1:t=hp(null,t,r,e,n);break e;case 11:t=fp(null,t,r,e,n);break e;case 14:t=pp(null,t,r,zt(r.type,e),n);break e}throw Error(M(306,r,""))}return t;case 0:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:zt(r,o),Fu(e,t,r,o,n);case 1:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:zt(r,o),hp(e,t,r,o,n);case 3:e:{if(Yv(t),e===null)throw Error(M(387));r=t.pendingProps,i=t.memoizedState,o=i.element,xv(e,t),ll(t,r,null,n);var a=t.memoizedState;if(r=a.element,i.isDehydrated)if(i={element:r,isDehydrated:!1,cache:a.cache,pendingSuspenseBoundaries:a.pendingSuspenseBoundaries,transitions:a.transitions},t.updateQueue.baseState=i,t.memoizedState=i,t.flags&256){o=vo(Error(M(423)),t),t=mp(e,t,r,n,o);break e}else if(r!==o){o=vo(Error(M(424)),t),t=mp(e,t,r,n,o);break e}else for(kt=Un(t.stateNode.containerInfo.firstChild),bt=t,be=!0,Vt=null,n=kv(t,null,r,n),t.child=n;n;)n.flags=n.flags&-3|4096,n=n.sibling;else{if(po(),r===o){t=vn(e,t,n);break e}it(e,t,r,n)}t=t.child}return t;case 5:return bv(t),e===null&&Du(t),r=t.type,o=t.pendingProps,i=e!==null?e.memoizedProps:null,a=o.children,Ru(r,o)?a=null:i!==null&&Ru(r,i)&&(t.flags|=32),qv(e,t),it(e,t,a,n),t.child;case 6:return e===null&&Du(t),null;case 13:return Qv(e,t,n);case 4:return fd(t,t.stateNode.containerInfo),r=t.pendingProps,e===null?t.child=ho(t,null,r,n):it(e,t,r,n),t.child;case 11:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:zt(r,o),fp(e,t,r,o,n);case 7:return it(e,t,t.pendingProps,n),t.child;case 8:return it(e,t,t.pendingProps.children,n),t.child;case 12:return it(e,t,t.pendingProps.children,n),t.child;case 10:e:{if(r=t.type._context,o=t.pendingProps,i=t.memoizedProps,a=o.value,ve(il,r._currentValue),r._currentValue=a,i!==null)if(Gt(i.value,a)){if(i.children===o.children&&!vt.current){t=vn(e,t,n);break e}}else for(i=t.child,i!==null&&(i.return=t);i!==null;){var l=i.dependencies;if(l!==null){a=i.child;for(var s=l.firstContext;s!==null;){if(s.context===r){if(i.tag===1){s=dn(-1,n&-n),s.tag=2;var c=i.updateQueue;if(c!==null){c=c.shared;var d=c.pending;d===null?s.next=s:(s.next=d.next,d.next=s),c.pending=s}}i.lanes|=n,s=i.alternate,s!==null&&(s.lanes|=n),Nu(i.return,n,t),l.lanes|=n;break}s=s.next}}else if(i.tag===10)a=i.type===t.type?null:i.child;else if(i.tag===18){if(a=i.return,a===null)throw Error(M(341));a.lanes|=n,l=a.alternate,l!==null&&(l.lanes|=n),Nu(a,n,t),a=i.sibling}else a=i.child;if(a!==null)a.return=i;else for(a=i;a!==null;){if(a===t){a=null;break}if(i=a.sibling,i!==null){i.return=a.return,a=i;break}a=a.return}i=a}it(e,t,o.children,n),t=t.child}return t;case 9:return o=t.type,r=t.pendingProps.children,io(t,n),o=Lt(o),r=r(o),t.flags|=1,it(e,t,r,n),t.child;case 14:return r=t.type,o=zt(r,t.pendingProps),o=zt(r.type,o),pp(e,t,r,o,n);case 15:return Kv(e,t,t.type,t.pendingProps,n);case 17:return r=t.type,o=t.pendingProps,o=t.elementType===r?o:zt(r,o),Na(e,t),t.tag=1,gt(r)?(e=!0,nl(t)):e=!1,io(t,n),wv(t,r,o),ju(t,r,o,n),Uu(null,t,r,!0,e,n);case 19:return Zv(e,t,n);case 22:return Gv(e,t,n)}throw Error(M(156,t.tag))};function p0(e,t){return zm(e,t)}function U2(e,t,n,r){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=r,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Ot(e,t,n,r){return new U2(e,t,n,r)}function Ad(e){return e=e.prototype,!(!e||!e.isReactComponent)}function V2(e){if(typeof e=="function")return Ad(e)?1:0;if(e!=null){if(e=e.$$typeof,e===Kc)return 11;if(e===Gc)return 14}return 2}function Wn(e,t){var n=e.alternate;return n===null?(n=Ot(e.tag,t,e.key,e.mode),n.elementType=e.elementType,n.type=e.type,n.stateNode=e.stateNode,n.alternate=e,e.alternate=n):(n.pendingProps=t,n.type=e.type,n.flags=0,n.subtreeFlags=0,n.deletions=null),n.flags=e.flags&14680064,n.childLanes=e.childLanes,n.lanes=e.lanes,n.child=e.child,n.memoizedProps=e.memoizedProps,n.memoizedState=e.memoizedState,n.updateQueue=e.updateQueue,t=e.dependencies,n.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},n.sibling=e.sibling,n.index=e.index,n.ref=e.ref,n}function za(e,t,n,r,o,i){var a=2;if(r=e,typeof e=="function")Ad(e)&&(a=1);else if(typeof e=="string")a=5;else e:switch(e){case Vr:return hr(n.children,o,i,t);case Wc:a=8,o|=8;break;case su:return e=Ot(12,n,t,o|2),e.elementType=su,e.lanes=i,e;case uu:return e=Ot(13,n,t,o),e.elementType=uu,e.lanes=i,e;case cu:return e=Ot(19,n,t,o),e.elementType=cu,e.lanes=i,e;case Em:return Nl(n,o,i,t);default:if(typeof e=="object"&&e!==null)switch(e.$$typeof){case _m:a=10;break e;case wm:a=9;break e;case Kc:a=11;break e;case Gc:a=14;break e;case On:a=16,r=null;break e}throw Error(M(130,e==null?e:typeof e,""))}return t=Ot(a,n,t,o),t.elementType=e,t.type=r,t.lanes=i,t}function hr(e,t,n,r){return e=Ot(7,e,r,t),e.lanes=n,e}function Nl(e,t,n,r){return e=Ot(22,e,r,t),e.elementType=Em,e.lanes=n,e.stateNode={isHidden:!1},e}function $s(e,t,n){return e=Ot(6,e,null,t),e.lanes=n,e}function Os(e,t,n){return t=Ot(4,e.children!==null?e.children:[],e.key,t),t.lanes=n,t.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},t}function B2(e,t,n,r,o){this.tag=t,this.containerInfo=e,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.pendingContext=this.context=null,this.callbackPriority=0,this.eventTimes=fs(0),this.expirationTimes=fs(-1),this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=fs(0),this.identifierPrefix=r,this.onRecoverableError=o,this.mutableSourceEagerHydrationData=null}function Sd(e,t,n,r,o,i,a,l,s){return e=new B2(e,t,n,l,s),t===1?(t=1,i===!0&&(t|=8)):t=0,i=Ot(3,null,null,t),e.current=i,i.stateNode=e,i.memoizedState={element:r,isDehydrated:n,cache:null,transitions:null,pendingSuspenseBoundaries:null},dd(i),e}function H2(e,t,n){var r=3"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(g0)}catch(e){console.error(e)}}g0(),mm.exports=At;var Ao=mm.exports;const y0=Xn(Ao),Y2=Nc({__proto__:null,default:y0},[Ao]);var x0,Ap=Ao;Ap.createRoot,x0=Ap.hydrateRoot;/** * @remix-run/router v1.15.3 * * Copyright (c) Remix Software Inc. @@ -52,8 +52,8 @@ Error generating stack: `+i.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function Le(){return Le=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function yo(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function Z_(){return Math.random().toString(36).substr(2,8)}function Tp(e,t){return{usr:e.state,key:e.key,idx:t}}function Ri(e,t,n,r){return n===void 0&&(n=null),Le({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?wn(t):t,{state:n,key:t&&t.key||r||Z_()})}function wr(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function wn(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function X_(e,t,n,r){r===void 0&&(r={});let{window:o=document.defaultView,v5Compat:i=!1}=r,a=o.history,l=De.Pop,s=null,c=d();c==null&&(c=0,a.replaceState(Le({},a.state,{idx:c}),""));function d(){return(a.state||{idx:null}).idx}function u(){l=De.Pop;let w=d(),m=w==null?null:w-c;c=w,s&&s({action:l,location:g.location,delta:m})}function f(w,m){l=De.Push;let v=Ri(g.location,w,m);n&&n(v,w),c=d()+1;let _=Tp(v,c),E=g.createHref(v);try{a.pushState(_,"",E)}catch(C){if(C instanceof DOMException&&C.name==="DataCloneError")throw C;o.location.assign(E)}i&&s&&s({action:l,location:g.location,delta:1})}function h(w,m){l=De.Replace;let v=Ri(g.location,w,m);n&&n(v,w),c=d();let _=Tp(v,c),E=g.createHref(v);a.replaceState(_,"",E),i&&s&&s({action:l,location:g.location,delta:0})}function y(w){let m=o.location.origin!=="null"?o.location.origin:o.location.href,v=typeof w=="string"?w:wr(w);return v=v.replace(/ $/,"%20"),ne(m,"No window.location.(origin|href) available to create URL for href: "+v),new URL(v,m)}let g={get action(){return l},get location(){return e(o,a)},listen(w){if(s)throw new Error("A history only accepts one active listener");return o.addEventListener(Sp,u),s=w,()=>{o.removeEventListener(Sp,u),s=null}},createHref(w){return t(o,w)},createURL:y,encodeLocation(w){let m=y(w);return{pathname:m.pathname,search:m.search,hash:m.hash}},push:f,replace:h,go(w){return a.go(w)}};return g}var Oe;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Oe||(Oe={}));const J_=new Set(["lazy","caseSensitive","path","id","index","children"]);function ew(e){return e.index===!0}function Ju(e,t,n,r){return n===void 0&&(n=[]),r===void 0&&(r={}),e.map((o,i)=>{let a=[...n,i],l=typeof o.id=="string"?o.id:a.join("-");if(ne(o.index!==!0||!o.children,"Cannot specify children on an index route"),ne(!r[l],'Found a route id collision on id "'+l+`". Route id's must be globally unique within Data Router usages`),ew(o)){let s=Le({},o,t(o),{id:l});return r[l]=s,s}else{let s=Le({},o,t(o),{id:l,children:void 0});return r[l]=s,o.children&&(s.children=Ju(o.children,t,a,r)),s}})}function cr(e,t,n){n===void 0&&(n="/");let r=typeof t=="string"?wn(t):t,o=Cr(r.pathname||"/",n);if(o==null)return null;let i=w0(e);tw(i);let a=null;for(let l=0;a==null&&l{let s={relativePath:l===void 0?i.path||"":l,caseSensitive:i.caseSensitive===!0,childrenIndex:a,route:i};s.relativePath.startsWith("/")&&(ne(s.relativePath.startsWith(r),'Absolute route path "'+s.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),s.relativePath=s.relativePath.slice(r.length));let c=fn([r,s.relativePath]),d=n.concat(s);i.children&&i.children.length>0&&(ne(i.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+c+'".')),w0(i.children,t,d,c)),!(i.path==null&&!i.index)&&t.push({path:c,score:sw(c,i.index),routesMeta:d})};return e.forEach((i,a)=>{var l;if(i.path===""||!((l=i.path)!=null&&l.includes("?")))o(i,a);else for(let s of E0(i.path))o(i,a,s)}),t}function E0(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,o=n.endsWith("?"),i=n.replace(/\?$/,"");if(r.length===0)return o?[i,""]:[i];let a=E0(r.join("/")),l=[];return l.push(...a.map(s=>s===""?i:[i,s].join("/"))),o&&l.push(...a),l.map(s=>e.startsWith("/")&&s===""?"/":s)}function tw(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:uw(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const nw=/^:[\w-]+$/,rw=3,ow=2,iw=1,aw=10,lw=-2,Rp=e=>e==="*";function sw(e,t){let n=e.split("/"),r=n.length;return n.some(Rp)&&(r+=lw),t&&(r+=ow),n.filter(o=>!Rp(o)).reduce((o,i)=>o+(nw.test(i)?rw:i===""?iw:aw),r)}function uw(e,t){return e.length===t.length&&e.slice(0,-1).every((r,o)=>r===t[o])?e[e.length-1]-t[t.length-1]:0}function cw(e,t){let{routesMeta:n}=e,r={},o="/",i=[];for(let a=0;a{let{paramName:f,isOptional:h}=d;if(f==="*"){let g=l[u]||"";a=i.slice(0,i.length-g.length).replace(/(.)\/+$/,"$1")}const y=l[u];return h&&!y?c[f]=void 0:c[f]=(y||"").replace(/%2F/g,"/"),c},{}),pathname:i,pathnameBase:a,pattern:e}}function dw(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),yo(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(a,l,s)=>(r.push({paramName:l,isOptional:s!=null}),s?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,t?void 0:"i"),r]}function fw(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return yo(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Cr(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function pw(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:o=""}=typeof e=="string"?wn(e):e;return{pathname:n?n.startsWith("/")?n:hw(n,t):t,search:vw(r),hash:gw(o)}}function hw(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(o=>{o===".."?n.length>1&&n.pop():o!=="."&&n.push(o)}),n.length>1?n.join("/"):"/"}function Is(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function k0(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function Od(e,t){let n=k0(e);return t?n.map((r,o)=>o===e.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function Id(e,t,n,r){r===void 0&&(r=!1);let o;typeof e=="string"?o=wn(e):(o=Le({},e),ne(!o.pathname||!o.pathname.includes("?"),Is("?","pathname","search",o)),ne(!o.pathname||!o.pathname.includes("#"),Is("#","pathname","hash",o)),ne(!o.search||!o.search.includes("#"),Is("#","search","hash",o)));let i=e===""||o.pathname==="",a=i?"/":o.pathname,l;if(a==null)l=n;else{let u=t.length-1;if(!r&&a.startsWith("..")){let f=a.split("/");for(;f[0]==="..";)f.shift(),u-=1;o.pathname=f.join("/")}l=u>=0?t[u]:"/"}let s=pw(o,l),c=a&&a!=="/"&&a.endsWith("/"),d=(i||a===".")&&n.endsWith("/");return!s.pathname.endsWith("/")&&(c||d)&&(s.pathname+="/"),s}const fn=e=>e.join("/").replace(/\/\/+/g,"/"),mw=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),vw=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,gw=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;class Ld{constructor(t,n,r,o){o===void 0&&(o=!1),this.status=t,this.statusText=n||"",this.internal=o,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}}function b0(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const C0=["post","put","patch","delete"],yw=new Set(C0),xw=["get",...C0],_w=new Set(xw),ww=new Set([301,302,303,307,308]),Ew=new Set([307,308]),Ls={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},kw={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Bo={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},P0=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,bw=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),A0="remix-router-transitions";function Cw(e){const t=e.window?e.window:typeof window<"u"?window:void 0,n=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u",r=!n;ne(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let o;if(e.mapRouteProperties)o=e.mapRouteProperties;else if(e.detectErrorBoundary){let T=e.detectErrorBoundary;o=R=>({hasErrorBoundary:T(R)})}else o=bw;let i={},a=Ju(e.routes,o,void 0,i),l,s=e.basename||"/",c=Le({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1},e.future),d=null,u=new Set,f=null,h=null,y=null,g=e.hydrationData!=null,w=cr(a,e.history.location,s),m=null;if(w==null){let T=Tt(404,{pathname:e.history.location.pathname}),{matches:R,route:I}=jp(a);w=R,m={[I.id]:T}}let v,_=w.some(T=>T.route.lazy),E=w.some(T=>T.route.loader);if(_)v=!1;else if(!E)v=!0;else if(c.v7_partialHydration){let T=e.hydrationData?e.hydrationData.loaderData:null,R=e.hydrationData?e.hydrationData.errors:null,I=V=>V.route.loader?V.route.loader.hydrate===!0?!1:T&&T[V.route.id]!==void 0||R&&R[V.route.id]!==void 0:!0;if(R){let V=w.findIndex(K=>R[K.route.id]!==void 0);v=w.slice(0,V+1).every(I)}else v=w.every(I)}else v=e.hydrationData!=null;let C,k={historyAction:e.history.action,location:e.history.location,matches:w,initialized:v,navigation:Ls,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||m,fetchers:new Map,blockers:new Map},P=De.Pop,A=!1,S,O=!1,j=new Map,N=null,z=!1,$=!1,U=[],W=[],B=new Map,L=0,F=-1,G=new Map,J=new Set,ue=new Map,Ve=new Map,xe=new Set,$e=new Map,_e=new Map,Be=!1;function we(){if(d=e.history.listen(T=>{let{action:R,location:I,delta:V}=T;if(Be){Be=!1;return}yo(_e.size===0||V!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let K=vf({currentLocation:k.location,nextLocation:I,historyAction:R});if(K&&V!=null){Be=!0,e.history.go(V*-1),Yi(K,{state:"blocked",location:I,proceed(){Yi(K,{state:"proceeding",proceed:void 0,reset:void 0,location:I}),e.history.go(V)},reset(){let oe=new Map(k.blockers);oe.set(K,Bo),Pe({blockers:oe})}});return}return xt(R,I)}),n){Nw(t,j);let T=()=>Mw(t,j);t.addEventListener("pagehide",T),N=()=>t.removeEventListener("pagehide",T)}return k.initialized||xt(De.Pop,k.location,{initialHydration:!0}),C}function Ce(){d&&d(),N&&N(),u.clear(),S&&S.abort(),k.fetchers.forEach((T,R)=>qi(R)),k.blockers.forEach((T,R)=>mf(R))}function Mt(T){return u.add(T),()=>u.delete(T)}function Pe(T,R){R===void 0&&(R={}),k=Le({},k,T);let I=[],V=[];c.v7_fetcherPersist&&k.fetchers.forEach((K,oe)=>{K.state==="idle"&&(xe.has(oe)?V.push(oe):I.push(oe))}),[...u].forEach(K=>K(k,{deletedFetchers:V,unstable_viewTransitionOpts:R.viewTransitionOpts,unstable_flushSync:R.flushSync===!0})),c.v7_fetcherPersist&&(I.forEach(K=>k.fetchers.delete(K)),V.forEach(K=>qi(K)))}function dt(T,R,I){var V,K;let{flushSync:oe}=I===void 0?{}:I,X=k.actionData!=null&&k.navigation.formMethod!=null&&Ut(k.navigation.formMethod)&&k.navigation.state==="loading"&&((V=T.state)==null?void 0:V._isRedirect)!==!0,Q;R.actionData?Object.keys(R.actionData).length>0?Q=R.actionData:Q=null:X?Q=k.actionData:Q=null;let Y=R.loaderData?Mp(k.loaderData,R.loaderData,R.matches||[],R.errors):k.loaderData,ae=k.blockers;ae.size>0&&(ae=new Map(ae),ae.forEach((he,qe)=>ae.set(qe,Bo)));let He=A===!0||k.navigation.formMethod!=null&&Ut(k.navigation.formMethod)&&((K=T.state)==null?void 0:K._isRedirect)!==!0;l&&(a=l,l=void 0),z||P===De.Pop||(P===De.Push?e.history.push(T,T.state):P===De.Replace&&e.history.replace(T,T.state));let te;if(P===De.Pop){let he=j.get(k.location.pathname);he&&he.has(T.pathname)?te={currentLocation:k.location,nextLocation:T}:j.has(T.pathname)&&(te={currentLocation:T,nextLocation:k.location})}else if(O){let he=j.get(k.location.pathname);he?he.add(T.pathname):(he=new Set([T.pathname]),j.set(k.location.pathname,he)),te={currentLocation:k.location,nextLocation:T}}Pe(Le({},R,{actionData:Q,loaderData:Y,historyAction:P,location:T,initialized:!0,navigation:Ls,revalidation:"idle",restoreScrollPosition:yf(T,R.matches||k.matches),preventScrollReset:He,blockers:ae}),{viewTransitionOpts:te,flushSync:oe===!0}),P=De.Pop,A=!1,O=!1,z=!1,$=!1,U=[],W=[]}async function Ki(T,R){if(typeof T=="number"){e.history.go(T);return}let I=ec(k.location,k.matches,s,c.v7_prependBasename,T,c.v7_relativeSplatPath,R==null?void 0:R.fromRouteId,R==null?void 0:R.relative),{path:V,submission:K,error:oe}=$p(c.v7_normalizeFormMethod,!1,I,R),X=k.location,Q=Ri(k.location,V,R&&R.state);Q=Le({},Q,e.history.encodeLocation(Q));let Y=R&&R.replace!=null?R.replace:void 0,ae=De.Push;Y===!0?ae=De.Replace:Y===!1||K!=null&&Ut(K.formMethod)&&K.formAction===k.location.pathname+k.location.search&&(ae=De.Replace);let He=R&&"preventScrollReset"in R?R.preventScrollReset===!0:void 0,te=(R&&R.unstable_flushSync)===!0,he=vf({currentLocation:X,nextLocation:Q,historyAction:ae});if(he){Yi(he,{state:"blocked",location:Q,proceed(){Yi(he,{state:"proceeding",proceed:void 0,reset:void 0,location:Q}),Ki(T,R)},reset(){let qe=new Map(k.blockers);qe.set(he,Bo),Pe({blockers:qe})}});return}return await xt(ae,Q,{submission:K,pendingError:oe,preventScrollReset:He,replace:R&&R.replace,enableViewTransition:R&&R.unstable_viewTransition,flushSync:te})}function Zl(){if(ns(),Pe({revalidation:"loading"}),k.navigation.state!=="submitting"){if(k.navigation.state==="idle"){xt(k.historyAction,k.location,{startUninterruptedRevalidation:!0});return}xt(P||k.historyAction,k.navigation.location,{overrideNavigation:k.navigation})}}async function xt(T,R,I){S&&S.abort(),S=null,P=T,z=(I&&I.startUninterruptedRevalidation)===!0,xy(k.location,k.matches),A=(I&&I.preventScrollReset)===!0,O=(I&&I.enableViewTransition)===!0;let V=l||a,K=I&&I.overrideNavigation,oe=cr(V,R,s),X=(I&&I.flushSync)===!0;if(!oe){let qe=Tt(404,{pathname:R.pathname}),{matches:_t,route:We}=jp(V);rs(),dt(R,{matches:_t,loaderData:{},errors:{[We.id]:qe}},{flushSync:X});return}if(k.initialized&&!$&&Rw(k.location,R)&&!(I&&I.submission&&Ut(I.submission.formMethod))){dt(R,{matches:oe},{flushSync:X});return}S=new AbortController;let Q=Wo(e.history,R,S.signal,I&&I.submission),Y,ae;if(I&&I.pendingError)ae={[fi(oe).route.id]:I.pendingError};else if(I&&I.submission&&Ut(I.submission.formMethod)){let qe=await Gi(Q,R,I.submission,oe,{replace:I.replace,flushSync:X});if(qe.shortCircuited)return;Y=qe.pendingActionData,ae=qe.pendingActionError,K=Ds(R,I.submission),X=!1,Q=new Request(Q.url,{signal:Q.signal})}let{shortCircuited:He,loaderData:te,errors:he}=await Xl(Q,R,oe,K,I&&I.submission,I&&I.fetcherSubmission,I&&I.replace,I&&I.initialHydration===!0,X,Y,ae);He||(S=null,dt(R,Le({matches:oe},Y?{actionData:Y}:{},{loaderData:te,errors:he})))}async function Gi(T,R,I,V,K){K===void 0&&(K={}),ns();let oe=Lw(R,I);Pe({navigation:oe},{flushSync:K.flushSync===!0});let X,Q=nc(V,R);if(!Q.route.action&&!Q.route.lazy)X={type:Oe.error,error:Tt(405,{method:T.method,pathname:R.pathname,routeId:Q.route.id})};else if(X=await Ho("action",T,Q,V,i,o,s,c.v7_relativeSplatPath),T.signal.aborted)return{shortCircuited:!0};if(fr(X)){let Y;return K&&K.replace!=null?Y=K.replace:Y=X.location===k.location.pathname+k.location.search,await Yt(k,X,{submission:I,replace:Y}),{shortCircuited:!0}}if(Jr(X)){let Y=fi(V,Q.route.id);return(K&&K.replace)!==!0&&(P=De.Push),{pendingActionData:{},pendingActionError:{[Y.route.id]:X.error}}}if(dr(X))throw Tt(400,{type:"defer-action"});return{pendingActionData:{[Q.route.id]:X.data}}}async function Xl(T,R,I,V,K,oe,X,Q,Y,ae,He){let te=V||Ds(R,K),he=K||oe||Up(te),qe=l||a,[_t,We]=Op(e.history,k,I,he,R,c.v7_partialHydration&&Q===!0,$,U,W,xe,ue,J,qe,s,ae,He);if(rs(ce=>!(I&&I.some(pe=>pe.route.id===ce))||_t&&_t.some(pe=>pe.route.id===ce)),F=++L,_t.length===0&&We.length===0){let ce=pf();return dt(R,Le({matches:I,loaderData:{},errors:He||null},ae?{actionData:ae}:{},ce?{fetchers:new Map(k.fetchers)}:{}),{flushSync:Y}),{shortCircuited:!0}}if(!z&&(!c.v7_partialHydration||!Q)){We.forEach(pe=>{let ft=k.fetchers.get(pe.key),Zi=Ko(void 0,ft?ft.data:void 0);k.fetchers.set(pe.key,Zi)});let ce=ae||k.actionData;Pe(Le({navigation:te},ce?Object.keys(ce).length===0?{actionData:null}:{actionData:ce}:{},We.length>0?{fetchers:new Map(k.fetchers)}:{}),{flushSync:Y})}We.forEach(ce=>{B.has(ce.key)&&An(ce.key),ce.controller&&B.set(ce.key,ce.controller)});let Or=()=>We.forEach(ce=>An(ce.key));S&&S.signal.addEventListener("abort",Or);let{results:os,loaderResults:Ir,fetcherResults:Sn}=await cf(k.matches,I,_t,We,T);if(T.signal.aborted)return{shortCircuited:!0};S&&S.signal.removeEventListener("abort",Or),We.forEach(ce=>B.delete(ce.key));let or=zp(os);if(or){if(or.idx>=_t.length){let ce=We[or.idx-_t.length].key;J.add(ce)}return await Yt(k,or.result,{replace:X}),{shortCircuited:!0}}let{loaderData:is,errors:Lo}=Np(k,I,_t,Ir,He,We,Sn,$e);$e.forEach((ce,pe)=>{ce.subscribe(ft=>{(ft||ce.done)&&$e.delete(pe)})}),c.v7_partialHydration&&Q&&k.errors&&Object.entries(k.errors).filter(ce=>{let[pe]=ce;return!_t.some(ft=>ft.route.id===pe)}).forEach(ce=>{let[pe,ft]=ce;Lo=Object.assign(Lo||{},{[pe]:ft})});let as=pf(),Lr=hf(F),Qi=as||Lr||We.length>0;return Le({loaderData:is,errors:Lo},Qi?{fetchers:new Map(k.fetchers)}:{})}function Jl(T,R,I,V){if(r)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");B.has(T)&&An(T);let K=(V&&V.unstable_flushSync)===!0,oe=l||a,X=ec(k.location,k.matches,s,c.v7_prependBasename,I,c.v7_relativeSplatPath,R,V==null?void 0:V.relative),Q=cr(oe,X,s);if(!Q){Io(T,R,Tt(404,{pathname:X}),{flushSync:K});return}let{path:Y,submission:ae,error:He}=$p(c.v7_normalizeFormMethod,!0,X,V);if(He){Io(T,R,He,{flushSync:K});return}let te=nc(Q,Y);if(A=(V&&V.preventScrollReset)===!0,ae&&Ut(ae.formMethod)){es(T,R,Y,te,Q,K,ae);return}ue.set(T,{routeId:R,path:Y}),ts(T,R,Y,te,Q,K,ae)}async function es(T,R,I,V,K,oe,X){if(ns(),ue.delete(T),!V.route.action&&!V.route.lazy){let pe=Tt(405,{method:X.formMethod,pathname:I,routeId:R});Io(T,R,pe,{flushSync:oe});return}let Q=k.fetchers.get(T);Pn(T,Dw(X,Q),{flushSync:oe});let Y=new AbortController,ae=Wo(e.history,I,Y.signal,X);B.set(T,Y);let He=L,te=await Ho("action",ae,V,K,i,o,s,c.v7_relativeSplatPath);if(ae.signal.aborted){B.get(T)===Y&&B.delete(T);return}if(c.v7_fetcherPersist&&xe.has(T)){if(fr(te)||Jr(te)){Pn(T,Rn(void 0));return}}else{if(fr(te))if(B.delete(T),F>He){Pn(T,Rn(void 0));return}else return J.add(T),Pn(T,Ko(X)),Yt(k,te,{fetcherSubmission:X});if(Jr(te)){Io(T,R,te.error);return}}if(dr(te))throw Tt(400,{type:"defer-action"});let he=k.navigation.location||k.location,qe=Wo(e.history,he,Y.signal),_t=l||a,We=k.navigation.state!=="idle"?cr(_t,k.navigation.location,s):k.matches;ne(We,"Didn't find any matches after fetcher action");let Or=++L;G.set(T,Or);let os=Ko(X,te.data);k.fetchers.set(T,os);let[Ir,Sn]=Op(e.history,k,We,X,he,!1,$,U,W,xe,ue,J,_t,s,{[V.route.id]:te.data},void 0);Sn.filter(pe=>pe.key!==T).forEach(pe=>{let ft=pe.key,Zi=k.fetchers.get(ft),wy=Ko(void 0,Zi?Zi.data:void 0);k.fetchers.set(ft,wy),B.has(ft)&&An(ft),pe.controller&&B.set(ft,pe.controller)}),Pe({fetchers:new Map(k.fetchers)});let or=()=>Sn.forEach(pe=>An(pe.key));Y.signal.addEventListener("abort",or);let{results:is,loaderResults:Lo,fetcherResults:as}=await cf(k.matches,We,Ir,Sn,qe);if(Y.signal.aborted)return;Y.signal.removeEventListener("abort",or),G.delete(T),B.delete(T),Sn.forEach(pe=>B.delete(pe.key));let Lr=zp(is);if(Lr){if(Lr.idx>=Ir.length){let pe=Sn[Lr.idx-Ir.length].key;J.add(pe)}return Yt(k,Lr.result)}let{loaderData:Qi,errors:ce}=Np(k,k.matches,Ir,Lo,void 0,Sn,as,$e);if(k.fetchers.has(T)){let pe=Rn(te.data);k.fetchers.set(T,pe)}hf(Or),k.navigation.state==="loading"&&Or>F?(ne(P,"Expected pending action"),S&&S.abort(),dt(k.navigation.location,{matches:We,loaderData:Qi,errors:ce,fetchers:new Map(k.fetchers)})):(Pe({errors:ce,loaderData:Mp(k.loaderData,Qi,We,ce),fetchers:new Map(k.fetchers)}),$=!1)}async function ts(T,R,I,V,K,oe,X){let Q=k.fetchers.get(T);Pn(T,Ko(X,Q?Q.data:void 0),{flushSync:oe});let Y=new AbortController,ae=Wo(e.history,I,Y.signal);B.set(T,Y);let He=L,te=await Ho("loader",ae,V,K,i,o,s,c.v7_relativeSplatPath);if(dr(te)&&(te=await R0(te,ae.signal,!0)||te),B.get(T)===Y&&B.delete(T),!ae.signal.aborted){if(xe.has(T)){Pn(T,Rn(void 0));return}if(fr(te))if(F>He){Pn(T,Rn(void 0));return}else{J.add(T),await Yt(k,te);return}if(Jr(te)){Io(T,R,te.error);return}ne(!dr(te),"Unhandled fetcher deferred data"),Pn(T,Rn(te.data))}}async function Yt(T,R,I){let{submission:V,fetcherSubmission:K,replace:oe}=I===void 0?{}:I;R.revalidate&&($=!0);let X=Ri(T.location,R.location,{_isRedirect:!0});if(ne(X,"Expected a location on the redirect navigation"),n){let he=!1;if(R.reloadDocument)he=!0;else if(P0.test(R.location)){const qe=e.history.createURL(R.location);he=qe.origin!==t.location.origin||Cr(qe.pathname,s)==null}if(he){oe?t.location.replace(R.location):t.location.assign(R.location);return}}S=null;let Q=oe===!0?De.Replace:De.Push,{formMethod:Y,formAction:ae,formEncType:He}=T.navigation;!V&&!K&&Y&&ae&&He&&(V=Up(T.navigation));let te=V||K;if(Ew.has(R.status)&&te&&Ut(te.formMethod))await xt(Q,X,{submission:Le({},te,{formAction:R.location}),preventScrollReset:A});else{let he=Ds(X,V);await xt(Q,X,{overrideNavigation:he,fetcherSubmission:K,preventScrollReset:A})}}async function cf(T,R,I,V,K){let oe=await Promise.all([...I.map(Y=>Ho("loader",K,Y,R,i,o,s,c.v7_relativeSplatPath)),...V.map(Y=>Y.matches&&Y.match&&Y.controller?Ho("loader",Wo(e.history,Y.path,Y.controller.signal),Y.match,Y.matches,i,o,s,c.v7_relativeSplatPath):{type:Oe.error,error:Tt(404,{pathname:Y.path})})]),X=oe.slice(0,I.length),Q=oe.slice(I.length);return await Promise.all([Fp(T,I,X,X.map(()=>K.signal),!1,k.loaderData),Fp(T,V.map(Y=>Y.match),Q,V.map(Y=>Y.controller?Y.controller.signal:null),!0)]),{results:oe,loaderResults:X,fetcherResults:Q}}function ns(){$=!0,U.push(...rs()),ue.forEach((T,R)=>{B.has(R)&&(W.push(R),An(R))})}function Pn(T,R,I){I===void 0&&(I={}),k.fetchers.set(T,R),Pe({fetchers:new Map(k.fetchers)},{flushSync:(I&&I.flushSync)===!0})}function Io(T,R,I,V){V===void 0&&(V={});let K=fi(k.matches,R);qi(T),Pe({errors:{[K.route.id]:I},fetchers:new Map(k.fetchers)},{flushSync:(V&&V.flushSync)===!0})}function df(T){return c.v7_fetcherPersist&&(Ve.set(T,(Ve.get(T)||0)+1),xe.has(T)&&xe.delete(T)),k.fetchers.get(T)||kw}function qi(T){let R=k.fetchers.get(T);B.has(T)&&!(R&&R.state==="loading"&&G.has(T))&&An(T),ue.delete(T),G.delete(T),J.delete(T),xe.delete(T),k.fetchers.delete(T)}function vy(T){if(c.v7_fetcherPersist){let R=(Ve.get(T)||0)-1;R<=0?(Ve.delete(T),xe.add(T)):Ve.set(T,R)}else qi(T);Pe({fetchers:new Map(k.fetchers)})}function An(T){let R=B.get(T);ne(R,"Expected fetch controller: "+T),R.abort(),B.delete(T)}function ff(T){for(let R of T){let I=df(R),V=Rn(I.data);k.fetchers.set(R,V)}}function pf(){let T=[],R=!1;for(let I of J){let V=k.fetchers.get(I);ne(V,"Expected fetcher: "+I),V.state==="loading"&&(J.delete(I),T.push(I),R=!0)}return ff(T),R}function hf(T){let R=[];for(let[I,V]of G)if(V0}function gy(T,R){let I=k.blockers.get(T)||Bo;return _e.get(T)!==R&&_e.set(T,R),I}function mf(T){k.blockers.delete(T),_e.delete(T)}function Yi(T,R){let I=k.blockers.get(T)||Bo;ne(I.state==="unblocked"&&R.state==="blocked"||I.state==="blocked"&&R.state==="blocked"||I.state==="blocked"&&R.state==="proceeding"||I.state==="blocked"&&R.state==="unblocked"||I.state==="proceeding"&&R.state==="unblocked","Invalid blocker state transition: "+I.state+" -> "+R.state);let V=new Map(k.blockers);V.set(T,R),Pe({blockers:V})}function vf(T){let{currentLocation:R,nextLocation:I,historyAction:V}=T;if(_e.size===0)return;_e.size>1&&yo(!1,"A router only supports one blocker at a time");let K=Array.from(_e.entries()),[oe,X]=K[K.length-1],Q=k.blockers.get(oe);if(!(Q&&Q.state==="proceeding")&&X({currentLocation:R,nextLocation:I,historyAction:V}))return oe}function rs(T){let R=[];return $e.forEach((I,V)=>{(!T||T(V))&&(I.cancel(),R.push(V),$e.delete(V))}),R}function yy(T,R,I){if(f=T,y=R,h=I||null,!g&&k.navigation===Ls){g=!0;let V=yf(k.location,k.matches);V!=null&&Pe({restoreScrollPosition:V})}return()=>{f=null,y=null,h=null}}function gf(T,R){return h&&h(T,R.map(V=>_0(V,k.loaderData)))||T.key}function xy(T,R){if(f&&y){let I=gf(T,R);f[I]=y()}}function yf(T,R){if(f){let I=gf(T,R),V=f[I];if(typeof V=="number")return V}return null}function _y(T){i={},l=Ju(T,o,void 0,i)}return C={get basename(){return s},get future(){return c},get state(){return k},get routes(){return a},get window(){return t},initialize:we,subscribe:Mt,enableScrollRestoration:yy,navigate:Ki,fetch:Jl,revalidate:Zl,createHref:T=>e.history.createHref(T),encodeLocation:T=>e.history.encodeLocation(T),getFetcher:df,deleteFetcher:vy,dispose:Ce,getBlocker:gy,deleteBlocker:mf,_internalFetchControllers:B,_internalActiveDeferreds:$e,_internalSetRoutes:_y},C}function Pw(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function ec(e,t,n,r,o,i,a,l){let s,c;if(a){s=[];for(let u of t)if(s.push(u),u.route.id===a){c=u;break}}else s=t,c=t[t.length-1];let d=Id(o||".",Od(s,i),Cr(e.pathname,n)||e.pathname,l==="path");return o==null&&(d.search=e.search,d.hash=e.hash),(o==null||o===""||o===".")&&c&&c.route.index&&!Dd(d.search)&&(d.search=d.search?d.search.replace(/^\?/,"?index&"):"?index"),r&&n!=="/"&&(d.pathname=d.pathname==="/"?n:fn([n,d.pathname])),wr(d)}function $p(e,t,n,r){if(!r||!Pw(r))return{path:n};if(r.formMethod&&!Iw(r.formMethod))return{path:n,error:Tt(405,{method:r.formMethod})};let o=()=>({path:n,error:Tt(400,{type:"invalid-body"})}),i=r.formMethod||"get",a=e?i.toUpperCase():i.toLowerCase(),l=T0(n);if(r.body!==void 0){if(r.formEncType==="text/plain"){if(!Ut(a))return o();let f=typeof r.body=="string"?r.body:r.body instanceof FormData||r.body instanceof URLSearchParams?Array.from(r.body.entries()).reduce((h,y)=>{let[g,w]=y;return""+h+g+"="+w+` -`},""):String(r.body);return{path:n,submission:{formMethod:a,formAction:l,formEncType:r.formEncType,formData:void 0,json:void 0,text:f}}}else if(r.formEncType==="application/json"){if(!Ut(a))return o();try{let f=typeof r.body=="string"?JSON.parse(r.body):r.body;return{path:n,submission:{formMethod:a,formAction:l,formEncType:r.formEncType,formData:void 0,json:f,text:void 0}}}catch{return o()}}}ne(typeof FormData=="function","FormData is not available in this environment");let s,c;if(r.formData)s=tc(r.formData),c=r.formData;else if(r.body instanceof FormData)s=tc(r.body),c=r.body;else if(r.body instanceof URLSearchParams)s=r.body,c=Dp(s);else if(r.body==null)s=new URLSearchParams,c=new FormData;else try{s=new URLSearchParams(r.body),c=Dp(s)}catch{return o()}let d={formMethod:a,formAction:l,formEncType:r&&r.formEncType||"application/x-www-form-urlencoded",formData:c,json:void 0,text:void 0};if(Ut(d.formMethod))return{path:n,submission:d};let u=wn(n);return t&&u.search&&Dd(u.search)&&s.append("index",""),u.search="?"+s,{path:wr(u),submission:d}}function Aw(e,t){let n=e;if(t){let r=e.findIndex(o=>o.route.id===t);r>=0&&(n=e.slice(0,r))}return n}function Op(e,t,n,r,o,i,a,l,s,c,d,u,f,h,y,g){let w=g?Object.values(g)[0]:y?Object.values(y)[0]:void 0,m=e.createURL(t.location),v=e.createURL(o),_=g?Object.keys(g)[0]:void 0,C=Aw(n,_).filter((P,A)=>{let{route:S}=P;if(S.lazy)return!0;if(S.loader==null)return!1;if(i)return S.loader.hydrate?!0:t.loaderData[S.id]===void 0&&(!t.errors||t.errors[S.id]===void 0);if(Sw(t.loaderData,t.matches[A],P)||l.some(N=>N===P.route.id))return!0;let O=t.matches[A],j=P;return Ip(P,Le({currentUrl:m,currentParams:O.params,nextUrl:v,nextParams:j.params},r,{actionResult:w,defaultShouldRevalidate:a||m.pathname+m.search===v.pathname+v.search||m.search!==v.search||S0(O,j)}))}),k=[];return d.forEach((P,A)=>{if(i||!n.some(z=>z.route.id===P.routeId)||c.has(A))return;let S=cr(f,P.path,h);if(!S){k.push({key:A,routeId:P.routeId,path:P.path,matches:null,match:null,controller:null});return}let O=t.fetchers.get(A),j=nc(S,P.path),N=!1;u.has(A)?N=!1:s.includes(A)?N=!0:O&&O.state!=="idle"&&O.data===void 0?N=a:N=Ip(j,Le({currentUrl:m,currentParams:t.matches[t.matches.length-1].params,nextUrl:v,nextParams:n[n.length-1].params},r,{actionResult:w,defaultShouldRevalidate:a})),N&&k.push({key:A,routeId:P.routeId,path:P.path,matches:S,match:j,controller:new AbortController})}),[C,k]}function Sw(e,t,n){let r=!t||n.route.id!==t.route.id,o=e[n.route.id]===void 0;return r||o}function S0(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function Ip(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n=="boolean")return n}return t.defaultShouldRevalidate}async function Lp(e,t,n){if(!e.lazy)return;let r=await e.lazy();if(!e.lazy)return;let o=n[e.id];ne(o,"No route found in manifest");let i={};for(let a in r){let s=o[a]!==void 0&&a!=="hasErrorBoundary";yo(!s,'Route "'+o.id+'" has a static property "'+a+'" defined but its lazy function is also returning a value for this property. '+('The lazy route property "'+a+'" will be ignored.')),!s&&!J_.has(a)&&(i[a]=r[a])}Object.assign(o,i),Object.assign(o,Le({},t(o),{lazy:void 0}))}async function Ho(e,t,n,r,o,i,a,l,s){s===void 0&&(s={});let c,d,u,f=g=>{let w,m=new Promise((v,_)=>w=_);return u=()=>w(),t.signal.addEventListener("abort",u),Promise.race([g({request:t,params:n.params,context:s.requestContext}),m])};try{let g=n.route[e];if(n.route.lazy)if(g){let w,m=await Promise.all([f(g).catch(v=>{w=v}),Lp(n.route,i,o)]);if(w)throw w;d=m[0]}else if(await Lp(n.route,i,o),g=n.route[e],g)d=await f(g);else if(e==="action"){let w=new URL(t.url),m=w.pathname+w.search;throw Tt(405,{method:t.method,pathname:m,routeId:n.route.id})}else return{type:Oe.data,data:void 0};else if(g)d=await f(g);else{let w=new URL(t.url),m=w.pathname+w.search;throw Tt(404,{pathname:m})}ne(d!==void 0,"You defined "+(e==="action"?"an action":"a loader")+" for route "+('"'+n.route.id+"\" but didn't return anything from your `"+e+"` ")+"function. Please return a value or `null`.")}catch(g){c=Oe.error,d=g}finally{u&&t.signal.removeEventListener("abort",u)}if(Ow(d)){let g=d.status;if(ww.has(g)){let m=d.headers.get("Location");if(ne(m,"Redirects returned/thrown from loaders/actions must have a Location header"),!P0.test(m))m=ec(new URL(t.url),r.slice(0,r.indexOf(n)+1),a,!0,m,l);else if(!s.isStaticRequest){let v=new URL(t.url),_=m.startsWith("//")?new URL(v.protocol+m):new URL(m),E=Cr(_.pathname,a)!=null;_.origin===v.origin&&E&&(m=_.pathname+_.search+_.hash)}if(s.isStaticRequest)throw d.headers.set("Location",m),d;return{type:Oe.redirect,status:g,location:m,revalidate:d.headers.get("X-Remix-Revalidate")!==null,reloadDocument:d.headers.get("X-Remix-Reload-Document")!==null}}if(s.isRouteRequest)throw{type:c===Oe.error?Oe.error:Oe.data,response:d};let w;try{let m=d.headers.get("Content-Type");m&&/\bapplication\/json\b/.test(m)?d.body==null?w=null:w=await d.json():w=await d.text()}catch(m){return{type:Oe.error,error:m}}return c===Oe.error?{type:c,error:new Ld(g,d.statusText,w),headers:d.headers}:{type:Oe.data,data:w,statusCode:d.status,headers:d.headers}}if(c===Oe.error)return{type:c,error:d};if($w(d)){var h,y;return{type:Oe.deferred,deferredData:d,statusCode:(h=d.init)==null?void 0:h.status,headers:((y=d.init)==null?void 0:y.headers)&&new Headers(d.init.headers)}}return{type:Oe.data,data:d}}function Wo(e,t,n,r){let o=e.createURL(T0(t)).toString(),i={signal:n};if(r&&Ut(r.formMethod)){let{formMethod:a,formEncType:l}=r;i.method=a.toUpperCase(),l==="application/json"?(i.headers=new Headers({"Content-Type":l}),i.body=JSON.stringify(r.json)):l==="text/plain"?i.body=r.text:l==="application/x-www-form-urlencoded"&&r.formData?i.body=tc(r.formData):i.body=r.formData}return new Request(o,i)}function tc(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r=="string"?r:r.name);return t}function Dp(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function Tw(e,t,n,r,o){let i={},a=null,l,s=!1,c={};return n.forEach((d,u)=>{let f=t[u].route.id;if(ne(!fr(d),"Cannot handle redirect results in processLoaderData"),Jr(d)){let h=fi(e,f),y=d.error;r&&(y=Object.values(r)[0],r=void 0),a=a||{},a[h.route.id]==null&&(a[h.route.id]=y),i[f]=void 0,s||(s=!0,l=b0(d.error)?d.error.status:500),d.headers&&(c[f]=d.headers)}else dr(d)?(o.set(f,d.deferredData),i[f]=d.deferredData.data):i[f]=d.data,d.statusCode!=null&&d.statusCode!==200&&!s&&(l=d.statusCode),d.headers&&(c[f]=d.headers)}),r&&(a=r,i[Object.keys(r)[0]]=void 0),{loaderData:i,errors:a,statusCode:l||200,loaderHeaders:c}}function Np(e,t,n,r,o,i,a,l){let{loaderData:s,errors:c}=Tw(t,n,r,o,l);for(let d=0;dr.route.id===t)+1):[...e]).reverse().find(r=>r.route.hasErrorBoundary===!0)||e[0]}function jp(e){let t=e.length===1?e[0]:e.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function Tt(e,t){let{pathname:n,routeId:r,method:o,type:i}=t===void 0?{}:t,a="Unknown Server Error",l="Unknown @remix-run/router error";return e===400?(a="Bad Request",o&&n&&r?l="You made a "+o+' request to "'+n+'" but '+('did not provide a `loader` for route "'+r+'", ')+"so there is no way to handle the request.":i==="defer-action"?l="defer() is not supported in actions":i==="invalid-body"&&(l="Unable to encode submission body")):e===403?(a="Forbidden",l='Route "'+r+'" does not match URL "'+n+'"'):e===404?(a="Not Found",l='No route matches URL "'+n+'"'):e===405&&(a="Method Not Allowed",o&&n&&r?l="You made a "+o.toUpperCase()+' request to "'+n+'" but '+('did not provide an `action` for route "'+r+'", ')+"so there is no way to handle the request.":o&&(l='Invalid request method "'+o.toUpperCase()+'"')),new Ld(e||500,a,new Error(l),!0)}function zp(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(fr(n))return{result:n,idx:t}}}function T0(e){let t=typeof e=="string"?wn(e):e;return wr(Le({},t,{hash:""}))}function Rw(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function dr(e){return e.type===Oe.deferred}function Jr(e){return e.type===Oe.error}function fr(e){return(e&&e.type)===Oe.redirect}function $w(e){let t=e;return t&&typeof t=="object"&&typeof t.data=="object"&&typeof t.subscribe=="function"&&typeof t.cancel=="function"&&typeof t.resolveData=="function"}function Ow(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function Iw(e){return _w.has(e.toLowerCase())}function Ut(e){return yw.has(e.toLowerCase())}async function Fp(e,t,n,r,o,i){for(let a=0;au.route.id===s.route.id),d=c!=null&&!S0(c,s)&&(i&&i[s.route.id])!==void 0;if(dr(l)&&(o||d)){let u=r[a];ne(u,"Expected an AbortSignal for revalidating fetcher deferred result"),await R0(l,u,o).then(f=>{f&&(n[a]=f||n[a])})}}}async function R0(e,t,n){if(n===void 0&&(n=!1),!await e.deferredData.resolveData(t)){if(n)try{return{type:Oe.data,data:e.deferredData.unwrappedData}}catch(o){return{type:Oe.error,error:o}}return{type:Oe.data,data:e.deferredData.data}}}function Dd(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function nc(e,t){let n=typeof t=="string"?wn(t).search:t.search;if(e[e.length-1].route.index&&Dd(n||""))return e[e.length-1];let r=k0(e);return r[r.length-1]}function Up(e){let{formMethod:t,formAction:n,formEncType:r,text:o,formData:i,json:a}=e;if(!(!t||!n||!r)){if(o!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:o};if(i!=null)return{formMethod:t,formAction:n,formEncType:r,formData:i,json:void 0,text:void 0};if(a!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:a,text:void 0}}}function Ds(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function Lw(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function Ko(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function Dw(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function Rn(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function Nw(e,t){try{let n=e.sessionStorage.getItem(A0);if(n){let r=JSON.parse(n);for(let[o,i]of Object.entries(r||{}))i&&Array.isArray(i)&&t.set(o,new Set(i||[]))}}catch{}}function Mw(e,t){if(t.size>0){let n={};for(let[r,o]of t)n[r]=[...o];try{e.sessionStorage.setItem(A0,JSON.stringify(n))}catch(r){yo(!1,"Failed to save applied view transitions in sessionStorage ("+r+").")}}}/** + */function Le(){return Le=Object.assign?Object.assign.bind():function(e){for(var t=1;t"u")throw new Error(t)}function yo(e,t){if(!e){typeof console<"u"&&console.warn(t);try{throw new Error(t)}catch{}}}function Z2(){return Math.random().toString(36).substr(2,8)}function Tp(e,t){return{usr:e.state,key:e.key,idx:t}}function Ri(e,t,n,r){return n===void 0&&(n=null),Le({pathname:typeof e=="string"?e:e.pathname,search:"",hash:""},typeof t=="string"?wn(t):t,{state:n,key:t&&t.key||r||Z2()})}function wr(e){let{pathname:t="/",search:n="",hash:r=""}=e;return n&&n!=="?"&&(t+=n.charAt(0)==="?"?n:"?"+n),r&&r!=="#"&&(t+=r.charAt(0)==="#"?r:"#"+r),t}function wn(e){let t={};if(e){let n=e.indexOf("#");n>=0&&(t.hash=e.substr(n),e=e.substr(0,n));let r=e.indexOf("?");r>=0&&(t.search=e.substr(r),e=e.substr(0,r)),e&&(t.pathname=e)}return t}function X2(e,t,n,r){r===void 0&&(r={});let{window:o=document.defaultView,v5Compat:i=!1}=r,a=o.history,l=De.Pop,s=null,c=d();c==null&&(c=0,a.replaceState(Le({},a.state,{idx:c}),""));function d(){return(a.state||{idx:null}).idx}function u(){l=De.Pop;let w=d(),m=w==null?null:w-c;c=w,s&&s({action:l,location:g.location,delta:m})}function f(w,m){l=De.Push;let v=Ri(g.location,w,m);n&&n(v,w),c=d()+1;let _=Tp(v,c),E=g.createHref(v);try{a.pushState(_,"",E)}catch(C){if(C instanceof DOMException&&C.name==="DataCloneError")throw C;o.location.assign(E)}i&&s&&s({action:l,location:g.location,delta:1})}function h(w,m){l=De.Replace;let v=Ri(g.location,w,m);n&&n(v,w),c=d();let _=Tp(v,c),E=g.createHref(v);a.replaceState(_,"",E),i&&s&&s({action:l,location:g.location,delta:0})}function y(w){let m=o.location.origin!=="null"?o.location.origin:o.location.href,v=typeof w=="string"?w:wr(w);return v=v.replace(/ $/,"%20"),ne(m,"No window.location.(origin|href) available to create URL for href: "+v),new URL(v,m)}let g={get action(){return l},get location(){return e(o,a)},listen(w){if(s)throw new Error("A history only accepts one active listener");return o.addEventListener(Sp,u),s=w,()=>{o.removeEventListener(Sp,u),s=null}},createHref(w){return t(o,w)},createURL:y,encodeLocation(w){let m=y(w);return{pathname:m.pathname,search:m.search,hash:m.hash}},push:f,replace:h,go(w){return a.go(w)}};return g}var Oe;(function(e){e.data="data",e.deferred="deferred",e.redirect="redirect",e.error="error"})(Oe||(Oe={}));const J2=new Set(["lazy","caseSensitive","path","id","index","children"]);function e_(e){return e.index===!0}function Ju(e,t,n,r){return n===void 0&&(n=[]),r===void 0&&(r={}),e.map((o,i)=>{let a=[...n,i],l=typeof o.id=="string"?o.id:a.join("-");if(ne(o.index!==!0||!o.children,"Cannot specify children on an index route"),ne(!r[l],'Found a route id collision on id "'+l+`". Route id's must be globally unique within Data Router usages`),e_(o)){let s=Le({},o,t(o),{id:l});return r[l]=s,s}else{let s=Le({},o,t(o),{id:l,children:void 0});return r[l]=s,o.children&&(s.children=Ju(o.children,t,a,r)),s}})}function cr(e,t,n){n===void 0&&(n="/");let r=typeof t=="string"?wn(t):t,o=Cr(r.pathname||"/",n);if(o==null)return null;let i=w0(e);t_(i);let a=null;for(let l=0;a==null&&l{let s={relativePath:l===void 0?i.path||"":l,caseSensitive:i.caseSensitive===!0,childrenIndex:a,route:i};s.relativePath.startsWith("/")&&(ne(s.relativePath.startsWith(r),'Absolute route path "'+s.relativePath+'" nested under path '+('"'+r+'" is not valid. An absolute child route path ')+"must start with the combined path of all its parent routes."),s.relativePath=s.relativePath.slice(r.length));let c=fn([r,s.relativePath]),d=n.concat(s);i.children&&i.children.length>0&&(ne(i.index!==!0,"Index routes must not have child routes. Please remove "+('all child routes from route path "'+c+'".')),w0(i.children,t,d,c)),!(i.path==null&&!i.index)&&t.push({path:c,score:s_(c,i.index),routesMeta:d})};return e.forEach((i,a)=>{var l;if(i.path===""||!((l=i.path)!=null&&l.includes("?")))o(i,a);else for(let s of E0(i.path))o(i,a,s)}),t}function E0(e){let t=e.split("/");if(t.length===0)return[];let[n,...r]=t,o=n.endsWith("?"),i=n.replace(/\?$/,"");if(r.length===0)return o?[i,""]:[i];let a=E0(r.join("/")),l=[];return l.push(...a.map(s=>s===""?i:[i,s].join("/"))),o&&l.push(...a),l.map(s=>e.startsWith("/")&&s===""?"/":s)}function t_(e){e.sort((t,n)=>t.score!==n.score?n.score-t.score:u_(t.routesMeta.map(r=>r.childrenIndex),n.routesMeta.map(r=>r.childrenIndex)))}const n_=/^:[\w-]+$/,r_=3,o_=2,i_=1,a_=10,l_=-2,Rp=e=>e==="*";function s_(e,t){let n=e.split("/"),r=n.length;return n.some(Rp)&&(r+=l_),t&&(r+=o_),n.filter(o=>!Rp(o)).reduce((o,i)=>o+(n_.test(i)?r_:i===""?i_:a_),r)}function u_(e,t){return e.length===t.length&&e.slice(0,-1).every((r,o)=>r===t[o])?e[e.length-1]-t[t.length-1]:0}function c_(e,t){let{routesMeta:n}=e,r={},o="/",i=[];for(let a=0;a{let{paramName:f,isOptional:h}=d;if(f==="*"){let g=l[u]||"";a=i.slice(0,i.length-g.length).replace(/(.)\/+$/,"$1")}const y=l[u];return h&&!y?c[f]=void 0:c[f]=(y||"").replace(/%2F/g,"/"),c},{}),pathname:i,pathnameBase:a,pattern:e}}function d_(e,t,n){t===void 0&&(t=!1),n===void 0&&(n=!0),yo(e==="*"||!e.endsWith("*")||e.endsWith("/*"),'Route path "'+e+'" will be treated as if it were '+('"'+e.replace(/\*$/,"/*")+'" because the `*` character must ')+"always follow a `/` in the pattern. To get rid of this warning, "+('please change the route path to "'+e.replace(/\*$/,"/*")+'".'));let r=[],o="^"+e.replace(/\/*\*?$/,"").replace(/^\/*/,"/").replace(/[\\.*+^${}|()[\]]/g,"\\$&").replace(/\/:([\w-]+)(\?)?/g,(a,l,s)=>(r.push({paramName:l,isOptional:s!=null}),s?"/?([^\\/]+)?":"/([^\\/]+)"));return e.endsWith("*")?(r.push({paramName:"*"}),o+=e==="*"||e==="/*"?"(.*)$":"(?:\\/(.+)|\\/*)$"):n?o+="\\/*$":e!==""&&e!=="/"&&(o+="(?:(?=\\/|$))"),[new RegExp(o,t?void 0:"i"),r]}function f_(e){try{return e.split("/").map(t=>decodeURIComponent(t).replace(/\//g,"%2F")).join("/")}catch(t){return yo(!1,'The URL path "'+e+'" could not be decoded because it is is a malformed URL segment. This is probably due to a bad percent '+("encoding ("+t+").")),e}}function Cr(e,t){if(t==="/")return e;if(!e.toLowerCase().startsWith(t.toLowerCase()))return null;let n=t.endsWith("/")?t.length-1:t.length,r=e.charAt(n);return r&&r!=="/"?null:e.slice(n)||"/"}function p_(e,t){t===void 0&&(t="/");let{pathname:n,search:r="",hash:o=""}=typeof e=="string"?wn(e):e;return{pathname:n?n.startsWith("/")?n:h_(n,t):t,search:v_(r),hash:g_(o)}}function h_(e,t){let n=t.replace(/\/+$/,"").split("/");return e.split("/").forEach(o=>{o===".."?n.length>1&&n.pop():o!=="."&&n.push(o)}),n.length>1?n.join("/"):"/"}function Is(e,t,n,r){return"Cannot include a '"+e+"' character in a manually specified "+("`to."+t+"` field ["+JSON.stringify(r)+"]. Please separate it out to the ")+("`to."+n+"` field. Alternatively you may provide the full path as ")+'a string in and the router will parse it for you.'}function k0(e){return e.filter((t,n)=>n===0||t.route.path&&t.route.path.length>0)}function Od(e,t){let n=k0(e);return t?n.map((r,o)=>o===e.length-1?r.pathname:r.pathnameBase):n.map(r=>r.pathnameBase)}function Id(e,t,n,r){r===void 0&&(r=!1);let o;typeof e=="string"?o=wn(e):(o=Le({},e),ne(!o.pathname||!o.pathname.includes("?"),Is("?","pathname","search",o)),ne(!o.pathname||!o.pathname.includes("#"),Is("#","pathname","hash",o)),ne(!o.search||!o.search.includes("#"),Is("#","search","hash",o)));let i=e===""||o.pathname==="",a=i?"/":o.pathname,l;if(a==null)l=n;else{let u=t.length-1;if(!r&&a.startsWith("..")){let f=a.split("/");for(;f[0]==="..";)f.shift(),u-=1;o.pathname=f.join("/")}l=u>=0?t[u]:"/"}let s=p_(o,l),c=a&&a!=="/"&&a.endsWith("/"),d=(i||a===".")&&n.endsWith("/");return!s.pathname.endsWith("/")&&(c||d)&&(s.pathname+="/"),s}const fn=e=>e.join("/").replace(/\/\/+/g,"/"),m_=e=>e.replace(/\/+$/,"").replace(/^\/*/,"/"),v_=e=>!e||e==="?"?"":e.startsWith("?")?e:"?"+e,g_=e=>!e||e==="#"?"":e.startsWith("#")?e:"#"+e;class Ld{constructor(t,n,r,o){o===void 0&&(o=!1),this.status=t,this.statusText=n||"",this.internal=o,r instanceof Error?(this.data=r.toString(),this.error=r):this.data=r}}function b0(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.internal=="boolean"&&"data"in e}const C0=["post","put","patch","delete"],y_=new Set(C0),x_=["get",...C0],__=new Set(x_),w_=new Set([301,302,303,307,308]),E_=new Set([307,308]),Ls={state:"idle",location:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},k_={state:"idle",data:void 0,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0},Bo={state:"unblocked",proceed:void 0,reset:void 0,location:void 0},P0=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,b_=e=>({hasErrorBoundary:!!e.hasErrorBoundary}),A0="remix-router-transitions";function C_(e){const t=e.window?e.window:typeof window<"u"?window:void 0,n=typeof t<"u"&&typeof t.document<"u"&&typeof t.document.createElement<"u",r=!n;ne(e.routes.length>0,"You must provide a non-empty routes array to createRouter");let o;if(e.mapRouteProperties)o=e.mapRouteProperties;else if(e.detectErrorBoundary){let T=e.detectErrorBoundary;o=R=>({hasErrorBoundary:T(R)})}else o=b_;let i={},a=Ju(e.routes,o,void 0,i),l,s=e.basename||"/",c=Le({v7_fetcherPersist:!1,v7_normalizeFormMethod:!1,v7_partialHydration:!1,v7_prependBasename:!1,v7_relativeSplatPath:!1},e.future),d=null,u=new Set,f=null,h=null,y=null,g=e.hydrationData!=null,w=cr(a,e.history.location,s),m=null;if(w==null){let T=Tt(404,{pathname:e.history.location.pathname}),{matches:R,route:I}=jp(a);w=R,m={[I.id]:T}}let v,_=w.some(T=>T.route.lazy),E=w.some(T=>T.route.loader);if(_)v=!1;else if(!E)v=!0;else if(c.v7_partialHydration){let T=e.hydrationData?e.hydrationData.loaderData:null,R=e.hydrationData?e.hydrationData.errors:null,I=V=>V.route.loader?V.route.loader.hydrate===!0?!1:T&&T[V.route.id]!==void 0||R&&R[V.route.id]!==void 0:!0;if(R){let V=w.findIndex(K=>R[K.route.id]!==void 0);v=w.slice(0,V+1).every(I)}else v=w.every(I)}else v=e.hydrationData!=null;let C,k={historyAction:e.history.action,location:e.history.location,matches:w,initialized:v,navigation:Ls,restoreScrollPosition:e.hydrationData!=null?!1:null,preventScrollReset:!1,revalidation:"idle",loaderData:e.hydrationData&&e.hydrationData.loaderData||{},actionData:e.hydrationData&&e.hydrationData.actionData||null,errors:e.hydrationData&&e.hydrationData.errors||m,fetchers:new Map,blockers:new Map},P=De.Pop,A=!1,S,O=!1,j=new Map,N=null,z=!1,$=!1,U=[],W=[],B=new Map,L=0,F=-1,G=new Map,J=new Set,ue=new Map,Ve=new Map,xe=new Set,$e=new Map,_e=new Map,Be=!1;function we(){if(d=e.history.listen(T=>{let{action:R,location:I,delta:V}=T;if(Be){Be=!1;return}yo(_e.size===0||V!=null,"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.");let K=vf({currentLocation:k.location,nextLocation:I,historyAction:R});if(K&&V!=null){Be=!0,e.history.go(V*-1),Yi(K,{state:"blocked",location:I,proceed(){Yi(K,{state:"proceeding",proceed:void 0,reset:void 0,location:I}),e.history.go(V)},reset(){let oe=new Map(k.blockers);oe.set(K,Bo),Pe({blockers:oe})}});return}return xt(R,I)}),n){N_(t,j);let T=()=>M_(t,j);t.addEventListener("pagehide",T),N=()=>t.removeEventListener("pagehide",T)}return k.initialized||xt(De.Pop,k.location,{initialHydration:!0}),C}function Ce(){d&&d(),N&&N(),u.clear(),S&&S.abort(),k.fetchers.forEach((T,R)=>qi(R)),k.blockers.forEach((T,R)=>mf(R))}function Mt(T){return u.add(T),()=>u.delete(T)}function Pe(T,R){R===void 0&&(R={}),k=Le({},k,T);let I=[],V=[];c.v7_fetcherPersist&&k.fetchers.forEach((K,oe)=>{K.state==="idle"&&(xe.has(oe)?V.push(oe):I.push(oe))}),[...u].forEach(K=>K(k,{deletedFetchers:V,unstable_viewTransitionOpts:R.viewTransitionOpts,unstable_flushSync:R.flushSync===!0})),c.v7_fetcherPersist&&(I.forEach(K=>k.fetchers.delete(K)),V.forEach(K=>qi(K)))}function dt(T,R,I){var V,K;let{flushSync:oe}=I===void 0?{}:I,X=k.actionData!=null&&k.navigation.formMethod!=null&&Ut(k.navigation.formMethod)&&k.navigation.state==="loading"&&((V=T.state)==null?void 0:V._isRedirect)!==!0,Q;R.actionData?Object.keys(R.actionData).length>0?Q=R.actionData:Q=null:X?Q=k.actionData:Q=null;let Y=R.loaderData?Mp(k.loaderData,R.loaderData,R.matches||[],R.errors):k.loaderData,ae=k.blockers;ae.size>0&&(ae=new Map(ae),ae.forEach((he,qe)=>ae.set(qe,Bo)));let He=A===!0||k.navigation.formMethod!=null&&Ut(k.navigation.formMethod)&&((K=T.state)==null?void 0:K._isRedirect)!==!0;l&&(a=l,l=void 0),z||P===De.Pop||(P===De.Push?e.history.push(T,T.state):P===De.Replace&&e.history.replace(T,T.state));let te;if(P===De.Pop){let he=j.get(k.location.pathname);he&&he.has(T.pathname)?te={currentLocation:k.location,nextLocation:T}:j.has(T.pathname)&&(te={currentLocation:T,nextLocation:k.location})}else if(O){let he=j.get(k.location.pathname);he?he.add(T.pathname):(he=new Set([T.pathname]),j.set(k.location.pathname,he)),te={currentLocation:k.location,nextLocation:T}}Pe(Le({},R,{actionData:Q,loaderData:Y,historyAction:P,location:T,initialized:!0,navigation:Ls,revalidation:"idle",restoreScrollPosition:yf(T,R.matches||k.matches),preventScrollReset:He,blockers:ae}),{viewTransitionOpts:te,flushSync:oe===!0}),P=De.Pop,A=!1,O=!1,z=!1,$=!1,U=[],W=[]}async function Ki(T,R){if(typeof T=="number"){e.history.go(T);return}let I=ec(k.location,k.matches,s,c.v7_prependBasename,T,c.v7_relativeSplatPath,R==null?void 0:R.fromRouteId,R==null?void 0:R.relative),{path:V,submission:K,error:oe}=$p(c.v7_normalizeFormMethod,!1,I,R),X=k.location,Q=Ri(k.location,V,R&&R.state);Q=Le({},Q,e.history.encodeLocation(Q));let Y=R&&R.replace!=null?R.replace:void 0,ae=De.Push;Y===!0?ae=De.Replace:Y===!1||K!=null&&Ut(K.formMethod)&&K.formAction===k.location.pathname+k.location.search&&(ae=De.Replace);let He=R&&"preventScrollReset"in R?R.preventScrollReset===!0:void 0,te=(R&&R.unstable_flushSync)===!0,he=vf({currentLocation:X,nextLocation:Q,historyAction:ae});if(he){Yi(he,{state:"blocked",location:Q,proceed(){Yi(he,{state:"proceeding",proceed:void 0,reset:void 0,location:Q}),Ki(T,R)},reset(){let qe=new Map(k.blockers);qe.set(he,Bo),Pe({blockers:qe})}});return}return await xt(ae,Q,{submission:K,pendingError:oe,preventScrollReset:He,replace:R&&R.replace,enableViewTransition:R&&R.unstable_viewTransition,flushSync:te})}function Zl(){if(ns(),Pe({revalidation:"loading"}),k.navigation.state!=="submitting"){if(k.navigation.state==="idle"){xt(k.historyAction,k.location,{startUninterruptedRevalidation:!0});return}xt(P||k.historyAction,k.navigation.location,{overrideNavigation:k.navigation})}}async function xt(T,R,I){S&&S.abort(),S=null,P=T,z=(I&&I.startUninterruptedRevalidation)===!0,xy(k.location,k.matches),A=(I&&I.preventScrollReset)===!0,O=(I&&I.enableViewTransition)===!0;let V=l||a,K=I&&I.overrideNavigation,oe=cr(V,R,s),X=(I&&I.flushSync)===!0;if(!oe){let qe=Tt(404,{pathname:R.pathname}),{matches:_t,route:We}=jp(V);rs(),dt(R,{matches:_t,loaderData:{},errors:{[We.id]:qe}},{flushSync:X});return}if(k.initialized&&!$&&R_(k.location,R)&&!(I&&I.submission&&Ut(I.submission.formMethod))){dt(R,{matches:oe},{flushSync:X});return}S=new AbortController;let Q=Wo(e.history,R,S.signal,I&&I.submission),Y,ae;if(I&&I.pendingError)ae={[fi(oe).route.id]:I.pendingError};else if(I&&I.submission&&Ut(I.submission.formMethod)){let qe=await Gi(Q,R,I.submission,oe,{replace:I.replace,flushSync:X});if(qe.shortCircuited)return;Y=qe.pendingActionData,ae=qe.pendingActionError,K=Ds(R,I.submission),X=!1,Q=new Request(Q.url,{signal:Q.signal})}let{shortCircuited:He,loaderData:te,errors:he}=await Xl(Q,R,oe,K,I&&I.submission,I&&I.fetcherSubmission,I&&I.replace,I&&I.initialHydration===!0,X,Y,ae);He||(S=null,dt(R,Le({matches:oe},Y?{actionData:Y}:{},{loaderData:te,errors:he})))}async function Gi(T,R,I,V,K){K===void 0&&(K={}),ns();let oe=L_(R,I);Pe({navigation:oe},{flushSync:K.flushSync===!0});let X,Q=nc(V,R);if(!Q.route.action&&!Q.route.lazy)X={type:Oe.error,error:Tt(405,{method:T.method,pathname:R.pathname,routeId:Q.route.id})};else if(X=await Ho("action",T,Q,V,i,o,s,c.v7_relativeSplatPath),T.signal.aborted)return{shortCircuited:!0};if(fr(X)){let Y;return K&&K.replace!=null?Y=K.replace:Y=X.location===k.location.pathname+k.location.search,await Yt(k,X,{submission:I,replace:Y}),{shortCircuited:!0}}if(Jr(X)){let Y=fi(V,Q.route.id);return(K&&K.replace)!==!0&&(P=De.Push),{pendingActionData:{},pendingActionError:{[Y.route.id]:X.error}}}if(dr(X))throw Tt(400,{type:"defer-action"});return{pendingActionData:{[Q.route.id]:X.data}}}async function Xl(T,R,I,V,K,oe,X,Q,Y,ae,He){let te=V||Ds(R,K),he=K||oe||Up(te),qe=l||a,[_t,We]=Op(e.history,k,I,he,R,c.v7_partialHydration&&Q===!0,$,U,W,xe,ue,J,qe,s,ae,He);if(rs(ce=>!(I&&I.some(pe=>pe.route.id===ce))||_t&&_t.some(pe=>pe.route.id===ce)),F=++L,_t.length===0&&We.length===0){let ce=pf();return dt(R,Le({matches:I,loaderData:{},errors:He||null},ae?{actionData:ae}:{},ce?{fetchers:new Map(k.fetchers)}:{}),{flushSync:Y}),{shortCircuited:!0}}if(!z&&(!c.v7_partialHydration||!Q)){We.forEach(pe=>{let ft=k.fetchers.get(pe.key),Zi=Ko(void 0,ft?ft.data:void 0);k.fetchers.set(pe.key,Zi)});let ce=ae||k.actionData;Pe(Le({navigation:te},ce?Object.keys(ce).length===0?{actionData:null}:{actionData:ce}:{},We.length>0?{fetchers:new Map(k.fetchers)}:{}),{flushSync:Y})}We.forEach(ce=>{B.has(ce.key)&&An(ce.key),ce.controller&&B.set(ce.key,ce.controller)});let Or=()=>We.forEach(ce=>An(ce.key));S&&S.signal.addEventListener("abort",Or);let{results:os,loaderResults:Ir,fetcherResults:Sn}=await cf(k.matches,I,_t,We,T);if(T.signal.aborted)return{shortCircuited:!0};S&&S.signal.removeEventListener("abort",Or),We.forEach(ce=>B.delete(ce.key));let or=zp(os);if(or){if(or.idx>=_t.length){let ce=We[or.idx-_t.length].key;J.add(ce)}return await Yt(k,or.result,{replace:X}),{shortCircuited:!0}}let{loaderData:is,errors:Lo}=Np(k,I,_t,Ir,He,We,Sn,$e);$e.forEach((ce,pe)=>{ce.subscribe(ft=>{(ft||ce.done)&&$e.delete(pe)})}),c.v7_partialHydration&&Q&&k.errors&&Object.entries(k.errors).filter(ce=>{let[pe]=ce;return!_t.some(ft=>ft.route.id===pe)}).forEach(ce=>{let[pe,ft]=ce;Lo=Object.assign(Lo||{},{[pe]:ft})});let as=pf(),Lr=hf(F),Qi=as||Lr||We.length>0;return Le({loaderData:is,errors:Lo},Qi?{fetchers:new Map(k.fetchers)}:{})}function Jl(T,R,I,V){if(r)throw new Error("router.fetch() was called during the server render, but it shouldn't be. You are likely calling a useFetcher() method in the body of your component. Try moving it to a useEffect or a callback.");B.has(T)&&An(T);let K=(V&&V.unstable_flushSync)===!0,oe=l||a,X=ec(k.location,k.matches,s,c.v7_prependBasename,I,c.v7_relativeSplatPath,R,V==null?void 0:V.relative),Q=cr(oe,X,s);if(!Q){Io(T,R,Tt(404,{pathname:X}),{flushSync:K});return}let{path:Y,submission:ae,error:He}=$p(c.v7_normalizeFormMethod,!0,X,V);if(He){Io(T,R,He,{flushSync:K});return}let te=nc(Q,Y);if(A=(V&&V.preventScrollReset)===!0,ae&&Ut(ae.formMethod)){es(T,R,Y,te,Q,K,ae);return}ue.set(T,{routeId:R,path:Y}),ts(T,R,Y,te,Q,K,ae)}async function es(T,R,I,V,K,oe,X){if(ns(),ue.delete(T),!V.route.action&&!V.route.lazy){let pe=Tt(405,{method:X.formMethod,pathname:I,routeId:R});Io(T,R,pe,{flushSync:oe});return}let Q=k.fetchers.get(T);Pn(T,D_(X,Q),{flushSync:oe});let Y=new AbortController,ae=Wo(e.history,I,Y.signal,X);B.set(T,Y);let He=L,te=await Ho("action",ae,V,K,i,o,s,c.v7_relativeSplatPath);if(ae.signal.aborted){B.get(T)===Y&&B.delete(T);return}if(c.v7_fetcherPersist&&xe.has(T)){if(fr(te)||Jr(te)){Pn(T,Rn(void 0));return}}else{if(fr(te))if(B.delete(T),F>He){Pn(T,Rn(void 0));return}else return J.add(T),Pn(T,Ko(X)),Yt(k,te,{fetcherSubmission:X});if(Jr(te)){Io(T,R,te.error);return}}if(dr(te))throw Tt(400,{type:"defer-action"});let he=k.navigation.location||k.location,qe=Wo(e.history,he,Y.signal),_t=l||a,We=k.navigation.state!=="idle"?cr(_t,k.navigation.location,s):k.matches;ne(We,"Didn't find any matches after fetcher action");let Or=++L;G.set(T,Or);let os=Ko(X,te.data);k.fetchers.set(T,os);let[Ir,Sn]=Op(e.history,k,We,X,he,!1,$,U,W,xe,ue,J,_t,s,{[V.route.id]:te.data},void 0);Sn.filter(pe=>pe.key!==T).forEach(pe=>{let ft=pe.key,Zi=k.fetchers.get(ft),wy=Ko(void 0,Zi?Zi.data:void 0);k.fetchers.set(ft,wy),B.has(ft)&&An(ft),pe.controller&&B.set(ft,pe.controller)}),Pe({fetchers:new Map(k.fetchers)});let or=()=>Sn.forEach(pe=>An(pe.key));Y.signal.addEventListener("abort",or);let{results:is,loaderResults:Lo,fetcherResults:as}=await cf(k.matches,We,Ir,Sn,qe);if(Y.signal.aborted)return;Y.signal.removeEventListener("abort",or),G.delete(T),B.delete(T),Sn.forEach(pe=>B.delete(pe.key));let Lr=zp(is);if(Lr){if(Lr.idx>=Ir.length){let pe=Sn[Lr.idx-Ir.length].key;J.add(pe)}return Yt(k,Lr.result)}let{loaderData:Qi,errors:ce}=Np(k,k.matches,Ir,Lo,void 0,Sn,as,$e);if(k.fetchers.has(T)){let pe=Rn(te.data);k.fetchers.set(T,pe)}hf(Or),k.navigation.state==="loading"&&Or>F?(ne(P,"Expected pending action"),S&&S.abort(),dt(k.navigation.location,{matches:We,loaderData:Qi,errors:ce,fetchers:new Map(k.fetchers)})):(Pe({errors:ce,loaderData:Mp(k.loaderData,Qi,We,ce),fetchers:new Map(k.fetchers)}),$=!1)}async function ts(T,R,I,V,K,oe,X){let Q=k.fetchers.get(T);Pn(T,Ko(X,Q?Q.data:void 0),{flushSync:oe});let Y=new AbortController,ae=Wo(e.history,I,Y.signal);B.set(T,Y);let He=L,te=await Ho("loader",ae,V,K,i,o,s,c.v7_relativeSplatPath);if(dr(te)&&(te=await R0(te,ae.signal,!0)||te),B.get(T)===Y&&B.delete(T),!ae.signal.aborted){if(xe.has(T)){Pn(T,Rn(void 0));return}if(fr(te))if(F>He){Pn(T,Rn(void 0));return}else{J.add(T),await Yt(k,te);return}if(Jr(te)){Io(T,R,te.error);return}ne(!dr(te),"Unhandled fetcher deferred data"),Pn(T,Rn(te.data))}}async function Yt(T,R,I){let{submission:V,fetcherSubmission:K,replace:oe}=I===void 0?{}:I;R.revalidate&&($=!0);let X=Ri(T.location,R.location,{_isRedirect:!0});if(ne(X,"Expected a location on the redirect navigation"),n){let he=!1;if(R.reloadDocument)he=!0;else if(P0.test(R.location)){const qe=e.history.createURL(R.location);he=qe.origin!==t.location.origin||Cr(qe.pathname,s)==null}if(he){oe?t.location.replace(R.location):t.location.assign(R.location);return}}S=null;let Q=oe===!0?De.Replace:De.Push,{formMethod:Y,formAction:ae,formEncType:He}=T.navigation;!V&&!K&&Y&&ae&&He&&(V=Up(T.navigation));let te=V||K;if(E_.has(R.status)&&te&&Ut(te.formMethod))await xt(Q,X,{submission:Le({},te,{formAction:R.location}),preventScrollReset:A});else{let he=Ds(X,V);await xt(Q,X,{overrideNavigation:he,fetcherSubmission:K,preventScrollReset:A})}}async function cf(T,R,I,V,K){let oe=await Promise.all([...I.map(Y=>Ho("loader",K,Y,R,i,o,s,c.v7_relativeSplatPath)),...V.map(Y=>Y.matches&&Y.match&&Y.controller?Ho("loader",Wo(e.history,Y.path,Y.controller.signal),Y.match,Y.matches,i,o,s,c.v7_relativeSplatPath):{type:Oe.error,error:Tt(404,{pathname:Y.path})})]),X=oe.slice(0,I.length),Q=oe.slice(I.length);return await Promise.all([Fp(T,I,X,X.map(()=>K.signal),!1,k.loaderData),Fp(T,V.map(Y=>Y.match),Q,V.map(Y=>Y.controller?Y.controller.signal:null),!0)]),{results:oe,loaderResults:X,fetcherResults:Q}}function ns(){$=!0,U.push(...rs()),ue.forEach((T,R)=>{B.has(R)&&(W.push(R),An(R))})}function Pn(T,R,I){I===void 0&&(I={}),k.fetchers.set(T,R),Pe({fetchers:new Map(k.fetchers)},{flushSync:(I&&I.flushSync)===!0})}function Io(T,R,I,V){V===void 0&&(V={});let K=fi(k.matches,R);qi(T),Pe({errors:{[K.route.id]:I},fetchers:new Map(k.fetchers)},{flushSync:(V&&V.flushSync)===!0})}function df(T){return c.v7_fetcherPersist&&(Ve.set(T,(Ve.get(T)||0)+1),xe.has(T)&&xe.delete(T)),k.fetchers.get(T)||k_}function qi(T){let R=k.fetchers.get(T);B.has(T)&&!(R&&R.state==="loading"&&G.has(T))&&An(T),ue.delete(T),G.delete(T),J.delete(T),xe.delete(T),k.fetchers.delete(T)}function vy(T){if(c.v7_fetcherPersist){let R=(Ve.get(T)||0)-1;R<=0?(Ve.delete(T),xe.add(T)):Ve.set(T,R)}else qi(T);Pe({fetchers:new Map(k.fetchers)})}function An(T){let R=B.get(T);ne(R,"Expected fetch controller: "+T),R.abort(),B.delete(T)}function ff(T){for(let R of T){let I=df(R),V=Rn(I.data);k.fetchers.set(R,V)}}function pf(){let T=[],R=!1;for(let I of J){let V=k.fetchers.get(I);ne(V,"Expected fetcher: "+I),V.state==="loading"&&(J.delete(I),T.push(I),R=!0)}return ff(T),R}function hf(T){let R=[];for(let[I,V]of G)if(V0}function gy(T,R){let I=k.blockers.get(T)||Bo;return _e.get(T)!==R&&_e.set(T,R),I}function mf(T){k.blockers.delete(T),_e.delete(T)}function Yi(T,R){let I=k.blockers.get(T)||Bo;ne(I.state==="unblocked"&&R.state==="blocked"||I.state==="blocked"&&R.state==="blocked"||I.state==="blocked"&&R.state==="proceeding"||I.state==="blocked"&&R.state==="unblocked"||I.state==="proceeding"&&R.state==="unblocked","Invalid blocker state transition: "+I.state+" -> "+R.state);let V=new Map(k.blockers);V.set(T,R),Pe({blockers:V})}function vf(T){let{currentLocation:R,nextLocation:I,historyAction:V}=T;if(_e.size===0)return;_e.size>1&&yo(!1,"A router only supports one blocker at a time");let K=Array.from(_e.entries()),[oe,X]=K[K.length-1],Q=k.blockers.get(oe);if(!(Q&&Q.state==="proceeding")&&X({currentLocation:R,nextLocation:I,historyAction:V}))return oe}function rs(T){let R=[];return $e.forEach((I,V)=>{(!T||T(V))&&(I.cancel(),R.push(V),$e.delete(V))}),R}function yy(T,R,I){if(f=T,y=R,h=I||null,!g&&k.navigation===Ls){g=!0;let V=yf(k.location,k.matches);V!=null&&Pe({restoreScrollPosition:V})}return()=>{f=null,y=null,h=null}}function gf(T,R){return h&&h(T,R.map(V=>_0(V,k.loaderData)))||T.key}function xy(T,R){if(f&&y){let I=gf(T,R);f[I]=y()}}function yf(T,R){if(f){let I=gf(T,R),V=f[I];if(typeof V=="number")return V}return null}function _y(T){i={},l=Ju(T,o,void 0,i)}return C={get basename(){return s},get future(){return c},get state(){return k},get routes(){return a},get window(){return t},initialize:we,subscribe:Mt,enableScrollRestoration:yy,navigate:Ki,fetch:Jl,revalidate:Zl,createHref:T=>e.history.createHref(T),encodeLocation:T=>e.history.encodeLocation(T),getFetcher:df,deleteFetcher:vy,dispose:Ce,getBlocker:gy,deleteBlocker:mf,_internalFetchControllers:B,_internalActiveDeferreds:$e,_internalSetRoutes:_y},C}function P_(e){return e!=null&&("formData"in e&&e.formData!=null||"body"in e&&e.body!==void 0)}function ec(e,t,n,r,o,i,a,l){let s,c;if(a){s=[];for(let u of t)if(s.push(u),u.route.id===a){c=u;break}}else s=t,c=t[t.length-1];let d=Id(o||".",Od(s,i),Cr(e.pathname,n)||e.pathname,l==="path");return o==null&&(d.search=e.search,d.hash=e.hash),(o==null||o===""||o===".")&&c&&c.route.index&&!Dd(d.search)&&(d.search=d.search?d.search.replace(/^\?/,"?index&"):"?index"),r&&n!=="/"&&(d.pathname=d.pathname==="/"?n:fn([n,d.pathname])),wr(d)}function $p(e,t,n,r){if(!r||!P_(r))return{path:n};if(r.formMethod&&!I_(r.formMethod))return{path:n,error:Tt(405,{method:r.formMethod})};let o=()=>({path:n,error:Tt(400,{type:"invalid-body"})}),i=r.formMethod||"get",a=e?i.toUpperCase():i.toLowerCase(),l=T0(n);if(r.body!==void 0){if(r.formEncType==="text/plain"){if(!Ut(a))return o();let f=typeof r.body=="string"?r.body:r.body instanceof FormData||r.body instanceof URLSearchParams?Array.from(r.body.entries()).reduce((h,y)=>{let[g,w]=y;return""+h+g+"="+w+` +`},""):String(r.body);return{path:n,submission:{formMethod:a,formAction:l,formEncType:r.formEncType,formData:void 0,json:void 0,text:f}}}else if(r.formEncType==="application/json"){if(!Ut(a))return o();try{let f=typeof r.body=="string"?JSON.parse(r.body):r.body;return{path:n,submission:{formMethod:a,formAction:l,formEncType:r.formEncType,formData:void 0,json:f,text:void 0}}}catch{return o()}}}ne(typeof FormData=="function","FormData is not available in this environment");let s,c;if(r.formData)s=tc(r.formData),c=r.formData;else if(r.body instanceof FormData)s=tc(r.body),c=r.body;else if(r.body instanceof URLSearchParams)s=r.body,c=Dp(s);else if(r.body==null)s=new URLSearchParams,c=new FormData;else try{s=new URLSearchParams(r.body),c=Dp(s)}catch{return o()}let d={formMethod:a,formAction:l,formEncType:r&&r.formEncType||"application/x-www-form-urlencoded",formData:c,json:void 0,text:void 0};if(Ut(d.formMethod))return{path:n,submission:d};let u=wn(n);return t&&u.search&&Dd(u.search)&&s.append("index",""),u.search="?"+s,{path:wr(u),submission:d}}function A_(e,t){let n=e;if(t){let r=e.findIndex(o=>o.route.id===t);r>=0&&(n=e.slice(0,r))}return n}function Op(e,t,n,r,o,i,a,l,s,c,d,u,f,h,y,g){let w=g?Object.values(g)[0]:y?Object.values(y)[0]:void 0,m=e.createURL(t.location),v=e.createURL(o),_=g?Object.keys(g)[0]:void 0,C=A_(n,_).filter((P,A)=>{let{route:S}=P;if(S.lazy)return!0;if(S.loader==null)return!1;if(i)return S.loader.hydrate?!0:t.loaderData[S.id]===void 0&&(!t.errors||t.errors[S.id]===void 0);if(S_(t.loaderData,t.matches[A],P)||l.some(N=>N===P.route.id))return!0;let O=t.matches[A],j=P;return Ip(P,Le({currentUrl:m,currentParams:O.params,nextUrl:v,nextParams:j.params},r,{actionResult:w,defaultShouldRevalidate:a||m.pathname+m.search===v.pathname+v.search||m.search!==v.search||S0(O,j)}))}),k=[];return d.forEach((P,A)=>{if(i||!n.some(z=>z.route.id===P.routeId)||c.has(A))return;let S=cr(f,P.path,h);if(!S){k.push({key:A,routeId:P.routeId,path:P.path,matches:null,match:null,controller:null});return}let O=t.fetchers.get(A),j=nc(S,P.path),N=!1;u.has(A)?N=!1:s.includes(A)?N=!0:O&&O.state!=="idle"&&O.data===void 0?N=a:N=Ip(j,Le({currentUrl:m,currentParams:t.matches[t.matches.length-1].params,nextUrl:v,nextParams:n[n.length-1].params},r,{actionResult:w,defaultShouldRevalidate:a})),N&&k.push({key:A,routeId:P.routeId,path:P.path,matches:S,match:j,controller:new AbortController})}),[C,k]}function S_(e,t,n){let r=!t||n.route.id!==t.route.id,o=e[n.route.id]===void 0;return r||o}function S0(e,t){let n=e.route.path;return e.pathname!==t.pathname||n!=null&&n.endsWith("*")&&e.params["*"]!==t.params["*"]}function Ip(e,t){if(e.route.shouldRevalidate){let n=e.route.shouldRevalidate(t);if(typeof n=="boolean")return n}return t.defaultShouldRevalidate}async function Lp(e,t,n){if(!e.lazy)return;let r=await e.lazy();if(!e.lazy)return;let o=n[e.id];ne(o,"No route found in manifest");let i={};for(let a in r){let s=o[a]!==void 0&&a!=="hasErrorBoundary";yo(!s,'Route "'+o.id+'" has a static property "'+a+'" defined but its lazy function is also returning a value for this property. '+('The lazy route property "'+a+'" will be ignored.')),!s&&!J2.has(a)&&(i[a]=r[a])}Object.assign(o,i),Object.assign(o,Le({},t(o),{lazy:void 0}))}async function Ho(e,t,n,r,o,i,a,l,s){s===void 0&&(s={});let c,d,u,f=g=>{let w,m=new Promise((v,_)=>w=_);return u=()=>w(),t.signal.addEventListener("abort",u),Promise.race([g({request:t,params:n.params,context:s.requestContext}),m])};try{let g=n.route[e];if(n.route.lazy)if(g){let w,m=await Promise.all([f(g).catch(v=>{w=v}),Lp(n.route,i,o)]);if(w)throw w;d=m[0]}else if(await Lp(n.route,i,o),g=n.route[e],g)d=await f(g);else if(e==="action"){let w=new URL(t.url),m=w.pathname+w.search;throw Tt(405,{method:t.method,pathname:m,routeId:n.route.id})}else return{type:Oe.data,data:void 0};else if(g)d=await f(g);else{let w=new URL(t.url),m=w.pathname+w.search;throw Tt(404,{pathname:m})}ne(d!==void 0,"You defined "+(e==="action"?"an action":"a loader")+" for route "+('"'+n.route.id+"\" but didn't return anything from your `"+e+"` ")+"function. Please return a value or `null`.")}catch(g){c=Oe.error,d=g}finally{u&&t.signal.removeEventListener("abort",u)}if(O_(d)){let g=d.status;if(w_.has(g)){let m=d.headers.get("Location");if(ne(m,"Redirects returned/thrown from loaders/actions must have a Location header"),!P0.test(m))m=ec(new URL(t.url),r.slice(0,r.indexOf(n)+1),a,!0,m,l);else if(!s.isStaticRequest){let v=new URL(t.url),_=m.startsWith("//")?new URL(v.protocol+m):new URL(m),E=Cr(_.pathname,a)!=null;_.origin===v.origin&&E&&(m=_.pathname+_.search+_.hash)}if(s.isStaticRequest)throw d.headers.set("Location",m),d;return{type:Oe.redirect,status:g,location:m,revalidate:d.headers.get("X-Remix-Revalidate")!==null,reloadDocument:d.headers.get("X-Remix-Reload-Document")!==null}}if(s.isRouteRequest)throw{type:c===Oe.error?Oe.error:Oe.data,response:d};let w;try{let m=d.headers.get("Content-Type");m&&/\bapplication\/json\b/.test(m)?d.body==null?w=null:w=await d.json():w=await d.text()}catch(m){return{type:Oe.error,error:m}}return c===Oe.error?{type:c,error:new Ld(g,d.statusText,w),headers:d.headers}:{type:Oe.data,data:w,statusCode:d.status,headers:d.headers}}if(c===Oe.error)return{type:c,error:d};if($_(d)){var h,y;return{type:Oe.deferred,deferredData:d,statusCode:(h=d.init)==null?void 0:h.status,headers:((y=d.init)==null?void 0:y.headers)&&new Headers(d.init.headers)}}return{type:Oe.data,data:d}}function Wo(e,t,n,r){let o=e.createURL(T0(t)).toString(),i={signal:n};if(r&&Ut(r.formMethod)){let{formMethod:a,formEncType:l}=r;i.method=a.toUpperCase(),l==="application/json"?(i.headers=new Headers({"Content-Type":l}),i.body=JSON.stringify(r.json)):l==="text/plain"?i.body=r.text:l==="application/x-www-form-urlencoded"&&r.formData?i.body=tc(r.formData):i.body=r.formData}return new Request(o,i)}function tc(e){let t=new URLSearchParams;for(let[n,r]of e.entries())t.append(n,typeof r=="string"?r:r.name);return t}function Dp(e){let t=new FormData;for(let[n,r]of e.entries())t.append(n,r);return t}function T_(e,t,n,r,o){let i={},a=null,l,s=!1,c={};return n.forEach((d,u)=>{let f=t[u].route.id;if(ne(!fr(d),"Cannot handle redirect results in processLoaderData"),Jr(d)){let h=fi(e,f),y=d.error;r&&(y=Object.values(r)[0],r=void 0),a=a||{},a[h.route.id]==null&&(a[h.route.id]=y),i[f]=void 0,s||(s=!0,l=b0(d.error)?d.error.status:500),d.headers&&(c[f]=d.headers)}else dr(d)?(o.set(f,d.deferredData),i[f]=d.deferredData.data):i[f]=d.data,d.statusCode!=null&&d.statusCode!==200&&!s&&(l=d.statusCode),d.headers&&(c[f]=d.headers)}),r&&(a=r,i[Object.keys(r)[0]]=void 0),{loaderData:i,errors:a,statusCode:l||200,loaderHeaders:c}}function Np(e,t,n,r,o,i,a,l){let{loaderData:s,errors:c}=T_(t,n,r,o,l);for(let d=0;dr.route.id===t)+1):[...e]).reverse().find(r=>r.route.hasErrorBoundary===!0)||e[0]}function jp(e){let t=e.length===1?e[0]:e.find(n=>n.index||!n.path||n.path==="/")||{id:"__shim-error-route__"};return{matches:[{params:{},pathname:"",pathnameBase:"",route:t}],route:t}}function Tt(e,t){let{pathname:n,routeId:r,method:o,type:i}=t===void 0?{}:t,a="Unknown Server Error",l="Unknown @remix-run/router error";return e===400?(a="Bad Request",o&&n&&r?l="You made a "+o+' request to "'+n+'" but '+('did not provide a `loader` for route "'+r+'", ')+"so there is no way to handle the request.":i==="defer-action"?l="defer() is not supported in actions":i==="invalid-body"&&(l="Unable to encode submission body")):e===403?(a="Forbidden",l='Route "'+r+'" does not match URL "'+n+'"'):e===404?(a="Not Found",l='No route matches URL "'+n+'"'):e===405&&(a="Method Not Allowed",o&&n&&r?l="You made a "+o.toUpperCase()+' request to "'+n+'" but '+('did not provide an `action` for route "'+r+'", ')+"so there is no way to handle the request.":o&&(l='Invalid request method "'+o.toUpperCase()+'"')),new Ld(e||500,a,new Error(l),!0)}function zp(e){for(let t=e.length-1;t>=0;t--){let n=e[t];if(fr(n))return{result:n,idx:t}}}function T0(e){let t=typeof e=="string"?wn(e):e;return wr(Le({},t,{hash:""}))}function R_(e,t){return e.pathname!==t.pathname||e.search!==t.search?!1:e.hash===""?t.hash!=="":e.hash===t.hash?!0:t.hash!==""}function dr(e){return e.type===Oe.deferred}function Jr(e){return e.type===Oe.error}function fr(e){return(e&&e.type)===Oe.redirect}function $_(e){let t=e;return t&&typeof t=="object"&&typeof t.data=="object"&&typeof t.subscribe=="function"&&typeof t.cancel=="function"&&typeof t.resolveData=="function"}function O_(e){return e!=null&&typeof e.status=="number"&&typeof e.statusText=="string"&&typeof e.headers=="object"&&typeof e.body<"u"}function I_(e){return __.has(e.toLowerCase())}function Ut(e){return y_.has(e.toLowerCase())}async function Fp(e,t,n,r,o,i){for(let a=0;au.route.id===s.route.id),d=c!=null&&!S0(c,s)&&(i&&i[s.route.id])!==void 0;if(dr(l)&&(o||d)){let u=r[a];ne(u,"Expected an AbortSignal for revalidating fetcher deferred result"),await R0(l,u,o).then(f=>{f&&(n[a]=f||n[a])})}}}async function R0(e,t,n){if(n===void 0&&(n=!1),!await e.deferredData.resolveData(t)){if(n)try{return{type:Oe.data,data:e.deferredData.unwrappedData}}catch(o){return{type:Oe.error,error:o}}return{type:Oe.data,data:e.deferredData.data}}}function Dd(e){return new URLSearchParams(e).getAll("index").some(t=>t==="")}function nc(e,t){let n=typeof t=="string"?wn(t).search:t.search;if(e[e.length-1].route.index&&Dd(n||""))return e[e.length-1];let r=k0(e);return r[r.length-1]}function Up(e){let{formMethod:t,formAction:n,formEncType:r,text:o,formData:i,json:a}=e;if(!(!t||!n||!r)){if(o!=null)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:void 0,text:o};if(i!=null)return{formMethod:t,formAction:n,formEncType:r,formData:i,json:void 0,text:void 0};if(a!==void 0)return{formMethod:t,formAction:n,formEncType:r,formData:void 0,json:a,text:void 0}}}function Ds(e,t){return t?{state:"loading",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}:{state:"loading",location:e,formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0}}function L_(e,t){return{state:"submitting",location:e,formMethod:t.formMethod,formAction:t.formAction,formEncType:t.formEncType,formData:t.formData,json:t.json,text:t.text}}function Ko(e,t){return e?{state:"loading",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t}:{state:"loading",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:t}}function D_(e,t){return{state:"submitting",formMethod:e.formMethod,formAction:e.formAction,formEncType:e.formEncType,formData:e.formData,json:e.json,text:e.text,data:t?t.data:void 0}}function Rn(e){return{state:"idle",formMethod:void 0,formAction:void 0,formEncType:void 0,formData:void 0,json:void 0,text:void 0,data:e}}function N_(e,t){try{let n=e.sessionStorage.getItem(A0);if(n){let r=JSON.parse(n);for(let[o,i]of Object.entries(r||{}))i&&Array.isArray(i)&&t.set(o,new Set(i||[]))}}catch{}}function M_(e,t){if(t.size>0){let n={};for(let[r,o]of t)n[r]=[...o];try{e.sessionStorage.setItem(A0,JSON.stringify(n))}catch(r){yo(!1,"Failed to save applied view transitions in sessionStorage ("+r+").")}}}/** * React Router v6.22.3 * * Copyright (c) Remix Software Inc. @@ -62,7 +62,7 @@ Error generating stack: `+i.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function $i(){return $i=Object.assign?Object.assign.bind():function(e){for(var t=1;tUl(e,t),[t,e])}function O0(e){p.useContext(nr).static||p.useLayoutEffect(e)}function Md(){let{isDataRoute:e}=p.useContext(Pr);return e?Xw():Fw()}function Fw(){So()||ne(!1);let e=p.useContext(Vi),{basename:t,future:n,navigator:r}=p.useContext(nr),{matches:o}=p.useContext(Pr),{pathname:i}=Re(),a=JSON.stringify(Od(o,n.v7_relativeSplatPath)),l=p.useRef(!1);return O0(()=>{l.current=!0}),p.useCallback(function(c,d){if(d===void 0&&(d={}),!l.current)return;if(typeof c=="number"){r.go(c);return}let u=Id(c,JSON.parse(a),i,d.relative==="path");e==null&&t!=="/"&&(u.pathname=u.pathname==="/"?t:fn([t,u.pathname])),(d.replace?r.replace:r.push)(u,d.state,d)},[t,r,a,i,e])}function I0(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=p.useContext(nr),{matches:o}=p.useContext(Pr),{pathname:i}=Re(),a=JSON.stringify(Od(o,r.v7_relativeSplatPath));return p.useMemo(()=>Id(e,JSON.parse(a),i,n==="path"),[e,a,i,n])}function Uw(e,t,n,r){So()||ne(!1);let{navigator:o}=p.useContext(nr),{matches:i}=p.useContext(Pr),a=i[i.length-1],l=a?a.params:{};a&&a.pathname;let s=a?a.pathnameBase:"/";a&&a.route;let c=Re(),d;if(t){var u;let w=typeof t=="string"?wn(t):t;s==="/"||(u=w.pathname)!=null&&u.startsWith(s)||ne(!1),d=w}else d=c;let f=d.pathname||"/",h=f;if(s!=="/"){let w=s.replace(/^\//,"").split("/");h="/"+f.replace(/^\//,"").split("/").slice(w.length).join("/")}let y=cr(e,{pathname:h}),g=Kw(y&&y.map(w=>Object.assign({},w,{params:Object.assign({},l,w.params),pathname:fn([s,o.encodeLocation?o.encodeLocation(w.pathname).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?s:fn([s,o.encodeLocation?o.encodeLocation(w.pathnameBase).pathname:w.pathnameBase])})),i,n,r);return t&&g?p.createElement(Vl.Provider,{value:{location:$i({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:De.Pop}},g):g}function Vw(){let e=Zw(),t=b0(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return p.createElement(p.Fragment,null,p.createElement("h2",null,"Unexpected Application Error!"),p.createElement("h3",{style:{fontStyle:"italic"}},t),n?p.createElement("pre",{style:o},n):null,null)}const Bw=p.createElement(Vw,null);class Hw extends p.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?p.createElement(Pr.Provider,{value:this.props.routeContext},p.createElement($0.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function Ww(e){let{routeContext:t,match:n,children:r}=e,o=p.useContext(Vi);return o&&o.static&&o.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=n.route.id),p.createElement(Pr.Provider,{value:t},r)}function Kw(e,t,n,r){var o;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var i;if((i=n)!=null&&i.errors)e=n.matches;else return null}let a=e,l=(o=n)==null?void 0:o.errors;if(l!=null){let d=a.findIndex(u=>u.route.id&&(l==null?void 0:l[u.route.id]));d>=0||ne(!1),a=a.slice(0,Math.min(a.length,d+1))}let s=!1,c=-1;if(n&&r&&r.v7_partialHydration)for(let d=0;d=0?a=a.slice(0,c+1):a=[a[0]];break}}}return a.reduceRight((d,u,f)=>{let h,y=!1,g=null,w=null;n&&(h=l&&u.route.id?l[u.route.id]:void 0,g=u.route.errorElement||Bw,s&&(c<0&&f===0?(Jw("route-fallback",!1),y=!0,w=null):c===f&&(y=!0,w=u.route.hydrateFallbackElement||null)));let m=t.concat(a.slice(0,f+1)),v=()=>{let _;return h?_=g:y?_=w:u.route.Component?_=p.createElement(u.route.Component,null):u.route.element?_=u.route.element:_=d,p.createElement(Ww,{match:u,routeContext:{outlet:d,matches:m,isDataRoute:n!=null},children:_})};return n&&(u.route.ErrorBoundary||u.route.errorElement||f===0)?p.createElement(Hw,{location:n.location,revalidation:n.revalidation,component:g,error:h,children:v(),routeContext:{outlet:null,matches:m,isDataRoute:!0}}):v()},null)}var L0=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(L0||{}),xo=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(xo||{});function Gw(e){let t=p.useContext(Vi);return t||ne(!1),t}function jd(e){let t=p.useContext(Nd);return t||ne(!1),t}function qw(e){let t=p.useContext(Pr);return t||ne(!1),t}function D0(e){let t=qw(),n=t.matches[t.matches.length-1];return n.route.id||ne(!1),n.route.id}function Yw(){return jd(xo.UseNavigation).navigation}function Qw(){let{matches:e,loaderData:t}=jd(xo.UseMatches);return p.useMemo(()=>e.map(n=>_0(n,t)),[e,t])}function Zw(){var e;let t=p.useContext($0),n=jd(xo.UseRouteError),r=D0(xo.UseRouteError);return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function Xw(){let{router:e}=Gw(L0.UseNavigateStable),t=D0(xo.UseNavigateStable),n=p.useRef(!1);return O0(()=>{n.current=!0}),p.useCallback(function(o,i){i===void 0&&(i={}),n.current&&(typeof o=="number"?e.navigate(o):e.navigate(o,$i({fromRouteId:t},i)))},[e,t])}const Vp={};function Jw(e,t,n){!t&&!Vp[e]&&(Vp[e]=!0)}function e2(e){let{basename:t="/",children:n=null,location:r,navigationType:o=De.Pop,navigator:i,static:a=!1,future:l}=e;So()&&ne(!1);let s=t.replace(/^\/*/,"/"),c=p.useMemo(()=>({basename:s,navigator:i,static:a,future:$i({v7_relativeSplatPath:!1},l)}),[s,l,i,a]);typeof r=="string"&&(r=wn(r));let{pathname:d="/",search:u="",hash:f="",state:h=null,key:y="default"}=r,g=p.useMemo(()=>{let w=Cr(d,s);return w==null?null:{location:{pathname:w,search:u,hash:f,state:h,key:y},navigationType:o}},[s,d,u,f,h,y,o]);return g==null?null:p.createElement(nr.Provider,{value:c},p.createElement(Vl.Provider,{children:n,value:g}))}new Promise(()=>{});function t2(e){let t={hasErrorBoundary:e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&Object.assign(t,{element:p.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:p.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:p.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}/** + */function $i(){return $i=Object.assign?Object.assign.bind():function(e){for(var t=1;tUl(e,t),[t,e])}function O0(e){p.useContext(nr).static||p.useLayoutEffect(e)}function Md(){let{isDataRoute:e}=p.useContext(Pr);return e?X_():F_()}function F_(){So()||ne(!1);let e=p.useContext(Vi),{basename:t,future:n,navigator:r}=p.useContext(nr),{matches:o}=p.useContext(Pr),{pathname:i}=Re(),a=JSON.stringify(Od(o,n.v7_relativeSplatPath)),l=p.useRef(!1);return O0(()=>{l.current=!0}),p.useCallback(function(c,d){if(d===void 0&&(d={}),!l.current)return;if(typeof c=="number"){r.go(c);return}let u=Id(c,JSON.parse(a),i,d.relative==="path");e==null&&t!=="/"&&(u.pathname=u.pathname==="/"?t:fn([t,u.pathname])),(d.replace?r.replace:r.push)(u,d.state,d)},[t,r,a,i,e])}function I0(e,t){let{relative:n}=t===void 0?{}:t,{future:r}=p.useContext(nr),{matches:o}=p.useContext(Pr),{pathname:i}=Re(),a=JSON.stringify(Od(o,r.v7_relativeSplatPath));return p.useMemo(()=>Id(e,JSON.parse(a),i,n==="path"),[e,a,i,n])}function U_(e,t,n,r){So()||ne(!1);let{navigator:o}=p.useContext(nr),{matches:i}=p.useContext(Pr),a=i[i.length-1],l=a?a.params:{};a&&a.pathname;let s=a?a.pathnameBase:"/";a&&a.route;let c=Re(),d;if(t){var u;let w=typeof t=="string"?wn(t):t;s==="/"||(u=w.pathname)!=null&&u.startsWith(s)||ne(!1),d=w}else d=c;let f=d.pathname||"/",h=f;if(s!=="/"){let w=s.replace(/^\//,"").split("/");h="/"+f.replace(/^\//,"").split("/").slice(w.length).join("/")}let y=cr(e,{pathname:h}),g=K_(y&&y.map(w=>Object.assign({},w,{params:Object.assign({},l,w.params),pathname:fn([s,o.encodeLocation?o.encodeLocation(w.pathname).pathname:w.pathname]),pathnameBase:w.pathnameBase==="/"?s:fn([s,o.encodeLocation?o.encodeLocation(w.pathnameBase).pathname:w.pathnameBase])})),i,n,r);return t&&g?p.createElement(Vl.Provider,{value:{location:$i({pathname:"/",search:"",hash:"",state:null,key:"default"},d),navigationType:De.Pop}},g):g}function V_(){let e=Z_(),t=b0(e)?e.status+" "+e.statusText:e instanceof Error?e.message:JSON.stringify(e),n=e instanceof Error?e.stack:null,o={padding:"0.5rem",backgroundColor:"rgba(200,200,200, 0.5)"};return p.createElement(p.Fragment,null,p.createElement("h2",null,"Unexpected Application Error!"),p.createElement("h3",{style:{fontStyle:"italic"}},t),n?p.createElement("pre",{style:o},n):null,null)}const B_=p.createElement(V_,null);class H_ extends p.Component{constructor(t){super(t),this.state={location:t.location,revalidation:t.revalidation,error:t.error}}static getDerivedStateFromError(t){return{error:t}}static getDerivedStateFromProps(t,n){return n.location!==t.location||n.revalidation!=="idle"&&t.revalidation==="idle"?{error:t.error,location:t.location,revalidation:t.revalidation}:{error:t.error!==void 0?t.error:n.error,location:n.location,revalidation:t.revalidation||n.revalidation}}componentDidCatch(t,n){console.error("React Router caught the following error during render",t,n)}render(){return this.state.error!==void 0?p.createElement(Pr.Provider,{value:this.props.routeContext},p.createElement($0.Provider,{value:this.state.error,children:this.props.component})):this.props.children}}function W_(e){let{routeContext:t,match:n,children:r}=e,o=p.useContext(Vi);return o&&o.static&&o.staticContext&&(n.route.errorElement||n.route.ErrorBoundary)&&(o.staticContext._deepestRenderedBoundaryId=n.route.id),p.createElement(Pr.Provider,{value:t},r)}function K_(e,t,n,r){var o;if(t===void 0&&(t=[]),n===void 0&&(n=null),r===void 0&&(r=null),e==null){var i;if((i=n)!=null&&i.errors)e=n.matches;else return null}let a=e,l=(o=n)==null?void 0:o.errors;if(l!=null){let d=a.findIndex(u=>u.route.id&&(l==null?void 0:l[u.route.id]));d>=0||ne(!1),a=a.slice(0,Math.min(a.length,d+1))}let s=!1,c=-1;if(n&&r&&r.v7_partialHydration)for(let d=0;d=0?a=a.slice(0,c+1):a=[a[0]];break}}}return a.reduceRight((d,u,f)=>{let h,y=!1,g=null,w=null;n&&(h=l&&u.route.id?l[u.route.id]:void 0,g=u.route.errorElement||B_,s&&(c<0&&f===0?(J_("route-fallback",!1),y=!0,w=null):c===f&&(y=!0,w=u.route.hydrateFallbackElement||null)));let m=t.concat(a.slice(0,f+1)),v=()=>{let _;return h?_=g:y?_=w:u.route.Component?_=p.createElement(u.route.Component,null):u.route.element?_=u.route.element:_=d,p.createElement(W_,{match:u,routeContext:{outlet:d,matches:m,isDataRoute:n!=null},children:_})};return n&&(u.route.ErrorBoundary||u.route.errorElement||f===0)?p.createElement(H_,{location:n.location,revalidation:n.revalidation,component:g,error:h,children:v(),routeContext:{outlet:null,matches:m,isDataRoute:!0}}):v()},null)}var L0=function(e){return e.UseBlocker="useBlocker",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e}(L0||{}),xo=function(e){return e.UseBlocker="useBlocker",e.UseLoaderData="useLoaderData",e.UseActionData="useActionData",e.UseRouteError="useRouteError",e.UseNavigation="useNavigation",e.UseRouteLoaderData="useRouteLoaderData",e.UseMatches="useMatches",e.UseRevalidator="useRevalidator",e.UseNavigateStable="useNavigate",e.UseRouteId="useRouteId",e}(xo||{});function G_(e){let t=p.useContext(Vi);return t||ne(!1),t}function jd(e){let t=p.useContext(Nd);return t||ne(!1),t}function q_(e){let t=p.useContext(Pr);return t||ne(!1),t}function D0(e){let t=q_(),n=t.matches[t.matches.length-1];return n.route.id||ne(!1),n.route.id}function Y_(){return jd(xo.UseNavigation).navigation}function Q_(){let{matches:e,loaderData:t}=jd(xo.UseMatches);return p.useMemo(()=>e.map(n=>_0(n,t)),[e,t])}function Z_(){var e;let t=p.useContext($0),n=jd(xo.UseRouteError),r=D0(xo.UseRouteError);return t!==void 0?t:(e=n.errors)==null?void 0:e[r]}function X_(){let{router:e}=G_(L0.UseNavigateStable),t=D0(xo.UseNavigateStable),n=p.useRef(!1);return O0(()=>{n.current=!0}),p.useCallback(function(o,i){i===void 0&&(i={}),n.current&&(typeof o=="number"?e.navigate(o):e.navigate(o,$i({fromRouteId:t},i)))},[e,t])}const Vp={};function J_(e,t,n){!t&&!Vp[e]&&(Vp[e]=!0)}function ew(e){let{basename:t="/",children:n=null,location:r,navigationType:o=De.Pop,navigator:i,static:a=!1,future:l}=e;So()&&ne(!1);let s=t.replace(/^\/*/,"/"),c=p.useMemo(()=>({basename:s,navigator:i,static:a,future:$i({v7_relativeSplatPath:!1},l)}),[s,l,i,a]);typeof r=="string"&&(r=wn(r));let{pathname:d="/",search:u="",hash:f="",state:h=null,key:y="default"}=r,g=p.useMemo(()=>{let w=Cr(d,s);return w==null?null:{location:{pathname:w,search:u,hash:f,state:h,key:y},navigationType:o}},[s,d,u,f,h,y,o]);return g==null?null:p.createElement(nr.Provider,{value:c},p.createElement(Vl.Provider,{children:n,value:g}))}new Promise(()=>{});function tw(e){let t={hasErrorBoundary:e.ErrorBoundary!=null||e.errorElement!=null};return e.Component&&Object.assign(t,{element:p.createElement(e.Component),Component:void 0}),e.HydrateFallback&&Object.assign(t,{hydrateFallbackElement:p.createElement(e.HydrateFallback),HydrateFallback:void 0}),e.ErrorBoundary&&Object.assign(t,{errorElement:p.createElement(e.ErrorBoundary),ErrorBoundary:void 0}),t}/** * React Router DOM v6.22.3 * * Copyright (c) Remix Software Inc. @@ -71,8 +71,8 @@ Error generating stack: `+i.message+` * LICENSE.md file in the root directory of this source tree. * * @license MIT - */function _o(){return _o=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[o]=e[o]);return n}function r2(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function o2(e,t){return e.button===0&&(!t||t==="_self")&&!r2(e)}const i2=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],a2="6";try{window.__reactRouterVersion=a2}catch{}function l2(e,t){return Cw({basename:t==null?void 0:t.basename,future:_o({},t==null?void 0:t.future,{v7_prependBasename:!0}),history:Q_({window:t==null?void 0:t.window}),hydrationData:(t==null?void 0:t.hydrationData)||s2(),routes:e,mapRouteProperties:t2,window:t==null?void 0:t.window}).initialize()}function s2(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=_o({},t,{errors:u2(t.errors)})),t}function u2(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,o]of t)if(o&&o.__type==="RouteErrorResponse")n[r]=new Ld(o.status,o.statusText,o.data,o.internal===!0);else if(o&&o.__type==="Error"){if(o.__subType){let i=window[o.__subType];if(typeof i=="function")try{let a=new i(o.message);a.stack="",n[r]=a}catch{}}if(n[r]==null){let i=new Error(o.message);i.stack="",n[r]=i}}else n[r]=o;return n}const c2=p.createContext({isTransitioning:!1}),d2=p.createContext(new Map),f2="startTransition",Bp=Uc[f2],p2="flushSync",Hp=Y_[p2];function h2(e){Bp?Bp(e):e()}function Go(e){Hp?Hp(e):e()}class m2{constructor(){this.status="pending",this.promise=new Promise((t,n)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",t(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",n(r))}})}}function v2(e){let{fallbackElement:t,router:n,future:r}=e,[o,i]=p.useState(n.state),[a,l]=p.useState(),[s,c]=p.useState({isTransitioning:!1}),[d,u]=p.useState(),[f,h]=p.useState(),[y,g]=p.useState(),w=p.useRef(new Map),{v7_startTransition:m}=r||{},v=p.useCallback(P=>{m?h2(P):P()},[m]),_=p.useCallback((P,A)=>{let{deletedFetchers:S,unstable_flushSync:O,unstable_viewTransitionOpts:j}=A;S.forEach(z=>w.current.delete(z)),P.fetchers.forEach((z,$)=>{z.data!==void 0&&w.current.set($,z.data)});let N=n.window==null||typeof n.window.document.startViewTransition!="function";if(!j||N){O?Go(()=>i(P)):v(()=>i(P));return}if(O){Go(()=>{f&&(d&&d.resolve(),f.skipTransition()),c({isTransitioning:!0,flushSync:!0,currentLocation:j.currentLocation,nextLocation:j.nextLocation})});let z=n.window.document.startViewTransition(()=>{Go(()=>i(P))});z.finished.finally(()=>{Go(()=>{u(void 0),h(void 0),l(void 0),c({isTransitioning:!1})})}),Go(()=>h(z));return}f?(d&&d.resolve(),f.skipTransition(),g({state:P,currentLocation:j.currentLocation,nextLocation:j.nextLocation})):(l(P),c({isTransitioning:!0,flushSync:!1,currentLocation:j.currentLocation,nextLocation:j.nextLocation}))},[n.window,f,d,w,v]);p.useLayoutEffect(()=>n.subscribe(_),[n,_]),p.useEffect(()=>{s.isTransitioning&&!s.flushSync&&u(new m2)},[s]),p.useEffect(()=>{if(d&&a&&n.window){let P=a,A=d.promise,S=n.window.document.startViewTransition(async()=>{v(()=>i(P)),await A});S.finished.finally(()=>{u(void 0),h(void 0),l(void 0),c({isTransitioning:!1})}),h(S)}},[v,a,d,n.window]),p.useEffect(()=>{d&&a&&o.location.key===a.location.key&&d.resolve()},[d,f,o.location,a]),p.useEffect(()=>{!s.isTransitioning&&y&&(l(y.state),c({isTransitioning:!0,flushSync:!1,currentLocation:y.currentLocation,nextLocation:y.nextLocation}),g(void 0))},[s.isTransitioning,y]),p.useEffect(()=>{},[]);let E=p.useMemo(()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:P=>n.navigate(P),push:(P,A,S)=>n.navigate(P,{state:A,preventScrollReset:S==null?void 0:S.preventScrollReset}),replace:(P,A,S)=>n.navigate(P,{replace:!0,state:A,preventScrollReset:S==null?void 0:S.preventScrollReset})}),[n]),C=n.basename||"/",k=p.useMemo(()=>({router:n,navigator:E,static:!1,basename:C}),[n,E,C]);return p.createElement(p.Fragment,null,p.createElement(Vi.Provider,{value:k},p.createElement(Nd.Provider,{value:o},p.createElement(d2.Provider,{value:w.current},p.createElement(c2.Provider,{value:s},p.createElement(e2,{basename:C,location:o.location,navigationType:o.historyAction,navigator:E,future:{v7_relativeSplatPath:n.future.v7_relativeSplatPath}},o.initialized||n.future.v7_partialHydration?p.createElement(g2,{routes:n.routes,future:n.future,state:o}):t))))),null)}function g2(e){let{routes:t,future:n,state:r}=e;return Uw(t,void 0,r,n)}const y2=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",x2=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,N0=p.forwardRef(function(t,n){let{onClick:r,relative:o,reloadDocument:i,replace:a,state:l,target:s,to:c,preventScrollReset:d,unstable_viewTransition:u}=t,f=n2(t,i2),{basename:h}=p.useContext(nr),y,g=!1;if(typeof c=="string"&&x2.test(c)&&(y=c,y2))try{let _=new URL(window.location.href),E=c.startsWith("//")?new URL(_.protocol+c):new URL(c),C=Cr(E.pathname,h);E.origin===_.origin&&C!=null?c=C+E.search+E.hash:g=!0}catch{}let w=jw(c,{relative:o}),m=k2(c,{replace:a,state:l,target:s,preventScrollReset:d,relative:o,unstable_viewTransition:u});function v(_){r&&r(_),_.defaultPrevented||m(_)}return p.createElement("a",_o({},f,{href:y||w,onClick:g||i?r:v,ref:n,target:s}))});function _2(e){let{getKey:t,storageKey:n}=e;return b2({getKey:t,storageKey:n}),null}var rc;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(rc||(rc={}));var oc;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(oc||(oc={}));function w2(e){let t=p.useContext(Vi);return t||ne(!1),t}function E2(e){let t=p.useContext(Nd);return t||ne(!1),t}function k2(e,t){let{target:n,replace:r,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l}=t===void 0?{}:t,s=Md(),c=Re(),d=I0(e,{relative:a});return p.useCallback(u=>{if(o2(u,n)){u.preventDefault();let f=r!==void 0?r:wr(c)===wr(d);s(e,{replace:f,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l})}},[c,s,d,r,o,n,e,i,a,l])}const Wp="react-router-scroll-positions";let ma={};function b2(e){let{getKey:t,storageKey:n}=e===void 0?{}:e,{router:r}=w2(rc.UseScrollRestoration),{restoreScrollPosition:o,preventScrollReset:i}=E2(oc.UseScrollRestoration),{basename:a}=p.useContext(nr),l=Re(),s=Qw(),c=Yw();p.useEffect(()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"}),[]),C2(p.useCallback(()=>{if(c.state==="idle"){let d=(t?t(l,s):null)||l.key;ma[d]=window.scrollY}try{sessionStorage.setItem(n||Wp,JSON.stringify(ma))}catch{}window.history.scrollRestoration="auto"},[n,t,c.state,l,s])),typeof document<"u"&&(p.useLayoutEffect(()=>{try{let d=sessionStorage.getItem(n||Wp);d&&(ma=JSON.parse(d))}catch{}},[n]),p.useLayoutEffect(()=>{let d=t&&a!=="/"?(f,h)=>t(_o({},f,{pathname:Cr(f.pathname,a)||f.pathname}),h):t,u=r==null?void 0:r.enableScrollRestoration(ma,()=>window.scrollY,d);return()=>u&&u()},[r,a,t]),p.useLayoutEffect(()=>{if(o!==!1){if(typeof o=="number"){window.scrollTo(0,o);return}if(l.hash){let d=document.getElementById(decodeURIComponent(l.hash.slice(1)));if(d){d.scrollIntoView();return}}i!==!0&&window.scrollTo(0,0)}},[l,o,i]))}function C2(e,t){let{capture:n}=t||{};p.useEffect(()=>{let r=n!=null?{capture:n}:void 0;return window.addEventListener("pagehide",e,r),()=>{window.removeEventListener("pagehide",e,r)}},[e,n])}const M0={blogDir:"./pages/blog",rootDir:"docs",title:"Sequence",titleTemplate:"%s – Sequence",iconUrl:{dark:"/img/favicon.ico",light:"/img/favicon.ico"},logoUrl:{dark:"/img/sequence-composite-dark.svg",light:"/img/sequence-composite-light.svg"},basePath:"",topNav:[{text:"Solutions",items:[{text:"Wallets",link:"/solutions/wallets/overview",match:"/solutions/wallets/overview",id:273,items:[]},{text:"Marketplace",link:"/solutions/marketplaces/overview",match:"/solutions/marketplaces/overview",id:274,items:[]},{text:"Collectibles",link:"/solutions/collectibles/contracts/deploy-an-item-collection",match:"/solutions/collectibles/contracts/deploy-an-item-collection",id:275,items:[]},{text:"Payments",link:"/solutions/payments/onramps/fiat-on-ramps",match:"/solutions/payments/onramps/fiat-on-ramps",id:276,items:[]},{text:"Builder Console",link:"/solutions/builder/overview",match:"/solutions/builder/overview",items:[{text:"Overview",link:"/solutions/builder/overview",match:"/solutions/builder/overview",id:278,items:[]}],id:277}],id:272},{text:"Guides",items:[{text:"Web3 Game with WebGL",link:"/guides/webgl-guide",match:"/guides/webgl-guide",id:280,items:[]},{text:"Web3 Game with Unity",link:"/guides/unity-guide",match:"/guides/unity-guide",id:281,items:[]},{text:"Serverless Collectibles",link:"/guides/mint-collectibles-serverless",match:"/guides/mint-collectibles-serverless",id:282,items:[]},{text:"AI Lootboxes",link:"/guides/lootbox-guide",match:"/guides/lootbox-guide",id:283,items:[]},{text:"Custom Marketplace",link:"/guides/template-marketplace-api",match:"/guides/template-marketplace-api",id:284,items:[]}],id:279},{text:"SDKs",items:[{text:"Unity",link:"/sdk/unity/overview",match:"/sdk/unity/overview",id:286,items:[]},{text:"Unreal",link:"/sdk/unreal/overview",match:"/sdk/unreal/overview",id:287,items:[]},{text:"Typescript",link:"/sdk/typescript/guides/overview",match:"/sdk/typescript/guides/overview",id:288,items:[]},{text:"Sequence Kit",link:"/sdk/sequence-kit/overview",match:"/sdk/sequence-kit/overview",id:289,items:[]},{text:"Go",link:"/sdk/go/overview",match:"/sdk/go/overview",id:290,items:[]}],id:285},{text:"APIs",items:[{text:"Relayer API",link:"/api/relayer/overview",id:292,items:[]},{text:"Indexer API",link:"/api/indexer/overview",id:293,items:[]},{text:"Metadata API",link:"/api/metadata/overview",id:294,items:[]},{text:"Marketplace API",link:"/api/marketplace/overview",id:295,items:[]},{text:"Node Gateway",link:"/api/node-gateway",id:296,items:[]}],id:291},{text:"Support",items:[{text:"Support",link:"/support",id:298,items:[]},{text:"Changelog",link:"https://0xsequence.canny.io/changelog",id:299,items:[]},{text:"Restricted Regions",link:"/support/restricted-regions",id:300,items:[]},{text:"Token Directory",link:"/support/token-directory",id:301,items:[]},{text:"FAQ",link:"https://support.sequence.xyz",id:302,items:[]},{text:"Discord",link:"https://discord.gg/sequence",id:303,items:[]},{text:"We're hiring!",link:"https://horizon.io/careers",id:304,items:[]},{text:"Contact Us",link:"https://support.sequence.xyz",id:305,items:[]}],id:297}],sidebar:{"/solutions":[{text:"Wallets",items:[{text:"Overview",link:"/solutions/wallets/overview"},{text:"Embedded Wallet",collapsed:!0,items:[{text:"Overview",link:"/solutions/wallets/embedded-wallet/overview"},{text:"Quickstart",link:"/solutions/wallets/embedded-wallet/quickstart"},{text:"Examples",collapsed:!0,items:[{text:"Manage Sessions",link:"/solutions/wallets/embedded-wallet/examples/manage-sessions"},{text:"Use Wallets",link:"/solutions/wallets/embedded-wallet/examples/use-wallets"},{text:"Validation",link:"/solutions/wallets/embedded-wallet/examples/validation"},{text:"Transaction Receipts",link:"/solutions/wallets/embedded-wallet/examples/transaction-receipts"}]},{text:"Architecture",link:"/solutions/wallets/embedded-wallet/architecture"},{text:"Implementation Details",collapsed:!0,items:[{text:"Action payloads",link:"/solutions/wallets/embedded-wallet/implementation-details/action-payloads"},{text:"Response payloads",link:"/solutions/wallets/embedded-wallet/implementation-details/response-payloads"},{text:"Trust Contract Recovery Flow",link:"/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow"},{text:"Enclave-Verification",link:"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification"},{text:"Intents",link:"/solutions/wallets/embedded-wallet/implementation-details/intents"}]}]},{text:"Universal Wallet",collapsed:!0,items:[{text:"Overview",link:"/solutions/wallets/universal-wallet/overview"},{text:"Quickstart",link:"/solutions/wallets/universal-wallet/quickstart"},{text:"Examples",collapsed:!0,items:[{text:"Connect Wallet",link:"/solutions/wallets/universal-wallet/examples/connect-wallet"},{text:"Authenticate Users with Message Signature",link:"/solutions/wallets/universal-wallet/examples/auth-address"},{text:"Signing & Verifying Messages",link:"/solutions/wallets/universal-wallet/examples/sign-message"},{text:"No-wallet confirmation signatures",link:"/solutions/wallets/universal-wallet/examples/session-keys"},{text:"Sending Transactions",link:"/solutions/wallets/universal-wallet/examples/send-transaction"},{text:"Sending ERC-20 Tokens",link:"/solutions/wallets/universal-wallet/examples/send-erc20"},{text:"Sending ERC-721 (NFT) Tokens",link:"/solutions/wallets/universal-wallet/examples/send-erc721"},{text:"Sending ERC-1155 (Collectible) Tokens",link:"/solutions/wallets/universal-wallet/examples/send-erc1155"},{text:"Sending a Batch of Transactions",link:"/solutions/wallets/universal-wallet/examples/send-batch-transactions"},{text:"Building Backends with Sequence",link:"/solutions/wallets/universal-wallet/examples/building-backends"}]},{text:"Sequence Kit",link:"/solutions/wallets/universal-wallet/sequence-kit"},{text:"Supported Platforms",link:"/solutions/wallets/universal-wallet/platforms"},{text:"Fiat On-Ramps",link:"/solutions/wallets/universal-wallet/fiat-on-ramps"},{text:"Key Management",link:"/solutions/wallets/universal-wallet/key-management"}]}]},{text:"Marketplace",items:[{text:"Overview",link:"/solutions/marketplaces/overview"},{text:"White-label Marketplace",link:"/solutions/marketplaces/white-label-marketplace"},{text:"Build your Custom Marketplace",collapsed:!0,items:[{text:"Overview",link:"/solutions/marketplaces/orderbook/overview"},{text:"Quickstart",link:"/solutions/marketplaces/orderbook/quickstart"}]}]},{text:"Collectibles",items:[{text:"Deployable Contracts",collapsed:!0,items:[{text:"Deploy a Collectible Contract",link:"/solutions/collectibles/contracts/deploy-an-item-collection"},{text:"Deploy an In-Game Currency (ERC20)",link:"/solutions/collectibles/contracts/deploy-ERC20-currency"}]},{text:"Metadata",collapsed:!0,items:[{text:"Manage Metadata in Builder",link:"/solutions/collectibles/metadata/manage-metadata-builder"}]}]},{text:"Payments",items:[{text:"Onramps",link:"/solutions/payments/onramps/fiat-on-ramps"}]},{text:"Builder Console",collapsed:!0,items:[{text:"Overview",link:"/solutions/builder/overview"},{text:"Get Started",link:"/solutions/builder/getting-started"},{text:"Project Management",link:"/solutions/builder/project-management"},{text:"Contracts",link:"/solutions/builder/contracts"},{text:"Gas Tank",link:"/solutions/builder/gas-tank"},{text:"Wallet SDKs",link:"/solutions/builder/wallet-sdks"},{text:"Embedded Wallet",link:"/solutions/builder/embedded-wallet"},{text:"Node Gateway",link:"/solutions/builder/node-gateway"},{text:"Marketplaces",link:"/solutions/builder/marketplaces"},{text:"Indexer",link:"/solutions/builder/indexer"},{text:"Analytics",link:"/solutions/builder/analytics"},{text:"Settings",link:"/solutions/builder/project-settings"}]},{text:"Technical References",items:[{text:"Chain Support",link:"/solutions/technical-references/chain-support"},{text:"Why Smart Contract Wallets?",link:"/solutions/technical-references/wallet-contracts/why"},{text:"Contract Internals",collapsed:!0,items:[{text:"Deployment",link:"/solutions/technical-references/internals/deployment"},{text:"Sequence v1",collapsed:!0,items:[{text:"Deploy",link:"/solutions/technical-references/internals/v1/deploy"},{text:"Wallet Factory",link:"/solutions/technical-references/internals/v1/wallet-factory"},{text:"Wallet Configuration",link:"/solutions/technical-references/internals/v1/wallet-configuration"},{text:"Signature Encoding",link:"/solutions/technical-references/internals/v1/signature-encoding"},{text:"Wallet Context",link:"/solutions/technical-references/internals/v1/wallet-context"},{text:"Contract Audits",link:"/solutions/technical-references/internals/v1/contract-audits"}]},{text:"Sequence v2",collapsed:!0,items:[{text:"Deploy",link:"/solutions/technical-references/internals/v2/deploy"},{text:"Wallet Configuration",link:"/solutions/technical-references/internals/v2/configuration"}]}]}]}],"/guides":[{text:"Build a game with WebGL",collapsed:!0,items:[{text:"Project setup with webpack",link:"/guides/webgl-guide#1-project-setup-with-webpack"},{text:"Integrate SequenceKit with WaaS",link:"/guides/webgl-guide#2-integrate-sequence-kit"},{text:"Deploy a collectibles contract",link:"/guides/webgl-guide#3-deploy-a-collectibles-contract"},{text:"Deploy a remote minter",link:"/guides/webgl-guide#4-deploy-a-remote-minter--mint-in-game-achievement-tokens"},{text:"Leverage items in-game",link:"/guides/webgl-guide#5-leverage-items-in-game"},{text:"Burn in-game achievement tokens",link:"/guides/webgl-guide#6-burn-in-game-achievement-tokens"},{text:"(Optional) Integrate Embedded Wallet into Sequence Kit",link:"/guides/webgl-guide#7-optional-integrate-embedded-wallet-into-sequence-kit"}]},{text:"Build a Unity game",collapsed:!0,items:[{text:"Integrate SequenceKit with WaaS",link:"/guides/unity-guide#integrate-sequencekit-with-waas"},{text:"Deploy a collectibles contract",link:"/guides/unity-guide#deploy-a-collectibles-contract"},{text:"Deploy a remote minter",link:"/guides/unity-guide#deploy-a-remote-minter"},{text:"Mint in-game achievement tokens",link:"/guides/unity-guide#mint-in-game-achievement-tokens"},{text:"Burn in-game achievement tokens",link:"/guides/unity-guide#burn-in-game-achievement-tokens"},{text:"Integrate an embedded marketplace",link:"/guides/unity-guide#integrate-an-embedded-marketplace"},{text:"Leverage purchased items in-game",link:"/guides/unity-guide#leverage-purchased-items-in-game"}]},{text:"Build a serverless collectible",collapsed:!0,items:[{text:"Setup Cloudflare environment with wrangler cli and deploy a test",link:"/guides/mint-collectibles-serverless#1-setup-cloudflare-environment-with-wrangler-cli-and-deploy-a-test",match:"/guides/mint-collectibles-serverless#1-setup-cloudflare-environment-with-wrangler-cli-and-deploy-a-test"},{text:"Deploy, Sponsor and Update Metadata for an ERC1155 Contract with Builder",link:"/guides/mint-collectibles-serverless#2-deploy-sponsor-and-update-metadata-for-an-erc1155-contract-with-builder"},{text:"Use EthAuthProof to prevent EOA DDoS",link:"/guides/mint-collectibles-serverless#3-use-ethauthproof-to-prevent-eoa-ddos"},{text:"Mint a collectible to wallet",link:"/guides/mint-collectibles-serverless#4-mint-a-collectible-to-wallet"}]},{text:"Build a lootbox with AI minting",collapsed:!0,items:[{text:"Builder Console signup & project creation",link:"/guides/lootbox-guide#1-builder-console-signup--project-creation"},{text:"Access key management",link:"/guides/lootbox-guide#2-access-key-management"},{text:"Sequence Kit integration",link:"/guides/lootbox-guide#3-sequence-kit-integration"},{text:"iframe-to-webapp communication",link:"/guides/lootbox-guide#4-iframe-to-webapp-communication"},{text:"Deploy a contract & sponsor gas",link:"/guides/lootbox-guide#5-deploy-a-contract--sponsor-gas"},{text:"Deploy a Cloudflare Worker",link:"/guides/lootbox-guide#6-deploy-a-cloudflare-worker"},{text:"Generating AI prompts & images",link:"/guides/lootbox-guide#7-generating-ai-prompts--images"},{text:"Uploading media to Sequence metadata service",link:"/guides/lootbox-guide#8-uploading-media-to-sequence-metadata-service"},{text:"Securing your Cloudflare Worker",link:"/guides/lootbox-guide#9-securing-your-cloudflare-worker"},{text:"(Optional) Naive mint restriction per wallet",link:"/guides/lootbox-guide#10-optional-naive-mint-restriction-per-wallet"}]},{text:"Building a custom marketplace",collapsed:!0,items:[{text:"Minting",link:"/guides/custom-marketplace#1-minting"},{text:"Wallet Authentication",link:"/guides/custom-marketplace#2-wallet-authentication"},{text:"Blockchain Queries",link:"/guides/custom-marketplace#3-blockchain-queries"},{text:"Multi-wallet types",link:"/guides/custom-marketplace#4-multi-wallet-types"},{text:"Request creation",link:"/guides/custom-marketplace#5-request-creation"},{text:"Order accepting",link:"/guides/custom-marketplace#6-order-accepting"},{text:"(Optional) Enable Embedded Wallet",link:"/guides/custom-marketplace#7-optional-integrate-embedded-wallet-into-sequence-kit"}]},{text:"Templates",items:[{text:"In-game Wallet Demo",link:"/guides/templates/template-in-game-wallet"},{text:"Build a Backend Transaction Manager",link:"/guides/templates/building-relaying-server"}]}],"/sdk":[{text:"Game Engine",items:[{text:"Unreal",collapsed:!0,items:[{text:"Overview",link:"/sdk/unreal/overview"},{text:"Installation",link:"/sdk/unreal/installation"},{text:"Setup",link:"/sdk/unreal/setup"},{text:"Authentication",link:"/sdk/unreal/authentication"},{text:"API Integration",link:"/sdk/unreal/api-integration"},{text:"Packaging",link:"/sdk/unreal/packaging"}]},{text:"Unity",collapsed:!0,items:[{text:"Overview",link:"/sdk/unity/overview"},{text:"Installation",link:"/sdk/unity/installation"},{text:"Setup",link:"/sdk/unity/setup"},{text:"Authentication",link:"/sdk/unity/authentication"},{text:"Write to blockchain",link:"/sdk/unity/write-to-blockchain"},{text:"Read from Blockchain",link:"/sdk/unity/read-from-blockchain"},{text:"Sign Messages",link:"/sdk/unity/sign-messages"},{text:"Deploy Contracts",link:"/sdk/unity/deploy-contracts"},{text:"Wallet UI",link:"/sdk/unity/wallet-ui"},{text:"Advanced",collapsed:!0,items:[{text:"Introduction",link:"/sdk/unity/Advanced/introduction"},{text:"Wallets",link:"/sdk/unity/Advanced/wallets"},{text:"Clients",link:"/sdk/unity/Advanced/clients"},{text:"Transfers",link:"/sdk/unity/Advanced/transfers"},{text:"Contracts",link:"/sdk/unity/Advanced/contracts"},{text:"Tokens",link:"/sdk/unity/Advanced/tokens"}]}]}]},{text:"Web3",items:[{text:"SequenceKit",collapsed:!0,items:[{text:"Overview",link:"/sdk/sequence-kit/overview"},{text:"Quickstart",link:"/sdk/sequence-kit/getting-started"},{text:"Configuration",link:"/sdk/sequence-kit/configuration"},{text:"Checkout",link:"/sdk/sequence-kit/checkout"},{text:"Custom Connectors",link:"/sdk/sequence-kit/custom-connectors"}]},{text:"TypeScript",collapsed:!0,items:[{text:"Overview",link:"/sdk/typescript/guides/overview"},{text:"Connect Wallet",link:"/sdk/typescript/guides/connect-wallet"},{text:"Authenticate Users with Message Signature",link:"/sdk/typescript/guides/auth-address"},{text:"Signing & Verifying Messages",link:"/sdk/typescript/guides/sign-message"},{text:"No-wallet confirmation signatures",link:"/sdk/typescript/guides/session-keys"},{text:"Sending Transactions",link:"/sdk/typescript/guides/send-transaction"},{text:"Sending ERC-20 Tokens",link:"/sdk/typescript/guides/send-erc20"},{text:"Sending ERC-721 (NFT) Tokens",link:"/sdk/typescript/guides/send-erc721"},{text:"Sending ERC-1155 (Collectible) Tokens",link:"/sdk/typescript/guides/send-erc1155"},{text:"Sending a Batch of Transactions",link:"/sdk/typescript/guides/send-batch-transactions"},{text:"Building Backends with Sequence",link:"/sdk/typescript/guides/building-backends"},{text:"Wallet Connectors",collapsed:!0,items:[{text:"Overview",link:"/sdk/typescript/connectors/overview"},{text:"SequenceKit",link:"/sdk/sequence-kit/overview"},{text:"Wagmi",link:"/sdk/typescript/connectors/wagmi"},{text:"RainbowKit",link:"/sdk/typescript/connectors/rainbow-kit"},{text:"Web3 Onboard",link:"/sdk/typescript/connectors/web3-onboard"},{text:"Web3 React V6",link:"/sdk/typescript/connectors/web3-react-v6"},{text:"Web3Modal",link:"/sdk/typescript/connectors/web3modal"},{text:"FAQ",link:"/sdk/typescript/connectors/FAQ"}]}]},{text:"Go",collapsed:!0,items:[{text:"Overview",link:"/sdk/go/overview"}]}]},{text:"Common Questions",collapsed:!0,items:[{text:"How do I do signature validation?",link:"/wallet/sig-validation"}]}],"/api":[{text:"Relayer",collapsed:!1,items:[{text:"Overview",link:"/api/relayer/overview"},{text:"Installation",link:"/api/relayer/installation"},{text:"Examples",collapsed:!1,items:[{text:"Fetch Fee Options",link:"/api/relayer/examples/fetch-fee-options"},{text:"Send Transactions",link:"/api/relayer/examples/send-transactions"},{text:"Fetch Transaction Receipts",link:"/api/relayer/examples/fetch-transaction-receipts"}]}]},{text:"Indexer",collapsed:!1,items:[{text:"Overview",link:"/api/indexer/overview"},{text:"Installation",link:"/api/indexer/installation"},{text:"Examples",collapsed:!1,items:[{text:"Fetch Tokens",link:"/api/indexer/examples/fetch-tokens"},{text:"Transaction History",link:"/api/indexer/examples/transaction-history"},{text:"Unique Tokens",link:"/api/indexer/examples/unique-tokens"},{text:"Transaction History Token Contract",link:"/api/indexer/examples/transation-history-token-contract"},{text:"Native Network Balance",link:"/api/indexer/examples/native-network-balance"},{text:"Metadata Tips",link:"/api/indexer/metadata-tips"},{text:"Webhooks",link:"/api/indexer/examples/webhook-listener"}]}]},{text:"Metadata",collapsed:!1,items:[{text:"Overview",link:"/api/metadata/overview"},{text:"Examples",collapsed:!1,items:[{text:"Token Metadata",link:"/api/metadata/token-metadata"},{text:"Contract Metadata",link:"/api/metadata/contract-metadata"},{text:"REST API",link:"/api/metadata/rest-api"}]}]},{text:"Marketplace",collapsed:!1,items:[{text:"Overview",link:"/api/marketplace/overview"},{text:"Examples",collapsed:!1,items:[{text:"Creating Market Orders & Listings",link:"/api/marketplace/examples/orderbook-transactions"},{text:"Get Top Orders",link:"/api/marketplace/examples/get-top-orders"},{text:"Get Orderbook",link:"/api/marketplace/examples/get-orderbook"},{text:"Get User Activities",link:"/api/marketplace/examples/get-user-activities"}]}]},{text:"Node Gateway",collapsed:!1,items:[{text:"Overview",link:"/api/node-gateway"}]}],"/support":{items:[{text:"Support",link:"/support"},{text:"Changelog",link:"https://0xsequence.canny.io/changelog"},{text:"Restricted Regions",link:"/support/restricted-regions"},{text:"FAQ",link:"https://support.sequence.xyz"},{text:"Token Directory",link:"/support/token-directory"},{text:"Discord",link:"https://discord.gg/sequence"},{text:"We're hiring!",link:"https://horizon.io/careers"},{text:"Contact Us",link:"https://support.sequence.xyz"}]}},theme:{variables:{fontFamily:{default:"Inter"},color:{background:{light:"#f0f0f0",dark:"#111111"}}}},markdown:{code:{themes:{dark:"github-dark-dimmed",light:"github-light"}}},socials:[],vite:{}},j0=p.createContext(M0);function z0(){return typeof window<"u",M0}function P2({children:e,config:t}){const[n,r]=p.useState(()=>t||z0());return p.useEffect(()=>{},[]),p.useEffect(()=>{typeof window<"u"},[n]),x.jsx(j0.Provider,{value:n,children:e})}function Je(){return p.useContext(j0)}const A2="modulepreload",S2=function(e){return"/"+e},Kp={},b=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));o=Promise.all(n.map(s=>{if(s=S2(s),s in Kp)return;Kp[s]=!0;const c=s.endsWith(".css"),d=c?'[rel="stylesheet"]':"";if(!!r)for(let h=i.length-1;h>=0;h--){const y=i[h];if(y.href===s&&(!c||y.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${d}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":A2,c||(f.as="script",f.crossOrigin=""),f.href=s,l&&f.setAttribute("nonce",l),document.head.appendChild(f),c)return new Promise((h,y)=>{f.addEventListener("load",h),f.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${s}`)))})}))}return o.then(()=>t()).catch(i=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i})},zd=[{lazy:()=>b(()=>import("./index-iPNcXBcC.js"),__vite__mapDeps([0,1])),path:"/",type:"mdx",filePath:"index.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./support-BXsHU3sh.js"),[]),path:"/support",type:"mdx",filePath:"support.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./support-BXsHU3sh.js"),[]),path:"/support.html",type:"mdx",filePath:"support.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./metadata-BkQG7xMK.js"),[]),path:"/api/metadata",type:"mdx",filePath:"api/metadata.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./metadata-BkQG7xMK.js"),[]),path:"/api/metadata.html",type:"mdx",filePath:"api/metadata.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./node-gateway-CHNF87i9.js"),[]),path:"/api/node-gateway",type:"mdx",filePath:"api/node-gateway.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./node-gateway-CHNF87i9.js"),[]),path:"/api/node-gateway.html",type:"mdx",filePath:"api/node-gateway.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./custom-marketplace-CnGNUq38.js"),__vite__mapDeps([2,1])),path:"/guides/custom-marketplace",type:"mdx",filePath:"guides/custom-marketplace.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./custom-marketplace-CnGNUq38.js"),__vite__mapDeps([2,1])),path:"/guides/custom-marketplace.html",type:"mdx",filePath:"guides/custom-marketplace.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./lootbox-guide-BV6SYIJN.js"),__vite__mapDeps([3,1])),path:"/guides/lootbox-guide",type:"mdx",filePath:"guides/lootbox-guide.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./lootbox-guide-BV6SYIJN.js"),__vite__mapDeps([3,1])),path:"/guides/lootbox-guide.html",type:"mdx",filePath:"guides/lootbox-guide.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./mint-collectibles-serverless-DXTaJDF6.js"),__vite__mapDeps([4,1])),path:"/guides/mint-collectibles-serverless",type:"mdx",filePath:"guides/mint-collectibles-serverless.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./mint-collectibles-serverless-DXTaJDF6.js"),__vite__mapDeps([4,1])),path:"/guides/mint-collectibles-serverless.html",type:"mdx",filePath:"guides/mint-collectibles-serverless.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./unity-guide-W8MN8zEw.js"),__vite__mapDeps([5,6])),path:"/guides/unity-guide",type:"mdx",filePath:"guides/unity-guide.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./unity-guide-W8MN8zEw.js"),__vite__mapDeps([5,6])),path:"/guides/unity-guide.html",type:"mdx",filePath:"guides/unity-guide.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./webgl-guide-CiV3i4Bp.js"),__vite__mapDeps([7,1])),path:"/guides/webgl-guide",type:"mdx",filePath:"guides/webgl-guide.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./webgl-guide-CiV3i4Bp.js"),__vite__mapDeps([7,1])),path:"/guides/webgl-guide.html",type:"mdx",filePath:"guides/webgl-guide.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./android-CmcWYvVq.js"),[]),path:"/sdk/android",type:"mdx",filePath:"sdk/android.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./android-CmcWYvVq.js"),[]),path:"/sdk/android.html",type:"mdx",filePath:"sdk/android.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./iOS-CmcWYvVq.js"),[]),path:"/sdk/iOS",type:"mdx",filePath:"sdk/iOS.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./iOS-CmcWYvVq.js"),[]),path:"/sdk/iOS.html",type:"mdx",filePath:"sdk/iOS.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./nodejs-CmcWYvVq.js"),[]),path:"/sdk/nodejs",type:"mdx",filePath:"sdk/nodejs.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./nodejs-CmcWYvVq.js"),[]),path:"/sdk/nodejs.html",type:"mdx",filePath:"sdk/nodejs.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./reactnative-CmcWYvVq.js"),[]),path:"/sdk/reactnative",type:"mdx",filePath:"sdk/reactnative.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./reactnative-CmcWYvVq.js"),[]),path:"/sdk/reactnative.html",type:"mdx",filePath:"sdk/reactnative.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./sequence-kit-CmcWYvVq.js"),[]),path:"/sdk/sequence-kit",type:"mdx",filePath:"sdk/sequence-kit.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./sequence-kit-CmcWYvVq.js"),[]),path:"/sdk/sequence-kit.html",type:"mdx",filePath:"sdk/sequence-kit.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./typescript-CmcWYvVq.js"),[]),path:"/sdk/typescript",type:"mdx",filePath:"sdk/typescript.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./typescript-CmcWYvVq.js"),[]),path:"/sdk/typescript.html",type:"mdx",filePath:"sdk/typescript.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./unity-CmcWYvVq.js"),[]),path:"/sdk/unity",type:"mdx",filePath:"sdk/unity.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./unity-CmcWYvVq.js"),[]),path:"/sdk/unity.html",type:"mdx",filePath:"sdk/unity.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./minter-DBfJAu2G.js"),[]),path:"/solutions/minter",type:"mdx",filePath:"solutions/minter.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./minter-DBfJAu2G.js"),[]),path:"/solutions/minter.html",type:"mdx",filePath:"solutions/minter.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./nft-checkout-h7_wcq32.js"),[]),path:"/solutions/nft-checkout",type:"mdx",filePath:"solutions/nft-checkout.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./nft-checkout-h7_wcq32.js"),[]),path:"/solutions/nft-checkout.html",type:"mdx",filePath:"solutions/nft-checkout.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./onramps-TjQsBORx.js"),[]),path:"/solutions/onramps",type:"mdx",filePath:"solutions/onramps.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./onramps-TjQsBORx.js"),[]),path:"/solutions/onramps.html",type:"mdx",filePath:"solutions/onramps.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./restricted-regions-DMToWn06.js"),[]),path:"/support/restricted-regions",type:"mdx",filePath:"support/restricted-regions.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./restricted-regions-DMToWn06.js"),[]),path:"/support/restricted-regions.html",type:"mdx",filePath:"support/restricted-regions.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./token-directory-BodrMyGl.js"),__vite__mapDeps([8,1])),path:"/support/token-directory",type:"mdx",filePath:"support/token-directory.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./token-directory-BodrMyGl.js"),__vite__mapDeps([8,1])),path:"/support/token-directory.html",type:"mdx",filePath:"support/token-directory.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./installation-zOOoSSOd.js"),[]),path:"/api/indexer/installation",type:"mdx",filePath:"api/indexer/installation.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./installation-zOOoSSOd.js"),[]),path:"/api/indexer/installation.html",type:"mdx",filePath:"api/indexer/installation.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./metadata-tips-CwmeuyP5.js"),[]),path:"/api/indexer/metadata-tips",type:"mdx",filePath:"api/indexer/metadata-tips.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./metadata-tips-CwmeuyP5.js"),[]),path:"/api/indexer/metadata-tips.html",type:"mdx",filePath:"api/indexer/metadata-tips.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-CTbNnWyN.js"),[]),path:"/api/indexer/overview",type:"mdx",filePath:"api/indexer/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-CTbNnWyN.js"),[]),path:"/api/indexer/overview.html",type:"mdx",filePath:"api/indexer/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-Liyqgcat.js"),[]),path:"/api/marketplace/overview",type:"mdx",filePath:"api/marketplace/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-Liyqgcat.js"),[]),path:"/api/marketplace/overview.html",type:"mdx",filePath:"api/marketplace/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./contract-metadata-BG_tBpGs.js"),[]),path:"/api/metadata/contract-metadata",type:"mdx",filePath:"api/metadata/contract-metadata.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./contract-metadata-BG_tBpGs.js"),[]),path:"/api/metadata/contract-metadata.html",type:"mdx",filePath:"api/metadata/contract-metadata.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-U9derJST.js"),[]),path:"/api/metadata/overview",type:"mdx",filePath:"api/metadata/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-U9derJST.js"),[]),path:"/api/metadata/overview.html",type:"mdx",filePath:"api/metadata/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./rest-api-pqC53yKO.js"),[]),path:"/api/metadata/rest-api",type:"mdx",filePath:"api/metadata/rest-api.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./rest-api-pqC53yKO.js"),[]),path:"/api/metadata/rest-api.html",type:"mdx",filePath:"api/metadata/rest-api.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./token-metadata-CUklviEo.js"),[]),path:"/api/metadata/token-metadata",type:"mdx",filePath:"api/metadata/token-metadata.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./token-metadata-CUklviEo.js"),[]),path:"/api/metadata/token-metadata.html",type:"mdx",filePath:"api/metadata/token-metadata.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./installation-DdCsqoM2.js"),[]),path:"/api/relayer/installation",type:"mdx",filePath:"api/relayer/installation.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./installation-DdCsqoM2.js"),[]),path:"/api/relayer/installation.html",type:"mdx",filePath:"api/relayer/installation.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-UQh9Rpu9.js"),[]),path:"/api/relayer/overview",type:"mdx",filePath:"api/relayer/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-UQh9Rpu9.js"),[]),path:"/api/relayer/overview.html",type:"mdx",filePath:"api/relayer/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./building-relaying-server-DF4VjEP5.js"),__vite__mapDeps([9,1])),path:"/guides/templates/building-relaying-server",type:"mdx",filePath:"guides/templates/building-relaying-server.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./building-relaying-server-DF4VjEP5.js"),__vite__mapDeps([9,1])),path:"/guides/templates/building-relaying-server.html",type:"mdx",filePath:"guides/templates/building-relaying-server.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./template-in-game-wallet-D1hUQ_72.js"),[]),path:"/guides/templates/template-in-game-wallet",type:"mdx",filePath:"guides/templates/template-in-game-wallet.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./template-in-game-wallet-D1hUQ_72.js"),[]),path:"/guides/templates/template-in-game-wallet.html",type:"mdx",filePath:"guides/templates/template-in-game-wallet.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-DSpuMOTR.js"),[]),path:"/sdk/go/overview",type:"mdx",filePath:"sdk/go/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-DSpuMOTR.js"),[]),path:"/sdk/go/overview.html",type:"mdx",filePath:"sdk/go/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./checkout-C8LEfIgE.js"),[]),path:"/sdk/sequence-kit/checkout",type:"mdx",filePath:"sdk/sequence-kit/checkout.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./checkout-C8LEfIgE.js"),[]),path:"/sdk/sequence-kit/checkout.html",type:"mdx",filePath:"sdk/sequence-kit/checkout.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./configuration-CGKlLIFM.js"),[]),path:"/sdk/sequence-kit/configuration",type:"mdx",filePath:"sdk/sequence-kit/configuration.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./configuration-CGKlLIFM.js"),[]),path:"/sdk/sequence-kit/configuration.html",type:"mdx",filePath:"sdk/sequence-kit/configuration.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./custom-connectors-C6W190Un.js"),[]),path:"/sdk/sequence-kit/custom-connectors",type:"mdx",filePath:"sdk/sequence-kit/custom-connectors.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./custom-connectors-C6W190Un.js"),[]),path:"/sdk/sequence-kit/custom-connectors.html",type:"mdx",filePath:"sdk/sequence-kit/custom-connectors.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./getting-started-Ds6gJJHd.js"),[]),path:"/sdk/sequence-kit/getting-started",type:"mdx",filePath:"sdk/sequence-kit/getting-started.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./getting-started-Ds6gJJHd.js"),[]),path:"/sdk/sequence-kit/getting-started.html",type:"mdx",filePath:"sdk/sequence-kit/getting-started.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-DIS-xE0C.js"),[]),path:"/sdk/sequence-kit/overview",type:"mdx",filePath:"sdk/sequence-kit/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-DIS-xE0C.js"),[]),path:"/sdk/sequence-kit/overview.html",type:"mdx",filePath:"sdk/sequence-kit/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./authentication-vY9W46eZ.js"),[]),path:"/sdk/unity/authentication",type:"mdx",filePath:"sdk/unity/authentication.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./authentication-vY9W46eZ.js"),[]),path:"/sdk/unity/authentication.html",type:"mdx",filePath:"sdk/unity/authentication.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./deploy-contracts-8ixtIFMy.js"),[]),path:"/sdk/unity/deploy-contracts",type:"mdx",filePath:"sdk/unity/deploy-contracts.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./deploy-contracts-8ixtIFMy.js"),[]),path:"/sdk/unity/deploy-contracts.html",type:"mdx",filePath:"sdk/unity/deploy-contracts.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./installation-DUqbf8L4.js"),[]),path:"/sdk/unity/installation",type:"mdx",filePath:"sdk/unity/installation.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./installation-DUqbf8L4.js"),[]),path:"/sdk/unity/installation.html",type:"mdx",filePath:"sdk/unity/installation.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-D-xf1SpI.js"),[]),path:"/sdk/unity/overview",type:"mdx",filePath:"sdk/unity/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-D-xf1SpI.js"),[]),path:"/sdk/unity/overview.html",type:"mdx",filePath:"sdk/unity/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./read-from-blockchain-CPlWtf_o.js"),[]),path:"/sdk/unity/read-from-blockchain",type:"mdx",filePath:"sdk/unity/read-from-blockchain.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./read-from-blockchain-CPlWtf_o.js"),[]),path:"/sdk/unity/read-from-blockchain.html",type:"mdx",filePath:"sdk/unity/read-from-blockchain.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./setup-CgbuV_IG.js"),[]),path:"/sdk/unity/setup",type:"mdx",filePath:"sdk/unity/setup.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./setup-CgbuV_IG.js"),[]),path:"/sdk/unity/setup.html",type:"mdx",filePath:"sdk/unity/setup.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./sign-messages-CE-Wb7OK.js"),[]),path:"/sdk/unity/sign-messages",type:"mdx",filePath:"sdk/unity/sign-messages.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./sign-messages-CE-Wb7OK.js"),[]),path:"/sdk/unity/sign-messages.html",type:"mdx",filePath:"sdk/unity/sign-messages.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./wallet-ui-WnJsCVYt.js"),[]),path:"/sdk/unity/wallet-ui",type:"mdx",filePath:"sdk/unity/wallet-ui.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./wallet-ui-WnJsCVYt.js"),[]),path:"/sdk/unity/wallet-ui.html",type:"mdx",filePath:"sdk/unity/wallet-ui.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./write-to-blockchain-CM6-sEql.js"),[]),path:"/sdk/unity/write-to-blockchain",type:"mdx",filePath:"sdk/unity/write-to-blockchain.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./write-to-blockchain-CM6-sEql.js"),[]),path:"/sdk/unity/write-to-blockchain.html",type:"mdx",filePath:"sdk/unity/write-to-blockchain.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./api-integration-nT-hPth-.js"),[]),path:"/sdk/unreal/api-integration",type:"mdx",filePath:"sdk/unreal/api-integration.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./api-integration-nT-hPth-.js"),[]),path:"/sdk/unreal/api-integration.html",type:"mdx",filePath:"sdk/unreal/api-integration.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./authentication-C3lG4pLk.js"),[]),path:"/sdk/unreal/authentication",type:"mdx",filePath:"sdk/unreal/authentication.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./authentication-C3lG4pLk.js"),[]),path:"/sdk/unreal/authentication.html",type:"mdx",filePath:"sdk/unreal/authentication.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./installation-BcpyFtoy.js"),[]),path:"/sdk/unreal/installation",type:"mdx",filePath:"sdk/unreal/installation.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./installation-BcpyFtoy.js"),[]),path:"/sdk/unreal/installation.html",type:"mdx",filePath:"sdk/unreal/installation.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-DknqsGX5.js"),[]),path:"/sdk/unreal/overview",type:"mdx",filePath:"sdk/unreal/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-DknqsGX5.js"),[]),path:"/sdk/unreal/overview.html",type:"mdx",filePath:"sdk/unreal/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./packaging-B6eIowig.js"),[]),path:"/sdk/unreal/packaging",type:"mdx",filePath:"sdk/unreal/packaging.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./packaging-B6eIowig.js"),[]),path:"/sdk/unreal/packaging.html",type:"mdx",filePath:"sdk/unreal/packaging.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./setup-KITvMpFu.js"),[]),path:"/sdk/unreal/setup",type:"mdx",filePath:"sdk/unreal/setup.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./setup-KITvMpFu.js"),[]),path:"/sdk/unreal/setup.html",type:"mdx",filePath:"sdk/unreal/setup.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./analytics-Bqxx7fM1.js"),[]),path:"/solutions/builder/analytics",type:"mdx",filePath:"solutions/builder/analytics.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./analytics-Bqxx7fM1.js"),[]),path:"/solutions/builder/analytics.html",type:"mdx",filePath:"solutions/builder/analytics.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./contracts-BEUlfJIE.js"),__vite__mapDeps([10,6])),path:"/solutions/builder/contracts",type:"mdx",filePath:"solutions/builder/contracts.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./contracts-BEUlfJIE.js"),__vite__mapDeps([10,6])),path:"/solutions/builder/contracts.html",type:"mdx",filePath:"solutions/builder/contracts.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./embedded-wallet-BxFTKEU8.js"),[]),path:"/solutions/builder/embedded-wallet",type:"mdx",filePath:"solutions/builder/embedded-wallet.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./embedded-wallet-BxFTKEU8.js"),[]),path:"/solutions/builder/embedded-wallet.html",type:"mdx",filePath:"solutions/builder/embedded-wallet.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./gas-tank-BAfu7q9M.js"),__vite__mapDeps([11,6])),path:"/solutions/builder/gas-tank",type:"mdx",filePath:"solutions/builder/gas-tank.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./gas-tank-BAfu7q9M.js"),__vite__mapDeps([11,6])),path:"/solutions/builder/gas-tank.html",type:"mdx",filePath:"solutions/builder/gas-tank.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./getting-started-DtQ87dP6.js"),__vite__mapDeps([12,13])),path:"/solutions/builder/getting-started",type:"mdx",filePath:"solutions/builder/getting-started.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./getting-started-DtQ87dP6.js"),__vite__mapDeps([12,13])),path:"/solutions/builder/getting-started.html",type:"mdx",filePath:"solutions/builder/getting-started.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./indexer-5eI5-5FE.js"),__vite__mapDeps([14,6])),path:"/solutions/builder/indexer",type:"mdx",filePath:"solutions/builder/indexer.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./indexer-5eI5-5FE.js"),__vite__mapDeps([14,6])),path:"/solutions/builder/indexer.html",type:"mdx",filePath:"solutions/builder/indexer.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./marketplaces-DHQK1A-o.js"),__vite__mapDeps([15,6])),path:"/solutions/builder/marketplaces",type:"mdx",filePath:"solutions/builder/marketplaces.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./marketplaces-DHQK1A-o.js"),__vite__mapDeps([15,6])),path:"/solutions/builder/marketplaces.html",type:"mdx",filePath:"solutions/builder/marketplaces.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./node-gateway-TxKmukUr.js"),__vite__mapDeps([16,6])),path:"/solutions/builder/node-gateway",type:"mdx",filePath:"solutions/builder/node-gateway.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./node-gateway-TxKmukUr.js"),__vite__mapDeps([16,6])),path:"/solutions/builder/node-gateway.html",type:"mdx",filePath:"solutions/builder/node-gateway.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-DWxXbuA7.js"),__vite__mapDeps([17,13])),path:"/solutions/builder/overview",type:"mdx",filePath:"solutions/builder/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-DWxXbuA7.js"),__vite__mapDeps([17,13])),path:"/solutions/builder/overview.html",type:"mdx",filePath:"solutions/builder/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./project-management-BedU01yT.js"),__vite__mapDeps([18,6])),path:"/solutions/builder/project-management",type:"mdx",filePath:"solutions/builder/project-management.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./project-management-BedU01yT.js"),__vite__mapDeps([18,6])),path:"/solutions/builder/project-management.html",type:"mdx",filePath:"solutions/builder/project-management.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./project-settings-BEPVGB9H.js"),__vite__mapDeps([19,6])),path:"/solutions/builder/project-settings",type:"mdx",filePath:"solutions/builder/project-settings.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./project-settings-BEPVGB9H.js"),__vite__mapDeps([19,6])),path:"/solutions/builder/project-settings.html",type:"mdx",filePath:"solutions/builder/project-settings.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./wallet-sdks-xDR8aVZr.js"),__vite__mapDeps([20,6])),path:"/solutions/builder/wallet-sdks",type:"mdx",filePath:"solutions/builder/wallet-sdks.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./wallet-sdks-xDR8aVZr.js"),__vite__mapDeps([20,6])),path:"/solutions/builder/wallet-sdks.html",type:"mdx",filePath:"solutions/builder/wallet-sdks.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-BOmdhlJZ.js"),[]),path:"/solutions/marketplaces/overview",type:"mdx",filePath:"solutions/marketplaces/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-BOmdhlJZ.js"),[]),path:"/solutions/marketplaces/overview.html",type:"mdx",filePath:"solutions/marketplaces/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./white-label-marketplace-CPSX2FiA.js"),__vite__mapDeps([21,6])),path:"/solutions/marketplaces/white-label-marketplace",type:"mdx",filePath:"solutions/marketplaces/white-label-marketplace.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./white-label-marketplace-CPSX2FiA.js"),__vite__mapDeps([21,6])),path:"/solutions/marketplaces/white-label-marketplace.html",type:"mdx",filePath:"solutions/marketplaces/white-label-marketplace.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./5189-4337-Cu1rjX6F.js"),[]),path:"/solutions/technical-references/5189-4337",type:"mdx",filePath:"solutions/technical-references/5189-4337.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./5189-4337-Cu1rjX6F.js"),[]),path:"/solutions/technical-references/5189-4337.html",type:"mdx",filePath:"solutions/technical-references/5189-4337.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./chain-support-72pkJN_2.js"),[]),path:"/solutions/technical-references/chain-support",type:"mdx",filePath:"solutions/technical-references/chain-support.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./chain-support-72pkJN_2.js"),[]),path:"/solutions/technical-references/chain-support.html",type:"mdx",filePath:"solutions/technical-references/chain-support.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-DaiROQHz.js"),[]),path:"/solutions/wallets/overview",type:"mdx",filePath:"solutions/wallets/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-DaiROQHz.js"),[]),path:"/solutions/wallets/overview.html",type:"mdx",filePath:"solutions/wallets/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./fetch-tokens-DeY7ooC4.js"),[]),path:"/api/indexer/examples/fetch-tokens",type:"mdx",filePath:"api/indexer/examples/fetch-tokens.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./fetch-tokens-DeY7ooC4.js"),[]),path:"/api/indexer/examples/fetch-tokens.html",type:"mdx",filePath:"api/indexer/examples/fetch-tokens.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./native-network-balance-C9V0hSJE.js"),[]),path:"/api/indexer/examples/native-network-balance",type:"mdx",filePath:"api/indexer/examples/native-network-balance.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./native-network-balance-C9V0hSJE.js"),[]),path:"/api/indexer/examples/native-network-balance.html",type:"mdx",filePath:"api/indexer/examples/native-network-balance.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./transaction-history-CjK8dQQ5.js"),[]),path:"/api/indexer/examples/transaction-history",type:"mdx",filePath:"api/indexer/examples/transaction-history.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./transaction-history-CjK8dQQ5.js"),[]),path:"/api/indexer/examples/transaction-history.html",type:"mdx",filePath:"api/indexer/examples/transaction-history.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./transation-history-token-contract-B07NOy5Q.js"),[]),path:"/api/indexer/examples/transation-history-token-contract",type:"mdx",filePath:"api/indexer/examples/transation-history-token-contract.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./transation-history-token-contract-B07NOy5Q.js"),[]),path:"/api/indexer/examples/transation-history-token-contract.html",type:"mdx",filePath:"api/indexer/examples/transation-history-token-contract.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./unique-tokens-CUmAK7tg.js"),[]),path:"/api/indexer/examples/unique-tokens",type:"mdx",filePath:"api/indexer/examples/unique-tokens.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./unique-tokens-CUmAK7tg.js"),[]),path:"/api/indexer/examples/unique-tokens.html",type:"mdx",filePath:"api/indexer/examples/unique-tokens.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./webhook-listener-boiSohwl.js"),[]),path:"/api/indexer/examples/webhook-listener",type:"mdx",filePath:"api/indexer/examples/webhook-listener.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./webhook-listener-boiSohwl.js"),[]),path:"/api/indexer/examples/webhook-listener.html",type:"mdx",filePath:"api/indexer/examples/webhook-listener.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./create-simple-orders-BeMs4cgm.js"),__vite__mapDeps([22,1])),path:"/api/marketplace/examples/create-simple-orders",type:"mdx",filePath:"api/marketplace/examples/create-simple-orders.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./create-simple-orders-BeMs4cgm.js"),__vite__mapDeps([22,1])),path:"/api/marketplace/examples/create-simple-orders.html",type:"mdx",filePath:"api/marketplace/examples/create-simple-orders.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./get-orderbook-BtgfiHLC.js"),__vite__mapDeps([23,1])),path:"/api/marketplace/examples/get-orderbook",type:"mdx",filePath:"api/marketplace/examples/get-orderbook.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./get-orderbook-BtgfiHLC.js"),__vite__mapDeps([23,1])),path:"/api/marketplace/examples/get-orderbook.html",type:"mdx",filePath:"api/marketplace/examples/get-orderbook.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./get-top-orders-C55CfIab.js"),__vite__mapDeps([24,1])),path:"/api/marketplace/examples/get-top-orders",type:"mdx",filePath:"api/marketplace/examples/get-top-orders.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./get-top-orders-C55CfIab.js"),__vite__mapDeps([24,1])),path:"/api/marketplace/examples/get-top-orders.html",type:"mdx",filePath:"api/marketplace/examples/get-top-orders.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./get-user-activities-CP8AopuV.js"),[]),path:"/api/marketplace/examples/get-user-activities",type:"mdx",filePath:"api/marketplace/examples/get-user-activities.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./get-user-activities-CP8AopuV.js"),[]),path:"/api/marketplace/examples/get-user-activities.html",type:"mdx",filePath:"api/marketplace/examples/get-user-activities.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./orderbook-transactions-BikCYCAV.js"),__vite__mapDeps([25,1])),path:"/api/marketplace/examples/orderbook-transactions",type:"mdx",filePath:"api/marketplace/examples/orderbook-transactions.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./orderbook-transactions-BikCYCAV.js"),__vite__mapDeps([25,1])),path:"/api/marketplace/examples/orderbook-transactions.html",type:"mdx",filePath:"api/marketplace/examples/orderbook-transactions.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./fetch-fee-options-BchxiuTq.js"),[]),path:"/api/relayer/examples/fetch-fee-options",type:"mdx",filePath:"api/relayer/examples/fetch-fee-options.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./fetch-fee-options-BchxiuTq.js"),[]),path:"/api/relayer/examples/fetch-fee-options.html",type:"mdx",filePath:"api/relayer/examples/fetch-fee-options.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./fetch-transaction-receipts-CAM6psIi.js"),[]),path:"/api/relayer/examples/fetch-transaction-receipts",type:"mdx",filePath:"api/relayer/examples/fetch-transaction-receipts.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./fetch-transaction-receipts-CAM6psIi.js"),[]),path:"/api/relayer/examples/fetch-transaction-receipts.html",type:"mdx",filePath:"api/relayer/examples/fetch-transaction-receipts.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-transactions-S9TI-AiN.js"),[]),path:"/api/relayer/examples/send-transactions",type:"mdx",filePath:"api/relayer/examples/send-transactions.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-transactions-S9TI-AiN.js"),[]),path:"/api/relayer/examples/send-transactions.html",type:"mdx",filePath:"api/relayer/examples/send-transactions.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./FAQ-B-oPq44y.js"),[]),path:"/sdk/typescript/connectors/FAQ",type:"mdx",filePath:"sdk/typescript/connectors/FAQ.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./FAQ-B-oPq44y.js"),[]),path:"/sdk/typescript/connectors/FAQ.html",type:"mdx",filePath:"sdk/typescript/connectors/FAQ.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-BQpMzbxx.js"),[]),path:"/sdk/typescript/connectors/overview",type:"mdx",filePath:"sdk/typescript/connectors/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-BQpMzbxx.js"),[]),path:"/sdk/typescript/connectors/overview.html",type:"mdx",filePath:"sdk/typescript/connectors/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./rainbow-kit-6b9hKeGZ.js"),[]),path:"/sdk/typescript/connectors/rainbow-kit",type:"mdx",filePath:"sdk/typescript/connectors/rainbow-kit.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./rainbow-kit-6b9hKeGZ.js"),[]),path:"/sdk/typescript/connectors/rainbow-kit.html",type:"mdx",filePath:"sdk/typescript/connectors/rainbow-kit.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./sequence-kit-DuUPFsg3.js"),[]),path:"/sdk/typescript/connectors/sequence-kit",type:"mdx",filePath:"sdk/typescript/connectors/sequence-kit.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./sequence-kit-DuUPFsg3.js"),[]),path:"/sdk/typescript/connectors/sequence-kit.html",type:"mdx",filePath:"sdk/typescript/connectors/sequence-kit.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./wagmi-GHgWQy9I.js"),[]),path:"/sdk/typescript/connectors/wagmi",type:"mdx",filePath:"sdk/typescript/connectors/wagmi.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./wagmi-GHgWQy9I.js"),[]),path:"/sdk/typescript/connectors/wagmi.html",type:"mdx",filePath:"sdk/typescript/connectors/wagmi.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./web3-onboard-Dq4ozGES.js"),[]),path:"/sdk/typescript/connectors/web3-onboard",type:"mdx",filePath:"sdk/typescript/connectors/web3-onboard.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./web3-onboard-Dq4ozGES.js"),[]),path:"/sdk/typescript/connectors/web3-onboard.html",type:"mdx",filePath:"sdk/typescript/connectors/web3-onboard.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./web3-react-v6-wOO63-pn.js"),[]),path:"/sdk/typescript/connectors/web3-react-v6",type:"mdx",filePath:"sdk/typescript/connectors/web3-react-v6.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./web3-react-v6-wOO63-pn.js"),[]),path:"/sdk/typescript/connectors/web3-react-v6.html",type:"mdx",filePath:"sdk/typescript/connectors/web3-react-v6.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./web3modal-D4SuzK9s.js"),[]),path:"/sdk/typescript/connectors/web3modal",type:"mdx",filePath:"sdk/typescript/connectors/web3modal.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./web3modal-D4SuzK9s.js"),[]),path:"/sdk/typescript/connectors/web3modal.html",type:"mdx",filePath:"sdk/typescript/connectors/web3modal.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./auth-address-CTdGsSyF.js"),[]),path:"/sdk/typescript/guides/auth-address",type:"mdx",filePath:"sdk/typescript/guides/auth-address.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./auth-address-CTdGsSyF.js"),[]),path:"/sdk/typescript/guides/auth-address.html",type:"mdx",filePath:"sdk/typescript/guides/auth-address.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./building-backends-D2FPQeru.js"),[]),path:"/sdk/typescript/guides/building-backends",type:"mdx",filePath:"sdk/typescript/guides/building-backends.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./building-backends-D2FPQeru.js"),[]),path:"/sdk/typescript/guides/building-backends.html",type:"mdx",filePath:"sdk/typescript/guides/building-backends.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./connect-wallet-C35QV4if.js"),[]),path:"/sdk/typescript/guides/connect-wallet",type:"mdx",filePath:"sdk/typescript/guides/connect-wallet.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./connect-wallet-C35QV4if.js"),[]),path:"/sdk/typescript/guides/connect-wallet.html",type:"mdx",filePath:"sdk/typescript/guides/connect-wallet.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-C9MJKnib.js"),[]),path:"/sdk/typescript/guides/overview",type:"mdx",filePath:"sdk/typescript/guides/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-C9MJKnib.js"),[]),path:"/sdk/typescript/guides/overview.html",type:"mdx",filePath:"sdk/typescript/guides/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-batch-transactions-DcC06Qp6.js"),[]),path:"/sdk/typescript/guides/send-batch-transactions",type:"mdx",filePath:"sdk/typescript/guides/send-batch-transactions.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-batch-transactions-DcC06Qp6.js"),[]),path:"/sdk/typescript/guides/send-batch-transactions.html",type:"mdx",filePath:"sdk/typescript/guides/send-batch-transactions.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-erc1155-BXzP7rSa.js"),[]),path:"/sdk/typescript/guides/send-erc1155",type:"mdx",filePath:"sdk/typescript/guides/send-erc1155.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-erc1155-BXzP7rSa.js"),[]),path:"/sdk/typescript/guides/send-erc1155.html",type:"mdx",filePath:"sdk/typescript/guides/send-erc1155.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-erc20-CbDF6eXa.js"),[]),path:"/sdk/typescript/guides/send-erc20",type:"mdx",filePath:"sdk/typescript/guides/send-erc20.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-erc20-CbDF6eXa.js"),[]),path:"/sdk/typescript/guides/send-erc20.html",type:"mdx",filePath:"sdk/typescript/guides/send-erc20.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-erc721-XUFXULfg.js"),[]),path:"/sdk/typescript/guides/send-erc721",type:"mdx",filePath:"sdk/typescript/guides/send-erc721.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-erc721-XUFXULfg.js"),[]),path:"/sdk/typescript/guides/send-erc721.html",type:"mdx",filePath:"sdk/typescript/guides/send-erc721.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-transaction-zvyG1lNM.js"),[]),path:"/sdk/typescript/guides/send-transaction",type:"mdx",filePath:"sdk/typescript/guides/send-transaction.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-transaction-zvyG1lNM.js"),[]),path:"/sdk/typescript/guides/send-transaction.html",type:"mdx",filePath:"sdk/typescript/guides/send-transaction.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./session-keys-hgo25RMV.js"),[]),path:"/sdk/typescript/guides/session-keys",type:"mdx",filePath:"sdk/typescript/guides/session-keys.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./session-keys-hgo25RMV.js"),[]),path:"/sdk/typescript/guides/session-keys.html",type:"mdx",filePath:"sdk/typescript/guides/session-keys.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./sign-message-DJ6UFovk.js"),__vite__mapDeps([26,1])),path:"/sdk/typescript/guides/sign-message",type:"mdx",filePath:"sdk/typescript/guides/sign-message.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./sign-message-DJ6UFovk.js"),__vite__mapDeps([26,1])),path:"/sdk/typescript/guides/sign-message.html",type:"mdx",filePath:"sdk/typescript/guides/sign-message.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./clients-BxLM8xrW.js"),[]),path:"/sdk/unity/Advanced/clients",type:"mdx",filePath:"sdk/unity/Advanced/clients.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./clients-BxLM8xrW.js"),[]),path:"/sdk/unity/Advanced/clients.html",type:"mdx",filePath:"sdk/unity/Advanced/clients.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./contracts-DjDW2TeL.js"),[]),path:"/sdk/unity/Advanced/contracts",type:"mdx",filePath:"sdk/unity/Advanced/contracts.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./contracts-DjDW2TeL.js"),[]),path:"/sdk/unity/Advanced/contracts.html",type:"mdx",filePath:"sdk/unity/Advanced/contracts.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./introduction-DoSmSIM0.js"),[]),path:"/sdk/unity/Advanced/introduction",type:"mdx",filePath:"sdk/unity/Advanced/introduction.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./introduction-DoSmSIM0.js"),[]),path:"/sdk/unity/Advanced/introduction.html",type:"mdx",filePath:"sdk/unity/Advanced/introduction.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./tokens-FSt-V0Oa.js"),[]),path:"/sdk/unity/Advanced/tokens",type:"mdx",filePath:"sdk/unity/Advanced/tokens.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./tokens-FSt-V0Oa.js"),[]),path:"/sdk/unity/Advanced/tokens.html",type:"mdx",filePath:"sdk/unity/Advanced/tokens.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./transfers-Bw3dzTjO.js"),[]),path:"/sdk/unity/Advanced/transfers",type:"mdx",filePath:"sdk/unity/Advanced/transfers.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./transfers-Bw3dzTjO.js"),[]),path:"/sdk/unity/Advanced/transfers.html",type:"mdx",filePath:"sdk/unity/Advanced/transfers.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./wallets-DeiwdX_O.js"),[]),path:"/sdk/unity/Advanced/wallets",type:"mdx",filePath:"sdk/unity/Advanced/wallets.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./wallets-DeiwdX_O.js"),[]),path:"/sdk/unity/Advanced/wallets.html",type:"mdx",filePath:"sdk/unity/Advanced/wallets.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./deploy-ERC20-currency-B53gvu_W.js"),__vite__mapDeps([27,1])),path:"/solutions/collectibles/contracts/deploy-ERC20-currency",type:"mdx",filePath:"solutions/collectibles/contracts/deploy-ERC20-currency.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./deploy-ERC20-currency-B53gvu_W.js"),__vite__mapDeps([27,1])),path:"/solutions/collectibles/contracts/deploy-ERC20-currency.html",type:"mdx",filePath:"solutions/collectibles/contracts/deploy-ERC20-currency.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./deploy-an-item-collection-DcjKTGVi.js"),__vite__mapDeps([28,1])),path:"/solutions/collectibles/contracts/deploy-an-item-collection",type:"mdx",filePath:"solutions/collectibles/contracts/deploy-an-item-collection.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./deploy-an-item-collection-DcjKTGVi.js"),__vite__mapDeps([28,1])),path:"/solutions/collectibles/contracts/deploy-an-item-collection.html",type:"mdx",filePath:"solutions/collectibles/contracts/deploy-an-item-collection.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./manage-metadata-builder-CQqBJOxI.js"),[]),path:"/solutions/collectibles/metadata/manage-metadata-builder",type:"mdx",filePath:"solutions/collectibles/metadata/manage-metadata-builder.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./manage-metadata-builder-CQqBJOxI.js"),[]),path:"/solutions/collectibles/metadata/manage-metadata-builder.html",type:"mdx",filePath:"solutions/collectibles/metadata/manage-metadata-builder.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-BtwLSJPF.js"),__vite__mapDeps([29,1,13])),path:"/solutions/marketplaces/orderbook/overview",type:"mdx",filePath:"solutions/marketplaces/orderbook/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-BtwLSJPF.js"),__vite__mapDeps([29,1,13])),path:"/solutions/marketplaces/orderbook/overview.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./quickstart-8ohN6OYL.js"),[]),path:"/solutions/marketplaces/orderbook/quickstart",type:"mdx",filePath:"solutions/marketplaces/orderbook/quickstart.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./quickstart-8ohN6OYL.js"),[]),path:"/solutions/marketplaces/orderbook/quickstart.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/quickstart.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./fiat-on-ramps-jUs35Ot8.js"),[]),path:"/solutions/payments/onramps/fiat-on-ramps",type:"mdx",filePath:"solutions/payments/onramps/fiat-on-ramps.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./fiat-on-ramps-jUs35Ot8.js"),[]),path:"/solutions/payments/onramps/fiat-on-ramps.html",type:"mdx",filePath:"solutions/payments/onramps/fiat-on-ramps.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./deployment-CbSjPzBU.js"),__vite__mapDeps([30,1])),path:"/solutions/technical-references/internals/deployment",type:"mdx",filePath:"solutions/technical-references/internals/deployment.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./deployment-CbSjPzBU.js"),__vite__mapDeps([30,1])),path:"/solutions/technical-references/internals/deployment.html",type:"mdx",filePath:"solutions/technical-references/internals/deployment.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./why-DX16Xg2z.js"),[]),path:"/solutions/technical-references/wallet-contracts/why",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/why.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./why-DX16Xg2z.js"),[]),path:"/solutions/technical-references/wallet-contracts/why.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/why.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./architecture-BNgaCcor.js"),[]),path:"/solutions/wallets/embedded-wallet/architecture",type:"mdx",filePath:"solutions/wallets/embedded-wallet/architecture.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./architecture-BNgaCcor.js"),[]),path:"/solutions/wallets/embedded-wallet/architecture.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/architecture.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-BUH6NkdU.js"),[]),path:"/solutions/wallets/embedded-wallet/overview",type:"mdx",filePath:"solutions/wallets/embedded-wallet/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-BUH6NkdU.js"),[]),path:"/solutions/wallets/embedded-wallet/overview.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./quickstart-wN0C4fyk.js"),[]),path:"/solutions/wallets/embedded-wallet/quickstart",type:"mdx",filePath:"solutions/wallets/embedded-wallet/quickstart.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./quickstart-wN0C4fyk.js"),[]),path:"/solutions/wallets/embedded-wallet/quickstart.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/quickstart.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./fiat-on-ramps-2bExQQ8h.js"),[]),path:"/solutions/wallets/universal-wallet/fiat-on-ramps",type:"mdx",filePath:"solutions/wallets/universal-wallet/fiat-on-ramps.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./fiat-on-ramps-2bExQQ8h.js"),[]),path:"/solutions/wallets/universal-wallet/fiat-on-ramps.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/fiat-on-ramps.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./key-management-D8FiWF93.js"),[]),path:"/solutions/wallets/universal-wallet/key-management",type:"mdx",filePath:"solutions/wallets/universal-wallet/key-management.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./key-management-D8FiWF93.js"),[]),path:"/solutions/wallets/universal-wallet/key-management.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/key-management.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-C9WkyCuH.js"),[]),path:"/solutions/wallets/universal-wallet/overview",type:"mdx",filePath:"solutions/wallets/universal-wallet/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./overview-C9WkyCuH.js"),[]),path:"/solutions/wallets/universal-wallet/overview.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/overview.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./platforms-CHWtGtxA.js"),[]),path:"/solutions/wallets/universal-wallet/platforms",type:"mdx",filePath:"solutions/wallets/universal-wallet/platforms.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./platforms-CHWtGtxA.js"),[]),path:"/solutions/wallets/universal-wallet/platforms.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/platforms.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./quickstart-Bl_DmpQ5.js"),[]),path:"/solutions/wallets/universal-wallet/quickstart",type:"mdx",filePath:"solutions/wallets/universal-wallet/quickstart.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./quickstart-Bl_DmpQ5.js"),[]),path:"/solutions/wallets/universal-wallet/quickstart.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/quickstart.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./sequence-kit-BnjjrzMO.js"),[]),path:"/solutions/wallets/universal-wallet/sequence-kit",type:"mdx",filePath:"solutions/wallets/universal-wallet/sequence-kit.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./sequence-kit-BnjjrzMO.js"),[]),path:"/solutions/wallets/universal-wallet/sequence-kit.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/sequence-kit.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./01-deploy-D7rCzihm.js"),__vite__mapDeps([31,1])),path:"/solutions/technical-references/internals/v1/01-deploy",type:"mdx",filePath:"solutions/technical-references/internals/v1/01-deploy.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./01-deploy-D7rCzihm.js"),__vite__mapDeps([31,1])),path:"/solutions/technical-references/internals/v1/01-deploy.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/01-deploy.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./contract-audits-DpVjYx7O.js"),[]),path:"/solutions/technical-references/internals/v1/contract-audits",type:"mdx",filePath:"solutions/technical-references/internals/v1/contract-audits.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./contract-audits-DpVjYx7O.js"),[]),path:"/solutions/technical-references/internals/v1/contract-audits.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/contract-audits.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./deploy-BPDvQs8w.js"),__vite__mapDeps([32,1])),path:"/solutions/technical-references/internals/v1/deploy",type:"mdx",filePath:"solutions/technical-references/internals/v1/deploy.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./deploy-BPDvQs8w.js"),__vite__mapDeps([32,1])),path:"/solutions/technical-references/internals/v1/deploy.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/deploy.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./guest-module-BaAl8n41.js"),[]),path:"/solutions/technical-references/internals/v1/guest-module",type:"mdx",filePath:"solutions/technical-references/internals/v1/guest-module.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./guest-module-BaAl8n41.js"),[]),path:"/solutions/technical-references/internals/v1/guest-module.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/guest-module.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./main-module-upgradeable-CW96S4Qk.js"),[]),path:"/solutions/technical-references/internals/v1/main-module-upgradeable",type:"mdx",filePath:"solutions/technical-references/internals/v1/main-module-upgradeable.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./main-module-upgradeable-CW96S4Qk.js"),[]),path:"/solutions/technical-references/internals/v1/main-module-upgradeable.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/main-module-upgradeable.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./modules-and-updates-CC41y-MQ.js"),[]),path:"/solutions/technical-references/internals/v1/modules-and-updates",type:"mdx",filePath:"solutions/technical-references/internals/v1/modules-and-updates.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./modules-and-updates-CC41y-MQ.js"),[]),path:"/solutions/technical-references/internals/v1/modules-and-updates.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/modules-and-updates.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./nested-transaction-batching-Bm2olTrK.js"),[]),path:"/solutions/technical-references/internals/v1/nested-transaction-batching",type:"mdx",filePath:"solutions/technical-references/internals/v1/nested-transaction-batching.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./nested-transaction-batching-Bm2olTrK.js"),[]),path:"/solutions/technical-references/internals/v1/nested-transaction-batching.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/nested-transaction-batching.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./signature-encoding-DNayVe2a.js"),[]),path:"/solutions/technical-references/internals/v1/signature-encoding",type:"mdx",filePath:"solutions/technical-references/internals/v1/signature-encoding.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./signature-encoding-DNayVe2a.js"),[]),path:"/solutions/technical-references/internals/v1/signature-encoding.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/signature-encoding.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./wallet-configuration-BS7RGyuJ.js"),[]),path:"/solutions/technical-references/internals/v1/wallet-configuration",type:"mdx",filePath:"solutions/technical-references/internals/v1/wallet-configuration.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./wallet-configuration-BS7RGyuJ.js"),[]),path:"/solutions/technical-references/internals/v1/wallet-configuration.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/wallet-configuration.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./wallet-context-CS_RygO9.js"),[]),path:"/solutions/technical-references/internals/v1/wallet-context",type:"mdx",filePath:"solutions/technical-references/internals/v1/wallet-context.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./wallet-context-CS_RygO9.js"),[]),path:"/solutions/technical-references/internals/v1/wallet-context.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/wallet-context.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./wallet-factory-CUnVnojT.js"),__vite__mapDeps([33,1])),path:"/solutions/technical-references/internals/v1/wallet-factory",type:"mdx",filePath:"solutions/technical-references/internals/v1/wallet-factory.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./wallet-factory-CUnVnojT.js"),__vite__mapDeps([33,1])),path:"/solutions/technical-references/internals/v1/wallet-factory.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/wallet-factory.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./configuration-D_ik4Rx1.js"),[]),path:"/solutions/technical-references/internals/v2/configuration",type:"mdx",filePath:"solutions/technical-references/internals/v2/configuration.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./configuration-D_ik4Rx1.js"),[]),path:"/solutions/technical-references/internals/v2/configuration.html",type:"mdx",filePath:"solutions/technical-references/internals/v2/configuration.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./deploy-Cahny4J9.js"),__vite__mapDeps([34,1])),path:"/solutions/technical-references/internals/v2/deploy",type:"mdx",filePath:"solutions/technical-references/internals/v2/deploy.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./deploy-Cahny4J9.js"),__vite__mapDeps([34,1])),path:"/solutions/technical-references/internals/v2/deploy.html",type:"mdx",filePath:"solutions/technical-references/internals/v2/deploy.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./manage-sessions-kcyhIGIe.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/manage-sessions",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/manage-sessions.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./manage-sessions-kcyhIGIe.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/manage-sessions.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/manage-sessions.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./transaction-receipts-B1HmepHQ.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/transaction-receipts",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/transaction-receipts.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./transaction-receipts-B1HmepHQ.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/transaction-receipts.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/transaction-receipts.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./use-wallets-CXkYQaLo.js"),__vite__mapDeps([35,1])),path:"/solutions/wallets/embedded-wallet/examples/use-wallets",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/use-wallets.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./use-wallets-CXkYQaLo.js"),__vite__mapDeps([35,1])),path:"/solutions/wallets/embedded-wallet/examples/use-wallets.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/use-wallets.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./validation-CfnXhEnq.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/validation",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/validation.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./validation-CfnXhEnq.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/validation.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/validation.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./action-payloads-DMgLhsRB.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/action-payloads",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./action-payloads-DMgLhsRB.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/action-payloads.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./enclave-verification-D1O6-8to.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./enclave-verification-D1O6-8to.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./intents-vXaVa7iA.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/intents",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/intents.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./intents-vXaVa7iA.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/intents.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/intents.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./response-payloads-CETFlBt0.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/response-payloads",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./response-payloads-CETFlBt0.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/response-payloads.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./trust-contract-recovery-flow-C7vU9CCb.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./trust-contract-recovery-flow-C7vU9CCb.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./auth-address-DzIAvudm.js"),[]),path:"/solutions/wallets/universal-wallet/examples/auth-address",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/auth-address.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./auth-address-DzIAvudm.js"),[]),path:"/solutions/wallets/universal-wallet/examples/auth-address.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/auth-address.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./building-backends-9F7Pmovf.js"),[]),path:"/solutions/wallets/universal-wallet/examples/building-backends",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/building-backends.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./building-backends-9F7Pmovf.js"),[]),path:"/solutions/wallets/universal-wallet/examples/building-backends.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/building-backends.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./connect-wallet-C-S7CgVB.js"),__vite__mapDeps([36,1])),path:"/solutions/wallets/universal-wallet/examples/connect-wallet",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/connect-wallet.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./connect-wallet-C-S7CgVB.js"),__vite__mapDeps([36,1])),path:"/solutions/wallets/universal-wallet/examples/connect-wallet.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/connect-wallet.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-batch-transactions-DpZcOhd6.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-batch-transactions",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-batch-transactions.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-batch-transactions-DpZcOhd6.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-batch-transactions.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-batch-transactions.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-erc1155-5QlLUvZE.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-erc1155",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-erc1155.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-erc1155-5QlLUvZE.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-erc1155.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-erc1155.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-erc20-DUAYivtC.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-erc20",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-erc20.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-erc20-DUAYivtC.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-erc20.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-erc20.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-erc721-b4IvLCEY.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-erc721",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-erc721.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-erc721-b4IvLCEY.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-erc721.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-erc721.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-transaction-BmGbocLX.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-transaction",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-transaction.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./send-transaction-BmGbocLX.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-transaction.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-transaction.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./session-keys-C8SkETx6.js"),[]),path:"/solutions/wallets/universal-wallet/examples/session-keys",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/session-keys.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./session-keys-C8SkETx6.js"),[]),path:"/solutions/wallets/universal-wallet/examples/session-keys.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/session-keys.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./sign-message-D9pzRJyv.js"),__vite__mapDeps([37,1])),path:"/solutions/wallets/universal-wallet/examples/sign-message",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/sign-message.mdx",lastUpdatedAt:1713254874e3},{lazy:()=>b(()=>import("./sign-message-D9pzRJyv.js"),__vite__mapDeps([37,1])),path:"/solutions/wallets/universal-wallet/examples/sign-message.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/sign-message.mdx",lastUpdatedAt:1713254874e3}];var Ns={horizontalPadding:"var(--vocs-content_horizontalPadding)",verticalPadding:"var(--vocs-content_verticalPadding)",width:"var(--vocs-content_width)"},T2={default:"system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif",mono:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace'},R2={default:"var(--vocs-fontFamily_default)",mono:"var(--vocs-fontFamily_mono)"},Gp={white:"var(--vocs-color_white)",black:"var(--vocs-color_black)",background:"var(--vocs-color_background)",background2:"var(--vocs-color_background2)",background3:"var(--vocs-color_background3)",background4:"var(--vocs-color_background4)",background5:"var(--vocs-color_background5)",backgroundAccent:"var(--vocs-color_backgroundAccent)",backgroundAccentHover:"var(--vocs-color_backgroundAccentHover)",backgroundAccentText:"var(--vocs-color_backgroundAccentText)",backgroundBlueTint:"var(--vocs-color_backgroundBlueTint)",backgroundDark:"var(--vocs-color_backgroundDark)",backgroundGreenTint:"var(--vocs-color_backgroundGreenTint)",backgroundGreenTint2:"var(--vocs-color_backgroundGreenTint2)",backgroundIrisTint:"var(--vocs-color_backgroundIrisTint)",backgroundRedTint:"var(--vocs-color_backgroundRedTint)",backgroundRedTint2:"var(--vocs-color_backgroundRedTint2)",backgroundYellowTint:"var(--vocs-color_backgroundYellowTint)",border:"var(--vocs-color_border)",border2:"var(--vocs-color_border2)",borderAccent:"var(--vocs-color_borderAccent)",borderBlue:"var(--vocs-color_borderBlue)",borderGreen:"var(--vocs-color_borderGreen)",borderIris:"var(--vocs-color_borderIris)",borderRed:"var(--vocs-color_borderRed)",borderYellow:"var(--vocs-color_borderYellow)",heading:"var(--vocs-color_heading)",inverted:"var(--vocs-color_inverted)",shadow:"var(--vocs-color_shadow)",shadow2:"var(--vocs-color_shadow2)",text:"var(--vocs-color_text)",text2:"var(--vocs-color_text2)",text3:"var(--vocs-color_text3)",text4:"var(--vocs-color_text4)",textAccent:"var(--vocs-color_textAccent)",textAccentHover:"var(--vocs-color_textAccentHover)",textBlue:"var(--vocs-color_textBlue)",textBlueHover:"var(--vocs-color_textBlueHover)",textGreen:"var(--vocs-color_textGreen)",textGreenHover:"var(--vocs-color_textGreenHover)",textIris:"var(--vocs-color_textIris)",textIrisHover:"var(--vocs-color_textIrisHover)",textRed:"var(--vocs-color_textRed)",textRedHover:"var(--vocs-color_textRedHover)",textYellow:"var(--vocs-color_textYellow)",textYellowHover:"var(--vocs-color_textYellowHover)",title:"var(--vocs-color_title)"},Ms={0:"var(--vocs-space_0)",1:"var(--vocs-space_1)",2:"var(--vocs-space_2)",3:"var(--vocs-space_3)",4:"var(--vocs-space_4)",6:"var(--vocs-space_6)",8:"var(--vocs-space_8)",12:"var(--vocs-space_12)",14:"var(--vocs-space_14)",16:"var(--vocs-space_16)",18:"var(--vocs-space_18)",20:"var(--vocs-space_20)",22:"var(--vocs-space_22)",24:"var(--vocs-space_24)",28:"var(--vocs-space_28)",32:"var(--vocs-space_32)",36:"var(--vocs-space_36)",40:"var(--vocs-space_40)",44:"var(--vocs-space_44)",48:"var(--vocs-space_48)",56:"var(--vocs-space_56)",64:"var(--vocs-space_64)",72:"var(--vocs-space_72)",80:"var(--vocs-space_80)"};function F0(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t ")," does not exist in object"));n=n[r]}return n}function U0(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],r={};for(var o in e){var i=e[o],a=[...n,o];typeof i=="string"||typeof i=="number"||i==null?r[o]=t(i,a):typeof i=="object"&&!Array.isArray(i)?r[o]=U0(i,t,a):console.warn('Skipping invalid key "'.concat(a.join("."),'". Should be a string, number, null or object. Received: "').concat(Array.isArray(i)?"Array":typeof i,'"'))}return r}function qt(e,t){var n={};if(typeof t=="object"){var r=e;U0(t,(l,s)=>{if(l!=null){var c=$2(r,s);n[qp(c)]=String(l)}})}else{var o=e;for(var i in o){var a=o[i];a!=null&&(n[qp(i)]=a)}}return Object.defineProperty(n,"toString",{value:function(){return Object.keys(this).map(s=>"".concat(s,":").concat(this[s])).join(";")},writable:!1}),n}var O2="var(--vocs_ExternalLink_iconUrl)",I2="vocs_ExternalLink";const L2=p.forwardRef(({className:e,children:t,hideExternalIcon:n,href:r,...o},i)=>{const{basePath:a}=Je(),l=a;return x.jsx("a",{ref:i,className:D(e,n||typeof t!="string"?void 0:I2),href:r,target:"_blank",rel:"noopener noreferrer",style:qt({[O2]:`url(${l}/.vocs/icons/arrow-diagonal.svg)`}),...o,children:t})});var Yp="vocs_Link_accent_underlined",Qp="vocs_Link",Zp="vocs_Link_styleless",ic=new Map,va=new WeakMap,Xp=0,D2=void 0;function N2(e){return e?(va.has(e)||(Xp+=1,va.set(e,Xp.toString())),va.get(e)):"0"}function M2(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t==="root"?N2(e.root):e[t]}`).toString()}function j2(e){const t=M2(e);let n=ic.get(t);if(!n){const r=new Map;let o;const i=new IntersectionObserver(a=>{a.forEach(l=>{var s;const c=l.isIntersecting&&o.some(d=>l.intersectionRatio>=d);e.trackVisibility&&typeof l.isVisible>"u"&&(l.isVisible=c),(s=r.get(l.target))==null||s.forEach(d=>{d(c,l)})})},e);o=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:r},ic.set(t,n)}return n}function z2(e,t,n={},r=D2){if(typeof window.IntersectionObserver>"u"&&r!==void 0){const s=e.getBoundingClientRect();return t(r,{isIntersecting:r,target:e,intersectionRatio:typeof n.threshold=="number"?n.threshold:0,time:0,boundingClientRect:s,intersectionRect:s,rootBounds:s}),()=>{}}const{id:o,observer:i,elements:a}=j2(n),l=a.get(e)||[];return a.has(e)||a.set(e,l),l.push(t),i.observe(e),function(){l.splice(l.indexOf(t),1),l.length===0&&(a.delete(e),i.unobserve(e)),a.size===0&&(i.disconnect(),ic.delete(o))}}function V0({threshold:e,delay:t,trackVisibility:n,rootMargin:r,root:o,triggerOnce:i,skip:a,initialInView:l,fallbackInView:s,onChange:c}={}){var d;const[u,f]=p.useState(null),h=p.useRef(),[y,g]=p.useState({inView:!!l,entry:void 0});h.current=c,p.useEffect(()=>{if(a||!u)return;let _;return _=z2(u,(E,C)=>{g({inView:E,entry:C}),h.current&&h.current(E,C),C.isIntersecting&&i&&_&&(_(),_=void 0)},{root:o,rootMargin:r,threshold:e,trackVisibility:n,delay:t},s),()=>{_&&_()}},[Array.isArray(e)?e.toString():e,u,o,r,i,a,n,s,t]);const w=(d=y.entry)==null?void 0:d.target,m=p.useRef();!u&&w&&!i&&!a&&m.current!==w&&(m.current=w,g({inView:!!l,entry:void 0}));const v=[f,y.inView,y.entry];return v.ref=v[0],v.inView=v[1],v.entry=v[2],v}function F2(...e){return t=>{U2(t,...e)}}function U2(e,...t){t.forEach(n=>{typeof n=="function"?n(e):n!=null&&(n.current=e)})}const qn=p.forwardRef((e,t)=>{const n=()=>{var i;return(i=zd.find(a=>a.path===e.to))==null?void 0:i.lazy()},{ref:r,inView:o}=V0();return p.useEffect(()=>{o&&n()},[o,n]),x.jsx(N0,{ref:F2(t,r),...e})}),nn=p.forwardRef((e,t)=>{const{href:n,variant:r="accent underlined"}=e,{pathname:o}=Re();if(n!=null&&n.match(/^(www|https?)/))return x.jsx(L2,{...e,ref:t,className:D(e.className,Qp,r==="accent underlined"&&Yp,r==="styleless"&&Zp),hideExternalIcon:e.hideExternalIcon});const[i,a]=(n||"").split("#"),l=`${i||o}${a?`#${a}`:""}`;return x.jsx(qn,{...e,ref:t,className:D(e.className,Qp,r==="accent underlined"&&Yp,r==="styleless"&&Zp),to:l})});var V2="vocs_NotFound_divider",B2="vocs_NotFound",H2="vocs_H1",B0="vocs_Heading",H0="vocs_Heading_slugTarget";function To({level:e,...t}){const n=`h${e}`;return x.jsxs(n,{...t,id:void 0,className:D(t.className,B0),children:[x.jsx("div",{id:t.id,className:H0}),t.children]})}function W0(e){return x.jsx(To,{...e,className:D(e.className,H2),level:1})}var W2="vocs_Paragraph";function K0(e){return x.jsx("p",{...e,className:D(e.className,W2)})}function K2(){return x.jsxs("div",{className:B2,children:[x.jsx(W0,{children:"Page Not Found"}),x.jsx("div",{style:{height:Ms[24]}}),x.jsx("hr",{className:V2}),x.jsx("div",{style:{height:Ms[24]}}),x.jsx(K0,{children:"The page you were looking for could not be found."}),x.jsx("div",{style:{height:Ms[8]}}),x.jsx(nn,{href:"/",children:"Go to Home Page"})]})}var G2="var(--vocs_Banner_bannerBackgroundColor)",q2="var(--vocs_Banner_bannerHeight)",Y2="var(--vocs_Banner_bannerTextColor)",Q2="vocs_Banner_closeButton",Z2="vocs_Banner_content",X2="vocs_Banner_inner",J2="vocs_Banner";const e4=Object.getPrototypeOf(t4).constructor;async function t4(e,t){return new e4(String(e))(t)}function n4(e,t){return new Function(String(e))(t)}function Ar(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,i;for(i=0;i=0)&&(n[o]=e[o]);return n}var r4=["color"],o4=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ar(e,r4);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M6.85355 3.14645C7.04882 3.34171 7.04882 3.65829 6.85355 3.85355L3.70711 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H3.70711L6.85355 11.1464C7.04882 11.3417 7.04882 11.6583 6.85355 11.8536C6.65829 12.0488 6.34171 12.0488 6.14645 11.8536L2.14645 7.85355C1.95118 7.65829 1.95118 7.34171 2.14645 7.14645L6.14645 3.14645C6.34171 2.95118 6.65829 2.95118 6.85355 3.14645Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),i4=["color"],a4=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ar(e,i4);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M6.1584 3.13508C6.35985 2.94621 6.67627 2.95642 6.86514 3.15788L10.6151 7.15788C10.7954 7.3502 10.7954 7.64949 10.6151 7.84182L6.86514 11.8418C6.67627 12.0433 6.35985 12.0535 6.1584 11.8646C5.95694 11.6757 5.94673 11.3593 6.1356 11.1579L9.565 7.49985L6.1356 3.84182C5.94673 3.64036 5.95694 3.32394 6.1584 3.13508Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),l4=["color"],s4=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ar(e,l4);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M12.8536 2.85355C13.0488 2.65829 13.0488 2.34171 12.8536 2.14645C12.6583 1.95118 12.3417 1.95118 12.1464 2.14645L7.5 6.79289L2.85355 2.14645C2.65829 1.95118 2.34171 1.95118 2.14645 2.14645C1.95118 2.34171 1.95118 2.65829 2.14645 2.85355L6.79289 7.5L2.14645 12.1464C1.95118 12.3417 1.95118 12.6583 2.14645 12.8536C2.34171 13.0488 2.65829 13.0488 2.85355 12.8536L7.5 8.20711L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L8.20711 7.5L12.8536 2.85355Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),u4=["color"],c4=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ar(e,u4);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M3.5 2C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V6H8.5C8.22386 6 8 5.77614 8 5.5V2H3.5ZM9 2.70711L11.2929 5H9V2.70711ZM2 2.5C2 1.67157 2.67157 1 3.5 1H8.5C8.63261 1 8.75979 1.05268 8.85355 1.14645L12.8536 5.14645C12.9473 5.24021 13 5.36739 13 5.5V12.5C13 13.3284 12.3284 14 11.5 14H3.5C2.67157 14 2 13.3284 2 12.5V2.5Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),d4=["color"],f4=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ar(e,d4);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M1.5 5.25C1.91421 5.25 2.25 4.91421 2.25 4.5C2.25 4.08579 1.91421 3.75 1.5 3.75C1.08579 3.75 0.75 4.08579 0.75 4.5C0.75 4.91421 1.08579 5.25 1.5 5.25ZM4 4.5C4 4.22386 4.22386 4 4.5 4H13.5C13.7761 4 14 4.22386 14 4.5C14 4.77614 13.7761 5 13.5 5H4.5C4.22386 5 4 4.77614 4 4.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H13.5C13.7761 8 14 7.77614 14 7.5C14 7.22386 13.7761 7 13.5 7H4.5ZM4.5 10C4.22386 10 4 10.2239 4 10.5C4 10.7761 4.22386 11 4.5 11H13.5C13.7761 11 14 10.7761 14 10.5C14 10.2239 13.7761 10 13.5 10H4.5ZM2.25 7.5C2.25 7.91421 1.91421 8.25 1.5 8.25C1.08579 8.25 0.75 7.91421 0.75 7.5C0.75 7.08579 1.08579 6.75 1.5 6.75C1.91421 6.75 2.25 7.08579 2.25 7.5ZM1.5 11.25C1.91421 11.25 2.25 10.9142 2.25 10.5C2.25 10.0858 1.91421 9.75 1.5 9.75C1.08579 9.75 0.75 10.0858 0.75 10.5C0.75 10.9142 1.08579 11.25 1.5 11.25Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),p4=["color"],Fd=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ar(e,p4);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),h4=["color"],m4=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ar(e,h4);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M12.1464 1.14645C12.3417 0.951184 12.6583 0.951184 12.8535 1.14645L14.8535 3.14645C15.0488 3.34171 15.0488 3.65829 14.8535 3.85355L10.9109 7.79618C10.8349 7.87218 10.7471 7.93543 10.651 7.9835L6.72359 9.94721C6.53109 10.0435 6.29861 10.0057 6.14643 9.85355C5.99425 9.70137 5.95652 9.46889 6.05277 9.27639L8.01648 5.34897C8.06455 5.25283 8.1278 5.16507 8.2038 5.08907L12.1464 1.14645ZM12.5 2.20711L8.91091 5.79618L7.87266 7.87267L8.12731 8.12732L10.2038 7.08907L13.7929 3.5L12.5 2.20711ZM9.99998 2L8.99998 3H4.9C4.47171 3 4.18056 3.00039 3.95552 3.01877C3.73631 3.03668 3.62421 3.06915 3.54601 3.10899C3.35785 3.20487 3.20487 3.35785 3.10899 3.54601C3.06915 3.62421 3.03669 3.73631 3.01878 3.95552C3.00039 4.18056 3 4.47171 3 4.9V11.1C3 11.5283 3.00039 11.8194 3.01878 12.0445C3.03669 12.2637 3.06915 12.3758 3.10899 12.454C3.20487 12.6422 3.35785 12.7951 3.54601 12.891C3.62421 12.9309 3.73631 12.9633 3.95552 12.9812C4.18056 12.9996 4.47171 13 4.9 13H11.1C11.5283 13 11.8194 12.9996 12.0445 12.9812C12.2637 12.9633 12.3758 12.9309 12.454 12.891C12.6422 12.7951 12.7951 12.6422 12.891 12.454C12.9309 12.3758 12.9633 12.2637 12.9812 12.0445C12.9996 11.8194 13 11.5283 13 11.1V6.99998L14 5.99998V11.1V11.1207C14 11.5231 14 11.8553 13.9779 12.1259C13.9549 12.407 13.9057 12.6653 13.782 12.908C13.5903 13.2843 13.2843 13.5903 12.908 13.782C12.6653 13.9057 12.407 13.9549 12.1259 13.9779C11.8553 14 11.5231 14 11.1207 14H11.1H4.9H4.87934C4.47686 14 4.14468 14 3.87409 13.9779C3.59304 13.9549 3.33469 13.9057 3.09202 13.782C2.7157 13.5903 2.40973 13.2843 2.21799 12.908C2.09434 12.6653 2.04506 12.407 2.0221 12.1259C1.99999 11.8553 1.99999 11.5231 2 11.1207V11.1206V11.1V4.9V4.87935V4.87932V4.87931C1.99999 4.47685 1.99999 4.14468 2.0221 3.87409C2.04506 3.59304 2.09434 3.33469 2.21799 3.09202C2.40973 2.71569 2.7157 2.40973 3.09202 2.21799C3.33469 2.09434 3.59304 2.04506 3.87409 2.0221C4.14468 1.99999 4.47685 1.99999 4.87932 2H4.87935H4.9H9.99998Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))});function vl(e,t){if(typeof e!="object"||e===null)return e;if(Array.isArray(e))return e.map((r,o)=>vl(r,o));const n=e.props.children?{...e.props,children:vl(e.props.children)}:e.props;return Z.createElement(e.type,{...n,key:t})}function v4({hide:e}){const{banner:t}=Je(),n=p.useMemo(()=>{const r=(t==null?void 0:t.content)??"";if(!r)return null;if(typeof r!="string")return()=>vl(r);const{default:o}=n4(r,{...Wy,Fragment:p.Fragment});return o},[t]);return n?x.jsx("div",{className:D(J2),style:qt({[G2]:t==null?void 0:t.backgroundColor,[Y2]:t==null?void 0:t.textColor}),children:x.jsxs("div",{className:D(X2),children:[x.jsx("div",{className:D(Z2),children:x.jsx(n,{})}),(t==null?void 0:t.dismissable)!=="false"&&x.jsx("button",{className:D(Q2),onClick:e,type:"button",children:x.jsx(s4,{width:14,height:14})})]})}):null}var g4="vocs_Content";function G0({children:e,className:t}){return x.jsx("article",{className:D(t,g4),children:e})}function q0({items:e,pathname:t}){const n=t.replace(/\.html$/,""),r=[];for(const o of e)(o.link&&n.startsWith(o.match||o.link)||o.items&&q0({items:o.items,pathname:t}).length>0)&&r.push(o.id);return r}function Bi({items:e,pathname:t}){return p.useMemo(()=>q0({items:e,pathname:t}),[e,t])}function Sr(){const e=p.useContext(Y0);if(!e)throw new Error("`usePageData` must be used within `PageDataContext.Provider`.");return e}const Y0=p.createContext(void 0);function Bl(){const{pathname:e}=Re(),t=Je(),{sidebar:n}=t;if(!n)return{items:[]};if(Array.isArray(n))return{items:n};const r=p.useMemo(()=>{const o=Object.keys(n).filter(i=>e.startsWith(i));return o[o.length-1]},[n,e]);return r?Array.isArray(n[r])?{key:r,items:n[r]}:{...n[r],key:r}:{items:[]}}function Tr(){const e=Bl(),{frontmatter:t}=Sr(),{layout:n,showLogo:r,showOutline:o,showSidebar:i,showTopNav:a}=t||{},l=n??"docs";return{layout:l,get showLogo(){return typeof r<"u"?r:!0},get showOutline(){return typeof o<"u"?o:l==="docs"},get showSidebar(){return e.items.length===0?!1:typeof i<"u"?i:!(l==="minimal"||l==="landing")},get showTopNav(){return typeof a<"u"?a:!0}}}function y4(){const[e,t]=p.useState(()=>{if(!(typeof window>"u")){if(localStorage.getItem("vocs.theme")){const n=localStorage.getItem("vocs.theme");if(n)return n}return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}});return p.useEffect(()=>{e&&localStorage.setItem("vocs.theme",e),e==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},[e]),{theme:e,toggle(){t(n=>n==="light"?"dark":"light")}}}var x4="vocs_utils_visibleDark",_4="vocs_utils_visibleLight",Q0="vocs_utils_visuallyHidden";function q(){return q=Object.assign?Object.assign.bind():function(e){for(var t=1;te.forEach(n=>w4(n,t))}function Ue(...e){return p.useCallback(Z0(...e),e)}function En(e,t=[]){let n=[];function r(i,a){const l=p.createContext(a),s=n.length;n=[...n,a];function c(u){const{scope:f,children:h,...y}=u,g=(f==null?void 0:f[e][s])||l,w=p.useMemo(()=>y,Object.values(y));return p.createElement(g.Provider,{value:w},h)}function d(u,f){const h=(f==null?void 0:f[e][s])||l,y=p.useContext(h);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${u}\` must be used within \`${i}\``)}return c.displayName=i+"Provider",[c,d]}const o=()=>{const i=n.map(a=>p.createContext(a));return function(l){const s=(l==null?void 0:l[e])||i;return p.useMemo(()=>({[`__scope${e}`]:{...l,[e]:s}}),[l,s])}};return o.scopeName=e,[r,E4(o,...t)]}function E4(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(i){const a=r.reduce((l,{useScope:s,scopeName:c})=>{const u=s(i)[`__scope${c}`];return{...l,...u}},{});return p.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}const gn=globalThis!=null&&globalThis.document?p.useLayoutEffect:()=>{},k4=Uc.useId||(()=>{});let b4=0;function rn(e){const[t,n]=p.useState(k4());return gn(()=>{e||n(r=>r??String(b4++))},[e]),e||(t?`radix-${t}`:"")}function at(e){const t=p.useRef(e);return p.useEffect(()=>{t.current=e}),p.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])}function rr({prop:e,defaultProp:t,onChange:n=()=>{}}){const[r,o]=C4({defaultProp:t,onChange:n}),i=e!==void 0,a=i?e:r,l=at(n),s=p.useCallback(c=>{if(i){const u=typeof c=="function"?c(e):c;u!==e&&l(u)}else o(c)},[i,e,o,l]);return[a,s]}function C4({defaultProp:e,onChange:t}){const n=p.useState(e),[r]=n,o=p.useRef(r),i=at(t);return p.useEffect(()=>{o.current!==r&&(i(r),o.current=r)},[r,o,i]),n}const wo=p.forwardRef((e,t)=>{const{children:n,...r}=e,o=p.Children.toArray(n),i=o.find(A4);if(i){const a=i.props.children,l=o.map(s=>s===i?p.Children.count(a)>1?p.Children.only(null):p.isValidElement(a)?a.props.children:null:s);return p.createElement(ac,q({},r,{ref:t}),p.isValidElement(a)?p.cloneElement(a,void 0,l):null)}return p.createElement(ac,q({},r,{ref:t}),n)});wo.displayName="Slot";const ac=p.forwardRef((e,t)=>{const{children:n,...r}=e;return p.isValidElement(n)?p.cloneElement(n,{...S4(r,n.props),ref:t?Z0(t,n.ref):n.ref}):p.Children.count(n)>1?p.Children.only(null):null});ac.displayName="SlotClone";const P4=({children:e})=>p.createElement(p.Fragment,null,e);function A4(e){return p.isValidElement(e)&&e.type===P4}function S4(e,t){const n={...t};for(const r in t){const o=e[r],i=t[r];/^on[A-Z]/.test(r)?o&&i?n[r]=(...l)=>{i(...l),o(...l)}:o&&(n[r]=o):r==="style"?n[r]={...o,...i}:r==="className"&&(n[r]=[o,i].filter(Boolean).join(" "))}return{...e,...n}}const T4=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],fe=T4.reduce((e,t)=>{const n=p.forwardRef((r,o)=>{const{asChild:i,...a}=r,l=i?wo:t;return p.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),p.createElement(l,q({},a,{ref:o}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function lc(e,t){e&&Ao.flushSync(()=>e.dispatchEvent(t))}function R4(e,t=globalThis==null?void 0:globalThis.document){const n=at(e);p.useEffect(()=>{const r=o=>{o.key==="Escape"&&n(o)};return t.addEventListener("keydown",r),()=>t.removeEventListener("keydown",r)},[n,t])}const sc="dismissableLayer.update",$4="dismissableLayer.pointerDownOutside",O4="dismissableLayer.focusOutside";let Jp;const I4=p.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Ud=p.forwardRef((e,t)=>{var n;const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:o,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:l,onDismiss:s,...c}=e,d=p.useContext(I4),[u,f]=p.useState(null),h=(n=u==null?void 0:u.ownerDocument)!==null&&n!==void 0?n:globalThis==null?void 0:globalThis.document,[,y]=p.useState({}),g=Ue(t,A=>f(A)),w=Array.from(d.layers),[m]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),v=w.indexOf(m),_=u?w.indexOf(u):-1,E=d.layersWithOutsidePointerEventsDisabled.size>0,C=_>=v,k=L4(A=>{const S=A.target,O=[...d.branches].some(j=>j.contains(S));!C||O||(i==null||i(A),l==null||l(A),A.defaultPrevented||s==null||s())},h),P=D4(A=>{const S=A.target;[...d.branches].some(j=>j.contains(S))||(a==null||a(A),l==null||l(A),A.defaultPrevented||s==null||s())},h);return R4(A=>{_===d.layers.size-1&&(o==null||o(A),!A.defaultPrevented&&s&&(A.preventDefault(),s()))},h),p.useEffect(()=>{if(u)return r&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(Jp=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(u)),d.layers.add(u),eh(),()=>{r&&d.layersWithOutsidePointerEventsDisabled.size===1&&(h.body.style.pointerEvents=Jp)}},[u,h,r,d]),p.useEffect(()=>()=>{u&&(d.layers.delete(u),d.layersWithOutsidePointerEventsDisabled.delete(u),eh())},[u,d]),p.useEffect(()=>{const A=()=>y({});return document.addEventListener(sc,A),()=>document.removeEventListener(sc,A)},[]),p.createElement(fe.div,q({},c,{ref:g,style:{pointerEvents:E?C?"auto":"none":void 0,...e.style},onFocusCapture:le(e.onFocusCapture,P.onFocusCapture),onBlurCapture:le(e.onBlurCapture,P.onBlurCapture),onPointerDownCapture:le(e.onPointerDownCapture,k.onPointerDownCapture)}))});function L4(e,t=globalThis==null?void 0:globalThis.document){const n=at(e),r=p.useRef(!1),o=p.useRef(()=>{});return p.useEffect(()=>{const i=l=>{if(l.target&&!r.current){let c=function(){X0($4,n,s,{discrete:!0})};const s={originalEvent:l};l.pointerType==="touch"?(t.removeEventListener("click",o.current),o.current=c,t.addEventListener("click",o.current,{once:!0})):c()}else t.removeEventListener("click",o.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",i),t.removeEventListener("click",o.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function D4(e,t=globalThis==null?void 0:globalThis.document){const n=at(e),r=p.useRef(!1);return p.useEffect(()=>{const o=i=>{i.target&&!r.current&&X0(O4,n,{originalEvent:i},{discrete:!1})};return t.addEventListener("focusin",o),()=>t.removeEventListener("focusin",o)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function eh(){const e=new CustomEvent(sc);document.dispatchEvent(e)}function X0(e,t,n,{discrete:r}){const o=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),r?lc(o,i):o.dispatchEvent(i)}const js="focusScope.autoFocusOnMount",zs="focusScope.autoFocusOnUnmount",th={bubbles:!1,cancelable:!0},J0=p.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:i,...a}=e,[l,s]=p.useState(null),c=at(o),d=at(i),u=p.useRef(null),f=Ue(t,g=>s(g)),h=p.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;p.useEffect(()=>{if(r){let g=function(_){if(h.paused||!l)return;const E=_.target;l.contains(E)?u.current=E:$n(u.current,{select:!0})},w=function(_){if(h.paused||!l)return;const E=_.relatedTarget;E!==null&&(l.contains(E)||$n(u.current,{select:!0}))},m=function(_){if(document.activeElement===document.body)for(const C of _)C.removedNodes.length>0&&$n(l)};document.addEventListener("focusin",g),document.addEventListener("focusout",w);const v=new MutationObserver(m);return l&&v.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",g),document.removeEventListener("focusout",w),v.disconnect()}}},[r,l,h.paused]),p.useEffect(()=>{if(l){rh.add(h);const g=document.activeElement;if(!l.contains(g)){const m=new CustomEvent(js,th);l.addEventListener(js,c),l.dispatchEvent(m),m.defaultPrevented||(N4(U4(e1(l)),{select:!0}),document.activeElement===g&&$n(l))}return()=>{l.removeEventListener(js,c),setTimeout(()=>{const m=new CustomEvent(zs,th);l.addEventListener(zs,d),l.dispatchEvent(m),m.defaultPrevented||$n(g??document.body,{select:!0}),l.removeEventListener(zs,d),rh.remove(h)},0)}}},[l,c,d,h]);const y=p.useCallback(g=>{if(!n&&!r||h.paused)return;const w=g.key==="Tab"&&!g.altKey&&!g.ctrlKey&&!g.metaKey,m=document.activeElement;if(w&&m){const v=g.currentTarget,[_,E]=M4(v);_&&E?!g.shiftKey&&m===E?(g.preventDefault(),n&&$n(_,{select:!0})):g.shiftKey&&m===_&&(g.preventDefault(),n&&$n(E,{select:!0})):m===v&&g.preventDefault()}},[n,r,h.paused]);return p.createElement(fe.div,q({tabIndex:-1},a,{ref:f,onKeyDown:y}))});function N4(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if($n(r,{select:t}),document.activeElement!==n)return}function M4(e){const t=e1(e),n=nh(t,e),r=nh(t.reverse(),e);return[n,r]}function e1(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function nh(e,t){for(const n of e)if(!j4(n,{upTo:t}))return n}function j4(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function z4(e){return e instanceof HTMLInputElement&&"select"in e}function $n(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&z4(e)&&t&&e.select()}}const rh=F4();function F4(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=oh(e,t),e.unshift(t)},remove(t){var n;e=oh(e,t),(n=e[0])===null||n===void 0||n.resume()}}}function oh(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function U4(e){return e.filter(t=>t.tagName!=="A")}const t1=p.forwardRef((e,t)=>{var n;const{container:r=globalThis==null||(n=globalThis.document)===null||n===void 0?void 0:n.body,...o}=e;return r?y0.createPortal(p.createElement(fe.div,q({},o,{ref:t})),r):null});function V4(e,t){return p.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const kn=e=>{const{present:t,children:n}=e,r=B4(t),o=typeof n=="function"?n({present:r.isPresent}):p.Children.only(n),i=Ue(r.ref,o.ref);return typeof n=="function"||r.isPresent?p.cloneElement(o,{ref:i}):null};kn.displayName="Presence";function B4(e){const[t,n]=p.useState(),r=p.useRef({}),o=p.useRef(e),i=p.useRef("none"),a=e?"mounted":"unmounted",[l,s]=V4(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return p.useEffect(()=>{const c=ga(r.current);i.current=l==="mounted"?c:"none"},[l]),gn(()=>{const c=r.current,d=o.current;if(d!==e){const f=i.current,h=ga(c);e?s("MOUNT"):h==="none"||(c==null?void 0:c.display)==="none"?s("UNMOUNT"):s(d&&f!==h?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,s]),gn(()=>{if(t){const c=u=>{const h=ga(r.current).includes(u.animationName);u.target===t&&h&&Ao.flushSync(()=>s("ANIMATION_END"))},d=u=>{u.target===t&&(i.current=ga(r.current))};return t.addEventListener("animationstart",d),t.addEventListener("animationcancel",c),t.addEventListener("animationend",c),()=>{t.removeEventListener("animationstart",d),t.removeEventListener("animationcancel",c),t.removeEventListener("animationend",c)}}else s("ANIMATION_END")},[t,s]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:p.useCallback(c=>{c&&(r.current=getComputedStyle(c)),n(c)},[])}}function ga(e){return(e==null?void 0:e.animationName)||"none"}let Fs=0;function n1(){p.useEffect(()=>{var e,t;const n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",(e=n[0])!==null&&e!==void 0?e:ih()),document.body.insertAdjacentElement("beforeend",(t=n[1])!==null&&t!==void 0?t:ih()),Fs++,()=>{Fs===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(r=>r.remove()),Fs--}},[])}function ih(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}var Jt=function(){return Jt=Object.assign||function(t){for(var n,r=1,o=arguments.length;r"u")return a3;var t=l3(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},u3=a1(),lo="data-scroll-locked",c3=function(e,t,n,r){var o=e.left,i=e.top,a=e.right,l=e.gap;return n===void 0&&(n="margin"),` - .`.concat(W4,` { + */function _o(){return _o=Object.assign?Object.assign.bind():function(e){for(var t=1;t=0)&&(n[o]=e[o]);return n}function rw(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}function ow(e,t){return e.button===0&&(!t||t==="_self")&&!rw(e)}const iw=["onClick","relative","reloadDocument","replace","state","target","to","preventScrollReset","unstable_viewTransition"],aw="6";try{window.__reactRouterVersion=aw}catch{}function lw(e,t){return C_({basename:t==null?void 0:t.basename,future:_o({},t==null?void 0:t.future,{v7_prependBasename:!0}),history:Q2({window:t==null?void 0:t.window}),hydrationData:(t==null?void 0:t.hydrationData)||sw(),routes:e,mapRouteProperties:tw,window:t==null?void 0:t.window}).initialize()}function sw(){var e;let t=(e=window)==null?void 0:e.__staticRouterHydrationData;return t&&t.errors&&(t=_o({},t,{errors:uw(t.errors)})),t}function uw(e){if(!e)return null;let t=Object.entries(e),n={};for(let[r,o]of t)if(o&&o.__type==="RouteErrorResponse")n[r]=new Ld(o.status,o.statusText,o.data,o.internal===!0);else if(o&&o.__type==="Error"){if(o.__subType){let i=window[o.__subType];if(typeof i=="function")try{let a=new i(o.message);a.stack="",n[r]=a}catch{}}if(n[r]==null){let i=new Error(o.message);i.stack="",n[r]=i}}else n[r]=o;return n}const cw=p.createContext({isTransitioning:!1}),dw=p.createContext(new Map),fw="startTransition",Bp=Uc[fw],pw="flushSync",Hp=Y2[pw];function hw(e){Bp?Bp(e):e()}function Go(e){Hp?Hp(e):e()}class mw{constructor(){this.status="pending",this.promise=new Promise((t,n)=>{this.resolve=r=>{this.status==="pending"&&(this.status="resolved",t(r))},this.reject=r=>{this.status==="pending"&&(this.status="rejected",n(r))}})}}function vw(e){let{fallbackElement:t,router:n,future:r}=e,[o,i]=p.useState(n.state),[a,l]=p.useState(),[s,c]=p.useState({isTransitioning:!1}),[d,u]=p.useState(),[f,h]=p.useState(),[y,g]=p.useState(),w=p.useRef(new Map),{v7_startTransition:m}=r||{},v=p.useCallback(P=>{m?hw(P):P()},[m]),_=p.useCallback((P,A)=>{let{deletedFetchers:S,unstable_flushSync:O,unstable_viewTransitionOpts:j}=A;S.forEach(z=>w.current.delete(z)),P.fetchers.forEach((z,$)=>{z.data!==void 0&&w.current.set($,z.data)});let N=n.window==null||typeof n.window.document.startViewTransition!="function";if(!j||N){O?Go(()=>i(P)):v(()=>i(P));return}if(O){Go(()=>{f&&(d&&d.resolve(),f.skipTransition()),c({isTransitioning:!0,flushSync:!0,currentLocation:j.currentLocation,nextLocation:j.nextLocation})});let z=n.window.document.startViewTransition(()=>{Go(()=>i(P))});z.finished.finally(()=>{Go(()=>{u(void 0),h(void 0),l(void 0),c({isTransitioning:!1})})}),Go(()=>h(z));return}f?(d&&d.resolve(),f.skipTransition(),g({state:P,currentLocation:j.currentLocation,nextLocation:j.nextLocation})):(l(P),c({isTransitioning:!0,flushSync:!1,currentLocation:j.currentLocation,nextLocation:j.nextLocation}))},[n.window,f,d,w,v]);p.useLayoutEffect(()=>n.subscribe(_),[n,_]),p.useEffect(()=>{s.isTransitioning&&!s.flushSync&&u(new mw)},[s]),p.useEffect(()=>{if(d&&a&&n.window){let P=a,A=d.promise,S=n.window.document.startViewTransition(async()=>{v(()=>i(P)),await A});S.finished.finally(()=>{u(void 0),h(void 0),l(void 0),c({isTransitioning:!1})}),h(S)}},[v,a,d,n.window]),p.useEffect(()=>{d&&a&&o.location.key===a.location.key&&d.resolve()},[d,f,o.location,a]),p.useEffect(()=>{!s.isTransitioning&&y&&(l(y.state),c({isTransitioning:!0,flushSync:!1,currentLocation:y.currentLocation,nextLocation:y.nextLocation}),g(void 0))},[s.isTransitioning,y]),p.useEffect(()=>{},[]);let E=p.useMemo(()=>({createHref:n.createHref,encodeLocation:n.encodeLocation,go:P=>n.navigate(P),push:(P,A,S)=>n.navigate(P,{state:A,preventScrollReset:S==null?void 0:S.preventScrollReset}),replace:(P,A,S)=>n.navigate(P,{replace:!0,state:A,preventScrollReset:S==null?void 0:S.preventScrollReset})}),[n]),C=n.basename||"/",k=p.useMemo(()=>({router:n,navigator:E,static:!1,basename:C}),[n,E,C]);return p.createElement(p.Fragment,null,p.createElement(Vi.Provider,{value:k},p.createElement(Nd.Provider,{value:o},p.createElement(dw.Provider,{value:w.current},p.createElement(cw.Provider,{value:s},p.createElement(ew,{basename:C,location:o.location,navigationType:o.historyAction,navigator:E,future:{v7_relativeSplatPath:n.future.v7_relativeSplatPath}},o.initialized||n.future.v7_partialHydration?p.createElement(gw,{routes:n.routes,future:n.future,state:o}):t))))),null)}function gw(e){let{routes:t,future:n,state:r}=e;return U_(t,void 0,r,n)}const yw=typeof window<"u"&&typeof window.document<"u"&&typeof window.document.createElement<"u",xw=/^(?:[a-z][a-z0-9+.-]*:|\/\/)/i,N0=p.forwardRef(function(t,n){let{onClick:r,relative:o,reloadDocument:i,replace:a,state:l,target:s,to:c,preventScrollReset:d,unstable_viewTransition:u}=t,f=nw(t,iw),{basename:h}=p.useContext(nr),y,g=!1;if(typeof c=="string"&&xw.test(c)&&(y=c,yw))try{let _=new URL(window.location.href),E=c.startsWith("//")?new URL(_.protocol+c):new URL(c),C=Cr(E.pathname,h);E.origin===_.origin&&C!=null?c=C+E.search+E.hash:g=!0}catch{}let w=j_(c,{relative:o}),m=kw(c,{replace:a,state:l,target:s,preventScrollReset:d,relative:o,unstable_viewTransition:u});function v(_){r&&r(_),_.defaultPrevented||m(_)}return p.createElement("a",_o({},f,{href:y||w,onClick:g||i?r:v,ref:n,target:s}))});function _w(e){let{getKey:t,storageKey:n}=e;return bw({getKey:t,storageKey:n}),null}var rc;(function(e){e.UseScrollRestoration="useScrollRestoration",e.UseSubmit="useSubmit",e.UseSubmitFetcher="useSubmitFetcher",e.UseFetcher="useFetcher",e.useViewTransitionState="useViewTransitionState"})(rc||(rc={}));var oc;(function(e){e.UseFetcher="useFetcher",e.UseFetchers="useFetchers",e.UseScrollRestoration="useScrollRestoration"})(oc||(oc={}));function ww(e){let t=p.useContext(Vi);return t||ne(!1),t}function Ew(e){let t=p.useContext(Nd);return t||ne(!1),t}function kw(e,t){let{target:n,replace:r,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l}=t===void 0?{}:t,s=Md(),c=Re(),d=I0(e,{relative:a});return p.useCallback(u=>{if(ow(u,n)){u.preventDefault();let f=r!==void 0?r:wr(c)===wr(d);s(e,{replace:f,state:o,preventScrollReset:i,relative:a,unstable_viewTransition:l})}},[c,s,d,r,o,n,e,i,a,l])}const Wp="react-router-scroll-positions";let ma={};function bw(e){let{getKey:t,storageKey:n}=e===void 0?{}:e,{router:r}=ww(rc.UseScrollRestoration),{restoreScrollPosition:o,preventScrollReset:i}=Ew(oc.UseScrollRestoration),{basename:a}=p.useContext(nr),l=Re(),s=Q_(),c=Y_();p.useEffect(()=>(window.history.scrollRestoration="manual",()=>{window.history.scrollRestoration="auto"}),[]),Cw(p.useCallback(()=>{if(c.state==="idle"){let d=(t?t(l,s):null)||l.key;ma[d]=window.scrollY}try{sessionStorage.setItem(n||Wp,JSON.stringify(ma))}catch{}window.history.scrollRestoration="auto"},[n,t,c.state,l,s])),typeof document<"u"&&(p.useLayoutEffect(()=>{try{let d=sessionStorage.getItem(n||Wp);d&&(ma=JSON.parse(d))}catch{}},[n]),p.useLayoutEffect(()=>{let d=t&&a!=="/"?(f,h)=>t(_o({},f,{pathname:Cr(f.pathname,a)||f.pathname}),h):t,u=r==null?void 0:r.enableScrollRestoration(ma,()=>window.scrollY,d);return()=>u&&u()},[r,a,t]),p.useLayoutEffect(()=>{if(o!==!1){if(typeof o=="number"){window.scrollTo(0,o);return}if(l.hash){let d=document.getElementById(decodeURIComponent(l.hash.slice(1)));if(d){d.scrollIntoView();return}}i!==!0&&window.scrollTo(0,0)}},[l,o,i]))}function Cw(e,t){let{capture:n}=t||{};p.useEffect(()=>{let r=n!=null?{capture:n}:void 0;return window.addEventListener("pagehide",e,r),()=>{window.removeEventListener("pagehide",e,r)}},[e,n])}const M0={blogDir:"./pages/blog",rootDir:"docs",title:"Sequence",titleTemplate:"%s – Sequence",iconUrl:{dark:"/img/favicon.ico",light:"/img/favicon.ico"},logoUrl:{dark:"/img/sequence-composite-dark.svg",light:"/img/sequence-composite-light.svg"},basePath:"",topNav:[{text:"Solutions",items:[{text:"Wallets",link:"/solutions/wallets/overview",match:"/solutions/wallets/overview",id:246,items:[]},{text:"Marketplace",link:"/solutions/marketplaces/overview",match:"/solutions/marketplaces/overview",id:247,items:[]},{text:"Collectibles",link:"/solutions/collectibles/contracts/deploy-an-item-collection",match:"/solutions/collectibles/contracts/deploy-an-item-collection",id:248,items:[]},{text:"Payments",link:"/solutions/payments/onramps/fiat-on-ramps",match:"/solutions/payments/onramps/fiat-on-ramps",id:249,items:[]},{text:"Builder Console",link:"/solutions/builder/overview",match:"/solutions/builder/overview",items:[{text:"Overview",link:"/solutions/builder/overview",match:"/solutions/builder/overview",id:251,items:[]}],id:250}],id:245},{text:"Guides",items:[{text:"Web3 Game with WebGL",link:"/guides/webgl-guide",match:"/guides/webgl-guide",items:[{text:"Overview",link:"/guides/webgl-guide",match:"/guides/webgl-guide",id:254,items:[]}],id:253},{text:"Web3 Game with Unity",link:"/guides/unity-guide",match:"/guides/unity-guide",id:255,items:[]},{text:"Serverless Collectibles",link:"/guides/mint-collectibles-serverless",match:"/guides/mint-collectibles-serverless",id:256,items:[]},{text:"AI Lootboxes",link:"/guides/lootbox-guide",match:"/guides/lootbox-guide",id:257,items:[]},{text:"Custom Marketplace",link:"/guides/custom-marketplace",match:"/guides/custom-marketplace",id:258,items:[]}],id:252},{text:"SDKs",items:[{text:"Unity",link:"/sdk/unity/overview",match:"/sdk/unity/overview",id:260,items:[]},{text:"Unreal",link:"/sdk/unreal/overview",match:"/sdk/unreal/overview",id:261,items:[]},{text:"Typescript",link:"/sdk/typescript/guides/overview",match:"/sdk/typescript/guides/overview",id:262,items:[]},{text:"Sequence Kit",link:"/sdk/sequence-kit/overview",match:"/sdk/sequence-kit/overview",id:263,items:[]},{text:"Go",link:"/sdk/go/overview",match:"/sdk/go/overview",id:264,items:[]}],id:259},{text:"APIs",items:[{text:"Relayer API",link:"/api/relayer/overview",id:266,items:[]},{text:"Indexer API",link:"/api/indexer/overview",id:267,items:[]},{text:"Metadata API",link:"/api/metadata/overview",id:268,items:[]},{text:"Marketplace API",link:"/api/marketplace/overview",id:269,items:[]},{text:"Node Gateway",link:"/api/node-gateway",id:270,items:[]}],id:265},{text:"Support",items:[{text:"Support",link:"/support",id:272,items:[]},{text:"Changelog",link:"https://0xsequence.canny.io/changelog",id:273,items:[]},{text:"Restricted Regions",link:"/support/restricted-regions",id:274,items:[]},{text:"Token Directory",link:"/support/token-directory",id:275,items:[]},{text:"FAQ",link:"https://support.sequence.xyz",id:276,items:[]},{text:"Discord",link:"https://discord.gg/sequence",id:277,items:[]},{text:"We're hiring!",link:"https://horizon.io/careers",id:278,items:[]},{text:"Contact Us",link:"https://support.sequence.xyz",id:279,items:[]}],id:271}],sidebar:{"/solutions":[{text:"Wallets",items:[{text:"Overview",link:"/solutions/wallets/overview"},{text:"Embedded Wallet",collapsed:!0,items:[{text:"Overview",link:"/solutions/wallets/embedded-wallet/overview"},{text:"Quickstart",link:"/solutions/wallets/embedded-wallet/quickstart"},{text:"Examples",collapsed:!0,items:[{text:"Manage Sessions",link:"/solutions/wallets/embedded-wallet/examples/manage-sessions"},{text:"Use Wallets",link:"/solutions/wallets/embedded-wallet/examples/use-wallets"},{text:"Validation",link:"/solutions/wallets/embedded-wallet/examples/validation"},{text:"Transaction Receipts",link:"/solutions/wallets/embedded-wallet/examples/transaction-receipts"}]},{text:"Architecture",link:"/solutions/wallets/embedded-wallet/architecture"},{text:"Implementation Details",collapsed:!0,items:[{text:"Action payloads",link:"/solutions/wallets/embedded-wallet/implementation-details/action-payloads"},{text:"Response payloads",link:"/solutions/wallets/embedded-wallet/implementation-details/response-payloads"},{text:"Trust Contract Recovery Flow",link:"/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow"},{text:"Enclave-Verification",link:"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification"},{text:"Intents",link:"/solutions/wallets/embedded-wallet/implementation-details/intents"}]}]},{text:"Universal Wallet",collapsed:!0,items:[{text:"Overview",link:"/solutions/wallets/universal-wallet/overview"},{text:"Quickstart",link:"/solutions/wallets/universal-wallet/quickstart"},{text:"Examples",collapsed:!0,items:[{text:"Connect Wallet",link:"/solutions/wallets/universal-wallet/examples/connect-wallet"},{text:"Authenticate Users with Message Signature",link:"/solutions/wallets/universal-wallet/examples/auth-address"},{text:"Signing & Verifying Messages",link:"/solutions/wallets/universal-wallet/examples/sign-message"},{text:"No-wallet confirmation signatures",link:"/solutions/wallets/universal-wallet/examples/session-keys"},{text:"Sending Transactions",link:"/solutions/wallets/universal-wallet/examples/send-transaction"},{text:"Sending ERC-20 Tokens",link:"/solutions/wallets/universal-wallet/examples/send-erc20"},{text:"Sending ERC-721 (NFT) Tokens",link:"/solutions/wallets/universal-wallet/examples/send-erc721"},{text:"Sending ERC-1155 (Collectible) Tokens",link:"/solutions/wallets/universal-wallet/examples/send-erc1155"},{text:"Sending a Batch of Transactions",link:"/solutions/wallets/universal-wallet/examples/send-batch-transactions"},{text:"Building Backends with Sequence",link:"/solutions/wallets/universal-wallet/examples/building-backends"}]},{text:"Sequence Kit",link:"/solutions/wallets/universal-wallet/sequence-kit"},{text:"Supported Platforms",link:"/solutions/wallets/universal-wallet/platforms"},{text:"Fiat On-Ramps",link:"/solutions/wallets/universal-wallet/fiat-on-ramps"},{text:"Key Management",link:"/solutions/wallets/universal-wallet/key-management"}]}]},{text:"Marketplace",items:[{text:"Overview",link:"/solutions/marketplaces/overview"},{text:"White-label Marketplace",link:"/solutions/marketplaces/white-label-marketplace"},{text:"Build your Custom Marketplace",collapsed:!0,items:[{text:"Overview",link:"/solutions/marketplaces/orderbook/overview"},{text:"Quickstart",link:"/solutions/marketplaces/orderbook/quickstart"}]}]},{text:"Collectibles",items:[{text:"Deployable Contracts",collapsed:!0,items:[{text:"Deploy a Collectible Contract",link:"/solutions/collectibles/contracts/deploy-an-item-collection"},{text:"Deploy an In-Game Currency (ERC20)",link:"/solutions/collectibles/contracts/deploy-ERC20-currency"}]},{text:"Metadata",collapsed:!0,items:[{text:"Manage Metadata in Builder",link:"/solutions/collectibles/metadata/manage-metadata-builder"}]}]},{text:"Payments",items:[{text:"Onramps",link:"/solutions/payments/onramps/fiat-on-ramps"}]},{text:"Builder Console",collapsed:!0,items:[{text:"Overview",link:"/solutions/builder/overview"},{text:"Get Started",link:"/solutions/builder/getting-started"},{text:"Project Management",link:"/solutions/builder/project-management"},{text:"Contracts",link:"/solutions/builder/contracts"},{text:"Gas Tank",link:"/solutions/builder/gas-tank"},{text:"Wallet SDKs",link:"/solutions/builder/wallet-sdks"},{text:"Embedded Wallet",link:"/solutions/builder/embedded-wallet"},{text:"Node Gateway",link:"/solutions/builder/node-gateway"},{text:"Marketplaces",link:"/solutions/builder/marketplaces"},{text:"Indexer",link:"/solutions/builder/indexer"},{text:"Analytics",link:"/solutions/builder/analytics"},{text:"Settings",link:"/solutions/builder/project-settings"}]},{text:"Technical References",items:[{text:"Chain Support",link:"/solutions/technical-references/chain-support"},{text:"Why Smart Contract Wallets?",link:"/solutions/technical-references/wallet-contracts/why"},{text:"Contract Internals",collapsed:!0,items:[{text:"Deployment",link:"/solutions/technical-references/internals/deployment"},{text:"Sequence v1",collapsed:!0,items:[{text:"Deploy",link:"/solutions/technical-references/internals/v1/deploy"},{text:"Wallet Factory",link:"/solutions/technical-references/internals/v1/wallet-factory"},{text:"Wallet Configuration",link:"/solutions/technical-references/internals/v1/wallet-configuration"},{text:"Signature Encoding",link:"/solutions/technical-references/internals/v1/signature-encoding"},{text:"Wallet Context",link:"/solutions/technical-references/internals/v1/wallet-context"},{text:"Contract Audits",link:"/solutions/technical-references/internals/v1/contract-audits"}]},{text:"Sequence v2",collapsed:!0,items:[{text:"Deploy",link:"/solutions/technical-references/internals/v2/deploy"},{text:"Wallet Configuration",link:"/solutions/technical-references/internals/v2/configuration"}]}]}]}],"/guides":[{text:"Guides",collapsed:!1,items:[{text:"Build a game with WebGL",collapsed:!0,items:[{text:"Project setup with webpack",link:"/guides/webgl-guide#1-project-setup-with-webpack"},{text:"Integrate SequenceKit with WaaS",link:"/guides/webgl-guide#2-integrate-sequence-kit"},{text:"Deploy a collectibles contract",link:"/guides/webgl-guide#3-deploy-a-collectibles-contract"},{text:"Deploy a remote minter",link:"/guides/webgl-guide#4-deploy-a-remote-minter--mint-in-game-achievement-tokens"},{text:"Leverage items in-game",link:"/guides/webgl-guide#5-leverage-items-in-game"},{text:"Burn in-game achievement tokens",link:"/guides/webgl-guide#6-burn-in-game-achievement-tokens"},{text:"(Optional) Integrate Embedded Wallet into Sequence Kit",link:"/guides/webgl-guide#7-optional-integrate-embedded-wallet-into-sequence-kit"}]},{text:"Build a Unity game",collapsed:!0,items:[{text:"Introduction",link:"/guides/unity-guide#intro-to-jelly-forest"},{text:"Build a Game Loop",link:"/guides/unity-guide#build-a-game-loop"},{text:"Integrate Embedded Wallets",link:"/guides/unity-guide#integrate-social-sign-in-and-sequences-embedded-wallet-solution"},{text:"Deploy Collectibles",link:"/guides/unity-guide#deploy-a-collectibles-contract"},{text:"Deploy Remote Minter",link:"/guides/unity-guide#deploy-a-remote-minter"},{text:"Minting Tokens to Inventory",link:"/guides/unity-guide#mint-in-game-tokens-to-the-players-inventory"},{text:"Purchase Collectibles with ERC20 Tokens",link:"/guides/unity-guide#burn-in-game-tokens-in-exchange-for-others"},{text:"Building an in-game shop",link:"/guides/unity-guide#building-the-shop-pages-and-setting-the-minting-requirements"},{text:"Leverage purchased items in-game",link:"/guides/unity-guide#leverage-purchased-items-in-game"}]},{text:"Build a serverless collectible",collapsed:!0,items:[{text:"Setup Cloudflare environment with wrangler cli and deploy a test",link:"/guides/mint-collectibles-serverless#1-setup-cloudflare-environment-with-wrangler-cli-and-deploy-a-test",match:"/guides/mint-collectibles-serverless#1-setup-cloudflare-environment-with-wrangler-cli-and-deploy-a-test"},{text:"Deploy, Sponsor and Update Metadata for an ERC1155 Contract with Builder",link:"/guides/mint-collectibles-serverless#2-deploy-sponsor-and-update-metadata-for-an-erc1155-contract-with-builder"},{text:"Use EthAuthProof to prevent EOA DDoS",link:"/guides/mint-collectibles-serverless#3-use-ethauthproof-to-prevent-eoa-ddos"},{text:"Mint a collectible to wallet",link:"/guides/mint-collectibles-serverless#4-mint-a-collectible-to-wallet"}]},{text:"Build a lootbox with AI minting",collapsed:!0,items:[{text:"Builder Console signup & project creation",link:"/guides/lootbox-guide#1-builder-console-signup--project-creation"},{text:"Access key management",link:"/guides/lootbox-guide#2-access-key-management"},{text:"Sequence Kit integration",link:"/guides/lootbox-guide#3-sequence-kit-integration"},{text:"iframe-to-webapp communication",link:"/guides/lootbox-guide#4-iframe-to-webapp-communication"},{text:"Deploy a contract & sponsor gas",link:"/guides/lootbox-guide#5-deploy-a-contract--sponsor-gas"},{text:"Deploy a Cloudflare Worker",link:"/guides/lootbox-guide#6-deploy-a-cloudflare-worker"},{text:"Generating AI prompts & images",link:"/guides/lootbox-guide#7-generating-ai-prompts--images"},{text:"Uploading media to Sequence metadata service",link:"/guides/lootbox-guide#8-uploading-media-to-sequence-metadata-service"},{text:"Securing your Cloudflare Worker",link:"/guides/lootbox-guide#9-securing-your-cloudflare-worker"},{text:"(Optional) Naive mint restriction per wallet",link:"/guides/lootbox-guide#10-optional-naive-mint-restriction-per-wallet"}]},{text:"Build a Custom Marketplace",collapsed:!0,items:[{text:"Minting",link:"/guides/custom-marketplace#1-minting"},{text:"Wallet Authentication",link:"/guides/custom-marketplace#2-wallet-authentication"},{text:"Blockchain Queries",link:"/guides/custom-marketplace#3-blockchain-queries"},{text:"Multi-wallet types",link:"/guides/custom-marketplace#4-multi-wallet-types"},{text:"Request creation",link:"/guides/custom-marketplace#5-request-creation"},{text:"Order accepting",link:"/guides/custom-marketplace#6-order-accepting"},{text:"(Optional) Enable Embedded Wallet",link:"/guides/custom-marketplace#7-optional-integrate-embedded-wallet-into-sequence-kit"}]}]},{text:"Templates",items:[{text:"In-game Wallet Demo",link:"/guides/templates/template-in-game-wallet"},{text:"Build a Backend Transaction Manager",link:"/guides/templates/building-relaying-server"}]}],"/sdk":[{text:"Game Engine",items:[{text:"Unreal",collapsed:!0,items:[{text:"Overview",link:"/sdk/unreal/overview"},{text:"Installation",link:"/sdk/unreal/installation"},{text:"Setup",link:"/sdk/unreal/setup"},{text:"Authentication",link:"/sdk/unreal/authentication"},{text:"API Integration",link:"/sdk/unreal/api-integration"},{text:"Packaging",link:"/sdk/unreal/packaging"}]},{text:"Unity",collapsed:!0,items:[{text:"Overview",link:"/sdk/unity/overview"},{text:"Installation",link:"/sdk/unity/installation"},{text:"Setup",link:"/sdk/unity/setup"},{text:"Authentication",link:"/sdk/unity/authentication"},{text:"Write to blockchain",link:"/sdk/unity/write-to-blockchain"},{text:"Read from Blockchain",link:"/sdk/unity/read-from-blockchain"},{text:"Sign Messages",link:"/sdk/unity/sign-messages"},{text:"Deploy Contracts",link:"/sdk/unity/deploy-contracts"},{text:"Wallet UI",link:"/sdk/unity/wallet-ui"},{text:"Advanced",collapsed:!0,items:[{text:"Introduction",link:"/sdk/unity/Advanced/introduction"},{text:"Wallets",link:"/sdk/unity/Advanced/wallets"},{text:"Clients",link:"/sdk/unity/Advanced/clients"},{text:"Transfers",link:"/sdk/unity/Advanced/transfers"},{text:"Contracts",link:"/sdk/unity/Advanced/contracts"},{text:"Tokens",link:"/sdk/unity/Advanced/tokens"}]}]}]},{text:"Web3",items:[{text:"SequenceKit",collapsed:!0,items:[{text:"Overview",link:"/sdk/sequence-kit/overview"},{text:"Quickstart",link:"/sdk/sequence-kit/getting-started"},{text:"Configuration",link:"/sdk/sequence-kit/configuration"},{text:"Checkout",link:"/sdk/sequence-kit/checkout"},{text:"Custom Connectors",link:"/sdk/sequence-kit/custom-connectors"}]},{text:"TypeScript",collapsed:!0,items:[{text:"Overview",link:"/sdk/typescript/guides/overview"},{text:"Connect Wallet",link:"/sdk/typescript/guides/connect-wallet"},{text:"Authenticate Users with Message Signature",link:"/sdk/typescript/guides/auth-address"},{text:"Signing & Verifying Messages",link:"/sdk/typescript/guides/sign-message"},{text:"No-wallet confirmation signatures",link:"/sdk/typescript/guides/session-keys"},{text:"Sending Transactions",link:"/sdk/typescript/guides/send-transaction"},{text:"Sending ERC-20 Tokens",link:"/sdk/typescript/guides/send-erc20"},{text:"Sending ERC-721 (NFT) Tokens",link:"/sdk/typescript/guides/send-erc721"},{text:"Sending ERC-1155 (Collectible) Tokens",link:"/sdk/typescript/guides/send-erc1155"},{text:"Sending a Batch of Transactions",link:"/sdk/typescript/guides/send-batch-transactions"},{text:"Building Backends with Sequence",link:"/sdk/typescript/guides/building-backends"},{text:"Wallet Connectors",collapsed:!0,items:[{text:"Overview",link:"/sdk/typescript/connectors/overview"},{text:"SequenceKit",link:"/sdk/sequence-kit/overview"},{text:"Wagmi",link:"/sdk/typescript/connectors/wagmi"},{text:"RainbowKit",link:"/sdk/typescript/connectors/rainbow-kit"},{text:"Web3 Onboard",link:"/sdk/typescript/connectors/web3-onboard"},{text:"Web3 React V6",link:"/sdk/typescript/connectors/web3-react-v6"},{text:"Web3Modal",link:"/sdk/typescript/connectors/web3modal"},{text:"FAQ",link:"/sdk/typescript/connectors/FAQ"}]}]},{text:"Go",collapsed:!0,items:[{text:"Overview",link:"/sdk/go/overview"}]}]},{text:"Common Questions",collapsed:!0,items:[{text:"How do I do signature validation?",link:"/wallet/sig-validation"}]}],"/api":[{text:"Relayer",collapsed:!1,items:[{text:"Overview",link:"/api/relayer/overview"},{text:"Installation",link:"/api/relayer/installation"},{text:"Examples",collapsed:!1,items:[{text:"Fetch Fee Options",link:"/api/relayer/examples/fetch-fee-options"},{text:"Send Transactions",link:"/api/relayer/examples/send-transactions"},{text:"Fetch Transaction Receipts",link:"/api/relayer/examples/fetch-transaction-receipts"}]}]},{text:"Indexer",collapsed:!1,items:[{text:"Overview",link:"/api/indexer/overview"},{text:"Installation",link:"/api/indexer/installation"},{text:"Examples",collapsed:!1,items:[{text:"Fetch Tokens",link:"/api/indexer/examples/fetch-tokens"},{text:"Transaction History",link:"/api/indexer/examples/transaction-history"},{text:"Unique Tokens",link:"/api/indexer/examples/unique-tokens"},{text:"Transaction History Token Contract",link:"/api/indexer/examples/transation-history-token-contract"},{text:"Native Network Balance",link:"/api/indexer/examples/native-network-balance"},{text:"Metadata Tips",link:"/api/indexer/metadata-tips"},{text:"Webhooks",link:"/api/indexer/examples/webhook-listener"}]}]},{text:"Metadata",collapsed:!1,items:[{text:"Overview",link:"/api/metadata/overview"},{text:"Examples",collapsed:!1,items:[{text:"Token Metadata",link:"/api/metadata/token-metadata"},{text:"Contract Metadata",link:"/api/metadata/contract-metadata"},{text:"REST API",link:"/api/metadata/rest-api"}]}]},{text:"Marketplace",collapsed:!1,items:[{text:"Overview",link:"/api/marketplace/overview"},{text:"Examples",collapsed:!1,items:[{text:"Creating Market Orders & Listings",link:"/api/marketplace/examples/orderbook-transactions"},{text:"Get Top Orders",link:"/api/marketplace/examples/get-top-orders"},{text:"Get Orderbook",link:"/api/marketplace/examples/get-orderbook"},{text:"Get User Activities",link:"/api/marketplace/examples/get-user-activities"}]}]},{text:"Node Gateway",collapsed:!1,items:[{text:"Overview",link:"/api/node-gateway"}]}],"/support":{items:[{text:"Support",link:"/support"},{text:"Changelog",link:"https://0xsequence.canny.io/changelog"},{text:"Restricted Regions",link:"/support/restricted-regions"},{text:"FAQ",link:"https://support.sequence.xyz"},{text:"Token Directory",link:"/support/token-directory"},{text:"Discord",link:"https://discord.gg/sequence"},{text:"We're hiring!",link:"https://horizon.io/careers"},{text:"Contact Us",link:"https://support.sequence.xyz"}]}},theme:{variables:{fontFamily:{default:"Inter"},color:{background:{light:"#f0f0f0",dark:"#111111"}}}},markdown:{code:{themes:{dark:"github-dark-dimmed",light:"github-light"}}},socials:[],vite:{}},j0=p.createContext(M0);function z0(){return typeof window<"u",M0}function Pw({children:e,config:t}){const[n,r]=p.useState(()=>t||z0());return p.useEffect(()=>{},[]),p.useEffect(()=>{typeof window<"u"},[n]),x.jsx(j0.Provider,{value:n,children:e})}function Je(){return p.useContext(j0)}const Aw="modulepreload",Sw=function(e){return"/"+e},Kp={},b=function(t,n,r){let o=Promise.resolve();if(n&&n.length>0){const i=document.getElementsByTagName("link"),a=document.querySelector("meta[property=csp-nonce]"),l=(a==null?void 0:a.nonce)||(a==null?void 0:a.getAttribute("nonce"));o=Promise.all(n.map(s=>{if(s=Sw(s),s in Kp)return;Kp[s]=!0;const c=s.endsWith(".css"),d=c?'[rel="stylesheet"]':"";if(!!r)for(let h=i.length-1;h>=0;h--){const y=i[h];if(y.href===s&&(!c||y.rel==="stylesheet"))return}else if(document.querySelector(`link[href="${s}"]${d}`))return;const f=document.createElement("link");if(f.rel=c?"stylesheet":Aw,c||(f.as="script",f.crossOrigin=""),f.href=s,l&&f.setAttribute("nonce",l),document.head.appendChild(f),c)return new Promise((h,y)=>{f.addEventListener("load",h),f.addEventListener("error",()=>y(new Error(`Unable to preload CSS for ${s}`)))})}))}return o.then(()=>t()).catch(i=>{const a=new Event("vite:preloadError",{cancelable:!0});if(a.payload=i,window.dispatchEvent(a),!a.defaultPrevented)throw i})},zd=[{lazy:()=>b(()=>import("./index-CP7FC5Wv.js"),__vite__mapDeps([0,1])),path:"/",type:"mdx",filePath:"index.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./support-D7INvvTC.js"),[]),path:"/support",type:"mdx",filePath:"support.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./support-D7INvvTC.js"),[]),path:"/support.html",type:"mdx",filePath:"support.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./metadata-BfCm5dGy.js"),[]),path:"/api/metadata",type:"mdx",filePath:"api/metadata.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./metadata-BfCm5dGy.js"),[]),path:"/api/metadata.html",type:"mdx",filePath:"api/metadata.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./node-gateway-DQgqSZz0.js"),[]),path:"/api/node-gateway",type:"mdx",filePath:"api/node-gateway.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./node-gateway-DQgqSZz0.js"),[]),path:"/api/node-gateway.html",type:"mdx",filePath:"api/node-gateway.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./custom-marketplace-5fhElc0j.js"),__vite__mapDeps([2,1])),path:"/guides/custom-marketplace",type:"mdx",filePath:"guides/custom-marketplace.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./custom-marketplace-5fhElc0j.js"),__vite__mapDeps([2,1])),path:"/guides/custom-marketplace.html",type:"mdx",filePath:"guides/custom-marketplace.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./lootbox-guide-DfI-7UoT.js"),__vite__mapDeps([3,1])),path:"/guides/lootbox-guide",type:"mdx",filePath:"guides/lootbox-guide.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./lootbox-guide-DfI-7UoT.js"),__vite__mapDeps([3,1])),path:"/guides/lootbox-guide.html",type:"mdx",filePath:"guides/lootbox-guide.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./mint-collectibles-serverless-Cy5umKSC.js"),__vite__mapDeps([4,1])),path:"/guides/mint-collectibles-serverless",type:"mdx",filePath:"guides/mint-collectibles-serverless.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./mint-collectibles-serverless-Cy5umKSC.js"),__vite__mapDeps([4,1])),path:"/guides/mint-collectibles-serverless.html",type:"mdx",filePath:"guides/mint-collectibles-serverless.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./unity-guide-23-brBJD.js"),__vite__mapDeps([5,6])),path:"/guides/unity-guide",type:"mdx",filePath:"guides/unity-guide.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./unity-guide-23-brBJD.js"),__vite__mapDeps([5,6])),path:"/guides/unity-guide.html",type:"mdx",filePath:"guides/unity-guide.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./webgl-guide-Bgv-p5F2.js"),__vite__mapDeps([7,1])),path:"/guides/webgl-guide",type:"mdx",filePath:"guides/webgl-guide.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./webgl-guide-Bgv-p5F2.js"),__vite__mapDeps([7,1])),path:"/guides/webgl-guide.html",type:"mdx",filePath:"guides/webgl-guide.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./android-bRRaAnqq.js"),[]),path:"/sdk/android",type:"mdx",filePath:"sdk/android.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./android-bRRaAnqq.js"),[]),path:"/sdk/android.html",type:"mdx",filePath:"sdk/android.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./iOS-bRRaAnqq.js"),[]),path:"/sdk/iOS",type:"mdx",filePath:"sdk/iOS.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./iOS-bRRaAnqq.js"),[]),path:"/sdk/iOS.html",type:"mdx",filePath:"sdk/iOS.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./nodejs-bRRaAnqq.js"),[]),path:"/sdk/nodejs",type:"mdx",filePath:"sdk/nodejs.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./nodejs-bRRaAnqq.js"),[]),path:"/sdk/nodejs.html",type:"mdx",filePath:"sdk/nodejs.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./reactnative-bRRaAnqq.js"),[]),path:"/sdk/reactnative",type:"mdx",filePath:"sdk/reactnative.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./reactnative-bRRaAnqq.js"),[]),path:"/sdk/reactnative.html",type:"mdx",filePath:"sdk/reactnative.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./sequence-kit-bRRaAnqq.js"),[]),path:"/sdk/sequence-kit",type:"mdx",filePath:"sdk/sequence-kit.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./sequence-kit-bRRaAnqq.js"),[]),path:"/sdk/sequence-kit.html",type:"mdx",filePath:"sdk/sequence-kit.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./typescript-bRRaAnqq.js"),[]),path:"/sdk/typescript",type:"mdx",filePath:"sdk/typescript.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./typescript-bRRaAnqq.js"),[]),path:"/sdk/typescript.html",type:"mdx",filePath:"sdk/typescript.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./unity-bRRaAnqq.js"),[]),path:"/sdk/unity",type:"mdx",filePath:"sdk/unity.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./unity-bRRaAnqq.js"),[]),path:"/sdk/unity.html",type:"mdx",filePath:"sdk/unity.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./minter-DdSjW7bk.js"),[]),path:"/solutions/minter",type:"mdx",filePath:"solutions/minter.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./minter-DdSjW7bk.js"),[]),path:"/solutions/minter.html",type:"mdx",filePath:"solutions/minter.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./nft-checkout-CrpZ8jpO.js"),[]),path:"/solutions/nft-checkout",type:"mdx",filePath:"solutions/nft-checkout.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./nft-checkout-CrpZ8jpO.js"),[]),path:"/solutions/nft-checkout.html",type:"mdx",filePath:"solutions/nft-checkout.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./onramps-BpYIGNda.js"),[]),path:"/solutions/onramps",type:"mdx",filePath:"solutions/onramps.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./onramps-BpYIGNda.js"),[]),path:"/solutions/onramps.html",type:"mdx",filePath:"solutions/onramps.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./restricted-regions-CYv9rag1.js"),[]),path:"/support/restricted-regions",type:"mdx",filePath:"support/restricted-regions.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./restricted-regions-CYv9rag1.js"),[]),path:"/support/restricted-regions.html",type:"mdx",filePath:"support/restricted-regions.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./token-directory-CW87wFck.js"),__vite__mapDeps([8,1])),path:"/support/token-directory",type:"mdx",filePath:"support/token-directory.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./token-directory-CW87wFck.js"),__vite__mapDeps([8,1])),path:"/support/token-directory.html",type:"mdx",filePath:"support/token-directory.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./installation-e9UAGzO_.js"),[]),path:"/api/indexer/installation",type:"mdx",filePath:"api/indexer/installation.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./installation-e9UAGzO_.js"),[]),path:"/api/indexer/installation.html",type:"mdx",filePath:"api/indexer/installation.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./metadata-tips-BuUY8txH.js"),[]),path:"/api/indexer/metadata-tips",type:"mdx",filePath:"api/indexer/metadata-tips.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./metadata-tips-BuUY8txH.js"),[]),path:"/api/indexer/metadata-tips.html",type:"mdx",filePath:"api/indexer/metadata-tips.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-BZ4LPOHF.js"),[]),path:"/api/indexer/overview",type:"mdx",filePath:"api/indexer/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-BZ4LPOHF.js"),[]),path:"/api/indexer/overview.html",type:"mdx",filePath:"api/indexer/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-DwER1j4Y.js"),[]),path:"/api/marketplace/overview",type:"mdx",filePath:"api/marketplace/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-DwER1j4Y.js"),[]),path:"/api/marketplace/overview.html",type:"mdx",filePath:"api/marketplace/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./contract-metadata-DTbzXUIV.js"),[]),path:"/api/metadata/contract-metadata",type:"mdx",filePath:"api/metadata/contract-metadata.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./contract-metadata-DTbzXUIV.js"),[]),path:"/api/metadata/contract-metadata.html",type:"mdx",filePath:"api/metadata/contract-metadata.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-BLLc4xjx.js"),[]),path:"/api/metadata/overview",type:"mdx",filePath:"api/metadata/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-BLLc4xjx.js"),[]),path:"/api/metadata/overview.html",type:"mdx",filePath:"api/metadata/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./rest-api-BI_aWE-a.js"),[]),path:"/api/metadata/rest-api",type:"mdx",filePath:"api/metadata/rest-api.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./rest-api-BI_aWE-a.js"),[]),path:"/api/metadata/rest-api.html",type:"mdx",filePath:"api/metadata/rest-api.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./token-metadata-CIPxOBpl.js"),[]),path:"/api/metadata/token-metadata",type:"mdx",filePath:"api/metadata/token-metadata.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./token-metadata-CIPxOBpl.js"),[]),path:"/api/metadata/token-metadata.html",type:"mdx",filePath:"api/metadata/token-metadata.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./installation-f62kIGKJ.js"),[]),path:"/api/relayer/installation",type:"mdx",filePath:"api/relayer/installation.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./installation-f62kIGKJ.js"),[]),path:"/api/relayer/installation.html",type:"mdx",filePath:"api/relayer/installation.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-BkBlR5TZ.js"),[]),path:"/api/relayer/overview",type:"mdx",filePath:"api/relayer/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-BkBlR5TZ.js"),[]),path:"/api/relayer/overview.html",type:"mdx",filePath:"api/relayer/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./building-relaying-server-C7vW5CBa.js"),__vite__mapDeps([9,1])),path:"/guides/templates/building-relaying-server",type:"mdx",filePath:"guides/templates/building-relaying-server.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./building-relaying-server-C7vW5CBa.js"),__vite__mapDeps([9,1])),path:"/guides/templates/building-relaying-server.html",type:"mdx",filePath:"guides/templates/building-relaying-server.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./template-in-game-wallet-DfMkrqjt.js"),[]),path:"/guides/templates/template-in-game-wallet",type:"mdx",filePath:"guides/templates/template-in-game-wallet.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./template-in-game-wallet-DfMkrqjt.js"),[]),path:"/guides/templates/template-in-game-wallet.html",type:"mdx",filePath:"guides/templates/template-in-game-wallet.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-BGAHixNw.js"),[]),path:"/sdk/go/overview",type:"mdx",filePath:"sdk/go/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-BGAHixNw.js"),[]),path:"/sdk/go/overview.html",type:"mdx",filePath:"sdk/go/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./checkout-B4UHRtYW.js"),[]),path:"/sdk/sequence-kit/checkout",type:"mdx",filePath:"sdk/sequence-kit/checkout.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./checkout-B4UHRtYW.js"),[]),path:"/sdk/sequence-kit/checkout.html",type:"mdx",filePath:"sdk/sequence-kit/checkout.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./configuration-B5pMyXcn.js"),[]),path:"/sdk/sequence-kit/configuration",type:"mdx",filePath:"sdk/sequence-kit/configuration.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./configuration-B5pMyXcn.js"),[]),path:"/sdk/sequence-kit/configuration.html",type:"mdx",filePath:"sdk/sequence-kit/configuration.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./custom-connectors-DubimWDi.js"),[]),path:"/sdk/sequence-kit/custom-connectors",type:"mdx",filePath:"sdk/sequence-kit/custom-connectors.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./custom-connectors-DubimWDi.js"),[]),path:"/sdk/sequence-kit/custom-connectors.html",type:"mdx",filePath:"sdk/sequence-kit/custom-connectors.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./getting-started-D1rWwgSO.js"),[]),path:"/sdk/sequence-kit/getting-started",type:"mdx",filePath:"sdk/sequence-kit/getting-started.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./getting-started-D1rWwgSO.js"),[]),path:"/sdk/sequence-kit/getting-started.html",type:"mdx",filePath:"sdk/sequence-kit/getting-started.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-CYxss-oC.js"),[]),path:"/sdk/sequence-kit/overview",type:"mdx",filePath:"sdk/sequence-kit/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-CYxss-oC.js"),[]),path:"/sdk/sequence-kit/overview.html",type:"mdx",filePath:"sdk/sequence-kit/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./authentication-ChcPb0ip.js"),[]),path:"/sdk/unity/authentication",type:"mdx",filePath:"sdk/unity/authentication.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./authentication-ChcPb0ip.js"),[]),path:"/sdk/unity/authentication.html",type:"mdx",filePath:"sdk/unity/authentication.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./deploy-contracts-D0qgs-cI.js"),[]),path:"/sdk/unity/deploy-contracts",type:"mdx",filePath:"sdk/unity/deploy-contracts.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./deploy-contracts-D0qgs-cI.js"),[]),path:"/sdk/unity/deploy-contracts.html",type:"mdx",filePath:"sdk/unity/deploy-contracts.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./installation-jscd-EKs.js"),[]),path:"/sdk/unity/installation",type:"mdx",filePath:"sdk/unity/installation.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./installation-jscd-EKs.js"),[]),path:"/sdk/unity/installation.html",type:"mdx",filePath:"sdk/unity/installation.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-CWpWBH8h.js"),[]),path:"/sdk/unity/overview",type:"mdx",filePath:"sdk/unity/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-CWpWBH8h.js"),[]),path:"/sdk/unity/overview.html",type:"mdx",filePath:"sdk/unity/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./read-from-blockchain-DSRwD8AT.js"),[]),path:"/sdk/unity/read-from-blockchain",type:"mdx",filePath:"sdk/unity/read-from-blockchain.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./read-from-blockchain-DSRwD8AT.js"),[]),path:"/sdk/unity/read-from-blockchain.html",type:"mdx",filePath:"sdk/unity/read-from-blockchain.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./setup-Clkkkxmz.js"),[]),path:"/sdk/unity/setup",type:"mdx",filePath:"sdk/unity/setup.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./setup-Clkkkxmz.js"),[]),path:"/sdk/unity/setup.html",type:"mdx",filePath:"sdk/unity/setup.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./sign-messages-DMd5lgMk.js"),[]),path:"/sdk/unity/sign-messages",type:"mdx",filePath:"sdk/unity/sign-messages.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./sign-messages-DMd5lgMk.js"),[]),path:"/sdk/unity/sign-messages.html",type:"mdx",filePath:"sdk/unity/sign-messages.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./wallet-ui-Cp42pJMw.js"),[]),path:"/sdk/unity/wallet-ui",type:"mdx",filePath:"sdk/unity/wallet-ui.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./wallet-ui-Cp42pJMw.js"),[]),path:"/sdk/unity/wallet-ui.html",type:"mdx",filePath:"sdk/unity/wallet-ui.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./write-to-blockchain-A_WQTQqs.js"),[]),path:"/sdk/unity/write-to-blockchain",type:"mdx",filePath:"sdk/unity/write-to-blockchain.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./write-to-blockchain-A_WQTQqs.js"),[]),path:"/sdk/unity/write-to-blockchain.html",type:"mdx",filePath:"sdk/unity/write-to-blockchain.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./api-integration-2IO0N7QE.js"),[]),path:"/sdk/unreal/api-integration",type:"mdx",filePath:"sdk/unreal/api-integration.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./api-integration-2IO0N7QE.js"),[]),path:"/sdk/unreal/api-integration.html",type:"mdx",filePath:"sdk/unreal/api-integration.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./authentication-BIRu5GPw.js"),[]),path:"/sdk/unreal/authentication",type:"mdx",filePath:"sdk/unreal/authentication.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./authentication-BIRu5GPw.js"),[]),path:"/sdk/unreal/authentication.html",type:"mdx",filePath:"sdk/unreal/authentication.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./installation-CR4WukxG.js"),[]),path:"/sdk/unreal/installation",type:"mdx",filePath:"sdk/unreal/installation.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./installation-CR4WukxG.js"),[]),path:"/sdk/unreal/installation.html",type:"mdx",filePath:"sdk/unreal/installation.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-DbOhfer9.js"),[]),path:"/sdk/unreal/overview",type:"mdx",filePath:"sdk/unreal/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-DbOhfer9.js"),[]),path:"/sdk/unreal/overview.html",type:"mdx",filePath:"sdk/unreal/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./packaging-LeiF0rZR.js"),[]),path:"/sdk/unreal/packaging",type:"mdx",filePath:"sdk/unreal/packaging.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./packaging-LeiF0rZR.js"),[]),path:"/sdk/unreal/packaging.html",type:"mdx",filePath:"sdk/unreal/packaging.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./setup-DLZnlf8a.js"),[]),path:"/sdk/unreal/setup",type:"mdx",filePath:"sdk/unreal/setup.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./setup-DLZnlf8a.js"),[]),path:"/sdk/unreal/setup.html",type:"mdx",filePath:"sdk/unreal/setup.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./analytics-tIxLfKgY.js"),[]),path:"/solutions/builder/analytics",type:"mdx",filePath:"solutions/builder/analytics.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./analytics-tIxLfKgY.js"),[]),path:"/solutions/builder/analytics.html",type:"mdx",filePath:"solutions/builder/analytics.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./contracts-CjCZOfhv.js"),__vite__mapDeps([10,6])),path:"/solutions/builder/contracts",type:"mdx",filePath:"solutions/builder/contracts.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./contracts-CjCZOfhv.js"),__vite__mapDeps([10,6])),path:"/solutions/builder/contracts.html",type:"mdx",filePath:"solutions/builder/contracts.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./embedded-wallet-DBe8hhaG.js"),[]),path:"/solutions/builder/embedded-wallet",type:"mdx",filePath:"solutions/builder/embedded-wallet.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./embedded-wallet-DBe8hhaG.js"),[]),path:"/solutions/builder/embedded-wallet.html",type:"mdx",filePath:"solutions/builder/embedded-wallet.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./gas-tank-9wNYvgcg.js"),__vite__mapDeps([11,6])),path:"/solutions/builder/gas-tank",type:"mdx",filePath:"solutions/builder/gas-tank.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./gas-tank-9wNYvgcg.js"),__vite__mapDeps([11,6])),path:"/solutions/builder/gas-tank.html",type:"mdx",filePath:"solutions/builder/gas-tank.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./getting-started-BnQlVg14.js"),__vite__mapDeps([12,13])),path:"/solutions/builder/getting-started",type:"mdx",filePath:"solutions/builder/getting-started.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./getting-started-BnQlVg14.js"),__vite__mapDeps([12,13])),path:"/solutions/builder/getting-started.html",type:"mdx",filePath:"solutions/builder/getting-started.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./indexer-Db7ZsYzX.js"),__vite__mapDeps([14,6])),path:"/solutions/builder/indexer",type:"mdx",filePath:"solutions/builder/indexer.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./indexer-Db7ZsYzX.js"),__vite__mapDeps([14,6])),path:"/solutions/builder/indexer.html",type:"mdx",filePath:"solutions/builder/indexer.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./marketplaces-BUP1pddE.js"),__vite__mapDeps([15,6])),path:"/solutions/builder/marketplaces",type:"mdx",filePath:"solutions/builder/marketplaces.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./marketplaces-BUP1pddE.js"),__vite__mapDeps([15,6])),path:"/solutions/builder/marketplaces.html",type:"mdx",filePath:"solutions/builder/marketplaces.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./node-gateway-PMwccG6C.js"),__vite__mapDeps([16,6])),path:"/solutions/builder/node-gateway",type:"mdx",filePath:"solutions/builder/node-gateway.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./node-gateway-PMwccG6C.js"),__vite__mapDeps([16,6])),path:"/solutions/builder/node-gateway.html",type:"mdx",filePath:"solutions/builder/node-gateway.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-DvG5SP2k.js"),__vite__mapDeps([17,13])),path:"/solutions/builder/overview",type:"mdx",filePath:"solutions/builder/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-DvG5SP2k.js"),__vite__mapDeps([17,13])),path:"/solutions/builder/overview.html",type:"mdx",filePath:"solutions/builder/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./project-management-N3iaYEL6.js"),__vite__mapDeps([18,6])),path:"/solutions/builder/project-management",type:"mdx",filePath:"solutions/builder/project-management.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./project-management-N3iaYEL6.js"),__vite__mapDeps([18,6])),path:"/solutions/builder/project-management.html",type:"mdx",filePath:"solutions/builder/project-management.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./project-settings-CpIzeA-Q.js"),__vite__mapDeps([19,6])),path:"/solutions/builder/project-settings",type:"mdx",filePath:"solutions/builder/project-settings.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./project-settings-CpIzeA-Q.js"),__vite__mapDeps([19,6])),path:"/solutions/builder/project-settings.html",type:"mdx",filePath:"solutions/builder/project-settings.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./wallet-sdks-BSJMRl7O.js"),__vite__mapDeps([20,6])),path:"/solutions/builder/wallet-sdks",type:"mdx",filePath:"solutions/builder/wallet-sdks.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./wallet-sdks-BSJMRl7O.js"),__vite__mapDeps([20,6])),path:"/solutions/builder/wallet-sdks.html",type:"mdx",filePath:"solutions/builder/wallet-sdks.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-y8tVh3Xz.js"),[]),path:"/solutions/marketplaces/overview",type:"mdx",filePath:"solutions/marketplaces/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-y8tVh3Xz.js"),[]),path:"/solutions/marketplaces/overview.html",type:"mdx",filePath:"solutions/marketplaces/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./white-label-marketplace-BSVmR35g.js"),__vite__mapDeps([21,6])),path:"/solutions/marketplaces/white-label-marketplace",type:"mdx",filePath:"solutions/marketplaces/white-label-marketplace.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./white-label-marketplace-BSVmR35g.js"),__vite__mapDeps([21,6])),path:"/solutions/marketplaces/white-label-marketplace.html",type:"mdx",filePath:"solutions/marketplaces/white-label-marketplace.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./5189-4337-DBHsDifh.js"),[]),path:"/solutions/technical-references/5189-4337",type:"mdx",filePath:"solutions/technical-references/5189-4337.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./5189-4337-DBHsDifh.js"),[]),path:"/solutions/technical-references/5189-4337.html",type:"mdx",filePath:"solutions/technical-references/5189-4337.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./chain-support-CAp0Jfap.js"),[]),path:"/solutions/technical-references/chain-support",type:"mdx",filePath:"solutions/technical-references/chain-support.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./chain-support-CAp0Jfap.js"),[]),path:"/solutions/technical-references/chain-support.html",type:"mdx",filePath:"solutions/technical-references/chain-support.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-Cg5A0toO.js"),[]),path:"/solutions/wallets/overview",type:"mdx",filePath:"solutions/wallets/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-Cg5A0toO.js"),[]),path:"/solutions/wallets/overview.html",type:"mdx",filePath:"solutions/wallets/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./fetch-tokens-DSFHNZt3.js"),[]),path:"/api/indexer/examples/fetch-tokens",type:"mdx",filePath:"api/indexer/examples/fetch-tokens.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./fetch-tokens-DSFHNZt3.js"),[]),path:"/api/indexer/examples/fetch-tokens.html",type:"mdx",filePath:"api/indexer/examples/fetch-tokens.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./native-network-balance-FGnoTKzE.js"),[]),path:"/api/indexer/examples/native-network-balance",type:"mdx",filePath:"api/indexer/examples/native-network-balance.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./native-network-balance-FGnoTKzE.js"),[]),path:"/api/indexer/examples/native-network-balance.html",type:"mdx",filePath:"api/indexer/examples/native-network-balance.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./transaction-history-DqLsRW4P.js"),[]),path:"/api/indexer/examples/transaction-history",type:"mdx",filePath:"api/indexer/examples/transaction-history.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./transaction-history-DqLsRW4P.js"),[]),path:"/api/indexer/examples/transaction-history.html",type:"mdx",filePath:"api/indexer/examples/transaction-history.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./transation-history-token-contract-BY-5X07Z.js"),[]),path:"/api/indexer/examples/transation-history-token-contract",type:"mdx",filePath:"api/indexer/examples/transation-history-token-contract.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./transation-history-token-contract-BY-5X07Z.js"),[]),path:"/api/indexer/examples/transation-history-token-contract.html",type:"mdx",filePath:"api/indexer/examples/transation-history-token-contract.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./unique-tokens-DZawjbRT.js"),[]),path:"/api/indexer/examples/unique-tokens",type:"mdx",filePath:"api/indexer/examples/unique-tokens.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./unique-tokens-DZawjbRT.js"),[]),path:"/api/indexer/examples/unique-tokens.html",type:"mdx",filePath:"api/indexer/examples/unique-tokens.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./webhook-listener-DrikxAuv.js"),[]),path:"/api/indexer/examples/webhook-listener",type:"mdx",filePath:"api/indexer/examples/webhook-listener.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./webhook-listener-DrikxAuv.js"),[]),path:"/api/indexer/examples/webhook-listener.html",type:"mdx",filePath:"api/indexer/examples/webhook-listener.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./create-simple-orders-BZNiwCSW.js"),__vite__mapDeps([22,1])),path:"/api/marketplace/examples/create-simple-orders",type:"mdx",filePath:"api/marketplace/examples/create-simple-orders.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./create-simple-orders-BZNiwCSW.js"),__vite__mapDeps([22,1])),path:"/api/marketplace/examples/create-simple-orders.html",type:"mdx",filePath:"api/marketplace/examples/create-simple-orders.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./get-orderbook-CK2fd8cT.js"),__vite__mapDeps([23,1])),path:"/api/marketplace/examples/get-orderbook",type:"mdx",filePath:"api/marketplace/examples/get-orderbook.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./get-orderbook-CK2fd8cT.js"),__vite__mapDeps([23,1])),path:"/api/marketplace/examples/get-orderbook.html",type:"mdx",filePath:"api/marketplace/examples/get-orderbook.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./get-top-orders-DA_Dw8yv.js"),__vite__mapDeps([24,1])),path:"/api/marketplace/examples/get-top-orders",type:"mdx",filePath:"api/marketplace/examples/get-top-orders.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./get-top-orders-DA_Dw8yv.js"),__vite__mapDeps([24,1])),path:"/api/marketplace/examples/get-top-orders.html",type:"mdx",filePath:"api/marketplace/examples/get-top-orders.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./get-user-activities-D2rdVCSP.js"),[]),path:"/api/marketplace/examples/get-user-activities",type:"mdx",filePath:"api/marketplace/examples/get-user-activities.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./get-user-activities-D2rdVCSP.js"),[]),path:"/api/marketplace/examples/get-user-activities.html",type:"mdx",filePath:"api/marketplace/examples/get-user-activities.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./orderbook-transactions-D8wEswpa.js"),__vite__mapDeps([25,1])),path:"/api/marketplace/examples/orderbook-transactions",type:"mdx",filePath:"api/marketplace/examples/orderbook-transactions.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./orderbook-transactions-D8wEswpa.js"),__vite__mapDeps([25,1])),path:"/api/marketplace/examples/orderbook-transactions.html",type:"mdx",filePath:"api/marketplace/examples/orderbook-transactions.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./fetch-fee-options-CyAgBDOd.js"),[]),path:"/api/relayer/examples/fetch-fee-options",type:"mdx",filePath:"api/relayer/examples/fetch-fee-options.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./fetch-fee-options-CyAgBDOd.js"),[]),path:"/api/relayer/examples/fetch-fee-options.html",type:"mdx",filePath:"api/relayer/examples/fetch-fee-options.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./fetch-transaction-receipts-CoN72VxY.js"),[]),path:"/api/relayer/examples/fetch-transaction-receipts",type:"mdx",filePath:"api/relayer/examples/fetch-transaction-receipts.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./fetch-transaction-receipts-CoN72VxY.js"),[]),path:"/api/relayer/examples/fetch-transaction-receipts.html",type:"mdx",filePath:"api/relayer/examples/fetch-transaction-receipts.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-transactions-CSpBsPvC.js"),[]),path:"/api/relayer/examples/send-transactions",type:"mdx",filePath:"api/relayer/examples/send-transactions.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-transactions-CSpBsPvC.js"),[]),path:"/api/relayer/examples/send-transactions.html",type:"mdx",filePath:"api/relayer/examples/send-transactions.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./FAQ-Dxs2K3Xv.js"),[]),path:"/sdk/typescript/connectors/FAQ",type:"mdx",filePath:"sdk/typescript/connectors/FAQ.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./FAQ-Dxs2K3Xv.js"),[]),path:"/sdk/typescript/connectors/FAQ.html",type:"mdx",filePath:"sdk/typescript/connectors/FAQ.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-D96e7635.js"),[]),path:"/sdk/typescript/connectors/overview",type:"mdx",filePath:"sdk/typescript/connectors/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-D96e7635.js"),[]),path:"/sdk/typescript/connectors/overview.html",type:"mdx",filePath:"sdk/typescript/connectors/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./rainbow-kit-CyvrPIna.js"),[]),path:"/sdk/typescript/connectors/rainbow-kit",type:"mdx",filePath:"sdk/typescript/connectors/rainbow-kit.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./rainbow-kit-CyvrPIna.js"),[]),path:"/sdk/typescript/connectors/rainbow-kit.html",type:"mdx",filePath:"sdk/typescript/connectors/rainbow-kit.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./sequence-kit-CVI04nXa.js"),[]),path:"/sdk/typescript/connectors/sequence-kit",type:"mdx",filePath:"sdk/typescript/connectors/sequence-kit.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./sequence-kit-CVI04nXa.js"),[]),path:"/sdk/typescript/connectors/sequence-kit.html",type:"mdx",filePath:"sdk/typescript/connectors/sequence-kit.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./wagmi-D7WyxJYo.js"),[]),path:"/sdk/typescript/connectors/wagmi",type:"mdx",filePath:"sdk/typescript/connectors/wagmi.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./wagmi-D7WyxJYo.js"),[]),path:"/sdk/typescript/connectors/wagmi.html",type:"mdx",filePath:"sdk/typescript/connectors/wagmi.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./web3-onboard-IYPOmbp3.js"),[]),path:"/sdk/typescript/connectors/web3-onboard",type:"mdx",filePath:"sdk/typescript/connectors/web3-onboard.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./web3-onboard-IYPOmbp3.js"),[]),path:"/sdk/typescript/connectors/web3-onboard.html",type:"mdx",filePath:"sdk/typescript/connectors/web3-onboard.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./web3-react-v6-YR0ZVYS3.js"),[]),path:"/sdk/typescript/connectors/web3-react-v6",type:"mdx",filePath:"sdk/typescript/connectors/web3-react-v6.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./web3-react-v6-YR0ZVYS3.js"),[]),path:"/sdk/typescript/connectors/web3-react-v6.html",type:"mdx",filePath:"sdk/typescript/connectors/web3-react-v6.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./web3modal-DMIWfhnk.js"),[]),path:"/sdk/typescript/connectors/web3modal",type:"mdx",filePath:"sdk/typescript/connectors/web3modal.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./web3modal-DMIWfhnk.js"),[]),path:"/sdk/typescript/connectors/web3modal.html",type:"mdx",filePath:"sdk/typescript/connectors/web3modal.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./auth-address-DCLM4-dc.js"),[]),path:"/sdk/typescript/guides/auth-address",type:"mdx",filePath:"sdk/typescript/guides/auth-address.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./auth-address-DCLM4-dc.js"),[]),path:"/sdk/typescript/guides/auth-address.html",type:"mdx",filePath:"sdk/typescript/guides/auth-address.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./building-backends-L4KCyi28.js"),[]),path:"/sdk/typescript/guides/building-backends",type:"mdx",filePath:"sdk/typescript/guides/building-backends.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./building-backends-L4KCyi28.js"),[]),path:"/sdk/typescript/guides/building-backends.html",type:"mdx",filePath:"sdk/typescript/guides/building-backends.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./connect-wallet-BoxIW1C-.js"),[]),path:"/sdk/typescript/guides/connect-wallet",type:"mdx",filePath:"sdk/typescript/guides/connect-wallet.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./connect-wallet-BoxIW1C-.js"),[]),path:"/sdk/typescript/guides/connect-wallet.html",type:"mdx",filePath:"sdk/typescript/guides/connect-wallet.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-HTLbolaJ.js"),[]),path:"/sdk/typescript/guides/overview",type:"mdx",filePath:"sdk/typescript/guides/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-HTLbolaJ.js"),[]),path:"/sdk/typescript/guides/overview.html",type:"mdx",filePath:"sdk/typescript/guides/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-batch-transactions-B38hFBSw.js"),[]),path:"/sdk/typescript/guides/send-batch-transactions",type:"mdx",filePath:"sdk/typescript/guides/send-batch-transactions.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-batch-transactions-B38hFBSw.js"),[]),path:"/sdk/typescript/guides/send-batch-transactions.html",type:"mdx",filePath:"sdk/typescript/guides/send-batch-transactions.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-erc1155-DS0K_6oD.js"),[]),path:"/sdk/typescript/guides/send-erc1155",type:"mdx",filePath:"sdk/typescript/guides/send-erc1155.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-erc1155-DS0K_6oD.js"),[]),path:"/sdk/typescript/guides/send-erc1155.html",type:"mdx",filePath:"sdk/typescript/guides/send-erc1155.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-erc20-Po8Pymkk.js"),[]),path:"/sdk/typescript/guides/send-erc20",type:"mdx",filePath:"sdk/typescript/guides/send-erc20.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-erc20-Po8Pymkk.js"),[]),path:"/sdk/typescript/guides/send-erc20.html",type:"mdx",filePath:"sdk/typescript/guides/send-erc20.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-erc721-CDOc4LBC.js"),[]),path:"/sdk/typescript/guides/send-erc721",type:"mdx",filePath:"sdk/typescript/guides/send-erc721.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-erc721-CDOc4LBC.js"),[]),path:"/sdk/typescript/guides/send-erc721.html",type:"mdx",filePath:"sdk/typescript/guides/send-erc721.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-transaction-fSumlfko.js"),[]),path:"/sdk/typescript/guides/send-transaction",type:"mdx",filePath:"sdk/typescript/guides/send-transaction.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-transaction-fSumlfko.js"),[]),path:"/sdk/typescript/guides/send-transaction.html",type:"mdx",filePath:"sdk/typescript/guides/send-transaction.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./session-keys-DBkmJwFz.js"),[]),path:"/sdk/typescript/guides/session-keys",type:"mdx",filePath:"sdk/typescript/guides/session-keys.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./session-keys-DBkmJwFz.js"),[]),path:"/sdk/typescript/guides/session-keys.html",type:"mdx",filePath:"sdk/typescript/guides/session-keys.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./sign-message-jXkjk3js.js"),__vite__mapDeps([26,1])),path:"/sdk/typescript/guides/sign-message",type:"mdx",filePath:"sdk/typescript/guides/sign-message.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./sign-message-jXkjk3js.js"),__vite__mapDeps([26,1])),path:"/sdk/typescript/guides/sign-message.html",type:"mdx",filePath:"sdk/typescript/guides/sign-message.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./clients-DLuXEITI.js"),[]),path:"/sdk/unity/Advanced/clients",type:"mdx",filePath:"sdk/unity/Advanced/clients.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./clients-DLuXEITI.js"),[]),path:"/sdk/unity/Advanced/clients.html",type:"mdx",filePath:"sdk/unity/Advanced/clients.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./contracts-qX_qk_af.js"),[]),path:"/sdk/unity/Advanced/contracts",type:"mdx",filePath:"sdk/unity/Advanced/contracts.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./contracts-qX_qk_af.js"),[]),path:"/sdk/unity/Advanced/contracts.html",type:"mdx",filePath:"sdk/unity/Advanced/contracts.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./introduction-1RlXyEQk.js"),[]),path:"/sdk/unity/Advanced/introduction",type:"mdx",filePath:"sdk/unity/Advanced/introduction.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./introduction-1RlXyEQk.js"),[]),path:"/sdk/unity/Advanced/introduction.html",type:"mdx",filePath:"sdk/unity/Advanced/introduction.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./tokens-CFgywGKb.js"),[]),path:"/sdk/unity/Advanced/tokens",type:"mdx",filePath:"sdk/unity/Advanced/tokens.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./tokens-CFgywGKb.js"),[]),path:"/sdk/unity/Advanced/tokens.html",type:"mdx",filePath:"sdk/unity/Advanced/tokens.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./transfers-B4DgcCGY.js"),[]),path:"/sdk/unity/Advanced/transfers",type:"mdx",filePath:"sdk/unity/Advanced/transfers.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./transfers-B4DgcCGY.js"),[]),path:"/sdk/unity/Advanced/transfers.html",type:"mdx",filePath:"sdk/unity/Advanced/transfers.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./wallets-Bg9NQDuM.js"),[]),path:"/sdk/unity/Advanced/wallets",type:"mdx",filePath:"sdk/unity/Advanced/wallets.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./wallets-Bg9NQDuM.js"),[]),path:"/sdk/unity/Advanced/wallets.html",type:"mdx",filePath:"sdk/unity/Advanced/wallets.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./deploy-ERC20-currency-DlMExY16.js"),__vite__mapDeps([27,1])),path:"/solutions/collectibles/contracts/deploy-ERC20-currency",type:"mdx",filePath:"solutions/collectibles/contracts/deploy-ERC20-currency.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./deploy-ERC20-currency-DlMExY16.js"),__vite__mapDeps([27,1])),path:"/solutions/collectibles/contracts/deploy-ERC20-currency.html",type:"mdx",filePath:"solutions/collectibles/contracts/deploy-ERC20-currency.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./deploy-an-item-collection-BAxVVf5g.js"),__vite__mapDeps([28,1])),path:"/solutions/collectibles/contracts/deploy-an-item-collection",type:"mdx",filePath:"solutions/collectibles/contracts/deploy-an-item-collection.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./deploy-an-item-collection-BAxVVf5g.js"),__vite__mapDeps([28,1])),path:"/solutions/collectibles/contracts/deploy-an-item-collection.html",type:"mdx",filePath:"solutions/collectibles/contracts/deploy-an-item-collection.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./manage-metadata-builder-DzHkXKKT.js"),[]),path:"/solutions/collectibles/metadata/manage-metadata-builder",type:"mdx",filePath:"solutions/collectibles/metadata/manage-metadata-builder.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./manage-metadata-builder-DzHkXKKT.js"),[]),path:"/solutions/collectibles/metadata/manage-metadata-builder.html",type:"mdx",filePath:"solutions/collectibles/metadata/manage-metadata-builder.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-CoEZJSU7.js"),__vite__mapDeps([29,1,13])),path:"/solutions/marketplaces/orderbook/overview",type:"mdx",filePath:"solutions/marketplaces/orderbook/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-CoEZJSU7.js"),__vite__mapDeps([29,1,13])),path:"/solutions/marketplaces/orderbook/overview.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./quickstart-BvKzNEEx.js"),[]),path:"/solutions/marketplaces/orderbook/quickstart",type:"mdx",filePath:"solutions/marketplaces/orderbook/quickstart.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./quickstart-BvKzNEEx.js"),[]),path:"/solutions/marketplaces/orderbook/quickstart.html",type:"mdx",filePath:"solutions/marketplaces/orderbook/quickstart.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./fiat-on-ramps-C1kKRZ4s.js"),[]),path:"/solutions/payments/onramps/fiat-on-ramps",type:"mdx",filePath:"solutions/payments/onramps/fiat-on-ramps.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./fiat-on-ramps-C1kKRZ4s.js"),[]),path:"/solutions/payments/onramps/fiat-on-ramps.html",type:"mdx",filePath:"solutions/payments/onramps/fiat-on-ramps.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./deployment-CrTV9zGg.js"),__vite__mapDeps([30,1])),path:"/solutions/technical-references/internals/deployment",type:"mdx",filePath:"solutions/technical-references/internals/deployment.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./deployment-CrTV9zGg.js"),__vite__mapDeps([30,1])),path:"/solutions/technical-references/internals/deployment.html",type:"mdx",filePath:"solutions/technical-references/internals/deployment.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./why-BvKi4BXZ.js"),[]),path:"/solutions/technical-references/wallet-contracts/why",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/why.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./why-BvKi4BXZ.js"),[]),path:"/solutions/technical-references/wallet-contracts/why.html",type:"mdx",filePath:"solutions/technical-references/wallet-contracts/why.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./architecture-2NKK-4JR.js"),[]),path:"/solutions/wallets/embedded-wallet/architecture",type:"mdx",filePath:"solutions/wallets/embedded-wallet/architecture.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./architecture-2NKK-4JR.js"),[]),path:"/solutions/wallets/embedded-wallet/architecture.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/architecture.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-DpWGOv1k.js"),[]),path:"/solutions/wallets/embedded-wallet/overview",type:"mdx",filePath:"solutions/wallets/embedded-wallet/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-DpWGOv1k.js"),[]),path:"/solutions/wallets/embedded-wallet/overview.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./quickstart-1dbVxPAa.js"),[]),path:"/solutions/wallets/embedded-wallet/quickstart",type:"mdx",filePath:"solutions/wallets/embedded-wallet/quickstart.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./quickstart-1dbVxPAa.js"),[]),path:"/solutions/wallets/embedded-wallet/quickstart.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/quickstart.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./fiat-on-ramps-P9y0Lprh.js"),[]),path:"/solutions/wallets/universal-wallet/fiat-on-ramps",type:"mdx",filePath:"solutions/wallets/universal-wallet/fiat-on-ramps.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./fiat-on-ramps-P9y0Lprh.js"),[]),path:"/solutions/wallets/universal-wallet/fiat-on-ramps.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/fiat-on-ramps.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./key-management-DH6Ku-wa.js"),[]),path:"/solutions/wallets/universal-wallet/key-management",type:"mdx",filePath:"solutions/wallets/universal-wallet/key-management.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./key-management-DH6Ku-wa.js"),[]),path:"/solutions/wallets/universal-wallet/key-management.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/key-management.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-CDAMgW9r.js"),[]),path:"/solutions/wallets/universal-wallet/overview",type:"mdx",filePath:"solutions/wallets/universal-wallet/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./overview-CDAMgW9r.js"),[]),path:"/solutions/wallets/universal-wallet/overview.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/overview.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./platforms-KqDT2jgY.js"),[]),path:"/solutions/wallets/universal-wallet/platforms",type:"mdx",filePath:"solutions/wallets/universal-wallet/platforms.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./platforms-KqDT2jgY.js"),[]),path:"/solutions/wallets/universal-wallet/platforms.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/platforms.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./quickstart-B2yWkumm.js"),[]),path:"/solutions/wallets/universal-wallet/quickstart",type:"mdx",filePath:"solutions/wallets/universal-wallet/quickstart.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./quickstart-B2yWkumm.js"),[]),path:"/solutions/wallets/universal-wallet/quickstart.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/quickstart.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./sequence-kit-BOtrrYpD.js"),[]),path:"/solutions/wallets/universal-wallet/sequence-kit",type:"mdx",filePath:"solutions/wallets/universal-wallet/sequence-kit.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./sequence-kit-BOtrrYpD.js"),[]),path:"/solutions/wallets/universal-wallet/sequence-kit.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/sequence-kit.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./01-deploy-B3PiTnA6.js"),__vite__mapDeps([31,1])),path:"/solutions/technical-references/internals/v1/01-deploy",type:"mdx",filePath:"solutions/technical-references/internals/v1/01-deploy.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./01-deploy-B3PiTnA6.js"),__vite__mapDeps([31,1])),path:"/solutions/technical-references/internals/v1/01-deploy.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/01-deploy.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./contract-audits-D1mZU8TH.js"),[]),path:"/solutions/technical-references/internals/v1/contract-audits",type:"mdx",filePath:"solutions/technical-references/internals/v1/contract-audits.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./contract-audits-D1mZU8TH.js"),[]),path:"/solutions/technical-references/internals/v1/contract-audits.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/contract-audits.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./deploy-BzkY3z_7.js"),__vite__mapDeps([32,1])),path:"/solutions/technical-references/internals/v1/deploy",type:"mdx",filePath:"solutions/technical-references/internals/v1/deploy.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./deploy-BzkY3z_7.js"),__vite__mapDeps([32,1])),path:"/solutions/technical-references/internals/v1/deploy.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/deploy.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./guest-module-DvFQUC64.js"),[]),path:"/solutions/technical-references/internals/v1/guest-module",type:"mdx",filePath:"solutions/technical-references/internals/v1/guest-module.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./guest-module-DvFQUC64.js"),[]),path:"/solutions/technical-references/internals/v1/guest-module.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/guest-module.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./main-module-upgradeable-BIbwCPfr.js"),[]),path:"/solutions/technical-references/internals/v1/main-module-upgradeable",type:"mdx",filePath:"solutions/technical-references/internals/v1/main-module-upgradeable.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./main-module-upgradeable-BIbwCPfr.js"),[]),path:"/solutions/technical-references/internals/v1/main-module-upgradeable.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/main-module-upgradeable.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./modules-and-updates-DERbEW_C.js"),[]),path:"/solutions/technical-references/internals/v1/modules-and-updates",type:"mdx",filePath:"solutions/technical-references/internals/v1/modules-and-updates.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./modules-and-updates-DERbEW_C.js"),[]),path:"/solutions/technical-references/internals/v1/modules-and-updates.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/modules-and-updates.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./nested-transaction-batching-DAcdlHuc.js"),[]),path:"/solutions/technical-references/internals/v1/nested-transaction-batching",type:"mdx",filePath:"solutions/technical-references/internals/v1/nested-transaction-batching.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./nested-transaction-batching-DAcdlHuc.js"),[]),path:"/solutions/technical-references/internals/v1/nested-transaction-batching.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/nested-transaction-batching.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./signature-encoding-Do-fAxy8.js"),[]),path:"/solutions/technical-references/internals/v1/signature-encoding",type:"mdx",filePath:"solutions/technical-references/internals/v1/signature-encoding.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./signature-encoding-Do-fAxy8.js"),[]),path:"/solutions/technical-references/internals/v1/signature-encoding.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/signature-encoding.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./wallet-configuration-YYRBOscK.js"),[]),path:"/solutions/technical-references/internals/v1/wallet-configuration",type:"mdx",filePath:"solutions/technical-references/internals/v1/wallet-configuration.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./wallet-configuration-YYRBOscK.js"),[]),path:"/solutions/technical-references/internals/v1/wallet-configuration.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/wallet-configuration.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./wallet-context-BavaH71B.js"),[]),path:"/solutions/technical-references/internals/v1/wallet-context",type:"mdx",filePath:"solutions/technical-references/internals/v1/wallet-context.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./wallet-context-BavaH71B.js"),[]),path:"/solutions/technical-references/internals/v1/wallet-context.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/wallet-context.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./wallet-factory-BmKesde3.js"),__vite__mapDeps([33,1])),path:"/solutions/technical-references/internals/v1/wallet-factory",type:"mdx",filePath:"solutions/technical-references/internals/v1/wallet-factory.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./wallet-factory-BmKesde3.js"),__vite__mapDeps([33,1])),path:"/solutions/technical-references/internals/v1/wallet-factory.html",type:"mdx",filePath:"solutions/technical-references/internals/v1/wallet-factory.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./configuration-C9EpHVaQ.js"),[]),path:"/solutions/technical-references/internals/v2/configuration",type:"mdx",filePath:"solutions/technical-references/internals/v2/configuration.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./configuration-C9EpHVaQ.js"),[]),path:"/solutions/technical-references/internals/v2/configuration.html",type:"mdx",filePath:"solutions/technical-references/internals/v2/configuration.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./deploy-B8RwPBe1.js"),__vite__mapDeps([34,1])),path:"/solutions/technical-references/internals/v2/deploy",type:"mdx",filePath:"solutions/technical-references/internals/v2/deploy.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./deploy-B8RwPBe1.js"),__vite__mapDeps([34,1])),path:"/solutions/technical-references/internals/v2/deploy.html",type:"mdx",filePath:"solutions/technical-references/internals/v2/deploy.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./manage-sessions-De7aop9W.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/manage-sessions",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/manage-sessions.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./manage-sessions-De7aop9W.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/manage-sessions.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/manage-sessions.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./transaction-receipts-yzrSE4zJ.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/transaction-receipts",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/transaction-receipts.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./transaction-receipts-yzrSE4zJ.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/transaction-receipts.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/transaction-receipts.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./use-wallets-h6ggXjOH.js"),__vite__mapDeps([35,1])),path:"/solutions/wallets/embedded-wallet/examples/use-wallets",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/use-wallets.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./use-wallets-h6ggXjOH.js"),__vite__mapDeps([35,1])),path:"/solutions/wallets/embedded-wallet/examples/use-wallets.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/use-wallets.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./validation-CXQf-5w4.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/validation",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/validation.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./validation-CXQf-5w4.js"),[]),path:"/solutions/wallets/embedded-wallet/examples/validation.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/examples/validation.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./action-payloads-C9CQQ1j5.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/action-payloads",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./action-payloads-C9CQQ1j5.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/action-payloads.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/action-payloads.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./enclave-verification-CoMYKGDj.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./enclave-verification-CoMYKGDj.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/enclave-verification.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/enclave-verification.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./intents-mBnhX-CA.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/intents",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/intents.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./intents-mBnhX-CA.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/intents.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/intents.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./response-payloads-D-an3Jm8.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/response-payloads",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./response-payloads-D-an3Jm8.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/response-payloads.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/response-payloads.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./trust-contract-recovery-flow-CL-gRzKa.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./trust-contract-recovery-flow-CL-gRzKa.js"),[]),path:"/solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow.html",type:"mdx",filePath:"solutions/wallets/embedded-wallet/implementation-details/trust-contract-recovery-flow.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./auth-address-q5iOn_cj.js"),[]),path:"/solutions/wallets/universal-wallet/examples/auth-address",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/auth-address.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./auth-address-q5iOn_cj.js"),[]),path:"/solutions/wallets/universal-wallet/examples/auth-address.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/auth-address.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./building-backends-QPy24YOg.js"),[]),path:"/solutions/wallets/universal-wallet/examples/building-backends",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/building-backends.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./building-backends-QPy24YOg.js"),[]),path:"/solutions/wallets/universal-wallet/examples/building-backends.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/building-backends.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./connect-wallet-Bx11cq4A.js"),__vite__mapDeps([36,1])),path:"/solutions/wallets/universal-wallet/examples/connect-wallet",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/connect-wallet.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./connect-wallet-Bx11cq4A.js"),__vite__mapDeps([36,1])),path:"/solutions/wallets/universal-wallet/examples/connect-wallet.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/connect-wallet.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-batch-transactions-OQwn86ac.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-batch-transactions",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-batch-transactions.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-batch-transactions-OQwn86ac.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-batch-transactions.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-batch-transactions.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-erc1155-DNSlJbT7.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-erc1155",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-erc1155.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-erc1155-DNSlJbT7.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-erc1155.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-erc1155.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-erc20-DmBfTjby.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-erc20",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-erc20.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-erc20-DmBfTjby.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-erc20.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-erc20.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-erc721-Cx2qgeNv.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-erc721",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-erc721.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-erc721-Cx2qgeNv.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-erc721.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-erc721.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-transaction-DSTS1xZz.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-transaction",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-transaction.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./send-transaction-DSTS1xZz.js"),[]),path:"/solutions/wallets/universal-wallet/examples/send-transaction.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/send-transaction.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./session-keys-BgNhPm9c.js"),[]),path:"/solutions/wallets/universal-wallet/examples/session-keys",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/session-keys.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./session-keys-BgNhPm9c.js"),[]),path:"/solutions/wallets/universal-wallet/examples/session-keys.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/session-keys.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./sign-message-CnPe3YyQ.js"),__vite__mapDeps([37,1])),path:"/solutions/wallets/universal-wallet/examples/sign-message",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/sign-message.mdx",lastUpdatedAt:1713260421e3},{lazy:()=>b(()=>import("./sign-message-CnPe3YyQ.js"),__vite__mapDeps([37,1])),path:"/solutions/wallets/universal-wallet/examples/sign-message.html",type:"mdx",filePath:"solutions/wallets/universal-wallet/examples/sign-message.mdx",lastUpdatedAt:1713260421e3}];var Ns={horizontalPadding:"var(--vocs-content_horizontalPadding)",verticalPadding:"var(--vocs-content_verticalPadding)",width:"var(--vocs-content_width)"},Tw={default:"system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif",mono:'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace'},Rw={default:"var(--vocs-fontFamily_default)",mono:"var(--vocs-fontFamily_mono)"},Gp={white:"var(--vocs-color_white)",black:"var(--vocs-color_black)",background:"var(--vocs-color_background)",background2:"var(--vocs-color_background2)",background3:"var(--vocs-color_background3)",background4:"var(--vocs-color_background4)",background5:"var(--vocs-color_background5)",backgroundAccent:"var(--vocs-color_backgroundAccent)",backgroundAccentHover:"var(--vocs-color_backgroundAccentHover)",backgroundAccentText:"var(--vocs-color_backgroundAccentText)",backgroundBlueTint:"var(--vocs-color_backgroundBlueTint)",backgroundDark:"var(--vocs-color_backgroundDark)",backgroundGreenTint:"var(--vocs-color_backgroundGreenTint)",backgroundGreenTint2:"var(--vocs-color_backgroundGreenTint2)",backgroundIrisTint:"var(--vocs-color_backgroundIrisTint)",backgroundRedTint:"var(--vocs-color_backgroundRedTint)",backgroundRedTint2:"var(--vocs-color_backgroundRedTint2)",backgroundYellowTint:"var(--vocs-color_backgroundYellowTint)",border:"var(--vocs-color_border)",border2:"var(--vocs-color_border2)",borderAccent:"var(--vocs-color_borderAccent)",borderBlue:"var(--vocs-color_borderBlue)",borderGreen:"var(--vocs-color_borderGreen)",borderIris:"var(--vocs-color_borderIris)",borderRed:"var(--vocs-color_borderRed)",borderYellow:"var(--vocs-color_borderYellow)",heading:"var(--vocs-color_heading)",inverted:"var(--vocs-color_inverted)",shadow:"var(--vocs-color_shadow)",shadow2:"var(--vocs-color_shadow2)",text:"var(--vocs-color_text)",text2:"var(--vocs-color_text2)",text3:"var(--vocs-color_text3)",text4:"var(--vocs-color_text4)",textAccent:"var(--vocs-color_textAccent)",textAccentHover:"var(--vocs-color_textAccentHover)",textBlue:"var(--vocs-color_textBlue)",textBlueHover:"var(--vocs-color_textBlueHover)",textGreen:"var(--vocs-color_textGreen)",textGreenHover:"var(--vocs-color_textGreenHover)",textIris:"var(--vocs-color_textIris)",textIrisHover:"var(--vocs-color_textIrisHover)",textRed:"var(--vocs-color_textRed)",textRedHover:"var(--vocs-color_textRedHover)",textYellow:"var(--vocs-color_textYellow)",textYellowHover:"var(--vocs-color_textYellowHover)",title:"var(--vocs-color_title)"},Ms={0:"var(--vocs-space_0)",1:"var(--vocs-space_1)",2:"var(--vocs-space_2)",3:"var(--vocs-space_3)",4:"var(--vocs-space_4)",6:"var(--vocs-space_6)",8:"var(--vocs-space_8)",12:"var(--vocs-space_12)",14:"var(--vocs-space_14)",16:"var(--vocs-space_16)",18:"var(--vocs-space_18)",20:"var(--vocs-space_20)",22:"var(--vocs-space_22)",24:"var(--vocs-space_24)",28:"var(--vocs-space_28)",32:"var(--vocs-space_32)",36:"var(--vocs-space_36)",40:"var(--vocs-space_40)",44:"var(--vocs-space_44)",48:"var(--vocs-space_48)",56:"var(--vocs-space_56)",64:"var(--vocs-space_64)",72:"var(--vocs-space_72)",80:"var(--vocs-space_80)"};function F0(e){var t,n,r="";if(typeof e=="string"||typeof e=="number")r+=e;else if(typeof e=="object")if(Array.isArray(e)){var o=e.length;for(t=0;t ")," does not exist in object"));n=n[r]}return n}function U0(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],r={};for(var o in e){var i=e[o],a=[...n,o];typeof i=="string"||typeof i=="number"||i==null?r[o]=t(i,a):typeof i=="object"&&!Array.isArray(i)?r[o]=U0(i,t,a):console.warn('Skipping invalid key "'.concat(a.join("."),'". Should be a string, number, null or object. Received: "').concat(Array.isArray(i)?"Array":typeof i,'"'))}return r}function qt(e,t){var n={};if(typeof t=="object"){var r=e;U0(t,(l,s)=>{if(l!=null){var c=$w(r,s);n[qp(c)]=String(l)}})}else{var o=e;for(var i in o){var a=o[i];a!=null&&(n[qp(i)]=a)}}return Object.defineProperty(n,"toString",{value:function(){return Object.keys(this).map(s=>"".concat(s,":").concat(this[s])).join(";")},writable:!1}),n}var Ow="var(--vocs_ExternalLink_iconUrl)",Iw="vocs_ExternalLink";const Lw=p.forwardRef(({className:e,children:t,hideExternalIcon:n,href:r,...o},i)=>{const{basePath:a}=Je(),l=a;return x.jsx("a",{ref:i,className:D(e,n||typeof t!="string"?void 0:Iw),href:r,target:"_blank",rel:"noopener noreferrer",style:qt({[Ow]:`url(${l}/.vocs/icons/arrow-diagonal.svg)`}),...o,children:t})});var Yp="vocs_Link_accent_underlined",Qp="vocs_Link",Zp="vocs_Link_styleless",ic=new Map,va=new WeakMap,Xp=0,Dw=void 0;function Nw(e){return e?(va.has(e)||(Xp+=1,va.set(e,Xp.toString())),va.get(e)):"0"}function Mw(e){return Object.keys(e).sort().filter(t=>e[t]!==void 0).map(t=>`${t}_${t==="root"?Nw(e.root):e[t]}`).toString()}function jw(e){const t=Mw(e);let n=ic.get(t);if(!n){const r=new Map;let o;const i=new IntersectionObserver(a=>{a.forEach(l=>{var s;const c=l.isIntersecting&&o.some(d=>l.intersectionRatio>=d);e.trackVisibility&&typeof l.isVisible>"u"&&(l.isVisible=c),(s=r.get(l.target))==null||s.forEach(d=>{d(c,l)})})},e);o=i.thresholds||(Array.isArray(e.threshold)?e.threshold:[e.threshold||0]),n={id:t,observer:i,elements:r},ic.set(t,n)}return n}function zw(e,t,n={},r=Dw){if(typeof window.IntersectionObserver>"u"&&r!==void 0){const s=e.getBoundingClientRect();return t(r,{isIntersecting:r,target:e,intersectionRatio:typeof n.threshold=="number"?n.threshold:0,time:0,boundingClientRect:s,intersectionRect:s,rootBounds:s}),()=>{}}const{id:o,observer:i,elements:a}=jw(n),l=a.get(e)||[];return a.has(e)||a.set(e,l),l.push(t),i.observe(e),function(){l.splice(l.indexOf(t),1),l.length===0&&(a.delete(e),i.unobserve(e)),a.size===0&&(i.disconnect(),ic.delete(o))}}function V0({threshold:e,delay:t,trackVisibility:n,rootMargin:r,root:o,triggerOnce:i,skip:a,initialInView:l,fallbackInView:s,onChange:c}={}){var d;const[u,f]=p.useState(null),h=p.useRef(),[y,g]=p.useState({inView:!!l,entry:void 0});h.current=c,p.useEffect(()=>{if(a||!u)return;let _;return _=zw(u,(E,C)=>{g({inView:E,entry:C}),h.current&&h.current(E,C),C.isIntersecting&&i&&_&&(_(),_=void 0)},{root:o,rootMargin:r,threshold:e,trackVisibility:n,delay:t},s),()=>{_&&_()}},[Array.isArray(e)?e.toString():e,u,o,r,i,a,n,s,t]);const w=(d=y.entry)==null?void 0:d.target,m=p.useRef();!u&&w&&!i&&!a&&m.current!==w&&(m.current=w,g({inView:!!l,entry:void 0}));const v=[f,y.inView,y.entry];return v.ref=v[0],v.inView=v[1],v.entry=v[2],v}function Fw(...e){return t=>{Uw(t,...e)}}function Uw(e,...t){t.forEach(n=>{typeof n=="function"?n(e):n!=null&&(n.current=e)})}const qn=p.forwardRef((e,t)=>{const n=()=>{var i;return(i=zd.find(a=>a.path===e.to))==null?void 0:i.lazy()},{ref:r,inView:o}=V0();return p.useEffect(()=>{o&&n()},[o,n]),x.jsx(N0,{ref:Fw(t,r),...e})}),nn=p.forwardRef((e,t)=>{const{href:n,variant:r="accent underlined"}=e,{pathname:o}=Re();if(n!=null&&n.match(/^(www|https?)/))return x.jsx(Lw,{...e,ref:t,className:D(e.className,Qp,r==="accent underlined"&&Yp,r==="styleless"&&Zp),hideExternalIcon:e.hideExternalIcon});const[i,a]=(n||"").split("#"),l=`${i||o}${a?`#${a}`:""}`;return x.jsx(qn,{...e,ref:t,className:D(e.className,Qp,r==="accent underlined"&&Yp,r==="styleless"&&Zp),to:l})});var Vw="vocs_NotFound_divider",Bw="vocs_NotFound",Hw="vocs_H1",B0="vocs_Heading",H0="vocs_Heading_slugTarget";function To({level:e,...t}){const n=`h${e}`;return x.jsxs(n,{...t,id:void 0,className:D(t.className,B0),children:[x.jsx("div",{id:t.id,className:H0}),t.children]})}function W0(e){return x.jsx(To,{...e,className:D(e.className,Hw),level:1})}var Ww="vocs_Paragraph";function K0(e){return x.jsx("p",{...e,className:D(e.className,Ww)})}function Kw(){return x.jsxs("div",{className:Bw,children:[x.jsx(W0,{children:"Page Not Found"}),x.jsx("div",{style:{height:Ms[24]}}),x.jsx("hr",{className:Vw}),x.jsx("div",{style:{height:Ms[24]}}),x.jsx(K0,{children:"The page you were looking for could not be found."}),x.jsx("div",{style:{height:Ms[8]}}),x.jsx(nn,{href:"/",children:"Go to Home Page"})]})}var Gw="var(--vocs_Banner_bannerBackgroundColor)",qw="var(--vocs_Banner_bannerHeight)",Yw="var(--vocs_Banner_bannerTextColor)",Qw="vocs_Banner_closeButton",Zw="vocs_Banner_content",Xw="vocs_Banner_inner",Jw="vocs_Banner";const e3=Object.getPrototypeOf(t3).constructor;async function t3(e,t){return new e3(String(e))(t)}function n3(e,t){return new Function(String(e))(t)}function Ar(e,t){if(e==null)return{};var n={},r=Object.keys(e),o,i;for(i=0;i=0)&&(n[o]=e[o]);return n}var r3=["color"],o3=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ar(e,r3);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M6.85355 3.14645C7.04882 3.34171 7.04882 3.65829 6.85355 3.85355L3.70711 7H12.5C12.7761 7 13 7.22386 13 7.5C13 7.77614 12.7761 8 12.5 8H3.70711L6.85355 11.1464C7.04882 11.3417 7.04882 11.6583 6.85355 11.8536C6.65829 12.0488 6.34171 12.0488 6.14645 11.8536L2.14645 7.85355C1.95118 7.65829 1.95118 7.34171 2.14645 7.14645L6.14645 3.14645C6.34171 2.95118 6.65829 2.95118 6.85355 3.14645Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),i3=["color"],a3=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ar(e,i3);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M6.1584 3.13508C6.35985 2.94621 6.67627 2.95642 6.86514 3.15788L10.6151 7.15788C10.7954 7.3502 10.7954 7.64949 10.6151 7.84182L6.86514 11.8418C6.67627 12.0433 6.35985 12.0535 6.1584 11.8646C5.95694 11.6757 5.94673 11.3593 6.1356 11.1579L9.565 7.49985L6.1356 3.84182C5.94673 3.64036 5.95694 3.32394 6.1584 3.13508Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),l3=["color"],s3=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ar(e,l3);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M12.8536 2.85355C13.0488 2.65829 13.0488 2.34171 12.8536 2.14645C12.6583 1.95118 12.3417 1.95118 12.1464 2.14645L7.5 6.79289L2.85355 2.14645C2.65829 1.95118 2.34171 1.95118 2.14645 2.14645C1.95118 2.34171 1.95118 2.65829 2.14645 2.85355L6.79289 7.5L2.14645 12.1464C1.95118 12.3417 1.95118 12.6583 2.14645 12.8536C2.34171 13.0488 2.65829 13.0488 2.85355 12.8536L7.5 8.20711L12.1464 12.8536C12.3417 13.0488 12.6583 13.0488 12.8536 12.8536C13.0488 12.6583 13.0488 12.3417 12.8536 12.1464L8.20711 7.5L12.8536 2.85355Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),u3=["color"],c3=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ar(e,u3);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M3.5 2C3.22386 2 3 2.22386 3 2.5V12.5C3 12.7761 3.22386 13 3.5 13H11.5C11.7761 13 12 12.7761 12 12.5V6H8.5C8.22386 6 8 5.77614 8 5.5V2H3.5ZM9 2.70711L11.2929 5H9V2.70711ZM2 2.5C2 1.67157 2.67157 1 3.5 1H8.5C8.63261 1 8.75979 1.05268 8.85355 1.14645L12.8536 5.14645C12.9473 5.24021 13 5.36739 13 5.5V12.5C13 13.3284 12.3284 14 11.5 14H3.5C2.67157 14 2 13.3284 2 12.5V2.5Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),d3=["color"],f3=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ar(e,d3);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M1.5 5.25C1.91421 5.25 2.25 4.91421 2.25 4.5C2.25 4.08579 1.91421 3.75 1.5 3.75C1.08579 3.75 0.75 4.08579 0.75 4.5C0.75 4.91421 1.08579 5.25 1.5 5.25ZM4 4.5C4 4.22386 4.22386 4 4.5 4H13.5C13.7761 4 14 4.22386 14 4.5C14 4.77614 13.7761 5 13.5 5H4.5C4.22386 5 4 4.77614 4 4.5ZM4.5 7C4.22386 7 4 7.22386 4 7.5C4 7.77614 4.22386 8 4.5 8H13.5C13.7761 8 14 7.77614 14 7.5C14 7.22386 13.7761 7 13.5 7H4.5ZM4.5 10C4.22386 10 4 10.2239 4 10.5C4 10.7761 4.22386 11 4.5 11H13.5C13.7761 11 14 10.7761 14 10.5C14 10.2239 13.7761 10 13.5 10H4.5ZM2.25 7.5C2.25 7.91421 1.91421 8.25 1.5 8.25C1.08579 8.25 0.75 7.91421 0.75 7.5C0.75 7.08579 1.08579 6.75 1.5 6.75C1.91421 6.75 2.25 7.08579 2.25 7.5ZM1.5 11.25C1.91421 11.25 2.25 10.9142 2.25 10.5C2.25 10.0858 1.91421 9.75 1.5 9.75C1.08579 9.75 0.75 10.0858 0.75 10.5C0.75 10.9142 1.08579 11.25 1.5 11.25Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),p3=["color"],Fd=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ar(e,p3);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M10 6.5C10 8.433 8.433 10 6.5 10C4.567 10 3 8.433 3 6.5C3 4.567 4.567 3 6.5 3C8.433 3 10 4.567 10 6.5ZM9.30884 10.0159C8.53901 10.6318 7.56251 11 6.5 11C4.01472 11 2 8.98528 2 6.5C2 4.01472 4.01472 2 6.5 2C8.98528 2 11 4.01472 11 6.5C11 7.56251 10.6318 8.53901 10.0159 9.30884L12.8536 12.1464C13.0488 12.3417 13.0488 12.6583 12.8536 12.8536C12.6583 13.0488 12.3417 13.0488 12.1464 12.8536L9.30884 10.0159Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))}),h3=["color"],m3=p.forwardRef(function(e,t){var n=e.color,r=n===void 0?"currentColor":n,o=Ar(e,h3);return p.createElement("svg",Object.assign({width:"15",height:"15",viewBox:"0 0 15 15",fill:"none",xmlns:"http://www.w3.org/2000/svg"},o,{ref:t}),p.createElement("path",{d:"M12.1464 1.14645C12.3417 0.951184 12.6583 0.951184 12.8535 1.14645L14.8535 3.14645C15.0488 3.34171 15.0488 3.65829 14.8535 3.85355L10.9109 7.79618C10.8349 7.87218 10.7471 7.93543 10.651 7.9835L6.72359 9.94721C6.53109 10.0435 6.29861 10.0057 6.14643 9.85355C5.99425 9.70137 5.95652 9.46889 6.05277 9.27639L8.01648 5.34897C8.06455 5.25283 8.1278 5.16507 8.2038 5.08907L12.1464 1.14645ZM12.5 2.20711L8.91091 5.79618L7.87266 7.87267L8.12731 8.12732L10.2038 7.08907L13.7929 3.5L12.5 2.20711ZM9.99998 2L8.99998 3H4.9C4.47171 3 4.18056 3.00039 3.95552 3.01877C3.73631 3.03668 3.62421 3.06915 3.54601 3.10899C3.35785 3.20487 3.20487 3.35785 3.10899 3.54601C3.06915 3.62421 3.03669 3.73631 3.01878 3.95552C3.00039 4.18056 3 4.47171 3 4.9V11.1C3 11.5283 3.00039 11.8194 3.01878 12.0445C3.03669 12.2637 3.06915 12.3758 3.10899 12.454C3.20487 12.6422 3.35785 12.7951 3.54601 12.891C3.62421 12.9309 3.73631 12.9633 3.95552 12.9812C4.18056 12.9996 4.47171 13 4.9 13H11.1C11.5283 13 11.8194 12.9996 12.0445 12.9812C12.2637 12.9633 12.3758 12.9309 12.454 12.891C12.6422 12.7951 12.7951 12.6422 12.891 12.454C12.9309 12.3758 12.9633 12.2637 12.9812 12.0445C12.9996 11.8194 13 11.5283 13 11.1V6.99998L14 5.99998V11.1V11.1207C14 11.5231 14 11.8553 13.9779 12.1259C13.9549 12.407 13.9057 12.6653 13.782 12.908C13.5903 13.2843 13.2843 13.5903 12.908 13.782C12.6653 13.9057 12.407 13.9549 12.1259 13.9779C11.8553 14 11.5231 14 11.1207 14H11.1H4.9H4.87934C4.47686 14 4.14468 14 3.87409 13.9779C3.59304 13.9549 3.33469 13.9057 3.09202 13.782C2.7157 13.5903 2.40973 13.2843 2.21799 12.908C2.09434 12.6653 2.04506 12.407 2.0221 12.1259C1.99999 11.8553 1.99999 11.5231 2 11.1207V11.1206V11.1V4.9V4.87935V4.87932V4.87931C1.99999 4.47685 1.99999 4.14468 2.0221 3.87409C2.04506 3.59304 2.09434 3.33469 2.21799 3.09202C2.40973 2.71569 2.7157 2.40973 3.09202 2.21799C3.33469 2.09434 3.59304 2.04506 3.87409 2.0221C4.14468 1.99999 4.47685 1.99999 4.87932 2H4.87935H4.9H9.99998Z",fill:r,fillRule:"evenodd",clipRule:"evenodd"}))});function vl(e,t){if(typeof e!="object"||e===null)return e;if(Array.isArray(e))return e.map((r,o)=>vl(r,o));const n=e.props.children?{...e.props,children:vl(e.props.children)}:e.props;return Z.createElement(e.type,{...n,key:t})}function v3({hide:e}){const{banner:t}=Je(),n=p.useMemo(()=>{const r=(t==null?void 0:t.content)??"";if(!r)return null;if(typeof r!="string")return()=>vl(r);const{default:o}=n3(r,{...Wy,Fragment:p.Fragment});return o},[t]);return n?x.jsx("div",{className:D(Jw),style:qt({[Gw]:t==null?void 0:t.backgroundColor,[Yw]:t==null?void 0:t.textColor}),children:x.jsxs("div",{className:D(Xw),children:[x.jsx("div",{className:D(Zw),children:x.jsx(n,{})}),(t==null?void 0:t.dismissable)!=="false"&&x.jsx("button",{className:D(Qw),onClick:e,type:"button",children:x.jsx(s3,{width:14,height:14})})]})}):null}var g3="vocs_Content";function G0({children:e,className:t}){return x.jsx("article",{className:D(t,g3),children:e})}function q0({items:e,pathname:t}){const n=t.replace(/\.html$/,""),r=[];for(const o of e)(o.link&&n.startsWith(o.match||o.link)||o.items&&q0({items:o.items,pathname:t}).length>0)&&r.push(o.id);return r}function Bi({items:e,pathname:t}){return p.useMemo(()=>q0({items:e,pathname:t}),[e,t])}function Sr(){const e=p.useContext(Y0);if(!e)throw new Error("`usePageData` must be used within `PageDataContext.Provider`.");return e}const Y0=p.createContext(void 0);function Bl(){const{pathname:e}=Re(),t=Je(),{sidebar:n}=t;if(!n)return{items:[]};if(Array.isArray(n))return{items:n};const r=p.useMemo(()=>{const o=Object.keys(n).filter(i=>e.startsWith(i));return o[o.length-1]},[n,e]);return r?Array.isArray(n[r])?{key:r,items:n[r]}:{...n[r],key:r}:{items:[]}}function Tr(){const e=Bl(),{frontmatter:t}=Sr(),{layout:n,showLogo:r,showOutline:o,showSidebar:i,showTopNav:a}=t||{},l=n??"docs";return{layout:l,get showLogo(){return typeof r<"u"?r:!0},get showOutline(){return typeof o<"u"?o:l==="docs"},get showSidebar(){return e.items.length===0?!1:typeof i<"u"?i:!(l==="minimal"||l==="landing")},get showTopNav(){return typeof a<"u"?a:!0}}}function y3(){const[e,t]=p.useState(()=>{if(!(typeof window>"u")){if(localStorage.getItem("vocs.theme")){const n=localStorage.getItem("vocs.theme");if(n)return n}return window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light"}});return p.useEffect(()=>{e&&localStorage.setItem("vocs.theme",e),e==="dark"?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},[e]),{theme:e,toggle(){t(n=>n==="light"?"dark":"light")}}}var x3="vocs_utils_visibleDark",_3="vocs_utils_visibleLight",Q0="vocs_utils_visuallyHidden";function q(){return q=Object.assign?Object.assign.bind():function(e){for(var t=1;te.forEach(n=>w3(n,t))}function Ue(...e){return p.useCallback(Z0(...e),e)}function En(e,t=[]){let n=[];function r(i,a){const l=p.createContext(a),s=n.length;n=[...n,a];function c(u){const{scope:f,children:h,...y}=u,g=(f==null?void 0:f[e][s])||l,w=p.useMemo(()=>y,Object.values(y));return p.createElement(g.Provider,{value:w},h)}function d(u,f){const h=(f==null?void 0:f[e][s])||l,y=p.useContext(h);if(y)return y;if(a!==void 0)return a;throw new Error(`\`${u}\` must be used within \`${i}\``)}return c.displayName=i+"Provider",[c,d]}const o=()=>{const i=n.map(a=>p.createContext(a));return function(l){const s=(l==null?void 0:l[e])||i;return p.useMemo(()=>({[`__scope${e}`]:{...l,[e]:s}}),[l,s])}};return o.scopeName=e,[r,E3(o,...t)]}function E3(...e){const t=e[0];if(e.length===1)return t;const n=()=>{const r=e.map(o=>({useScope:o(),scopeName:o.scopeName}));return function(i){const a=r.reduce((l,{useScope:s,scopeName:c})=>{const u=s(i)[`__scope${c}`];return{...l,...u}},{});return p.useMemo(()=>({[`__scope${t.scopeName}`]:a}),[a])}};return n.scopeName=t.scopeName,n}const gn=globalThis!=null&&globalThis.document?p.useLayoutEffect:()=>{},k3=Uc.useId||(()=>{});let b3=0;function rn(e){const[t,n]=p.useState(k3());return gn(()=>{e||n(r=>r??String(b3++))},[e]),e||(t?`radix-${t}`:"")}function at(e){const t=p.useRef(e);return p.useEffect(()=>{t.current=e}),p.useMemo(()=>(...n)=>{var r;return(r=t.current)===null||r===void 0?void 0:r.call(t,...n)},[])}function rr({prop:e,defaultProp:t,onChange:n=()=>{}}){const[r,o]=C3({defaultProp:t,onChange:n}),i=e!==void 0,a=i?e:r,l=at(n),s=p.useCallback(c=>{if(i){const u=typeof c=="function"?c(e):c;u!==e&&l(u)}else o(c)},[i,e,o,l]);return[a,s]}function C3({defaultProp:e,onChange:t}){const n=p.useState(e),[r]=n,o=p.useRef(r),i=at(t);return p.useEffect(()=>{o.current!==r&&(i(r),o.current=r)},[r,o,i]),n}const wo=p.forwardRef((e,t)=>{const{children:n,...r}=e,o=p.Children.toArray(n),i=o.find(A3);if(i){const a=i.props.children,l=o.map(s=>s===i?p.Children.count(a)>1?p.Children.only(null):p.isValidElement(a)?a.props.children:null:s);return p.createElement(ac,q({},r,{ref:t}),p.isValidElement(a)?p.cloneElement(a,void 0,l):null)}return p.createElement(ac,q({},r,{ref:t}),n)});wo.displayName="Slot";const ac=p.forwardRef((e,t)=>{const{children:n,...r}=e;return p.isValidElement(n)?p.cloneElement(n,{...S3(r,n.props),ref:t?Z0(t,n.ref):n.ref}):p.Children.count(n)>1?p.Children.only(null):null});ac.displayName="SlotClone";const P3=({children:e})=>p.createElement(p.Fragment,null,e);function A3(e){return p.isValidElement(e)&&e.type===P3}function S3(e,t){const n={...t};for(const r in t){const o=e[r],i=t[r];/^on[A-Z]/.test(r)?o&&i?n[r]=(...l)=>{i(...l),o(...l)}:o&&(n[r]=o):r==="style"?n[r]={...o,...i}:r==="className"&&(n[r]=[o,i].filter(Boolean).join(" "))}return{...e,...n}}const T3=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"],fe=T3.reduce((e,t)=>{const n=p.forwardRef((r,o)=>{const{asChild:i,...a}=r,l=i?wo:t;return p.useEffect(()=>{window[Symbol.for("radix-ui")]=!0},[]),p.createElement(l,q({},a,{ref:o}))});return n.displayName=`Primitive.${t}`,{...e,[t]:n}},{});function lc(e,t){e&&Ao.flushSync(()=>e.dispatchEvent(t))}function R3(e,t=globalThis==null?void 0:globalThis.document){const n=at(e);p.useEffect(()=>{const r=o=>{o.key==="Escape"&&n(o)};return t.addEventListener("keydown",r),()=>t.removeEventListener("keydown",r)},[n,t])}const sc="dismissableLayer.update",$3="dismissableLayer.pointerDownOutside",O3="dismissableLayer.focusOutside";let Jp;const I3=p.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),Ud=p.forwardRef((e,t)=>{var n;const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:o,onPointerDownOutside:i,onFocusOutside:a,onInteractOutside:l,onDismiss:s,...c}=e,d=p.useContext(I3),[u,f]=p.useState(null),h=(n=u==null?void 0:u.ownerDocument)!==null&&n!==void 0?n:globalThis==null?void 0:globalThis.document,[,y]=p.useState({}),g=Ue(t,A=>f(A)),w=Array.from(d.layers),[m]=[...d.layersWithOutsidePointerEventsDisabled].slice(-1),v=w.indexOf(m),_=u?w.indexOf(u):-1,E=d.layersWithOutsidePointerEventsDisabled.size>0,C=_>=v,k=L3(A=>{const S=A.target,O=[...d.branches].some(j=>j.contains(S));!C||O||(i==null||i(A),l==null||l(A),A.defaultPrevented||s==null||s())},h),P=D3(A=>{const S=A.target;[...d.branches].some(j=>j.contains(S))||(a==null||a(A),l==null||l(A),A.defaultPrevented||s==null||s())},h);return R3(A=>{_===d.layers.size-1&&(o==null||o(A),!A.defaultPrevented&&s&&(A.preventDefault(),s()))},h),p.useEffect(()=>{if(u)return r&&(d.layersWithOutsidePointerEventsDisabled.size===0&&(Jp=h.body.style.pointerEvents,h.body.style.pointerEvents="none"),d.layersWithOutsidePointerEventsDisabled.add(u)),d.layers.add(u),eh(),()=>{r&&d.layersWithOutsidePointerEventsDisabled.size===1&&(h.body.style.pointerEvents=Jp)}},[u,h,r,d]),p.useEffect(()=>()=>{u&&(d.layers.delete(u),d.layersWithOutsidePointerEventsDisabled.delete(u),eh())},[u,d]),p.useEffect(()=>{const A=()=>y({});return document.addEventListener(sc,A),()=>document.removeEventListener(sc,A)},[]),p.createElement(fe.div,q({},c,{ref:g,style:{pointerEvents:E?C?"auto":"none":void 0,...e.style},onFocusCapture:le(e.onFocusCapture,P.onFocusCapture),onBlurCapture:le(e.onBlurCapture,P.onBlurCapture),onPointerDownCapture:le(e.onPointerDownCapture,k.onPointerDownCapture)}))});function L3(e,t=globalThis==null?void 0:globalThis.document){const n=at(e),r=p.useRef(!1),o=p.useRef(()=>{});return p.useEffect(()=>{const i=l=>{if(l.target&&!r.current){let c=function(){X0($3,n,s,{discrete:!0})};const s={originalEvent:l};l.pointerType==="touch"?(t.removeEventListener("click",o.current),o.current=c,t.addEventListener("click",o.current,{once:!0})):c()}else t.removeEventListener("click",o.current);r.current=!1},a=window.setTimeout(()=>{t.addEventListener("pointerdown",i)},0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",i),t.removeEventListener("click",o.current)}},[t,n]),{onPointerDownCapture:()=>r.current=!0}}function D3(e,t=globalThis==null?void 0:globalThis.document){const n=at(e),r=p.useRef(!1);return p.useEffect(()=>{const o=i=>{i.target&&!r.current&&X0(O3,n,{originalEvent:i},{discrete:!1})};return t.addEventListener("focusin",o),()=>t.removeEventListener("focusin",o)},[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}function eh(){const e=new CustomEvent(sc);document.dispatchEvent(e)}function X0(e,t,n,{discrete:r}){const o=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),r?lc(o,i):o.dispatchEvent(i)}const js="focusScope.autoFocusOnMount",zs="focusScope.autoFocusOnUnmount",th={bubbles:!1,cancelable:!0},J0=p.forwardRef((e,t)=>{const{loop:n=!1,trapped:r=!1,onMountAutoFocus:o,onUnmountAutoFocus:i,...a}=e,[l,s]=p.useState(null),c=at(o),d=at(i),u=p.useRef(null),f=Ue(t,g=>s(g)),h=p.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;p.useEffect(()=>{if(r){let g=function(_){if(h.paused||!l)return;const E=_.target;l.contains(E)?u.current=E:$n(u.current,{select:!0})},w=function(_){if(h.paused||!l)return;const E=_.relatedTarget;E!==null&&(l.contains(E)||$n(u.current,{select:!0}))},m=function(_){if(document.activeElement===document.body)for(const C of _)C.removedNodes.length>0&&$n(l)};document.addEventListener("focusin",g),document.addEventListener("focusout",w);const v=new MutationObserver(m);return l&&v.observe(l,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",g),document.removeEventListener("focusout",w),v.disconnect()}}},[r,l,h.paused]),p.useEffect(()=>{if(l){rh.add(h);const g=document.activeElement;if(!l.contains(g)){const m=new CustomEvent(js,th);l.addEventListener(js,c),l.dispatchEvent(m),m.defaultPrevented||(N3(U3(e1(l)),{select:!0}),document.activeElement===g&&$n(l))}return()=>{l.removeEventListener(js,c),setTimeout(()=>{const m=new CustomEvent(zs,th);l.addEventListener(zs,d),l.dispatchEvent(m),m.defaultPrevented||$n(g??document.body,{select:!0}),l.removeEventListener(zs,d),rh.remove(h)},0)}}},[l,c,d,h]);const y=p.useCallback(g=>{if(!n&&!r||h.paused)return;const w=g.key==="Tab"&&!g.altKey&&!g.ctrlKey&&!g.metaKey,m=document.activeElement;if(w&&m){const v=g.currentTarget,[_,E]=M3(v);_&&E?!g.shiftKey&&m===E?(g.preventDefault(),n&&$n(_,{select:!0})):g.shiftKey&&m===_&&(g.preventDefault(),n&&$n(E,{select:!0})):m===v&&g.preventDefault()}},[n,r,h.paused]);return p.createElement(fe.div,q({tabIndex:-1},a,{ref:f,onKeyDown:y}))});function N3(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if($n(r,{select:t}),document.activeElement!==n)return}function M3(e){const t=e1(e),n=nh(t,e),r=nh(t.reverse(),e);return[n,r]}function e1(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function nh(e,t){for(const n of e)if(!j3(n,{upTo:t}))return n}function j3(e,{upTo:t}){if(getComputedStyle(e).visibility==="hidden")return!0;for(;e;){if(t!==void 0&&e===t)return!1;if(getComputedStyle(e).display==="none")return!0;e=e.parentElement}return!1}function z3(e){return e instanceof HTMLInputElement&&"select"in e}function $n(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&z3(e)&&t&&e.select()}}const rh=F3();function F3(){let e=[];return{add(t){const n=e[0];t!==n&&(n==null||n.pause()),e=oh(e,t),e.unshift(t)},remove(t){var n;e=oh(e,t),(n=e[0])===null||n===void 0||n.resume()}}}function oh(e,t){const n=[...e],r=n.indexOf(t);return r!==-1&&n.splice(r,1),n}function U3(e){return e.filter(t=>t.tagName!=="A")}const t1=p.forwardRef((e,t)=>{var n;const{container:r=globalThis==null||(n=globalThis.document)===null||n===void 0?void 0:n.body,...o}=e;return r?y0.createPortal(p.createElement(fe.div,q({},o,{ref:t})),r):null});function V3(e,t){return p.useReducer((n,r)=>{const o=t[n][r];return o??n},e)}const kn=e=>{const{present:t,children:n}=e,r=B3(t),o=typeof n=="function"?n({present:r.isPresent}):p.Children.only(n),i=Ue(r.ref,o.ref);return typeof n=="function"||r.isPresent?p.cloneElement(o,{ref:i}):null};kn.displayName="Presence";function B3(e){const[t,n]=p.useState(),r=p.useRef({}),o=p.useRef(e),i=p.useRef("none"),a=e?"mounted":"unmounted",[l,s]=V3(a,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return p.useEffect(()=>{const c=ga(r.current);i.current=l==="mounted"?c:"none"},[l]),gn(()=>{const c=r.current,d=o.current;if(d!==e){const f=i.current,h=ga(c);e?s("MOUNT"):h==="none"||(c==null?void 0:c.display)==="none"?s("UNMOUNT"):s(d&&f!==h?"ANIMATION_OUT":"UNMOUNT"),o.current=e}},[e,s]),gn(()=>{if(t){const c=u=>{const h=ga(r.current).includes(u.animationName);u.target===t&&h&&Ao.flushSync(()=>s("ANIMATION_END"))},d=u=>{u.target===t&&(i.current=ga(r.current))};return t.addEventListener("animationstart",d),t.addEventListener("animationcancel",c),t.addEventListener("animationend",c),()=>{t.removeEventListener("animationstart",d),t.removeEventListener("animationcancel",c),t.removeEventListener("animationend",c)}}else s("ANIMATION_END")},[t,s]),{isPresent:["mounted","unmountSuspended"].includes(l),ref:p.useCallback(c=>{c&&(r.current=getComputedStyle(c)),n(c)},[])}}function ga(e){return(e==null?void 0:e.animationName)||"none"}let Fs=0;function n1(){p.useEffect(()=>{var e,t;const n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",(e=n[0])!==null&&e!==void 0?e:ih()),document.body.insertAdjacentElement("beforeend",(t=n[1])!==null&&t!==void 0?t:ih()),Fs++,()=>{Fs===1&&document.querySelectorAll("[data-radix-focus-guard]").forEach(r=>r.remove()),Fs--}},[])}function ih(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}var Jt=function(){return Jt=Object.assign||function(t){for(var n,r=1,o=arguments.length;r"u")return aE;var t=lE(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},uE=a1(),lo="data-scroll-locked",cE=function(e,t,n,r){var o=e.left,i=e.top,a=e.right,l=e.gap;return n===void 0&&(n="margin"),` + .`.concat(W3,` { overflow: hidden `).concat(r,`; padding-right: `).concat(l,"px ").concat(r,`; } @@ -106,18 +106,18 @@ Error generating stack: `+i.message+` } body[`).concat(lo,`] { - `).concat(K4,": ").concat(l,`px; + `).concat(K3,": ").concat(l,`px; } -`)},lh=function(){var e=parseInt(document.body.getAttribute(lo)||"0",10);return isFinite(e)?e:0},d3=function(){p.useEffect(function(){return document.body.setAttribute(lo,(lh()+1).toString()),function(){var e=lh()-1;e<=0?document.body.removeAttribute(lo):document.body.setAttribute(lo,e.toString())}},[])},f3=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r;d3();var i=p.useMemo(function(){return s3(o)},[o]);return p.createElement(u3,{styles:c3(i,!t,o,n?"":"!important")})},uc=!1;if(typeof window<"u")try{var ya=Object.defineProperty({},"passive",{get:function(){return uc=!0,!0}});window.addEventListener("test",ya,ya),window.removeEventListener("test",ya,ya)}catch{uc=!1}var Nr=uc?{passive:!1}:!1,p3=function(e){return e.tagName==="TEXTAREA"},l1=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!p3(e)&&n[t]==="visible")},h3=function(e){return l1(e,"overflowY")},m3=function(e){return l1(e,"overflowX")},sh=function(e,t){var n=t;do{typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&(n=n.host);var r=s1(e,n);if(r){var o=u1(e,n),i=o[1],a=o[2];if(i>a)return!0}n=n.parentNode}while(n&&n!==document.body);return!1},v3=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},g3=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},s1=function(e,t){return e==="v"?h3(t):m3(t)},u1=function(e,t){return e==="v"?v3(t):g3(t)},y3=function(e,t){return e==="h"&&t==="rtl"?-1:1},x3=function(e,t,n,r,o){var i=y3(e,window.getComputedStyle(t).direction),a=i*r,l=n.target,s=t.contains(l),c=!1,d=a>0,u=0,f=0;do{var h=u1(e,l),y=h[0],g=h[1],w=h[2],m=g-w-i*y;(y||m)&&s1(e,l)&&(u+=m,f+=y),l=l.parentNode}while(!s&&l!==document.body||s&&(t.contains(l)||t===l));return(d&&(o&&u===0||!o&&a>u)||!d&&(o&&f===0||!o&&-a>f))&&(c=!0),c},xa=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},uh=function(e){return[e.deltaX,e.deltaY]},ch=function(e){return e&&"current"in e?e.current:e},_3=function(e,t){return e[0]===t[0]&&e[1]===t[1]},w3=function(e){return` +`)},lh=function(){var e=parseInt(document.body.getAttribute(lo)||"0",10);return isFinite(e)?e:0},dE=function(){p.useEffect(function(){return document.body.setAttribute(lo,(lh()+1).toString()),function(){var e=lh()-1;e<=0?document.body.removeAttribute(lo):document.body.setAttribute(lo,e.toString())}},[])},fE=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=r===void 0?"margin":r;dE();var i=p.useMemo(function(){return sE(o)},[o]);return p.createElement(uE,{styles:cE(i,!t,o,n?"":"!important")})},uc=!1;if(typeof window<"u")try{var ya=Object.defineProperty({},"passive",{get:function(){return uc=!0,!0}});window.addEventListener("test",ya,ya),window.removeEventListener("test",ya,ya)}catch{uc=!1}var Nr=uc?{passive:!1}:!1,pE=function(e){return e.tagName==="TEXTAREA"},l1=function(e,t){var n=window.getComputedStyle(e);return n[t]!=="hidden"&&!(n.overflowY===n.overflowX&&!pE(e)&&n[t]==="visible")},hE=function(e){return l1(e,"overflowY")},mE=function(e){return l1(e,"overflowX")},sh=function(e,t){var n=t;do{typeof ShadowRoot<"u"&&n instanceof ShadowRoot&&(n=n.host);var r=s1(e,n);if(r){var o=u1(e,n),i=o[1],a=o[2];if(i>a)return!0}n=n.parentNode}while(n&&n!==document.body);return!1},vE=function(e){var t=e.scrollTop,n=e.scrollHeight,r=e.clientHeight;return[t,n,r]},gE=function(e){var t=e.scrollLeft,n=e.scrollWidth,r=e.clientWidth;return[t,n,r]},s1=function(e,t){return e==="v"?hE(t):mE(t)},u1=function(e,t){return e==="v"?vE(t):gE(t)},yE=function(e,t){return e==="h"&&t==="rtl"?-1:1},xE=function(e,t,n,r,o){var i=yE(e,window.getComputedStyle(t).direction),a=i*r,l=n.target,s=t.contains(l),c=!1,d=a>0,u=0,f=0;do{var h=u1(e,l),y=h[0],g=h[1],w=h[2],m=g-w-i*y;(y||m)&&s1(e,l)&&(u+=m,f+=y),l=l.parentNode}while(!s&&l!==document.body||s&&(t.contains(l)||t===l));return(d&&(o&&u===0||!o&&a>u)||!d&&(o&&f===0||!o&&-a>f))&&(c=!0),c},xa=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},uh=function(e){return[e.deltaX,e.deltaY]},ch=function(e){return e&&"current"in e?e.current:e},_E=function(e,t){return e[0]===t[0]&&e[1]===t[1]},wE=function(e){return` .block-interactivity-`.concat(e,` {pointer-events: none;} .allow-interactivity-`).concat(e,` {pointer-events: all;} -`)},E3=0,Mr=[];function k3(e){var t=p.useRef([]),n=p.useRef([0,0]),r=p.useRef(),o=p.useState(E3++)[0],i=p.useState(function(){return a1()})[0],a=p.useRef(e);p.useEffect(function(){a.current=e},[e]),p.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var g=H4([e.lockRef.current],(e.shards||[]).map(ch),!0).filter(Boolean);return g.forEach(function(w){return w.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),g.forEach(function(w){return w.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var l=p.useCallback(function(g,w){if("touches"in g&&g.touches.length===2)return!a.current.allowPinchZoom;var m=xa(g),v=n.current,_="deltaX"in g?g.deltaX:v[0]-m[0],E="deltaY"in g?g.deltaY:v[1]-m[1],C,k=g.target,P=Math.abs(_)>Math.abs(E)?"h":"v";if("touches"in g&&P==="h"&&k.type==="range")return!1;var A=sh(P,k);if(!A)return!0;if(A?C=P:(C=P==="v"?"h":"v",A=sh(P,k)),!A)return!1;if(!r.current&&"changedTouches"in g&&(_||E)&&(r.current=C),!C)return!0;var S=r.current||C;return x3(S,w,g,S==="h"?_:E,!0)},[]),s=p.useCallback(function(g){var w=g;if(!(!Mr.length||Mr[Mr.length-1]!==i)){var m="deltaY"in w?uh(w):xa(w),v=t.current.filter(function(C){return C.name===w.type&&C.target===w.target&&_3(C.delta,m)})[0];if(v&&v.should){w.cancelable&&w.preventDefault();return}if(!v){var _=(a.current.shards||[]).map(ch).filter(Boolean).filter(function(C){return C.contains(w.target)}),E=_.length>0?l(w,_[0]):!a.current.noIsolation;E&&w.cancelable&&w.preventDefault()}}},[]),c=p.useCallback(function(g,w,m,v){var _={name:g,delta:w,target:m,should:v};t.current.push(_),setTimeout(function(){t.current=t.current.filter(function(E){return E!==_})},1)},[]),d=p.useCallback(function(g){n.current=xa(g),r.current=void 0},[]),u=p.useCallback(function(g){c(g.type,uh(g),g.target,l(g,e.lockRef.current))},[]),f=p.useCallback(function(g){c(g.type,xa(g),g.target,l(g,e.lockRef.current))},[]);p.useEffect(function(){return Mr.push(i),e.setCallbacks({onScrollCapture:u,onWheelCapture:u,onTouchMoveCapture:f}),document.addEventListener("wheel",s,Nr),document.addEventListener("touchmove",s,Nr),document.addEventListener("touchstart",d,Nr),function(){Mr=Mr.filter(function(g){return g!==i}),document.removeEventListener("wheel",s,Nr),document.removeEventListener("touchmove",s,Nr),document.removeEventListener("touchstart",d,Nr)}},[]);var h=e.removeScrollBar,y=e.inert;return p.createElement(p.Fragment,null,y?p.createElement(i,{styles:w3(o)}):null,h?p.createElement(f3,{gapMode:"margin"}):null)}const b3=J4(i1,k3);var c1=p.forwardRef(function(e,t){return p.createElement(Hl,Jt({},e,{ref:t,sideCar:b3}))});c1.classNames=Hl.classNames;const d1=c1;var C3=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},jr=new WeakMap,_a=new WeakMap,wa={},Hs=0,f1=function(e){return e&&(e.host||f1(e.parentNode))},P3=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=f1(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},A3=function(e,t,n,r){var o=P3(t,Array.isArray(e)?e:[e]);wa[n]||(wa[n]=new WeakMap);var i=wa[n],a=[],l=new Set,s=new Set(o),c=function(u){!u||l.has(u)||(l.add(u),c(u.parentNode))};o.forEach(c);var d=function(u){!u||s.has(u)||Array.prototype.forEach.call(u.children,function(f){if(l.has(f))d(f);else try{var h=f.getAttribute(r),y=h!==null&&h!=="false",g=(jr.get(f)||0)+1,w=(i.get(f)||0)+1;jr.set(f,g),i.set(f,w),a.push(f),g===1&&y&&_a.set(f,!0),w===1&&f.setAttribute(n,"true"),y||f.setAttribute(r,"true")}catch(m){console.error("aria-hidden: cannot operate on ",f,m)}})};return d(t),l.clear(),Hs++,function(){a.forEach(function(u){var f=jr.get(u)-1,h=i.get(u)-1;jr.set(u,f),i.set(u,h),f||(_a.has(u)||u.removeAttribute(r),_a.delete(u)),h||u.removeAttribute(n)}),Hs--,Hs||(jr=new WeakMap,jr=new WeakMap,_a=new WeakMap,wa={})}},p1=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||C3(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),A3(r,o,n,"aria-hidden")):function(){return null}};const h1="Dialog",[m1,tA]=En(h1),[S3,bn]=m1(h1),T3=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:i,modal:a=!0}=e,l=p.useRef(null),s=p.useRef(null),[c=!1,d]=rr({prop:r,defaultProp:o,onChange:i});return p.createElement(S3,{scope:t,triggerRef:l,contentRef:s,contentId:rn(),titleId:rn(),descriptionId:rn(),open:c,onOpenChange:d,onOpenToggle:p.useCallback(()=>d(u=>!u),[d]),modal:a},n)},R3="DialogTrigger",$3=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=bn(R3,n),i=Ue(t,o.triggerRef);return p.createElement(fe.button,q({type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Vd(o.open)},r,{ref:i,onClick:le(e.onClick,o.onOpenToggle)}))}),v1="DialogPortal",[O3,g1]=m1(v1,{forceMount:void 0}),I3=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,i=bn(v1,t);return p.createElement(O3,{scope:t,forceMount:n},p.Children.map(r,a=>p.createElement(kn,{present:n||i.open},p.createElement(t1,{asChild:!0,container:o},a))))},cc="DialogOverlay",L3=p.forwardRef((e,t)=>{const n=g1(cc,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=bn(cc,e.__scopeDialog);return i.modal?p.createElement(kn,{present:r||i.open},p.createElement(D3,q({},o,{ref:t}))):null}),D3=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=bn(cc,n);return p.createElement(d1,{as:wo,allowPinchZoom:!0,shards:[o.contentRef]},p.createElement(fe.div,q({"data-state":Vd(o.open)},r,{ref:t,style:{pointerEvents:"auto",...r.style}})))}),Oi="DialogContent",N3=p.forwardRef((e,t)=>{const n=g1(Oi,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=bn(Oi,e.__scopeDialog);return p.createElement(kn,{present:r||i.open},i.modal?p.createElement(M3,q({},o,{ref:t})):p.createElement(j3,q({},o,{ref:t})))}),M3=p.forwardRef((e,t)=>{const n=bn(Oi,e.__scopeDialog),r=p.useRef(null),o=Ue(t,n.contentRef,r);return p.useEffect(()=>{const i=r.current;if(i)return p1(i)},[]),p.createElement(y1,q({},e,{ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:le(e.onCloseAutoFocus,i=>{var a;i.preventDefault(),(a=n.triggerRef.current)===null||a===void 0||a.focus()}),onPointerDownOutside:le(e.onPointerDownOutside,i=>{const a=i.detail.originalEvent,l=a.button===0&&a.ctrlKey===!0;(a.button===2||l)&&i.preventDefault()}),onFocusOutside:le(e.onFocusOutside,i=>i.preventDefault())}))}),j3=p.forwardRef((e,t)=>{const n=bn(Oi,e.__scopeDialog),r=p.useRef(!1),o=p.useRef(!1);return p.createElement(y1,q({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var a;if((a=e.onCloseAutoFocus)===null||a===void 0||a.call(e,i),!i.defaultPrevented){var l;r.current||(l=n.triggerRef.current)===null||l===void 0||l.focus(),i.preventDefault()}r.current=!1,o.current=!1},onInteractOutside:i=>{var a,l;(a=e.onInteractOutside)===null||a===void 0||a.call(e,i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const s=i.target;((l=n.triggerRef.current)===null||l===void 0?void 0:l.contains(s))&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&o.current&&i.preventDefault()}}))}),y1=p.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,...a}=e,l=bn(Oi,n),s=p.useRef(null),c=Ue(t,s);return n1(),p.createElement(p.Fragment,null,p.createElement(J0,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i},p.createElement(Ud,q({role:"dialog",id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":Vd(l.open)},a,{ref:c,onDismiss:()=>l.onOpenChange(!1)}))),!1)}),z3="DialogTitle",F3=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=bn(z3,n);return p.createElement(fe.h2,q({id:o.titleId},r,{ref:t}))});function Vd(e){return e?"open":"closed"}const x1=T3,_1=$3,U3=I3,V3=L3,B3=N3,H3=F3;var me=function(){return me=Object.assign||function(t){for(var n,r=1,o=arguments.length;r0&&i[i.length-1])&&(c[0]===6||c[0]===2)){n=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function Ne(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),o,i=[],a;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(l){a={error:l}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(a)throw a.error}}return i}var G3="ENTRIES",w1="KEYS",E1="VALUES",Qe="",Ws=function(){function e(t,n){var r=t._tree,o=Array.from(r.keys());this.set=t,this._type=n,this._path=o.length>0?[{node:r,keys:o}]:[]}return e.prototype.next=function(){var t=this.dive();return this.backtrack(),t},e.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var t=zr(this._path),n=t.node,r=t.keys;if(zr(r)===Qe)return{done:!1,value:this.result()};var o=n.get(zr(r));return this._path.push({node:o,keys:Array.from(o.keys())}),this.dive()},e.prototype.backtrack=function(){if(this._path.length!==0){var t=zr(this._path).keys;t.pop(),!(t.length>0)&&(this._path.pop(),this.backtrack())}},e.prototype.key=function(){return this.set._prefix+this._path.map(function(t){var n=t.keys;return zr(n)}).filter(function(t){return t!==Qe}).join("")},e.prototype.value=function(){return zr(this._path).node.get(Qe)},e.prototype.result=function(){switch(this._type){case E1:return this.value();case w1:return this.key();default:return[this.key(),this.value()]}},e.prototype[Symbol.iterator]=function(){return this},e}(),zr=function(e){return e[e.length-1]},q3=function(e,t,n){var r=new Map;if(t===void 0)return r;for(var o=t.length+1,i=o+n,a=new Uint8Array(i*o).fill(n+1),l=0;ln)continue e}k1(e.get(h),t,n,r,o,g,a,l+h)}}}catch(z){s={error:z}}finally{try{f&&!f.done&&(c=u.return)&&c.call(u)}finally{if(s)throw s.error}}},Ks=function(){function e(t,n){t===void 0&&(t=new Map),n===void 0&&(n=""),this._size=void 0,this._tree=t,this._prefix=n}return e.prototype.atPrefix=function(t){var n,r;if(!t.startsWith(this._prefix))throw new Error("Mismatched prefix");var o=Ne(gl(this._tree,t.slice(this._prefix.length)),2),i=o[0],a=o[1];if(i===void 0){var l=Ne(Bd(a),2),s=l[0],c=l[1];try{for(var d=re(s.keys()),u=d.next();!u.done;u=d.next()){var f=u.value;if(f!==Qe&&f.startsWith(c)){var h=new Map;return h.set(f.slice(c.length),s.get(f)),new e(h,t)}}}catch(y){n={error:y}}finally{try{u&&!u.done&&(r=d.return)&&r.call(d)}finally{if(n)throw n.error}}}return new e(i,t)},e.prototype.clear=function(){this._size=void 0,this._tree.clear()},e.prototype.delete=function(t){return this._size=void 0,Y3(this._tree,t)},e.prototype.entries=function(){return new Ws(this,G3)},e.prototype.forEach=function(t){var n,r;try{for(var o=re(this),i=o.next();!i.done;i=o.next()){var a=Ne(i.value,2),l=a[0],s=a[1];t(l,s,this)}}catch(c){n={error:c}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},e.prototype.fuzzyGet=function(t,n){return q3(this._tree,t,n)},e.prototype.get=function(t){var n=dc(this._tree,t);return n!==void 0?n.get(Qe):void 0},e.prototype.has=function(t){var n=dc(this._tree,t);return n!==void 0&&n.has(Qe)},e.prototype.keys=function(){return new Ws(this,w1)},e.prototype.set=function(t,n){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;var r=Gs(this._tree,t);return r.set(Qe,n),this},Object.defineProperty(e.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var t=this.entries();!t.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),e.prototype.update=function(t,n){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;var r=Gs(this._tree,t);return r.set(Qe,n(r.get(Qe))),this},e.prototype.fetch=function(t,n){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;var r=Gs(this._tree,t),o=r.get(Qe);return o===void 0&&r.set(Qe,o=n()),o},e.prototype.values=function(){return new Ws(this,E1)},e.prototype[Symbol.iterator]=function(){return this.entries()},e.from=function(t){var n,r,o=new e;try{for(var i=re(t),a=i.next();!a.done;a=i.next()){var l=Ne(a.value,2),s=l[0],c=l[1];o.set(s,c)}}catch(d){n={error:d}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return o},e.fromObject=function(t){return e.from(Object.entries(t))},e}(),gl=function(e,t,n){var r,o;if(n===void 0&&(n=[]),t.length===0||e==null)return[e,n];try{for(var i=re(e.keys()),a=i.next();!a.done;a=i.next()){var l=a.value;if(l!==Qe&&t.startsWith(l))return n.push([e,l]),gl(e.get(l),t.slice(l.length),n)}}catch(s){r={error:s}}finally{try{a&&!a.done&&(o=i.return)&&o.call(i)}finally{if(r)throw r.error}}return n.push([e,t]),gl(void 0,"",n)},dc=function(e,t){var n,r;if(t.length===0||e==null)return e;try{for(var o=re(e.keys()),i=o.next();!i.done;i=o.next()){var a=i.value;if(a!==Qe&&t.startsWith(a))return dc(e.get(a),t.slice(a.length))}}catch(l){n={error:l}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},Gs=function(e,t){var n,r,o=t.length;e:for(var i=0;e&&i0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Ks,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},e.prototype.discard=function(t){var n=this,r=this._idToShortId.get(t);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(t,": it is not in the index"));this._idToShortId.delete(t),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(o,i){n.removeFieldLength(r,i,n._documentCount,o)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},e.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var t=this._options.autoVacuum,n=t.minDirtFactor,r=t.minDirtCount,o=t.batchSize,i=t.batchWait;this.conditionalVacuum({batchSize:o,batchWait:i},{minDirtCount:r,minDirtFactor:n})}},e.prototype.discardAll=function(t){var n,r,o=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var i=re(t),a=i.next();!a.done;a=i.next()){var l=a.value;this.discard(l)}}catch(s){n={error:s}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}finally{this._options.autoVacuum=o}this.maybeAutoVacuum()},e.prototype.replace=function(t){var n=this._options,r=n.idField,o=n.extractField,i=o(t,r);this.discard(i),this.add(t)},e.prototype.vacuum=function(t){return t===void 0&&(t={}),this.conditionalVacuum(t)},e.prototype.conditionalVacuum=function(t,n){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&n,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var o=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=pc,r.performVacuuming(t,o)}),this._enqueuedVacuum)):this.vacuumConditionsMet(n)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(t),this._currentVacuum)},e.prototype.performVacuuming=function(t,n){return W3(this,void 0,void 0,function(){var r,o,i,a,l,s,c,d,u,f,h,y,g,w,m,v,_,E,C,k,P,A,S,O,j;return K3(this,function(N){switch(N.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(n))return[3,10];o=t.batchSize||fc.batchSize,i=t.batchWait||fc.batchWait,a=1,N.label=1;case 1:N.trys.push([1,7,8,9]),l=re(this._index),s=l.next(),N.label=2;case 2:if(s.done)return[3,6];c=Ne(s.value,2),d=c[0],u=c[1];try{for(f=(A=void 0,re(u)),h=f.next();!h.done;h=f.next()){y=Ne(h.value,2),g=y[0],w=y[1];try{for(m=(O=void 0,re(w)),v=m.next();!v.done;v=m.next())_=Ne(v.value,1),E=_[0],!this._documentIds.has(E)&&(w.size<=1?u.delete(g):w.delete(E))}catch(z){O={error:z}}finally{try{v&&!v.done&&(j=m.return)&&j.call(m)}finally{if(O)throw O.error}}}}catch(z){A={error:z}}finally{try{h&&!h.done&&(S=f.return)&&S.call(f)}finally{if(A)throw A.error}}return this._index.get(d).size===0&&this._index.delete(d),a%o!==0?[3,4]:[4,new Promise(function(z){return setTimeout(z,i)})];case 3:N.sent(),N.label=4;case 4:a+=1,N.label=5;case 5:return s=l.next(),[3,2];case 6:return[3,9];case 7:return C=N.sent(),k={error:C},[3,9];case 8:try{s&&!s.done&&(P=l.return)&&P.call(l)}finally{if(k)throw k.error}return[7];case 9:this._dirtCount-=r,N.label=10;case 10:return[4,null];case 11:return N.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},e.prototype.vacuumConditionsMet=function(t){if(t==null)return!0;var n=t.minDirtCount,r=t.minDirtFactor;return n=n||Qs.minDirtCount,r=r||Qs.minDirtFactor,this.dirtCount>=n&&this.dirtFactor>=r},Object.defineProperty(e.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),e.prototype.has=function(t){return this._idToShortId.has(t)},e.prototype.getStoredFields=function(t){var n=this._idToShortId.get(t);if(n!=null)return this._storedFields.get(n)},e.prototype.search=function(t,n){var r,o;n===void 0&&(n={});var i=this.executeQuery(t,n),a=[];try{for(var l=re(i),s=l.next();!s.done;s=l.next()){var c=Ne(s.value,2),d=c[0],u=c[1],f=u.score,h=u.terms,y=u.match,g=h.length||1,w={id:this._documentIds.get(d),score:f*g,terms:Object.keys(y),queryTerms:h,match:y};Object.assign(w,this._storedFields.get(d)),(n.filter==null||n.filter(w))&&a.push(w)}}catch(m){r={error:m}}finally{try{s&&!s.done&&(o=l.return)&&o.call(l)}finally{if(r)throw r.error}}return t===e.wildcard&&n.boostDocument==null&&this._options.searchOptions.boostDocument==null||a.sort(ph),a},e.prototype.autoSuggest=function(t,n){var r,o,i,a;n===void 0&&(n={}),n=me(me({},this._options.autoSuggestOptions),n);var l=new Map;try{for(var s=re(this.search(t,n)),c=s.next();!c.done;c=s.next()){var d=c.value,u=d.score,f=d.terms,h=f.join(" "),y=l.get(h);y!=null?(y.score+=u,y.count+=1):l.set(h,{score:u,terms:f,count:1})}}catch(C){r={error:C}}finally{try{c&&!c.done&&(o=s.return)&&o.call(s)}finally{if(r)throw r.error}}var g=[];try{for(var w=re(l),m=w.next();!m.done;m=w.next()){var v=Ne(m.value,2),y=v[0],_=v[1],u=_.score,f=_.terms,E=_.count;g.push({suggestion:y,terms:f,score:u/E})}}catch(C){i={error:C}}finally{try{m&&!m.done&&(a=w.return)&&a.call(w)}finally{if(i)throw i.error}}return g.sort(ph),g},Object.defineProperty(e.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),e.loadJSON=function(t,n){if(n==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(t),n)},e.getDefault=function(t){if(Ys.hasOwnProperty(t))return qs(Ys,t);throw new Error('MiniSearch: unknown option "'.concat(t,'"'))},e.loadJS=function(t,n){var r,o,i,a,l,s,c=t.index,d=t.documentCount,u=t.nextId,f=t.documentIds,h=t.fieldIds,y=t.fieldLength,g=t.averageFieldLength,w=t.storedFields,m=t.dirtCount,v=t.serializationVersion;if(v!==1&&v!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var _=new e(n);_._documentCount=d,_._nextId=u,_._documentIds=Ea(f),_._idToShortId=new Map,_._fieldIds=h,_._fieldLength=Ea(y),_._avgFieldLength=g,_._storedFields=Ea(w),_._dirtCount=m||0,_._index=new Ks;try{for(var E=re(_._documentIds),C=E.next();!C.done;C=E.next()){var k=Ne(C.value,2),P=k[0],A=k[1];_._idToShortId.set(A,P)}}catch(F){r={error:F}}finally{try{C&&!C.done&&(o=E.return)&&o.call(E)}finally{if(r)throw r.error}}try{for(var S=re(c),O=S.next();!O.done;O=S.next()){var j=Ne(O.value,2),N=j[0],z=j[1],$=new Map;try{for(var U=(l=void 0,re(Object.keys(z))),W=U.next();!W.done;W=U.next()){var B=W.value,L=z[B];v===1&&(L=L.ds),$.set(parseInt(B,10),Ea(L))}}catch(F){l={error:F}}finally{try{W&&!W.done&&(s=U.return)&&s.call(U)}finally{if(l)throw l.error}}_._index.set(N,$)}}catch(F){i={error:F}}finally{try{O&&!O.done&&(a=S.return)&&a.call(S)}finally{if(i)throw i.error}}return _},e.prototype.executeQuery=function(t,n){var r=this;if(n===void 0&&(n={}),t===e.wildcard)return this.executeWildcardQuery(n);if(typeof t!="string"){var o=me(me(me({},n),t),{queries:void 0}),i=t.queries.map(function(w){return r.executeQuery(w,o)});return this.combineResults(i,o.combineWith)}var a=this._options,l=a.tokenize,s=a.processTerm,c=a.searchOptions,d=me(me({tokenize:l,processTerm:s},c),n),u=d.tokenize,f=d.processTerm,h=u(t).flatMap(function(w){return f(w)}).filter(function(w){return!!w}),y=h.map(t7(d)),g=y.map(function(w){return r.executeQuerySpec(w,d)});return this.combineResults(g,d.combineWith)},e.prototype.executeQuerySpec=function(t,n){var r,o,i,a,l=me(me({},this._options.searchOptions),n),s=(l.fields||this._options.fields).reduce(function(B,L){var F;return me(me({},B),(F={},F[L]=qs(l.boost,L)||1,F))},{}),c=l.boostDocument,d=l.weights,u=l.maxFuzzy,f=l.bm25,h=me(me({},dh.weights),d),y=h.fuzzy,g=h.prefix,w=this._index.get(t.term),m=this.termResults(t.term,t.term,1,w,s,c,f),v,_;if(t.prefix&&(v=this._index.atPrefix(t.term)),t.fuzzy){var E=t.fuzzy===!0?.2:t.fuzzy,C=E<1?Math.min(u,Math.round(t.term.length*E)):E;C&&(_=this._index.fuzzyGet(t.term,C))}if(v)try{for(var k=re(v),P=k.next();!P.done;P=k.next()){var A=Ne(P.value,2),S=A[0],O=A[1],j=S.length-t.term.length;if(j){_==null||_.delete(S);var N=g*S.length/(S.length+.3*j);this.termResults(t.term,S,N,O,s,c,f,m)}}}catch(B){r={error:B}}finally{try{P&&!P.done&&(o=k.return)&&o.call(k)}finally{if(r)throw r.error}}if(_)try{for(var z=re(_.keys()),$=z.next();!$.done;$=z.next()){var S=$.value,U=Ne(_.get(S),2),W=U[0],j=U[1];if(j){var N=y*S.length/(S.length+j);this.termResults(t.term,S,N,W,s,c,f,m)}}}catch(B){i={error:B}}finally{try{$&&!$.done&&(a=z.return)&&a.call(z)}finally{if(i)throw i.error}}return m},e.prototype.executeWildcardQuery=function(t){var n,r,o=new Map,i=me(me({},this._options.searchOptions),t);try{for(var a=re(this._documentIds),l=a.next();!l.done;l=a.next()){var s=Ne(l.value,2),c=s[0],d=s[1],u=i.boostDocument?i.boostDocument(d,"",this._storedFields.get(c)):1;o.set(c,{score:u,terms:[],match:{}})}}catch(f){n={error:f}}finally{try{l&&!l.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return o},e.prototype.combineResults=function(t,n){if(n===void 0&&(n=Hd),t.length===0)return new Map;var r=n.toLowerCase();return t.reduce(X3[r])||new Map},e.prototype.toJSON=function(){var t,n,r,o,i=[];try{for(var a=re(this._index),l=a.next();!l.done;l=a.next()){var s=Ne(l.value,2),c=s[0],d=s[1],u={};try{for(var f=(r=void 0,re(d)),h=f.next();!h.done;h=f.next()){var y=Ne(h.value,2),g=y[0],w=y[1];u[g]=Object.fromEntries(w)}}catch(m){r={error:m}}finally{try{h&&!h.done&&(o=f.return)&&o.call(f)}finally{if(r)throw r.error}}i.push([c,u])}}catch(m){t={error:m}}finally{try{l&&!l.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:i,serializationVersion:2}},e.prototype.termResults=function(t,n,r,o,i,a,l,s){var c,d,u,f,h;if(s===void 0&&(s=new Map),o==null)return s;try{for(var y=re(Object.keys(i)),g=y.next();!g.done;g=y.next()){var w=g.value,m=i[w],v=this._fieldIds[w],_=o.get(v);if(_!=null){var E=_.size,C=this._avgFieldLength[v];try{for(var k=(u=void 0,re(_.keys())),P=k.next();!P.done;P=k.next()){var A=P.value;if(!this._documentIds.has(A)){this.removeTerm(v,A,n),E-=1;continue}var S=a?a(this._documentIds.get(A),n,this._storedFields.get(A)):1;if(S){var O=_.get(A),j=this._fieldLength.get(A)[v],N=e7(O,E,this._documentCount,j,C,l),z=r*m*S*N,$=s.get(A);if($){$.score+=z,r7($.terms,t);var U=qs($.match,n);U?U.push(w):$.match[n]=[w]}else s.set(A,{score:z,terms:[t],match:(h={},h[n]=[w],h)})}}}catch(W){u={error:W}}finally{try{P&&!P.done&&(f=k.return)&&f.call(k)}finally{if(u)throw u.error}}}}}catch(W){c={error:W}}finally{try{g&&!g.done&&(d=y.return)&&d.call(y)}finally{if(c)throw c.error}}return s},e.prototype.addTerm=function(t,n,r){var o=this._index.fetch(r,hh),i=o.get(t);if(i==null)i=new Map,i.set(n,1),o.set(t,i);else{var a=i.get(n);i.set(n,(a||0)+1)}},e.prototype.removeTerm=function(t,n,r){if(!this._index.has(r)){this.warnDocumentChanged(n,t,r);return}var o=this._index.fetch(r,hh),i=o.get(t);i==null||i.get(n)==null?this.warnDocumentChanged(n,t,r):i.get(n)<=1?i.size<=1?o.delete(t):i.delete(n):i.set(n,i.get(n)-1),this._index.get(r).size===0&&this._index.delete(r)},e.prototype.warnDocumentChanged=function(t,n,r){var o,i;try{for(var a=re(Object.keys(this._fieldIds)),l=a.next();!l.done;l=a.next()){var s=l.value;if(this._fieldIds[s]===n){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(t),' has changed before removal: term "').concat(r,'" was not present in field "').concat(s,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(c){o={error:c}}finally{try{l&&!l.done&&(i=a.return)&&i.call(a)}finally{if(o)throw o.error}}},e.prototype.addDocumentId=function(t){var n=this._nextId;return this._idToShortId.set(t,n),this._documentIds.set(n,t),this._documentCount+=1,this._nextId+=1,n},e.prototype.addFields=function(t){for(var n=0;nJSON.stringify(await(await fetch("/.vocs/search-index-a69b292b.json")).json());let Zs;function A1(){const[e,t]=p.useState();return p.useEffect(()=>{(async()=>{Zs||(Zs=i7());const n=await Zs,r=Z3.loadJSON(n,{fields:["title","titles","text"],searchOptions:{boost:{title:4,text:2,titles:1},fuzzy:.2,prefix:!0},storeFields:["href","html","isPage","text","title","titles"]});t(r)})()},[]),p.useEffect(()=>{},[]),e}var a7="vocs_DesktopSearch_search",l7="vocs_DesktopSearch_searchCommand";const s7=p.forwardRef((e,t)=>p.createElement(fe.label,q({},e,{ref:t,onMouseDown:n=>{var r;(r=e.onMouseDown)===null||r===void 0||r.call(e,n),!n.defaultPrevented&&n.detail>1&&n.preventDefault()}}))),u7=s7;var S1={exports:{}};/*!*************************************************** +`)},EE=0,Mr=[];function kE(e){var t=p.useRef([]),n=p.useRef([0,0]),r=p.useRef(),o=p.useState(EE++)[0],i=p.useState(function(){return a1()})[0],a=p.useRef(e);p.useEffect(function(){a.current=e},[e]),p.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var g=H3([e.lockRef.current],(e.shards||[]).map(ch),!0).filter(Boolean);return g.forEach(function(w){return w.classList.add("allow-interactivity-".concat(o))}),function(){document.body.classList.remove("block-interactivity-".concat(o)),g.forEach(function(w){return w.classList.remove("allow-interactivity-".concat(o))})}}},[e.inert,e.lockRef.current,e.shards]);var l=p.useCallback(function(g,w){if("touches"in g&&g.touches.length===2)return!a.current.allowPinchZoom;var m=xa(g),v=n.current,_="deltaX"in g?g.deltaX:v[0]-m[0],E="deltaY"in g?g.deltaY:v[1]-m[1],C,k=g.target,P=Math.abs(_)>Math.abs(E)?"h":"v";if("touches"in g&&P==="h"&&k.type==="range")return!1;var A=sh(P,k);if(!A)return!0;if(A?C=P:(C=P==="v"?"h":"v",A=sh(P,k)),!A)return!1;if(!r.current&&"changedTouches"in g&&(_||E)&&(r.current=C),!C)return!0;var S=r.current||C;return xE(S,w,g,S==="h"?_:E,!0)},[]),s=p.useCallback(function(g){var w=g;if(!(!Mr.length||Mr[Mr.length-1]!==i)){var m="deltaY"in w?uh(w):xa(w),v=t.current.filter(function(C){return C.name===w.type&&C.target===w.target&&_E(C.delta,m)})[0];if(v&&v.should){w.cancelable&&w.preventDefault();return}if(!v){var _=(a.current.shards||[]).map(ch).filter(Boolean).filter(function(C){return C.contains(w.target)}),E=_.length>0?l(w,_[0]):!a.current.noIsolation;E&&w.cancelable&&w.preventDefault()}}},[]),c=p.useCallback(function(g,w,m,v){var _={name:g,delta:w,target:m,should:v};t.current.push(_),setTimeout(function(){t.current=t.current.filter(function(E){return E!==_})},1)},[]),d=p.useCallback(function(g){n.current=xa(g),r.current=void 0},[]),u=p.useCallback(function(g){c(g.type,uh(g),g.target,l(g,e.lockRef.current))},[]),f=p.useCallback(function(g){c(g.type,xa(g),g.target,l(g,e.lockRef.current))},[]);p.useEffect(function(){return Mr.push(i),e.setCallbacks({onScrollCapture:u,onWheelCapture:u,onTouchMoveCapture:f}),document.addEventListener("wheel",s,Nr),document.addEventListener("touchmove",s,Nr),document.addEventListener("touchstart",d,Nr),function(){Mr=Mr.filter(function(g){return g!==i}),document.removeEventListener("wheel",s,Nr),document.removeEventListener("touchmove",s,Nr),document.removeEventListener("touchstart",d,Nr)}},[]);var h=e.removeScrollBar,y=e.inert;return p.createElement(p.Fragment,null,y?p.createElement(i,{styles:wE(o)}):null,h?p.createElement(fE,{gapMode:"margin"}):null)}const bE=J3(i1,kE);var c1=p.forwardRef(function(e,t){return p.createElement(Hl,Jt({},e,{ref:t,sideCar:bE}))});c1.classNames=Hl.classNames;const d1=c1;var CE=function(e){if(typeof document>"u")return null;var t=Array.isArray(e)?e[0]:e;return t.ownerDocument.body},jr=new WeakMap,_a=new WeakMap,wa={},Hs=0,f1=function(e){return e&&(e.host||f1(e.parentNode))},PE=function(e,t){return t.map(function(n){if(e.contains(n))return n;var r=f1(n);return r&&e.contains(r)?r:(console.error("aria-hidden",n,"in not contained inside",e,". Doing nothing"),null)}).filter(function(n){return!!n})},AE=function(e,t,n,r){var o=PE(t,Array.isArray(e)?e:[e]);wa[n]||(wa[n]=new WeakMap);var i=wa[n],a=[],l=new Set,s=new Set(o),c=function(u){!u||l.has(u)||(l.add(u),c(u.parentNode))};o.forEach(c);var d=function(u){!u||s.has(u)||Array.prototype.forEach.call(u.children,function(f){if(l.has(f))d(f);else try{var h=f.getAttribute(r),y=h!==null&&h!=="false",g=(jr.get(f)||0)+1,w=(i.get(f)||0)+1;jr.set(f,g),i.set(f,w),a.push(f),g===1&&y&&_a.set(f,!0),w===1&&f.setAttribute(n,"true"),y||f.setAttribute(r,"true")}catch(m){console.error("aria-hidden: cannot operate on ",f,m)}})};return d(t),l.clear(),Hs++,function(){a.forEach(function(u){var f=jr.get(u)-1,h=i.get(u)-1;jr.set(u,f),i.set(u,h),f||(_a.has(u)||u.removeAttribute(r),_a.delete(u)),h||u.removeAttribute(n)}),Hs--,Hs||(jr=new WeakMap,jr=new WeakMap,_a=new WeakMap,wa={})}},p1=function(e,t,n){n===void 0&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||CE(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),AE(r,o,n,"aria-hidden")):function(){return null}};const h1="Dialog",[m1,tA]=En(h1),[SE,bn]=m1(h1),TE=e=>{const{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:i,modal:a=!0}=e,l=p.useRef(null),s=p.useRef(null),[c=!1,d]=rr({prop:r,defaultProp:o,onChange:i});return p.createElement(SE,{scope:t,triggerRef:l,contentRef:s,contentId:rn(),titleId:rn(),descriptionId:rn(),open:c,onOpenChange:d,onOpenToggle:p.useCallback(()=>d(u=>!u),[d]),modal:a},n)},RE="DialogTrigger",$E=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=bn(RE,n),i=Ue(t,o.triggerRef);return p.createElement(fe.button,q({type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Vd(o.open)},r,{ref:i,onClick:le(e.onClick,o.onOpenToggle)}))}),v1="DialogPortal",[OE,g1]=m1(v1,{forceMount:void 0}),IE=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,i=bn(v1,t);return p.createElement(OE,{scope:t,forceMount:n},p.Children.map(r,a=>p.createElement(kn,{present:n||i.open},p.createElement(t1,{asChild:!0,container:o},a))))},cc="DialogOverlay",LE=p.forwardRef((e,t)=>{const n=g1(cc,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=bn(cc,e.__scopeDialog);return i.modal?p.createElement(kn,{present:r||i.open},p.createElement(DE,q({},o,{ref:t}))):null}),DE=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=bn(cc,n);return p.createElement(d1,{as:wo,allowPinchZoom:!0,shards:[o.contentRef]},p.createElement(fe.div,q({"data-state":Vd(o.open)},r,{ref:t,style:{pointerEvents:"auto",...r.style}})))}),Oi="DialogContent",NE=p.forwardRef((e,t)=>{const n=g1(Oi,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=bn(Oi,e.__scopeDialog);return p.createElement(kn,{present:r||i.open},i.modal?p.createElement(ME,q({},o,{ref:t})):p.createElement(jE,q({},o,{ref:t})))}),ME=p.forwardRef((e,t)=>{const n=bn(Oi,e.__scopeDialog),r=p.useRef(null),o=Ue(t,n.contentRef,r);return p.useEffect(()=>{const i=r.current;if(i)return p1(i)},[]),p.createElement(y1,q({},e,{ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:le(e.onCloseAutoFocus,i=>{var a;i.preventDefault(),(a=n.triggerRef.current)===null||a===void 0||a.focus()}),onPointerDownOutside:le(e.onPointerDownOutside,i=>{const a=i.detail.originalEvent,l=a.button===0&&a.ctrlKey===!0;(a.button===2||l)&&i.preventDefault()}),onFocusOutside:le(e.onFocusOutside,i=>i.preventDefault())}))}),jE=p.forwardRef((e,t)=>{const n=bn(Oi,e.__scopeDialog),r=p.useRef(!1),o=p.useRef(!1);return p.createElement(y1,q({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var a;if((a=e.onCloseAutoFocus)===null||a===void 0||a.call(e,i),!i.defaultPrevented){var l;r.current||(l=n.triggerRef.current)===null||l===void 0||l.focus(),i.preventDefault()}r.current=!1,o.current=!1},onInteractOutside:i=>{var a,l;(a=e.onInteractOutside)===null||a===void 0||a.call(e,i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const s=i.target;((l=n.triggerRef.current)===null||l===void 0?void 0:l.contains(s))&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&o.current&&i.preventDefault()}}))}),y1=p.forwardRef((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,...a}=e,l=bn(Oi,n),s=p.useRef(null),c=Ue(t,s);return n1(),p.createElement(p.Fragment,null,p.createElement(J0,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i},p.createElement(Ud,q({role:"dialog",id:l.contentId,"aria-describedby":l.descriptionId,"aria-labelledby":l.titleId,"data-state":Vd(l.open)},a,{ref:c,onDismiss:()=>l.onOpenChange(!1)}))),!1)}),zE="DialogTitle",FE=p.forwardRef((e,t)=>{const{__scopeDialog:n,...r}=e,o=bn(zE,n);return p.createElement(fe.h2,q({id:o.titleId},r,{ref:t}))});function Vd(e){return e?"open":"closed"}const x1=TE,_1=$E,UE=IE,VE=LE,BE=NE,HE=FE;var me=function(){return me=Object.assign||function(t){for(var n,r=1,o=arguments.length;r0&&i[i.length-1])&&(c[0]===6||c[0]===2)){n=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[r++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function Ne(e,t){var n=typeof Symbol=="function"&&e[Symbol.iterator];if(!n)return e;var r=n.call(e),o,i=[],a;try{for(;(t===void 0||t-- >0)&&!(o=r.next()).done;)i.push(o.value)}catch(l){a={error:l}}finally{try{o&&!o.done&&(n=r.return)&&n.call(r)}finally{if(a)throw a.error}}return i}var GE="ENTRIES",w1="KEYS",E1="VALUES",Qe="",Ws=function(){function e(t,n){var r=t._tree,o=Array.from(r.keys());this.set=t,this._type=n,this._path=o.length>0?[{node:r,keys:o}]:[]}return e.prototype.next=function(){var t=this.dive();return this.backtrack(),t},e.prototype.dive=function(){if(this._path.length===0)return{done:!0,value:void 0};var t=zr(this._path),n=t.node,r=t.keys;if(zr(r)===Qe)return{done:!1,value:this.result()};var o=n.get(zr(r));return this._path.push({node:o,keys:Array.from(o.keys())}),this.dive()},e.prototype.backtrack=function(){if(this._path.length!==0){var t=zr(this._path).keys;t.pop(),!(t.length>0)&&(this._path.pop(),this.backtrack())}},e.prototype.key=function(){return this.set._prefix+this._path.map(function(t){var n=t.keys;return zr(n)}).filter(function(t){return t!==Qe}).join("")},e.prototype.value=function(){return zr(this._path).node.get(Qe)},e.prototype.result=function(){switch(this._type){case E1:return this.value();case w1:return this.key();default:return[this.key(),this.value()]}},e.prototype[Symbol.iterator]=function(){return this},e}(),zr=function(e){return e[e.length-1]},qE=function(e,t,n){var r=new Map;if(t===void 0)return r;for(var o=t.length+1,i=o+n,a=new Uint8Array(i*o).fill(n+1),l=0;ln)continue e}k1(e.get(h),t,n,r,o,g,a,l+h)}}}catch(z){s={error:z}}finally{try{f&&!f.done&&(c=u.return)&&c.call(u)}finally{if(s)throw s.error}}},Ks=function(){function e(t,n){t===void 0&&(t=new Map),n===void 0&&(n=""),this._size=void 0,this._tree=t,this._prefix=n}return e.prototype.atPrefix=function(t){var n,r;if(!t.startsWith(this._prefix))throw new Error("Mismatched prefix");var o=Ne(gl(this._tree,t.slice(this._prefix.length)),2),i=o[0],a=o[1];if(i===void 0){var l=Ne(Bd(a),2),s=l[0],c=l[1];try{for(var d=re(s.keys()),u=d.next();!u.done;u=d.next()){var f=u.value;if(f!==Qe&&f.startsWith(c)){var h=new Map;return h.set(f.slice(c.length),s.get(f)),new e(h,t)}}}catch(y){n={error:y}}finally{try{u&&!u.done&&(r=d.return)&&r.call(d)}finally{if(n)throw n.error}}}return new e(i,t)},e.prototype.clear=function(){this._size=void 0,this._tree.clear()},e.prototype.delete=function(t){return this._size=void 0,YE(this._tree,t)},e.prototype.entries=function(){return new Ws(this,GE)},e.prototype.forEach=function(t){var n,r;try{for(var o=re(this),i=o.next();!i.done;i=o.next()){var a=Ne(i.value,2),l=a[0],s=a[1];t(l,s,this)}}catch(c){n={error:c}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},e.prototype.fuzzyGet=function(t,n){return qE(this._tree,t,n)},e.prototype.get=function(t){var n=dc(this._tree,t);return n!==void 0?n.get(Qe):void 0},e.prototype.has=function(t){var n=dc(this._tree,t);return n!==void 0&&n.has(Qe)},e.prototype.keys=function(){return new Ws(this,w1)},e.prototype.set=function(t,n){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;var r=Gs(this._tree,t);return r.set(Qe,n),this},Object.defineProperty(e.prototype,"size",{get:function(){if(this._size)return this._size;this._size=0;for(var t=this.entries();!t.next().done;)this._size+=1;return this._size},enumerable:!1,configurable:!0}),e.prototype.update=function(t,n){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;var r=Gs(this._tree,t);return r.set(Qe,n(r.get(Qe))),this},e.prototype.fetch=function(t,n){if(typeof t!="string")throw new Error("key must be a string");this._size=void 0;var r=Gs(this._tree,t),o=r.get(Qe);return o===void 0&&r.set(Qe,o=n()),o},e.prototype.values=function(){return new Ws(this,E1)},e.prototype[Symbol.iterator]=function(){return this.entries()},e.from=function(t){var n,r,o=new e;try{for(var i=re(t),a=i.next();!a.done;a=i.next()){var l=Ne(a.value,2),s=l[0],c=l[1];o.set(s,c)}}catch(d){n={error:d}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}return o},e.fromObject=function(t){return e.from(Object.entries(t))},e}(),gl=function(e,t,n){var r,o;if(n===void 0&&(n=[]),t.length===0||e==null)return[e,n];try{for(var i=re(e.keys()),a=i.next();!a.done;a=i.next()){var l=a.value;if(l!==Qe&&t.startsWith(l))return n.push([e,l]),gl(e.get(l),t.slice(l.length),n)}}catch(s){r={error:s}}finally{try{a&&!a.done&&(o=i.return)&&o.call(i)}finally{if(r)throw r.error}}return n.push([e,t]),gl(void 0,"",n)},dc=function(e,t){var n,r;if(t.length===0||e==null)return e;try{for(var o=re(e.keys()),i=o.next();!i.done;i=o.next()){var a=i.value;if(a!==Qe&&t.startsWith(a))return dc(e.get(a),t.slice(a.length))}}catch(l){n={error:l}}finally{try{i&&!i.done&&(r=o.return)&&r.call(o)}finally{if(n)throw n.error}}},Gs=function(e,t){var n,r,o=t.length;e:for(var i=0;e&&i0)throw new Error("Expected documents to be present. Omit the argument to remove all documents.");this._index=new Ks,this._documentCount=0,this._documentIds=new Map,this._idToShortId=new Map,this._fieldLength=new Map,this._avgFieldLength=[],this._storedFields=new Map,this._nextId=0}},e.prototype.discard=function(t){var n=this,r=this._idToShortId.get(t);if(r==null)throw new Error("MiniSearch: cannot discard document with ID ".concat(t,": it is not in the index"));this._idToShortId.delete(t),this._documentIds.delete(r),this._storedFields.delete(r),(this._fieldLength.get(r)||[]).forEach(function(o,i){n.removeFieldLength(r,i,n._documentCount,o)}),this._fieldLength.delete(r),this._documentCount-=1,this._dirtCount+=1,this.maybeAutoVacuum()},e.prototype.maybeAutoVacuum=function(){if(this._options.autoVacuum!==!1){var t=this._options.autoVacuum,n=t.minDirtFactor,r=t.minDirtCount,o=t.batchSize,i=t.batchWait;this.conditionalVacuum({batchSize:o,batchWait:i},{minDirtCount:r,minDirtFactor:n})}},e.prototype.discardAll=function(t){var n,r,o=this._options.autoVacuum;try{this._options.autoVacuum=!1;try{for(var i=re(t),a=i.next();!a.done;a=i.next()){var l=a.value;this.discard(l)}}catch(s){n={error:s}}finally{try{a&&!a.done&&(r=i.return)&&r.call(i)}finally{if(n)throw n.error}}}finally{this._options.autoVacuum=o}this.maybeAutoVacuum()},e.prototype.replace=function(t){var n=this._options,r=n.idField,o=n.extractField,i=o(t,r);this.discard(i),this.add(t)},e.prototype.vacuum=function(t){return t===void 0&&(t={}),this.conditionalVacuum(t)},e.prototype.conditionalVacuum=function(t,n){var r=this;return this._currentVacuum?(this._enqueuedVacuumConditions=this._enqueuedVacuumConditions&&n,this._enqueuedVacuum!=null?this._enqueuedVacuum:(this._enqueuedVacuum=this._currentVacuum.then(function(){var o=r._enqueuedVacuumConditions;return r._enqueuedVacuumConditions=pc,r.performVacuuming(t,o)}),this._enqueuedVacuum)):this.vacuumConditionsMet(n)===!1?Promise.resolve():(this._currentVacuum=this.performVacuuming(t),this._currentVacuum)},e.prototype.performVacuuming=function(t,n){return WE(this,void 0,void 0,function(){var r,o,i,a,l,s,c,d,u,f,h,y,g,w,m,v,_,E,C,k,P,A,S,O,j;return KE(this,function(N){switch(N.label){case 0:if(r=this._dirtCount,!this.vacuumConditionsMet(n))return[3,10];o=t.batchSize||fc.batchSize,i=t.batchWait||fc.batchWait,a=1,N.label=1;case 1:N.trys.push([1,7,8,9]),l=re(this._index),s=l.next(),N.label=2;case 2:if(s.done)return[3,6];c=Ne(s.value,2),d=c[0],u=c[1];try{for(f=(A=void 0,re(u)),h=f.next();!h.done;h=f.next()){y=Ne(h.value,2),g=y[0],w=y[1];try{for(m=(O=void 0,re(w)),v=m.next();!v.done;v=m.next())_=Ne(v.value,1),E=_[0],!this._documentIds.has(E)&&(w.size<=1?u.delete(g):w.delete(E))}catch(z){O={error:z}}finally{try{v&&!v.done&&(j=m.return)&&j.call(m)}finally{if(O)throw O.error}}}}catch(z){A={error:z}}finally{try{h&&!h.done&&(S=f.return)&&S.call(f)}finally{if(A)throw A.error}}return this._index.get(d).size===0&&this._index.delete(d),a%o!==0?[3,4]:[4,new Promise(function(z){return setTimeout(z,i)})];case 3:N.sent(),N.label=4;case 4:a+=1,N.label=5;case 5:return s=l.next(),[3,2];case 6:return[3,9];case 7:return C=N.sent(),k={error:C},[3,9];case 8:try{s&&!s.done&&(P=l.return)&&P.call(l)}finally{if(k)throw k.error}return[7];case 9:this._dirtCount-=r,N.label=10;case 10:return[4,null];case 11:return N.sent(),this._currentVacuum=this._enqueuedVacuum,this._enqueuedVacuum=null,[2]}})})},e.prototype.vacuumConditionsMet=function(t){if(t==null)return!0;var n=t.minDirtCount,r=t.minDirtFactor;return n=n||Qs.minDirtCount,r=r||Qs.minDirtFactor,this.dirtCount>=n&&this.dirtFactor>=r},Object.defineProperty(e.prototype,"isVacuuming",{get:function(){return this._currentVacuum!=null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dirtCount",{get:function(){return this._dirtCount},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dirtFactor",{get:function(){return this._dirtCount/(1+this._documentCount+this._dirtCount)},enumerable:!1,configurable:!0}),e.prototype.has=function(t){return this._idToShortId.has(t)},e.prototype.getStoredFields=function(t){var n=this._idToShortId.get(t);if(n!=null)return this._storedFields.get(n)},e.prototype.search=function(t,n){var r,o;n===void 0&&(n={});var i=this.executeQuery(t,n),a=[];try{for(var l=re(i),s=l.next();!s.done;s=l.next()){var c=Ne(s.value,2),d=c[0],u=c[1],f=u.score,h=u.terms,y=u.match,g=h.length||1,w={id:this._documentIds.get(d),score:f*g,terms:Object.keys(y),queryTerms:h,match:y};Object.assign(w,this._storedFields.get(d)),(n.filter==null||n.filter(w))&&a.push(w)}}catch(m){r={error:m}}finally{try{s&&!s.done&&(o=l.return)&&o.call(l)}finally{if(r)throw r.error}}return t===e.wildcard&&n.boostDocument==null&&this._options.searchOptions.boostDocument==null||a.sort(ph),a},e.prototype.autoSuggest=function(t,n){var r,o,i,a;n===void 0&&(n={}),n=me(me({},this._options.autoSuggestOptions),n);var l=new Map;try{for(var s=re(this.search(t,n)),c=s.next();!c.done;c=s.next()){var d=c.value,u=d.score,f=d.terms,h=f.join(" "),y=l.get(h);y!=null?(y.score+=u,y.count+=1):l.set(h,{score:u,terms:f,count:1})}}catch(C){r={error:C}}finally{try{c&&!c.done&&(o=s.return)&&o.call(s)}finally{if(r)throw r.error}}var g=[];try{for(var w=re(l),m=w.next();!m.done;m=w.next()){var v=Ne(m.value,2),y=v[0],_=v[1],u=_.score,f=_.terms,E=_.count;g.push({suggestion:y,terms:f,score:u/E})}}catch(C){i={error:C}}finally{try{m&&!m.done&&(a=w.return)&&a.call(w)}finally{if(i)throw i.error}}return g.sort(ph),g},Object.defineProperty(e.prototype,"documentCount",{get:function(){return this._documentCount},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"termCount",{get:function(){return this._index.size},enumerable:!1,configurable:!0}),e.loadJSON=function(t,n){if(n==null)throw new Error("MiniSearch: loadJSON should be given the same options used when serializing the index");return this.loadJS(JSON.parse(t),n)},e.getDefault=function(t){if(Ys.hasOwnProperty(t))return qs(Ys,t);throw new Error('MiniSearch: unknown option "'.concat(t,'"'))},e.loadJS=function(t,n){var r,o,i,a,l,s,c=t.index,d=t.documentCount,u=t.nextId,f=t.documentIds,h=t.fieldIds,y=t.fieldLength,g=t.averageFieldLength,w=t.storedFields,m=t.dirtCount,v=t.serializationVersion;if(v!==1&&v!==2)throw new Error("MiniSearch: cannot deserialize an index created with an incompatible version");var _=new e(n);_._documentCount=d,_._nextId=u,_._documentIds=Ea(f),_._idToShortId=new Map,_._fieldIds=h,_._fieldLength=Ea(y),_._avgFieldLength=g,_._storedFields=Ea(w),_._dirtCount=m||0,_._index=new Ks;try{for(var E=re(_._documentIds),C=E.next();!C.done;C=E.next()){var k=Ne(C.value,2),P=k[0],A=k[1];_._idToShortId.set(A,P)}}catch(F){r={error:F}}finally{try{C&&!C.done&&(o=E.return)&&o.call(E)}finally{if(r)throw r.error}}try{for(var S=re(c),O=S.next();!O.done;O=S.next()){var j=Ne(O.value,2),N=j[0],z=j[1],$=new Map;try{for(var U=(l=void 0,re(Object.keys(z))),W=U.next();!W.done;W=U.next()){var B=W.value,L=z[B];v===1&&(L=L.ds),$.set(parseInt(B,10),Ea(L))}}catch(F){l={error:F}}finally{try{W&&!W.done&&(s=U.return)&&s.call(U)}finally{if(l)throw l.error}}_._index.set(N,$)}}catch(F){i={error:F}}finally{try{O&&!O.done&&(a=S.return)&&a.call(S)}finally{if(i)throw i.error}}return _},e.prototype.executeQuery=function(t,n){var r=this;if(n===void 0&&(n={}),t===e.wildcard)return this.executeWildcardQuery(n);if(typeof t!="string"){var o=me(me(me({},n),t),{queries:void 0}),i=t.queries.map(function(w){return r.executeQuery(w,o)});return this.combineResults(i,o.combineWith)}var a=this._options,l=a.tokenize,s=a.processTerm,c=a.searchOptions,d=me(me({tokenize:l,processTerm:s},c),n),u=d.tokenize,f=d.processTerm,h=u(t).flatMap(function(w){return f(w)}).filter(function(w){return!!w}),y=h.map(t4(d)),g=y.map(function(w){return r.executeQuerySpec(w,d)});return this.combineResults(g,d.combineWith)},e.prototype.executeQuerySpec=function(t,n){var r,o,i,a,l=me(me({},this._options.searchOptions),n),s=(l.fields||this._options.fields).reduce(function(B,L){var F;return me(me({},B),(F={},F[L]=qs(l.boost,L)||1,F))},{}),c=l.boostDocument,d=l.weights,u=l.maxFuzzy,f=l.bm25,h=me(me({},dh.weights),d),y=h.fuzzy,g=h.prefix,w=this._index.get(t.term),m=this.termResults(t.term,t.term,1,w,s,c,f),v,_;if(t.prefix&&(v=this._index.atPrefix(t.term)),t.fuzzy){var E=t.fuzzy===!0?.2:t.fuzzy,C=E<1?Math.min(u,Math.round(t.term.length*E)):E;C&&(_=this._index.fuzzyGet(t.term,C))}if(v)try{for(var k=re(v),P=k.next();!P.done;P=k.next()){var A=Ne(P.value,2),S=A[0],O=A[1],j=S.length-t.term.length;if(j){_==null||_.delete(S);var N=g*S.length/(S.length+.3*j);this.termResults(t.term,S,N,O,s,c,f,m)}}}catch(B){r={error:B}}finally{try{P&&!P.done&&(o=k.return)&&o.call(k)}finally{if(r)throw r.error}}if(_)try{for(var z=re(_.keys()),$=z.next();!$.done;$=z.next()){var S=$.value,U=Ne(_.get(S),2),W=U[0],j=U[1];if(j){var N=y*S.length/(S.length+j);this.termResults(t.term,S,N,W,s,c,f,m)}}}catch(B){i={error:B}}finally{try{$&&!$.done&&(a=z.return)&&a.call(z)}finally{if(i)throw i.error}}return m},e.prototype.executeWildcardQuery=function(t){var n,r,o=new Map,i=me(me({},this._options.searchOptions),t);try{for(var a=re(this._documentIds),l=a.next();!l.done;l=a.next()){var s=Ne(l.value,2),c=s[0],d=s[1],u=i.boostDocument?i.boostDocument(d,"",this._storedFields.get(c)):1;o.set(c,{score:u,terms:[],match:{}})}}catch(f){n={error:f}}finally{try{l&&!l.done&&(r=a.return)&&r.call(a)}finally{if(n)throw n.error}}return o},e.prototype.combineResults=function(t,n){if(n===void 0&&(n=Hd),t.length===0)return new Map;var r=n.toLowerCase();return t.reduce(XE[r])||new Map},e.prototype.toJSON=function(){var t,n,r,o,i=[];try{for(var a=re(this._index),l=a.next();!l.done;l=a.next()){var s=Ne(l.value,2),c=s[0],d=s[1],u={};try{for(var f=(r=void 0,re(d)),h=f.next();!h.done;h=f.next()){var y=Ne(h.value,2),g=y[0],w=y[1];u[g]=Object.fromEntries(w)}}catch(m){r={error:m}}finally{try{h&&!h.done&&(o=f.return)&&o.call(f)}finally{if(r)throw r.error}}i.push([c,u])}}catch(m){t={error:m}}finally{try{l&&!l.done&&(n=a.return)&&n.call(a)}finally{if(t)throw t.error}}return{documentCount:this._documentCount,nextId:this._nextId,documentIds:Object.fromEntries(this._documentIds),fieldIds:this._fieldIds,fieldLength:Object.fromEntries(this._fieldLength),averageFieldLength:this._avgFieldLength,storedFields:Object.fromEntries(this._storedFields),dirtCount:this._dirtCount,index:i,serializationVersion:2}},e.prototype.termResults=function(t,n,r,o,i,a,l,s){var c,d,u,f,h;if(s===void 0&&(s=new Map),o==null)return s;try{for(var y=re(Object.keys(i)),g=y.next();!g.done;g=y.next()){var w=g.value,m=i[w],v=this._fieldIds[w],_=o.get(v);if(_!=null){var E=_.size,C=this._avgFieldLength[v];try{for(var k=(u=void 0,re(_.keys())),P=k.next();!P.done;P=k.next()){var A=P.value;if(!this._documentIds.has(A)){this.removeTerm(v,A,n),E-=1;continue}var S=a?a(this._documentIds.get(A),n,this._storedFields.get(A)):1;if(S){var O=_.get(A),j=this._fieldLength.get(A)[v],N=e4(O,E,this._documentCount,j,C,l),z=r*m*S*N,$=s.get(A);if($){$.score+=z,r4($.terms,t);var U=qs($.match,n);U?U.push(w):$.match[n]=[w]}else s.set(A,{score:z,terms:[t],match:(h={},h[n]=[w],h)})}}}catch(W){u={error:W}}finally{try{P&&!P.done&&(f=k.return)&&f.call(k)}finally{if(u)throw u.error}}}}}catch(W){c={error:W}}finally{try{g&&!g.done&&(d=y.return)&&d.call(y)}finally{if(c)throw c.error}}return s},e.prototype.addTerm=function(t,n,r){var o=this._index.fetch(r,hh),i=o.get(t);if(i==null)i=new Map,i.set(n,1),o.set(t,i);else{var a=i.get(n);i.set(n,(a||0)+1)}},e.prototype.removeTerm=function(t,n,r){if(!this._index.has(r)){this.warnDocumentChanged(n,t,r);return}var o=this._index.fetch(r,hh),i=o.get(t);i==null||i.get(n)==null?this.warnDocumentChanged(n,t,r):i.get(n)<=1?i.size<=1?o.delete(t):i.delete(n):i.set(n,i.get(n)-1),this._index.get(r).size===0&&this._index.delete(r)},e.prototype.warnDocumentChanged=function(t,n,r){var o,i;try{for(var a=re(Object.keys(this._fieldIds)),l=a.next();!l.done;l=a.next()){var s=l.value;if(this._fieldIds[s]===n){this._options.logger("warn","MiniSearch: document with ID ".concat(this._documentIds.get(t),' has changed before removal: term "').concat(r,'" was not present in field "').concat(s,'". Removing a document after it has changed can corrupt the index!'),"version_conflict");return}}}catch(c){o={error:c}}finally{try{l&&!l.done&&(i=a.return)&&i.call(a)}finally{if(o)throw o.error}}},e.prototype.addDocumentId=function(t){var n=this._nextId;return this._idToShortId.set(t,n),this._documentIds.set(n,t),this._documentCount+=1,this._nextId+=1,n},e.prototype.addFields=function(t){for(var n=0;nJSON.stringify(await(await fetch("/.vocs/search-index-6870eaad.json")).json());let Zs;function A1(){const[e,t]=p.useState();return p.useEffect(()=>{(async()=>{Zs||(Zs=i4());const n=await Zs,r=ZE.loadJSON(n,{fields:["title","titles","text"],searchOptions:{boost:{title:4,text:2,titles:1},fuzzy:.2,prefix:!0},storeFields:["href","html","isPage","text","title","titles"]});t(r)})()},[]),p.useEffect(()=>{},[]),e}var a4="vocs_DesktopSearch_search",l4="vocs_DesktopSearch_searchCommand";const s4=p.forwardRef((e,t)=>p.createElement(fe.label,q({},e,{ref:t,onMouseDown:n=>{var r;(r=e.onMouseDown)===null||r===void 0||r.call(e,n),!n.defaultPrevented&&n.detail>1&&n.preventDefault()}}))),u4=s4;var S1={exports:{}};/*!*************************************************** * mark.js v8.11.1 * https://markjs.io/ * Copyright (c) 2014–2018, Julian Kühnel * Released under the MIT license https://git.io/vwTVl -*****************************************************/(function(e,t){(function(n,r){e.exports=r()})(Ey,function(){var n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(c){return typeof c}:function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},r=function(c,d){if(!(c instanceof d))throw new TypeError("Cannot call a class as a function")},o=function(){function c(d,u){for(var f=0;f1&&arguments[1]!==void 0?arguments[1]:!0,f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:5e3;r(this,c),this.ctx=d,this.iframes=u,this.exclude=f,this.iframesTimeout=h}return o(c,[{key:"getContexts",value:function(){var u=void 0,f=[];return typeof this.ctx>"u"||!this.ctx?u=[]:NodeList.prototype.isPrototypeOf(this.ctx)?u=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?u=this.ctx:typeof this.ctx=="string"?u=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):u=[this.ctx],u.forEach(function(h){var y=f.filter(function(g){return g.contains(h)}).length>0;f.indexOf(h)===-1&&!y&&f.push(h)}),f}},{key:"getIframeContents",value:function(u,f){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},y=void 0;try{var g=u.contentWindow;if(y=g.document,!g||!y)throw new Error("iframe inaccessible")}catch{h()}y&&f(y)}},{key:"isIframeBlank",value:function(u){var f="about:blank",h=u.getAttribute("src").trim(),y=u.contentWindow.location.href;return y===f&&h!==f&&h}},{key:"observeIframeLoad",value:function(u,f,h){var y=this,g=!1,w=null,m=function v(){if(!g){g=!0,clearTimeout(w);try{y.isIframeBlank(u)||(u.removeEventListener("load",v),y.getIframeContents(u,f,h))}catch{h()}}};u.addEventListener("load",m),w=setTimeout(m,this.iframesTimeout)}},{key:"onIframeReady",value:function(u,f,h){try{u.contentWindow.document.readyState==="complete"?this.isIframeBlank(u)?this.observeIframeLoad(u,f,h):this.getIframeContents(u,f,h):this.observeIframeLoad(u,f,h)}catch{h()}}},{key:"waitForIframes",value:function(u,f){var h=this,y=0;this.forEachIframe(u,function(){return!0},function(g){y++,h.waitForIframes(g.querySelector("html"),function(){--y||f()})},function(g){g||f()})}},{key:"forEachIframe",value:function(u,f,h){var y=this,g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},w=u.querySelectorAll("iframe"),m=w.length,v=0;w=Array.prototype.slice.call(w);var _=function(){--m<=0&&g(v)};m||_(),w.forEach(function(E){c.matches(E,y.exclude)?_():y.onIframeReady(E,function(C){f(E)&&(v++,h(C)),_()},_)})}},{key:"createIterator",value:function(u,f,h){return document.createNodeIterator(u,f,h,!1)}},{key:"createInstanceOnIframe",value:function(u){return new c(u.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(u,f,h){var y=u.compareDocumentPosition(h),g=Node.DOCUMENT_POSITION_PRECEDING;if(y&g)if(f!==null){var w=f.compareDocumentPosition(h),m=Node.DOCUMENT_POSITION_FOLLOWING;if(w&m)return!0}else return!0;return!1}},{key:"getIteratorNode",value:function(u){var f=u.previousNode(),h=void 0;return f===null?h=u.nextNode():h=u.nextNode()&&u.nextNode(),{prevNode:f,node:h}}},{key:"checkIframeFilter",value:function(u,f,h,y){var g=!1,w=!1;return y.forEach(function(m,v){m.val===h&&(g=v,w=m.handled)}),this.compareNodeIframe(u,f,h)?(g===!1&&!w?y.push({val:h,handled:!0}):g!==!1&&!w&&(y[g].handled=!0),!0):(g===!1&&y.push({val:h,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(u,f,h,y){var g=this;u.forEach(function(w){w.handled||g.getIframeContents(w.val,function(m){g.createInstanceOnIframe(m).forEachNode(f,h,y)})})}},{key:"iterateThroughNodes",value:function(u,f,h,y,g){for(var w=this,m=this.createIterator(f,u,y),v=[],_=[],E=void 0,C=void 0,k=function(){var A=w.getIteratorNode(m);return C=A.prevNode,E=A.node,E};k();)this.iframes&&this.forEachIframe(f,function(P){return w.checkIframeFilter(E,C,P,v)},function(P){w.createInstanceOnIframe(P).forEachNode(u,function(A){return _.push(A)},y)}),_.push(E);_.forEach(function(P){h(P)}),this.iframes&&this.handleOpenIframes(v,u,h,y),g()}},{key:"forEachNode",value:function(u,f,h){var y=this,g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},w=this.getContexts(),m=w.length;m||g(),w.forEach(function(v){var _=function(){y.iterateThroughNodes(u,v,f,h,function(){--m<=0&&g()})};y.iframes?y.waitForIframes(v,_):_()})}}],[{key:"matches",value:function(u,f){var h=typeof f=="string"?[f]:f,y=u.matches||u.matchesSelector||u.msMatchesSelector||u.mozMatchesSelector||u.oMatchesSelector||u.webkitMatchesSelector;if(y){var g=!1;return h.every(function(w){return y.call(u,w)?(g=!0,!1):!0}),g}else return!1}}]),c}(),l=function(){function c(d){r(this,c),this.ctx=d,this.ie=!1;var u=window.navigator.userAgent;(u.indexOf("MSIE")>-1||u.indexOf("Trident")>-1)&&(this.ie=!0)}return o(c,[{key:"log",value:function(u){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"debug",h=this.opt.log;this.opt.debug&&(typeof h>"u"?"undefined":n(h))==="object"&&typeof h[f]=="function"&&h[f]("mark.js: "+u)}},{key:"escapeStr",value:function(u){return u.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(u){return this.opt.wildcards!=="disabled"&&(u=this.setupWildcardsRegExp(u)),u=this.escapeStr(u),Object.keys(this.opt.synonyms).length&&(u=this.createSynonymsRegExp(u)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(u=this.setupIgnoreJoinersRegExp(u)),this.opt.diacritics&&(u=this.createDiacriticsRegExp(u)),u=this.createMergedBlanksRegExp(u),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(u=this.createJoinersRegExp(u)),this.opt.wildcards!=="disabled"&&(u=this.createWildcardsRegExp(u)),u=this.createAccuracyRegExp(u),u}},{key:"createSynonymsRegExp",value:function(u){var f=this.opt.synonyms,h=this.opt.caseSensitive?"":"i",y=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var g in f)if(f.hasOwnProperty(g)){var w=f[g],m=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(g):this.escapeStr(g),v=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(w):this.escapeStr(w);m!==""&&v!==""&&(u=u.replace(new RegExp("("+this.escapeStr(m)+"|"+this.escapeStr(v)+")","gm"+h),y+("("+this.processSynomyms(m)+"|")+(this.processSynomyms(v)+")")+y))}return u}},{key:"processSynomyms",value:function(u){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(u=this.setupIgnoreJoinersRegExp(u)),u}},{key:"setupWildcardsRegExp",value:function(u){return u=u.replace(/(?:\\)*\?/g,function(f){return f.charAt(0)==="\\"?"?":""}),u.replace(/(?:\\)*\*/g,function(f){return f.charAt(0)==="\\"?"*":""})}},{key:"createWildcardsRegExp",value:function(u){var f=this.opt.wildcards==="withSpaces";return u.replace(/\u0001/g,f?"[\\S\\s]?":"\\S?").replace(/\u0002/g,f?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(u){return u.replace(/[^(|)\\]/g,function(f,h,y){var g=y.charAt(h+1);return/[(|)\\]/.test(g)||g===""?f:f+"\0"})}},{key:"createJoinersRegExp",value:function(u){var f=[],h=this.opt.ignorePunctuation;return Array.isArray(h)&&h.length&&f.push(this.escapeStr(h.join(""))),this.opt.ignoreJoiners&&f.push("\\u00ad\\u200b\\u200c\\u200d"),f.length?u.split(/\u0000+/).join("["+f.join("")+"]*"):u}},{key:"createDiacriticsRegExp",value:function(u){var f=this.opt.caseSensitive?"":"i",h=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"],y=[];return u.split("").forEach(function(g){h.every(function(w){if(w.indexOf(g)!==-1){if(y.indexOf(w)>-1)return!1;u=u.replace(new RegExp("["+w+"]","gm"+f),"["+w+"]"),y.push(w)}return!0})}),u}},{key:"createMergedBlanksRegExp",value:function(u){return u.replace(/[\s]+/gmi,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(u){var f=this,h="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿",y=this.opt.accuracy,g=typeof y=="string"?y:y.value,w=typeof y=="string"?[]:y.limiters,m="";switch(w.forEach(function(v){m+="|"+f.escapeStr(v)}),g){case"partially":default:return"()("+u+")";case"complementary":return m="\\s"+(m||this.escapeStr(h)),"()([^"+m+"]*"+u+"[^"+m+"]*)";case"exactly":return"(^|\\s"+m+")("+u+")(?=$|\\s"+m+")"}}},{key:"getSeparatedKeywords",value:function(u){var f=this,h=[];return u.forEach(function(y){f.opt.separateWordSearch?y.split(" ").forEach(function(g){g.trim()&&h.indexOf(g)===-1&&h.push(g)}):y.trim()&&h.indexOf(y)===-1&&h.push(y)}),{keywords:h.sort(function(y,g){return g.length-y.length}),length:h.length}}},{key:"isNumeric",value:function(u){return Number(parseFloat(u))==u}},{key:"checkRanges",value:function(u){var f=this;if(!Array.isArray(u)||Object.prototype.toString.call(u[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(u),[];var h=[],y=0;return u.sort(function(g,w){return g.start-w.start}).forEach(function(g){var w=f.callNoMatchOnInvalidRanges(g,y),m=w.start,v=w.end,_=w.valid;_&&(g.start=m,g.length=v-m,h.push(g),y=v)}),h}},{key:"callNoMatchOnInvalidRanges",value:function(u,f){var h=void 0,y=void 0,g=!1;return u&&typeof u.start<"u"?(h=parseInt(u.start,10),y=h+parseInt(u.length,10),this.isNumeric(u.start)&&this.isNumeric(u.length)&&y-f>0&&y-h>0?g=!0:(this.log("Ignoring invalid or overlapping range: "+(""+JSON.stringify(u))),this.opt.noMatch(u))):(this.log("Ignoring invalid range: "+JSON.stringify(u)),this.opt.noMatch(u)),{start:h,end:y,valid:g}}},{key:"checkWhitespaceRanges",value:function(u,f,h){var y=void 0,g=!0,w=h.length,m=f-w,v=parseInt(u.start,10)-m;return v=v>w?w:v,y=v+parseInt(u.length,10),y>w&&(y=w,this.log("End range automatically set to the max value of "+w)),v<0||y-v<0||v>w||y>w?(g=!1,this.log("Invalid range: "+JSON.stringify(u)),this.opt.noMatch(u)):h.substring(v,y).replace(/\s+/g,"")===""&&(g=!1,this.log("Skipping whitespace only range: "+JSON.stringify(u)),this.opt.noMatch(u)),{start:v,end:y,valid:g}}},{key:"getTextNodes",value:function(u){var f=this,h="",y=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(g){y.push({start:h.length,end:(h+=g.textContent).length,node:g})},function(g){return f.matchesExclude(g.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){u({value:h,nodes:y})})}},{key:"matchesExclude",value:function(u){return a.matches(u,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(u,f,h){var y=this.opt.element?this.opt.element:"mark",g=u.splitText(f),w=g.splitText(h-f),m=document.createElement(y);return m.setAttribute("data-markjs","true"),this.opt.className&&m.setAttribute("class",this.opt.className),m.textContent=g.textContent,g.parentNode.replaceChild(m,g),w}},{key:"wrapRangeInMappedTextNode",value:function(u,f,h,y,g){var w=this;u.nodes.every(function(m,v){var _=u.nodes[v+1];if(typeof _>"u"||_.start>f){if(!y(m.node))return!1;var E=f-m.start,C=(h>m.end?m.end:h)-m.start,k=u.value.substr(0,m.start),P=u.value.substr(C+m.start);if(m.node=w.wrapRangeInTextNode(m.node,E,C),u.value=k+P,u.nodes.forEach(function(A,S){S>=v&&(u.nodes[S].start>0&&S!==v&&(u.nodes[S].start-=C),u.nodes[S].end-=C)}),h-=C,g(m.node.previousSibling,m.start),h>m.end)f=m.end;else return!1}return!0})}},{key:"wrapMatches",value:function(u,f,h,y,g){var w=this,m=f===0?0:f+1;this.getTextNodes(function(v){v.nodes.forEach(function(_){_=_.node;for(var E=void 0;(E=u.exec(_.textContent))!==null&&E[m]!=="";)if(h(E[m],_)){var C=E.index;if(m!==0)for(var k=1;k{const o=setTimeout(()=>r(e),t||500);return()=>{clearTimeout(o)}},[e,t]),n}function hc(e,t){const[n,r]=p.useState();p.useEffect(()=>{const i=p7(e);r(typeof i>"u"||i===null?typeof t=="function"?t():t:i)},[t,e]);const o=p.useCallback(i=>{r(a=>{let l;typeof i=="function"?l=i(a):l=i;try{localStorage.setItem(e,JSON.stringify(l))}catch{}return l})},[e]);return[n,o]}function p7(e){try{const t=localStorage.getItem(e);return typeof t=="string"?JSON.parse(t):void 0}catch{return}}var h7="vocs_Kbd";function T1(e){return x.jsx("kbd",{...e,className:D(e.className,h7)})}var m7="vocs_KeyboardShortcut_kbdGroup",v7="vocs_KeyboardShortcut";function eo(e){const{description:t,keys:n}=e;return x.jsxs("span",{className:v7,children:[t,x.jsx("span",{className:m7,children:n.map(r=>x.jsx(T1,{children:r},r))})]})}var g7="vocs_SearchDialog_content",mh="vocs_SearchDialog_excerpt",y7="vocs_SearchDialog_overlay",x7="vocs_SearchDialog_result",vh="vocs_SearchDialog_resultIcon",_7="vocs_SearchDialog_resultSelected",w7="vocs_SearchDialog_results",E7="vocs_SearchDialog",k7="vocs_SearchDialog_searchBox",b7="vocs_SearchDialog_searchInput",ka="vocs_SearchDialog_searchInputIcon",C7="vocs_SearchDialog_searchInputIconDesktop",P7="vocs_SearchDialog_searchInputIconMobile",A7="vocs_SearchDialog_searchShortcuts",gh="vocs_SearchDialog_title",S7="vocs_SearchDialog_titleIcon",T7="vocs_SearchDialog_titles";function R1(e){const t=Md(),n=p.useRef(null),r=p.useRef(null),[o,i]=hc("filterText",""),a=f7(o,200),l=A1(),[s,c]=p.useState(-1),[d,u]=p.useState(!1),[f,h]=hc("showDetailView",!0),y=p.useMemo(()=>l?a?(c(0),l.search(a).slice(0,16)):(c(-1),[]):[],[l,a]),g=y.length,w=y[s],m=p.useCallback(()=>{var C,k,P;if(!r.current)return;const v=new Set;for(const A of y)for(const S in A.match)v.add(S);const _=new d7(r.current);_.unmark({done(){_==null||_.markRegExp(R7(v))}});const E=r.current.querySelectorAll(`.${mh}`);for(const A of E)(C=A.querySelector('mark[data-markjs="true"]'))==null||C.scrollIntoView({block:"center"});(P=(k=r.current)==null?void 0:k.firstElementChild)==null||P.scrollIntoView({block:"start"})},[y]);return p.useEffect(()=>{if(!e.open)return;function v(_){var E;switch(_.key){case"ArrowDown":{_.preventDefault(),c(C=>{var A;let k=C+1;k>=g&&(k=0);const P=(A=r.current)==null?void 0:A.children[k];return P==null||P.scrollIntoView({block:"nearest"}),k}),u(!0);break}case"ArrowUp":{_.preventDefault(),c(C=>{var A;let k=C-1;k<0&&(k=g-1);const P=(A=r.current)==null?void 0:A.children[k];return P==null||P.scrollIntoView({block:"nearest"}),k}),u(!0);break}case"Backspace":{if(!_.metaKey)return;_.preventDefault(),i(""),(E=n.current)==null||E.focus();break}case"Enter":{if(_.target instanceof HTMLButtonElement&&_.target.type!=="submit"||!w)return;_.preventDefault(),t(w.href),e.onClose();break}}}return window.addEventListener("keydown",v),()=>{window.removeEventListener("keydown",v)}},[t,g,i,w,e.open,e.onClose]),p.useEffect(()=>{a!==""&&r.current&&m()},[m,a]),x.jsxs(U3,{children:[x.jsx(V3,{className:y7}),x.jsxs(B3,{onOpenAutoFocus:v=>{n.current&&(v.preventDefault(),n.current.focus()),m()},onCloseAutoFocus:()=>{c(0)},className:E7,"aria-describedby":void 0,children:[x.jsx(H3,{className:Q0,children:"Search"}),x.jsxs("form",{className:k7,children:[x.jsx("button",{"aria-label":"Close search dialog",type:"button",onClick:()=>e.onClose(),className:P7,children:x.jsx(o4,{className:ka,height:20,width:20})}),x.jsx(u7,{htmlFor:"search-input",children:x.jsx(Fd,{"aria-label":"Search",className:D(ka,C7),height:20,width:20})}),x.jsx("input",{ref:n,tabIndex:0,className:b7,id:"search-input",onChange:v=>i(v.target.value),placeholder:"Search",type:"search",value:o}),x.jsx("button",{"aria-label":"Toggle detail view",type:"button",onClick:()=>h(v=>!v),children:x.jsx(f4,{className:ka,height:20,width:20})}),x.jsx("button",{"aria-label":"Reset search",type:"button",className:ka,onClick:()=>{var v;i(""),(v=n.current)==null||v.focus()},children:"⌫"})]}),x.jsxs("ul",{className:w7,role:y.length?"listbox":void 0,onMouseMove:()=>u(!1),ref:r,children:[a&&y.length===0&&x.jsxs("li",{children:['No results for "',x.jsx("span",{children:a}),'"']}),y.map((v,_)=>{var E;return x.jsx("li",{role:"option",className:D(x7,_===s&&_7),"aria-selected":_===s,"aria-label":[...v.titles.filter(C=>!!C),v.title].join(" > "),children:x.jsxs(N0,{to:v.href,onClick:C=>{C.metaKey||e.onClose()},onMouseEnter:()=>!d&&c(_),onFocus:()=>c(_),children:[x.jsxs("div",{className:T7,children:[v.isPage?x.jsx(c4,{className:vh}):x.jsx("span",{className:vh,children:"#"}),v.titles.filter(C=>!!C).map(C=>x.jsxs("span",{className:gh,children:[x.jsx("span",{dangerouslySetInnerHTML:{__html:C}}),x.jsx(a4,{className:S7})]},C)),x.jsx("span",{className:gh,children:x.jsx("span",{dangerouslySetInnerHTML:{__html:v.title}})})]}),f&&((E=v.text)==null?void 0:E.trim())&&x.jsx("div",{className:mh,children:x.jsx(G0,{className:g7,children:x.jsx("div",{dangerouslySetInnerHTML:{__html:v.html}})})})]})},v.id)})]}),x.jsxs("div",{className:A7,children:[x.jsx(eo,{description:"Navigate",keys:["↑","↓"]}),x.jsx(eo,{description:"Select",keys:["enter"]}),x.jsx(eo,{description:"Close",keys:["esc"]}),x.jsx(eo,{description:"Reset",keys:["⌘","⌫"]})]})]})]})}function R7(e){return new RegExp([...e].sort((t,n)=>n.length-t.length).map(t=>`(${t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")})`).join("|"),"gi")}function $7(){A1();const[e,t]=p.useState(!1);return p.useEffect(()=>{function n(r){const o=document.activeElement instanceof HTMLElement&&(["input","select","textarea"].includes(document.activeElement.tagName.toLowerCase())||document.activeElement.isContentEditable);r.key==="/"&&!e&&!o?(r.preventDefault(),t(!0)):r.metaKey===!0&&r.key==="k"&&(r.preventDefault(),t(i=>!i))}return window.addEventListener("keydown",n),()=>{window.removeEventListener("keydown",n)}},[e]),x.jsxs(x1,{open:e,onOpenChange:t,children:[x.jsx(_1,{asChild:!0,children:x.jsxs("button",{className:a7,type:"button",children:[x.jsx(Fd,{style:{marginTop:2}}),"Search",x.jsx("div",{className:l7,children:x.jsx("div",{style:{background:"currentColor",transform:"rotate(45deg)",width:1.5,borderRadius:2,height:"100%"}})})]})}),x.jsx(R1,{open:e,onClose:()=>t(!1)})]})}var $1="vocs_DesktopTopNav_button",O7="vocs_DesktopTopNav_content",I7="vocs_DesktopTopNav_curtain",yh="vocs_DesktopTopNav_divider",Xs="vocs_DesktopTopNav_group",ba="vocs_DesktopTopNav_hideCompact",mc="vocs_DesktopTopNav_icon",yl="vocs_DesktopTopNav_item",L7="vocs_DesktopTopNav_logo",D7="vocs_DesktopTopNav_logoWrapper",N7="vocs_DesktopTopNav",xh="vocs_DesktopTopNav_section",M7="vocs_DesktopTopNav_withLogo",j7="vocs_Icon",vc="var(--vocs_Icon_size)";function st({className:e,label:t,icon:n,size:r,style:o}){return x.jsx("div",{"aria-label":t,className:D(j7,e),role:"img",style:{...o,...qt({[vc]:r})},children:x.jsx(n,{height:r,width:r})})}var z7="vocs_Logo_logoDark",F7="vocs_Logo_logoLight",Js="vocs_Logo";function U7({className:e}){const{logoUrl:t}=Je();return t?x.jsx(x.Fragment,{children:typeof t=="string"?x.jsx("img",{alt:"Logo",className:D(e,Js),src:t}):x.jsxs(x.Fragment,{children:[x.jsx("img",{alt:"Logo",className:D(e,Js,z7),src:t.dark}),x.jsx("img",{alt:"Logo",className:D(e,Js,F7),src:t.light})]})}):null}var V7="vocs_NavLogo_logoImage",B7="vocs_NavLogo_title";function Wd(){const e=Je();return e.logoUrl?x.jsx(U7,{className:V7}):x.jsx("div",{className:B7,children:e.title})}const H7=p.createContext(void 0);function Wl(e){const t=p.useContext(H7);return e||t||"ltr"}function Kl(e){const t=e+"CollectionProvider",[n,r]=En(t),[o,i]=n(t,{collectionRef:{current:null},itemMap:new Map}),a=h=>{const{scope:y,children:g}=h,w=Z.useRef(null),m=Z.useRef(new Map).current;return Z.createElement(o,{scope:y,itemMap:m,collectionRef:w},g)},l=e+"CollectionSlot",s=Z.forwardRef((h,y)=>{const{scope:g,children:w}=h,m=i(l,g),v=Ue(y,m.collectionRef);return Z.createElement(wo,{ref:v},w)}),c=e+"CollectionItemSlot",d="data-radix-collection-item",u=Z.forwardRef((h,y)=>{const{scope:g,children:w,...m}=h,v=Z.useRef(null),_=Ue(y,v),E=i(c,g);return Z.useEffect(()=>(E.itemMap.set(v,{ref:v,...m}),()=>void E.itemMap.delete(v))),Z.createElement(wo,{[d]:"",ref:_},w)});function f(h){const y=i(e+"CollectionConsumer",h);return Z.useCallback(()=>{const w=y.collectionRef.current;if(!w)return[];const m=Array.from(w.querySelectorAll(`[${d}]`));return Array.from(y.itemMap.values()).sort((E,C)=>m.indexOf(E.ref.current)-m.indexOf(C.ref.current))},[y.collectionRef,y.itemMap])}return[{Provider:a,Slot:s,ItemSlot:u},f,r]}function W7(e){const t=p.useRef({value:e,previous:e});return p.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}const K7=p.forwardRef((e,t)=>p.createElement(fe.span,q({},e,{ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}}))),G7=K7,Hi="NavigationMenu",[Kd,q7,Y7]=Kl(Hi),[gc,Q7,Z7]=Kl(Hi),[Gd,nA]=En(Hi,[Y7,Z7]),[X7,Rr]=Gd(Hi),[J7,rA]=Gd(Hi),e5=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,onValueChange:o,defaultValue:i,delayDuration:a=200,skipDelayDuration:l=300,orientation:s="horizontal",dir:c,...d}=e,[u,f]=p.useState(null),h=Ue(t,S=>f(S)),y=Wl(c),g=p.useRef(0),w=p.useRef(0),m=p.useRef(0),[v,_]=p.useState(!0),[E="",C]=rr({prop:r,onChange:S=>{const O=S!=="",j=l>0;O?(window.clearTimeout(m.current),j&&_(!1)):(window.clearTimeout(m.current),m.current=window.setTimeout(()=>_(!0),l)),o==null||o(S)},defaultProp:i}),k=p.useCallback(()=>{window.clearTimeout(w.current),w.current=window.setTimeout(()=>C(""),150)},[C]),P=p.useCallback(S=>{window.clearTimeout(w.current),C(S)},[C]),A=p.useCallback(S=>{E===S?window.clearTimeout(w.current):g.current=window.setTimeout(()=>{window.clearTimeout(w.current),C(S)},a)},[E,C,a]);return p.useEffect(()=>()=>{window.clearTimeout(g.current),window.clearTimeout(w.current),window.clearTimeout(m.current)},[]),p.createElement(t5,{scope:n,isRootMenu:!0,value:E,dir:y,orientation:s,rootNavigationMenu:u,onTriggerEnter:S=>{window.clearTimeout(g.current),v?A(S):P(S)},onTriggerLeave:()=>{window.clearTimeout(g.current),k()},onContentEnter:()=>window.clearTimeout(w.current),onContentLeave:k,onItemSelect:S=>{C(O=>O===S?"":S)},onItemDismiss:()=>C("")},p.createElement(fe.nav,q({"aria-label":"Main","data-orientation":s,dir:y},d,{ref:h})))}),t5=e=>{const{scope:t,isRootMenu:n,rootNavigationMenu:r,dir:o,orientation:i,children:a,value:l,onItemSelect:s,onItemDismiss:c,onTriggerEnter:d,onTriggerLeave:u,onContentEnter:f,onContentLeave:h}=e,[y,g]=p.useState(null),[w,m]=p.useState(new Map),[v,_]=p.useState(null);return p.createElement(X7,{scope:t,isRootMenu:n,rootNavigationMenu:r,value:l,previousValue:W7(l),baseId:rn(),dir:o,orientation:i,viewport:y,onViewportChange:g,indicatorTrack:v,onIndicatorTrackChange:_,onTriggerEnter:at(d),onTriggerLeave:at(u),onContentEnter:at(f),onContentLeave:at(h),onItemSelect:at(s),onItemDismiss:at(c),onViewportContentChange:p.useCallback((E,C)=>{m(k=>(k.set(E,C),new Map(k)))},[]),onViewportContentRemove:p.useCallback(E=>{m(C=>C.has(E)?(C.delete(E),new Map(C)):C)},[])},p.createElement(Kd.Provider,{scope:t},p.createElement(J7,{scope:t,items:w},a)))},n5="NavigationMenuList",r5=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=Rr(n5,n),i=p.createElement(fe.ul,q({"data-orientation":o.orientation},r,{ref:t}));return p.createElement(fe.div,{style:{position:"relative"},ref:o.onIndicatorTrackChange},p.createElement(Kd.Slot,{scope:n},o.isRootMenu?p.createElement(I1,{asChild:!0},i):i))}),o5="NavigationMenuItem",[i5,O1]=Gd(o5),a5=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,...o}=e,i=rn(),a=r||i||"LEGACY_REACT_AUTO_VALUE",l=p.useRef(null),s=p.useRef(null),c=p.useRef(null),d=p.useRef(()=>{}),u=p.useRef(!1),f=p.useCallback((y="start")=>{if(l.current){d.current();const g=yc(l.current);g.length&&qd(y==="start"?g:g.reverse())}},[]),h=p.useCallback(()=>{if(l.current){const y=yc(l.current);y.length&&(d.current=h5(y))}},[]);return p.createElement(i5,{scope:n,value:a,triggerRef:s,contentRef:l,focusProxyRef:c,wasEscapeCloseRef:u,onEntryKeyDown:f,onFocusProxyEnter:f,onRootContentClose:h,onContentFocusOutside:h},p.createElement(fe.li,q({},o,{ref:t})))}),_h="NavigationMenuTrigger",l5=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,disabled:r,...o}=e,i=Rr(_h,e.__scopeNavigationMenu),a=O1(_h,e.__scopeNavigationMenu),l=p.useRef(null),s=Ue(l,a.triggerRef,t),c=N1(i.baseId,a.value),d=M1(i.baseId,a.value),u=p.useRef(!1),f=p.useRef(!1),h=a.value===i.value;return p.createElement(p.Fragment,null,p.createElement(Kd.ItemSlot,{scope:n,value:a.value},p.createElement(L1,{asChild:!0},p.createElement(fe.button,q({id:c,disabled:r,"data-disabled":r?"":void 0,"data-state":D1(h),"aria-expanded":h,"aria-controls":d},o,{ref:s,onPointerEnter:le(e.onPointerEnter,()=>{f.current=!1,a.wasEscapeCloseRef.current=!1}),onPointerMove:le(e.onPointerMove,xc(()=>{r||f.current||a.wasEscapeCloseRef.current||u.current||(i.onTriggerEnter(a.value),u.current=!0)})),onPointerLeave:le(e.onPointerLeave,xc(()=>{r||(i.onTriggerLeave(),u.current=!1)})),onClick:le(e.onClick,()=>{i.onItemSelect(a.value),f.current=h}),onKeyDown:le(e.onKeyDown,y=>{const w={horizontal:"ArrowDown",vertical:i.dir==="rtl"?"ArrowLeft":"ArrowRight"}[i.orientation];h&&y.key===w&&(a.onEntryKeyDown(),y.preventDefault())})})))),h&&p.createElement(p.Fragment,null,p.createElement(G7,{"aria-hidden":!0,tabIndex:0,ref:a.focusProxyRef,onFocus:y=>{const g=a.contentRef.current,w=y.relatedTarget,m=w===l.current,v=g==null?void 0:g.contains(w);(m||!v)&&a.onFocusProxyEnter(m?"start":"end")}}),i.viewport&&p.createElement("span",{"aria-owns":d})))}),wh="navigationMenu.linkSelect",s5=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,active:r,onSelect:o,...i}=e;return p.createElement(L1,{asChild:!0},p.createElement(fe.a,q({"data-active":r?"":void 0,"aria-current":r?"page":void 0},i,{ref:t,onClick:le(e.onClick,a=>{const l=a.target,s=new CustomEvent(wh,{bubbles:!0,cancelable:!0});if(l.addEventListener(wh,c=>o==null?void 0:o(c),{once:!0}),lc(l,s),!s.defaultPrevented&&!a.metaKey){const c=new CustomEvent(Va,{bubbles:!0,cancelable:!0});lc(l,c)}},{checkForDefaultPrevented:!1})})))}),xl="NavigationMenuContent",u5=p.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Rr(xl,e.__scopeNavigationMenu),i=O1(xl,e.__scopeNavigationMenu),a=Ue(i.contentRef,t),l=i.value===o.value,s={value:i.value,triggerRef:i.triggerRef,focusProxyRef:i.focusProxyRef,wasEscapeCloseRef:i.wasEscapeCloseRef,onContentFocusOutside:i.onContentFocusOutside,onRootContentClose:i.onRootContentClose,...r};return o.viewport?p.createElement(c5,q({forceMount:n},s,{ref:a})):p.createElement(kn,{present:n||l},p.createElement(d5,q({"data-state":D1(l)},s,{ref:a,onPointerEnter:le(e.onPointerEnter,o.onContentEnter),onPointerLeave:le(e.onPointerLeave,xc(o.onContentLeave)),style:{pointerEvents:!l&&o.isRootMenu?"none":void 0,...s.style}})))}),c5=p.forwardRef((e,t)=>{const n=Rr(xl,e.__scopeNavigationMenu),{onViewportContentChange:r,onViewportContentRemove:o}=n;return gn(()=>{r(e.value,{ref:t,...e})},[e,t,r]),gn(()=>()=>o(e.value),[e.value,o]),null}),Va="navigationMenu.rootContentDismiss",d5=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,triggerRef:o,focusProxyRef:i,wasEscapeCloseRef:a,onRootContentClose:l,onContentFocusOutside:s,...c}=e,d=Rr(xl,n),u=p.useRef(null),f=Ue(u,t),h=N1(d.baseId,r),y=M1(d.baseId,r),g=q7(n),w=p.useRef(null),{onItemDismiss:m}=d;p.useEffect(()=>{const _=u.current;if(d.isRootMenu&&_){const E=()=>{var C;m(),l(),_.contains(document.activeElement)&&((C=o.current)===null||C===void 0||C.focus())};return _.addEventListener(Va,E),()=>_.removeEventListener(Va,E)}},[d.isRootMenu,e.value,o,m,l]);const v=p.useMemo(()=>{const E=g().map(O=>O.value);d.dir==="rtl"&&E.reverse();const C=E.indexOf(d.value),k=E.indexOf(d.previousValue),P=r===d.value,A=k===E.indexOf(r);if(!P&&!A)return w.current;const S=(()=>{if(C!==k){if(P&&k!==-1)return C>k?"from-end":"from-start";if(A&&C!==-1)return C>k?"to-start":"to-end"}return null})();return w.current=S,S},[d.previousValue,d.value,d.dir,g,r]);return p.createElement(I1,{asChild:!0},p.createElement(Ud,q({id:y,"aria-labelledby":h,"data-motion":v,"data-orientation":d.orientation},c,{ref:f,onDismiss:()=>{var _;const E=new Event(Va,{bubbles:!0,cancelable:!0});(_=u.current)===null||_===void 0||_.dispatchEvent(E)},onFocusOutside:le(e.onFocusOutside,_=>{var E;s();const C=_.target;(E=d.rootNavigationMenu)!==null&&E!==void 0&&E.contains(C)&&_.preventDefault()}),onPointerDownOutside:le(e.onPointerDownOutside,_=>{var E;const C=_.target,k=g().some(A=>{var S;return(S=A.ref.current)===null||S===void 0?void 0:S.contains(C)}),P=d.isRootMenu&&((E=d.viewport)===null||E===void 0?void 0:E.contains(C));(k||P||!d.isRootMenu)&&_.preventDefault()}),onKeyDown:le(e.onKeyDown,_=>{const E=_.altKey||_.ctrlKey||_.metaKey;if(_.key==="Tab"&&!E){const P=yc(_.currentTarget),A=document.activeElement,S=P.findIndex(N=>N===A),j=_.shiftKey?P.slice(0,S).reverse():P.slice(S+1,P.length);if(qd(j))_.preventDefault();else{var k;(k=i.current)===null||k===void 0||k.focus()}}}),onEscapeKeyDown:le(e.onEscapeKeyDown,_=>{a.current=!0})})))}),f5="FocusGroup",I1=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=Rr(f5,n);return p.createElement(gc.Provider,{scope:n},p.createElement(gc.Slot,{scope:n},p.createElement(fe.div,q({dir:o.dir},r,{ref:t}))))}),Eh=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"],p5="FocusGroupItem",L1=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=Q7(n),i=Rr(p5,n);return p.createElement(gc.ItemSlot,{scope:n},p.createElement(fe.button,q({},r,{ref:t,onKeyDown:le(e.onKeyDown,a=>{if(["Home","End",...Eh].includes(a.key)){let s=o().map(u=>u.ref.current);if([i.dir==="rtl"?"ArrowRight":"ArrowLeft","ArrowUp","End"].includes(a.key)&&s.reverse(),Eh.includes(a.key)){const u=s.indexOf(a.currentTarget);s=s.slice(u+1)}setTimeout(()=>qd(s)),a.preventDefault()}})})))});function yc(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function qd(e){const t=document.activeElement;return e.some(n=>n===t?!0:(n.focus(),document.activeElement!==t))}function h5(e){return e.forEach(t=>{t.dataset.tabindex=t.getAttribute("tabindex")||"",t.setAttribute("tabindex","-1")}),()=>{e.forEach(t=>{const n=t.dataset.tabindex;t.setAttribute("tabindex",n)})}}function D1(e){return e?"open":"closed"}function N1(e,t){return`${e}-trigger-${t}`}function M1(e,t){return`${e}-content-${t}`}function xc(e){return t=>t.pointerType==="mouse"?e(t):void 0}const m5=e5,v5=r5,g5=a5,y5=l5,x5=s5,_5=u5;var w5="var(--vocs_NavigationMenu_chevronDownIcon)",E5="vocs_NavigationMenu_content",k5="vocs_NavigationMenu_item",b5="vocs_NavigationMenu_link",C5="vocs_NavigationMenu_list",P5="vocs_NavigationMenu",A5="vocs_NavigationMenu_trigger vocs_NavigationMenu_link";const j1=e=>x.jsx(m5,{...e,className:D(e.className,P5)}),z1=e=>x.jsx(v5,{...e,className:D(e.className,C5)}),Gl=({active:e,children:t,className:n,href:r})=>x.jsx(x5,{asChild:!0,children:x.jsx(nn,{"data-active":e,className:D(n,b5),href:r,variant:"styleless",children:t})}),F1=e=>x.jsx(g5,{...e,className:D(e.className,k5)}),U1=({active:e,className:t,...n})=>{const{basePath:r}=Je(),o=r;return x.jsx(y5,{...n,"data-active":e,className:D(t,A5),style:qt({[w5]:`url(${o}/.vocs/icons/chevron-down.svg)`})})},V1=e=>x.jsx(_5,{...e,className:D(e.className,E5)});function B1(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 127.14 96.36",children:[x.jsx("title",{children:"Discord"}),x.jsx("g",{id:"图层_2","data-name":"图层 2",children:x.jsx("g",{id:"Discord_Logos","data-name":"Discord Logos",children:x.jsx("g",{id:"Discord_Logo_-_Large_-_White","data-name":"Discord Logo - Large - White",children:x.jsx("path",{d:"M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z",fill:"currentColor"})})})})]})}function H1(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 98 96",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"GitHub"}),x.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z",fill:"currentColor"})]})}function S5(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 78 82",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Moon"}),x.jsx("path",{d:"M62.8455 45.9668C63.6268 45.9668 64.2127 45.3809 64.3104 44.5508C65.4334 34.3457 66.0682 33.9551 76.4197 32.3438C77.3963 32.1973 77.9334 31.7578 77.9334 30.8789C77.9334 30.0977 77.3963 29.5605 76.6151 29.4629C66.1658 27.4609 65.4334 27.4609 64.3104 17.2559C64.2127 16.377 63.6268 15.8398 62.8455 15.8398C62.0154 15.8398 61.4783 16.377 61.3807 17.207C60.1111 27.6074 59.6229 28.0957 49.0272 29.4629C48.2947 29.5117 47.7088 30.0977 47.7088 30.8789C47.7088 31.709 48.2947 32.1973 49.0272 32.3438C59.6229 34.3457 60.0623 34.4434 61.3807 44.6484C61.4783 45.3809 62.0154 45.9668 62.8455 45.9668ZM44.535 19.5508C45.0233 19.5508 45.3162 19.2578 45.4139 18.7695C46.6834 12.4707 46.5369 12.373 53.1287 11.0547C53.5682 10.957 53.91 10.7129 53.91 10.1758C53.91 9.63868 53.5682 9.39448 53.1287 9.29688C46.5369 7.97848 46.6834 7.88089 45.4139 1.58199C45.3162 1.09379 45.0233 0.800781 44.535 0.800781C43.9979 0.800781 43.7049 1.09379 43.6072 1.58199C42.3377 7.88089 42.4842 7.97848 35.9412 9.29688C35.4529 9.39448 35.1111 9.63868 35.1111 10.1758C35.1111 10.7129 35.4529 10.957 35.9412 11.0547C42.4842 12.373 42.3865 12.4707 43.6072 18.7695C43.7049 19.2578 43.9979 19.5508 44.535 19.5508Z",fill:"currentColor"}),x.jsx("path",{d:"M34.3298 81.2696C48.49 81.2696 59.9157 74.043 65.0915 61.7872C65.8239 59.9806 65.5798 58.6134 64.7497 57.7833C64.0173 57.0509 62.7478 56.9044 61.3318 57.4903C58.4509 58.6134 54.9353 59.2481 50.6384 59.2481C33.695 59.2481 22.7575 48.6036 22.7575 32.2462C22.7575 27.4122 23.6853 22.6759 24.7595 20.5763C25.5407 18.9161 25.4919 17.5001 24.8083 16.67C24.0271 15.7423 22.6599 15.4005 20.7068 16.1329C8.64624 20.7716 0.345459 33.4181 0.345459 47.8712C0.345459 66.8165 14.5056 81.2696 34.3298 81.2696ZM34.4275 74.5801C18.4607 74.5801 7.03494 62.9591 7.03494 47.3341C7.03494 38.2521 10.9411 30.0489 17.6306 24.629C16.8005 27.0704 16.361 30.6837 16.361 34.1505C16.361 52.8517 29.5446 65.6935 48.8806 65.6935C52.0544 65.6935 54.9841 65.3517 56.4001 64.9122C51.615 70.918 43.4607 74.5801 34.4275 74.5801Z",fill:"currentColor"})]})}function T5(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 84 84",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Sun"}),x.jsx("path",{d:"M41.8675 15.5254C43.9183 15.5254 45.6273 13.7676 45.6273 11.7168V3.80658C45.6273 1.75588 43.9183 0.046875 41.8675 0.046875C39.7679 0.046875 38.0589 1.75588 38.0589 3.80658V11.7168C38.0589 13.7676 39.7679 15.5254 41.8675 15.5254ZM60.3246 23.2402C61.7895 24.7051 64.2309 24.7539 65.7446 23.2402L71.3598 17.6738C72.7758 16.209 72.7758 13.7188 71.3598 12.2539C69.8949 10.7891 67.4535 10.7891 65.9887 12.2539L60.3246 17.918C58.9086 19.3828 58.9086 21.7754 60.3246 23.2402ZM67.9906 41.7461C67.9906 43.7969 69.7485 45.5547 71.7992 45.5547H79.6117C81.7113 45.5547 83.4202 43.7969 83.4202 41.7461C83.4202 39.6953 81.7113 37.9375 79.6117 37.9375H71.7992C69.7485 37.9375 67.9906 39.6953 67.9906 41.7461ZM60.3246 60.3008C58.9086 61.7656 58.9086 64.1582 60.3246 65.623L65.9887 71.2871C67.4535 72.7519 69.8949 72.7031 71.3598 71.2383C72.7758 69.7734 72.7758 67.332 71.3598 65.8672L65.6957 60.3008C64.2309 58.8359 61.7895 58.8359 60.3246 60.3008ZM41.8675 67.9668C39.7679 67.9668 38.0589 69.7246 38.0589 71.7754V79.6855C38.0589 81.7363 39.7679 83.4453 41.8675 83.4453C43.9183 83.4453 45.6273 81.7363 45.6273 79.6855V71.7754C45.6273 69.7246 43.9183 67.9668 41.8675 67.9668ZM23.3617 60.3008C21.8969 58.8359 19.4067 58.8359 17.9418 60.3008L12.3754 65.8184C10.9106 67.2832 10.9106 69.7246 12.3266 71.1894C13.7914 72.6543 16.2328 72.7031 17.6977 71.2383L23.3129 65.623C24.7778 64.1582 24.7778 61.7656 23.3617 60.3008ZM15.6957 41.7461C15.6957 39.6953 13.9867 37.9375 11.8871 37.9375H4.07455C1.97497 37.9375 0.265991 39.6953 0.265991 41.7461C0.265991 43.7969 1.97497 45.5547 4.07455 45.5547H11.8871C13.9867 45.5547 15.6957 43.7969 15.6957 41.7461ZM23.3129 23.2402C24.7778 21.8242 24.7778 19.334 23.3617 17.918L17.7465 12.2539C16.3305 10.8379 13.8403 10.7891 12.4242 12.2539C10.9594 13.7188 10.9594 16.209 12.3754 17.625L17.9418 23.2402C19.4067 24.7051 21.8481 24.7051 23.3129 23.2402Z",fill:"currentColor"}),x.jsx("path",{d:"M41.8675 61.668C52.7073 61.668 61.7405 52.6836 61.7405 41.7461C61.7405 30.8086 52.7073 21.8242 41.8675 21.8242C30.9788 21.8242 21.9456 30.8086 21.9456 41.7461C21.9456 52.6836 30.9788 61.668 41.8675 61.668ZM41.8675 55.0273C34.5921 55.0273 28.5862 48.9727 28.5862 41.7461C28.5862 34.5195 34.5921 28.4648 41.8675 28.4648C49.0941 28.4648 55.0999 34.5195 55.0999 41.7461C55.0999 48.9727 49.0941 55.0273 41.8675 55.0273Z",fill:"currentColor"})]})}function W1(){return x.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:"0 0 50 50",children:[x.jsx("title",{children:"Telegram"}),x.jsx("path",{d:"M25 2c12.703 0 23 10.297 23 23S37.703 48 25 48 2 37.703 2 25 12.297 2 25 2zm7.934 32.375c.423-1.298 2.405-14.234 2.65-16.783.074-.772-.17-1.285-.648-1.514-.578-.278-1.434-.139-2.427.219-1.362.491-18.774 7.884-19.78 8.312-.954.405-1.856.847-1.856 1.487 0 .45.267.703 1.003.966.766.273 2.695.858 3.834 1.172 1.097.303 2.346.04 3.046-.395.742-.461 9.305-6.191 9.92-6.693.614-.502 1.104.141.602.644-.502.502-6.38 6.207-7.155 6.997-.941.959-.273 1.953.358 2.351.721.454 5.906 3.932 6.687 4.49.781.558 1.573.811 2.298.811.725 0 1.107-.955 1.468-2.064z",fill:"currentColor"})]})}function K1(){return x.jsxs("svg",{width:"32",height:"32",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Warpcast"}),x.jsx("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M7.92028 31.9901H24.0698C28.4371 31.9901 31.9901 28.4373 31.9901 24.0699V7.92053C31.9901 3.55319 28.4371 0.000137329 24.0698 0.000137329H7.92028C3.55304 0.000137329 0 3.55319 0 7.92053V24.0699C0 28.4373 3.55304 31.9901 7.92028 31.9901ZM19.4134 16.048L20.9908 10.124H25.1383L21.2924 23.2218H17.7062L15.9951 17.1397L14.284 23.2218H10.7055L6.85115 10.124H10.999L12.5915 16.0916L14.1891 10.124H17.8309L19.4134 16.048Z",fill:"currentColor"})]})}function G1(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 1200 1227",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"X"}),x.jsx("path",{d:"M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z",fill:"currentColor"})]})}_c.Curtain=R5;function _c(){var r,o,i,a;const e=Je(),{showLogo:t,showSidebar:n}=Tr();return x.jsxs("div",{className:D(N7,t&&!n&&M7),children:[x.jsx($7,{}),t&&x.jsx("div",{className:D7,children:x.jsx("div",{className:L7,children:x.jsx(qn,{to:"/",style:{alignItems:"center",display:"flex",height:"56px",marginTop:"4px"},children:x.jsx(Wd,{})})})}),x.jsx("div",{className:xh}),x.jsxs("div",{className:xh,children:[(((r=e.topNav)==null?void 0:r.length)||0)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:Xs,children:x.jsx($5,{})}),x.jsx("div",{className:D(yh,ba)})]}),e.socials&&((o=e.socials)==null?void 0:o.length)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:D(Xs,ba),style:{marginLeft:"-8px",marginRight:"-8px"},children:e.socials.map((l,s)=>x.jsx("div",{className:yl,children:x.jsx(N5,{...l})},s))}),!((i=e.theme)!=null&&i.colorScheme)&&x.jsx("div",{className:D(yh,ba)})]}),!((a=e.theme)!=null&&a.colorScheme)&&x.jsx("div",{className:D(Xs,ba),style:{marginLeft:"-8px",marginRight:"-8px"},children:x.jsx("div",{className:yl,children:x.jsx(I5,{})})})]})]})}function R5(){return x.jsx("div",{className:I7})}function $5(){const{topNav:e}=Je();if(!e)return null;const{pathname:t}=Re(),n=Bi({pathname:t,items:e});return x.jsx(j1,{delayDuration:0,children:x.jsx(z1,{children:e.map((r,o)=>r.link?x.jsx(Gl,{active:n.includes(r.id),className:yl,href:r.link,children:r.text},o):r.items?x.jsxs(F1,{className:yl,children:[x.jsx(U1,{active:n.includes(r.id),children:r.text}),x.jsx(V1,{className:O7,children:x.jsx(O5,{items:r.items})})]},o):null)})})}function O5({items:e}){const{pathname:t}=Re(),n=Bi({pathname:t,items:e});return x.jsx("ul",{children:e==null?void 0:e.map((r,o)=>x.jsx(Gl,{active:n.includes(r.id),href:r.link,children:r.text},o))})}function I5(){const{toggle:e}=y4();return x.jsxs("button",{className:$1,onClick:e,type:"button",children:[x.jsx(st,{className:D(mc,x4),size:"20px",label:"Light",icon:T5}),x.jsx(st,{className:D(mc,_4),size:"20px",label:"Dark",icon:S5,style:{marginTop:"-2px"}})]})}const L5={discord:B1,github:H1,telegram:W1,warpcast:K1,x:G1},D5={discord:"23px",github:"20px",telegram:"21px",warpcast:"20px",x:"18px"};function N5({icon:e,label:t,link:n}){return x.jsx("a",{className:$1,href:n,target:"_blank",rel:"noopener noreferrer",children:x.jsx(st,{className:mc,label:t,icon:L5[e],size:D5[e]||"20px"})})}function M5(){return x.jsx("div",{})}const j5=({children:e})=>e;function z5(){const e=Sr(),t=Je();return p.useMemo(()=>{const{pattern:n="",text:r="Edit page"}=t.editLink??{};let o="";return typeof n=="function"?o="":e.filePath&&(o=n.replace(/:path/g,e.filePath)),{url:o,text:r}},[t.editLink,e.filePath])}function q1(){const[e,t]=p.useState(!1);return p.useEffect(()=>{t(!0)},[]),e}var F5="vocs_Footer_container",U5="vocs_Footer_editLink",V5="vocs_Footer_lastUpdated",B5="vocs_Footer_navigation",kh="vocs_Footer_navigationIcon",H5="vocs_Footer_navigationIcon_left",W5="vocs_Footer_navigationIcon_right",bh="vocs_Footer_navigationItem",K5="vocs_Footer_navigationItem_left",G5="vocs_Footer_navigationItem_right",Ch="vocs_Footer_navigationText",Ph="vocs_Footer_navigationTextInner",q5="vocs_Footer";function Y5(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 72 60",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Arrow Left"}),x.jsx("path",{d:"M0.325684 29.7461C0.325684 30.8203 0.813963 31.8457 1.69286 32.6758L26.8882 57.8223C27.7671 58.6524 28.7437 59.043 29.7691 59.043C31.9175 59.043 33.5777 57.4317 33.5777 55.2344C33.5777 54.209 33.2359 53.1836 32.5035 52.5L25.7652 45.5176L9.26126 30.6738L8.38236 32.7734L21.3706 33.7012H67.4644C69.7593 33.7012 71.3706 32.041 71.3706 29.7461C71.3706 27.4512 69.7593 25.791 67.4644 25.791H21.3706L8.38236 26.7188L9.26126 28.8672L25.7652 13.9746L32.5035 6.99221C33.2359 6.30861 33.5777 5.28322 33.5777 4.25782C33.5777 2.06052 31.9175 0.449219 29.7691 0.449219C28.7437 0.449219 27.7671 0.839814 26.8882 1.66991L1.69286 26.8164C0.813963 27.6465 0.325684 28.6719 0.325684 29.7461Z",fill:"currentColor"})]})}function Q5(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 72 60",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Arrow Right"}),x.jsx("path",{d:"M71.3706 29.7461C71.3706 28.6719 70.8824 27.6465 70.0035 26.8164L44.8081 1.66991C43.9292 0.839814 42.9527 0.449219 41.9273 0.449219C39.7789 0.449219 38.1187 2.06052 38.1187 4.25782C38.1187 5.28322 38.4605 6.30861 39.1929 6.99221L45.9312 13.9746L62.4351 28.8672L63.314 26.7188L50.3257 25.791H4.23196C1.93706 25.791 0.325684 27.4512 0.325684 29.7461C0.325684 32.041 1.93706 33.7012 4.23196 33.7012H50.3257L63.314 32.7734L62.4351 30.6738L45.9312 45.5176L39.1929 52.5C38.4605 53.1836 38.1187 54.209 38.1187 55.2344C38.1187 57.4317 39.7789 59.043 41.9273 59.043C42.9527 59.043 43.9292 58.6524 44.8081 57.8223L70.0035 32.6758C70.8824 31.8457 71.3706 30.8203 71.3706 29.7461Z",fill:"currentColor"})]})}function Z5(){const{layout:e}=Tr(),t=q1(),n=Sr(),r=p.useMemo(()=>n.lastUpdatedAt?new Date(n.lastUpdatedAt):void 0,[n.lastUpdatedAt]),o=p.useMemo(()=>r==null?void 0:r.toISOString(),[r]);return x.jsxs("footer",{className:q5,children:[e==="docs"&&x.jsxs(x.Fragment,{children:[x.jsxs("div",{className:F5,children:[x.jsx(X5,{}),t&&n.lastUpdatedAt&&x.jsxs("div",{className:V5,children:["Last updated:"," ",x.jsx("time",{dateTime:o,children:new Intl.DateTimeFormat(void 0,{dateStyle:"short",timeStyle:"short"}).format(r)})]})]}),x.jsx(J5,{})]}),x.jsx(M5,{})]})}function X5(){const e=z5();return e.url?x.jsx("div",{children:x.jsxs(nn,{className:U5,href:e.url,children:[x.jsx(m4,{})," ",e.text]})}):null}function J5(){const e=q1(),t=Bl(),{pathname:n}=Re(),r=p.useMemo(()=>Y1(t.items||[]).filter(s=>s.link),[t]),o=p.useMemo(()=>r.findIndex(s=>s.link===n),[r,n]),[i,a]=p.useMemo(()=>o<0?[]:o===0?[null,r[o+1]]:o===r.length-1?[r[o-1],null]:[r[o-1],r[o+1]],[o,r]),l=Md();return p.useEffect(()=>{let s=o,c=!1;const d=f=>{if(f.code==="ShiftLeft"&&(c=!0),c){const h=r[s+1],y=r[s-1];f.code==="ArrowRight"&&(h!=null&&h.link)&&(l(h.link),s++),f.code==="ArrowLeft"&&(y!=null&&y.link)&&(l(y.link),s--)}},u=f=>{f.code==="ShiftLeft"&&(c=!1)};return window.addEventListener("keydown",d),window.addEventListener("keyup",u),()=>{window.removeEventListener("keydown",d),window.removeEventListener("keyup",u)}},[]),e?x.jsxs("div",{className:B5,children:[i?x.jsxs(nn,{className:D(bh,K5),href:i.link,variant:"styleless",children:[x.jsxs("div",{className:Ch,children:[x.jsx("div",{className:D(kh,H5),style:qt({[vc]:"0.75em"}),children:x.jsx(st,{label:"Previous",icon:Y5})}),x.jsx("div",{className:Ph,children:i.text})]}),x.jsx(eo,{description:"Previous",keys:["shift","←"]})]}):x.jsx("div",{}),a?x.jsxs(nn,{className:D(bh,G5),href:a.link,variant:"styleless",children:[x.jsxs("div",{className:Ch,children:[x.jsx("div",{className:Ph,style:{textAlign:"right"},children:a.text}),x.jsx("div",{className:D(kh,W5),style:qt({[vc]:"0.75em"}),children:x.jsx(st,{label:"Next",icon:Q5})})]}),x.jsx(eo,{description:"Next",keys:["shift","→"]})]}):x.jsx("div",{})]}):null}function Y1(e){const t=[];for(const n of e){if(n.items){t.push(...Y1(n.items));continue}t.push(n)}return t}const Q1="Collapsible",[eE,Z1]=En(Q1),[tE,Yd]=eE(Q1),nE=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,open:r,defaultOpen:o,disabled:i,onOpenChange:a,...l}=e,[s=!1,c]=rr({prop:r,defaultProp:o,onChange:a});return p.createElement(tE,{scope:n,disabled:i,contentId:rn(),open:s,onOpenToggle:p.useCallback(()=>c(d=>!d),[c])},p.createElement(fe.div,q({"data-state":Qd(s),"data-disabled":i?"":void 0},l,{ref:t})))}),rE="CollapsibleTrigger",oE=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,...r}=e,o=Yd(rE,n);return p.createElement(fe.button,q({type:"button","aria-controls":o.contentId,"aria-expanded":o.open||!1,"data-state":Qd(o.open),"data-disabled":o.disabled?"":void 0,disabled:o.disabled},r,{ref:t,onClick:le(e.onClick,o.onOpenToggle)}))}),X1="CollapsibleContent",iE=p.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Yd(X1,e.__scopeCollapsible);return p.createElement(kn,{present:n||o.open},({present:i})=>p.createElement(aE,q({},r,{ref:t,present:i})))}),aE=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,present:r,children:o,...i}=e,a=Yd(X1,n),[l,s]=p.useState(r),c=p.useRef(null),d=Ue(t,c),u=p.useRef(0),f=u.current,h=p.useRef(0),y=h.current,g=a.open||l,w=p.useRef(g),m=p.useRef();return p.useEffect(()=>{const v=requestAnimationFrame(()=>w.current=!1);return()=>cancelAnimationFrame(v)},[]),gn(()=>{const v=c.current;if(v){m.current=m.current||{transitionDuration:v.style.transitionDuration,animationName:v.style.animationName},v.style.transitionDuration="0s",v.style.animationName="none";const _=v.getBoundingClientRect();u.current=_.height,h.current=_.width,w.current||(v.style.transitionDuration=m.current.transitionDuration,v.style.animationName=m.current.animationName),s(r)}},[a.open,r]),p.createElement(fe.div,q({"data-state":Qd(a.open),"data-disabled":a.disabled?"":void 0,id:a.contentId,hidden:!g},i,{ref:d,style:{"--radix-collapsible-content-height":f?`${f}px`:void 0,"--radix-collapsible-content-width":y?`${y}px`:void 0,...e.style}}),g&&o)});function Qd(e){return e?"open":"closed"}const lE=nE,sE=oE,uE=iE,$r="Accordion",cE=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[Zd,dE,fE]=Kl($r),[ql,oA]=En($r,[fE,Z1]),Xd=Z1(),J1=Z.forwardRef((e,t)=>{const{type:n,...r}=e,o=r,i=r;return Z.createElement(Zd.Provider,{scope:e.__scopeAccordion},n==="multiple"?Z.createElement(vE,q({},i,{ref:t})):Z.createElement(mE,q({},o,{ref:t})))});J1.propTypes={type(e){const t=e.value||e.defaultValue;return e.type&&!["single","multiple"].includes(e.type)?new Error("Invalid prop `type` supplied to `Accordion`. Expected one of `single | multiple`."):e.type==="multiple"&&typeof t=="string"?new Error("Invalid prop `type` supplied to `Accordion`. Expected `single` when `defaultValue` or `value` is type `string`."):e.type==="single"&&Array.isArray(t)?new Error("Invalid prop `type` supplied to `Accordion`. Expected `multiple` when `defaultValue` or `value` is type `string[]`."):null}};const[eg,pE]=ql($r),[tg,hE]=ql($r,{collapsible:!1}),mE=Z.forwardRef((e,t)=>{const{value:n,defaultValue:r,onValueChange:o=()=>{},collapsible:i=!1,...a}=e,[l,s]=rr({prop:n,defaultProp:r,onChange:o});return Z.createElement(eg,{scope:e.__scopeAccordion,value:l?[l]:[],onItemOpen:s,onItemClose:Z.useCallback(()=>i&&s(""),[i,s])},Z.createElement(tg,{scope:e.__scopeAccordion,collapsible:i},Z.createElement(ng,q({},a,{ref:t}))))}),vE=Z.forwardRef((e,t)=>{const{value:n,defaultValue:r,onValueChange:o=()=>{},...i}=e,[a=[],l]=rr({prop:n,defaultProp:r,onChange:o}),s=Z.useCallback(d=>l((u=[])=>[...u,d]),[l]),c=Z.useCallback(d=>l((u=[])=>u.filter(f=>f!==d)),[l]);return Z.createElement(eg,{scope:e.__scopeAccordion,value:a,onItemOpen:s,onItemClose:c},Z.createElement(tg,{scope:e.__scopeAccordion,collapsible:!0},Z.createElement(ng,q({},i,{ref:t}))))}),[gE,Jd]=ql($r),ng=Z.forwardRef((e,t)=>{const{__scopeAccordion:n,disabled:r,dir:o,orientation:i="vertical",...a}=e,l=Z.useRef(null),s=Ue(l,t),c=dE(n),u=Wl(o)==="ltr",f=le(e.onKeyDown,h=>{var y;if(!cE.includes(h.key))return;const g=h.target,w=c().filter(S=>{var O;return!((O=S.ref.current)!==null&&O!==void 0&&O.disabled)}),m=w.findIndex(S=>S.ref.current===g),v=w.length;if(m===-1)return;h.preventDefault();let _=m;const E=0,C=v-1,k=()=>{_=m+1,_>C&&(_=E)},P=()=>{_=m-1,_{const{__scopeAccordion:n,value:r,...o}=e,i=Jd(wc,n),a=pE(wc,n),l=Xd(n),s=rn(),c=r&&a.value.includes(r)||!1,d=i.disabled||e.disabled;return Z.createElement(yE,{scope:n,open:c,disabled:d,triggerId:s},Z.createElement(lE,q({"data-orientation":i.orientation,"data-state":kE(c)},l,o,{ref:t,disabled:d,open:c,onOpenChange:u=>{u?a.onItemOpen(r):a.onItemClose(r)}})))}),Ah="AccordionTrigger",_E=Z.forwardRef((e,t)=>{const{__scopeAccordion:n,...r}=e,o=Jd($r,n),i=rg(Ah,n),a=hE(Ah,n),l=Xd(n);return Z.createElement(Zd.ItemSlot,{scope:n},Z.createElement(sE,q({"aria-disabled":i.open&&!a.collapsible||void 0,"data-orientation":o.orientation,id:i.triggerId},l,r,{ref:t})))}),wE="AccordionContent",EE=Z.forwardRef((e,t)=>{const{__scopeAccordion:n,...r}=e,o=Jd($r,n),i=rg(wE,n),a=Xd(n);return Z.createElement(uE,q({role:"region","aria-labelledby":i.triggerId,"data-orientation":o.orientation},a,r,{ref:t,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}}))});function kE(e){return e?"open":"closed"}const bE=J1,CE=xE,PE=_E,AE=EE;var SE="vocs_MobileSearch_searchButton";function TE(){const[e,t]=p.useState(!1);return x.jsxs(x1,{open:e,onOpenChange:t,children:[x.jsx(_1,{asChild:!0,children:x.jsx("button",{className:SE,type:"button","aria-label":"Search",children:x.jsx(Fd,{height:21,width:21})})}),x.jsx(R1,{open:e,onClose:()=>t(!1)})]})}var RE="vocs_MobileTopNav_button",$E="var(--vocs_MobileTopNav_chevronDownIcon)",OE="var(--vocs_MobileTopNav_chevronUpIcon)",IE="vocs_MobileTopNav_content",LE="vocs_MobileTopNav_curtain",Sh="vocs_MobileTopNav_curtainGroup",eu="vocs_MobileTopNav_curtainItem",DE="vocs_MobileTopNav_divider",Ca="vocs_MobileTopNav_group",NE="vocs_MobileTopNav_icon",ME="vocs_MobileTopNav_item",jE="vocs_MobileTopNav_logo",zE="vocs_MobileTopNav_menuTitle",og="vocs_MobileTopNav_menuTrigger",ig="vocs_MobileTopNav_navigation",FE="vocs_MobileTopNav_navigationContent",Yo="vocs_MobileTopNav_navigationItem",UE="vocs_MobileTopNav_trigger",VE="vocs_MobileTopNav_navigation_compact",BE="vocs_MobileTopNav_outlinePopover",Th="vocs_MobileTopNav_outlineTrigger",HE="vocs_MobileTopNav",Rh="vocs_MobileTopNav_section",WE="vocs_MobileTopNav_separator",KE="vocs_MobileTopNav_sidebarPopover",GE="vocs_MobileTopNav_topNavPopover";function qE(e,t){let n=!1;return()=>{n=!0,setTimeout(()=>{n&&e(),n=!1},t)}}var YE="vocs_Outline_heading",QE="vocs_Outline_item",ZE="vocs_Outline_items",XE="vocs_Outline_link",JE="vocs_Outline_nav",e8="vocs_Outline";function ag({minLevel:e=2,maxLevel:t=3,highlightActive:n=!0,onClickItem:r,showTitle:o=!0}={}){const{outlineFooter:i}=Je(),{showOutline:a}=Tr(),l=typeof a=="number"?e+a-1:t,s=p.useRef(!0),{pathname:c,hash:d}=Re(),[u,f]=p.useState([]);p.useEffect(()=>{if(typeof window>"u")return;const m=Array.from(document.querySelectorAll(`.${B0}`));f(m)},[c]);const h=p.useMemo(()=>u?u.map(m=>{const v=m.querySelector(`.${H0}`);if(!v)return null;const _=v.getBoundingClientRect(),E=v.id,C=Number(m.tagName[1]),k=m.textContent,P=window.scrollY+_.top;return Cl?null:{id:E,level:C,slugTargetElement:v,text:k,topOffset:P}}).filter(Boolean):[],[u,l,e]),[y,g]=p.useState(d.replace("#",""));if(p.useEffect(()=>{if(typeof window>"u")return;const m=new IntersectionObserver(([v])=>{var E;if(!s.current)return;const _=v.target.id;if(v.isIntersecting)g(_);else{if(!(v.target.getBoundingClientRect().top>0))return;const P=h.findIndex(S=>S.id===y),A=(E=h[P-1])==null?void 0:E.id;g(A)}},{rootMargin:"0px 0px -95% 0px"});for(const v of h)m.observe(v.slugTargetElement);return()=>m.disconnect()},[y,h]),p.useEffect(()=>{if(typeof window>"u")return;const m=new IntersectionObserver(([v])=>{var E;if(!s.current)return;const _=(E=h[h.length-1])==null?void 0:E.id;v.isIntersecting?g(_):y===_&&g(h[h.length-2].id)});return m.observe(document.querySelector("[data-bottom-observer]")),()=>m.disconnect()},[y,h]),p.useEffect(()=>{if(typeof window>"u")return;const m=qE(()=>{var v,_,E;if(s.current){if(window.scrollY===0){g((v=h[0])==null?void 0:v.id);return}if(window.scrollY+document.documentElement.clientHeight>=document.documentElement.scrollHeight){g((_=h[h.length-1])==null?void 0:_.id);return}for(let C=0;Cwindow.removeEventListener("scroll",m)},[h]),h.length===0)return null;const w=h.filter(m=>m.level===e);return x.jsxs("aside",{className:e8,children:[x.jsxs("nav",{className:JE,children:[o&&x.jsx("h2",{className:YE,children:"On this page"}),x.jsx(lg,{activeId:n?y:null,items:h,onClickItem:()=>{r==null||r(),s.current=!1,setTimeout(()=>{s.current=!0},500)},levelItems:w,setActiveId:g})]}),vl(i)]})}function lg({activeId:e,items:t,levelItems:n,onClickItem:r,setActiveId:o}){const{pathname:i}=Re();return x.jsx("ul",{className:ZE,children:n.map(({id:a,level:l,text:s})=>{const c=`#${a}`,d=e===a,u=(()=>{var w;const h=t.findIndex(m=>m.id===a)+1,y=(w=t[h])==null?void 0:w.level;if(y<=l)return null;const g=[];for(let m=h;m{r==null||r(),o(a)},className:XE,children:s})}),u&&x.jsx(lg,{activeId:e,levelItems:u,items:t,onClickItem:r,setActiveId:o})]},a)})})}const t8=["top","right","bottom","left"],Yn=Math.min,Et=Math.max,_l=Math.round,Pa=Math.floor,Qn=e=>({x:e,y:e}),n8={left:"right",right:"left",bottom:"top",top:"bottom"},r8={start:"end",end:"start"};function Ec(e,t,n){return Et(e,Yn(t,n))}function yn(e,t){return typeof e=="function"?e(t):e}function xn(e){return e.split("-")[0]}function Ro(e){return e.split("-")[1]}function ef(e){return e==="x"?"y":"x"}function tf(e){return e==="y"?"height":"width"}function $o(e){return["top","bottom"].includes(xn(e))?"y":"x"}function nf(e){return ef($o(e))}function o8(e,t,n){n===void 0&&(n=!1);const r=Ro(e),o=nf(e),i=tf(o);let a=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=wl(a)),[a,wl(a)]}function i8(e){const t=wl(e);return[kc(e),t,kc(t)]}function kc(e){return e.replace(/start|end/g,t=>r8[t])}function a8(e,t,n){const r=["left","right"],o=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?i:a;default:return[]}}function l8(e,t,n,r){const o=Ro(e);let i=a8(xn(e),n==="start",r);return o&&(i=i.map(a=>a+"-"+o),t&&(i=i.concat(i.map(kc)))),i}function wl(e){return e.replace(/left|right|bottom|top/g,t=>n8[t])}function s8(e){return{top:0,right:0,bottom:0,left:0,...e}}function sg(e){return typeof e!="number"?s8(e):{top:e,right:e,bottom:e,left:e}}function El(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function $h(e,t,n){let{reference:r,floating:o}=e;const i=$o(t),a=nf(t),l=tf(a),s=xn(t),c=i==="y",d=r.x+r.width/2-o.width/2,u=r.y+r.height/2-o.height/2,f=r[l]/2-o[l]/2;let h;switch(s){case"top":h={x:d,y:r.y-o.height};break;case"bottom":h={x:d,y:r.y+r.height};break;case"right":h={x:r.x+r.width,y:u};break;case"left":h={x:r.x-o.width,y:u};break;default:h={x:r.x,y:r.y}}switch(Ro(t)){case"start":h[a]-=f*(n&&c?-1:1);break;case"end":h[a]+=f*(n&&c?-1:1);break}return h}const u8=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:a}=n,l=i.filter(Boolean),s=await(a.isRTL==null?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:o}),{x:d,y:u}=$h(c,r,s),f=r,h={},y=0;for(let g=0;g({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:i,platform:a,elements:l,middlewareData:s}=t,{element:c,padding:d=0}=yn(e,t)||{};if(c==null)return{};const u=sg(d),f={x:n,y:r},h=nf(o),y=tf(h),g=await a.getDimensions(c),w=h==="y",m=w?"top":"left",v=w?"bottom":"right",_=w?"clientHeight":"clientWidth",E=i.reference[y]+i.reference[h]-f[h]-i.floating[y],C=f[h]-i.reference[h],k=await(a.getOffsetParent==null?void 0:a.getOffsetParent(c));let P=k?k[_]:0;(!P||!await(a.isElement==null?void 0:a.isElement(k)))&&(P=l.floating[_]||i.floating[y]);const A=E/2-C/2,S=P/2-g[y]/2-1,O=Yn(u[m],S),j=Yn(u[v],S),N=O,z=P-g[y]-j,$=P/2-g[y]/2+A,U=Ec(N,$,z),W=!s.arrow&&Ro(o)!=null&&$!==U&&i.reference[y]/2-($N<=0)){var S,O;const N=(((S=i.flip)==null?void 0:S.index)||0)+1,z=C[N];if(z)return{data:{index:N,overflows:A},reset:{placement:z}};let $=(O=A.filter(U=>U.overflows[0]<=0).sort((U,W)=>U.overflows[1]-W.overflows[1])[0])==null?void 0:O.placement;if(!$)switch(h){case"bestFit":{var j;const U=(j=A.map(W=>[W.placement,W.overflows.filter(B=>B>0).reduce((B,L)=>B+L,0)]).sort((W,B)=>W[1]-B[1])[0])==null?void 0:j[0];U&&($=U);break}case"initialPlacement":$=l;break}if(o!==$)return{reset:{placement:$}}}return{}}}};function Oh(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Ih(e){return t8.some(t=>e[t]>=0)}const f8=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=yn(e,t);switch(r){case"referenceHidden":{const i=await Ii(t,{...o,elementContext:"reference"}),a=Oh(i,n.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:Ih(a)}}}case"escaped":{const i=await Ii(t,{...o,altBoundary:!0}),a=Oh(i,n.floating);return{data:{escapedOffsets:a,escaped:Ih(a)}}}default:return{}}}}};async function p8(e,t){const{placement:n,platform:r,elements:o}=e,i=await(r.isRTL==null?void 0:r.isRTL(o.floating)),a=xn(n),l=Ro(n),s=$o(n)==="y",c=["left","top"].includes(a)?-1:1,d=i&&s?-1:1,u=yn(t,e);let{mainAxis:f,crossAxis:h,alignmentAxis:y}=typeof u=="number"?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...u};return l&&typeof y=="number"&&(h=l==="end"?y*-1:y),s?{x:h*d,y:f*c}:{x:f*c,y:h*d}}const ug=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:o,y:i,placement:a,middlewareData:l}=t,s=await p8(t,e);return a===((n=l.offset)==null?void 0:n.placement)&&(r=l.arrow)!=null&&r.alignmentOffset?{}:{x:o+s.x,y:i+s.y,data:{...s,placement:a}}}}},h8=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:l={fn:w=>{let{x:m,y:v}=w;return{x:m,y:v}}},...s}=yn(e,t),c={x:n,y:r},d=await Ii(t,s),u=$o(xn(o)),f=ef(u);let h=c[f],y=c[u];if(i){const w=f==="y"?"top":"left",m=f==="y"?"bottom":"right",v=h+d[w],_=h-d[m];h=Ec(v,h,_)}if(a){const w=u==="y"?"top":"left",m=u==="y"?"bottom":"right",v=y+d[w],_=y-d[m];y=Ec(v,y,_)}const g=l.fn({...t,[f]:h,[u]:y});return{...g,data:{x:g.x-n,y:g.y-r}}}}},m8=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:i,middlewareData:a}=t,{offset:l=0,mainAxis:s=!0,crossAxis:c=!0}=yn(e,t),d={x:n,y:r},u=$o(o),f=ef(u);let h=d[f],y=d[u];const g=yn(l,t),w=typeof g=="number"?{mainAxis:g,crossAxis:0}:{mainAxis:0,crossAxis:0,...g};if(s){const _=f==="y"?"height":"width",E=i.reference[f]-i.floating[_]+w.mainAxis,C=i.reference[f]+i.reference[_]-w.mainAxis;hC&&(h=C)}if(c){var m,v;const _=f==="y"?"width":"height",E=["top","left"].includes(xn(o)),C=i.reference[u]-i.floating[_]+(E&&((m=a.offset)==null?void 0:m[u])||0)+(E?0:w.crossAxis),k=i.reference[u]+i.reference[_]+(E?0:((v=a.offset)==null?void 0:v[u])||0)-(E?w.crossAxis:0);yk&&(y=k)}return{[f]:h,[u]:y}}}},v8=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:i}=t,{apply:a=()=>{},...l}=yn(e,t),s=await Ii(t,l),c=xn(n),d=Ro(n),u=$o(n)==="y",{width:f,height:h}=r.floating;let y,g;c==="top"||c==="bottom"?(y=c,g=d===(await(o.isRTL==null?void 0:o.isRTL(i.floating))?"start":"end")?"left":"right"):(g=c,y=d==="end"?"top":"bottom");const w=h-s[y],m=f-s[g],v=!t.middlewareData.shift;let _=w,E=m;if(u){const k=f-s.left-s.right;E=d||v?Yn(m,k):k}else{const k=h-s.top-s.bottom;_=d||v?Yn(w,k):k}if(v&&!d){const k=Et(s.left,0),P=Et(s.right,0),A=Et(s.top,0),S=Et(s.bottom,0);u?E=f-2*(k!==0||P!==0?k+P:Et(s.left,s.right)):_=h-2*(A!==0||S!==0?A+S:Et(s.top,s.bottom))}await a({...t,availableWidth:E,availableHeight:_});const C=await o.getDimensions(i.floating);return f!==C.width||h!==C.height?{reset:{rects:!0}}:{}}}};function Zn(e){return cg(e)?(e.nodeName||"").toLowerCase():"#document"}function Ct(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Cn(e){var t;return(t=(cg(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function cg(e){return e instanceof Node||e instanceof Ct(e).Node}function rt(e){return e instanceof Element||e instanceof Ct(e).Element}function on(e){return e instanceof HTMLElement||e instanceof Ct(e).HTMLElement}function bc(e){return typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Ct(e).ShadowRoot}function Wi(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=Nt(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function g8(e){return["table","td","th"].includes(Zn(e))}function rf(e){const t=of(),n=Nt(e);return n.transform!=="none"||n.perspective!=="none"||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function y8(e){let t=Eo(e);for(;on(t)&&!Yl(t);){if(rf(t))return t;t=Eo(t)}return null}function of(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Yl(e){return["html","body","#document"].includes(Zn(e))}function Nt(e){return Ct(e).getComputedStyle(e)}function Ql(e){return rt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Eo(e){if(Zn(e)==="html")return e;const t=e.assignedSlot||e.parentNode||bc(e)&&e.host||Cn(e);return bc(t)?t.host:t}function dg(e){const t=Eo(e);return Yl(t)?e.ownerDocument?e.ownerDocument.body:e.body:on(t)&&Wi(t)?t:dg(t)}function Li(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const o=dg(e),i=o===((r=e.ownerDocument)==null?void 0:r.body),a=Ct(o);return i?t.concat(a,a.visualViewport||[],Wi(o)?o:[],a.frameElement&&n?Li(a.frameElement):[]):t.concat(o,Li(o,[],n))}function fg(e){const t=Nt(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=on(e),i=o?e.offsetWidth:n,a=o?e.offsetHeight:r,l=_l(n)!==i||_l(r)!==a;return l&&(n=i,r=a),{width:n,height:r,$:l}}function af(e){return rt(e)?e:e.contextElement}function so(e){const t=af(e);if(!on(t))return Qn(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:i}=fg(t);let a=(i?_l(n.width):n.width)/r,l=(i?_l(n.height):n.height)/o;return(!a||!Number.isFinite(a))&&(a=1),(!l||!Number.isFinite(l))&&(l=1),{x:a,y:l}}const x8=Qn(0);function pg(e){const t=Ct(e);return!of()||!t.visualViewport?x8:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function _8(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Ct(e)?!1:t}function Er(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),i=af(e);let a=Qn(1);t&&(r?rt(r)&&(a=so(r)):a=so(e));const l=_8(i,n,r)?pg(i):Qn(0);let s=(o.left+l.x)/a.x,c=(o.top+l.y)/a.y,d=o.width/a.x,u=o.height/a.y;if(i){const f=Ct(i),h=r&&rt(r)?Ct(r):r;let y=f,g=y.frameElement;for(;g&&r&&h!==y;){const w=so(g),m=g.getBoundingClientRect(),v=Nt(g),_=m.left+(g.clientLeft+parseFloat(v.paddingLeft))*w.x,E=m.top+(g.clientTop+parseFloat(v.paddingTop))*w.y;s*=w.x,c*=w.y,d*=w.x,u*=w.y,s+=_,c+=E,y=Ct(g),g=y.frameElement}}return El({width:d,height:u,x:s,y:c})}const w8=[":popover-open",":modal"];function hg(e){return w8.some(t=>{try{return e.matches(t)}catch{return!1}})}function E8(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const i=o==="fixed",a=Cn(r),l=t?hg(t.floating):!1;if(r===a||l&&i)return n;let s={scrollLeft:0,scrollTop:0},c=Qn(1);const d=Qn(0),u=on(r);if((u||!u&&!i)&&((Zn(r)!=="body"||Wi(a))&&(s=Ql(r)),on(r))){const f=Er(r);c=so(r),d.x=f.x+r.clientLeft,d.y=f.y+r.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-s.scrollLeft*c.x+d.x,y:n.y*c.y-s.scrollTop*c.y+d.y}}function k8(e){return Array.from(e.getClientRects())}function mg(e){return Er(Cn(e)).left+Ql(e).scrollLeft}function b8(e){const t=Cn(e),n=Ql(e),r=e.ownerDocument.body,o=Et(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),i=Et(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let a=-n.scrollLeft+mg(e);const l=-n.scrollTop;return Nt(r).direction==="rtl"&&(a+=Et(t.clientWidth,r.clientWidth)-o),{width:o,height:i,x:a,y:l}}function C8(e,t){const n=Ct(e),r=Cn(e),o=n.visualViewport;let i=r.clientWidth,a=r.clientHeight,l=0,s=0;if(o){i=o.width,a=o.height;const c=of();(!c||c&&t==="fixed")&&(l=o.offsetLeft,s=o.offsetTop)}return{width:i,height:a,x:l,y:s}}function P8(e,t){const n=Er(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=on(e)?so(e):Qn(1),a=e.clientWidth*i.x,l=e.clientHeight*i.y,s=o*i.x,c=r*i.y;return{width:a,height:l,x:s,y:c}}function Lh(e,t,n){let r;if(t==="viewport")r=C8(e,n);else if(t==="document")r=b8(Cn(e));else if(rt(t))r=P8(t,n);else{const o=pg(e);r={...t,x:t.x-o.x,y:t.y-o.y}}return El(r)}function vg(e,t){const n=Eo(e);return n===t||!rt(n)||Yl(n)?!1:Nt(n).position==="fixed"||vg(n,t)}function A8(e,t){const n=t.get(e);if(n)return n;let r=Li(e,[],!1).filter(l=>rt(l)&&Zn(l)!=="body"),o=null;const i=Nt(e).position==="fixed";let a=i?Eo(e):e;for(;rt(a)&&!Yl(a);){const l=Nt(a),s=rf(a);!s&&l.position==="fixed"&&(o=null),(i?!s&&!o:!s&&l.position==="static"&&!!o&&["absolute","fixed"].includes(o.position)||Wi(a)&&!s&&vg(e,a))?r=r.filter(d=>d!==a):o=l,a=Eo(a)}return t.set(e,r),r}function S8(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[...n==="clippingAncestors"?A8(t,this._c):[].concat(n),r],l=a[0],s=a.reduce((c,d)=>{const u=Lh(t,d,o);return c.top=Et(u.top,c.top),c.right=Yn(u.right,c.right),c.bottom=Yn(u.bottom,c.bottom),c.left=Et(u.left,c.left),c},Lh(t,l,o));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function T8(e){const{width:t,height:n}=fg(e);return{width:t,height:n}}function R8(e,t,n){const r=on(t),o=Cn(t),i=n==="fixed",a=Er(e,!0,i,t);let l={scrollLeft:0,scrollTop:0};const s=Qn(0);if(r||!r&&!i)if((Zn(t)!=="body"||Wi(o))&&(l=Ql(t)),r){const u=Er(t,!0,i,t);s.x=u.x+t.clientLeft,s.y=u.y+t.clientTop}else o&&(s.x=mg(o));const c=a.left+l.scrollLeft-s.x,d=a.top+l.scrollTop-s.y;return{x:c,y:d,width:a.width,height:a.height}}function Dh(e,t){return!on(e)||Nt(e).position==="fixed"?null:t?t(e):e.offsetParent}function gg(e,t){const n=Ct(e);if(!on(e)||hg(e))return n;let r=Dh(e,t);for(;r&&g8(r)&&Nt(r).position==="static";)r=Dh(r,t);return r&&(Zn(r)==="html"||Zn(r)==="body"&&Nt(r).position==="static"&&!rf(r))?n:r||y8(e)||n}const $8=async function(e){const t=this.getOffsetParent||gg,n=this.getDimensions;return{reference:R8(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}};function O8(e){return Nt(e).direction==="rtl"}const yg={convertOffsetParentRelativeRectToViewportRelativeRect:E8,getDocumentElement:Cn,getClippingRect:S8,getOffsetParent:gg,getElementRects:$8,getClientRects:k8,getDimensions:T8,getScale:so,isElement:rt,isRTL:O8};function I8(e,t){let n=null,r;const o=Cn(e);function i(){var l;clearTimeout(r),(l=n)==null||l.disconnect(),n=null}function a(l,s){l===void 0&&(l=!1),s===void 0&&(s=1),i();const{left:c,top:d,width:u,height:f}=e.getBoundingClientRect();if(l||t(),!u||!f)return;const h=Pa(d),y=Pa(o.clientWidth-(c+u)),g=Pa(o.clientHeight-(d+f)),w=Pa(c),v={rootMargin:-h+"px "+-y+"px "+-g+"px "+-w+"px",threshold:Et(0,Yn(1,s))||1};let _=!0;function E(C){const k=C[0].intersectionRatio;if(k!==s){if(!_)return a();k?a(!1,k):r=setTimeout(()=>{a(!1,1e-7)},100)}_=!1}try{n=new IntersectionObserver(E,{...v,root:o.ownerDocument})}catch{n=new IntersectionObserver(E,v)}n.observe(e)}return a(!0),i}function L8(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:i=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:s=!1}=r,c=af(e),d=o||i?[...c?Li(c):[],...Li(t)]:[];d.forEach(m=>{o&&m.addEventListener("scroll",n,{passive:!0}),i&&m.addEventListener("resize",n)});const u=c&&l?I8(c,n):null;let f=-1,h=null;a&&(h=new ResizeObserver(m=>{let[v]=m;v&&v.target===c&&h&&(h.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var _;(_=h)==null||_.observe(t)})),n()}),c&&!s&&h.observe(c),h.observe(t));let y,g=s?Er(e):null;s&&w();function w(){const m=Er(e);g&&(m.x!==g.x||m.y!==g.y||m.width!==g.width||m.height!==g.height)&&n(),g=m,y=requestAnimationFrame(w)}return n(),()=>{var m;d.forEach(v=>{o&&v.removeEventListener("scroll",n),i&&v.removeEventListener("resize",n)}),u==null||u(),(m=h)==null||m.disconnect(),h=null,s&&cancelAnimationFrame(y)}}const xg=h8,D8=d8,N8=v8,M8=f8,Nh=c8,j8=m8,z8=(e,t,n)=>{const r=new Map,o={platform:yg,...n},i={...o.platform,_c:r};return u8(e,t,{...o,platform:i})},_g=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:r,padding:o}=typeof e=="function"?e(n):e;return r&&t(r)?r.current!=null?Nh({element:r.current,padding:o}).fn(n):{}:r?Nh({element:r,padding:o}).fn(n):{}}}};var Ba=typeof document<"u"?p.useLayoutEffect:p.useEffect;function kl(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!kl(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;r--!==0;){const i=o[r];if(!(i==="_owner"&&e.$$typeof)&&!kl(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function wg(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Mh(e,t){const n=wg(e);return Math.round(t*n)/n}function jh(e){const t=p.useRef(e);return Ba(()=>{t.current=e}),t}function Eg(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o,elements:{reference:i,floating:a}={},transform:l=!0,whileElementsMounted:s,open:c}=e,[d,u]=p.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,h]=p.useState(r);kl(f,r)||h(r);const[y,g]=p.useState(null),[w,m]=p.useState(null),v=p.useCallback(B=>{B!==k.current&&(k.current=B,g(B))},[]),_=p.useCallback(B=>{B!==P.current&&(P.current=B,m(B))},[]),E=i||y,C=a||w,k=p.useRef(null),P=p.useRef(null),A=p.useRef(d),S=s!=null,O=jh(s),j=jh(o),N=p.useCallback(()=>{if(!k.current||!P.current)return;const B={placement:t,strategy:n,middleware:f};j.current&&(B.platform=j.current),z8(k.current,P.current,B).then(L=>{const F={...L,isPositioned:!0};z.current&&!kl(A.current,F)&&(A.current=F,Ao.flushSync(()=>{u(F)}))})},[f,t,n,j]);Ba(()=>{c===!1&&A.current.isPositioned&&(A.current.isPositioned=!1,u(B=>({...B,isPositioned:!1})))},[c]);const z=p.useRef(!1);Ba(()=>(z.current=!0,()=>{z.current=!1}),[]),Ba(()=>{if(E&&(k.current=E),C&&(P.current=C),E&&C){if(O.current)return O.current(E,C,N);N()}},[E,C,N,O,S]);const $=p.useMemo(()=>({reference:k,floating:P,setReference:v,setFloating:_}),[v,_]),U=p.useMemo(()=>({reference:E,floating:C}),[E,C]),W=p.useMemo(()=>{const B={position:n,left:0,top:0};if(!U.floating)return B;const L=Mh(U.floating,d.x),F=Mh(U.floating,d.y);return l?{...B,transform:"translate("+L+"px, "+F+"px)",...wg(U.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:L,top:F}},[n,l,U.floating,d.x,d.y]);return p.useMemo(()=>({...d,update:N,refs:$,elements:U,floatingStyles:W}),[d,N,$,U,W])}function F8(e){const[t,n]=p.useState(void 0);return gn(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const i=o[0];let a,l;if("borderBoxSize"in i){const s=i.borderBoxSize,c=Array.isArray(s)?s[0]:s;a=c.inlineSize,l=c.blockSize}else a=e.offsetWidth,l=e.offsetHeight;n({width:a,height:l})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}const kg="Popper",[bg,Cg]=En(kg),[U8,Pg]=bg(kg),V8=e=>{const{__scopePopper:t,children:n}=e,[r,o]=p.useState(null);return p.createElement(U8,{scope:t,anchor:r,onAnchorChange:o},n)},B8="PopperAnchor",H8=p.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...o}=e,i=Pg(B8,n),a=p.useRef(null),l=Ue(t,a);return p.useEffect(()=>{i.onAnchorChange((r==null?void 0:r.current)||a.current)}),r?null:p.createElement(fe.div,q({},o,{ref:l}))}),Ag="PopperContent",[W8,iA]=bg(Ag),K8=p.forwardRef((e,t)=>{var n,r,o,i,a,l,s,c;const{__scopePopper:d,side:u="bottom",sideOffset:f=0,align:h="center",alignOffset:y=0,arrowPadding:g=0,avoidCollisions:w=!0,collisionBoundary:m=[],collisionPadding:v=0,sticky:_="partial",hideWhenDetached:E=!1,updatePositionStrategy:C="optimized",onPlaced:k,...P}=e,A=Pg(Ag,d),[S,O]=p.useState(null),j=Ue(t,xt=>O(xt)),[N,z]=p.useState(null),$=F8(N),U=(n=$==null?void 0:$.width)!==null&&n!==void 0?n:0,W=(r=$==null?void 0:$.height)!==null&&r!==void 0?r:0,B=u+(h!=="center"?"-"+h:""),L=typeof v=="number"?v:{top:0,right:0,bottom:0,left:0,...v},F=Array.isArray(m)?m:[m],G=F.length>0,J={padding:L,boundary:F.filter(G8),altBoundary:G},{refs:ue,floatingStyles:Ve,placement:xe,isPositioned:$e,middlewareData:_e}=Eg({strategy:"fixed",placement:B,whileElementsMounted:(...xt)=>L8(...xt,{animationFrame:C==="always"}),elements:{reference:A.anchor},middleware:[ug({mainAxis:f+W,alignmentAxis:y}),w&&xg({mainAxis:!0,crossAxis:!1,limiter:_==="partial"?j8():void 0,...J}),w&&D8({...J}),N8({...J,apply:({elements:xt,rects:Gi,availableWidth:Xl,availableHeight:Jl})=>{const{width:es,height:ts}=Gi.reference,Yt=xt.floating.style;Yt.setProperty("--radix-popper-available-width",`${Xl}px`),Yt.setProperty("--radix-popper-available-height",`${Jl}px`),Yt.setProperty("--radix-popper-anchor-width",`${es}px`),Yt.setProperty("--radix-popper-anchor-height",`${ts}px`)}}),N&&_g({element:N,padding:g}),q8({arrowWidth:U,arrowHeight:W}),E&&M8({strategy:"referenceHidden",...J})]}),[Be,we]=Sg(xe),Ce=at(k);gn(()=>{$e&&(Ce==null||Ce())},[$e,Ce]);const Mt=(o=_e.arrow)===null||o===void 0?void 0:o.x,Pe=(i=_e.arrow)===null||i===void 0?void 0:i.y,dt=((a=_e.arrow)===null||a===void 0?void 0:a.centerOffset)!==0,[Ki,Zl]=p.useState();return gn(()=>{S&&Zl(window.getComputedStyle(S).zIndex)},[S]),p.createElement("div",{ref:ue.setFloating,"data-radix-popper-content-wrapper":"",style:{...Ve,transform:$e?Ve.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Ki,"--radix-popper-transform-origin":[(l=_e.transformOrigin)===null||l===void 0?void 0:l.x,(s=_e.transformOrigin)===null||s===void 0?void 0:s.y].join(" ")},dir:e.dir},p.createElement(W8,{scope:d,placedSide:Be,onArrowChange:z,arrowX:Mt,arrowY:Pe,shouldHideArrow:dt},p.createElement(fe.div,q({"data-side":Be,"data-align":we},P,{ref:j,style:{...P.style,animation:$e?void 0:"none",opacity:(c=_e.hide)!==null&&c!==void 0&&c.referenceHidden?0:void 0}}))))});function G8(e){return e!==null}const q8=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,i,a;const{placement:l,rects:s,middlewareData:c}=t,u=((n=c.arrow)===null||n===void 0?void 0:n.centerOffset)!==0,f=u?0:e.arrowWidth,h=u?0:e.arrowHeight,[y,g]=Sg(l),w={start:"0%",center:"50%",end:"100%"}[g],m=((r=(o=c.arrow)===null||o===void 0?void 0:o.x)!==null&&r!==void 0?r:0)+f/2,v=((i=(a=c.arrow)===null||a===void 0?void 0:a.y)!==null&&i!==void 0?i:0)+h/2;let _="",E="";return y==="bottom"?(_=u?w:`${m}px`,E=`${-h}px`):y==="top"?(_=u?w:`${m}px`,E=`${s.floating.height+h}px`):y==="right"?(_=`${-h}px`,E=u?w:`${v}px`):y==="left"&&(_=`${s.floating.width+h}px`,E=u?w:`${v}px`),{data:{x:_,y:E}}}});function Sg(e){const[t,n="center"]=e.split("-");return[t,n]}const Y8=V8,Q8=H8,Z8=K8,Tg="Popover",[Rg,aA]=En(Tg,[Cg]),lf=Cg(),[X8,Oo]=Rg(Tg),J8=e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:o,onOpenChange:i,modal:a=!1}=e,l=lf(t),s=p.useRef(null),[c,d]=p.useState(!1),[u=!1,f]=rr({prop:r,defaultProp:o,onChange:i});return p.createElement(Y8,l,p.createElement(X8,{scope:t,contentId:rn(),triggerRef:s,open:u,onOpenChange:f,onOpenToggle:p.useCallback(()=>f(h=>!h),[f]),hasCustomAnchor:c,onCustomAnchorAdd:p.useCallback(()=>d(!0),[]),onCustomAnchorRemove:p.useCallback(()=>d(!1),[]),modal:a},n))},ek="PopoverTrigger",tk=p.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,o=Oo(ek,n),i=lf(n),a=Ue(t,o.triggerRef),l=p.createElement(fe.button,q({type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Ig(o.open)},r,{ref:a,onClick:le(e.onClick,o.onOpenToggle)}));return o.hasCustomAnchor?l:p.createElement(Q8,q({asChild:!0},i),l)}),$g="PopoverPortal",[nk,rk]=Rg($g,{forceMount:void 0}),ok=e=>{const{__scopePopover:t,forceMount:n,children:r,container:o}=e,i=Oo($g,t);return p.createElement(nk,{scope:t,forceMount:n},p.createElement(kn,{present:n||i.open},p.createElement(t1,{asChild:!0,container:o},r)))},Di="PopoverContent",ik=p.forwardRef((e,t)=>{const n=rk(Di,e.__scopePopover),{forceMount:r=n.forceMount,...o}=e,i=Oo(Di,e.__scopePopover);return p.createElement(kn,{present:r||i.open},i.modal?p.createElement(ak,q({},o,{ref:t})):p.createElement(lk,q({},o,{ref:t})))}),ak=p.forwardRef((e,t)=>{const n=Oo(Di,e.__scopePopover),r=p.useRef(null),o=Ue(t,r),i=p.useRef(!1);return p.useEffect(()=>{const a=r.current;if(a)return p1(a)},[]),p.createElement(d1,{as:wo,allowPinchZoom:!0},p.createElement(Og,q({},e,{ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:le(e.onCloseAutoFocus,a=>{var l;a.preventDefault(),i.current||(l=n.triggerRef.current)===null||l===void 0||l.focus()}),onPointerDownOutside:le(e.onPointerDownOutside,a=>{const l=a.detail.originalEvent,s=l.button===0&&l.ctrlKey===!0,c=l.button===2||s;i.current=c},{checkForDefaultPrevented:!1}),onFocusOutside:le(e.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})))}),lk=p.forwardRef((e,t)=>{const n=Oo(Di,e.__scopePopover),r=p.useRef(!1),o=p.useRef(!1);return p.createElement(Og,q({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var a;if((a=e.onCloseAutoFocus)===null||a===void 0||a.call(e,i),!i.defaultPrevented){var l;r.current||(l=n.triggerRef.current)===null||l===void 0||l.focus(),i.preventDefault()}r.current=!1,o.current=!1},onInteractOutside:i=>{var a,l;(a=e.onInteractOutside)===null||a===void 0||a.call(e,i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const s=i.target;((l=n.triggerRef.current)===null||l===void 0?void 0:l.contains(s))&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&o.current&&i.preventDefault()}}))}),Og=p.forwardRef((e,t)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEscapeKeyDown:l,onPointerDownOutside:s,onFocusOutside:c,onInteractOutside:d,...u}=e,f=Oo(Di,n),h=lf(n);return n1(),p.createElement(J0,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i},p.createElement(Ud,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:d,onEscapeKeyDown:l,onPointerDownOutside:s,onFocusOutside:c,onDismiss:()=>f.onOpenChange(!1)},p.createElement(Z8,q({"data-state":Ig(f.open),role:"dialog",id:f.contentId},h,u,{ref:t,style:{...u.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}}))))});function Ig(e){return e?"open":"closed"}const sk=J8,uk=tk,ck=ok,dk=ik;var fk="vocs_Popover";Bt.Root=sk;Bt.Trigger=uk;function Bt({children:e,className:t}){return x.jsx(ck,{children:x.jsx(dk,{className:D(fk,t),sideOffset:12,children:e})})}var pk="vocs_Sidebar_backLink",hk="vocs_Sidebar_divider",mk="vocs_Sidebar_group",ni="vocs_Sidebar_item",Lg="vocs_Sidebar_items",vk="vocs_Sidebar_level",gk="vocs_Sidebar_levelCollapsed",yk="vocs_Sidebar_levelInset",xk="vocs_Sidebar_logo",_k="vocs_Sidebar_logoWrapper",wk="vocs_Sidebar_navigation",Ek="vocs_Sidebar",Dg="vocs_Sidebar_section",kk="vocs_Sidebar_sectionCollapse",bk="vocs_Sidebar_sectionCollapseActive",Ck="vocs_Sidebar_sectionHeader",Pk="vocs_Sidebar_sectionHeaderActive",zh="vocs_Sidebar_sectionTitle";function Ng(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 39 69",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Chevron Right"}),x.jsx("path",{d:"M38.8697 34.7461C38.8697 33.6719 38.4791 32.6953 37.649 31.8652L7.47318 1.8848C6.74078 1.1035 5.76418 0.712891 4.64118 0.712891C2.34618 0.712891 0.588379 2.42189 0.588379 4.71679C0.588379 5.79099 1.07668 6.81639 1.76028 7.59769L29.0552 34.7461L1.76028 61.8945C1.07668 62.6758 0.588379 63.6523 0.588379 64.7754C0.588379 67.0703 2.34618 68.7793 4.64118 68.7793C5.76418 68.7793 6.74078 68.3887 7.47318 67.6074L37.649 37.627C38.4791 36.7969 38.8697 35.8203 38.8697 34.7461Z",fill:"currentColor"})]})}function Mg(e){var c;const{className:t,onClickItem:n}=e,{previousPath:r}=Sr(),o=p.useRef(null),i=Bl(),[a,l]=p.useState("/");if(p.useEffect(()=>{typeof window>"u"||r&&l(r)},[i.key,i.backLink]),!i)return null;const s=Ak(i.items);return x.jsxs("aside",{ref:o,className:D(Ek,t),children:[x.jsxs("div",{className:_k,children:[x.jsx("div",{className:xk,children:x.jsx(qn,{to:"/",style:{alignItems:"center",display:"flex",height:"100%"},children:x.jsx(Wd,{})})}),x.jsx("div",{className:hk})]}),x.jsx("nav",{className:wk,children:x.jsxs("div",{className:mk,children:[i.backLink&&x.jsx("section",{className:Dg,children:x.jsx("div",{className:Lg,children:x.jsxs(qn,{className:D(ni,pk),to:a,children:["←"," ",typeof history<"u"&&((c=history.state)!=null&&c.key)&&a!=="/"?"Back":"Home"]})})}),s.map((d,u)=>x.jsx(zg,{depth:0,item:d,onClick:n,sidebarRef:o},`${d.text}${u}`))]})})]},i.key)}function Ak(e){const t=[];let n=0;for(const r of e){if(r.items){n=t.push(r);continue}t[n]?t[n].items.push(r):t.push({text:"",items:[r]})}return t}function jg(e,t){return e.find(n=>Ul(t,n.link??"")||n.link===t?!0:n.items?jg(n.items,t):!1)}function zg(e){const{depth:t,item:n,onClick:r,sidebarRef:o}=e,i=p.useRef(null),{pathname:a}=Re(),l=zw(n.link??""),s=p.useMemo(()=>n.items?!!jg(n.items,a):!1,[n.items,a]),[c,d]=p.useState(()=>l||!n.items||s?!1:!!n.collapsed),u=n.collapsed!==void 0&&n.items!==void 0,f=p.useCallback(g=>{"key"in g&&g.key!=="Enter"||n.link||d(w=>!w)},[n.link]),h=p.useCallback(g=>{"key"in g&&g.key!=="Enter"||n.link&&d(w=>!w)},[n.link]),y=p.useRef(!0);return p.useEffect(()=>{!y.current||(y.current=!1,!Ul(a,n.link??""))||requestAnimationFrame(()=>{var v,_,E;const w=((v=i.current)==null?void 0:v.offsetTop)??0,m=((_=o==null?void 0:o.current)==null?void 0:_.clientHeight)??0;w0&&t<5&&n.items.map((g,w)=>x.jsx(zg,{depth:t+1,item:g,onClick:r,sidebarRef:o},`${g.text}${w}`))})]}):x.jsx(x.Fragment,{children:n.link?x.jsx(qn,{ref:i,"data-active":!!l,onClick:r,className:ni,to:n.link,children:n.text}):x.jsx("div",{className:ni,children:n.text})})}function Sk(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 69 39",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Chevron Down"}),x.jsx("path",{d:"M34.8677 38.8398C35.9419 38.8398 37.0161 38.4492 37.7485 37.6191L67.729 7.44339C68.4614 6.71089 68.9009 5.73439 68.9009 4.61129C68.9009 2.31639 67.1919 0.558594 64.897 0.558594C63.8227 0.558594 62.7485 1.04689 62.0161 1.73049L32.5727 31.2715H37.1138L7.67042 1.73049C6.93802 1.04689 5.96142 0.558594 4.83842 0.558594C2.54342 0.558594 0.785645 2.31639 0.785645 4.61129C0.785645 5.73439 1.22512 6.71089 1.95752 7.44339L31.9868 37.6191C32.768 38.4492 33.7446 38.8398 34.8677 38.8398Z",fill:"currentColor"})]})}function Tk(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 69 40",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Chevron Up"}),x.jsx("path",{d:"M1.95752 32.2441C1.22512 32.9277 0.785645 33.9531 0.785645 35.0762C0.785645 37.3711 2.54342 39.1289 4.83842 39.1289C5.96142 39.1289 6.98682 38.6895 7.67042 37.957L37.1138 8.36716H32.5727L62.0161 37.957C62.6997 38.6895 63.8227 39.1289 64.897 39.1289C67.1919 39.1289 68.9009 37.3711 68.9009 35.0762C68.9009 33.9531 68.4614 32.9277 67.729 32.2441L37.7485 2.06836C37.0161 1.23826 35.9419 0.847656 34.8677 0.847656C33.7446 0.847656 32.7192 1.23826 31.9868 2.06836L1.95752 32.2441Z",fill:"currentColor"})]})}function Rk(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 79 48",fill:"none",children:[x.jsx("title",{children:"Menu"}),x.jsx("path",{fill:"currentColor",d:"M19.528 47.232h40.87c1.952 0 3.515-1.562 3.515-3.564a3.5 3.5 0 0 0-3.516-3.516H19.528a3.501 3.501 0 0 0-3.515 3.516c0 2.002 1.562 3.564 3.515 3.564ZM12.057 27.262h55.81a3.501 3.501 0 0 0 3.516-3.516 3.501 3.501 0 0 0-3.515-3.515h-55.81a3.501 3.501 0 0 0-3.516 3.515 3.501 3.501 0 0 0 3.515 3.516ZM4.391 7.34H75.29c2.002 0 3.515-1.563 3.515-3.516 0-2.002-1.513-3.564-3.515-3.564H4.39C2.438.26.876 1.822.876 3.824A3.501 3.501 0 0 0 4.39 7.34Z"})]})}Cc.Curtain=Mk;function Cc(){var n,r;const e=Je(),{showLogo:t}=Tr();return x.jsxs("div",{className:HE,children:[x.jsxs("div",{className:Rh,children:[t&&x.jsx("div",{className:Ca,children:x.jsx("div",{className:jE,children:x.jsx(qn,{to:"/",style:{alignItems:"center",display:"flex",height:"100%"},children:x.jsx(Wd,{})})})}),e.topNav&&x.jsx(x.Fragment,{children:x.jsxs("div",{className:Ca,children:[x.jsx($k,{items:e.topNav}),x.jsx(Ik,{items:e.topNav})]})})]}),x.jsxs("div",{className:Rh,children:[x.jsx("div",{className:Ca,style:{marginRight:"-8px"},children:x.jsx(TE,{})}),e.socials&&((n=e.socials)==null?void 0:n.length)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:DE}),x.jsx("div",{className:Ca,style:{marginLeft:"-8px"},children:(r=e.socials)==null?void 0:r.map((o,i)=>x.jsx(Nk,{...o},i))})]})]})]})}function $k({items:e}){const{pathname:t}=Re(),n=Bi({pathname:t,items:e});return x.jsx(j1,{className:ig,children:x.jsx(z1,{children:e.map((r,o)=>r!=null&&r.link?x.jsx(Gl,{active:n==null?void 0:n.includes(r.id),href:r.link,children:r.text},o):x.jsxs(F1,{className:ME,children:[x.jsx(U1,{active:n==null?void 0:n.includes(r.id),children:r.text}),x.jsx(V1,{className:IE,children:x.jsx(Ok,{items:r.items||[]})})]},o))})})}function Ok({items:e}){const{pathname:t}=Re(),n=Bi({pathname:t,items:e});return x.jsx("ul",{children:e==null?void 0:e.map((r,o)=>x.jsx(Gl,{active:n.includes(r.id),href:r.link,children:r.text},o))})}function Ik({items:e}){var s;const[t,n]=p.useState(!1),{pathname:r}=Re(),o=Bi({pathname:r,items:e}),i=e.filter(c=>c.id===o[0])[0],{basePath:a}=Je(),l=a;return x.jsx("div",{className:D(ig,VE),children:i?x.jsxs(Bt.Root,{modal:!0,open:t,onOpenChange:n,children:[x.jsxs(Bt.Trigger,{className:D(og,Yo),children:[i.text,x.jsx(st,{label:"Menu",icon:Sk,size:"11px"})]}),x.jsx(Bt,{className:GE,children:x.jsx(bE,{type:"single",collapsible:!0,style:{display:"flex",flexDirection:"column"},children:e.map((c,d)=>{var u;return c!=null&&c.link?x.jsx(nn,{"data-active":o.includes(c.id),className:Yo,href:c.link,onClick:()=>n(!1),variant:"styleless",children:c.text},d):x.jsxs(CE,{value:d.toString(),children:[x.jsx(PE,{className:D(Yo,UE),"data-active":o.includes(c.id),style:qt({[$E]:`url(${l}/.vocs/icons/chevron-down.svg)`,[OE]:`url(${l}/.vocs/icons/chevron-up.svg)`}),children:c.text}),x.jsx(AE,{className:FE,children:(u=c.items)==null?void 0:u.map((f,h)=>x.jsx(nn,{className:Yo,href:f.link,onClick:()=>n(!1),variant:"styleless",children:f.text},h))})]},d)})})})]}):(s=e[0])!=null&&s.link?x.jsx(nn,{className:Yo,href:e[0].link,variant:"styleless",children:e[0].text}):null})}const Lk={discord:B1,github:H1,telegram:W1,warpcast:K1,x:G1},Dk={discord:"21px",github:"18px",telegram:"21px",warpcast:"18px",x:"16px"};function Nk({icon:e,label:t,link:n,type:r}){return x.jsx("a",{className:RE,href:n,target:"_blank",rel:"noopener noreferrer",children:x.jsx(st,{className:NE,label:t,icon:Lk[e],size:Dk[r]||"18px"})})}function Mk({enableScrollToTop:e}){const{pathname:t}=Re(),{layout:n,showSidebar:r}=Tr(),{frontmatter:o={}}=Sr(),i=Bl(),[a,l]=p.useState(!1),[s,c]=p.useState(!1),d=p.useMemo(()=>{if(!i||n==="minimal")return;const h=Fg({sidebarItems:i.items,pathname:t});return h==null?void 0:h.text},[n,t,i]),u=p.useMemo(()=>{var h;if(!(typeof window>"u"))return(h=document.querySelector(".vocs_Content h1"))==null?void 0:h.textContent},[]),f=d||o.title||u;return x.jsxs("div",{className:LE,children:[x.jsx("div",{className:Sh,children:x.jsx("div",{className:eu,children:r?x.jsxs(Bt.Root,{modal:!0,open:s,onOpenChange:c,children:[x.jsxs(Bt.Trigger,{className:og,children:[x.jsx(st,{label:"Menu",icon:Rk,size:"13px"}),x.jsx("div",{className:zE,children:f})]}),x.jsx(Bt,{className:KE,children:x.jsx(Mg,{onClickItem:()=>c(!1)})})]}):f})}),x.jsxs("div",{className:Sh,children:[e&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:eu,children:x.jsxs("button",{className:Th,onClick:()=>window.scrollTo({behavior:"smooth",top:0}),type:"button",children:["Top",x.jsx(st,{label:"Scroll to top",icon:Tk,size:"10px"})]})}),x.jsx("div",{className:WE})]}),n==="docs"&&x.jsx("div",{className:eu,children:x.jsxs(Bt.Root,{modal:!0,open:a,onOpenChange:l,children:[x.jsxs(Bt.Trigger,{className:Th,children:["On this page",x.jsx(st,{label:"On this page",icon:Ng,size:"10px"})]}),x.jsx(Bt,{className:BE,children:x.jsx(ag,{onClickItem:()=>l(!1),showTitle:!1})})]})})]})]})}function Fg({sidebarItems:e,pathname:t}){const n=t.replace(/(.+)\/$/,"$1");for(const r of e){if((r==null?void 0:r.link)===n)return r;if(r.items){const o=Fg({sidebarItems:r.items,pathname:n});if(o)return o}}}var jk="vocs_SkipLink";const Ug="vocs-content";function zk(){const{pathname:e}=Re();return x.jsx("a",{className:D(jk,Q0),href:`${e}#${Ug}`,children:"Skip to content"})}var Fk="vocs_DocsLayout_content",Uk="vocs_DocsLayout_content_withSidebar",Vk="vocs_DocsLayout_content_withTopNav",Bk="vocs_DocsLayout_gutterLeft",Hk="vocs_DocsLayout_gutterRight",Wk="vocs_DocsLayout_gutterRight_withSidebar",Kk="vocs_DocsLayout_gutterTop",Gk="vocs_DocsLayout_gutterTopCurtain",qk="vocs_DocsLayout_gutterTopCurtain_hidden",Yk="vocs_DocsLayout_gutterTopCurtain_withSidebar",Qk="vocs_DocsLayout_gutterTop_offsetLeftGutter",Zk="vocs_DocsLayout_gutterTop_sticky",Xk="vocs_DocsLayout",Jk="vocs_DocsLayout_sidebar";function Pc({children:e}){const{banner:t,font:n}=Je(),{frontmatter:r={}}=Sr(),{content:o}=r,{layout:i,showOutline:a,showSidebar:l,showTopNav:s}=Tr(),{ref:c,inView:d}=V0({initialInView:!0,rootMargin:"100px 0px 0px 0px"}),[u,f]=hc("banner",!0);return x.jsxs("div",{className:Xk,"data-layout":i,style:qt({[q2]:u?t==null?void 0:t.height:void 0,[R2.default]:n!=null&&n.google?`${n.google}, ${T2.default}`:void 0}),children:[x.jsx(zk,{}),u&&x.jsx(v4,{hide:()=>f(!1)}),l&&x.jsx("div",{className:Bk,children:x.jsx(Mg,{className:Jk})}),s&&x.jsxs(x.Fragment,{children:[x.jsxs("div",{ref:c,className:D(Kk,l&&Qk,(i==="minimal"||i==="landing")&&Zk),children:[x.jsx(_c,{}),x.jsx(Cc,{})]}),x.jsxs("div",{className:D(Gk,l&&Yk,(i==="minimal"||i==="landing")&&qk),children:[x.jsx(_c.Curtain,{}),x.jsx(Cc.Curtain,{enableScrollToTop:!d})]})]}),a&&x.jsx("div",{className:D(Hk,l&&Wk),children:x.jsx(ag,{})}),x.jsxs("div",{id:Ug,className:D(Fk,l&&Uk,s&&Vk),style:qt({[Ns.horizontalPadding]:o==null?void 0:o.horizontalPadding,[Ns.width]:o==null?void 0:o.width,[Ns.verticalPadding]:o==null?void 0:o.verticalPadding}),children:[x.jsx(G0,{children:e}),x.jsx(Z5,{})]}),x.jsx("div",{"data-bottom-observer":!0})]})}const Ac={},Vg=Z.createContext(Ac);function eb(e){const t=Z.useContext(Vg);return Z.useMemo(function(){return typeof e=="function"?e(t):{...t,...e}},[t,e])}function tb(e){let t;return e.disableParentContext?t=typeof e.components=="function"?e.components(Ac):e.components||Ac:t=eb(e.components),Z.createElement(Vg.Provider,{value:t},e.children)}var Bg={exports:{}},nb="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",rb=nb,ob=rb;function Hg(){}function Wg(){}Wg.resetWarningCache=Hg;var ib=function(){function e(r,o,i,a,l,s){if(s!==ob){var c=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 c.name="Invariant Violation",c}}e.isRequired=e;function t(){return 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:Wg,resetWarningCache:Hg};return n.PropTypes=n,n};Bg.exports=ib();var ab=Bg.exports;const Ee=Xn(ab);function lb(e){return e&&typeof e=="object"&&"default"in e?e.default:e}var Kg=p,sb=lb(Kg);function Fh(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ub(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var cb=!!(typeof window<"u"&&window.document&&window.document.createElement);function db(e,t,n){if(typeof e!="function")throw new Error("Expected reducePropsToState to be a function.");if(typeof t!="function")throw new Error("Expected handleStateChangeOnClient to be a function.");if(typeof n<"u"&&typeof n!="function")throw new Error("Expected mapStateOnServer to either be undefined or a function.");function r(o){return o.displayName||o.name||"Component"}return function(i){if(typeof i!="function")throw new Error("Expected WrappedComponent to be a React component.");var a=[],l;function s(){l=e(a.map(function(d){return d.props})),c.canUseDOM?t(l):n&&(l=n(l))}var c=function(d){ub(u,d);function u(){return d.apply(this,arguments)||this}u.peek=function(){return l},u.rewind=function(){if(u.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var y=l;return l=void 0,a=[],y};var f=u.prototype;return f.UNSAFE_componentWillMount=function(){a.push(this),s()},f.componentDidUpdate=function(){s()},f.componentWillUnmount=function(){var y=a.indexOf(this);a.splice(y,1),s()},f.render=function(){return sb.createElement(i,this.props)},u}(Kg.PureComponent);return Fh(c,"displayName","SideEffect("+r(i)+")"),Fh(c,"canUseDOM",cb),c}}var fb=db;const pb=Xn(fb);var hb=typeof Element<"u",mb=typeof Map=="function",vb=typeof Set=="function",gb=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function Ha(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var n,r,o;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(!Ha(e[r],t[r]))return!1;return!0}var i;if(mb&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(i=e.entries();!(r=i.next()).done;)if(!t.has(r.value[0]))return!1;for(i=e.entries();!(r=i.next()).done;)if(!Ha(r.value[1],t.get(r.value[0])))return!1;return!0}if(vb&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(i=e.entries();!(r=i.next()).done;)if(!t.has(r.value[0]))return!1;return!0}if(gb&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(e[r]!==t[r])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf=="function"&&typeof t.valueOf=="function")return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof t.toString=="function")return e.toString()===t.toString();if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[r]))return!1;if(hb&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((o[r]==="_owner"||o[r]==="__v"||o[r]==="__o")&&e.$$typeof)&&!Ha(e[o[r]],t[o[r]]))return!1;return!0}return e!==e&&t!==t}var yb=function(t,n){try{return Ha(t,n)}catch(r){if((r.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw r}};const xb=Xn(yb);/* +*****************************************************/(function(e,t){(function(n,r){e.exports=r()})(Ey,function(){var n=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(c){return typeof c}:function(c){return c&&typeof Symbol=="function"&&c.constructor===Symbol&&c!==Symbol.prototype?"symbol":typeof c},r=function(c,d){if(!(c instanceof d))throw new TypeError("Cannot call a class as a function")},o=function(){function c(d,u){for(var f=0;f1&&arguments[1]!==void 0?arguments[1]:!0,f=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],h=arguments.length>3&&arguments[3]!==void 0?arguments[3]:5e3;r(this,c),this.ctx=d,this.iframes=u,this.exclude=f,this.iframesTimeout=h}return o(c,[{key:"getContexts",value:function(){var u=void 0,f=[];return typeof this.ctx>"u"||!this.ctx?u=[]:NodeList.prototype.isPrototypeOf(this.ctx)?u=Array.prototype.slice.call(this.ctx):Array.isArray(this.ctx)?u=this.ctx:typeof this.ctx=="string"?u=Array.prototype.slice.call(document.querySelectorAll(this.ctx)):u=[this.ctx],u.forEach(function(h){var y=f.filter(function(g){return g.contains(h)}).length>0;f.indexOf(h)===-1&&!y&&f.push(h)}),f}},{key:"getIframeContents",value:function(u,f){var h=arguments.length>2&&arguments[2]!==void 0?arguments[2]:function(){},y=void 0;try{var g=u.contentWindow;if(y=g.document,!g||!y)throw new Error("iframe inaccessible")}catch{h()}y&&f(y)}},{key:"isIframeBlank",value:function(u){var f="about:blank",h=u.getAttribute("src").trim(),y=u.contentWindow.location.href;return y===f&&h!==f&&h}},{key:"observeIframeLoad",value:function(u,f,h){var y=this,g=!1,w=null,m=function v(){if(!g){g=!0,clearTimeout(w);try{y.isIframeBlank(u)||(u.removeEventListener("load",v),y.getIframeContents(u,f,h))}catch{h()}}};u.addEventListener("load",m),w=setTimeout(m,this.iframesTimeout)}},{key:"onIframeReady",value:function(u,f,h){try{u.contentWindow.document.readyState==="complete"?this.isIframeBlank(u)?this.observeIframeLoad(u,f,h):this.getIframeContents(u,f,h):this.observeIframeLoad(u,f,h)}catch{h()}}},{key:"waitForIframes",value:function(u,f){var h=this,y=0;this.forEachIframe(u,function(){return!0},function(g){y++,h.waitForIframes(g.querySelector("html"),function(){--y||f()})},function(g){g||f()})}},{key:"forEachIframe",value:function(u,f,h){var y=this,g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},w=u.querySelectorAll("iframe"),m=w.length,v=0;w=Array.prototype.slice.call(w);var _=function(){--m<=0&&g(v)};m||_(),w.forEach(function(E){c.matches(E,y.exclude)?_():y.onIframeReady(E,function(C){f(E)&&(v++,h(C)),_()},_)})}},{key:"createIterator",value:function(u,f,h){return document.createNodeIterator(u,f,h,!1)}},{key:"createInstanceOnIframe",value:function(u){return new c(u.querySelector("html"),this.iframes)}},{key:"compareNodeIframe",value:function(u,f,h){var y=u.compareDocumentPosition(h),g=Node.DOCUMENT_POSITION_PRECEDING;if(y&g)if(f!==null){var w=f.compareDocumentPosition(h),m=Node.DOCUMENT_POSITION_FOLLOWING;if(w&m)return!0}else return!0;return!1}},{key:"getIteratorNode",value:function(u){var f=u.previousNode(),h=void 0;return f===null?h=u.nextNode():h=u.nextNode()&&u.nextNode(),{prevNode:f,node:h}}},{key:"checkIframeFilter",value:function(u,f,h,y){var g=!1,w=!1;return y.forEach(function(m,v){m.val===h&&(g=v,w=m.handled)}),this.compareNodeIframe(u,f,h)?(g===!1&&!w?y.push({val:h,handled:!0}):g!==!1&&!w&&(y[g].handled=!0),!0):(g===!1&&y.push({val:h,handled:!1}),!1)}},{key:"handleOpenIframes",value:function(u,f,h,y){var g=this;u.forEach(function(w){w.handled||g.getIframeContents(w.val,function(m){g.createInstanceOnIframe(m).forEachNode(f,h,y)})})}},{key:"iterateThroughNodes",value:function(u,f,h,y,g){for(var w=this,m=this.createIterator(f,u,y),v=[],_=[],E=void 0,C=void 0,k=function(){var A=w.getIteratorNode(m);return C=A.prevNode,E=A.node,E};k();)this.iframes&&this.forEachIframe(f,function(P){return w.checkIframeFilter(E,C,P,v)},function(P){w.createInstanceOnIframe(P).forEachNode(u,function(A){return _.push(A)},y)}),_.push(E);_.forEach(function(P){h(P)}),this.iframes&&this.handleOpenIframes(v,u,h,y),g()}},{key:"forEachNode",value:function(u,f,h){var y=this,g=arguments.length>3&&arguments[3]!==void 0?arguments[3]:function(){},w=this.getContexts(),m=w.length;m||g(),w.forEach(function(v){var _=function(){y.iterateThroughNodes(u,v,f,h,function(){--m<=0&&g()})};y.iframes?y.waitForIframes(v,_):_()})}}],[{key:"matches",value:function(u,f){var h=typeof f=="string"?[f]:f,y=u.matches||u.matchesSelector||u.msMatchesSelector||u.mozMatchesSelector||u.oMatchesSelector||u.webkitMatchesSelector;if(y){var g=!1;return h.every(function(w){return y.call(u,w)?(g=!0,!1):!0}),g}else return!1}}]),c}(),l=function(){function c(d){r(this,c),this.ctx=d,this.ie=!1;var u=window.navigator.userAgent;(u.indexOf("MSIE")>-1||u.indexOf("Trident")>-1)&&(this.ie=!0)}return o(c,[{key:"log",value:function(u){var f=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"debug",h=this.opt.log;this.opt.debug&&(typeof h>"u"?"undefined":n(h))==="object"&&typeof h[f]=="function"&&h[f]("mark.js: "+u)}},{key:"escapeStr",value:function(u){return u.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&")}},{key:"createRegExp",value:function(u){return this.opt.wildcards!=="disabled"&&(u=this.setupWildcardsRegExp(u)),u=this.escapeStr(u),Object.keys(this.opt.synonyms).length&&(u=this.createSynonymsRegExp(u)),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(u=this.setupIgnoreJoinersRegExp(u)),this.opt.diacritics&&(u=this.createDiacriticsRegExp(u)),u=this.createMergedBlanksRegExp(u),(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(u=this.createJoinersRegExp(u)),this.opt.wildcards!=="disabled"&&(u=this.createWildcardsRegExp(u)),u=this.createAccuracyRegExp(u),u}},{key:"createSynonymsRegExp",value:function(u){var f=this.opt.synonyms,h=this.opt.caseSensitive?"":"i",y=this.opt.ignoreJoiners||this.opt.ignorePunctuation.length?"\0":"";for(var g in f)if(f.hasOwnProperty(g)){var w=f[g],m=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(g):this.escapeStr(g),v=this.opt.wildcards!=="disabled"?this.setupWildcardsRegExp(w):this.escapeStr(w);m!==""&&v!==""&&(u=u.replace(new RegExp("("+this.escapeStr(m)+"|"+this.escapeStr(v)+")","gm"+h),y+("("+this.processSynomyms(m)+"|")+(this.processSynomyms(v)+")")+y))}return u}},{key:"processSynomyms",value:function(u){return(this.opt.ignoreJoiners||this.opt.ignorePunctuation.length)&&(u=this.setupIgnoreJoinersRegExp(u)),u}},{key:"setupWildcardsRegExp",value:function(u){return u=u.replace(/(?:\\)*\?/g,function(f){return f.charAt(0)==="\\"?"?":""}),u.replace(/(?:\\)*\*/g,function(f){return f.charAt(0)==="\\"?"*":""})}},{key:"createWildcardsRegExp",value:function(u){var f=this.opt.wildcards==="withSpaces";return u.replace(/\u0001/g,f?"[\\S\\s]?":"\\S?").replace(/\u0002/g,f?"[\\S\\s]*?":"\\S*")}},{key:"setupIgnoreJoinersRegExp",value:function(u){return u.replace(/[^(|)\\]/g,function(f,h,y){var g=y.charAt(h+1);return/[(|)\\]/.test(g)||g===""?f:f+"\0"})}},{key:"createJoinersRegExp",value:function(u){var f=[],h=this.opt.ignorePunctuation;return Array.isArray(h)&&h.length&&f.push(this.escapeStr(h.join(""))),this.opt.ignoreJoiners&&f.push("\\u00ad\\u200b\\u200c\\u200d"),f.length?u.split(/\u0000+/).join("["+f.join("")+"]*"):u}},{key:"createDiacriticsRegExp",value:function(u){var f=this.opt.caseSensitive?"":"i",h=this.opt.caseSensitive?["aàáảãạăằắẳẵặâầấẩẫậäåāą","AÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćč","CÇĆČ","dđď","DĐĎ","eèéẻẽẹêềếểễệëěēę","EÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïī","IÌÍỈĨỊÎÏĪ","lł","LŁ","nñňń","NÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøō","OÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rř","RŘ","sšśșş","SŠŚȘŞ","tťțţ","TŤȚŢ","uùúủũụưừứửữựûüůū","UÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿ","YÝỲỶỸỴŸ","zžżź","ZŽŻŹ"]:["aàáảãạăằắẳẵặâầấẩẫậäåāąAÀÁẢÃẠĂẰẮẲẴẶÂẦẤẨẪẬÄÅĀĄ","cçćčCÇĆČ","dđďDĐĎ","eèéẻẽẹêềếểễệëěēęEÈÉẺẼẸÊỀẾỂỄỆËĚĒĘ","iìíỉĩịîïīIÌÍỈĨỊÎÏĪ","lłLŁ","nñňńNÑŇŃ","oòóỏõọôồốổỗộơởỡớờợöøōOÒÓỎÕỌÔỒỐỔỖỘƠỞỠỚỜỢÖØŌ","rřRŘ","sšśșşSŠŚȘŞ","tťțţTŤȚŢ","uùúủũụưừứửữựûüůūUÙÚỦŨỤƯỪỨỬỮỰÛÜŮŪ","yýỳỷỹỵÿYÝỲỶỸỴŸ","zžżźZŽŻŹ"],y=[];return u.split("").forEach(function(g){h.every(function(w){if(w.indexOf(g)!==-1){if(y.indexOf(w)>-1)return!1;u=u.replace(new RegExp("["+w+"]","gm"+f),"["+w+"]"),y.push(w)}return!0})}),u}},{key:"createMergedBlanksRegExp",value:function(u){return u.replace(/[\s]+/gmi,"[\\s]+")}},{key:"createAccuracyRegExp",value:function(u){var f=this,h="!\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~¡¿",y=this.opt.accuracy,g=typeof y=="string"?y:y.value,w=typeof y=="string"?[]:y.limiters,m="";switch(w.forEach(function(v){m+="|"+f.escapeStr(v)}),g){case"partially":default:return"()("+u+")";case"complementary":return m="\\s"+(m||this.escapeStr(h)),"()([^"+m+"]*"+u+"[^"+m+"]*)";case"exactly":return"(^|\\s"+m+")("+u+")(?=$|\\s"+m+")"}}},{key:"getSeparatedKeywords",value:function(u){var f=this,h=[];return u.forEach(function(y){f.opt.separateWordSearch?y.split(" ").forEach(function(g){g.trim()&&h.indexOf(g)===-1&&h.push(g)}):y.trim()&&h.indexOf(y)===-1&&h.push(y)}),{keywords:h.sort(function(y,g){return g.length-y.length}),length:h.length}}},{key:"isNumeric",value:function(u){return Number(parseFloat(u))==u}},{key:"checkRanges",value:function(u){var f=this;if(!Array.isArray(u)||Object.prototype.toString.call(u[0])!=="[object Object]")return this.log("markRanges() will only accept an array of objects"),this.opt.noMatch(u),[];var h=[],y=0;return u.sort(function(g,w){return g.start-w.start}).forEach(function(g){var w=f.callNoMatchOnInvalidRanges(g,y),m=w.start,v=w.end,_=w.valid;_&&(g.start=m,g.length=v-m,h.push(g),y=v)}),h}},{key:"callNoMatchOnInvalidRanges",value:function(u,f){var h=void 0,y=void 0,g=!1;return u&&typeof u.start<"u"?(h=parseInt(u.start,10),y=h+parseInt(u.length,10),this.isNumeric(u.start)&&this.isNumeric(u.length)&&y-f>0&&y-h>0?g=!0:(this.log("Ignoring invalid or overlapping range: "+(""+JSON.stringify(u))),this.opt.noMatch(u))):(this.log("Ignoring invalid range: "+JSON.stringify(u)),this.opt.noMatch(u)),{start:h,end:y,valid:g}}},{key:"checkWhitespaceRanges",value:function(u,f,h){var y=void 0,g=!0,w=h.length,m=f-w,v=parseInt(u.start,10)-m;return v=v>w?w:v,y=v+parseInt(u.length,10),y>w&&(y=w,this.log("End range automatically set to the max value of "+w)),v<0||y-v<0||v>w||y>w?(g=!1,this.log("Invalid range: "+JSON.stringify(u)),this.opt.noMatch(u)):h.substring(v,y).replace(/\s+/g,"")===""&&(g=!1,this.log("Skipping whitespace only range: "+JSON.stringify(u)),this.opt.noMatch(u)),{start:v,end:y,valid:g}}},{key:"getTextNodes",value:function(u){var f=this,h="",y=[];this.iterator.forEachNode(NodeFilter.SHOW_TEXT,function(g){y.push({start:h.length,end:(h+=g.textContent).length,node:g})},function(g){return f.matchesExclude(g.parentNode)?NodeFilter.FILTER_REJECT:NodeFilter.FILTER_ACCEPT},function(){u({value:h,nodes:y})})}},{key:"matchesExclude",value:function(u){return a.matches(u,this.opt.exclude.concat(["script","style","title","head","html"]))}},{key:"wrapRangeInTextNode",value:function(u,f,h){var y=this.opt.element?this.opt.element:"mark",g=u.splitText(f),w=g.splitText(h-f),m=document.createElement(y);return m.setAttribute("data-markjs","true"),this.opt.className&&m.setAttribute("class",this.opt.className),m.textContent=g.textContent,g.parentNode.replaceChild(m,g),w}},{key:"wrapRangeInMappedTextNode",value:function(u,f,h,y,g){var w=this;u.nodes.every(function(m,v){var _=u.nodes[v+1];if(typeof _>"u"||_.start>f){if(!y(m.node))return!1;var E=f-m.start,C=(h>m.end?m.end:h)-m.start,k=u.value.substr(0,m.start),P=u.value.substr(C+m.start);if(m.node=w.wrapRangeInTextNode(m.node,E,C),u.value=k+P,u.nodes.forEach(function(A,S){S>=v&&(u.nodes[S].start>0&&S!==v&&(u.nodes[S].start-=C),u.nodes[S].end-=C)}),h-=C,g(m.node.previousSibling,m.start),h>m.end)f=m.end;else return!1}return!0})}},{key:"wrapMatches",value:function(u,f,h,y,g){var w=this,m=f===0?0:f+1;this.getTextNodes(function(v){v.nodes.forEach(function(_){_=_.node;for(var E=void 0;(E=u.exec(_.textContent))!==null&&E[m]!=="";)if(h(E[m],_)){var C=E.index;if(m!==0)for(var k=1;k{const o=setTimeout(()=>r(e),t||500);return()=>{clearTimeout(o)}},[e,t]),n}function hc(e,t){const[n,r]=p.useState();p.useEffect(()=>{const i=p4(e);r(typeof i>"u"||i===null?typeof t=="function"?t():t:i)},[t,e]);const o=p.useCallback(i=>{r(a=>{let l;typeof i=="function"?l=i(a):l=i;try{localStorage.setItem(e,JSON.stringify(l))}catch{}return l})},[e]);return[n,o]}function p4(e){try{const t=localStorage.getItem(e);return typeof t=="string"?JSON.parse(t):void 0}catch{return}}var h4="vocs_Kbd";function T1(e){return x.jsx("kbd",{...e,className:D(e.className,h4)})}var m4="vocs_KeyboardShortcut_kbdGroup",v4="vocs_KeyboardShortcut";function eo(e){const{description:t,keys:n}=e;return x.jsxs("span",{className:v4,children:[t,x.jsx("span",{className:m4,children:n.map(r=>x.jsx(T1,{children:r},r))})]})}var g4="vocs_SearchDialog_content",mh="vocs_SearchDialog_excerpt",y4="vocs_SearchDialog_overlay",x4="vocs_SearchDialog_result",vh="vocs_SearchDialog_resultIcon",_4="vocs_SearchDialog_resultSelected",w4="vocs_SearchDialog_results",E4="vocs_SearchDialog",k4="vocs_SearchDialog_searchBox",b4="vocs_SearchDialog_searchInput",ka="vocs_SearchDialog_searchInputIcon",C4="vocs_SearchDialog_searchInputIconDesktop",P4="vocs_SearchDialog_searchInputIconMobile",A4="vocs_SearchDialog_searchShortcuts",gh="vocs_SearchDialog_title",S4="vocs_SearchDialog_titleIcon",T4="vocs_SearchDialog_titles";function R1(e){const t=Md(),n=p.useRef(null),r=p.useRef(null),[o,i]=hc("filterText",""),a=f4(o,200),l=A1(),[s,c]=p.useState(-1),[d,u]=p.useState(!1),[f,h]=hc("showDetailView",!0),y=p.useMemo(()=>l?a?(c(0),l.search(a).slice(0,16)):(c(-1),[]):[],[l,a]),g=y.length,w=y[s],m=p.useCallback(()=>{var C,k,P;if(!r.current)return;const v=new Set;for(const A of y)for(const S in A.match)v.add(S);const _=new d4(r.current);_.unmark({done(){_==null||_.markRegExp(R4(v))}});const E=r.current.querySelectorAll(`.${mh}`);for(const A of E)(C=A.querySelector('mark[data-markjs="true"]'))==null||C.scrollIntoView({block:"center"});(P=(k=r.current)==null?void 0:k.firstElementChild)==null||P.scrollIntoView({block:"start"})},[y]);return p.useEffect(()=>{if(!e.open)return;function v(_){var E;switch(_.key){case"ArrowDown":{_.preventDefault(),c(C=>{var A;let k=C+1;k>=g&&(k=0);const P=(A=r.current)==null?void 0:A.children[k];return P==null||P.scrollIntoView({block:"nearest"}),k}),u(!0);break}case"ArrowUp":{_.preventDefault(),c(C=>{var A;let k=C-1;k<0&&(k=g-1);const P=(A=r.current)==null?void 0:A.children[k];return P==null||P.scrollIntoView({block:"nearest"}),k}),u(!0);break}case"Backspace":{if(!_.metaKey)return;_.preventDefault(),i(""),(E=n.current)==null||E.focus();break}case"Enter":{if(_.target instanceof HTMLButtonElement&&_.target.type!=="submit"||!w)return;_.preventDefault(),t(w.href),e.onClose();break}}}return window.addEventListener("keydown",v),()=>{window.removeEventListener("keydown",v)}},[t,g,i,w,e.open,e.onClose]),p.useEffect(()=>{a!==""&&r.current&&m()},[m,a]),x.jsxs(UE,{children:[x.jsx(VE,{className:y4}),x.jsxs(BE,{onOpenAutoFocus:v=>{n.current&&(v.preventDefault(),n.current.focus()),m()},onCloseAutoFocus:()=>{c(0)},className:E4,"aria-describedby":void 0,children:[x.jsx(HE,{className:Q0,children:"Search"}),x.jsxs("form",{className:k4,children:[x.jsx("button",{"aria-label":"Close search dialog",type:"button",onClick:()=>e.onClose(),className:P4,children:x.jsx(o3,{className:ka,height:20,width:20})}),x.jsx(u4,{htmlFor:"search-input",children:x.jsx(Fd,{"aria-label":"Search",className:D(ka,C4),height:20,width:20})}),x.jsx("input",{ref:n,tabIndex:0,className:b4,id:"search-input",onChange:v=>i(v.target.value),placeholder:"Search",type:"search",value:o}),x.jsx("button",{"aria-label":"Toggle detail view",type:"button",onClick:()=>h(v=>!v),children:x.jsx(f3,{className:ka,height:20,width:20})}),x.jsx("button",{"aria-label":"Reset search",type:"button",className:ka,onClick:()=>{var v;i(""),(v=n.current)==null||v.focus()},children:"⌫"})]}),x.jsxs("ul",{className:w4,role:y.length?"listbox":void 0,onMouseMove:()=>u(!1),ref:r,children:[a&&y.length===0&&x.jsxs("li",{children:['No results for "',x.jsx("span",{children:a}),'"']}),y.map((v,_)=>{var E;return x.jsx("li",{role:"option",className:D(x4,_===s&&_4),"aria-selected":_===s,"aria-label":[...v.titles.filter(C=>!!C),v.title].join(" > "),children:x.jsxs(N0,{to:v.href,onClick:C=>{C.metaKey||e.onClose()},onMouseEnter:()=>!d&&c(_),onFocus:()=>c(_),children:[x.jsxs("div",{className:T4,children:[v.isPage?x.jsx(c3,{className:vh}):x.jsx("span",{className:vh,children:"#"}),v.titles.filter(C=>!!C).map(C=>x.jsxs("span",{className:gh,children:[x.jsx("span",{dangerouslySetInnerHTML:{__html:C}}),x.jsx(a3,{className:S4})]},C)),x.jsx("span",{className:gh,children:x.jsx("span",{dangerouslySetInnerHTML:{__html:v.title}})})]}),f&&((E=v.text)==null?void 0:E.trim())&&x.jsx("div",{className:mh,children:x.jsx(G0,{className:g4,children:x.jsx("div",{dangerouslySetInnerHTML:{__html:v.html}})})})]})},v.id)})]}),x.jsxs("div",{className:A4,children:[x.jsx(eo,{description:"Navigate",keys:["↑","↓"]}),x.jsx(eo,{description:"Select",keys:["enter"]}),x.jsx(eo,{description:"Close",keys:["esc"]}),x.jsx(eo,{description:"Reset",keys:["⌘","⌫"]})]})]})]})}function R4(e){return new RegExp([...e].sort((t,n)=>n.length-t.length).map(t=>`(${t.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&").replace(/-/g,"\\x2d")})`).join("|"),"gi")}function $4(){A1();const[e,t]=p.useState(!1);return p.useEffect(()=>{function n(r){const o=document.activeElement instanceof HTMLElement&&(["input","select","textarea"].includes(document.activeElement.tagName.toLowerCase())||document.activeElement.isContentEditable);r.key==="/"&&!e&&!o?(r.preventDefault(),t(!0)):r.metaKey===!0&&r.key==="k"&&(r.preventDefault(),t(i=>!i))}return window.addEventListener("keydown",n),()=>{window.removeEventListener("keydown",n)}},[e]),x.jsxs(x1,{open:e,onOpenChange:t,children:[x.jsx(_1,{asChild:!0,children:x.jsxs("button",{className:a4,type:"button",children:[x.jsx(Fd,{style:{marginTop:2}}),"Search",x.jsx("div",{className:l4,children:x.jsx("div",{style:{background:"currentColor",transform:"rotate(45deg)",width:1.5,borderRadius:2,height:"100%"}})})]})}),x.jsx(R1,{open:e,onClose:()=>t(!1)})]})}var $1="vocs_DesktopTopNav_button",O4="vocs_DesktopTopNav_content",I4="vocs_DesktopTopNav_curtain",yh="vocs_DesktopTopNav_divider",Xs="vocs_DesktopTopNav_group",ba="vocs_DesktopTopNav_hideCompact",mc="vocs_DesktopTopNav_icon",yl="vocs_DesktopTopNav_item",L4="vocs_DesktopTopNav_logo",D4="vocs_DesktopTopNav_logoWrapper",N4="vocs_DesktopTopNav",xh="vocs_DesktopTopNav_section",M4="vocs_DesktopTopNav_withLogo",j4="vocs_Icon",vc="var(--vocs_Icon_size)";function st({className:e,label:t,icon:n,size:r,style:o}){return x.jsx("div",{"aria-label":t,className:D(j4,e),role:"img",style:{...o,...qt({[vc]:r})},children:x.jsx(n,{height:r,width:r})})}var z4="vocs_Logo_logoDark",F4="vocs_Logo_logoLight",Js="vocs_Logo";function U4({className:e}){const{logoUrl:t}=Je();return t?x.jsx(x.Fragment,{children:typeof t=="string"?x.jsx("img",{alt:"Logo",className:D(e,Js),src:t}):x.jsxs(x.Fragment,{children:[x.jsx("img",{alt:"Logo",className:D(e,Js,z4),src:t.dark}),x.jsx("img",{alt:"Logo",className:D(e,Js,F4),src:t.light})]})}):null}var V4="vocs_NavLogo_logoImage",B4="vocs_NavLogo_title";function Wd(){const e=Je();return e.logoUrl?x.jsx(U4,{className:V4}):x.jsx("div",{className:B4,children:e.title})}const H4=p.createContext(void 0);function Wl(e){const t=p.useContext(H4);return e||t||"ltr"}function Kl(e){const t=e+"CollectionProvider",[n,r]=En(t),[o,i]=n(t,{collectionRef:{current:null},itemMap:new Map}),a=h=>{const{scope:y,children:g}=h,w=Z.useRef(null),m=Z.useRef(new Map).current;return Z.createElement(o,{scope:y,itemMap:m,collectionRef:w},g)},l=e+"CollectionSlot",s=Z.forwardRef((h,y)=>{const{scope:g,children:w}=h,m=i(l,g),v=Ue(y,m.collectionRef);return Z.createElement(wo,{ref:v},w)}),c=e+"CollectionItemSlot",d="data-radix-collection-item",u=Z.forwardRef((h,y)=>{const{scope:g,children:w,...m}=h,v=Z.useRef(null),_=Ue(y,v),E=i(c,g);return Z.useEffect(()=>(E.itemMap.set(v,{ref:v,...m}),()=>void E.itemMap.delete(v))),Z.createElement(wo,{[d]:"",ref:_},w)});function f(h){const y=i(e+"CollectionConsumer",h);return Z.useCallback(()=>{const w=y.collectionRef.current;if(!w)return[];const m=Array.from(w.querySelectorAll(`[${d}]`));return Array.from(y.itemMap.values()).sort((E,C)=>m.indexOf(E.ref.current)-m.indexOf(C.ref.current))},[y.collectionRef,y.itemMap])}return[{Provider:a,Slot:s,ItemSlot:u},f,r]}function W4(e){const t=p.useRef({value:e,previous:e});return p.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}const K4=p.forwardRef((e,t)=>p.createElement(fe.span,q({},e,{ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}}))),G4=K4,Hi="NavigationMenu",[Kd,q4,Y4]=Kl(Hi),[gc,Q4,Z4]=Kl(Hi),[Gd,nA]=En(Hi,[Y4,Z4]),[X4,Rr]=Gd(Hi),[J4,rA]=Gd(Hi),e7=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,onValueChange:o,defaultValue:i,delayDuration:a=200,skipDelayDuration:l=300,orientation:s="horizontal",dir:c,...d}=e,[u,f]=p.useState(null),h=Ue(t,S=>f(S)),y=Wl(c),g=p.useRef(0),w=p.useRef(0),m=p.useRef(0),[v,_]=p.useState(!0),[E="",C]=rr({prop:r,onChange:S=>{const O=S!=="",j=l>0;O?(window.clearTimeout(m.current),j&&_(!1)):(window.clearTimeout(m.current),m.current=window.setTimeout(()=>_(!0),l)),o==null||o(S)},defaultProp:i}),k=p.useCallback(()=>{window.clearTimeout(w.current),w.current=window.setTimeout(()=>C(""),150)},[C]),P=p.useCallback(S=>{window.clearTimeout(w.current),C(S)},[C]),A=p.useCallback(S=>{E===S?window.clearTimeout(w.current):g.current=window.setTimeout(()=>{window.clearTimeout(w.current),C(S)},a)},[E,C,a]);return p.useEffect(()=>()=>{window.clearTimeout(g.current),window.clearTimeout(w.current),window.clearTimeout(m.current)},[]),p.createElement(t7,{scope:n,isRootMenu:!0,value:E,dir:y,orientation:s,rootNavigationMenu:u,onTriggerEnter:S=>{window.clearTimeout(g.current),v?A(S):P(S)},onTriggerLeave:()=>{window.clearTimeout(g.current),k()},onContentEnter:()=>window.clearTimeout(w.current),onContentLeave:k,onItemSelect:S=>{C(O=>O===S?"":S)},onItemDismiss:()=>C("")},p.createElement(fe.nav,q({"aria-label":"Main","data-orientation":s,dir:y},d,{ref:h})))}),t7=e=>{const{scope:t,isRootMenu:n,rootNavigationMenu:r,dir:o,orientation:i,children:a,value:l,onItemSelect:s,onItemDismiss:c,onTriggerEnter:d,onTriggerLeave:u,onContentEnter:f,onContentLeave:h}=e,[y,g]=p.useState(null),[w,m]=p.useState(new Map),[v,_]=p.useState(null);return p.createElement(X4,{scope:t,isRootMenu:n,rootNavigationMenu:r,value:l,previousValue:W4(l),baseId:rn(),dir:o,orientation:i,viewport:y,onViewportChange:g,indicatorTrack:v,onIndicatorTrackChange:_,onTriggerEnter:at(d),onTriggerLeave:at(u),onContentEnter:at(f),onContentLeave:at(h),onItemSelect:at(s),onItemDismiss:at(c),onViewportContentChange:p.useCallback((E,C)=>{m(k=>(k.set(E,C),new Map(k)))},[]),onViewportContentRemove:p.useCallback(E=>{m(C=>C.has(E)?(C.delete(E),new Map(C)):C)},[])},p.createElement(Kd.Provider,{scope:t},p.createElement(J4,{scope:t,items:w},a)))},n7="NavigationMenuList",r7=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=Rr(n7,n),i=p.createElement(fe.ul,q({"data-orientation":o.orientation},r,{ref:t}));return p.createElement(fe.div,{style:{position:"relative"},ref:o.onIndicatorTrackChange},p.createElement(Kd.Slot,{scope:n},o.isRootMenu?p.createElement(I1,{asChild:!0},i):i))}),o7="NavigationMenuItem",[i7,O1]=Gd(o7),a7=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,...o}=e,i=rn(),a=r||i||"LEGACY_REACT_AUTO_VALUE",l=p.useRef(null),s=p.useRef(null),c=p.useRef(null),d=p.useRef(()=>{}),u=p.useRef(!1),f=p.useCallback((y="start")=>{if(l.current){d.current();const g=yc(l.current);g.length&&qd(y==="start"?g:g.reverse())}},[]),h=p.useCallback(()=>{if(l.current){const y=yc(l.current);y.length&&(d.current=h7(y))}},[]);return p.createElement(i7,{scope:n,value:a,triggerRef:s,contentRef:l,focusProxyRef:c,wasEscapeCloseRef:u,onEntryKeyDown:f,onFocusProxyEnter:f,onRootContentClose:h,onContentFocusOutside:h},p.createElement(fe.li,q({},o,{ref:t})))}),_h="NavigationMenuTrigger",l7=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,disabled:r,...o}=e,i=Rr(_h,e.__scopeNavigationMenu),a=O1(_h,e.__scopeNavigationMenu),l=p.useRef(null),s=Ue(l,a.triggerRef,t),c=N1(i.baseId,a.value),d=M1(i.baseId,a.value),u=p.useRef(!1),f=p.useRef(!1),h=a.value===i.value;return p.createElement(p.Fragment,null,p.createElement(Kd.ItemSlot,{scope:n,value:a.value},p.createElement(L1,{asChild:!0},p.createElement(fe.button,q({id:c,disabled:r,"data-disabled":r?"":void 0,"data-state":D1(h),"aria-expanded":h,"aria-controls":d},o,{ref:s,onPointerEnter:le(e.onPointerEnter,()=>{f.current=!1,a.wasEscapeCloseRef.current=!1}),onPointerMove:le(e.onPointerMove,xc(()=>{r||f.current||a.wasEscapeCloseRef.current||u.current||(i.onTriggerEnter(a.value),u.current=!0)})),onPointerLeave:le(e.onPointerLeave,xc(()=>{r||(i.onTriggerLeave(),u.current=!1)})),onClick:le(e.onClick,()=>{i.onItemSelect(a.value),f.current=h}),onKeyDown:le(e.onKeyDown,y=>{const w={horizontal:"ArrowDown",vertical:i.dir==="rtl"?"ArrowLeft":"ArrowRight"}[i.orientation];h&&y.key===w&&(a.onEntryKeyDown(),y.preventDefault())})})))),h&&p.createElement(p.Fragment,null,p.createElement(G4,{"aria-hidden":!0,tabIndex:0,ref:a.focusProxyRef,onFocus:y=>{const g=a.contentRef.current,w=y.relatedTarget,m=w===l.current,v=g==null?void 0:g.contains(w);(m||!v)&&a.onFocusProxyEnter(m?"start":"end")}}),i.viewport&&p.createElement("span",{"aria-owns":d})))}),wh="navigationMenu.linkSelect",s7=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,active:r,onSelect:o,...i}=e;return p.createElement(L1,{asChild:!0},p.createElement(fe.a,q({"data-active":r?"":void 0,"aria-current":r?"page":void 0},i,{ref:t,onClick:le(e.onClick,a=>{const l=a.target,s=new CustomEvent(wh,{bubbles:!0,cancelable:!0});if(l.addEventListener(wh,c=>o==null?void 0:o(c),{once:!0}),lc(l,s),!s.defaultPrevented&&!a.metaKey){const c=new CustomEvent(Va,{bubbles:!0,cancelable:!0});lc(l,c)}},{checkForDefaultPrevented:!1})})))}),xl="NavigationMenuContent",u7=p.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Rr(xl,e.__scopeNavigationMenu),i=O1(xl,e.__scopeNavigationMenu),a=Ue(i.contentRef,t),l=i.value===o.value,s={value:i.value,triggerRef:i.triggerRef,focusProxyRef:i.focusProxyRef,wasEscapeCloseRef:i.wasEscapeCloseRef,onContentFocusOutside:i.onContentFocusOutside,onRootContentClose:i.onRootContentClose,...r};return o.viewport?p.createElement(c7,q({forceMount:n},s,{ref:a})):p.createElement(kn,{present:n||l},p.createElement(d7,q({"data-state":D1(l)},s,{ref:a,onPointerEnter:le(e.onPointerEnter,o.onContentEnter),onPointerLeave:le(e.onPointerLeave,xc(o.onContentLeave)),style:{pointerEvents:!l&&o.isRootMenu?"none":void 0,...s.style}})))}),c7=p.forwardRef((e,t)=>{const n=Rr(xl,e.__scopeNavigationMenu),{onViewportContentChange:r,onViewportContentRemove:o}=n;return gn(()=>{r(e.value,{ref:t,...e})},[e,t,r]),gn(()=>()=>o(e.value),[e.value,o]),null}),Va="navigationMenu.rootContentDismiss",d7=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,value:r,triggerRef:o,focusProxyRef:i,wasEscapeCloseRef:a,onRootContentClose:l,onContentFocusOutside:s,...c}=e,d=Rr(xl,n),u=p.useRef(null),f=Ue(u,t),h=N1(d.baseId,r),y=M1(d.baseId,r),g=q4(n),w=p.useRef(null),{onItemDismiss:m}=d;p.useEffect(()=>{const _=u.current;if(d.isRootMenu&&_){const E=()=>{var C;m(),l(),_.contains(document.activeElement)&&((C=o.current)===null||C===void 0||C.focus())};return _.addEventListener(Va,E),()=>_.removeEventListener(Va,E)}},[d.isRootMenu,e.value,o,m,l]);const v=p.useMemo(()=>{const E=g().map(O=>O.value);d.dir==="rtl"&&E.reverse();const C=E.indexOf(d.value),k=E.indexOf(d.previousValue),P=r===d.value,A=k===E.indexOf(r);if(!P&&!A)return w.current;const S=(()=>{if(C!==k){if(P&&k!==-1)return C>k?"from-end":"from-start";if(A&&C!==-1)return C>k?"to-start":"to-end"}return null})();return w.current=S,S},[d.previousValue,d.value,d.dir,g,r]);return p.createElement(I1,{asChild:!0},p.createElement(Ud,q({id:y,"aria-labelledby":h,"data-motion":v,"data-orientation":d.orientation},c,{ref:f,onDismiss:()=>{var _;const E=new Event(Va,{bubbles:!0,cancelable:!0});(_=u.current)===null||_===void 0||_.dispatchEvent(E)},onFocusOutside:le(e.onFocusOutside,_=>{var E;s();const C=_.target;(E=d.rootNavigationMenu)!==null&&E!==void 0&&E.contains(C)&&_.preventDefault()}),onPointerDownOutside:le(e.onPointerDownOutside,_=>{var E;const C=_.target,k=g().some(A=>{var S;return(S=A.ref.current)===null||S===void 0?void 0:S.contains(C)}),P=d.isRootMenu&&((E=d.viewport)===null||E===void 0?void 0:E.contains(C));(k||P||!d.isRootMenu)&&_.preventDefault()}),onKeyDown:le(e.onKeyDown,_=>{const E=_.altKey||_.ctrlKey||_.metaKey;if(_.key==="Tab"&&!E){const P=yc(_.currentTarget),A=document.activeElement,S=P.findIndex(N=>N===A),j=_.shiftKey?P.slice(0,S).reverse():P.slice(S+1,P.length);if(qd(j))_.preventDefault();else{var k;(k=i.current)===null||k===void 0||k.focus()}}}),onEscapeKeyDown:le(e.onEscapeKeyDown,_=>{a.current=!0})})))}),f7="FocusGroup",I1=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=Rr(f7,n);return p.createElement(gc.Provider,{scope:n},p.createElement(gc.Slot,{scope:n},p.createElement(fe.div,q({dir:o.dir},r,{ref:t}))))}),Eh=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"],p7="FocusGroupItem",L1=p.forwardRef((e,t)=>{const{__scopeNavigationMenu:n,...r}=e,o=Q4(n),i=Rr(p7,n);return p.createElement(gc.ItemSlot,{scope:n},p.createElement(fe.button,q({},r,{ref:t,onKeyDown:le(e.onKeyDown,a=>{if(["Home","End",...Eh].includes(a.key)){let s=o().map(u=>u.ref.current);if([i.dir==="rtl"?"ArrowRight":"ArrowLeft","ArrowUp","End"].includes(a.key)&&s.reverse(),Eh.includes(a.key)){const u=s.indexOf(a.currentTarget);s=s.slice(u+1)}setTimeout(()=>qd(s)),a.preventDefault()}})})))});function yc(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:r=>{const o=r.tagName==="INPUT"&&r.type==="hidden";return r.disabled||r.hidden||o?NodeFilter.FILTER_SKIP:r.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function qd(e){const t=document.activeElement;return e.some(n=>n===t?!0:(n.focus(),document.activeElement!==t))}function h7(e){return e.forEach(t=>{t.dataset.tabindex=t.getAttribute("tabindex")||"",t.setAttribute("tabindex","-1")}),()=>{e.forEach(t=>{const n=t.dataset.tabindex;t.setAttribute("tabindex",n)})}}function D1(e){return e?"open":"closed"}function N1(e,t){return`${e}-trigger-${t}`}function M1(e,t){return`${e}-content-${t}`}function xc(e){return t=>t.pointerType==="mouse"?e(t):void 0}const m7=e7,v7=r7,g7=a7,y7=l7,x7=s7,_7=u7;var w7="var(--vocs_NavigationMenu_chevronDownIcon)",E7="vocs_NavigationMenu_content",k7="vocs_NavigationMenu_item",b7="vocs_NavigationMenu_link",C7="vocs_NavigationMenu_list",P7="vocs_NavigationMenu",A7="vocs_NavigationMenu_trigger vocs_NavigationMenu_link";const j1=e=>x.jsx(m7,{...e,className:D(e.className,P7)}),z1=e=>x.jsx(v7,{...e,className:D(e.className,C7)}),Gl=({active:e,children:t,className:n,href:r})=>x.jsx(x7,{asChild:!0,children:x.jsx(nn,{"data-active":e,className:D(n,b7),href:r,variant:"styleless",children:t})}),F1=e=>x.jsx(g7,{...e,className:D(e.className,k7)}),U1=({active:e,className:t,...n})=>{const{basePath:r}=Je(),o=r;return x.jsx(y7,{...n,"data-active":e,className:D(t,A7),style:qt({[w7]:`url(${o}/.vocs/icons/chevron-down.svg)`})})},V1=e=>x.jsx(_7,{...e,className:D(e.className,E7)});function B1(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 127.14 96.36",children:[x.jsx("title",{children:"Discord"}),x.jsx("g",{id:"图层_2","data-name":"图层 2",children:x.jsx("g",{id:"Discord_Logos","data-name":"Discord Logos",children:x.jsx("g",{id:"Discord_Logo_-_Large_-_White","data-name":"Discord Logo - Large - White",children:x.jsx("path",{d:"M107.7,8.07A105.15,105.15,0,0,0,81.47,0a72.06,72.06,0,0,0-3.36,6.83A97.68,97.68,0,0,0,49,6.83,72.37,72.37,0,0,0,45.64,0,105.89,105.89,0,0,0,19.39,8.09C2.79,32.65-1.71,56.6.54,80.21h0A105.73,105.73,0,0,0,32.71,96.36,77.7,77.7,0,0,0,39.6,85.25a68.42,68.42,0,0,1-10.85-5.18c.91-.66,1.8-1.34,2.66-2a75.57,75.57,0,0,0,64.32,0c.87.71,1.76,1.39,2.66,2a68.68,68.68,0,0,1-10.87,5.19,77,77,0,0,0,6.89,11.1A105.25,105.25,0,0,0,126.6,80.22h0C129.24,52.84,122.09,29.11,107.7,8.07ZM42.45,65.69C36.18,65.69,31,60,31,53s5-12.74,11.43-12.74S54,46,53.89,53,48.84,65.69,42.45,65.69Zm42.24,0C78.41,65.69,73.25,60,73.25,53s5-12.74,11.44-12.74S96.23,46,96.12,53,91.08,65.69,84.69,65.69Z",fill:"currentColor"})})})})]})}function H1(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 98 96",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"GitHub"}),x.jsx("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M48.854 0C21.839 0 0 22 0 49.217c0 21.756 13.993 40.172 33.405 46.69 2.427.49 3.316-1.059 3.316-2.362 0-1.141-.08-5.052-.08-9.127-13.59 2.934-16.42-5.867-16.42-5.867-2.184-5.704-5.42-7.17-5.42-7.17-4.448-3.015.324-3.015.324-3.015 4.934.326 7.523 5.052 7.523 5.052 4.367 7.496 11.404 5.378 14.235 4.074.404-3.178 1.699-5.378 3.074-6.6-10.839-1.141-22.243-5.378-22.243-24.283 0-5.378 1.94-9.778 5.014-13.2-.485-1.222-2.184-6.275.486-13.038 0 0 4.125-1.304 13.426 5.052a46.97 46.97 0 0 1 12.214-1.63c4.125 0 8.33.571 12.213 1.63 9.302-6.356 13.427-5.052 13.427-5.052 2.67 6.763.97 11.816.485 13.038 3.155 3.422 5.015 7.822 5.015 13.2 0 18.905-11.404 23.06-22.324 24.283 1.78 1.548 3.316 4.481 3.316 9.126 0 6.6-.08 11.897-.08 13.526 0 1.304.89 2.853 3.316 2.364 19.412-6.52 33.405-24.935 33.405-46.691C97.707 22 75.788 0 48.854 0z",fill:"currentColor"})]})}function S7(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 78 82",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Moon"}),x.jsx("path",{d:"M62.8455 45.9668C63.6268 45.9668 64.2127 45.3809 64.3104 44.5508C65.4334 34.3457 66.0682 33.9551 76.4197 32.3438C77.3963 32.1973 77.9334 31.7578 77.9334 30.8789C77.9334 30.0977 77.3963 29.5605 76.6151 29.4629C66.1658 27.4609 65.4334 27.4609 64.3104 17.2559C64.2127 16.377 63.6268 15.8398 62.8455 15.8398C62.0154 15.8398 61.4783 16.377 61.3807 17.207C60.1111 27.6074 59.6229 28.0957 49.0272 29.4629C48.2947 29.5117 47.7088 30.0977 47.7088 30.8789C47.7088 31.709 48.2947 32.1973 49.0272 32.3438C59.6229 34.3457 60.0623 34.4434 61.3807 44.6484C61.4783 45.3809 62.0154 45.9668 62.8455 45.9668ZM44.535 19.5508C45.0233 19.5508 45.3162 19.2578 45.4139 18.7695C46.6834 12.4707 46.5369 12.373 53.1287 11.0547C53.5682 10.957 53.91 10.7129 53.91 10.1758C53.91 9.63868 53.5682 9.39448 53.1287 9.29688C46.5369 7.97848 46.6834 7.88089 45.4139 1.58199C45.3162 1.09379 45.0233 0.800781 44.535 0.800781C43.9979 0.800781 43.7049 1.09379 43.6072 1.58199C42.3377 7.88089 42.4842 7.97848 35.9412 9.29688C35.4529 9.39448 35.1111 9.63868 35.1111 10.1758C35.1111 10.7129 35.4529 10.957 35.9412 11.0547C42.4842 12.373 42.3865 12.4707 43.6072 18.7695C43.7049 19.2578 43.9979 19.5508 44.535 19.5508Z",fill:"currentColor"}),x.jsx("path",{d:"M34.3298 81.2696C48.49 81.2696 59.9157 74.043 65.0915 61.7872C65.8239 59.9806 65.5798 58.6134 64.7497 57.7833C64.0173 57.0509 62.7478 56.9044 61.3318 57.4903C58.4509 58.6134 54.9353 59.2481 50.6384 59.2481C33.695 59.2481 22.7575 48.6036 22.7575 32.2462C22.7575 27.4122 23.6853 22.6759 24.7595 20.5763C25.5407 18.9161 25.4919 17.5001 24.8083 16.67C24.0271 15.7423 22.6599 15.4005 20.7068 16.1329C8.64624 20.7716 0.345459 33.4181 0.345459 47.8712C0.345459 66.8165 14.5056 81.2696 34.3298 81.2696ZM34.4275 74.5801C18.4607 74.5801 7.03494 62.9591 7.03494 47.3341C7.03494 38.2521 10.9411 30.0489 17.6306 24.629C16.8005 27.0704 16.361 30.6837 16.361 34.1505C16.361 52.8517 29.5446 65.6935 48.8806 65.6935C52.0544 65.6935 54.9841 65.3517 56.4001 64.9122C51.615 70.918 43.4607 74.5801 34.4275 74.5801Z",fill:"currentColor"})]})}function T7(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 84 84",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Sun"}),x.jsx("path",{d:"M41.8675 15.5254C43.9183 15.5254 45.6273 13.7676 45.6273 11.7168V3.80658C45.6273 1.75588 43.9183 0.046875 41.8675 0.046875C39.7679 0.046875 38.0589 1.75588 38.0589 3.80658V11.7168C38.0589 13.7676 39.7679 15.5254 41.8675 15.5254ZM60.3246 23.2402C61.7895 24.7051 64.2309 24.7539 65.7446 23.2402L71.3598 17.6738C72.7758 16.209 72.7758 13.7188 71.3598 12.2539C69.8949 10.7891 67.4535 10.7891 65.9887 12.2539L60.3246 17.918C58.9086 19.3828 58.9086 21.7754 60.3246 23.2402ZM67.9906 41.7461C67.9906 43.7969 69.7485 45.5547 71.7992 45.5547H79.6117C81.7113 45.5547 83.4202 43.7969 83.4202 41.7461C83.4202 39.6953 81.7113 37.9375 79.6117 37.9375H71.7992C69.7485 37.9375 67.9906 39.6953 67.9906 41.7461ZM60.3246 60.3008C58.9086 61.7656 58.9086 64.1582 60.3246 65.623L65.9887 71.2871C67.4535 72.7519 69.8949 72.7031 71.3598 71.2383C72.7758 69.7734 72.7758 67.332 71.3598 65.8672L65.6957 60.3008C64.2309 58.8359 61.7895 58.8359 60.3246 60.3008ZM41.8675 67.9668C39.7679 67.9668 38.0589 69.7246 38.0589 71.7754V79.6855C38.0589 81.7363 39.7679 83.4453 41.8675 83.4453C43.9183 83.4453 45.6273 81.7363 45.6273 79.6855V71.7754C45.6273 69.7246 43.9183 67.9668 41.8675 67.9668ZM23.3617 60.3008C21.8969 58.8359 19.4067 58.8359 17.9418 60.3008L12.3754 65.8184C10.9106 67.2832 10.9106 69.7246 12.3266 71.1894C13.7914 72.6543 16.2328 72.7031 17.6977 71.2383L23.3129 65.623C24.7778 64.1582 24.7778 61.7656 23.3617 60.3008ZM15.6957 41.7461C15.6957 39.6953 13.9867 37.9375 11.8871 37.9375H4.07455C1.97497 37.9375 0.265991 39.6953 0.265991 41.7461C0.265991 43.7969 1.97497 45.5547 4.07455 45.5547H11.8871C13.9867 45.5547 15.6957 43.7969 15.6957 41.7461ZM23.3129 23.2402C24.7778 21.8242 24.7778 19.334 23.3617 17.918L17.7465 12.2539C16.3305 10.8379 13.8403 10.7891 12.4242 12.2539C10.9594 13.7188 10.9594 16.209 12.3754 17.625L17.9418 23.2402C19.4067 24.7051 21.8481 24.7051 23.3129 23.2402Z",fill:"currentColor"}),x.jsx("path",{d:"M41.8675 61.668C52.7073 61.668 61.7405 52.6836 61.7405 41.7461C61.7405 30.8086 52.7073 21.8242 41.8675 21.8242C30.9788 21.8242 21.9456 30.8086 21.9456 41.7461C21.9456 52.6836 30.9788 61.668 41.8675 61.668ZM41.8675 55.0273C34.5921 55.0273 28.5862 48.9727 28.5862 41.7461C28.5862 34.5195 34.5921 28.4648 41.8675 28.4648C49.0941 28.4648 55.0999 34.5195 55.0999 41.7461C55.0999 48.9727 49.0941 55.0273 41.8675 55.0273Z",fill:"currentColor"})]})}function W1(){return x.jsxs("svg",{xmlns:"http://www.w3.org/2000/svg",width:"100%",height:"100%",viewBox:"0 0 50 50",children:[x.jsx("title",{children:"Telegram"}),x.jsx("path",{d:"M25 2c12.703 0 23 10.297 23 23S37.703 48 25 48 2 37.703 2 25 12.297 2 25 2zm7.934 32.375c.423-1.298 2.405-14.234 2.65-16.783.074-.772-.17-1.285-.648-1.514-.578-.278-1.434-.139-2.427.219-1.362.491-18.774 7.884-19.78 8.312-.954.405-1.856.847-1.856 1.487 0 .45.267.703 1.003.966.766.273 2.695.858 3.834 1.172 1.097.303 2.346.04 3.046-.395.742-.461 9.305-6.191 9.92-6.693.614-.502 1.104.141.602.644-.502.502-6.38 6.207-7.155 6.997-.941.959-.273 1.953.358 2.351.721.454 5.906 3.932 6.687 4.49.781.558 1.573.811 2.298.811.725 0 1.107-.955 1.468-2.064z",fill:"currentColor"})]})}function K1(){return x.jsxs("svg",{width:"32",height:"32",viewBox:"0 0 32 32",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Warpcast"}),x.jsx("path",{"fill-rule":"evenodd","clip-rule":"evenodd",d:"M7.92028 31.9901H24.0698C28.4371 31.9901 31.9901 28.4373 31.9901 24.0699V7.92053C31.9901 3.55319 28.4371 0.000137329 24.0698 0.000137329H7.92028C3.55304 0.000137329 0 3.55319 0 7.92053V24.0699C0 28.4373 3.55304 31.9901 7.92028 31.9901ZM19.4134 16.048L20.9908 10.124H25.1383L21.2924 23.2218H17.7062L15.9951 17.1397L14.284 23.2218H10.7055L6.85115 10.124H10.999L12.5915 16.0916L14.1891 10.124H17.8309L19.4134 16.048Z",fill:"currentColor"})]})}function G1(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 1200 1227",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"X"}),x.jsx("path",{d:"M714.163 519.284L1160.89 0H1055.03L667.137 450.887L357.328 0H0L468.492 681.821L0 1226.37H105.866L515.491 750.218L842.672 1226.37H1200L714.137 519.284H714.163ZM569.165 687.828L521.697 619.934L144.011 79.6944H306.615L611.412 515.685L658.88 583.579L1055.08 1150.3H892.476L569.165 687.854V687.828Z",fill:"currentColor"})]})}_c.Curtain=R7;function _c(){var r,o,i,a;const e=Je(),{showLogo:t,showSidebar:n}=Tr();return x.jsxs("div",{className:D(N4,t&&!n&&M4),children:[x.jsx($4,{}),t&&x.jsx("div",{className:D4,children:x.jsx("div",{className:L4,children:x.jsx(qn,{to:"/",style:{alignItems:"center",display:"flex",height:"56px",marginTop:"4px"},children:x.jsx(Wd,{})})})}),x.jsx("div",{className:xh}),x.jsxs("div",{className:xh,children:[(((r=e.topNav)==null?void 0:r.length)||0)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:Xs,children:x.jsx($7,{})}),x.jsx("div",{className:D(yh,ba)})]}),e.socials&&((o=e.socials)==null?void 0:o.length)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:D(Xs,ba),style:{marginLeft:"-8px",marginRight:"-8px"},children:e.socials.map((l,s)=>x.jsx("div",{className:yl,children:x.jsx(N7,{...l})},s))}),!((i=e.theme)!=null&&i.colorScheme)&&x.jsx("div",{className:D(yh,ba)})]}),!((a=e.theme)!=null&&a.colorScheme)&&x.jsx("div",{className:D(Xs,ba),style:{marginLeft:"-8px",marginRight:"-8px"},children:x.jsx("div",{className:yl,children:x.jsx(I7,{})})})]})]})}function R7(){return x.jsx("div",{className:I4})}function $7(){const{topNav:e}=Je();if(!e)return null;const{pathname:t}=Re(),n=Bi({pathname:t,items:e});return x.jsx(j1,{delayDuration:0,children:x.jsx(z1,{children:e.map((r,o)=>r.link?x.jsx(Gl,{active:n.includes(r.id),className:yl,href:r.link,children:r.text},o):r.items?x.jsxs(F1,{className:yl,children:[x.jsx(U1,{active:n.includes(r.id),children:r.text}),x.jsx(V1,{className:O4,children:x.jsx(O7,{items:r.items})})]},o):null)})})}function O7({items:e}){const{pathname:t}=Re(),n=Bi({pathname:t,items:e});return x.jsx("ul",{children:e==null?void 0:e.map((r,o)=>x.jsx(Gl,{active:n.includes(r.id),href:r.link,children:r.text},o))})}function I7(){const{toggle:e}=y3();return x.jsxs("button",{className:$1,onClick:e,type:"button",children:[x.jsx(st,{className:D(mc,x3),size:"20px",label:"Light",icon:T7}),x.jsx(st,{className:D(mc,_3),size:"20px",label:"Dark",icon:S7,style:{marginTop:"-2px"}})]})}const L7={discord:B1,github:H1,telegram:W1,warpcast:K1,x:G1},D7={discord:"23px",github:"20px",telegram:"21px",warpcast:"20px",x:"18px"};function N7({icon:e,label:t,link:n}){return x.jsx("a",{className:$1,href:n,target:"_blank",rel:"noopener noreferrer",children:x.jsx(st,{className:mc,label:t,icon:L7[e],size:D7[e]||"20px"})})}function M7(){return x.jsx("div",{})}const j7=({children:e})=>e;function z7(){const e=Sr(),t=Je();return p.useMemo(()=>{const{pattern:n="",text:r="Edit page"}=t.editLink??{};let o="";return typeof n=="function"?o="":e.filePath&&(o=n.replace(/:path/g,e.filePath)),{url:o,text:r}},[t.editLink,e.filePath])}function q1(){const[e,t]=p.useState(!1);return p.useEffect(()=>{t(!0)},[]),e}var F7="vocs_Footer_container",U7="vocs_Footer_editLink",V7="vocs_Footer_lastUpdated",B7="vocs_Footer_navigation",kh="vocs_Footer_navigationIcon",H7="vocs_Footer_navigationIcon_left",W7="vocs_Footer_navigationIcon_right",bh="vocs_Footer_navigationItem",K7="vocs_Footer_navigationItem_left",G7="vocs_Footer_navigationItem_right",Ch="vocs_Footer_navigationText",Ph="vocs_Footer_navigationTextInner",q7="vocs_Footer";function Y7(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 72 60",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Arrow Left"}),x.jsx("path",{d:"M0.325684 29.7461C0.325684 30.8203 0.813963 31.8457 1.69286 32.6758L26.8882 57.8223C27.7671 58.6524 28.7437 59.043 29.7691 59.043C31.9175 59.043 33.5777 57.4317 33.5777 55.2344C33.5777 54.209 33.2359 53.1836 32.5035 52.5L25.7652 45.5176L9.26126 30.6738L8.38236 32.7734L21.3706 33.7012H67.4644C69.7593 33.7012 71.3706 32.041 71.3706 29.7461C71.3706 27.4512 69.7593 25.791 67.4644 25.791H21.3706L8.38236 26.7188L9.26126 28.8672L25.7652 13.9746L32.5035 6.99221C33.2359 6.30861 33.5777 5.28322 33.5777 4.25782C33.5777 2.06052 31.9175 0.449219 29.7691 0.449219C28.7437 0.449219 27.7671 0.839814 26.8882 1.66991L1.69286 26.8164C0.813963 27.6465 0.325684 28.6719 0.325684 29.7461Z",fill:"currentColor"})]})}function Q7(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 72 60",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Arrow Right"}),x.jsx("path",{d:"M71.3706 29.7461C71.3706 28.6719 70.8824 27.6465 70.0035 26.8164L44.8081 1.66991C43.9292 0.839814 42.9527 0.449219 41.9273 0.449219C39.7789 0.449219 38.1187 2.06052 38.1187 4.25782C38.1187 5.28322 38.4605 6.30861 39.1929 6.99221L45.9312 13.9746L62.4351 28.8672L63.314 26.7188L50.3257 25.791H4.23196C1.93706 25.791 0.325684 27.4512 0.325684 29.7461C0.325684 32.041 1.93706 33.7012 4.23196 33.7012H50.3257L63.314 32.7734L62.4351 30.6738L45.9312 45.5176L39.1929 52.5C38.4605 53.1836 38.1187 54.209 38.1187 55.2344C38.1187 57.4317 39.7789 59.043 41.9273 59.043C42.9527 59.043 43.9292 58.6524 44.8081 57.8223L70.0035 32.6758C70.8824 31.8457 71.3706 30.8203 71.3706 29.7461Z",fill:"currentColor"})]})}function Z7(){const{layout:e}=Tr(),t=q1(),n=Sr(),r=p.useMemo(()=>n.lastUpdatedAt?new Date(n.lastUpdatedAt):void 0,[n.lastUpdatedAt]),o=p.useMemo(()=>r==null?void 0:r.toISOString(),[r]);return x.jsxs("footer",{className:q7,children:[e==="docs"&&x.jsxs(x.Fragment,{children:[x.jsxs("div",{className:F7,children:[x.jsx(X7,{}),t&&n.lastUpdatedAt&&x.jsxs("div",{className:V7,children:["Last updated:"," ",x.jsx("time",{dateTime:o,children:new Intl.DateTimeFormat(void 0,{dateStyle:"short",timeStyle:"short"}).format(r)})]})]}),x.jsx(J7,{})]}),x.jsx(M7,{})]})}function X7(){const e=z7();return e.url?x.jsx("div",{children:x.jsxs(nn,{className:U7,href:e.url,children:[x.jsx(m3,{})," ",e.text]})}):null}function J7(){const e=q1(),t=Bl(),{pathname:n}=Re(),r=p.useMemo(()=>Y1(t.items||[]).filter(s=>s.link),[t]),o=p.useMemo(()=>r.findIndex(s=>s.link===n),[r,n]),[i,a]=p.useMemo(()=>o<0?[]:o===0?[null,r[o+1]]:o===r.length-1?[r[o-1],null]:[r[o-1],r[o+1]],[o,r]),l=Md();return p.useEffect(()=>{let s=o,c=!1;const d=f=>{if(f.code==="ShiftLeft"&&(c=!0),c){const h=r[s+1],y=r[s-1];f.code==="ArrowRight"&&(h!=null&&h.link)&&(l(h.link),s++),f.code==="ArrowLeft"&&(y!=null&&y.link)&&(l(y.link),s--)}},u=f=>{f.code==="ShiftLeft"&&(c=!1)};return window.addEventListener("keydown",d),window.addEventListener("keyup",u),()=>{window.removeEventListener("keydown",d),window.removeEventListener("keyup",u)}},[]),e?x.jsxs("div",{className:B7,children:[i?x.jsxs(nn,{className:D(bh,K7),href:i.link,variant:"styleless",children:[x.jsxs("div",{className:Ch,children:[x.jsx("div",{className:D(kh,H7),style:qt({[vc]:"0.75em"}),children:x.jsx(st,{label:"Previous",icon:Y7})}),x.jsx("div",{className:Ph,children:i.text})]}),x.jsx(eo,{description:"Previous",keys:["shift","←"]})]}):x.jsx("div",{}),a?x.jsxs(nn,{className:D(bh,G7),href:a.link,variant:"styleless",children:[x.jsxs("div",{className:Ch,children:[x.jsx("div",{className:Ph,style:{textAlign:"right"},children:a.text}),x.jsx("div",{className:D(kh,W7),style:qt({[vc]:"0.75em"}),children:x.jsx(st,{label:"Next",icon:Q7})})]}),x.jsx(eo,{description:"Next",keys:["shift","→"]})]}):x.jsx("div",{})]}):null}function Y1(e){const t=[];for(const n of e){if(n.items){t.push(...Y1(n.items));continue}t.push(n)}return t}const Q1="Collapsible",[e6,Z1]=En(Q1),[t6,Yd]=e6(Q1),n6=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,open:r,defaultOpen:o,disabled:i,onOpenChange:a,...l}=e,[s=!1,c]=rr({prop:r,defaultProp:o,onChange:a});return p.createElement(t6,{scope:n,disabled:i,contentId:rn(),open:s,onOpenToggle:p.useCallback(()=>c(d=>!d),[c])},p.createElement(fe.div,q({"data-state":Qd(s),"data-disabled":i?"":void 0},l,{ref:t})))}),r6="CollapsibleTrigger",o6=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,...r}=e,o=Yd(r6,n);return p.createElement(fe.button,q({type:"button","aria-controls":o.contentId,"aria-expanded":o.open||!1,"data-state":Qd(o.open),"data-disabled":o.disabled?"":void 0,disabled:o.disabled},r,{ref:t,onClick:le(e.onClick,o.onOpenToggle)}))}),X1="CollapsibleContent",i6=p.forwardRef((e,t)=>{const{forceMount:n,...r}=e,o=Yd(X1,e.__scopeCollapsible);return p.createElement(kn,{present:n||o.open},({present:i})=>p.createElement(a6,q({},r,{ref:t,present:i})))}),a6=p.forwardRef((e,t)=>{const{__scopeCollapsible:n,present:r,children:o,...i}=e,a=Yd(X1,n),[l,s]=p.useState(r),c=p.useRef(null),d=Ue(t,c),u=p.useRef(0),f=u.current,h=p.useRef(0),y=h.current,g=a.open||l,w=p.useRef(g),m=p.useRef();return p.useEffect(()=>{const v=requestAnimationFrame(()=>w.current=!1);return()=>cancelAnimationFrame(v)},[]),gn(()=>{const v=c.current;if(v){m.current=m.current||{transitionDuration:v.style.transitionDuration,animationName:v.style.animationName},v.style.transitionDuration="0s",v.style.animationName="none";const _=v.getBoundingClientRect();u.current=_.height,h.current=_.width,w.current||(v.style.transitionDuration=m.current.transitionDuration,v.style.animationName=m.current.animationName),s(r)}},[a.open,r]),p.createElement(fe.div,q({"data-state":Qd(a.open),"data-disabled":a.disabled?"":void 0,id:a.contentId,hidden:!g},i,{ref:d,style:{"--radix-collapsible-content-height":f?`${f}px`:void 0,"--radix-collapsible-content-width":y?`${y}px`:void 0,...e.style}}),g&&o)});function Qd(e){return e?"open":"closed"}const l6=n6,s6=o6,u6=i6,$r="Accordion",c6=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[Zd,d6,f6]=Kl($r),[ql,oA]=En($r,[f6,Z1]),Xd=Z1(),J1=Z.forwardRef((e,t)=>{const{type:n,...r}=e,o=r,i=r;return Z.createElement(Zd.Provider,{scope:e.__scopeAccordion},n==="multiple"?Z.createElement(v6,q({},i,{ref:t})):Z.createElement(m6,q({},o,{ref:t})))});J1.propTypes={type(e){const t=e.value||e.defaultValue;return e.type&&!["single","multiple"].includes(e.type)?new Error("Invalid prop `type` supplied to `Accordion`. Expected one of `single | multiple`."):e.type==="multiple"&&typeof t=="string"?new Error("Invalid prop `type` supplied to `Accordion`. Expected `single` when `defaultValue` or `value` is type `string`."):e.type==="single"&&Array.isArray(t)?new Error("Invalid prop `type` supplied to `Accordion`. Expected `multiple` when `defaultValue` or `value` is type `string[]`."):null}};const[eg,p6]=ql($r),[tg,h6]=ql($r,{collapsible:!1}),m6=Z.forwardRef((e,t)=>{const{value:n,defaultValue:r,onValueChange:o=()=>{},collapsible:i=!1,...a}=e,[l,s]=rr({prop:n,defaultProp:r,onChange:o});return Z.createElement(eg,{scope:e.__scopeAccordion,value:l?[l]:[],onItemOpen:s,onItemClose:Z.useCallback(()=>i&&s(""),[i,s])},Z.createElement(tg,{scope:e.__scopeAccordion,collapsible:i},Z.createElement(ng,q({},a,{ref:t}))))}),v6=Z.forwardRef((e,t)=>{const{value:n,defaultValue:r,onValueChange:o=()=>{},...i}=e,[a=[],l]=rr({prop:n,defaultProp:r,onChange:o}),s=Z.useCallback(d=>l((u=[])=>[...u,d]),[l]),c=Z.useCallback(d=>l((u=[])=>u.filter(f=>f!==d)),[l]);return Z.createElement(eg,{scope:e.__scopeAccordion,value:a,onItemOpen:s,onItemClose:c},Z.createElement(tg,{scope:e.__scopeAccordion,collapsible:!0},Z.createElement(ng,q({},i,{ref:t}))))}),[g6,Jd]=ql($r),ng=Z.forwardRef((e,t)=>{const{__scopeAccordion:n,disabled:r,dir:o,orientation:i="vertical",...a}=e,l=Z.useRef(null),s=Ue(l,t),c=d6(n),u=Wl(o)==="ltr",f=le(e.onKeyDown,h=>{var y;if(!c6.includes(h.key))return;const g=h.target,w=c().filter(S=>{var O;return!((O=S.ref.current)!==null&&O!==void 0&&O.disabled)}),m=w.findIndex(S=>S.ref.current===g),v=w.length;if(m===-1)return;h.preventDefault();let _=m;const E=0,C=v-1,k=()=>{_=m+1,_>C&&(_=E)},P=()=>{_=m-1,_{const{__scopeAccordion:n,value:r,...o}=e,i=Jd(wc,n),a=p6(wc,n),l=Xd(n),s=rn(),c=r&&a.value.includes(r)||!1,d=i.disabled||e.disabled;return Z.createElement(y6,{scope:n,open:c,disabled:d,triggerId:s},Z.createElement(l6,q({"data-orientation":i.orientation,"data-state":k6(c)},l,o,{ref:t,disabled:d,open:c,onOpenChange:u=>{u?a.onItemOpen(r):a.onItemClose(r)}})))}),Ah="AccordionTrigger",_6=Z.forwardRef((e,t)=>{const{__scopeAccordion:n,...r}=e,o=Jd($r,n),i=rg(Ah,n),a=h6(Ah,n),l=Xd(n);return Z.createElement(Zd.ItemSlot,{scope:n},Z.createElement(s6,q({"aria-disabled":i.open&&!a.collapsible||void 0,"data-orientation":o.orientation,id:i.triggerId},l,r,{ref:t})))}),w6="AccordionContent",E6=Z.forwardRef((e,t)=>{const{__scopeAccordion:n,...r}=e,o=Jd($r,n),i=rg(w6,n),a=Xd(n);return Z.createElement(u6,q({role:"region","aria-labelledby":i.triggerId,"data-orientation":o.orientation},a,r,{ref:t,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}}))});function k6(e){return e?"open":"closed"}const b6=J1,C6=x6,P6=_6,A6=E6;var S6="vocs_MobileSearch_searchButton";function T6(){const[e,t]=p.useState(!1);return x.jsxs(x1,{open:e,onOpenChange:t,children:[x.jsx(_1,{asChild:!0,children:x.jsx("button",{className:S6,type:"button","aria-label":"Search",children:x.jsx(Fd,{height:21,width:21})})}),x.jsx(R1,{open:e,onClose:()=>t(!1)})]})}var R6="vocs_MobileTopNav_button",$6="var(--vocs_MobileTopNav_chevronDownIcon)",O6="var(--vocs_MobileTopNav_chevronUpIcon)",I6="vocs_MobileTopNav_content",L6="vocs_MobileTopNav_curtain",Sh="vocs_MobileTopNav_curtainGroup",eu="vocs_MobileTopNav_curtainItem",D6="vocs_MobileTopNav_divider",Ca="vocs_MobileTopNav_group",N6="vocs_MobileTopNav_icon",M6="vocs_MobileTopNav_item",j6="vocs_MobileTopNav_logo",z6="vocs_MobileTopNav_menuTitle",og="vocs_MobileTopNav_menuTrigger",ig="vocs_MobileTopNav_navigation",F6="vocs_MobileTopNav_navigationContent",Yo="vocs_MobileTopNav_navigationItem",U6="vocs_MobileTopNav_trigger",V6="vocs_MobileTopNav_navigation_compact",B6="vocs_MobileTopNav_outlinePopover",Th="vocs_MobileTopNav_outlineTrigger",H6="vocs_MobileTopNav",Rh="vocs_MobileTopNav_section",W6="vocs_MobileTopNav_separator",K6="vocs_MobileTopNav_sidebarPopover",G6="vocs_MobileTopNav_topNavPopover";function q6(e,t){let n=!1;return()=>{n=!0,setTimeout(()=>{n&&e(),n=!1},t)}}var Y6="vocs_Outline_heading",Q6="vocs_Outline_item",Z6="vocs_Outline_items",X6="vocs_Outline_link",J6="vocs_Outline_nav",e5="vocs_Outline";function ag({minLevel:e=2,maxLevel:t=3,highlightActive:n=!0,onClickItem:r,showTitle:o=!0}={}){const{outlineFooter:i}=Je(),{showOutline:a}=Tr(),l=typeof a=="number"?e+a-1:t,s=p.useRef(!0),{pathname:c,hash:d}=Re(),[u,f]=p.useState([]);p.useEffect(()=>{if(typeof window>"u")return;const m=Array.from(document.querySelectorAll(`.${B0}`));f(m)},[c]);const h=p.useMemo(()=>u?u.map(m=>{const v=m.querySelector(`.${H0}`);if(!v)return null;const _=v.getBoundingClientRect(),E=v.id,C=Number(m.tagName[1]),k=m.textContent,P=window.scrollY+_.top;return Cl?null:{id:E,level:C,slugTargetElement:v,text:k,topOffset:P}}).filter(Boolean):[],[u,l,e]),[y,g]=p.useState(d.replace("#",""));if(p.useEffect(()=>{if(typeof window>"u")return;const m=new IntersectionObserver(([v])=>{var E;if(!s.current)return;const _=v.target.id;if(v.isIntersecting)g(_);else{if(!(v.target.getBoundingClientRect().top>0))return;const P=h.findIndex(S=>S.id===y),A=(E=h[P-1])==null?void 0:E.id;g(A)}},{rootMargin:"0px 0px -95% 0px"});for(const v of h)m.observe(v.slugTargetElement);return()=>m.disconnect()},[y,h]),p.useEffect(()=>{if(typeof window>"u")return;const m=new IntersectionObserver(([v])=>{var E;if(!s.current)return;const _=(E=h[h.length-1])==null?void 0:E.id;v.isIntersecting?g(_):y===_&&g(h[h.length-2].id)});return m.observe(document.querySelector("[data-bottom-observer]")),()=>m.disconnect()},[y,h]),p.useEffect(()=>{if(typeof window>"u")return;const m=q6(()=>{var v,_,E;if(s.current){if(window.scrollY===0){g((v=h[0])==null?void 0:v.id);return}if(window.scrollY+document.documentElement.clientHeight>=document.documentElement.scrollHeight){g((_=h[h.length-1])==null?void 0:_.id);return}for(let C=0;Cwindow.removeEventListener("scroll",m)},[h]),h.length===0)return null;const w=h.filter(m=>m.level===e);return x.jsxs("aside",{className:e5,children:[x.jsxs("nav",{className:J6,children:[o&&x.jsx("h2",{className:Y6,children:"On this page"}),x.jsx(lg,{activeId:n?y:null,items:h,onClickItem:()=>{r==null||r(),s.current=!1,setTimeout(()=>{s.current=!0},500)},levelItems:w,setActiveId:g})]}),vl(i)]})}function lg({activeId:e,items:t,levelItems:n,onClickItem:r,setActiveId:o}){const{pathname:i}=Re();return x.jsx("ul",{className:Z6,children:n.map(({id:a,level:l,text:s})=>{const c=`#${a}`,d=e===a,u=(()=>{var w;const h=t.findIndex(m=>m.id===a)+1,y=(w=t[h])==null?void 0:w.level;if(y<=l)return null;const g=[];for(let m=h;m{r==null||r(),o(a)},className:X6,children:s})}),u&&x.jsx(lg,{activeId:e,levelItems:u,items:t,onClickItem:r,setActiveId:o})]},a)})})}const t5=["top","right","bottom","left"],Yn=Math.min,Et=Math.max,_l=Math.round,Pa=Math.floor,Qn=e=>({x:e,y:e}),n5={left:"right",right:"left",bottom:"top",top:"bottom"},r5={start:"end",end:"start"};function Ec(e,t,n){return Et(e,Yn(t,n))}function yn(e,t){return typeof e=="function"?e(t):e}function xn(e){return e.split("-")[0]}function Ro(e){return e.split("-")[1]}function ef(e){return e==="x"?"y":"x"}function tf(e){return e==="y"?"height":"width"}function $o(e){return["top","bottom"].includes(xn(e))?"y":"x"}function nf(e){return ef($o(e))}function o5(e,t,n){n===void 0&&(n=!1);const r=Ro(e),o=nf(e),i=tf(o);let a=o==="x"?r===(n?"end":"start")?"right":"left":r==="start"?"bottom":"top";return t.reference[i]>t.floating[i]&&(a=wl(a)),[a,wl(a)]}function i5(e){const t=wl(e);return[kc(e),t,kc(t)]}function kc(e){return e.replace(/start|end/g,t=>r5[t])}function a5(e,t,n){const r=["left","right"],o=["right","left"],i=["top","bottom"],a=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?i:a;default:return[]}}function l5(e,t,n,r){const o=Ro(e);let i=a5(xn(e),n==="start",r);return o&&(i=i.map(a=>a+"-"+o),t&&(i=i.concat(i.map(kc)))),i}function wl(e){return e.replace(/left|right|bottom|top/g,t=>n5[t])}function s5(e){return{top:0,right:0,bottom:0,left:0,...e}}function sg(e){return typeof e!="number"?s5(e):{top:e,right:e,bottom:e,left:e}}function El(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}function $h(e,t,n){let{reference:r,floating:o}=e;const i=$o(t),a=nf(t),l=tf(a),s=xn(t),c=i==="y",d=r.x+r.width/2-o.width/2,u=r.y+r.height/2-o.height/2,f=r[l]/2-o[l]/2;let h;switch(s){case"top":h={x:d,y:r.y-o.height};break;case"bottom":h={x:d,y:r.y+r.height};break;case"right":h={x:r.x+r.width,y:u};break;case"left":h={x:r.x-o.width,y:u};break;default:h={x:r.x,y:r.y}}switch(Ro(t)){case"start":h[a]-=f*(n&&c?-1:1);break;case"end":h[a]+=f*(n&&c?-1:1);break}return h}const u5=async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:a}=n,l=i.filter(Boolean),s=await(a.isRTL==null?void 0:a.isRTL(t));let c=await a.getElementRects({reference:e,floating:t,strategy:o}),{x:d,y:u}=$h(c,r,s),f=r,h={},y=0;for(let g=0;g({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:i,platform:a,elements:l,middlewareData:s}=t,{element:c,padding:d=0}=yn(e,t)||{};if(c==null)return{};const u=sg(d),f={x:n,y:r},h=nf(o),y=tf(h),g=await a.getDimensions(c),w=h==="y",m=w?"top":"left",v=w?"bottom":"right",_=w?"clientHeight":"clientWidth",E=i.reference[y]+i.reference[h]-f[h]-i.floating[y],C=f[h]-i.reference[h],k=await(a.getOffsetParent==null?void 0:a.getOffsetParent(c));let P=k?k[_]:0;(!P||!await(a.isElement==null?void 0:a.isElement(k)))&&(P=l.floating[_]||i.floating[y]);const A=E/2-C/2,S=P/2-g[y]/2-1,O=Yn(u[m],S),j=Yn(u[v],S),N=O,z=P-g[y]-j,$=P/2-g[y]/2+A,U=Ec(N,$,z),W=!s.arrow&&Ro(o)!=null&&$!==U&&i.reference[y]/2-($N<=0)){var S,O;const N=(((S=i.flip)==null?void 0:S.index)||0)+1,z=C[N];if(z)return{data:{index:N,overflows:A},reset:{placement:z}};let $=(O=A.filter(U=>U.overflows[0]<=0).sort((U,W)=>U.overflows[1]-W.overflows[1])[0])==null?void 0:O.placement;if(!$)switch(h){case"bestFit":{var j;const U=(j=A.map(W=>[W.placement,W.overflows.filter(B=>B>0).reduce((B,L)=>B+L,0)]).sort((W,B)=>W[1]-B[1])[0])==null?void 0:j[0];U&&($=U);break}case"initialPlacement":$=l;break}if(o!==$)return{reset:{placement:$}}}return{}}}};function Oh(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function Ih(e){return t5.some(t=>e[t]>=0)}const f5=function(e){return e===void 0&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=yn(e,t);switch(r){case"referenceHidden":{const i=await Ii(t,{...o,elementContext:"reference"}),a=Oh(i,n.reference);return{data:{referenceHiddenOffsets:a,referenceHidden:Ih(a)}}}case"escaped":{const i=await Ii(t,{...o,altBoundary:!0}),a=Oh(i,n.floating);return{data:{escapedOffsets:a,escaped:Ih(a)}}}default:return{}}}}};async function p5(e,t){const{placement:n,platform:r,elements:o}=e,i=await(r.isRTL==null?void 0:r.isRTL(o.floating)),a=xn(n),l=Ro(n),s=$o(n)==="y",c=["left","top"].includes(a)?-1:1,d=i&&s?-1:1,u=yn(t,e);let{mainAxis:f,crossAxis:h,alignmentAxis:y}=typeof u=="number"?{mainAxis:u,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...u};return l&&typeof y=="number"&&(h=l==="end"?y*-1:y),s?{x:h*d,y:f*c}:{x:f*c,y:h*d}}const ug=function(e){return e===void 0&&(e=0),{name:"offset",options:e,async fn(t){var n,r;const{x:o,y:i,placement:a,middlewareData:l}=t,s=await p5(t,e);return a===((n=l.offset)==null?void 0:n.placement)&&(r=l.arrow)!=null&&r.alignmentOffset?{}:{x:o+s.x,y:i+s.y,data:{...s,placement:a}}}}},h5=function(e){return e===void 0&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:i=!0,crossAxis:a=!1,limiter:l={fn:w=>{let{x:m,y:v}=w;return{x:m,y:v}}},...s}=yn(e,t),c={x:n,y:r},d=await Ii(t,s),u=$o(xn(o)),f=ef(u);let h=c[f],y=c[u];if(i){const w=f==="y"?"top":"left",m=f==="y"?"bottom":"right",v=h+d[w],_=h-d[m];h=Ec(v,h,_)}if(a){const w=u==="y"?"top":"left",m=u==="y"?"bottom":"right",v=y+d[w],_=y-d[m];y=Ec(v,y,_)}const g=l.fn({...t,[f]:h,[u]:y});return{...g,data:{x:g.x-n,y:g.y-r}}}}},m5=function(e){return e===void 0&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:i,middlewareData:a}=t,{offset:l=0,mainAxis:s=!0,crossAxis:c=!0}=yn(e,t),d={x:n,y:r},u=$o(o),f=ef(u);let h=d[f],y=d[u];const g=yn(l,t),w=typeof g=="number"?{mainAxis:g,crossAxis:0}:{mainAxis:0,crossAxis:0,...g};if(s){const _=f==="y"?"height":"width",E=i.reference[f]-i.floating[_]+w.mainAxis,C=i.reference[f]+i.reference[_]-w.mainAxis;hC&&(h=C)}if(c){var m,v;const _=f==="y"?"width":"height",E=["top","left"].includes(xn(o)),C=i.reference[u]-i.floating[_]+(E&&((m=a.offset)==null?void 0:m[u])||0)+(E?0:w.crossAxis),k=i.reference[u]+i.reference[_]+(E?0:((v=a.offset)==null?void 0:v[u])||0)-(E?w.crossAxis:0);yk&&(y=k)}return{[f]:h,[u]:y}}}},v5=function(e){return e===void 0&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:i}=t,{apply:a=()=>{},...l}=yn(e,t),s=await Ii(t,l),c=xn(n),d=Ro(n),u=$o(n)==="y",{width:f,height:h}=r.floating;let y,g;c==="top"||c==="bottom"?(y=c,g=d===(await(o.isRTL==null?void 0:o.isRTL(i.floating))?"start":"end")?"left":"right"):(g=c,y=d==="end"?"top":"bottom");const w=h-s[y],m=f-s[g],v=!t.middlewareData.shift;let _=w,E=m;if(u){const k=f-s.left-s.right;E=d||v?Yn(m,k):k}else{const k=h-s.top-s.bottom;_=d||v?Yn(w,k):k}if(v&&!d){const k=Et(s.left,0),P=Et(s.right,0),A=Et(s.top,0),S=Et(s.bottom,0);u?E=f-2*(k!==0||P!==0?k+P:Et(s.left,s.right)):_=h-2*(A!==0||S!==0?A+S:Et(s.top,s.bottom))}await a({...t,availableWidth:E,availableHeight:_});const C=await o.getDimensions(i.floating);return f!==C.width||h!==C.height?{reset:{rects:!0}}:{}}}};function Zn(e){return cg(e)?(e.nodeName||"").toLowerCase():"#document"}function Ct(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function Cn(e){var t;return(t=(cg(e)?e.ownerDocument:e.document)||window.document)==null?void 0:t.documentElement}function cg(e){return e instanceof Node||e instanceof Ct(e).Node}function rt(e){return e instanceof Element||e instanceof Ct(e).Element}function on(e){return e instanceof HTMLElement||e instanceof Ct(e).HTMLElement}function bc(e){return typeof ShadowRoot>"u"?!1:e instanceof ShadowRoot||e instanceof Ct(e).ShadowRoot}function Wi(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=Nt(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function g5(e){return["table","td","th"].includes(Zn(e))}function rf(e){const t=of(),n=Nt(e);return n.transform!=="none"||n.perspective!=="none"||(n.containerType?n.containerType!=="normal":!1)||!t&&(n.backdropFilter?n.backdropFilter!=="none":!1)||!t&&(n.filter?n.filter!=="none":!1)||["transform","perspective","filter"].some(r=>(n.willChange||"").includes(r))||["paint","layout","strict","content"].some(r=>(n.contain||"").includes(r))}function y5(e){let t=Eo(e);for(;on(t)&&!Yl(t);){if(rf(t))return t;t=Eo(t)}return null}function of(){return typeof CSS>"u"||!CSS.supports?!1:CSS.supports("-webkit-backdrop-filter","none")}function Yl(e){return["html","body","#document"].includes(Zn(e))}function Nt(e){return Ct(e).getComputedStyle(e)}function Ql(e){return rt(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function Eo(e){if(Zn(e)==="html")return e;const t=e.assignedSlot||e.parentNode||bc(e)&&e.host||Cn(e);return bc(t)?t.host:t}function dg(e){const t=Eo(e);return Yl(t)?e.ownerDocument?e.ownerDocument.body:e.body:on(t)&&Wi(t)?t:dg(t)}function Li(e,t,n){var r;t===void 0&&(t=[]),n===void 0&&(n=!0);const o=dg(e),i=o===((r=e.ownerDocument)==null?void 0:r.body),a=Ct(o);return i?t.concat(a,a.visualViewport||[],Wi(o)?o:[],a.frameElement&&n?Li(a.frameElement):[]):t.concat(o,Li(o,[],n))}function fg(e){const t=Nt(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=on(e),i=o?e.offsetWidth:n,a=o?e.offsetHeight:r,l=_l(n)!==i||_l(r)!==a;return l&&(n=i,r=a),{width:n,height:r,$:l}}function af(e){return rt(e)?e:e.contextElement}function so(e){const t=af(e);if(!on(t))return Qn(1);const n=t.getBoundingClientRect(),{width:r,height:o,$:i}=fg(t);let a=(i?_l(n.width):n.width)/r,l=(i?_l(n.height):n.height)/o;return(!a||!Number.isFinite(a))&&(a=1),(!l||!Number.isFinite(l))&&(l=1),{x:a,y:l}}const x5=Qn(0);function pg(e){const t=Ct(e);return!of()||!t.visualViewport?x5:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function _5(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==Ct(e)?!1:t}function Er(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);const o=e.getBoundingClientRect(),i=af(e);let a=Qn(1);t&&(r?rt(r)&&(a=so(r)):a=so(e));const l=_5(i,n,r)?pg(i):Qn(0);let s=(o.left+l.x)/a.x,c=(o.top+l.y)/a.y,d=o.width/a.x,u=o.height/a.y;if(i){const f=Ct(i),h=r&&rt(r)?Ct(r):r;let y=f,g=y.frameElement;for(;g&&r&&h!==y;){const w=so(g),m=g.getBoundingClientRect(),v=Nt(g),_=m.left+(g.clientLeft+parseFloat(v.paddingLeft))*w.x,E=m.top+(g.clientTop+parseFloat(v.paddingTop))*w.y;s*=w.x,c*=w.y,d*=w.x,u*=w.y,s+=_,c+=E,y=Ct(g),g=y.frameElement}}return El({width:d,height:u,x:s,y:c})}const w5=[":popover-open",":modal"];function hg(e){return w5.some(t=>{try{return e.matches(t)}catch{return!1}})}function E5(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e;const i=o==="fixed",a=Cn(r),l=t?hg(t.floating):!1;if(r===a||l&&i)return n;let s={scrollLeft:0,scrollTop:0},c=Qn(1);const d=Qn(0),u=on(r);if((u||!u&&!i)&&((Zn(r)!=="body"||Wi(a))&&(s=Ql(r)),on(r))){const f=Er(r);c=so(r),d.x=f.x+r.clientLeft,d.y=f.y+r.clientTop}return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-s.scrollLeft*c.x+d.x,y:n.y*c.y-s.scrollTop*c.y+d.y}}function k5(e){return Array.from(e.getClientRects())}function mg(e){return Er(Cn(e)).left+Ql(e).scrollLeft}function b5(e){const t=Cn(e),n=Ql(e),r=e.ownerDocument.body,o=Et(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),i=Et(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let a=-n.scrollLeft+mg(e);const l=-n.scrollTop;return Nt(r).direction==="rtl"&&(a+=Et(t.clientWidth,r.clientWidth)-o),{width:o,height:i,x:a,y:l}}function C5(e,t){const n=Ct(e),r=Cn(e),o=n.visualViewport;let i=r.clientWidth,a=r.clientHeight,l=0,s=0;if(o){i=o.width,a=o.height;const c=of();(!c||c&&t==="fixed")&&(l=o.offsetLeft,s=o.offsetTop)}return{width:i,height:a,x:l,y:s}}function P5(e,t){const n=Er(e,!0,t==="fixed"),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=on(e)?so(e):Qn(1),a=e.clientWidth*i.x,l=e.clientHeight*i.y,s=o*i.x,c=r*i.y;return{width:a,height:l,x:s,y:c}}function Lh(e,t,n){let r;if(t==="viewport")r=C5(e,n);else if(t==="document")r=b5(Cn(e));else if(rt(t))r=P5(t,n);else{const o=pg(e);r={...t,x:t.x-o.x,y:t.y-o.y}}return El(r)}function vg(e,t){const n=Eo(e);return n===t||!rt(n)||Yl(n)?!1:Nt(n).position==="fixed"||vg(n,t)}function A5(e,t){const n=t.get(e);if(n)return n;let r=Li(e,[],!1).filter(l=>rt(l)&&Zn(l)!=="body"),o=null;const i=Nt(e).position==="fixed";let a=i?Eo(e):e;for(;rt(a)&&!Yl(a);){const l=Nt(a),s=rf(a);!s&&l.position==="fixed"&&(o=null),(i?!s&&!o:!s&&l.position==="static"&&!!o&&["absolute","fixed"].includes(o.position)||Wi(a)&&!s&&vg(e,a))?r=r.filter(d=>d!==a):o=l,a=Eo(a)}return t.set(e,r),r}function S5(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[...n==="clippingAncestors"?A5(t,this._c):[].concat(n),r],l=a[0],s=a.reduce((c,d)=>{const u=Lh(t,d,o);return c.top=Et(u.top,c.top),c.right=Yn(u.right,c.right),c.bottom=Yn(u.bottom,c.bottom),c.left=Et(u.left,c.left),c},Lh(t,l,o));return{width:s.right-s.left,height:s.bottom-s.top,x:s.left,y:s.top}}function T5(e){const{width:t,height:n}=fg(e);return{width:t,height:n}}function R5(e,t,n){const r=on(t),o=Cn(t),i=n==="fixed",a=Er(e,!0,i,t);let l={scrollLeft:0,scrollTop:0};const s=Qn(0);if(r||!r&&!i)if((Zn(t)!=="body"||Wi(o))&&(l=Ql(t)),r){const u=Er(t,!0,i,t);s.x=u.x+t.clientLeft,s.y=u.y+t.clientTop}else o&&(s.x=mg(o));const c=a.left+l.scrollLeft-s.x,d=a.top+l.scrollTop-s.y;return{x:c,y:d,width:a.width,height:a.height}}function Dh(e,t){return!on(e)||Nt(e).position==="fixed"?null:t?t(e):e.offsetParent}function gg(e,t){const n=Ct(e);if(!on(e)||hg(e))return n;let r=Dh(e,t);for(;r&&g5(r)&&Nt(r).position==="static";)r=Dh(r,t);return r&&(Zn(r)==="html"||Zn(r)==="body"&&Nt(r).position==="static"&&!rf(r))?n:r||y5(e)||n}const $5=async function(e){const t=this.getOffsetParent||gg,n=this.getDimensions;return{reference:R5(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,...await n(e.floating)}}};function O5(e){return Nt(e).direction==="rtl"}const yg={convertOffsetParentRelativeRectToViewportRelativeRect:E5,getDocumentElement:Cn,getClippingRect:S5,getOffsetParent:gg,getElementRects:$5,getClientRects:k5,getDimensions:T5,getScale:so,isElement:rt,isRTL:O5};function I5(e,t){let n=null,r;const o=Cn(e);function i(){var l;clearTimeout(r),(l=n)==null||l.disconnect(),n=null}function a(l,s){l===void 0&&(l=!1),s===void 0&&(s=1),i();const{left:c,top:d,width:u,height:f}=e.getBoundingClientRect();if(l||t(),!u||!f)return;const h=Pa(d),y=Pa(o.clientWidth-(c+u)),g=Pa(o.clientHeight-(d+f)),w=Pa(c),v={rootMargin:-h+"px "+-y+"px "+-g+"px "+-w+"px",threshold:Et(0,Yn(1,s))||1};let _=!0;function E(C){const k=C[0].intersectionRatio;if(k!==s){if(!_)return a();k?a(!1,k):r=setTimeout(()=>{a(!1,1e-7)},100)}_=!1}try{n=new IntersectionObserver(E,{...v,root:o.ownerDocument})}catch{n=new IntersectionObserver(E,v)}n.observe(e)}return a(!0),i}function L5(e,t,n,r){r===void 0&&(r={});const{ancestorScroll:o=!0,ancestorResize:i=!0,elementResize:a=typeof ResizeObserver=="function",layoutShift:l=typeof IntersectionObserver=="function",animationFrame:s=!1}=r,c=af(e),d=o||i?[...c?Li(c):[],...Li(t)]:[];d.forEach(m=>{o&&m.addEventListener("scroll",n,{passive:!0}),i&&m.addEventListener("resize",n)});const u=c&&l?I5(c,n):null;let f=-1,h=null;a&&(h=new ResizeObserver(m=>{let[v]=m;v&&v.target===c&&h&&(h.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var _;(_=h)==null||_.observe(t)})),n()}),c&&!s&&h.observe(c),h.observe(t));let y,g=s?Er(e):null;s&&w();function w(){const m=Er(e);g&&(m.x!==g.x||m.y!==g.y||m.width!==g.width||m.height!==g.height)&&n(),g=m,y=requestAnimationFrame(w)}return n(),()=>{var m;d.forEach(v=>{o&&v.removeEventListener("scroll",n),i&&v.removeEventListener("resize",n)}),u==null||u(),(m=h)==null||m.disconnect(),h=null,s&&cancelAnimationFrame(y)}}const xg=h5,D5=d5,N5=v5,M5=f5,Nh=c5,j5=m5,z5=(e,t,n)=>{const r=new Map,o={platform:yg,...n},i={...o.platform,_c:r};return u5(e,t,{...o,platform:i})},_g=e=>{function t(n){return{}.hasOwnProperty.call(n,"current")}return{name:"arrow",options:e,fn(n){const{element:r,padding:o}=typeof e=="function"?e(n):e;return r&&t(r)?r.current!=null?Nh({element:r.current,padding:o}).fn(n):{}:r?Nh({element:r,padding:o}).fn(n):{}}}};var Ba=typeof document<"u"?p.useLayoutEffect:p.useEffect;function kl(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if(typeof e=="function"&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&typeof e=="object"){if(Array.isArray(e)){if(n=e.length,n!==t.length)return!1;for(r=n;r--!==0;)if(!kl(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;r--!==0;){const i=o[r];if(!(i==="_owner"&&e.$$typeof)&&!kl(e[i],t[i]))return!1}return!0}return e!==e&&t!==t}function wg(e){return typeof window>"u"?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function Mh(e,t){const n=wg(e);return Math.round(t*n)/n}function jh(e){const t=p.useRef(e);return Ba(()=>{t.current=e}),t}function Eg(e){e===void 0&&(e={});const{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:o,elements:{reference:i,floating:a}={},transform:l=!0,whileElementsMounted:s,open:c}=e,[d,u]=p.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[f,h]=p.useState(r);kl(f,r)||h(r);const[y,g]=p.useState(null),[w,m]=p.useState(null),v=p.useCallback(B=>{B!==k.current&&(k.current=B,g(B))},[]),_=p.useCallback(B=>{B!==P.current&&(P.current=B,m(B))},[]),E=i||y,C=a||w,k=p.useRef(null),P=p.useRef(null),A=p.useRef(d),S=s!=null,O=jh(s),j=jh(o),N=p.useCallback(()=>{if(!k.current||!P.current)return;const B={placement:t,strategy:n,middleware:f};j.current&&(B.platform=j.current),z5(k.current,P.current,B).then(L=>{const F={...L,isPositioned:!0};z.current&&!kl(A.current,F)&&(A.current=F,Ao.flushSync(()=>{u(F)}))})},[f,t,n,j]);Ba(()=>{c===!1&&A.current.isPositioned&&(A.current.isPositioned=!1,u(B=>({...B,isPositioned:!1})))},[c]);const z=p.useRef(!1);Ba(()=>(z.current=!0,()=>{z.current=!1}),[]),Ba(()=>{if(E&&(k.current=E),C&&(P.current=C),E&&C){if(O.current)return O.current(E,C,N);N()}},[E,C,N,O,S]);const $=p.useMemo(()=>({reference:k,floating:P,setReference:v,setFloating:_}),[v,_]),U=p.useMemo(()=>({reference:E,floating:C}),[E,C]),W=p.useMemo(()=>{const B={position:n,left:0,top:0};if(!U.floating)return B;const L=Mh(U.floating,d.x),F=Mh(U.floating,d.y);return l?{...B,transform:"translate("+L+"px, "+F+"px)",...wg(U.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:L,top:F}},[n,l,U.floating,d.x,d.y]);return p.useMemo(()=>({...d,update:N,refs:$,elements:U,floatingStyles:W}),[d,N,$,U,W])}function F5(e){const[t,n]=p.useState(void 0);return gn(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const r=new ResizeObserver(o=>{if(!Array.isArray(o)||!o.length)return;const i=o[0];let a,l;if("borderBoxSize"in i){const s=i.borderBoxSize,c=Array.isArray(s)?s[0]:s;a=c.inlineSize,l=c.blockSize}else a=e.offsetWidth,l=e.offsetHeight;n({width:a,height:l})});return r.observe(e,{box:"border-box"}),()=>r.unobserve(e)}else n(void 0)},[e]),t}const kg="Popper",[bg,Cg]=En(kg),[U5,Pg]=bg(kg),V5=e=>{const{__scopePopper:t,children:n}=e,[r,o]=p.useState(null);return p.createElement(U5,{scope:t,anchor:r,onAnchorChange:o},n)},B5="PopperAnchor",H5=p.forwardRef((e,t)=>{const{__scopePopper:n,virtualRef:r,...o}=e,i=Pg(B5,n),a=p.useRef(null),l=Ue(t,a);return p.useEffect(()=>{i.onAnchorChange((r==null?void 0:r.current)||a.current)}),r?null:p.createElement(fe.div,q({},o,{ref:l}))}),Ag="PopperContent",[W5,iA]=bg(Ag),K5=p.forwardRef((e,t)=>{var n,r,o,i,a,l,s,c;const{__scopePopper:d,side:u="bottom",sideOffset:f=0,align:h="center",alignOffset:y=0,arrowPadding:g=0,avoidCollisions:w=!0,collisionBoundary:m=[],collisionPadding:v=0,sticky:_="partial",hideWhenDetached:E=!1,updatePositionStrategy:C="optimized",onPlaced:k,...P}=e,A=Pg(Ag,d),[S,O]=p.useState(null),j=Ue(t,xt=>O(xt)),[N,z]=p.useState(null),$=F5(N),U=(n=$==null?void 0:$.width)!==null&&n!==void 0?n:0,W=(r=$==null?void 0:$.height)!==null&&r!==void 0?r:0,B=u+(h!=="center"?"-"+h:""),L=typeof v=="number"?v:{top:0,right:0,bottom:0,left:0,...v},F=Array.isArray(m)?m:[m],G=F.length>0,J={padding:L,boundary:F.filter(G5),altBoundary:G},{refs:ue,floatingStyles:Ve,placement:xe,isPositioned:$e,middlewareData:_e}=Eg({strategy:"fixed",placement:B,whileElementsMounted:(...xt)=>L5(...xt,{animationFrame:C==="always"}),elements:{reference:A.anchor},middleware:[ug({mainAxis:f+W,alignmentAxis:y}),w&&xg({mainAxis:!0,crossAxis:!1,limiter:_==="partial"?j5():void 0,...J}),w&&D5({...J}),N5({...J,apply:({elements:xt,rects:Gi,availableWidth:Xl,availableHeight:Jl})=>{const{width:es,height:ts}=Gi.reference,Yt=xt.floating.style;Yt.setProperty("--radix-popper-available-width",`${Xl}px`),Yt.setProperty("--radix-popper-available-height",`${Jl}px`),Yt.setProperty("--radix-popper-anchor-width",`${es}px`),Yt.setProperty("--radix-popper-anchor-height",`${ts}px`)}}),N&&_g({element:N,padding:g}),q5({arrowWidth:U,arrowHeight:W}),E&&M5({strategy:"referenceHidden",...J})]}),[Be,we]=Sg(xe),Ce=at(k);gn(()=>{$e&&(Ce==null||Ce())},[$e,Ce]);const Mt=(o=_e.arrow)===null||o===void 0?void 0:o.x,Pe=(i=_e.arrow)===null||i===void 0?void 0:i.y,dt=((a=_e.arrow)===null||a===void 0?void 0:a.centerOffset)!==0,[Ki,Zl]=p.useState();return gn(()=>{S&&Zl(window.getComputedStyle(S).zIndex)},[S]),p.createElement("div",{ref:ue.setFloating,"data-radix-popper-content-wrapper":"",style:{...Ve,transform:$e?Ve.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:Ki,"--radix-popper-transform-origin":[(l=_e.transformOrigin)===null||l===void 0?void 0:l.x,(s=_e.transformOrigin)===null||s===void 0?void 0:s.y].join(" ")},dir:e.dir},p.createElement(W5,{scope:d,placedSide:Be,onArrowChange:z,arrowX:Mt,arrowY:Pe,shouldHideArrow:dt},p.createElement(fe.div,q({"data-side":Be,"data-align":we},P,{ref:j,style:{...P.style,animation:$e?void 0:"none",opacity:(c=_e.hide)!==null&&c!==void 0&&c.referenceHidden?0:void 0}}))))});function G5(e){return e!==null}const q5=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,i,a;const{placement:l,rects:s,middlewareData:c}=t,u=((n=c.arrow)===null||n===void 0?void 0:n.centerOffset)!==0,f=u?0:e.arrowWidth,h=u?0:e.arrowHeight,[y,g]=Sg(l),w={start:"0%",center:"50%",end:"100%"}[g],m=((r=(o=c.arrow)===null||o===void 0?void 0:o.x)!==null&&r!==void 0?r:0)+f/2,v=((i=(a=c.arrow)===null||a===void 0?void 0:a.y)!==null&&i!==void 0?i:0)+h/2;let _="",E="";return y==="bottom"?(_=u?w:`${m}px`,E=`${-h}px`):y==="top"?(_=u?w:`${m}px`,E=`${s.floating.height+h}px`):y==="right"?(_=`${-h}px`,E=u?w:`${v}px`):y==="left"&&(_=`${s.floating.width+h}px`,E=u?w:`${v}px`),{data:{x:_,y:E}}}});function Sg(e){const[t,n="center"]=e.split("-");return[t,n]}const Y5=V5,Q5=H5,Z5=K5,Tg="Popover",[Rg,aA]=En(Tg,[Cg]),lf=Cg(),[X5,Oo]=Rg(Tg),J5=e=>{const{__scopePopover:t,children:n,open:r,defaultOpen:o,onOpenChange:i,modal:a=!1}=e,l=lf(t),s=p.useRef(null),[c,d]=p.useState(!1),[u=!1,f]=rr({prop:r,defaultProp:o,onChange:i});return p.createElement(Y5,l,p.createElement(X5,{scope:t,contentId:rn(),triggerRef:s,open:u,onOpenChange:f,onOpenToggle:p.useCallback(()=>f(h=>!h),[f]),hasCustomAnchor:c,onCustomAnchorAdd:p.useCallback(()=>d(!0),[]),onCustomAnchorRemove:p.useCallback(()=>d(!1),[]),modal:a},n))},ek="PopoverTrigger",tk=p.forwardRef((e,t)=>{const{__scopePopover:n,...r}=e,o=Oo(ek,n),i=lf(n),a=Ue(t,o.triggerRef),l=p.createElement(fe.button,q({type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":Ig(o.open)},r,{ref:a,onClick:le(e.onClick,o.onOpenToggle)}));return o.hasCustomAnchor?l:p.createElement(Q5,q({asChild:!0},i),l)}),$g="PopoverPortal",[nk,rk]=Rg($g,{forceMount:void 0}),ok=e=>{const{__scopePopover:t,forceMount:n,children:r,container:o}=e,i=Oo($g,t);return p.createElement(nk,{scope:t,forceMount:n},p.createElement(kn,{present:n||i.open},p.createElement(t1,{asChild:!0,container:o},r)))},Di="PopoverContent",ik=p.forwardRef((e,t)=>{const n=rk(Di,e.__scopePopover),{forceMount:r=n.forceMount,...o}=e,i=Oo(Di,e.__scopePopover);return p.createElement(kn,{present:r||i.open},i.modal?p.createElement(ak,q({},o,{ref:t})):p.createElement(lk,q({},o,{ref:t})))}),ak=p.forwardRef((e,t)=>{const n=Oo(Di,e.__scopePopover),r=p.useRef(null),o=Ue(t,r),i=p.useRef(!1);return p.useEffect(()=>{const a=r.current;if(a)return p1(a)},[]),p.createElement(d1,{as:wo,allowPinchZoom:!0},p.createElement(Og,q({},e,{ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:le(e.onCloseAutoFocus,a=>{var l;a.preventDefault(),i.current||(l=n.triggerRef.current)===null||l===void 0||l.focus()}),onPointerDownOutside:le(e.onPointerDownOutside,a=>{const l=a.detail.originalEvent,s=l.button===0&&l.ctrlKey===!0,c=l.button===2||s;i.current=c},{checkForDefaultPrevented:!1}),onFocusOutside:le(e.onFocusOutside,a=>a.preventDefault(),{checkForDefaultPrevented:!1})})))}),lk=p.forwardRef((e,t)=>{const n=Oo(Di,e.__scopePopover),r=p.useRef(!1),o=p.useRef(!1);return p.createElement(Og,q({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:i=>{var a;if((a=e.onCloseAutoFocus)===null||a===void 0||a.call(e,i),!i.defaultPrevented){var l;r.current||(l=n.triggerRef.current)===null||l===void 0||l.focus(),i.preventDefault()}r.current=!1,o.current=!1},onInteractOutside:i=>{var a,l;(a=e.onInteractOutside)===null||a===void 0||a.call(e,i),i.defaultPrevented||(r.current=!0,i.detail.originalEvent.type==="pointerdown"&&(o.current=!0));const s=i.target;((l=n.triggerRef.current)===null||l===void 0?void 0:l.contains(s))&&i.preventDefault(),i.detail.originalEvent.type==="focusin"&&o.current&&i.preventDefault()}}))}),Og=p.forwardRef((e,t)=>{const{__scopePopover:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,disableOutsidePointerEvents:a,onEscapeKeyDown:l,onPointerDownOutside:s,onFocusOutside:c,onInteractOutside:d,...u}=e,f=Oo(Di,n),h=lf(n);return n1(),p.createElement(J0,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i},p.createElement(Ud,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:d,onEscapeKeyDown:l,onPointerDownOutside:s,onFocusOutside:c,onDismiss:()=>f.onOpenChange(!1)},p.createElement(Z5,q({"data-state":Ig(f.open),role:"dialog",id:f.contentId},h,u,{ref:t,style:{...u.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}}))))});function Ig(e){return e?"open":"closed"}const sk=J5,uk=tk,ck=ok,dk=ik;var fk="vocs_Popover";Bt.Root=sk;Bt.Trigger=uk;function Bt({children:e,className:t}){return x.jsx(ck,{children:x.jsx(dk,{className:D(fk,t),sideOffset:12,children:e})})}var pk="vocs_Sidebar_backLink",hk="vocs_Sidebar_divider",mk="vocs_Sidebar_group",ni="vocs_Sidebar_item",Lg="vocs_Sidebar_items",vk="vocs_Sidebar_level",gk="vocs_Sidebar_levelCollapsed",yk="vocs_Sidebar_levelInset",xk="vocs_Sidebar_logo",_k="vocs_Sidebar_logoWrapper",wk="vocs_Sidebar_navigation",Ek="vocs_Sidebar",Dg="vocs_Sidebar_section",kk="vocs_Sidebar_sectionCollapse",bk="vocs_Sidebar_sectionCollapseActive",Ck="vocs_Sidebar_sectionHeader",Pk="vocs_Sidebar_sectionHeaderActive",zh="vocs_Sidebar_sectionTitle";function Ng(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 39 69",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Chevron Right"}),x.jsx("path",{d:"M38.8697 34.7461C38.8697 33.6719 38.4791 32.6953 37.649 31.8652L7.47318 1.8848C6.74078 1.1035 5.76418 0.712891 4.64118 0.712891C2.34618 0.712891 0.588379 2.42189 0.588379 4.71679C0.588379 5.79099 1.07668 6.81639 1.76028 7.59769L29.0552 34.7461L1.76028 61.8945C1.07668 62.6758 0.588379 63.6523 0.588379 64.7754C0.588379 67.0703 2.34618 68.7793 4.64118 68.7793C5.76418 68.7793 6.74078 68.3887 7.47318 67.6074L37.649 37.627C38.4791 36.7969 38.8697 35.8203 38.8697 34.7461Z",fill:"currentColor"})]})}function Mg(e){var c;const{className:t,onClickItem:n}=e,{previousPath:r}=Sr(),o=p.useRef(null),i=Bl(),[a,l]=p.useState("/");if(p.useEffect(()=>{typeof window>"u"||r&&l(r)},[i.key,i.backLink]),!i)return null;const s=Ak(i.items);return x.jsxs("aside",{ref:o,className:D(Ek,t),children:[x.jsxs("div",{className:_k,children:[x.jsx("div",{className:xk,children:x.jsx(qn,{to:"/",style:{alignItems:"center",display:"flex",height:"100%"},children:x.jsx(Wd,{})})}),x.jsx("div",{className:hk})]}),x.jsx("nav",{className:wk,children:x.jsxs("div",{className:mk,children:[i.backLink&&x.jsx("section",{className:Dg,children:x.jsx("div",{className:Lg,children:x.jsxs(qn,{className:D(ni,pk),to:a,children:["←"," ",typeof history<"u"&&((c=history.state)!=null&&c.key)&&a!=="/"?"Back":"Home"]})})}),s.map((d,u)=>x.jsx(zg,{depth:0,item:d,onClick:n,sidebarRef:o},`${d.text}${u}`))]})})]},i.key)}function Ak(e){const t=[];let n=0;for(const r of e){if(r.items){n=t.push(r);continue}t[n]?t[n].items.push(r):t.push({text:"",items:[r]})}return t}function jg(e,t){return e.find(n=>Ul(t,n.link??"")||n.link===t?!0:n.items?jg(n.items,t):!1)}function zg(e){const{depth:t,item:n,onClick:r,sidebarRef:o}=e,i=p.useRef(null),{pathname:a}=Re(),l=z_(n.link??""),s=p.useMemo(()=>n.items?!!jg(n.items,a):!1,[n.items,a]),[c,d]=p.useState(()=>l||!n.items||s?!1:!!n.collapsed),u=n.collapsed!==void 0&&n.items!==void 0,f=p.useCallback(g=>{"key"in g&&g.key!=="Enter"||n.link||d(w=>!w)},[n.link]),h=p.useCallback(g=>{"key"in g&&g.key!=="Enter"||n.link&&d(w=>!w)},[n.link]),y=p.useRef(!0);return p.useEffect(()=>{!y.current||(y.current=!1,!Ul(a,n.link??""))||requestAnimationFrame(()=>{var v,_,E;const w=((v=i.current)==null?void 0:v.offsetTop)??0,m=((_=o==null?void 0:o.current)==null?void 0:_.clientHeight)??0;w0&&t<5&&n.items.map((g,w)=>x.jsx(zg,{depth:t+1,item:g,onClick:r,sidebarRef:o},`${g.text}${w}`))})]}):x.jsx(x.Fragment,{children:n.link?x.jsx(qn,{ref:i,"data-active":!!l,onClick:r,className:ni,to:n.link,children:n.text}):x.jsx("div",{className:ni,children:n.text})})}function Sk(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 69 39",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Chevron Down"}),x.jsx("path",{d:"M34.8677 38.8398C35.9419 38.8398 37.0161 38.4492 37.7485 37.6191L67.729 7.44339C68.4614 6.71089 68.9009 5.73439 68.9009 4.61129C68.9009 2.31639 67.1919 0.558594 64.897 0.558594C63.8227 0.558594 62.7485 1.04689 62.0161 1.73049L32.5727 31.2715H37.1138L7.67042 1.73049C6.93802 1.04689 5.96142 0.558594 4.83842 0.558594C2.54342 0.558594 0.785645 2.31639 0.785645 4.61129C0.785645 5.73439 1.22512 6.71089 1.95752 7.44339L31.9868 37.6191C32.768 38.4492 33.7446 38.8398 34.8677 38.8398Z",fill:"currentColor"})]})}function Tk(){return x.jsxs("svg",{width:"100%",height:"100%",viewBox:"0 0 69 40",fill:"none",xmlns:"http://www.w3.org/2000/svg",children:[x.jsx("title",{children:"Chevron Up"}),x.jsx("path",{d:"M1.95752 32.2441C1.22512 32.9277 0.785645 33.9531 0.785645 35.0762C0.785645 37.3711 2.54342 39.1289 4.83842 39.1289C5.96142 39.1289 6.98682 38.6895 7.67042 37.957L37.1138 8.36716H32.5727L62.0161 37.957C62.6997 38.6895 63.8227 39.1289 64.897 39.1289C67.1919 39.1289 68.9009 37.3711 68.9009 35.0762C68.9009 33.9531 68.4614 32.9277 67.729 32.2441L37.7485 2.06836C37.0161 1.23826 35.9419 0.847656 34.8677 0.847656C33.7446 0.847656 32.7192 1.23826 31.9868 2.06836L1.95752 32.2441Z",fill:"currentColor"})]})}function Rk(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 79 48",fill:"none",children:[x.jsx("title",{children:"Menu"}),x.jsx("path",{fill:"currentColor",d:"M19.528 47.232h40.87c1.952 0 3.515-1.562 3.515-3.564a3.5 3.5 0 0 0-3.516-3.516H19.528a3.501 3.501 0 0 0-3.515 3.516c0 2.002 1.562 3.564 3.515 3.564ZM12.057 27.262h55.81a3.501 3.501 0 0 0 3.516-3.516 3.501 3.501 0 0 0-3.515-3.515h-55.81a3.501 3.501 0 0 0-3.516 3.515 3.501 3.501 0 0 0 3.515 3.516ZM4.391 7.34H75.29c2.002 0 3.515-1.563 3.515-3.516 0-2.002-1.513-3.564-3.515-3.564H4.39C2.438.26.876 1.822.876 3.824A3.501 3.501 0 0 0 4.39 7.34Z"})]})}Cc.Curtain=Mk;function Cc(){var n,r;const e=Je(),{showLogo:t}=Tr();return x.jsxs("div",{className:H6,children:[x.jsxs("div",{className:Rh,children:[t&&x.jsx("div",{className:Ca,children:x.jsx("div",{className:j6,children:x.jsx(qn,{to:"/",style:{alignItems:"center",display:"flex",height:"100%"},children:x.jsx(Wd,{})})})}),e.topNav&&x.jsx(x.Fragment,{children:x.jsxs("div",{className:Ca,children:[x.jsx($k,{items:e.topNav}),x.jsx(Ik,{items:e.topNav})]})})]}),x.jsxs("div",{className:Rh,children:[x.jsx("div",{className:Ca,style:{marginRight:"-8px"},children:x.jsx(T6,{})}),e.socials&&((n=e.socials)==null?void 0:n.length)>0&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:D6}),x.jsx("div",{className:Ca,style:{marginLeft:"-8px"},children:(r=e.socials)==null?void 0:r.map((o,i)=>x.jsx(Nk,{...o},i))})]})]})]})}function $k({items:e}){const{pathname:t}=Re(),n=Bi({pathname:t,items:e});return x.jsx(j1,{className:ig,children:x.jsx(z1,{children:e.map((r,o)=>r!=null&&r.link?x.jsx(Gl,{active:n==null?void 0:n.includes(r.id),href:r.link,children:r.text},o):x.jsxs(F1,{className:M6,children:[x.jsx(U1,{active:n==null?void 0:n.includes(r.id),children:r.text}),x.jsx(V1,{className:I6,children:x.jsx(Ok,{items:r.items||[]})})]},o))})})}function Ok({items:e}){const{pathname:t}=Re(),n=Bi({pathname:t,items:e});return x.jsx("ul",{children:e==null?void 0:e.map((r,o)=>x.jsx(Gl,{active:n.includes(r.id),href:r.link,children:r.text},o))})}function Ik({items:e}){var s;const[t,n]=p.useState(!1),{pathname:r}=Re(),o=Bi({pathname:r,items:e}),i=e.filter(c=>c.id===o[0])[0],{basePath:a}=Je(),l=a;return x.jsx("div",{className:D(ig,V6),children:i?x.jsxs(Bt.Root,{modal:!0,open:t,onOpenChange:n,children:[x.jsxs(Bt.Trigger,{className:D(og,Yo),children:[i.text,x.jsx(st,{label:"Menu",icon:Sk,size:"11px"})]}),x.jsx(Bt,{className:G6,children:x.jsx(b6,{type:"single",collapsible:!0,style:{display:"flex",flexDirection:"column"},children:e.map((c,d)=>{var u;return c!=null&&c.link?x.jsx(nn,{"data-active":o.includes(c.id),className:Yo,href:c.link,onClick:()=>n(!1),variant:"styleless",children:c.text},d):x.jsxs(C6,{value:d.toString(),children:[x.jsx(P6,{className:D(Yo,U6),"data-active":o.includes(c.id),style:qt({[$6]:`url(${l}/.vocs/icons/chevron-down.svg)`,[O6]:`url(${l}/.vocs/icons/chevron-up.svg)`}),children:c.text}),x.jsx(A6,{className:F6,children:(u=c.items)==null?void 0:u.map((f,h)=>x.jsx(nn,{className:Yo,href:f.link,onClick:()=>n(!1),variant:"styleless",children:f.text},h))})]},d)})})})]}):(s=e[0])!=null&&s.link?x.jsx(nn,{className:Yo,href:e[0].link,variant:"styleless",children:e[0].text}):null})}const Lk={discord:B1,github:H1,telegram:W1,warpcast:K1,x:G1},Dk={discord:"21px",github:"18px",telegram:"21px",warpcast:"18px",x:"16px"};function Nk({icon:e,label:t,link:n,type:r}){return x.jsx("a",{className:R6,href:n,target:"_blank",rel:"noopener noreferrer",children:x.jsx(st,{className:N6,label:t,icon:Lk[e],size:Dk[r]||"18px"})})}function Mk({enableScrollToTop:e}){const{pathname:t}=Re(),{layout:n,showSidebar:r}=Tr(),{frontmatter:o={}}=Sr(),i=Bl(),[a,l]=p.useState(!1),[s,c]=p.useState(!1),d=p.useMemo(()=>{if(!i||n==="minimal")return;const h=Fg({sidebarItems:i.items,pathname:t});return h==null?void 0:h.text},[n,t,i]),u=p.useMemo(()=>{var h;if(!(typeof window>"u"))return(h=document.querySelector(".vocs_Content h1"))==null?void 0:h.textContent},[]),f=d||o.title||u;return x.jsxs("div",{className:L6,children:[x.jsx("div",{className:Sh,children:x.jsx("div",{className:eu,children:r?x.jsxs(Bt.Root,{modal:!0,open:s,onOpenChange:c,children:[x.jsxs(Bt.Trigger,{className:og,children:[x.jsx(st,{label:"Menu",icon:Rk,size:"13px"}),x.jsx("div",{className:z6,children:f})]}),x.jsx(Bt,{className:K6,children:x.jsx(Mg,{onClickItem:()=>c(!1)})})]}):f})}),x.jsxs("div",{className:Sh,children:[e&&x.jsxs(x.Fragment,{children:[x.jsx("div",{className:eu,children:x.jsxs("button",{className:Th,onClick:()=>window.scrollTo({behavior:"smooth",top:0}),type:"button",children:["Top",x.jsx(st,{label:"Scroll to top",icon:Tk,size:"10px"})]})}),x.jsx("div",{className:W6})]}),n==="docs"&&x.jsx("div",{className:eu,children:x.jsxs(Bt.Root,{modal:!0,open:a,onOpenChange:l,children:[x.jsxs(Bt.Trigger,{className:Th,children:["On this page",x.jsx(st,{label:"On this page",icon:Ng,size:"10px"})]}),x.jsx(Bt,{className:B6,children:x.jsx(ag,{onClickItem:()=>l(!1),showTitle:!1})})]})})]})]})}function Fg({sidebarItems:e,pathname:t}){const n=t.replace(/(.+)\/$/,"$1");for(const r of e){if((r==null?void 0:r.link)===n)return r;if(r.items){const o=Fg({sidebarItems:r.items,pathname:n});if(o)return o}}}var jk="vocs_SkipLink";const Ug="vocs-content";function zk(){const{pathname:e}=Re();return x.jsx("a",{className:D(jk,Q0),href:`${e}#${Ug}`,children:"Skip to content"})}var Fk="vocs_DocsLayout_content",Uk="vocs_DocsLayout_content_withSidebar",Vk="vocs_DocsLayout_content_withTopNav",Bk="vocs_DocsLayout_gutterLeft",Hk="vocs_DocsLayout_gutterRight",Wk="vocs_DocsLayout_gutterRight_withSidebar",Kk="vocs_DocsLayout_gutterTop",Gk="vocs_DocsLayout_gutterTopCurtain",qk="vocs_DocsLayout_gutterTopCurtain_hidden",Yk="vocs_DocsLayout_gutterTopCurtain_withSidebar",Qk="vocs_DocsLayout_gutterTop_offsetLeftGutter",Zk="vocs_DocsLayout_gutterTop_sticky",Xk="vocs_DocsLayout",Jk="vocs_DocsLayout_sidebar";function Pc({children:e}){const{banner:t,font:n}=Je(),{frontmatter:r={}}=Sr(),{content:o}=r,{layout:i,showOutline:a,showSidebar:l,showTopNav:s}=Tr(),{ref:c,inView:d}=V0({initialInView:!0,rootMargin:"100px 0px 0px 0px"}),[u,f]=hc("banner",!0);return x.jsxs("div",{className:Xk,"data-layout":i,style:qt({[qw]:u?t==null?void 0:t.height:void 0,[Rw.default]:n!=null&&n.google?`${n.google}, ${Tw.default}`:void 0}),children:[x.jsx(zk,{}),u&&x.jsx(v3,{hide:()=>f(!1)}),l&&x.jsx("div",{className:Bk,children:x.jsx(Mg,{className:Jk})}),s&&x.jsxs(x.Fragment,{children:[x.jsxs("div",{ref:c,className:D(Kk,l&&Qk,(i==="minimal"||i==="landing")&&Zk),children:[x.jsx(_c,{}),x.jsx(Cc,{})]}),x.jsxs("div",{className:D(Gk,l&&Yk,(i==="minimal"||i==="landing")&&qk),children:[x.jsx(_c.Curtain,{}),x.jsx(Cc.Curtain,{enableScrollToTop:!d})]})]}),a&&x.jsx("div",{className:D(Hk,l&&Wk),children:x.jsx(ag,{})}),x.jsxs("div",{id:Ug,className:D(Fk,l&&Uk,s&&Vk),style:qt({[Ns.horizontalPadding]:o==null?void 0:o.horizontalPadding,[Ns.width]:o==null?void 0:o.width,[Ns.verticalPadding]:o==null?void 0:o.verticalPadding}),children:[x.jsx(G0,{children:e}),x.jsx(Z7,{})]}),x.jsx("div",{"data-bottom-observer":!0})]})}const Ac={},Vg=Z.createContext(Ac);function eb(e){const t=Z.useContext(Vg);return Z.useMemo(function(){return typeof e=="function"?e(t):{...t,...e}},[t,e])}function tb(e){let t;return e.disableParentContext?t=typeof e.components=="function"?e.components(Ac):e.components||Ac:t=eb(e.components),Z.createElement(Vg.Provider,{value:t},e.children)}var Bg={exports:{}},nb="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED",rb=nb,ob=rb;function Hg(){}function Wg(){}Wg.resetWarningCache=Hg;var ib=function(){function e(r,o,i,a,l,s){if(s!==ob){var c=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 c.name="Invariant Violation",c}}e.isRequired=e;function t(){return 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:Wg,resetWarningCache:Hg};return n.PropTypes=n,n};Bg.exports=ib();var ab=Bg.exports;const Ee=Xn(ab);function lb(e){return e&&typeof e=="object"&&"default"in e?e.default:e}var Kg=p,sb=lb(Kg);function Fh(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ub(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e.__proto__=t}var cb=!!(typeof window<"u"&&window.document&&window.document.createElement);function db(e,t,n){if(typeof e!="function")throw new Error("Expected reducePropsToState to be a function.");if(typeof t!="function")throw new Error("Expected handleStateChangeOnClient to be a function.");if(typeof n<"u"&&typeof n!="function")throw new Error("Expected mapStateOnServer to either be undefined or a function.");function r(o){return o.displayName||o.name||"Component"}return function(i){if(typeof i!="function")throw new Error("Expected WrappedComponent to be a React component.");var a=[],l;function s(){l=e(a.map(function(d){return d.props})),c.canUseDOM?t(l):n&&(l=n(l))}var c=function(d){ub(u,d);function u(){return d.apply(this,arguments)||this}u.peek=function(){return l},u.rewind=function(){if(u.canUseDOM)throw new Error("You may only call rewind() on the server. Call peek() to read the current state.");var y=l;return l=void 0,a=[],y};var f=u.prototype;return f.UNSAFE_componentWillMount=function(){a.push(this),s()},f.componentDidUpdate=function(){s()},f.componentWillUnmount=function(){var y=a.indexOf(this);a.splice(y,1),s()},f.render=function(){return sb.createElement(i,this.props)},u}(Kg.PureComponent);return Fh(c,"displayName","SideEffect("+r(i)+")"),Fh(c,"canUseDOM",cb),c}}var fb=db;const pb=Xn(fb);var hb=typeof Element<"u",mb=typeof Map=="function",vb=typeof Set=="function",gb=typeof ArrayBuffer=="function"&&!!ArrayBuffer.isView;function Ha(e,t){if(e===t)return!0;if(e&&t&&typeof e=="object"&&typeof t=="object"){if(e.constructor!==t.constructor)return!1;var n,r,o;if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(!Ha(e[r],t[r]))return!1;return!0}var i;if(mb&&e instanceof Map&&t instanceof Map){if(e.size!==t.size)return!1;for(i=e.entries();!(r=i.next()).done;)if(!t.has(r.value[0]))return!1;for(i=e.entries();!(r=i.next()).done;)if(!Ha(r.value[1],t.get(r.value[0])))return!1;return!0}if(vb&&e instanceof Set&&t instanceof Set){if(e.size!==t.size)return!1;for(i=e.entries();!(r=i.next()).done;)if(!t.has(r.value[0]))return!1;return!0}if(gb&&ArrayBuffer.isView(e)&&ArrayBuffer.isView(t)){if(n=e.length,n!=t.length)return!1;for(r=n;r--!==0;)if(e[r]!==t[r])return!1;return!0}if(e.constructor===RegExp)return e.source===t.source&&e.flags===t.flags;if(e.valueOf!==Object.prototype.valueOf&&typeof e.valueOf=="function"&&typeof t.valueOf=="function")return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString&&typeof e.toString=="function"&&typeof t.toString=="function")return e.toString()===t.toString();if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;r--!==0;)if(!Object.prototype.hasOwnProperty.call(t,o[r]))return!1;if(hb&&e instanceof Element)return!1;for(r=n;r--!==0;)if(!((o[r]==="_owner"||o[r]==="__v"||o[r]==="__o")&&e.$$typeof)&&!Ha(e[o[r]],t[o[r]]))return!1;return!0}return e!==e&&t!==t}var yb=function(t,n){try{return Ha(t,n)}catch(r){if((r.message||"").match(/stack|recursion/i))return console.warn("react-fast-compare cannot handle circular refs"),!1;throw r}};const xb=Xn(yb);/* object-assign (c) Sindre Sorhus @license MIT -*/var Uh=Object.getOwnPropertySymbols,_b=Object.prototype.hasOwnProperty,wb=Object.prototype.propertyIsEnumerable;function Eb(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function kb(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(t).map(function(i){return t[i]});if(r.join("")!=="0123456789")return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(i){o[i]=i}),Object.keys(Object.assign({},o)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var bb=kb()?Object.assign:function(e,t){for(var n,r=Eb(e),o,i=1;i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},Ob=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t&&(typeof t=="object"||typeof t=="function")?t:e},Sc=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return n===!1?String(t):String(t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},Ib=function(t){var n=uo(t,ee.TITLE),r=uo(t,Ni.TITLE_TEMPLATE);if(r&&n)return r.replace(/%s/g,function(){return Array.isArray(n)?n.join(""):n});var o=uo(t,Ni.DEFAULT_TITLE);return n||o||void 0},Lb=function(t){return uo(t,Ni.ON_CHANGE_CLIENT_STATE)||function(){}},tu=function(t,n){return n.filter(function(r){return typeof r[t]<"u"}).map(function(r){return r[t]}).reduce(function(r,o){return pt({},r,o)},{})},Db=function(t,n){return n.filter(function(r){return typeof r[ee.BASE]<"u"}).map(function(r){return r[ee.BASE]}).reverse().reduce(function(r,o){if(!r.length)for(var i=Object.keys(o),a=0;a=0;r--){var o=t[r];if(o.hasOwnProperty(n))return o[n]}return null},Nb=function(t){return{baseTag:Db([ke.HREF,ke.TARGET],t),bodyAttributes:tu(mr.BODY,t),defer:uo(t,Ni.DEFER),encode:uo(t,Ni.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:tu(mr.HTML,t),linkTags:Qo(ee.LINK,[ke.REL,ke.HREF],t),metaTags:Qo(ee.META,[ke.NAME,ke.CHARSET,ke.HTTPEQUIV,ke.PROPERTY,ke.ITEM_PROP],t),noscriptTags:Qo(ee.NOSCRIPT,[ke.INNER_HTML],t),onChangeClientState:Lb(t),scriptTags:Qo(ee.SCRIPT,[ke.SRC,ke.INNER_HTML],t),styleTags:Qo(ee.STYLE,[ke.CSS_TEXT],t),title:Ib(t),titleAttributes:tu(mr.TITLE,t)}},Tc=function(){var e=Date.now();return function(t){var n=Date.now();n-e>16?(e=n,t(n)):setTimeout(function(){Tc(t)},0)}}(),Bh=function(t){return clearTimeout(t)},Mb=typeof window<"u"?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||Tc:global.requestAnimationFrame||Tc,jb=typeof window<"u"?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||Bh:global.cancelAnimationFrame||Bh,zb=function(t){return console&&typeof console.warn=="function"&&console.warn(t)},Zo=null,Fb=function(t){Zo&&jb(Zo),t.defer?Zo=Mb(function(){Hh(t,function(){Zo=null})}):(Hh(t),Zo=null)},Hh=function(t,n){var r=t.baseTag,o=t.bodyAttributes,i=t.htmlAttributes,a=t.linkTags,l=t.metaTags,s=t.noscriptTags,c=t.onChangeClientState,d=t.scriptTags,u=t.styleTags,f=t.title,h=t.titleAttributes;Rc(ee.BODY,o),Rc(ee.HTML,i),Ub(f,h);var y={baseTag:Fr(ee.BASE,r),linkTags:Fr(ee.LINK,a),metaTags:Fr(ee.META,l),noscriptTags:Fr(ee.NOSCRIPT,s),scriptTags:Fr(ee.SCRIPT,d),styleTags:Fr(ee.STYLE,u)},g={},w={};Object.keys(y).forEach(function(m){var v=y[m],_=v.newTags,E=v.oldTags;_.length&&(g[m]=_),E.length&&(w[m]=y[m].oldTags)}),n&&n(),c(t,g,w)},Gg=function(t){return Array.isArray(t)?t.join(""):t},Ub=function(t,n){typeof t<"u"&&document.title!==t&&(document.title=Gg(t)),Rc(ee.TITLE,n)},Rc=function(t,n){var r=document.getElementsByTagName(t)[0];if(r){for(var o=r.getAttribute(Ht),i=o?o.split(","):[],a=[].concat(i),l=Object.keys(n),s=0;s=0;f--)r.removeAttribute(a[f]);i.length===a.length?r.removeAttribute(Ht):r.getAttribute(Ht)!==l.join(",")&&r.setAttribute(Ht,l.join(","))}},Fr=function(t,n){var r=document.head||document.querySelector(ee.HEAD),o=r.querySelectorAll(t+"["+Ht+"]"),i=Array.prototype.slice.call(o),a=[],l=void 0;return n&&n.length&&n.forEach(function(s){var c=document.createElement(t);for(var d in s)if(s.hasOwnProperty(d))if(d===ke.INNER_HTML)c.innerHTML=s.innerHTML;else if(d===ke.CSS_TEXT)c.styleSheet?c.styleSheet.cssText=s.cssText:c.appendChild(document.createTextNode(s.cssText));else{var u=typeof s[d]>"u"?"":s[d];c.setAttribute(d,u)}c.setAttribute(Ht,"true"),i.some(function(f,h){return l=h,c.isEqualNode(f)})?i.splice(l,1):a.push(c)}),i.forEach(function(s){return s.parentNode.removeChild(s)}),a.forEach(function(s){return r.appendChild(s)}),{oldTags:i,newTags:a}},qg=function(t){return Object.keys(t).reduce(function(n,r){var o=typeof t[r]<"u"?r+'="'+t[r]+'"':""+r;return n?n+" "+o:o},"")},Vb=function(t,n,r,o){var i=qg(r),a=Gg(n);return i?"<"+t+" "+Ht+'="true" '+i+">"+Sc(a,o)+"":"<"+t+" "+Ht+'="true">'+Sc(a,o)+""},Bb=function(t,n,r){return n.reduce(function(o,i){var a=Object.keys(i).filter(function(c){return!(c===ke.INNER_HTML||c===ke.CSS_TEXT)}).reduce(function(c,d){var u=typeof i[d]>"u"?d:d+'="'+Sc(i[d],r)+'"';return c?c+" "+u:u},""),l=i.innerHTML||i.cssText||"",s=Ab.indexOf(t)===-1;return o+"<"+t+" "+Ht+'="true" '+a+(s?"/>":">"+l+"")},"")},Yg=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(t).reduce(function(r,o){return r[bl[o]||o]=t[o],r},n)},Hb=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(t).reduce(function(r,o){return r[Pb[o]||o]=t[o],r},n)},Wb=function(t,n,r){var o,i=(o={key:n},o[Ht]=!0,o),a=Yg(r,i);return[Z.createElement(ee.TITLE,a,n)]},Kb=function(t,n){return n.map(function(r,o){var i,a=(i={key:o},i[Ht]=!0,i);return Object.keys(r).forEach(function(l){var s=bl[l]||l;if(s===ke.INNER_HTML||s===ke.CSS_TEXT){var c=r.innerHTML||r.cssText;a.dangerouslySetInnerHTML={__html:c}}else a[s]=r[l]}),Z.createElement(t,a)})},an=function(t,n,r){switch(t){case ee.TITLE:return{toComponent:function(){return Wb(t,n.title,n.titleAttributes)},toString:function(){return Vb(t,n.title,n.titleAttributes,r)}};case mr.BODY:case mr.HTML:return{toComponent:function(){return Yg(n)},toString:function(){return qg(n)}};default:return{toComponent:function(){return Kb(t,n)},toString:function(){return Bb(t,n,r)}}}},Qg=function(t){var n=t.baseTag,r=t.bodyAttributes,o=t.encode,i=t.htmlAttributes,a=t.linkTags,l=t.metaTags,s=t.noscriptTags,c=t.scriptTags,d=t.styleTags,u=t.title,f=u===void 0?"":u,h=t.titleAttributes;return{base:an(ee.BASE,n,o),bodyAttributes:an(mr.BODY,r,o),htmlAttributes:an(mr.HTML,i,o),link:an(ee.LINK,a,o),meta:an(ee.META,l,o),noscript:an(ee.NOSCRIPT,s,o),script:an(ee.SCRIPT,c,o),style:an(ee.STYLE,d,o),title:an(ee.TITLE,{title:f,titleAttributes:h},o)}},Gb=function(t){var n,r;return r=n=function(o){$b(i,o);function i(){return Tb(this,i),Ob(this,o.apply(this,arguments))}return i.prototype.shouldComponentUpdate=function(l){return!xb(this.props,l)},i.prototype.mapNestedChildrenToProps=function(l,s){if(!s)return null;switch(l.type){case ee.SCRIPT:case ee.NOSCRIPT:return{innerHTML:s};case ee.STYLE:return{cssText:s}}throw new Error("<"+l.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},i.prototype.flattenArrayTypeChildren=function(l){var s,c=l.child,d=l.arrayTypeChildren,u=l.newChildProps,f=l.nestedChildren;return pt({},d,(s={},s[c.type]=[].concat(d[c.type]||[],[pt({},u,this.mapNestedChildrenToProps(c,f))]),s))},i.prototype.mapObjectTypeChildren=function(l){var s,c,d=l.child,u=l.newProps,f=l.newChildProps,h=l.nestedChildren;switch(d.type){case ee.TITLE:return pt({},u,(s={},s[d.type]=h,s.titleAttributes=pt({},f),s));case ee.BODY:return pt({},u,{bodyAttributes:pt({},f)});case ee.HTML:return pt({},u,{htmlAttributes:pt({},f)})}return pt({},u,(c={},c[d.type]=pt({},f),c))},i.prototype.mapArrayTypeChildrenToProps=function(l,s){var c=pt({},s);return Object.keys(l).forEach(function(d){var u;c=pt({},c,(u={},u[d]=l[d],u))}),c},i.prototype.warnOnInvalidChildren=function(l,s){return!0},i.prototype.mapChildrenToProps=function(l,s){var c=this,d={};return Z.Children.forEach(l,function(u){if(!(!u||!u.props)){var f=u.props,h=f.children,y=Vh(f,["children"]),g=Hb(y);switch(c.warnOnInvalidChildren(u,h),u.type){case ee.LINK:case ee.META:case ee.NOSCRIPT:case ee.SCRIPT:case ee.STYLE:d=c.flattenArrayTypeChildren({child:u,arrayTypeChildren:d,newChildProps:g,nestedChildren:h});break;default:s=c.mapObjectTypeChildren({child:u,newProps:s,newChildProps:g,nestedChildren:h});break}}}),s=this.mapArrayTypeChildrenToProps(d,s),s},i.prototype.render=function(){var l=this.props,s=l.children,c=Vh(l,["children"]),d=pt({},c);return s&&(d=this.mapChildrenToProps(s,d)),Z.createElement(t,d)},Rb(i,null,[{key:"canUseDOM",set:function(l){t.canUseDOM=l}}]),i}(Z.Component),n.propTypes={base:Ee.object,bodyAttributes:Ee.object,children:Ee.oneOfType([Ee.arrayOf(Ee.node),Ee.node]),defaultTitle:Ee.string,defer:Ee.bool,encodeSpecialCharacters:Ee.bool,htmlAttributes:Ee.object,link:Ee.arrayOf(Ee.object),meta:Ee.arrayOf(Ee.object),noscript:Ee.arrayOf(Ee.object),onChangeClientState:Ee.func,script:Ee.arrayOf(Ee.object),style:Ee.arrayOf(Ee.object),title:Ee.string,titleAttributes:Ee.object,titleTemplate:Ee.string},n.defaultProps={defer:!0,encodeSpecialCharacters:!0},n.peek=t.peek,n.rewind=function(){var o=t.rewind();return o||(o=Qg({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),o},r},qb=function(){return null},Yb=pb(Nb,Fb,Qg)(qb),$c=Gb(Yb);$c.renderStatic=$c.rewind;var nu="vocs_Anchor",Qb="vocs_Autolink";function Zb(e){const{pathname:t}=Re();return x.jsx("a",{...e,className:D(e.className,Qb),href:`${t}${e.href}`})}function Xb(e){const{children:t,href:n}=e,{pathname:r}=Re();return t&&typeof t=="object"&&"props"in t&&t.props["data-autolink-icon"]?x.jsx(Zb,{className:D(e.className,nu),...e}):n!=null&&n.match(/^#/)?x.jsx("a",{className:D(e.className,nu),...e,href:`${r}${n}`}):x.jsx(nn,{className:D(e.className,nu),...e})}var Jb="vocs_Callout_danger",e6="vocs_Callout_info",t6="vocs_Callout_note",Zg="vocs_Callout",n6="vocs_Callout_success",r6="vocs_Callout_tip",o6="vocs_Callout_warning";const i6=Object.freeze(Object.defineProperty({__proto__:null,danger:Jb,info:e6,note:t6,root:Zg,success:n6,tip:r6,warning:o6},Symbol.toStringTag,{value:"Module"}));function a6({className:e,children:t,type:n}){return x.jsx("aside",{className:D(e,Zg,i6[n]),children:t})}var l6="vocs_Aside";function s6(e){const t=D(e.className,l6);return"data-callout"in e?x.jsx(a6,{className:t,type:e["data-callout"],children:e.children}):x.jsx("aside",{...e,className:t})}var u6="vocs_Blockquote";function c6(e){return x.jsx("blockquote",{...e,className:D(e.className,u6)})}var d6="vocs_Code";function f6(e){const t=p6(e.children);return x.jsx("code",{...e,className:D(e.className,d6),children:t})}function p6(e){return Array.isArray(e)?e.map((t,n)=>{var r,o,i;return t.props&&"data-line"in t.props&&typeof t.props.children=="string"&&t.props.children.trim()===""&&((i=(o=(r=e[n+1])==null?void 0:r.props)==null?void 0:o.className)!=null&&i.includes("twoslash-tag-line"))?null:t}).filter(Boolean):e}var h6="vocs_Details";function m6(e){return x.jsx("details",{...e,className:D(e.className,h6)})}var v6="vocs_Authors_authors",g6="vocs_Authors_link",y6="vocs_Authors",Wh="vocs_Authors_separator";function Xg(e){const{frontmatter:t}=Sr(),{authors:n=t==null?void 0:t.authors,date:r=t==null?void 0:t.date}=e,o=p.useMemo(()=>{if(n)return Array.isArray(n)?n:n.split(",").map(a=>a.trim())},[n]),i=p.useMemo(()=>r?new Date(r).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"}):null,[r]);return x.jsxs("div",{className:y6,children:[i,o&&(i?" by ":"By "),x.jsx("span",{className:v6,children:o==null?void 0:o.map((a,l)=>{const{text:s,url:c}=x6(a);return x.jsxs(p.Fragment,{children:[c?x.jsx("a",{className:g6,href:c,target:"_blank",rel:"noopener noreferrer",children:s}):s,lx.jsxs(p.Fragment,{children:[x.jsx("div",{className:E6,children:x.jsxs(qn,{to:e.path,children:[x.jsx("h2",{className:C6,children:e.title}),x.jsx(Xg,{authors:e.authors,date:e.date}),x.jsxs("p",{className:_6,children:[e.description," ",x.jsx("span",{className:k6,children:"[→]"})]})]})}),tx.jsxs(p.Fragment,{children:[x.jsx("div",{className:L6,children:t.name}),t.items.map((r,o)=>{var i;return x.jsx("div",{className:O6,style:qt({[S6]:r.length.toString(),[T6]:`${((i=t.height)==null?void 0:i.toString())??"40"}px`}),children:r.map((a,l)=>x.jsx(nn,{className:D(A6,a?I6:void 0),hideExternalIcon:!0,href:a==null?void 0:a.link,variant:"styleless",children:x.jsx("img",{className:R6,src:a==null?void 0:a.image,alt:a==null?void 0:a.name})},l))},o)})]},n))})}var N6="var(--vocs_AutolinkIcon_iconUrl)",M6="vocs_AutolinkIcon";function j6(e){const{basePath:t}=Je(),n=t;return x.jsx("div",{...e,className:D(e.className,M6),style:qt({[N6]:`url(${n}/.vocs/icons/link.svg)`})})}const ru="rovingFocusGroup.onEntryFocus",z6={bubbles:!1,cancelable:!0},sf="RovingFocusGroup",[Oc,Jg,F6]=Kl(sf),[U6,ey]=En(sf,[F6]),[V6,B6]=U6(sf),H6=p.forwardRef((e,t)=>p.createElement(Oc.Provider,{scope:e.__scopeRovingFocusGroup},p.createElement(Oc.Slot,{scope:e.__scopeRovingFocusGroup},p.createElement(W6,q({},e,{ref:t}))))),W6=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:o=!1,dir:i,currentTabStopId:a,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:s,onEntryFocus:c,...d}=e,u=p.useRef(null),f=Ue(t,u),h=Wl(i),[y=null,g]=rr({prop:a,defaultProp:l,onChange:s}),[w,m]=p.useState(!1),v=at(c),_=Jg(n),E=p.useRef(!1),[C,k]=p.useState(0);return p.useEffect(()=>{const P=u.current;if(P)return P.addEventListener(ru,v),()=>P.removeEventListener(ru,v)},[v]),p.createElement(V6,{scope:n,orientation:r,dir:h,loop:o,currentTabStopId:y,onItemFocus:p.useCallback(P=>g(P),[g]),onItemShiftTab:p.useCallback(()=>m(!0),[]),onFocusableItemAdd:p.useCallback(()=>k(P=>P+1),[]),onFocusableItemRemove:p.useCallback(()=>k(P=>P-1),[])},p.createElement(fe.div,q({tabIndex:w||C===0?-1:0,"data-orientation":r},d,{ref:f,style:{outline:"none",...e.style},onMouseDown:le(e.onMouseDown,()=>{E.current=!0}),onFocus:le(e.onFocus,P=>{const A=!E.current;if(P.target===P.currentTarget&&A&&!w){const S=new CustomEvent(ru,z6);if(P.currentTarget.dispatchEvent(S),!S.defaultPrevented){const O=_().filter(U=>U.focusable),j=O.find(U=>U.active),N=O.find(U=>U.id===y),$=[j,N,...O].filter(Boolean).map(U=>U.ref.current);ty($)}}E.current=!1}),onBlur:le(e.onBlur,()=>m(!1))})))}),K6="RovingFocusGroupItem",G6=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:o=!1,tabStopId:i,...a}=e,l=rn(),s=i||l,c=B6(K6,n),d=c.currentTabStopId===s,u=Jg(n),{onFocusableItemAdd:f,onFocusableItemRemove:h}=c;return p.useEffect(()=>{if(r)return f(),()=>h()},[r,f,h]),p.createElement(Oc.ItemSlot,{scope:n,id:s,focusable:r,active:o},p.createElement(fe.span,q({tabIndex:d?0:-1,"data-orientation":c.orientation},a,{ref:t,onMouseDown:le(e.onMouseDown,y=>{r?c.onItemFocus(s):y.preventDefault()}),onFocus:le(e.onFocus,()=>c.onItemFocus(s)),onKeyDown:le(e.onKeyDown,y=>{if(y.key==="Tab"&&y.shiftKey){c.onItemShiftTab();return}if(y.target!==y.currentTarget)return;const g=Q6(y,c.orientation,c.dir);if(g!==void 0){y.preventDefault();let m=u().filter(v=>v.focusable).map(v=>v.ref.current);if(g==="last")m.reverse();else if(g==="prev"||g==="next"){g==="prev"&&m.reverse();const v=m.indexOf(y.currentTarget);m=c.loop?Z6(m,v+1):m.slice(v+1)}setTimeout(()=>ty(m))}})})))}),q6={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function Y6(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function Q6(e,t,n){const r=Y6(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return q6[r]}function ty(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function Z6(e,t){return e.map((n,r)=>e[(t+r)%e.length])}const X6=H6,J6=G6,ny="Tabs",[eC,lA]=En(ny,[ey]),ry=ey(),[tC,uf]=eC(ny),nC=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,onValueChange:o,defaultValue:i,orientation:a="horizontal",dir:l,activationMode:s="automatic",...c}=e,d=Wl(l),[u,f]=rr({prop:r,onChange:o,defaultProp:i});return p.createElement(tC,{scope:n,baseId:rn(),value:u,onValueChange:f,orientation:a,dir:d,activationMode:s},p.createElement(fe.div,q({dir:d,"data-orientation":a},c,{ref:t})))}),rC="TabsList",oC=p.forwardRef((e,t)=>{const{__scopeTabs:n,loop:r=!0,...o}=e,i=uf(rC,n),a=ry(n);return p.createElement(X6,q({asChild:!0},a,{orientation:i.orientation,dir:i.dir,loop:r}),p.createElement(fe.div,q({role:"tablist","aria-orientation":i.orientation},o,{ref:t})))}),iC="TabsTrigger",aC=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,disabled:o=!1,...i}=e,a=uf(iC,n),l=ry(n),s=oy(a.baseId,r),c=iy(a.baseId,r),d=r===a.value;return p.createElement(J6,q({asChild:!0},l,{focusable:!o,active:d}),p.createElement(fe.button,q({type:"button",role:"tab","aria-selected":d,"aria-controls":c,"data-state":d?"active":"inactive","data-disabled":o?"":void 0,disabled:o,id:s},i,{ref:t,onMouseDown:le(e.onMouseDown,u=>{!o&&u.button===0&&u.ctrlKey===!1?a.onValueChange(r):u.preventDefault()}),onKeyDown:le(e.onKeyDown,u=>{[" ","Enter"].includes(u.key)&&a.onValueChange(r)}),onFocus:le(e.onFocus,()=>{const u=a.activationMode!=="manual";!d&&!o&&u&&a.onValueChange(r)})})))}),lC="TabsContent",sC=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,forceMount:o,children:i,...a}=e,l=uf(lC,n),s=oy(l.baseId,r),c=iy(l.baseId,r),d=r===l.value,u=p.useRef(d);return p.useEffect(()=>{const f=requestAnimationFrame(()=>u.current=!1);return()=>cancelAnimationFrame(f)},[]),p.createElement(kn,{present:o||d},({present:f})=>p.createElement(fe.div,q({"data-state":d?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":s,hidden:!f,id:c,tabIndex:0},a,{ref:t,style:{...e.style,animationDuration:u.current?"0s":void 0}}),f&&i))});function oy(e,t){return`${e}-trigger-${t}`}function iy(e,t){return`${e}-content-${t}`}const uC=nC,cC=oC,dC=aC,fC=sC;var pC="vocs_Tabs_content",hC="vocs_Tabs_list",mC="vocs_Tabs",vC="vocs_Tabs_trigger";function gC(e){return x.jsx(uC,{...e,className:D(e.className,mC)})}function yC(e){return x.jsx(cC,{...e,className:D(e.className,hC)})}function xC(e){return x.jsx(dC,{...e,className:D(e.className,vC)})}function _C(e){return x.jsx(fC,{...e,className:D(e.className,pC)})}var wC="vocs_CodeGroup";function EC({children:e}){if(!Array.isArray(e))return null;const t=e.map(n=>{const r=n.props["data-title"]?n:n.props.children,{props:o}=r,i=o["data-title"],a=o.children;return{title:i,content:a}});return x.jsxs(gC,{className:wC,defaultValue:t[0].title,children:[x.jsx(yC,{"aria-label":"Code group",children:t.map(({title:n},r)=>x.jsx(xC,{value:n||r.toString(),children:n},n||r.toString()))}),t.map(({title:n,content:r},o)=>{var a,l;const i=(l=(a=r.props)==null?void 0:a.className)==null?void 0:l.includes("shiki");return x.jsx(_C,{"data-shiki":i,value:n||o.toString(),children:r},n||o.toString())})]})}var kC="vocs_Div",bC="vocs_Step_content",CC="vocs_Step",ay="vocs_Step_title",PC="vocs_H2";function ly(e){return x.jsx(To,{...e,className:D(e.className,PC),level:2})}var AC="vocs_H3";function sy(e){return x.jsx(To,{...e,className:D(e.className,AC),level:3})}var SC="vocs_H4";function uy(e){return x.jsx(To,{...e,className:D(e.className,SC),level:4})}var TC="vocs_H5";function cy(e){return x.jsx(To,{...e,className:D(e.className,TC),level:5})}var RC="vocs_H6";function dy(e){return x.jsx(To,{...e,className:D(e.className,RC),level:6})}function $C({children:e,className:t,title:n,titleLevel:r=2}){const o=(()=>{if(r===2)return ly;if(r===3)return sy;if(r===4)return uy;if(r===5)return cy;if(r===6)return dy;throw new Error("Invalid.")})();return x.jsxs("div",{className:D(t,CC),children:[typeof n=="string"?x.jsx(o,{className:ay,children:n}):n,x.jsx("div",{className:bC,children:e})]})}var OC="vocs_Steps";function IC({children:e,className:t}){return x.jsx("div",{className:D(t,OC),children:e})}function LC({children:e}){return Array.isArray(e)?x.jsx(IC,{children:e.map(({props:t},n)=>{const[r,...o]=Array.isArray(t.children)?t.children:[t.children];return x.jsx($C,{title:p.cloneElement(r,{className:ay}),children:o},n)})}):null}var DC="vocs_Subtitle";function NC({children:e}){return x.jsx("div",{className:DC,role:"doc-subtitle",children:e})}function MC(e){const{layout:t}=Tr(),n=D(e.className,kC);return e.className==="code-group"?x.jsx(EC,{...e,className:n}):"data-authors"in e?x.jsx(Xg,{}):"data-blog-posts"in e?x.jsx(P6,{}):"data-sponsors"in e?x.jsx(D6,{}):"data-autolink-icon"in e&&t==="docs"?x.jsx(j6,{...e,className:n}):"data-vocs-steps"in e?x.jsx(LC,{...e,className:n}):e.role==="doc-subtitle"?x.jsx(NC,{...e}):x.jsx("div",{...e,className:n})}var jC="vocs_Figcaption";function zC(e){const t=D(e.className,jC);return x.jsx("figcaption",{...e,className:t})}var FC="vocs_Figure";function UC(e){const t=D(e.className,FC);return x.jsx("figure",{...e,className:t})}var VC="vocs_Header";function BC(e){return x.jsx("header",{...e,className:D(e.className,VC)})}var HC="vocs_HorizontalRule";function WC(e){return x.jsx("hr",{...e,className:D(e.className,HC)})}var KC="vocs_List_ordered",GC="vocs_List",qC="vocs_List_unordered";function Gh({ordered:e,...t}){const n=e?"ol":"ul";return x.jsx(n,{...t,className:D(t.className,GC,e?KC:qC)})}var YC="vocs_ListItem";function QC(e){return x.jsx("li",{...e,className:D(e.className,YC)})}function ZC(){const e=p.useRef(null),[t,n]=p.useState(!1);p.useEffect(()=>{if(!t)return;const o=setTimeout(()=>n(!1),1e3);return()=>clearTimeout(o)},[t]);function r(){var a;n(!0);const o=(a=e.current)==null?void 0:a.cloneNode(!0),i=o==null?void 0:o.querySelectorAll("button,.line.diff.remove,.twoslash-popup-info-hover,.twoslash-popup-info,.twoslash-meta-line,.twoslash-tag-line");for(const l of i??[])l.remove();navigator.clipboard.writeText(o==null?void 0:o.textContent)}return{copied:t,copy:r,ref:e}}var XC="vocs_CopyButton";function JC(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 68 67",children:[x.jsx("title",{children:"Checkmark"}),x.jsx("path",{fill:"currentColor",d:"M26.175 66.121c1.904 0 3.418-.83 4.492-2.49L66.263 7.332c.83-1.27 1.123-2.295 1.123-3.32 0-2.393-1.563-4.004-4.004-4.004-1.758 0-2.734.586-3.809 2.295L25.98 56.209 8.304 32.381c-1.123-1.514-2.198-2.149-3.809-2.149-2.441 0-4.2 1.71-4.2 4.15 0 1.026.44 2.15 1.27 3.224l19.971 25.927c1.367 1.758 2.734 2.588 4.639 2.588Z"})]})}function eP(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 82 82",children:[x.jsx("title",{children:"Copy"}),x.jsx("path",{fill:"currentColor",d:"M12.451 63.281h38.38c8.3 0 12.45-4.053 12.45-12.256v-38.77C63.281 4.054 59.131 0 50.831 0H12.45C4.101 0 0 4.053 0 12.256v38.77C0 59.227 4.102 63.28 12.451 63.28Zm.098-7.031c-3.516 0-5.518-1.904-5.518-5.615V12.647c0-3.711 2.002-5.616 5.518-5.616h38.183c3.516 0 5.518 1.905 5.518 5.615v37.989c0 3.71-2.002 5.615-5.518 5.615H12.55Z"}),x.jsx("path",{stroke:"currentColor",strokeWidth:"6.75px",d:"M69.385 78.266h-38.38c-3.679 0-5.782-.894-6.987-2.081-1.196-1.178-2.088-3.219-2.088-6.8v-38.77c0-3.581.892-5.622 2.088-6.8 1.205-1.187 3.308-2.08 6.988-2.08h38.379c3.65 0 5.758.89 6.973 2.084 1.203 1.182 2.103 3.225 2.103 6.796v38.77c0 3.57-.9 5.614-2.103 6.796-1.215 1.193-3.323 2.085-6.973 2.085Z"})]})}function tP({copy:e,copied:t}){return x.jsx("button",{className:XC,onClick:e,type:"button",children:t?x.jsx(st,{label:"Copied",size:"14px",icon:JC}):x.jsx(st,{label:"Copy",size:"18px",icon:eP})})}var nP="vocs_CodeBlock";function rP(e){return x.jsx("div",{...e,className:D(e.className,nP)})}function oP(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 94 99",fill:"none",children:[x.jsx("title",{children:"File"}),x.jsx("rect",{width:"77px",height:"89px",x:"8px",y:"3px",stroke:"currentColor",strokeWidth:"6px",rx:"7px"}),x.jsx("path",{stroke:"currentColor",strokeLinecap:"round",strokeWidth:"6px",d:"M25 22h43M25 35h43M25 48h22"})]})}function iP(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 79 95",fill:"none",children:[x.jsx("title",{children:"Terminal"}),x.jsx("path",{fill:"currentColor",d:"M38.281 34.033c0-1.074-.39-2.05-1.22-2.88L6.885 1.171C6.152.39 5.175 0 4.053 0 1.758 0 0 1.709 0 4.004c0 1.074.488 2.1 1.172 2.88l27.295 27.15L1.172 61.181C.488 61.962 0 62.939 0 64.062c0 2.295 1.758 4.004 4.053 4.004 1.123 0 2.1-.39 2.832-1.172l30.176-29.98c.83-.83 1.22-1.807 1.22-2.88Z"}),x.jsx("path",{stroke:"currentColor",strokeLinecap:"round",strokeWidth:"8px",d:"M36 75h55"})]})}var aP="vocs_CodeTitle";function lP({children:e,className:t,language:n,...r}){return x.jsxs("div",{...r,className:D(t,aP),children:[n==="bash"?x.jsx(st,{label:"Terminal",size:"14px",icon:iP,style:{marginTop:3}}):e.match(/\.(.*)$/)?x.jsx(st,{label:"File",size:"14px",icon:oP,style:{marginTop:1}}):null,e]})}var sP="vocs_Pre",uP="vocs_Pre_wrapper";function cP({children:e,className:t,...n}){const{copied:r,copy:o,ref:i}=ZC();function a(c){return!c||typeof c!="object"?c:"props"in c?{...c,props:{...c.props,children:Array.isArray(c.props.children)?c.props.children.map(a):a(c.props.children)}}:c}const l=p.useMemo(()=>a(e),[e]);return(c=>t!=null&&t.includes("shiki")?x.jsxs(rP,{children:[n["data-title"]&&x.jsx(lP,{language:n["data-lang"],children:n["data-title"]}),c]}):c)(x.jsx("div",{className:D(uP),children:x.jsxs("pre",{ref:i,...n,className:D(t,sP),children:["data-language"in n&&x.jsx(tP,{copied:r,copy:o}),l]})}))}var dP="vocs_Footnotes";function fP(e){return x.jsx("section",{...e,className:D(e.className,dP)})}var qh="vocs_Section";function pP(e){return"data-footnotes"in e?x.jsx(fP,{...e,className:D(e.className,qh)}):x.jsx("section",{...e,className:D(e.className,qh)})}var Yh="vocs_Span";function Wa(e,t){if(!e||!t)return!1;const n=t.getRootNode==null?void 0:t.getRootNode();if(e.contains(t))return!0;if(n&&bc(n)){let r=t;for(;r;){if(e===r)return!0;r=r.parentNode||r.host}}return!1}function Ic(e,t){const n=["mouse","pen"];return t||n.push("",void 0),n.includes(e)}function Aa(e){return(e==null?void 0:e.ownerDocument)||document}function hP(e){return"composedPath"in e?e.composedPath()[0]:e.target}const fy={...Uc},mP=fy.useInsertionEffect,vP=mP||(e=>e());function gP(e){const t=p.useRef(()=>{});return vP(()=>{t.current=e}),p.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o"floating-ui-"+Math.random().toString(36).slice(2,6)+yP++;function xP(){const[e,t]=p.useState(()=>Qh?Zh():void 0);return ko(()=>{e==null&&t(Zh())},[]),p.useEffect(()=>{Qh=!0},[]),e}const _P=fy.useId,py=_P||xP,wP=p.forwardRef(function(t,n){const{context:{placement:r,elements:{floating:o},middlewareData:{arrow:i}},width:a=14,height:l=7,tipRadius:s=0,strokeWidth:c=0,staticOffset:d,stroke:u,d:f,style:{transform:h,...y}={},...g}=t,w=py();if(!o)return null;const m=c*2,v=m/2,_=a/2*(s/-8+1),E=l/2*s/4,[C,k]=r.split("-"),P=yg.isRTL(o),A=!!f,S=C==="top"||C==="bottom",O=d&&k==="end"?"bottom":"top";let j=d&&k==="end"?"right":"left";d&&P&&(j=k==="end"?"left":"right");const N=(i==null?void 0:i.x)!=null?d||i.x:"",z=(i==null?void 0:i.y)!=null?d||i.y:"",$=f||"M0,0"+(" H"+a)+(" L"+(a-_)+","+(l-E))+(" Q"+a/2+","+l+" "+_+","+(l-E))+" Z",U={top:A?"rotate(180deg)":"",left:A?"rotate(90deg)":"rotate(-90deg)",bottom:A?"":"rotate(180deg)",right:A?"rotate(-90deg)":"rotate(90deg)"}[C];return p.createElement("svg",Lc({},g,{"aria-hidden":!0,ref:n,width:A?a:a+m,height:a,viewBox:"0 0 "+a+" "+(l>a?l:a),style:{position:"absolute",pointerEvents:"none",[j]:N,[O]:z,[C]:S||A?"100%":"calc(100% - "+m/2+"px)",transform:""+U+(h??""),...y}}),m>0&&p.createElement("path",{clipPath:"url(#"+w+")",fill:"none",stroke:u,strokeWidth:m+(f?0:1),d:$}),p.createElement("path",{stroke:m&&!f?g.fill:"none",d:$}),p.createElement("clipPath",{id:w},p.createElement("rect",{x:-v,y:v*(A?-1:1),width:a+m,height:a})))});function EP(){const e=new Map;return{emit(t,n){var r;(r=e.get(t))==null||r.forEach(o=>o(n))},on(t,n){e.set(t,[...e.get(t)||[],n])},off(t,n){var r;e.set(t,((r=e.get(t))==null?void 0:r.filter(o=>o!==n))||[])}}}const kP=p.createContext(null),bP=p.createContext(null),hy=()=>{var e;return((e=p.useContext(kP))==null?void 0:e.id)||null},my=()=>p.useContext(bP);function CP(e){return"data-floating-ui-"+e}function Xh(e){const t=p.useRef(e);return ko(()=>{t.current=e}),t}const Jh=CP("safe-polygon");function ou(e,t,n){return n&&!Ic(n)?0:typeof e=="number"?e:e==null?void 0:e[t]}function PP(e,t){t===void 0&&(t={});const{open:n,onOpenChange:r,dataRef:o,events:i,elements:{domReference:a,floating:l},refs:s}=e,{enabled:c=!0,delay:d=0,handleClose:u=null,mouseOnly:f=!1,restMs:h=0,move:y=!0}=t,g=my(),w=hy(),m=Xh(u),v=Xh(d),_=p.useRef(),E=p.useRef(),C=p.useRef(),k=p.useRef(),P=p.useRef(!0),A=p.useRef(!1),S=p.useRef(()=>{}),O=p.useCallback(()=>{var $;const U=($=o.current.openEvent)==null?void 0:$.type;return(U==null?void 0:U.includes("mouse"))&&U!=="mousedown"},[o]);p.useEffect(()=>{if(!c)return;function $(U){let{open:W}=U;W||(clearTimeout(E.current),clearTimeout(k.current),P.current=!0)}return i.on("openchange",$),()=>{i.off("openchange",$)}},[c,i]),p.useEffect(()=>{if(!c||!m.current||!n)return;function $(W){O()&&r(!1,W,"hover")}const U=Aa(l).documentElement;return U.addEventListener("mouseleave",$),()=>{U.removeEventListener("mouseleave",$)}},[l,n,r,c,m,O]);const j=p.useCallback(function($,U,W){U===void 0&&(U=!0),W===void 0&&(W="hover");const B=ou(v.current,"close",_.current);B&&!C.current?(clearTimeout(E.current),E.current=setTimeout(()=>r(!1,$,W),B)):U&&(clearTimeout(E.current),r(!1,$,W))},[v,r]),N=p.useCallback(()=>{S.current(),C.current=void 0},[]),z=p.useCallback(()=>{if(A.current){const $=Aa(s.floating.current).body;$.style.pointerEvents="",$.removeAttribute(Jh),A.current=!1}},[s]);return p.useEffect(()=>{if(!c)return;function $(){return o.current.openEvent?["click","mousedown"].includes(o.current.openEvent.type):!1}function U(L){if(clearTimeout(E.current),P.current=!1,f&&!Ic(_.current)||h>0&&ou(v.current,"open")===0)return;const F=ou(v.current,"open",_.current);F?E.current=setTimeout(()=>{r(!0,L,"hover")},F):r(!0,L,"hover")}function W(L){if($())return;S.current();const F=Aa(l);if(clearTimeout(k.current),m.current){n||clearTimeout(E.current),C.current=m.current({...e,tree:g,x:L.clientX,y:L.clientY,onClose(){z(),N(),j(L,!0,"safe-polygon")}});const J=C.current;F.addEventListener("mousemove",J),S.current=()=>{F.removeEventListener("mousemove",J)};return}(_.current==="touch"?!Wa(l,L.relatedTarget):!0)&&j(L)}function B(L){$()||m.current==null||m.current({...e,tree:g,x:L.clientX,y:L.clientY,onClose(){z(),N(),j(L)}})(L)}if(rt(a)){const L=a;return n&&L.addEventListener("mouseleave",B),l==null||l.addEventListener("mouseleave",B),y&&L.addEventListener("mousemove",U,{once:!0}),L.addEventListener("mouseenter",U),L.addEventListener("mouseleave",W),()=>{n&&L.removeEventListener("mouseleave",B),l==null||l.removeEventListener("mouseleave",B),y&&L.removeEventListener("mousemove",U),L.removeEventListener("mouseenter",U),L.removeEventListener("mouseleave",W)}}},[a,l,c,e,f,h,y,j,N,z,r,n,g,v,m,o]),ko(()=>{var $;if(c&&n&&($=m.current)!=null&&$.__options.blockPointerEvents&&O()){const W=Aa(l).body;if(W.setAttribute(Jh,""),W.style.pointerEvents="none",A.current=!0,rt(a)&&l){var U;const B=a,L=g==null||(U=g.nodesRef.current.find(F=>F.id===w))==null||(U=U.context)==null?void 0:U.elements.floating;return L&&(L.style.pointerEvents=""),B.style.pointerEvents="auto",l.style.pointerEvents="auto",()=>{B.style.pointerEvents="",l.style.pointerEvents=""}}}},[c,n,w,l,a,g,m,O]),ko(()=>{n||(_.current=void 0,N(),z())},[n,N,z]),p.useEffect(()=>()=>{N(),clearTimeout(E.current),clearTimeout(k.current),z()},[c,a,N,z]),p.useMemo(()=>{if(!c)return{};function $(U){_.current=U.pointerType}return{reference:{onPointerDown:$,onPointerEnter:$,onMouseMove(U){function W(){P.current||r(!0,U.nativeEvent,"hover")}f&&!Ic(_.current)||n||h===0||(clearTimeout(k.current),_.current==="touch"?W():k.current=setTimeout(W,h))}},floating:{onMouseEnter(){clearTimeout(E.current)},onMouseLeave(U){j(U.nativeEvent,!1)}}}},[c,f,n,h,r,j])}function AP(e,t){let n=e.filter(o=>{var i;return o.parentId===t&&((i=o.context)==null?void 0:i.open)}),r=n;for(;r.length;)r=e.filter(o=>{var i;return(i=r)==null?void 0:i.some(a=>{var l;return o.parentId===a.id&&((l=o.context)==null?void 0:l.open)})}),n=n.concat(r);return n}function SP(e){var t;e===void 0&&(e={});const{open:n=!1,onOpenChange:r,nodeId:o}=e,[i,a]=p.useState(null),[l,s]=p.useState(null),d=((t=e.elements)==null?void 0:t.reference)||i;ko(()=>{d&&(g.current=d)},[d]);const u=Eg({...e,elements:{...e.elements,...l&&{reference:l}}}),f=my(),h=hy()!=null,y=gP((A,S,O)=>{w.current.openEvent=A?S:void 0,m.emit("openchange",{open:A,event:S,reason:O,nested:h}),r==null||r(A,S,O)}),g=p.useRef(null),w=p.useRef({}),m=p.useState(()=>EP())[0],v=py(),_=p.useCallback(A=>{const S=rt(A)?{getBoundingClientRect:()=>A.getBoundingClientRect(),contextElement:A}:A;s(S),u.refs.setReference(S)},[u.refs]),E=p.useCallback(A=>{(rt(A)||A===null)&&(g.current=A,a(A)),(rt(u.refs.reference.current)||u.refs.reference.current===null||A!==null&&!rt(A))&&u.refs.setReference(A)},[u.refs]),C=p.useMemo(()=>({...u.refs,setReference:E,setPositionReference:_,domReference:g}),[u.refs,E,_]),k=p.useMemo(()=>({...u.elements,domReference:d}),[u.elements,d]),P=p.useMemo(()=>({...u,refs:C,elements:k,dataRef:w,nodeId:o,floatingId:v,events:m,open:n,onOpenChange:y}),[u,o,v,m,n,y,C,k]);return ko(()=>{const A=f==null?void 0:f.nodesRef.current.find(S=>S.id===o);A&&(A.context=P)}),p.useMemo(()=>({...u,context:P,refs:C,elements:k}),[u,C,k,P])}const em="active",tm="selected";function iu(e,t,n){const r=new Map,o=n==="item";let i=e;if(o&&e){const{[em]:a,[tm]:l,...s}=e;i=s}return{...n==="floating"&&{tabIndex:-1},...i,...t.map(a=>{const l=a?a[n]:null;return typeof l=="function"?e?l(e):null:l}).concat(e).reduce((a,l)=>(l&&Object.entries(l).forEach(s=>{let[c,d]=s;if(!(o&&[em,tm].includes(c)))if(c.indexOf("on")===0){if(r.has(c)||r.set(c,[]),typeof d=="function"){var u;(u=r.get(c))==null||u.push(d),a[c]=function(){for(var f,h=arguments.length,y=new Array(h),g=0;gw(...y)).find(w=>w!==void 0)}}}else a[c]=d}),a),{})}}function TP(e){e===void 0&&(e=[]);const t=e,n=p.useCallback(i=>iu(i,e,"reference"),t),r=p.useCallback(i=>iu(i,e,"floating"),t),o=p.useCallback(i=>iu(i,e,"item"),e.map(i=>i==null?void 0:i.item));return p.useMemo(()=>({getReferenceProps:n,getFloatingProps:r,getItemProps:o}),[n,r,o])}function nm(e,t){const[n,r]=e;let o=!1;const i=t.length;for(let a=0,l=i-1;a=r!=u>=r&&n<=(d-s)*(r-c)/(u-c)+s&&(o=!o)}return o}function RP(e,t){return e[0]>=t.x&&e[0]<=t.x+t.width&&e[1]>=t.y&&e[1]<=t.y+t.height}function $P(e){e===void 0&&(e={});const{buffer:t=.5,blockPointerEvents:n=!1,requireIntent:r=!0}=e;let o,i=!1,a=null,l=null,s=performance.now();function c(u,f){const h=performance.now(),y=h-s;if(a===null||l===null||y===0)return a=u,l=f,s=h,null;const g=u-a,w=f-l,v=Math.sqrt(g*g+w*w)/y;return a=u,l=f,s=h,v}const d=u=>{let{x:f,y:h,placement:y,elements:g,onClose:w,nodeId:m,tree:v}=u;return function(E){function C(){clearTimeout(o),w()}if(clearTimeout(o),!g.domReference||!g.floating||y==null||f==null||h==null)return;const{clientX:k,clientY:P}=E,A=[k,P],S=hP(E),O=E.type==="mouseleave",j=Wa(g.floating,S),N=Wa(g.domReference,S),z=g.domReference.getBoundingClientRect(),$=g.floating.getBoundingClientRect(),U=y.split("-")[0],W=f>$.right-$.width/2,B=h>$.bottom-$.height/2,L=RP(A,z),F=$.width>z.width,G=$.height>z.height,J=(F?z:$).left,ue=(F?z:$).right,Ve=(G?z:$).top,xe=(G?z:$).bottom;if(j&&(i=!0,!O))return;if(N&&(i=!1),N&&!O){i=!0;return}if(O&&rt(E.relatedTarget)&&Wa(g.floating,E.relatedTarget)||v&&AP(v.nodesRef.current,m).some(Be=>{let{context:we}=Be;return we==null?void 0:we.open}))return;if(U==="top"&&h>=z.bottom-1||U==="bottom"&&h<=z.top+1||U==="left"&&f>=z.right-1||U==="right"&&f<=z.left+1)return C();let $e=[];switch(U){case"top":$e=[[J,z.top+1],[J,$.bottom-1],[ue,$.bottom-1],[ue,z.top+1]];break;case"bottom":$e=[[J,$.top+1],[J,z.bottom-1],[ue,z.bottom-1],[ue,$.top+1]];break;case"left":$e=[[$.right-1,xe],[$.right-1,Ve],[z.left+1,Ve],[z.left+1,xe]];break;case"right":$e=[[z.right-1,xe],[z.right-1,Ve],[$.left+1,Ve],[$.left+1,xe]];break}function _e(Be){let[we,Ce]=Be;switch(U){case"top":{const Mt=[F?we+t/2:W?we+t*4:we-t*4,Ce+t+1],Pe=[F?we-t/2:W?we+t*4:we-t*4,Ce+t+1],dt=[[$.left,W||F?$.bottom-t:$.top],[$.right,W?F?$.bottom-t:$.top:$.bottom-t]];return[Mt,Pe,...dt]}case"bottom":{const Mt=[F?we+t/2:W?we+t*4:we-t*4,Ce-t],Pe=[F?we-t/2:W?we+t*4:we-t*4,Ce-t],dt=[[$.left,W||F?$.top+t:$.bottom],[$.right,W?F?$.top+t:$.bottom:$.top+t]];return[Mt,Pe,...dt]}case"left":{const Mt=[we+t+1,G?Ce+t/2:B?Ce+t*4:Ce-t*4],Pe=[we+t+1,G?Ce-t/2:B?Ce+t*4:Ce-t*4];return[...[[B||G?$.right-t:$.left,$.top],[B?G?$.right-t:$.left:$.right-t,$.bottom]],Mt,Pe]}case"right":{const Mt=[we-t,G?Ce+t/2:B?Ce+t*4:Ce-t*4],Pe=[we-t,G?Ce-t/2:B?Ce+t*4:Ce-t*4],dt=[[B||G?$.left+t:$.right,$.top],[B?G?$.left+t:$.right:$.left+t,$.bottom]];return[Mt,Pe,...dt]}}}if(!nm([k,P],$e)){if(i&&!L)return C();if(!O&&r){const Be=c(E.clientX,E.clientY);if(Be!==null&&Be<.1)return C()}nm([k,P],_e([f,h]))?!i&&r&&(o=window.setTimeout(C,40)):C()}}};return d.__options={blockPointerEvents:n},d}function OP({children:e,...t}){const[n,r]=e,o=p.useRef(null),[i,a]=p.useState(!1),{context:l,refs:s,floatingStyles:c}=SP({middleware:[_g({element:o}),ug(8),xg()],open:i,onOpenChange:a,placement:"bottom-start"}),d=PP(l,{handleClose:$P()}),{getReferenceProps:u,getFloatingProps:f}=TP([d]),h=r.props.children,y=n.props.children;return x.jsxs("span",{...t,children:[x.jsx("span",{className:"twoslash-target",ref:s.setReference,...u(),children:h}),i&&x.jsxs("div",{className:"twoslash-popup-info-hover",ref:s.setFloating,style:c,...f(),children:[x.jsx(wP,{ref:o,context:l,fill:Gp.background5,height:3,stroke:Gp.border2,strokeWidth:1,width:7}),x.jsx("div",{className:"twoslash-popup-scroll-container",children:y})]})]})}function IP(e){var n;const t=D(e.className,Yh);return(n=e.className)!=null&&n.includes("twoslash-hover")?x.jsx(OP,{...e,className:t}):x.jsx("span",{...e,className:D(e.className,Yh)})}var LP="vocs_CalloutTitle";function DP({className:e,children:t}){return x.jsx("strong",{className:D(e,LP),children:t})}var rm="vocs_Strong";function NP(e){return"data-callout-title"in e&&typeof e.children=="string"?x.jsx(DP,{...e,className:D(e.className,rm),children:e.children}):x.jsx("strong",{...e,className:D(e.className,rm)})}var MP="vocs_Summary";function jP(e){return x.jsx("summary",{...e,className:D(e.className,MP)})}var zP="vocs_Table";function FP(e){return x.jsx("table",{...e,className:D(e.className,zP)})}var UP="vocs_TableCell";function VP(e){return x.jsx("td",{...e,className:D(e.className,UP)})}var BP="vocs_TableHeader";function HP(e){return x.jsx("th",{...e,className:D(e.className,BP)})}var WP="vocs_TableRow";function KP(e){return x.jsx("tr",{...e,className:D(e.className,WP)})}const GP={a:Xb,aside:s6,blockquote:c6,code:f6,details:m6,div:MC,pre:cP,header:BC,figcaption:zC,figure:UC,h1:W0,h2:ly,h3:sy,h4:uy,h5:cy,h6:dy,hr:WC,kd:T1,li:QC,ol:e=>x.jsx(Gh,{ordered:!0,...e}),p:K0,section:pP,span:IP,strong:NP,summary:jP,table:FP,td:VP,th:HP,tr:KP,ul:e=>x.jsx(Gh,{ordered:!1,...e})};function qP(){const{pathname:e}=Re(),t=Je(),{ogImageUrl:n}=t;if(!n)return;if(typeof n=="string")return n;const r=p.useMemo(()=>{const o=Object.keys(n).filter(i=>e.startsWith(i));return o[o.length-1]},[n,e]);if(r)return n[r]}function Dc(e){const{children:t,filePath:n,frontmatter:r,lastUpdatedAt:o,path:i}=e,{pathname:a}=Re(),l=p.useRef();return p.useEffect(()=>{l.current=a}),x.jsxs(x.Fragment,{children:[x.jsx(YP,{frontmatter:r}),typeof window<"u"&&x.jsx(_2,{}),x.jsx(tb,{components:GP,children:x.jsx(j5,{frontmatter:r,path:i,children:x.jsx(Y0.Provider,{value:{filePath:n,frontmatter:r,lastUpdatedAt:o,previousPath:l.current},children:t})})})]})}function YP({frontmatter:e}){const t=Je(),n=qP(),{baseUrl:r,font:o,iconUrl:i,logoUrl:a}=t,l=(e==null?void 0:e.title)??t.title,s=(e==null?void 0:e.description)??t.description,c=t.title&&!l.includes(t.title),d=typeof window<"u"&&window.location.hostname==="localhost";return x.jsxs($c,{defaultTitle:t.title,titleTemplate:c?t.titleTemplate:void 0,children:[l&&x.jsx("title",{children:l}),r&&!0&&!d&&x.jsx("base",{href:r}),s!=="undefined"&&x.jsx("meta",{name:"description",content:s}),i&&typeof i=="string"&&x.jsx("link",{rel:"icon",href:i,type:au(i)}),i&&typeof i!="string"&&x.jsx("link",{rel:"icon",href:i.light,type:au(i.light)}),i&&typeof i!="string"&&x.jsx("link",{rel:"icon",href:i.dark,type:au(i.dark),media:"(prefers-color-scheme: dark)"}),x.jsx("meta",{property:"og:type",content:"website"}),x.jsx("meta",{property:"og:title",content:l||t.title}),r&&x.jsx("meta",{property:"og:url",content:r}),s!=="undefined"&&x.jsx("meta",{property:"og:description",content:s}),n&&x.jsx("meta",{property:"og:image",content:n.replace("%logo",`${r||""}${typeof a=="string"?a:(a==null?void 0:a.dark)||""}`).replace("%title",l||"").replace("%description",(s!=="undefined"?s:"")||"")}),(o==null?void 0:o.google)&&x.jsx("link",{rel:"preconnect",href:"https://fonts.googleapis.com"}),(o==null?void 0:o.google)&&x.jsx("link",{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:""}),(o==null?void 0:o.google)&&x.jsx("link",{href:`https://fonts.googleapis.com/css2?family=${o.google}:wght@300;400;500&display=swap`,rel:"stylesheet"}),x.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),n&&x.jsx("meta",{property:"twitter:image",content:n.replace("%logo",`${r||""}${typeof a=="string"?a:(a==null?void 0:a.dark)||""}`).replace("%title",l||"").replace("%description",(s!=="undefined"?s:"")||"")})]})}function au(e){if(e.endsWith(".svg"))return"image/svg+xml";if(e.endsWith(".png"))return"image/png";if(e.endsWith(".jpg"))return"image/jpeg";if(e.endsWith(".ico"))return"image/x-icon";if(e.endsWith(".webp"))return"image/webp"}const QP=(()=>{const e=zd.find(({path:t})=>t==="*");return e?{path:e.path,lazy:async()=>{const{frontmatter:t,...n}=await e.lazy();return{...n,element:x.jsx(Dc,{frontmatter:t,path:e.path,children:x.jsx(Pc,{children:x.jsx(n.default,{})})})}}}:{path:"*",lazy:void 0,element:x.jsx(Dc,{frontmatter:{layout:"minimal"},path:"*",children:x.jsx(Pc,{children:x.jsx(K2,{})})})}})(),om=[...zd.filter(({path:e})=>e!=="*").map(e=>({path:e.path,lazy:async()=>{const{frontmatter:t,...n}=await e.lazy();return{...n,element:x.jsx(Dc,{filePath:e.filePath,frontmatter:t,lastUpdatedAt:e.lastUpdatedAt,path:e.path,children:x.jsx(Pc,{children:x.jsx(n.default,{})})})}}})),QP];async function ZP(e,t){var r;const n=(r=cr(e,window.location,t))==null?void 0:r.filter(o=>o.route.lazy);n&&(n==null?void 0:n.length)>0&&await Promise.all(n.map(async o=>{const i=await o.route.lazy();Object.assign(o.route,{...i,lazy:void 0})}))}function XP(){const e=document.querySelectorAll('style[data-vocs-temp-style="true"]');for(const t of e)t.remove()}JP();async function JP(){const e=z0().basePath;await ZP(om,e),XP();const t=l2(om,{basename:e});x0(document.getElementById("app"),x.jsx(P2,{children:x.jsx(v2,{router:t})}))}export{_C as C,nn as L,gC as R,xC as T,U7 as a,yC as b,D as c,eb as d,a6 as e,Ey as f,eA as g,Xn as h,x as j,p as r,Je as u}; +*/var Uh=Object.getOwnPropertySymbols,_b=Object.prototype.hasOwnProperty,wb=Object.prototype.propertyIsEnumerable;function Eb(e){if(e==null)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}function kb(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de",Object.getOwnPropertyNames(e)[0]==="5")return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;var r=Object.getOwnPropertyNames(t).map(function(i){return t[i]});if(r.join("")!=="0123456789")return!1;var o={};return"abcdefghijklmnopqrst".split("").forEach(function(i){o[i]=i}),Object.keys(Object.assign({},o)).join("")==="abcdefghijklmnopqrst"}catch{return!1}}var bb=kb()?Object.assign:function(e,t){for(var n,r=Eb(e),o,i=1;i=0||Object.prototype.hasOwnProperty.call(e,r)&&(n[r]=e[r]);return n},Ob=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t&&(typeof t=="object"||typeof t=="function")?t:e},Sc=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!0;return n===!1?String(t):String(t).replace(/&/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")},Ib=function(t){var n=uo(t,ee.TITLE),r=uo(t,Ni.TITLE_TEMPLATE);if(r&&n)return r.replace(/%s/g,function(){return Array.isArray(n)?n.join(""):n});var o=uo(t,Ni.DEFAULT_TITLE);return n||o||void 0},Lb=function(t){return uo(t,Ni.ON_CHANGE_CLIENT_STATE)||function(){}},tu=function(t,n){return n.filter(function(r){return typeof r[t]<"u"}).map(function(r){return r[t]}).reduce(function(r,o){return pt({},r,o)},{})},Db=function(t,n){return n.filter(function(r){return typeof r[ee.BASE]<"u"}).map(function(r){return r[ee.BASE]}).reverse().reduce(function(r,o){if(!r.length)for(var i=Object.keys(o),a=0;a=0;r--){var o=t[r];if(o.hasOwnProperty(n))return o[n]}return null},Nb=function(t){return{baseTag:Db([ke.HREF,ke.TARGET],t),bodyAttributes:tu(mr.BODY,t),defer:uo(t,Ni.DEFER),encode:uo(t,Ni.ENCODE_SPECIAL_CHARACTERS),htmlAttributes:tu(mr.HTML,t),linkTags:Qo(ee.LINK,[ke.REL,ke.HREF],t),metaTags:Qo(ee.META,[ke.NAME,ke.CHARSET,ke.HTTPEQUIV,ke.PROPERTY,ke.ITEM_PROP],t),noscriptTags:Qo(ee.NOSCRIPT,[ke.INNER_HTML],t),onChangeClientState:Lb(t),scriptTags:Qo(ee.SCRIPT,[ke.SRC,ke.INNER_HTML],t),styleTags:Qo(ee.STYLE,[ke.CSS_TEXT],t),title:Ib(t),titleAttributes:tu(mr.TITLE,t)}},Tc=function(){var e=Date.now();return function(t){var n=Date.now();n-e>16?(e=n,t(n)):setTimeout(function(){Tc(t)},0)}}(),Bh=function(t){return clearTimeout(t)},Mb=typeof window<"u"?window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||Tc:global.requestAnimationFrame||Tc,jb=typeof window<"u"?window.cancelAnimationFrame||window.webkitCancelAnimationFrame||window.mozCancelAnimationFrame||Bh:global.cancelAnimationFrame||Bh,zb=function(t){return console&&typeof console.warn=="function"&&console.warn(t)},Zo=null,Fb=function(t){Zo&&jb(Zo),t.defer?Zo=Mb(function(){Hh(t,function(){Zo=null})}):(Hh(t),Zo=null)},Hh=function(t,n){var r=t.baseTag,o=t.bodyAttributes,i=t.htmlAttributes,a=t.linkTags,l=t.metaTags,s=t.noscriptTags,c=t.onChangeClientState,d=t.scriptTags,u=t.styleTags,f=t.title,h=t.titleAttributes;Rc(ee.BODY,o),Rc(ee.HTML,i),Ub(f,h);var y={baseTag:Fr(ee.BASE,r),linkTags:Fr(ee.LINK,a),metaTags:Fr(ee.META,l),noscriptTags:Fr(ee.NOSCRIPT,s),scriptTags:Fr(ee.SCRIPT,d),styleTags:Fr(ee.STYLE,u)},g={},w={};Object.keys(y).forEach(function(m){var v=y[m],_=v.newTags,E=v.oldTags;_.length&&(g[m]=_),E.length&&(w[m]=y[m].oldTags)}),n&&n(),c(t,g,w)},Gg=function(t){return Array.isArray(t)?t.join(""):t},Ub=function(t,n){typeof t<"u"&&document.title!==t&&(document.title=Gg(t)),Rc(ee.TITLE,n)},Rc=function(t,n){var r=document.getElementsByTagName(t)[0];if(r){for(var o=r.getAttribute(Ht),i=o?o.split(","):[],a=[].concat(i),l=Object.keys(n),s=0;s=0;f--)r.removeAttribute(a[f]);i.length===a.length?r.removeAttribute(Ht):r.getAttribute(Ht)!==l.join(",")&&r.setAttribute(Ht,l.join(","))}},Fr=function(t,n){var r=document.head||document.querySelector(ee.HEAD),o=r.querySelectorAll(t+"["+Ht+"]"),i=Array.prototype.slice.call(o),a=[],l=void 0;return n&&n.length&&n.forEach(function(s){var c=document.createElement(t);for(var d in s)if(s.hasOwnProperty(d))if(d===ke.INNER_HTML)c.innerHTML=s.innerHTML;else if(d===ke.CSS_TEXT)c.styleSheet?c.styleSheet.cssText=s.cssText:c.appendChild(document.createTextNode(s.cssText));else{var u=typeof s[d]>"u"?"":s[d];c.setAttribute(d,u)}c.setAttribute(Ht,"true"),i.some(function(f,h){return l=h,c.isEqualNode(f)})?i.splice(l,1):a.push(c)}),i.forEach(function(s){return s.parentNode.removeChild(s)}),a.forEach(function(s){return r.appendChild(s)}),{oldTags:i,newTags:a}},qg=function(t){return Object.keys(t).reduce(function(n,r){var o=typeof t[r]<"u"?r+'="'+t[r]+'"':""+r;return n?n+" "+o:o},"")},Vb=function(t,n,r,o){var i=qg(r),a=Gg(n);return i?"<"+t+" "+Ht+'="true" '+i+">"+Sc(a,o)+"":"<"+t+" "+Ht+'="true">'+Sc(a,o)+""},Bb=function(t,n,r){return n.reduce(function(o,i){var a=Object.keys(i).filter(function(c){return!(c===ke.INNER_HTML||c===ke.CSS_TEXT)}).reduce(function(c,d){var u=typeof i[d]>"u"?d:d+'="'+Sc(i[d],r)+'"';return c?c+" "+u:u},""),l=i.innerHTML||i.cssText||"",s=Ab.indexOf(t)===-1;return o+"<"+t+" "+Ht+'="true" '+a+(s?"/>":">"+l+"")},"")},Yg=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(t).reduce(function(r,o){return r[bl[o]||o]=t[o],r},n)},Hb=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return Object.keys(t).reduce(function(r,o){return r[Pb[o]||o]=t[o],r},n)},Wb=function(t,n,r){var o,i=(o={key:n},o[Ht]=!0,o),a=Yg(r,i);return[Z.createElement(ee.TITLE,a,n)]},Kb=function(t,n){return n.map(function(r,o){var i,a=(i={key:o},i[Ht]=!0,i);return Object.keys(r).forEach(function(l){var s=bl[l]||l;if(s===ke.INNER_HTML||s===ke.CSS_TEXT){var c=r.innerHTML||r.cssText;a.dangerouslySetInnerHTML={__html:c}}else a[s]=r[l]}),Z.createElement(t,a)})},an=function(t,n,r){switch(t){case ee.TITLE:return{toComponent:function(){return Wb(t,n.title,n.titleAttributes)},toString:function(){return Vb(t,n.title,n.titleAttributes,r)}};case mr.BODY:case mr.HTML:return{toComponent:function(){return Yg(n)},toString:function(){return qg(n)}};default:return{toComponent:function(){return Kb(t,n)},toString:function(){return Bb(t,n,r)}}}},Qg=function(t){var n=t.baseTag,r=t.bodyAttributes,o=t.encode,i=t.htmlAttributes,a=t.linkTags,l=t.metaTags,s=t.noscriptTags,c=t.scriptTags,d=t.styleTags,u=t.title,f=u===void 0?"":u,h=t.titleAttributes;return{base:an(ee.BASE,n,o),bodyAttributes:an(mr.BODY,r,o),htmlAttributes:an(mr.HTML,i,o),link:an(ee.LINK,a,o),meta:an(ee.META,l,o),noscript:an(ee.NOSCRIPT,s,o),script:an(ee.SCRIPT,c,o),style:an(ee.STYLE,d,o),title:an(ee.TITLE,{title:f,titleAttributes:h},o)}},Gb=function(t){var n,r;return r=n=function(o){$b(i,o);function i(){return Tb(this,i),Ob(this,o.apply(this,arguments))}return i.prototype.shouldComponentUpdate=function(l){return!xb(this.props,l)},i.prototype.mapNestedChildrenToProps=function(l,s){if(!s)return null;switch(l.type){case ee.SCRIPT:case ee.NOSCRIPT:return{innerHTML:s};case ee.STYLE:return{cssText:s}}throw new Error("<"+l.type+" /> elements are self-closing and can not contain children. Refer to our API for more information.")},i.prototype.flattenArrayTypeChildren=function(l){var s,c=l.child,d=l.arrayTypeChildren,u=l.newChildProps,f=l.nestedChildren;return pt({},d,(s={},s[c.type]=[].concat(d[c.type]||[],[pt({},u,this.mapNestedChildrenToProps(c,f))]),s))},i.prototype.mapObjectTypeChildren=function(l){var s,c,d=l.child,u=l.newProps,f=l.newChildProps,h=l.nestedChildren;switch(d.type){case ee.TITLE:return pt({},u,(s={},s[d.type]=h,s.titleAttributes=pt({},f),s));case ee.BODY:return pt({},u,{bodyAttributes:pt({},f)});case ee.HTML:return pt({},u,{htmlAttributes:pt({},f)})}return pt({},u,(c={},c[d.type]=pt({},f),c))},i.prototype.mapArrayTypeChildrenToProps=function(l,s){var c=pt({},s);return Object.keys(l).forEach(function(d){var u;c=pt({},c,(u={},u[d]=l[d],u))}),c},i.prototype.warnOnInvalidChildren=function(l,s){return!0},i.prototype.mapChildrenToProps=function(l,s){var c=this,d={};return Z.Children.forEach(l,function(u){if(!(!u||!u.props)){var f=u.props,h=f.children,y=Vh(f,["children"]),g=Hb(y);switch(c.warnOnInvalidChildren(u,h),u.type){case ee.LINK:case ee.META:case ee.NOSCRIPT:case ee.SCRIPT:case ee.STYLE:d=c.flattenArrayTypeChildren({child:u,arrayTypeChildren:d,newChildProps:g,nestedChildren:h});break;default:s=c.mapObjectTypeChildren({child:u,newProps:s,newChildProps:g,nestedChildren:h});break}}}),s=this.mapArrayTypeChildrenToProps(d,s),s},i.prototype.render=function(){var l=this.props,s=l.children,c=Vh(l,["children"]),d=pt({},c);return s&&(d=this.mapChildrenToProps(s,d)),Z.createElement(t,d)},Rb(i,null,[{key:"canUseDOM",set:function(l){t.canUseDOM=l}}]),i}(Z.Component),n.propTypes={base:Ee.object,bodyAttributes:Ee.object,children:Ee.oneOfType([Ee.arrayOf(Ee.node),Ee.node]),defaultTitle:Ee.string,defer:Ee.bool,encodeSpecialCharacters:Ee.bool,htmlAttributes:Ee.object,link:Ee.arrayOf(Ee.object),meta:Ee.arrayOf(Ee.object),noscript:Ee.arrayOf(Ee.object),onChangeClientState:Ee.func,script:Ee.arrayOf(Ee.object),style:Ee.arrayOf(Ee.object),title:Ee.string,titleAttributes:Ee.object,titleTemplate:Ee.string},n.defaultProps={defer:!0,encodeSpecialCharacters:!0},n.peek=t.peek,n.rewind=function(){var o=t.rewind();return o||(o=Qg({baseTag:[],bodyAttributes:{},encodeSpecialCharacters:!0,htmlAttributes:{},linkTags:[],metaTags:[],noscriptTags:[],scriptTags:[],styleTags:[],title:"",titleAttributes:{}})),o},r},qb=function(){return null},Yb=pb(Nb,Fb,Qg)(qb),$c=Gb(Yb);$c.renderStatic=$c.rewind;var nu="vocs_Anchor",Qb="vocs_Autolink";function Zb(e){const{pathname:t}=Re();return x.jsx("a",{...e,className:D(e.className,Qb),href:`${t}${e.href}`})}function Xb(e){const{children:t,href:n}=e,{pathname:r}=Re();return t&&typeof t=="object"&&"props"in t&&t.props["data-autolink-icon"]?x.jsx(Zb,{className:D(e.className,nu),...e}):n!=null&&n.match(/^#/)?x.jsx("a",{className:D(e.className,nu),...e,href:`${r}${n}`}):x.jsx(nn,{className:D(e.className,nu),...e})}var Jb="vocs_Callout_danger",eC="vocs_Callout_info",tC="vocs_Callout_note",Zg="vocs_Callout",nC="vocs_Callout_success",rC="vocs_Callout_tip",oC="vocs_Callout_warning";const iC=Object.freeze(Object.defineProperty({__proto__:null,danger:Jb,info:eC,note:tC,root:Zg,success:nC,tip:rC,warning:oC},Symbol.toStringTag,{value:"Module"}));function aC({className:e,children:t,type:n}){return x.jsx("aside",{className:D(e,Zg,iC[n]),children:t})}var lC="vocs_Aside";function sC(e){const t=D(e.className,lC);return"data-callout"in e?x.jsx(aC,{className:t,type:e["data-callout"],children:e.children}):x.jsx("aside",{...e,className:t})}var uC="vocs_Blockquote";function cC(e){return x.jsx("blockquote",{...e,className:D(e.className,uC)})}var dC="vocs_Code";function fC(e){const t=pC(e.children);return x.jsx("code",{...e,className:D(e.className,dC),children:t})}function pC(e){return Array.isArray(e)?e.map((t,n)=>{var r,o,i;return t.props&&"data-line"in t.props&&typeof t.props.children=="string"&&t.props.children.trim()===""&&((i=(o=(r=e[n+1])==null?void 0:r.props)==null?void 0:o.className)!=null&&i.includes("twoslash-tag-line"))?null:t}).filter(Boolean):e}var hC="vocs_Details";function mC(e){return x.jsx("details",{...e,className:D(e.className,hC)})}var vC="vocs_Authors_authors",gC="vocs_Authors_link",yC="vocs_Authors",Wh="vocs_Authors_separator";function Xg(e){const{frontmatter:t}=Sr(),{authors:n=t==null?void 0:t.authors,date:r=t==null?void 0:t.date}=e,o=p.useMemo(()=>{if(n)return Array.isArray(n)?n:n.split(",").map(a=>a.trim())},[n]),i=p.useMemo(()=>r?new Date(r).toLocaleDateString("en-US",{year:"numeric",month:"long",day:"numeric"}):null,[r]);return x.jsxs("div",{className:yC,children:[i,o&&(i?" by ":"By "),x.jsx("span",{className:vC,children:o==null?void 0:o.map((a,l)=>{const{text:s,url:c}=xC(a);return x.jsxs(p.Fragment,{children:[c?x.jsx("a",{className:gC,href:c,target:"_blank",rel:"noopener noreferrer",children:s}):s,lx.jsxs(p.Fragment,{children:[x.jsx("div",{className:EC,children:x.jsxs(qn,{to:e.path,children:[x.jsx("h2",{className:CC,children:e.title}),x.jsx(Xg,{authors:e.authors,date:e.date}),x.jsxs("p",{className:_C,children:[e.description," ",x.jsx("span",{className:kC,children:"[→]"})]})]})}),tx.jsxs(p.Fragment,{children:[x.jsx("div",{className:LC,children:t.name}),t.items.map((r,o)=>{var i;return x.jsx("div",{className:OC,style:qt({[SC]:r.length.toString(),[TC]:`${((i=t.height)==null?void 0:i.toString())??"40"}px`}),children:r.map((a,l)=>x.jsx(nn,{className:D(AC,a?IC:void 0),hideExternalIcon:!0,href:a==null?void 0:a.link,variant:"styleless",children:x.jsx("img",{className:RC,src:a==null?void 0:a.image,alt:a==null?void 0:a.name})},l))},o)})]},n))})}var NC="var(--vocs_AutolinkIcon_iconUrl)",MC="vocs_AutolinkIcon";function jC(e){const{basePath:t}=Je(),n=t;return x.jsx("div",{...e,className:D(e.className,MC),style:qt({[NC]:`url(${n}/.vocs/icons/link.svg)`})})}const ru="rovingFocusGroup.onEntryFocus",zC={bubbles:!1,cancelable:!0},sf="RovingFocusGroup",[Oc,Jg,FC]=Kl(sf),[UC,ey]=En(sf,[FC]),[VC,BC]=UC(sf),HC=p.forwardRef((e,t)=>p.createElement(Oc.Provider,{scope:e.__scopeRovingFocusGroup},p.createElement(Oc.Slot,{scope:e.__scopeRovingFocusGroup},p.createElement(WC,q({},e,{ref:t}))))),WC=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,orientation:r,loop:o=!1,dir:i,currentTabStopId:a,defaultCurrentTabStopId:l,onCurrentTabStopIdChange:s,onEntryFocus:c,...d}=e,u=p.useRef(null),f=Ue(t,u),h=Wl(i),[y=null,g]=rr({prop:a,defaultProp:l,onChange:s}),[w,m]=p.useState(!1),v=at(c),_=Jg(n),E=p.useRef(!1),[C,k]=p.useState(0);return p.useEffect(()=>{const P=u.current;if(P)return P.addEventListener(ru,v),()=>P.removeEventListener(ru,v)},[v]),p.createElement(VC,{scope:n,orientation:r,dir:h,loop:o,currentTabStopId:y,onItemFocus:p.useCallback(P=>g(P),[g]),onItemShiftTab:p.useCallback(()=>m(!0),[]),onFocusableItemAdd:p.useCallback(()=>k(P=>P+1),[]),onFocusableItemRemove:p.useCallback(()=>k(P=>P-1),[])},p.createElement(fe.div,q({tabIndex:w||C===0?-1:0,"data-orientation":r},d,{ref:f,style:{outline:"none",...e.style},onMouseDown:le(e.onMouseDown,()=>{E.current=!0}),onFocus:le(e.onFocus,P=>{const A=!E.current;if(P.target===P.currentTarget&&A&&!w){const S=new CustomEvent(ru,zC);if(P.currentTarget.dispatchEvent(S),!S.defaultPrevented){const O=_().filter(U=>U.focusable),j=O.find(U=>U.active),N=O.find(U=>U.id===y),$=[j,N,...O].filter(Boolean).map(U=>U.ref.current);ty($)}}E.current=!1}),onBlur:le(e.onBlur,()=>m(!1))})))}),KC="RovingFocusGroupItem",GC=p.forwardRef((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:o=!1,tabStopId:i,...a}=e,l=rn(),s=i||l,c=BC(KC,n),d=c.currentTabStopId===s,u=Jg(n),{onFocusableItemAdd:f,onFocusableItemRemove:h}=c;return p.useEffect(()=>{if(r)return f(),()=>h()},[r,f,h]),p.createElement(Oc.ItemSlot,{scope:n,id:s,focusable:r,active:o},p.createElement(fe.span,q({tabIndex:d?0:-1,"data-orientation":c.orientation},a,{ref:t,onMouseDown:le(e.onMouseDown,y=>{r?c.onItemFocus(s):y.preventDefault()}),onFocus:le(e.onFocus,()=>c.onItemFocus(s)),onKeyDown:le(e.onKeyDown,y=>{if(y.key==="Tab"&&y.shiftKey){c.onItemShiftTab();return}if(y.target!==y.currentTarget)return;const g=QC(y,c.orientation,c.dir);if(g!==void 0){y.preventDefault();let m=u().filter(v=>v.focusable).map(v=>v.ref.current);if(g==="last")m.reverse();else if(g==="prev"||g==="next"){g==="prev"&&m.reverse();const v=m.indexOf(y.currentTarget);m=c.loop?ZC(m,v+1):m.slice(v+1)}setTimeout(()=>ty(m))}})})))}),qC={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function YC(e,t){return t!=="rtl"?e:e==="ArrowLeft"?"ArrowRight":e==="ArrowRight"?"ArrowLeft":e}function QC(e,t,n){const r=YC(e.key,n);if(!(t==="vertical"&&["ArrowLeft","ArrowRight"].includes(r))&&!(t==="horizontal"&&["ArrowUp","ArrowDown"].includes(r)))return qC[r]}function ty(e){const t=document.activeElement;for(const n of e)if(n===t||(n.focus(),document.activeElement!==t))return}function ZC(e,t){return e.map((n,r)=>e[(t+r)%e.length])}const XC=HC,JC=GC,ny="Tabs",[e8,lA]=En(ny,[ey]),ry=ey(),[t8,uf]=e8(ny),n8=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,onValueChange:o,defaultValue:i,orientation:a="horizontal",dir:l,activationMode:s="automatic",...c}=e,d=Wl(l),[u,f]=rr({prop:r,onChange:o,defaultProp:i});return p.createElement(t8,{scope:n,baseId:rn(),value:u,onValueChange:f,orientation:a,dir:d,activationMode:s},p.createElement(fe.div,q({dir:d,"data-orientation":a},c,{ref:t})))}),r8="TabsList",o8=p.forwardRef((e,t)=>{const{__scopeTabs:n,loop:r=!0,...o}=e,i=uf(r8,n),a=ry(n);return p.createElement(XC,q({asChild:!0},a,{orientation:i.orientation,dir:i.dir,loop:r}),p.createElement(fe.div,q({role:"tablist","aria-orientation":i.orientation},o,{ref:t})))}),i8="TabsTrigger",a8=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,disabled:o=!1,...i}=e,a=uf(i8,n),l=ry(n),s=oy(a.baseId,r),c=iy(a.baseId,r),d=r===a.value;return p.createElement(JC,q({asChild:!0},l,{focusable:!o,active:d}),p.createElement(fe.button,q({type:"button",role:"tab","aria-selected":d,"aria-controls":c,"data-state":d?"active":"inactive","data-disabled":o?"":void 0,disabled:o,id:s},i,{ref:t,onMouseDown:le(e.onMouseDown,u=>{!o&&u.button===0&&u.ctrlKey===!1?a.onValueChange(r):u.preventDefault()}),onKeyDown:le(e.onKeyDown,u=>{[" ","Enter"].includes(u.key)&&a.onValueChange(r)}),onFocus:le(e.onFocus,()=>{const u=a.activationMode!=="manual";!d&&!o&&u&&a.onValueChange(r)})})))}),l8="TabsContent",s8=p.forwardRef((e,t)=>{const{__scopeTabs:n,value:r,forceMount:o,children:i,...a}=e,l=uf(l8,n),s=oy(l.baseId,r),c=iy(l.baseId,r),d=r===l.value,u=p.useRef(d);return p.useEffect(()=>{const f=requestAnimationFrame(()=>u.current=!1);return()=>cancelAnimationFrame(f)},[]),p.createElement(kn,{present:o||d},({present:f})=>p.createElement(fe.div,q({"data-state":d?"active":"inactive","data-orientation":l.orientation,role:"tabpanel","aria-labelledby":s,hidden:!f,id:c,tabIndex:0},a,{ref:t,style:{...e.style,animationDuration:u.current?"0s":void 0}}),f&&i))});function oy(e,t){return`${e}-trigger-${t}`}function iy(e,t){return`${e}-content-${t}`}const u8=n8,c8=o8,d8=a8,f8=s8;var p8="vocs_Tabs_content",h8="vocs_Tabs_list",m8="vocs_Tabs",v8="vocs_Tabs_trigger";function g8(e){return x.jsx(u8,{...e,className:D(e.className,m8)})}function y8(e){return x.jsx(c8,{...e,className:D(e.className,h8)})}function x8(e){return x.jsx(d8,{...e,className:D(e.className,v8)})}function _8(e){return x.jsx(f8,{...e,className:D(e.className,p8)})}var w8="vocs_CodeGroup";function E8({children:e}){if(!Array.isArray(e))return null;const t=e.map(n=>{const r=n.props["data-title"]?n:n.props.children,{props:o}=r,i=o["data-title"],a=o.children;return{title:i,content:a}});return x.jsxs(g8,{className:w8,defaultValue:t[0].title,children:[x.jsx(y8,{"aria-label":"Code group",children:t.map(({title:n},r)=>x.jsx(x8,{value:n||r.toString(),children:n},n||r.toString()))}),t.map(({title:n,content:r},o)=>{var a,l;const i=(l=(a=r.props)==null?void 0:a.className)==null?void 0:l.includes("shiki");return x.jsx(_8,{"data-shiki":i,value:n||o.toString(),children:r},n||o.toString())})]})}var k8="vocs_Div",b8="vocs_Step_content",C8="vocs_Step",ay="vocs_Step_title",P8="vocs_H2";function ly(e){return x.jsx(To,{...e,className:D(e.className,P8),level:2})}var A8="vocs_H3";function sy(e){return x.jsx(To,{...e,className:D(e.className,A8),level:3})}var S8="vocs_H4";function uy(e){return x.jsx(To,{...e,className:D(e.className,S8),level:4})}var T8="vocs_H5";function cy(e){return x.jsx(To,{...e,className:D(e.className,T8),level:5})}var R8="vocs_H6";function dy(e){return x.jsx(To,{...e,className:D(e.className,R8),level:6})}function $8({children:e,className:t,title:n,titleLevel:r=2}){const o=(()=>{if(r===2)return ly;if(r===3)return sy;if(r===4)return uy;if(r===5)return cy;if(r===6)return dy;throw new Error("Invalid.")})();return x.jsxs("div",{className:D(t,C8),children:[typeof n=="string"?x.jsx(o,{className:ay,children:n}):n,x.jsx("div",{className:b8,children:e})]})}var O8="vocs_Steps";function I8({children:e,className:t}){return x.jsx("div",{className:D(t,O8),children:e})}function L8({children:e}){return Array.isArray(e)?x.jsx(I8,{children:e.map(({props:t},n)=>{const[r,...o]=Array.isArray(t.children)?t.children:[t.children];return x.jsx($8,{title:p.cloneElement(r,{className:ay}),children:o},n)})}):null}var D8="vocs_Subtitle";function N8({children:e}){return x.jsx("div",{className:D8,role:"doc-subtitle",children:e})}function M8(e){const{layout:t}=Tr(),n=D(e.className,k8);return e.className==="code-group"?x.jsx(E8,{...e,className:n}):"data-authors"in e?x.jsx(Xg,{}):"data-blog-posts"in e?x.jsx(PC,{}):"data-sponsors"in e?x.jsx(DC,{}):"data-autolink-icon"in e&&t==="docs"?x.jsx(jC,{...e,className:n}):"data-vocs-steps"in e?x.jsx(L8,{...e,className:n}):e.role==="doc-subtitle"?x.jsx(N8,{...e}):x.jsx("div",{...e,className:n})}var j8="vocs_Figcaption";function z8(e){const t=D(e.className,j8);return x.jsx("figcaption",{...e,className:t})}var F8="vocs_Figure";function U8(e){const t=D(e.className,F8);return x.jsx("figure",{...e,className:t})}var V8="vocs_Header";function B8(e){return x.jsx("header",{...e,className:D(e.className,V8)})}var H8="vocs_HorizontalRule";function W8(e){return x.jsx("hr",{...e,className:D(e.className,H8)})}var K8="vocs_List_ordered",G8="vocs_List",q8="vocs_List_unordered";function Gh({ordered:e,...t}){const n=e?"ol":"ul";return x.jsx(n,{...t,className:D(t.className,G8,e?K8:q8)})}var Y8="vocs_ListItem";function Q8(e){return x.jsx("li",{...e,className:D(e.className,Y8)})}function Z8(){const e=p.useRef(null),[t,n]=p.useState(!1);p.useEffect(()=>{if(!t)return;const o=setTimeout(()=>n(!1),1e3);return()=>clearTimeout(o)},[t]);function r(){var a;n(!0);const o=(a=e.current)==null?void 0:a.cloneNode(!0),i=o==null?void 0:o.querySelectorAll("button,.line.diff.remove,.twoslash-popup-info-hover,.twoslash-popup-info,.twoslash-meta-line,.twoslash-tag-line");for(const l of i??[])l.remove();navigator.clipboard.writeText(o==null?void 0:o.textContent)}return{copied:t,copy:r,ref:e}}var X8="vocs_CopyButton";function J8(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 68 67",children:[x.jsx("title",{children:"Checkmark"}),x.jsx("path",{fill:"currentColor",d:"M26.175 66.121c1.904 0 3.418-.83 4.492-2.49L66.263 7.332c.83-1.27 1.123-2.295 1.123-3.32 0-2.393-1.563-4.004-4.004-4.004-1.758 0-2.734.586-3.809 2.295L25.98 56.209 8.304 32.381c-1.123-1.514-2.198-2.149-3.809-2.149-2.441 0-4.2 1.71-4.2 4.15 0 1.026.44 2.15 1.27 3.224l19.971 25.927c1.367 1.758 2.734 2.588 4.639 2.588Z"})]})}function eP(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 82 82",children:[x.jsx("title",{children:"Copy"}),x.jsx("path",{fill:"currentColor",d:"M12.451 63.281h38.38c8.3 0 12.45-4.053 12.45-12.256v-38.77C63.281 4.054 59.131 0 50.831 0H12.45C4.101 0 0 4.053 0 12.256v38.77C0 59.227 4.102 63.28 12.451 63.28Zm.098-7.031c-3.516 0-5.518-1.904-5.518-5.615V12.647c0-3.711 2.002-5.616 5.518-5.616h38.183c3.516 0 5.518 1.905 5.518 5.615v37.989c0 3.71-2.002 5.615-5.518 5.615H12.55Z"}),x.jsx("path",{stroke:"currentColor",strokeWidth:"6.75px",d:"M69.385 78.266h-38.38c-3.679 0-5.782-.894-6.987-2.081-1.196-1.178-2.088-3.219-2.088-6.8v-38.77c0-3.581.892-5.622 2.088-6.8 1.205-1.187 3.308-2.08 6.988-2.08h38.379c3.65 0 5.758.89 6.973 2.084 1.203 1.182 2.103 3.225 2.103 6.796v38.77c0 3.57-.9 5.614-2.103 6.796-1.215 1.193-3.323 2.085-6.973 2.085Z"})]})}function tP({copy:e,copied:t}){return x.jsx("button",{className:X8,onClick:e,type:"button",children:t?x.jsx(st,{label:"Copied",size:"14px",icon:J8}):x.jsx(st,{label:"Copy",size:"18px",icon:eP})})}var nP="vocs_CodeBlock";function rP(e){return x.jsx("div",{...e,className:D(e.className,nP)})}function oP(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 94 99",fill:"none",children:[x.jsx("title",{children:"File"}),x.jsx("rect",{width:"77px",height:"89px",x:"8px",y:"3px",stroke:"currentColor",strokeWidth:"6px",rx:"7px"}),x.jsx("path",{stroke:"currentColor",strokeLinecap:"round",strokeWidth:"6px",d:"M25 22h43M25 35h43M25 48h22"})]})}function iP(){return x.jsxs("svg",{width:"100%",height:"100%",xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 79 95",fill:"none",children:[x.jsx("title",{children:"Terminal"}),x.jsx("path",{fill:"currentColor",d:"M38.281 34.033c0-1.074-.39-2.05-1.22-2.88L6.885 1.171C6.152.39 5.175 0 4.053 0 1.758 0 0 1.709 0 4.004c0 1.074.488 2.1 1.172 2.88l27.295 27.15L1.172 61.181C.488 61.962 0 62.939 0 64.062c0 2.295 1.758 4.004 4.053 4.004 1.123 0 2.1-.39 2.832-1.172l30.176-29.98c.83-.83 1.22-1.807 1.22-2.88Z"}),x.jsx("path",{stroke:"currentColor",strokeLinecap:"round",strokeWidth:"8px",d:"M36 75h55"})]})}var aP="vocs_CodeTitle";function lP({children:e,className:t,language:n,...r}){return x.jsxs("div",{...r,className:D(t,aP),children:[n==="bash"?x.jsx(st,{label:"Terminal",size:"14px",icon:iP,style:{marginTop:3}}):e.match(/\.(.*)$/)?x.jsx(st,{label:"File",size:"14px",icon:oP,style:{marginTop:1}}):null,e]})}var sP="vocs_Pre",uP="vocs_Pre_wrapper";function cP({children:e,className:t,...n}){const{copied:r,copy:o,ref:i}=Z8();function a(c){return!c||typeof c!="object"?c:"props"in c?{...c,props:{...c.props,children:Array.isArray(c.props.children)?c.props.children.map(a):a(c.props.children)}}:c}const l=p.useMemo(()=>a(e),[e]);return(c=>t!=null&&t.includes("shiki")?x.jsxs(rP,{children:[n["data-title"]&&x.jsx(lP,{language:n["data-lang"],children:n["data-title"]}),c]}):c)(x.jsx("div",{className:D(uP),children:x.jsxs("pre",{ref:i,...n,className:D(t,sP),children:["data-language"in n&&x.jsx(tP,{copied:r,copy:o}),l]})}))}var dP="vocs_Footnotes";function fP(e){return x.jsx("section",{...e,className:D(e.className,dP)})}var qh="vocs_Section";function pP(e){return"data-footnotes"in e?x.jsx(fP,{...e,className:D(e.className,qh)}):x.jsx("section",{...e,className:D(e.className,qh)})}var Yh="vocs_Span";function Wa(e,t){if(!e||!t)return!1;const n=t.getRootNode==null?void 0:t.getRootNode();if(e.contains(t))return!0;if(n&&bc(n)){let r=t;for(;r;){if(e===r)return!0;r=r.parentNode||r.host}}return!1}function Ic(e,t){const n=["mouse","pen"];return t||n.push("",void 0),n.includes(e)}function Aa(e){return(e==null?void 0:e.ownerDocument)||document}function hP(e){return"composedPath"in e?e.composedPath()[0]:e.target}const fy={...Uc},mP=fy.useInsertionEffect,vP=mP||(e=>e());function gP(e){const t=p.useRef(()=>{});return vP(()=>{t.current=e}),p.useCallback(function(){for(var n=arguments.length,r=new Array(n),o=0;o"floating-ui-"+Math.random().toString(36).slice(2,6)+yP++;function xP(){const[e,t]=p.useState(()=>Qh?Zh():void 0);return ko(()=>{e==null&&t(Zh())},[]),p.useEffect(()=>{Qh=!0},[]),e}const _P=fy.useId,py=_P||xP,wP=p.forwardRef(function(t,n){const{context:{placement:r,elements:{floating:o},middlewareData:{arrow:i}},width:a=14,height:l=7,tipRadius:s=0,strokeWidth:c=0,staticOffset:d,stroke:u,d:f,style:{transform:h,...y}={},...g}=t,w=py();if(!o)return null;const m=c*2,v=m/2,_=a/2*(s/-8+1),E=l/2*s/4,[C,k]=r.split("-"),P=yg.isRTL(o),A=!!f,S=C==="top"||C==="bottom",O=d&&k==="end"?"bottom":"top";let j=d&&k==="end"?"right":"left";d&&P&&(j=k==="end"?"left":"right");const N=(i==null?void 0:i.x)!=null?d||i.x:"",z=(i==null?void 0:i.y)!=null?d||i.y:"",$=f||"M0,0"+(" H"+a)+(" L"+(a-_)+","+(l-E))+(" Q"+a/2+","+l+" "+_+","+(l-E))+" Z",U={top:A?"rotate(180deg)":"",left:A?"rotate(90deg)":"rotate(-90deg)",bottom:A?"":"rotate(180deg)",right:A?"rotate(-90deg)":"rotate(90deg)"}[C];return p.createElement("svg",Lc({},g,{"aria-hidden":!0,ref:n,width:A?a:a+m,height:a,viewBox:"0 0 "+a+" "+(l>a?l:a),style:{position:"absolute",pointerEvents:"none",[j]:N,[O]:z,[C]:S||A?"100%":"calc(100% - "+m/2+"px)",transform:""+U+(h??""),...y}}),m>0&&p.createElement("path",{clipPath:"url(#"+w+")",fill:"none",stroke:u,strokeWidth:m+(f?0:1),d:$}),p.createElement("path",{stroke:m&&!f?g.fill:"none",d:$}),p.createElement("clipPath",{id:w},p.createElement("rect",{x:-v,y:v*(A?-1:1),width:a+m,height:a})))});function EP(){const e=new Map;return{emit(t,n){var r;(r=e.get(t))==null||r.forEach(o=>o(n))},on(t,n){e.set(t,[...e.get(t)||[],n])},off(t,n){var r;e.set(t,((r=e.get(t))==null?void 0:r.filter(o=>o!==n))||[])}}}const kP=p.createContext(null),bP=p.createContext(null),hy=()=>{var e;return((e=p.useContext(kP))==null?void 0:e.id)||null},my=()=>p.useContext(bP);function CP(e){return"data-floating-ui-"+e}function Xh(e){const t=p.useRef(e);return ko(()=>{t.current=e}),t}const Jh=CP("safe-polygon");function ou(e,t,n){return n&&!Ic(n)?0:typeof e=="number"?e:e==null?void 0:e[t]}function PP(e,t){t===void 0&&(t={});const{open:n,onOpenChange:r,dataRef:o,events:i,elements:{domReference:a,floating:l},refs:s}=e,{enabled:c=!0,delay:d=0,handleClose:u=null,mouseOnly:f=!1,restMs:h=0,move:y=!0}=t,g=my(),w=hy(),m=Xh(u),v=Xh(d),_=p.useRef(),E=p.useRef(),C=p.useRef(),k=p.useRef(),P=p.useRef(!0),A=p.useRef(!1),S=p.useRef(()=>{}),O=p.useCallback(()=>{var $;const U=($=o.current.openEvent)==null?void 0:$.type;return(U==null?void 0:U.includes("mouse"))&&U!=="mousedown"},[o]);p.useEffect(()=>{if(!c)return;function $(U){let{open:W}=U;W||(clearTimeout(E.current),clearTimeout(k.current),P.current=!0)}return i.on("openchange",$),()=>{i.off("openchange",$)}},[c,i]),p.useEffect(()=>{if(!c||!m.current||!n)return;function $(W){O()&&r(!1,W,"hover")}const U=Aa(l).documentElement;return U.addEventListener("mouseleave",$),()=>{U.removeEventListener("mouseleave",$)}},[l,n,r,c,m,O]);const j=p.useCallback(function($,U,W){U===void 0&&(U=!0),W===void 0&&(W="hover");const B=ou(v.current,"close",_.current);B&&!C.current?(clearTimeout(E.current),E.current=setTimeout(()=>r(!1,$,W),B)):U&&(clearTimeout(E.current),r(!1,$,W))},[v,r]),N=p.useCallback(()=>{S.current(),C.current=void 0},[]),z=p.useCallback(()=>{if(A.current){const $=Aa(s.floating.current).body;$.style.pointerEvents="",$.removeAttribute(Jh),A.current=!1}},[s]);return p.useEffect(()=>{if(!c)return;function $(){return o.current.openEvent?["click","mousedown"].includes(o.current.openEvent.type):!1}function U(L){if(clearTimeout(E.current),P.current=!1,f&&!Ic(_.current)||h>0&&ou(v.current,"open")===0)return;const F=ou(v.current,"open",_.current);F?E.current=setTimeout(()=>{r(!0,L,"hover")},F):r(!0,L,"hover")}function W(L){if($())return;S.current();const F=Aa(l);if(clearTimeout(k.current),m.current){n||clearTimeout(E.current),C.current=m.current({...e,tree:g,x:L.clientX,y:L.clientY,onClose(){z(),N(),j(L,!0,"safe-polygon")}});const J=C.current;F.addEventListener("mousemove",J),S.current=()=>{F.removeEventListener("mousemove",J)};return}(_.current==="touch"?!Wa(l,L.relatedTarget):!0)&&j(L)}function B(L){$()||m.current==null||m.current({...e,tree:g,x:L.clientX,y:L.clientY,onClose(){z(),N(),j(L)}})(L)}if(rt(a)){const L=a;return n&&L.addEventListener("mouseleave",B),l==null||l.addEventListener("mouseleave",B),y&&L.addEventListener("mousemove",U,{once:!0}),L.addEventListener("mouseenter",U),L.addEventListener("mouseleave",W),()=>{n&&L.removeEventListener("mouseleave",B),l==null||l.removeEventListener("mouseleave",B),y&&L.removeEventListener("mousemove",U),L.removeEventListener("mouseenter",U),L.removeEventListener("mouseleave",W)}}},[a,l,c,e,f,h,y,j,N,z,r,n,g,v,m,o]),ko(()=>{var $;if(c&&n&&($=m.current)!=null&&$.__options.blockPointerEvents&&O()){const W=Aa(l).body;if(W.setAttribute(Jh,""),W.style.pointerEvents="none",A.current=!0,rt(a)&&l){var U;const B=a,L=g==null||(U=g.nodesRef.current.find(F=>F.id===w))==null||(U=U.context)==null?void 0:U.elements.floating;return L&&(L.style.pointerEvents=""),B.style.pointerEvents="auto",l.style.pointerEvents="auto",()=>{B.style.pointerEvents="",l.style.pointerEvents=""}}}},[c,n,w,l,a,g,m,O]),ko(()=>{n||(_.current=void 0,N(),z())},[n,N,z]),p.useEffect(()=>()=>{N(),clearTimeout(E.current),clearTimeout(k.current),z()},[c,a,N,z]),p.useMemo(()=>{if(!c)return{};function $(U){_.current=U.pointerType}return{reference:{onPointerDown:$,onPointerEnter:$,onMouseMove(U){function W(){P.current||r(!0,U.nativeEvent,"hover")}f&&!Ic(_.current)||n||h===0||(clearTimeout(k.current),_.current==="touch"?W():k.current=setTimeout(W,h))}},floating:{onMouseEnter(){clearTimeout(E.current)},onMouseLeave(U){j(U.nativeEvent,!1)}}}},[c,f,n,h,r,j])}function AP(e,t){let n=e.filter(o=>{var i;return o.parentId===t&&((i=o.context)==null?void 0:i.open)}),r=n;for(;r.length;)r=e.filter(o=>{var i;return(i=r)==null?void 0:i.some(a=>{var l;return o.parentId===a.id&&((l=o.context)==null?void 0:l.open)})}),n=n.concat(r);return n}function SP(e){var t;e===void 0&&(e={});const{open:n=!1,onOpenChange:r,nodeId:o}=e,[i,a]=p.useState(null),[l,s]=p.useState(null),d=((t=e.elements)==null?void 0:t.reference)||i;ko(()=>{d&&(g.current=d)},[d]);const u=Eg({...e,elements:{...e.elements,...l&&{reference:l}}}),f=my(),h=hy()!=null,y=gP((A,S,O)=>{w.current.openEvent=A?S:void 0,m.emit("openchange",{open:A,event:S,reason:O,nested:h}),r==null||r(A,S,O)}),g=p.useRef(null),w=p.useRef({}),m=p.useState(()=>EP())[0],v=py(),_=p.useCallback(A=>{const S=rt(A)?{getBoundingClientRect:()=>A.getBoundingClientRect(),contextElement:A}:A;s(S),u.refs.setReference(S)},[u.refs]),E=p.useCallback(A=>{(rt(A)||A===null)&&(g.current=A,a(A)),(rt(u.refs.reference.current)||u.refs.reference.current===null||A!==null&&!rt(A))&&u.refs.setReference(A)},[u.refs]),C=p.useMemo(()=>({...u.refs,setReference:E,setPositionReference:_,domReference:g}),[u.refs,E,_]),k=p.useMemo(()=>({...u.elements,domReference:d}),[u.elements,d]),P=p.useMemo(()=>({...u,refs:C,elements:k,dataRef:w,nodeId:o,floatingId:v,events:m,open:n,onOpenChange:y}),[u,o,v,m,n,y,C,k]);return ko(()=>{const A=f==null?void 0:f.nodesRef.current.find(S=>S.id===o);A&&(A.context=P)}),p.useMemo(()=>({...u,context:P,refs:C,elements:k}),[u,C,k,P])}const em="active",tm="selected";function iu(e,t,n){const r=new Map,o=n==="item";let i=e;if(o&&e){const{[em]:a,[tm]:l,...s}=e;i=s}return{...n==="floating"&&{tabIndex:-1},...i,...t.map(a=>{const l=a?a[n]:null;return typeof l=="function"?e?l(e):null:l}).concat(e).reduce((a,l)=>(l&&Object.entries(l).forEach(s=>{let[c,d]=s;if(!(o&&[em,tm].includes(c)))if(c.indexOf("on")===0){if(r.has(c)||r.set(c,[]),typeof d=="function"){var u;(u=r.get(c))==null||u.push(d),a[c]=function(){for(var f,h=arguments.length,y=new Array(h),g=0;gw(...y)).find(w=>w!==void 0)}}}else a[c]=d}),a),{})}}function TP(e){e===void 0&&(e=[]);const t=e,n=p.useCallback(i=>iu(i,e,"reference"),t),r=p.useCallback(i=>iu(i,e,"floating"),t),o=p.useCallback(i=>iu(i,e,"item"),e.map(i=>i==null?void 0:i.item));return p.useMemo(()=>({getReferenceProps:n,getFloatingProps:r,getItemProps:o}),[n,r,o])}function nm(e,t){const[n,r]=e;let o=!1;const i=t.length;for(let a=0,l=i-1;a=r!=u>=r&&n<=(d-s)*(r-c)/(u-c)+s&&(o=!o)}return o}function RP(e,t){return e[0]>=t.x&&e[0]<=t.x+t.width&&e[1]>=t.y&&e[1]<=t.y+t.height}function $P(e){e===void 0&&(e={});const{buffer:t=.5,blockPointerEvents:n=!1,requireIntent:r=!0}=e;let o,i=!1,a=null,l=null,s=performance.now();function c(u,f){const h=performance.now(),y=h-s;if(a===null||l===null||y===0)return a=u,l=f,s=h,null;const g=u-a,w=f-l,v=Math.sqrt(g*g+w*w)/y;return a=u,l=f,s=h,v}const d=u=>{let{x:f,y:h,placement:y,elements:g,onClose:w,nodeId:m,tree:v}=u;return function(E){function C(){clearTimeout(o),w()}if(clearTimeout(o),!g.domReference||!g.floating||y==null||f==null||h==null)return;const{clientX:k,clientY:P}=E,A=[k,P],S=hP(E),O=E.type==="mouseleave",j=Wa(g.floating,S),N=Wa(g.domReference,S),z=g.domReference.getBoundingClientRect(),$=g.floating.getBoundingClientRect(),U=y.split("-")[0],W=f>$.right-$.width/2,B=h>$.bottom-$.height/2,L=RP(A,z),F=$.width>z.width,G=$.height>z.height,J=(F?z:$).left,ue=(F?z:$).right,Ve=(G?z:$).top,xe=(G?z:$).bottom;if(j&&(i=!0,!O))return;if(N&&(i=!1),N&&!O){i=!0;return}if(O&&rt(E.relatedTarget)&&Wa(g.floating,E.relatedTarget)||v&&AP(v.nodesRef.current,m).some(Be=>{let{context:we}=Be;return we==null?void 0:we.open}))return;if(U==="top"&&h>=z.bottom-1||U==="bottom"&&h<=z.top+1||U==="left"&&f>=z.right-1||U==="right"&&f<=z.left+1)return C();let $e=[];switch(U){case"top":$e=[[J,z.top+1],[J,$.bottom-1],[ue,$.bottom-1],[ue,z.top+1]];break;case"bottom":$e=[[J,$.top+1],[J,z.bottom-1],[ue,z.bottom-1],[ue,$.top+1]];break;case"left":$e=[[$.right-1,xe],[$.right-1,Ve],[z.left+1,Ve],[z.left+1,xe]];break;case"right":$e=[[z.right-1,xe],[z.right-1,Ve],[$.left+1,Ve],[$.left+1,xe]];break}function _e(Be){let[we,Ce]=Be;switch(U){case"top":{const Mt=[F?we+t/2:W?we+t*4:we-t*4,Ce+t+1],Pe=[F?we-t/2:W?we+t*4:we-t*4,Ce+t+1],dt=[[$.left,W||F?$.bottom-t:$.top],[$.right,W?F?$.bottom-t:$.top:$.bottom-t]];return[Mt,Pe,...dt]}case"bottom":{const Mt=[F?we+t/2:W?we+t*4:we-t*4,Ce-t],Pe=[F?we-t/2:W?we+t*4:we-t*4,Ce-t],dt=[[$.left,W||F?$.top+t:$.bottom],[$.right,W?F?$.top+t:$.bottom:$.top+t]];return[Mt,Pe,...dt]}case"left":{const Mt=[we+t+1,G?Ce+t/2:B?Ce+t*4:Ce-t*4],Pe=[we+t+1,G?Ce-t/2:B?Ce+t*4:Ce-t*4];return[...[[B||G?$.right-t:$.left,$.top],[B?G?$.right-t:$.left:$.right-t,$.bottom]],Mt,Pe]}case"right":{const Mt=[we-t,G?Ce+t/2:B?Ce+t*4:Ce-t*4],Pe=[we-t,G?Ce-t/2:B?Ce+t*4:Ce-t*4],dt=[[B||G?$.left+t:$.right,$.top],[B?G?$.left+t:$.right:$.left+t,$.bottom]];return[Mt,Pe,...dt]}}}if(!nm([k,P],$e)){if(i&&!L)return C();if(!O&&r){const Be=c(E.clientX,E.clientY);if(Be!==null&&Be<.1)return C()}nm([k,P],_e([f,h]))?!i&&r&&(o=window.setTimeout(C,40)):C()}}};return d.__options={blockPointerEvents:n},d}function OP({children:e,...t}){const[n,r]=e,o=p.useRef(null),[i,a]=p.useState(!1),{context:l,refs:s,floatingStyles:c}=SP({middleware:[_g({element:o}),ug(8),xg()],open:i,onOpenChange:a,placement:"bottom-start"}),d=PP(l,{handleClose:$P()}),{getReferenceProps:u,getFloatingProps:f}=TP([d]),h=r.props.children,y=n.props.children;return x.jsxs("span",{...t,children:[x.jsx("span",{className:"twoslash-target",ref:s.setReference,...u(),children:h}),i&&x.jsxs("div",{className:"twoslash-popup-info-hover",ref:s.setFloating,style:c,...f(),children:[x.jsx(wP,{ref:o,context:l,fill:Gp.background5,height:3,stroke:Gp.border2,strokeWidth:1,width:7}),x.jsx("div",{className:"twoslash-popup-scroll-container",children:y})]})]})}function IP(e){var n;const t=D(e.className,Yh);return(n=e.className)!=null&&n.includes("twoslash-hover")?x.jsx(OP,{...e,className:t}):x.jsx("span",{...e,className:D(e.className,Yh)})}var LP="vocs_CalloutTitle";function DP({className:e,children:t}){return x.jsx("strong",{className:D(e,LP),children:t})}var rm="vocs_Strong";function NP(e){return"data-callout-title"in e&&typeof e.children=="string"?x.jsx(DP,{...e,className:D(e.className,rm),children:e.children}):x.jsx("strong",{...e,className:D(e.className,rm)})}var MP="vocs_Summary";function jP(e){return x.jsx("summary",{...e,className:D(e.className,MP)})}var zP="vocs_Table";function FP(e){return x.jsx("table",{...e,className:D(e.className,zP)})}var UP="vocs_TableCell";function VP(e){return x.jsx("td",{...e,className:D(e.className,UP)})}var BP="vocs_TableHeader";function HP(e){return x.jsx("th",{...e,className:D(e.className,BP)})}var WP="vocs_TableRow";function KP(e){return x.jsx("tr",{...e,className:D(e.className,WP)})}const GP={a:Xb,aside:sC,blockquote:cC,code:fC,details:mC,div:M8,pre:cP,header:B8,figcaption:z8,figure:U8,h1:W0,h2:ly,h3:sy,h4:uy,h5:cy,h6:dy,hr:W8,kd:T1,li:Q8,ol:e=>x.jsx(Gh,{ordered:!0,...e}),p:K0,section:pP,span:IP,strong:NP,summary:jP,table:FP,td:VP,th:HP,tr:KP,ul:e=>x.jsx(Gh,{ordered:!1,...e})};function qP(){const{pathname:e}=Re(),t=Je(),{ogImageUrl:n}=t;if(!n)return;if(typeof n=="string")return n;const r=p.useMemo(()=>{const o=Object.keys(n).filter(i=>e.startsWith(i));return o[o.length-1]},[n,e]);if(r)return n[r]}function Dc(e){const{children:t,filePath:n,frontmatter:r,lastUpdatedAt:o,path:i}=e,{pathname:a}=Re(),l=p.useRef();return p.useEffect(()=>{l.current=a}),x.jsxs(x.Fragment,{children:[x.jsx(YP,{frontmatter:r}),typeof window<"u"&&x.jsx(_w,{}),x.jsx(tb,{components:GP,children:x.jsx(j7,{frontmatter:r,path:i,children:x.jsx(Y0.Provider,{value:{filePath:n,frontmatter:r,lastUpdatedAt:o,previousPath:l.current},children:t})})})]})}function YP({frontmatter:e}){const t=Je(),n=qP(),{baseUrl:r,font:o,iconUrl:i,logoUrl:a}=t,l=(e==null?void 0:e.title)??t.title,s=(e==null?void 0:e.description)??t.description,c=t.title&&!l.includes(t.title),d=typeof window<"u"&&window.location.hostname==="localhost";return x.jsxs($c,{defaultTitle:t.title,titleTemplate:c?t.titleTemplate:void 0,children:[l&&x.jsx("title",{children:l}),r&&!0&&!d&&x.jsx("base",{href:r}),s!=="undefined"&&x.jsx("meta",{name:"description",content:s}),i&&typeof i=="string"&&x.jsx("link",{rel:"icon",href:i,type:au(i)}),i&&typeof i!="string"&&x.jsx("link",{rel:"icon",href:i.light,type:au(i.light)}),i&&typeof i!="string"&&x.jsx("link",{rel:"icon",href:i.dark,type:au(i.dark),media:"(prefers-color-scheme: dark)"}),x.jsx("meta",{property:"og:type",content:"website"}),x.jsx("meta",{property:"og:title",content:l||t.title}),r&&x.jsx("meta",{property:"og:url",content:r}),s!=="undefined"&&x.jsx("meta",{property:"og:description",content:s}),n&&x.jsx("meta",{property:"og:image",content:n.replace("%logo",`${r||""}${typeof a=="string"?a:(a==null?void 0:a.dark)||""}`).replace("%title",l||"").replace("%description",(s!=="undefined"?s:"")||"")}),(o==null?void 0:o.google)&&x.jsx("link",{rel:"preconnect",href:"https://fonts.googleapis.com"}),(o==null?void 0:o.google)&&x.jsx("link",{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:""}),(o==null?void 0:o.google)&&x.jsx("link",{href:`https://fonts.googleapis.com/css2?family=${o.google}:wght@300;400;500&display=swap`,rel:"stylesheet"}),x.jsx("meta",{name:"twitter:card",content:"summary_large_image"}),n&&x.jsx("meta",{property:"twitter:image",content:n.replace("%logo",`${r||""}${typeof a=="string"?a:(a==null?void 0:a.dark)||""}`).replace("%title",l||"").replace("%description",(s!=="undefined"?s:"")||"")})]})}function au(e){if(e.endsWith(".svg"))return"image/svg+xml";if(e.endsWith(".png"))return"image/png";if(e.endsWith(".jpg"))return"image/jpeg";if(e.endsWith(".ico"))return"image/x-icon";if(e.endsWith(".webp"))return"image/webp"}const QP=(()=>{const e=zd.find(({path:t})=>t==="*");return e?{path:e.path,lazy:async()=>{const{frontmatter:t,...n}=await e.lazy();return{...n,element:x.jsx(Dc,{frontmatter:t,path:e.path,children:x.jsx(Pc,{children:x.jsx(n.default,{})})})}}}:{path:"*",lazy:void 0,element:x.jsx(Dc,{frontmatter:{layout:"minimal"},path:"*",children:x.jsx(Pc,{children:x.jsx(Kw,{})})})}})(),om=[...zd.filter(({path:e})=>e!=="*").map(e=>({path:e.path,lazy:async()=>{const{frontmatter:t,...n}=await e.lazy();return{...n,element:x.jsx(Dc,{filePath:e.filePath,frontmatter:t,lastUpdatedAt:e.lastUpdatedAt,path:e.path,children:x.jsx(Pc,{children:x.jsx(n.default,{})})})}}})),QP];async function ZP(e,t){var r;const n=(r=cr(e,window.location,t))==null?void 0:r.filter(o=>o.route.lazy);n&&(n==null?void 0:n.length)>0&&await Promise.all(n.map(async o=>{const i=await o.route.lazy();Object.assign(o.route,{...i,lazy:void 0})}))}function XP(){const e=document.querySelectorAll('style[data-vocs-temp-style="true"]');for(const t of e)t.remove()}JP();async function JP(){const e=z0().basePath;await ZP(om,e),XP();const t=lw(om,{basename:e});x0(document.getElementById("app"),x.jsx(Pw,{children:x.jsx(vw,{router:t})}))}export{_8 as C,nn as L,g8 as R,x8 as T,U4 as a,y8 as b,D as c,eb as d,aC as e,Ey as f,eA as g,Xn as h,x as j,p as r,Je as u}; diff --git a/assets/indexer-5eI5-5FE.js b/assets/indexer-Db7ZsYzX.js similarity index 95% rename from assets/indexer-5eI5-5FE.js rename to assets/indexer-Db7ZsYzX.js index ca564ca7ca..aa907a6135 100644 --- a/assets/indexer-5eI5-5FE.js +++ b/assets/indexer-Db7ZsYzX.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";import{V as r}from"./Video-CiIVMpgC.js";const s={title:"Indexer in Builder",description:"undefined"};function t(a){const n={a:"a",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",li:"li",p:"p",ul:"ul",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"indexer-in-builder",children:["Indexer in Builder",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#indexer-in-builder",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";import{V as r}from"./Video--Gq6B73C.js";const s={title:"Indexer in Builder",description:"undefined"};function t(a){const n={a:"a",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",li:"li",p:"p",ul:"ul",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"indexer-in-builder",children:["Indexer in Builder",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#indexer-in-builder",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"Sequence Builder equips game builders with an indexer that collects data from the following networks: Ethereum (and Sepolia), Optimism, Base, Gnosis Chain, Polygon (and Polygon Mumbai), Polygon zkEVM, Arbitrum One, Arbitrum Nova, Gnosis Chain, BNB Smart Chain (and Smart Chain Testnet), Avalanche (and Avalanche Testnet), Oasys Homeverse (and Oasys Homeverse Testnet)."}),` `,e.jsxs(n.h4,{id:"what-data-can-i-query-for-my-game",children:["What data can I query for my game?",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#what-data-can-i-query-for-my-game",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(n.p,{children:"Builder takes the stress out of gathering on-chain data for your game. Simply select the data you want from the indexer, and it generates the necessary code in snippets."}),` diff --git a/assets/installation-BcpyFtoy.js b/assets/installation-CR4WukxG.js similarity index 97% rename from assets/installation-BcpyFtoy.js rename to assets/installation-CR4WukxG.js index 0cd166d178..ee39bc9790 100644 --- a/assets/installation-BcpyFtoy.js +++ b/assets/installation-CR4WukxG.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const s={title:"Installation",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"installation",children:["Installation",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const s={title:"Installation",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"installation",children:["Installation",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.h2,{id:"credentials",children:["Credentials",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#credentials",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(n.p,{children:"Before you can use this plugin, you need to acquire the following credentials from Sequence:"}),` `,e.jsxs(n.ul,{children:[` diff --git a/assets/installation-zOOoSSOd.js b/assets/installation-e9UAGzO_.js similarity index 99% rename from assets/installation-zOOoSSOd.js rename to assets/installation-e9UAGzO_.js index 709f3899e0..7ff3deead9 100644 --- a/assets/installation-zOOoSSOd.js +++ b/assets/installation-e9UAGzO_.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const a={title:"Indexer Installation",description:"undefined"};function i(n){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"indexer-installation",children:["Indexer Installation",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#indexer-installation",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const a={title:"Indexer Installation",description:"undefined"};function i(n){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"indexer-installation",children:["Indexer Installation",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#indexer-installation",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.aside,{"data-callout":"warning",children:[e.jsx(s.strong,{"data-callout-title":!0,children:"INTRODUCING THE SEQUENCE BUILDER - "}),e.jsxs(s.p,{children:["Our ",e.jsx(s.strong,{children:"Indexer"})," service is managed through ",e.jsx(s.strong,{children:e.jsx(s.a,{href:"https://sequence.build",children:"Sequence Builder"})}),". Sign up to grab your API access key."]}),e.jsx(s.p,{children:e.jsxs(s.a,{href:"https://sequence.build",children:["Get started with the ",e.jsx(s.strong,{children:"Sequence Builder"})," Free Plan today!"]})})]}),` `,e.jsxs(s.p,{children:[`Sequence Indexer is a simple API to query any blockchain token and NFT data. Below are instructions on how to integrate the Sequence Indexer API into your Webapps, Games, and backends. In case you missed diff --git a/assets/installation-DdCsqoM2.js b/assets/installation-f62kIGKJ.js similarity index 98% rename from assets/installation-DdCsqoM2.js rename to assets/installation-f62kIGKJ.js index d984379586..42460f6816 100644 --- a/assets/installation-DdCsqoM2.js +++ b/assets/installation-f62kIGKJ.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-BG6_g6N7.js";const l={title:"Installation",description:"undefined"};function n(i){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"installation",children:["Installation",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-XAh3cByi.js";const l={title:"Installation",description:"undefined"};function n(i){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"installation",children:["Installation",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.p,{children:["We provide SDKs for ",e.jsx(s.a,{href:"https://github.com/0xsequence/sequence.js",children:"Web / node.js"})," and ",e.jsx(s.a,{href:"https://github.com/0xsequence/go-sequence",children:"Go"}),`. Or if you'd like to integrate the Relayer with another language target, simply follow the API reference below to implement the HTTP requests. Additionally, read the Typescript client source code as `,e.jsx(s.a,{href:"https://github.com/0xsequence/sequence.js/blob/master/packages/relayer/src/rpc-relayer/relayer.gen.ts",children:`reference diff --git a/assets/installation-DUqbf8L4.js b/assets/installation-jscd-EKs.js similarity index 99% rename from assets/installation-DUqbf8L4.js rename to assets/installation-jscd-EKs.js index f22f085d63..7ed14fc69d 100644 --- a/assets/installation-DUqbf8L4.js +++ b/assets/installation-jscd-EKs.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const o={title:"Installation",description:"undefined"};function a(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"installation",children:["Installation",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const o={title:"Installation",description:"undefined"};function a(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"installation",children:["Installation",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(t.h2,{id:"package-manager---recommended",children:["Package Manager - Recommended",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#package-manager---recommended",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.ol,{children:[` `,e.jsx(t.li,{children:"Ensure you have Git 2.14.0 or above installed on your machine"}),` diff --git a/assets/intents-vXaVa7iA.js b/assets/intents-mBnhX-CA.js similarity index 98% rename from assets/intents-vXaVa7iA.js rename to assets/intents-mBnhX-CA.js index 0de2c46166..2abfce3fff 100644 --- a/assets/intents-vXaVa7iA.js +++ b/assets/intents-mBnhX-CA.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const r={title:"Intents",description:"undefined"};function a(s){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...i(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"intents",children:["Intents",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#intents",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const r={title:"Intents",description:"undefined"};function a(s){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...i(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"intents",children:["Intents",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#intents",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:'All user interactions with their account, sessions and wallet are performed through actions called "intents." This page provides details on how they work internally. While it will further your understanding of the entire system as a whole, it is not required as the official SDKs handle all the complexity transparently.'}),` `,e.jsxs(n.h2,{id:"what-are-they",children:["What are they?",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#what-are-they",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(n.p,{children:"At a high level an intent is simply a JSON object specifying the action the user intents to perform and signed using their session key. For example, to sign a message, the client would send the following intent to the WaaS API:"}),` diff --git a/assets/introduction-DoSmSIM0.js b/assets/introduction-1RlXyEQk.js similarity index 98% rename from assets/introduction-DoSmSIM0.js rename to assets/introduction-1RlXyEQk.js index 7203cc7f09..f3b24fcd68 100644 --- a/assets/introduction-DoSmSIM0.js +++ b/assets/introduction-1RlXyEQk.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-BG6_g6N7.js";const r={title:"Advanced - Introduction",description:"undefined"};function i(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"advanced---introduction",children:["Advanced - Introduction",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#advanced---introduction",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-XAh3cByi.js";const r={title:"Advanced - Introduction",description:"undefined"};function i(n){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"advanced---introduction",children:["Advanced - Introduction",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#advanced---introduction",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(t.p,{children:["For advanced users with experience developing applications on EVM-based blockchains, we've provided our own lightweight, custom-made for Unity, Ethereum library: ",e.jsx(t.a,{href:"https://github.com/0xsequence/sequence-unity/tree/master/Assets/SequenceSDK/Ethereum",children:"SequenceEthereum"}),`. SequenceEthereum should provide everything you need to build your Unity app on the EVM, without all the extra bells and whistles that the popular `,e.jsx(t.a,{href:"https://github.com/Nethereum/Nethereum",children:"Nethereum"})," library provides."]}),` `,e.jsxs(t.p,{children:['While SequenceEthereum is heavily tested, in general, when working with asynchronous methods in the library, you should consider them to be "unsafe", in that they ',e.jsx("i",{children:"may"}),` throw Exceptions when used improperly. diff --git a/assets/key-management-D8FiWF93.js b/assets/key-management-DH6Ku-wa.js similarity index 98% rename from assets/key-management-D8FiWF93.js rename to assets/key-management-DH6Ku-wa.js index 98900488c9..b84f05071a 100644 --- a/assets/key-management-D8FiWF93.js +++ b/assets/key-management-DH6Ku-wa.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const o={slug:"/key-management",title:"Key Management",description:"undefined"};function n(s){const t={a:"a",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",...i(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"key-management",children:["Key Management",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#key-management",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const o={slug:"/key-management",title:"Key Management",description:"undefined"};function n(s){const t={a:"a",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",...i(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"key-management",children:["Key Management",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#key-management",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Each Sequence wallet can be controlled by multiple private keys, acting like a multisignature wallet. Users can either create a Sequence wallet using one of the supported social login options or create a wallet with a private key stored only on that device."}),` `,e.jsx(t.p,{children:"The improved security compared to traditional blockchain wallet comes from the fact that multiple independent keys need to be compromised for a malicious actor to take control of a user’s wallet, instead of a single key. The philosophy is that the more independent private-keys the user adds to their wallet, the more secure their wallet becomes, even if each individual key is only moderately secure on their own."}),` `,e.jsxs(t.h2,{id:"social-login-wallets",children:["Social Login Wallets",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#social-login-wallets",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/lootbox-guide-BV6SYIJN.js b/assets/lootbox-guide-DfI-7UoT.js similarity index 99% rename from assets/lootbox-guide-BV6SYIJN.js rename to assets/lootbox-guide-DfI-7UoT.js index b258833072..c41aada4fc 100644 --- a/assets/lootbox-guide-BV6SYIJN.js +++ b/assets/lootbox-guide-DfI-7UoT.js @@ -1,4 +1,4 @@ -import{d as r,j as s,e as l}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Lootbox with AI Minting",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...r(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"lootbox-with-ai-minting",children:["Lootbox with AI Minting",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#lootbox-with-ai-minting",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s,e as l}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Lootbox with AI Minting",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",hr:"hr",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...r(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"lootbox-with-ai-minting",children:["Lootbox with AI Minting",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#lootbox-with-ai-minting",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Time to complete: 50-60 minutes"}),` `,s.jsx(e.p,{children:"In this guide we will go through the process of integrating a static html/js maze into a web3 enabled react app, leveraging tools from the Sequence Stack to mint AI generated loot from lootboxes."}),` `,s.jsxs(l,{type:"info",children:[s.jsxs(e.p,{children:["You can play a live version of the game ",s.jsx(e.a,{href:"https://0xsequence-demos.github.io/demo-lootbox/",children:"here"})]}),s.jsx(e.p,{children:"Where the full code can be found in the respective repositories"}),s.jsxs(e.ul,{children:[` diff --git a/assets/main-module-upgradeable-CW96S4Qk.js b/assets/main-module-upgradeable-BIbwCPfr.js similarity index 90% rename from assets/main-module-upgradeable-CW96S4Qk.js rename to assets/main-module-upgradeable-BIbwCPfr.js index 29d678e054..6b565b3d89 100644 --- a/assets/main-module-upgradeable-CW96S4Qk.js +++ b/assets/main-module-upgradeable-BIbwCPfr.js @@ -1 +1 @@ -import{d as i,j as t}from"./index-BG6_g6N7.js";const r={title:"MainModuleUpgradeable & configuration migration",description:"undefined"};function a(e){const n={a:"a",div:"div",h1:"h1",header:"header",...i(),...e.components};return t.jsx(n.header,{children:t.jsxs(n.h1,{id:"mainmoduleupgradeable--configuration-migration",children:["MainModuleUpgradeable & configuration migration",t.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mainmoduleupgradeable--configuration-migration",children:t.jsx(n.div,{"data-autolink-icon":!0})})]})})}function d(e={}){const{wrapper:n}={...i(),...e.components};return n?t.jsx(n,{...e,children:t.jsx(a,{...e})}):a(e)}export{d as default,r as frontmatter}; +import{d as i,j as t}from"./index-XAh3cByi.js";const r={title:"MainModuleUpgradeable & configuration migration",description:"undefined"};function a(e){const n={a:"a",div:"div",h1:"h1",header:"header",...i(),...e.components};return t.jsx(n.header,{children:t.jsxs(n.h1,{id:"mainmoduleupgradeable--configuration-migration",children:["MainModuleUpgradeable & configuration migration",t.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mainmoduleupgradeable--configuration-migration",children:t.jsx(n.div,{"data-autolink-icon":!0})})]})})}function d(e={}){const{wrapper:n}={...i(),...e.components};return n?t.jsx(n,{...e,children:t.jsx(a,{...e})}):a(e)}export{d as default,r as frontmatter}; diff --git a/assets/manage-metadata-builder-CQqBJOxI.js b/assets/manage-metadata-builder-DzHkXKKT.js similarity index 99% rename from assets/manage-metadata-builder-CQqBJOxI.js rename to assets/manage-metadata-builder-DzHkXKKT.js index 66cb8b92ab..0e811e6422 100644 --- a/assets/manage-metadata-builder-CQqBJOxI.js +++ b/assets/manage-metadata-builder-DzHkXKKT.js @@ -1,4 +1,4 @@ -import{d as n,j as e}from"./index-BG6_g6N7.js";const d={title:"How to Manage Item Metadata in Sequence Builder",description:"undefined"};function i(t){const a={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"how-to-manage-item-metadata-in-sequence-builder",children:["How to Manage Item Metadata in Sequence Builder",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#how-to-manage-item-metadata-in-sequence-builder",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as e}from"./index-XAh3cByi.js";const d={title:"How to Manage Item Metadata in Sequence Builder",description:"undefined"};function i(t){const a={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"how-to-manage-item-metadata-in-sequence-builder",children:["How to Manage Item Metadata in Sequence Builder",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#how-to-manage-item-metadata-in-sequence-builder",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(a.h2,{id:"introduction",children:["Introduction",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:e.jsx(a.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(a.p,{children:["Following this guide, you can easily manage token metadata for your contract items in Sequence Builder, with a little help from ",e.jsx(a.a,{href:"https://www.pinata.cloud/",children:"Pinata"})," for IPFS hosting."]}),` `,e.jsxs(a.h2,{id:"step-1-prepare-your-token-images-and-metadata",children:["Step 1: Prepare Your Token Images and Metadata",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#step-1-prepare-your-token-images-and-metadata",children:e.jsx(a.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/manage-sessions-kcyhIGIe.js b/assets/manage-sessions-De7aop9W.js similarity index 99% rename from assets/manage-sessions-kcyhIGIe.js rename to assets/manage-sessions-De7aop9W.js index 39b9cd2389..ff91352e33 100644 --- a/assets/manage-sessions-kcyhIGIe.js +++ b/assets/manage-sessions-De7aop9W.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-BG6_g6N7.js";const a={title:"Session Management",description:"undefined"};function l(e){const i={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"session-management",children:["Session Management",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#session-management",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-XAh3cByi.js";const a={title:"Session Management",description:"undefined"};function l(e){const i={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"session-management",children:["Session Management",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#session-management",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(i.p,{children:"Sequence Auth + Embedded Wallet handles the following aspects of your application:"}),` `,s.jsxs(i.ul,{children:[` `,s.jsx(i.li,{children:"User creation"}),` diff --git a/assets/white-label-marketplace-CPSX2FiA.js b/assets/marketplaces-BUP1pddE.js similarity index 94% rename from assets/white-label-marketplace-CPSX2FiA.js rename to assets/marketplaces-BUP1pddE.js index bb9fba2e1a..684c5f89af 100644 --- a/assets/white-label-marketplace-CPSX2FiA.js +++ b/assets/marketplaces-BUP1pddE.js @@ -1,4 +1,4 @@ -import{d as n,j as e}from"./index-BG6_g6N7.js";import{V as r}from"./Video-CiIVMpgC.js";const l={title:"Launch your white-label marketplace",description:"undefined"};function t(i){const a={a:"a",aside:"aside",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...n(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"launch-your-white-label-marketplace",children:["Launch your white-label marketplace",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#launch-your-white-label-marketplace",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as e}from"./index-XAh3cByi.js";import{V as r}from"./Video--Gq6B73C.js";const l={title:"Launch your white-label marketplace",description:"undefined"};function t(i){const a={a:"a",aside:"aside",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...n(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"launch-your-white-label-marketplace",children:["Launch your white-label marketplace",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#launch-your-white-label-marketplace",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(a.p,{children:"Sequence Builder provides game builders with a white-label marketplace that can be launched in seconds. With Builder, you can customize your marketplace and integrate it directly into your game experience, all with no-coding experience necessary."}),` `,e.jsxs(a.h2,{id:"try-it-out",children:["Try it out",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#try-it-out",children:e.jsx(a.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(a.aside,{"data-callout":"info",children:e.jsxs(a.p,{children:["Get started quickly at ",e.jsx(a.a,{href:"https://sequence.build/",children:"Sequence Builder"})," to launch your marketplace."]})}),` diff --git a/assets/metadata-BkQG7xMK.js b/assets/metadata-BfCm5dGy.js similarity index 99% rename from assets/metadata-BkQG7xMK.js rename to assets/metadata-BfCm5dGy.js index 3075c88171..92f5f5b373 100644 --- a/assets/metadata-BkQG7xMK.js +++ b/assets/metadata-BfCm5dGy.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-BG6_g6N7.js";const o={title:"Metadata API",description:"undefined"};function a(n){const t={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",ol:"ol",p:"p",ul:"ul",...s(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"metadata-api",children:["Metadata API",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata-api",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-XAh3cByi.js";const o={title:"Metadata API",description:"undefined"};function a(n){const t={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",img:"img",li:"li",ol:"ol",p:"p",ul:"ul",...s(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"metadata-api",children:["Metadata API",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata-api",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.aside,{"data-callout":"note",children:e.jsx(t.p,{children:e.jsx(t.a,{href:"https://0xsequence.redoc.ly/tag/metadata",children:"Metadata API documentation and endpoints"})})}),` `,e.jsx(t.p,{children:"The Sequence Metadata API service offers a simple and fast API to query, manage, and update collections, token & NFT metadata for Ethereum-compatible chains."}),` `,e.jsx(t.aside,{"data-callout":"info",children:e.jsxs(t.p,{children:["Our Metadata service is managed through ",e.jsx(t.a,{href:"HTTPS://SEQUENCE.BUILD",children:"Sequence Builder"})," and requires a Service Account & Token in order to call the corresponding endpoints. Please follow the [section](/api/metadata#Obtaining a Service Account & Token) below prior to calling the endpoints"]})}),` diff --git a/assets/metadata-tips-CwmeuyP5.js b/assets/metadata-tips-BuUY8txH.js similarity index 97% rename from assets/metadata-tips-CwmeuyP5.js rename to assets/metadata-tips-BuUY8txH.js index a71aa07a5d..e48bcb4fc3 100644 --- a/assets/metadata-tips-CwmeuyP5.js +++ b/assets/metadata-tips-BuUY8txH.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-BG6_g6N7.js";const o={sidebar_label:"Metadata Tips & Spam",title:"Metadata Tips & Notes on Spam",description:"undefined"};function a(n){const t={a:"a",code:"code",div:"div",em:"em",h1:"h1",header:"header",p:"p",...s(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"metadata-tips--notes-on-spam",children:["Metadata Tips & Notes on Spam",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata-tips--notes-on-spam",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-XAh3cByi.js";const o={sidebar_label:"Metadata Tips & Spam",title:"Metadata Tips & Notes on Spam",description:"undefined"};function a(n){const t={a:"a",code:"code",div:"div",em:"em",h1:"h1",header:"header",p:"p",...s(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"metadata-tips--notes-on-spam",children:["Metadata Tips & Notes on Spam",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata-tips--notes-on-spam",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(t.p,{children:[`The Sequence Indexer and Sequence Metadata services will pick up everything and anything that is published on a blockchain. Our services are designed to provide data in real-time as blocks are mined, and adhere to all popular ERC20, ERC721 and ERC1155 metadata diff --git a/assets/mint-collectibles-serverless-DXTaJDF6.js b/assets/mint-collectibles-serverless-Cy5umKSC.js similarity index 99% rename from assets/mint-collectibles-serverless-DXTaJDF6.js rename to assets/mint-collectibles-serverless-Cy5umKSC.js index fc36e149dc..e81a17f776 100644 --- a/assets/mint-collectibles-serverless-DXTaJDF6.js +++ b/assets/mint-collectibles-serverless-Cy5umKSC.js @@ -1,4 +1,4 @@ -import{d as n,j as s,e as i}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Mint Collectibles Using a Gasless Serverless Relayer",description:"undefined"};function r(l){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...l.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"mint-collectibles-using-a-gasless-serverless-relayer",children:["Mint Collectibles Using a Gasless Serverless Relayer",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mint-collectibles-using-a-gasless-serverless-relayer",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s,e as i}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Mint Collectibles Using a Gasless Serverless Relayer",description:"undefined"};function r(l){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...l.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"mint-collectibles-using-a-gasless-serverless-relayer",children:["Mint Collectibles Using a Gasless Serverless Relayer",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mint-collectibles-using-a-gasless-serverless-relayer",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Time to complete: 20-30 minutes"}),` `,s.jsxs(e.p,{children:["The Sequence Relayer can be implemented on a serverless ",s.jsx(e.a,{href:"https://cloudflare.com/",children:"Cloudflare"})," worker so a game or app user interaction is seamless without a confirmation signature or gas payment. You'll also benefit from not having to be worried about transaction speed, throughput and re-orgs by the relayer, and experience automatic scaling with Cloudflare."]}),` `,s.jsx(e.p,{children:"The following steps will guide you through how to build your hosted minter API in 4 steps:"}),` diff --git a/assets/minter-DBfJAu2G.js b/assets/minter-DdSjW7bk.js similarity index 94% rename from assets/minter-DBfJAu2G.js rename to assets/minter-DdSjW7bk.js index bc53527b60..3e0028424c 100644 --- a/assets/minter-DBfJAu2G.js +++ b/assets/minter-DdSjW7bk.js @@ -1,3 +1,3 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const s=void 0;function i(t){const n={a:"a",div:"div",h2:"h2",...r(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsxs(n.h2,{id:"mint-tokens-using-builder-manually",children:["Mint tokens using Builder manually",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mint-tokens-using-builder-manually",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const s=void 0;function i(t){const n={a:"a",div:"div",h2:"h2",...r(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsxs(n.h2,{id:"mint-tokens-using-builder-manually",children:["Mint tokens using Builder manually",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#mint-tokens-using-builder-manually",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.h2,{id:"deploy-a-serverless-minter-on-cloudflare-workers",children:["Deploy a serverless minter on Cloudflare Workers",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy-a-serverless-minter-on-cloudflare-workers",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.h2,{id:"integrate-minting-into-a-backend-service",children:["Integrate minting into a backend service",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-minting-into-a-backend-service",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})]})}function d(t={}){const{wrapper:n}={...r(),...t.components};return n?e.jsx(n,{...t,children:e.jsx(i,{...t})}):i(t)}export{d as default,s as frontmatter}; diff --git a/assets/modules-and-updates-CC41y-MQ.js b/assets/modules-and-updates-DERbEW_C.js similarity index 99% rename from assets/modules-and-updates-CC41y-MQ.js rename to assets/modules-and-updates-DERbEW_C.js index ab0207d2a7..fa81191b68 100644 --- a/assets/modules-and-updates-CC41y-MQ.js +++ b/assets/modules-and-updates-DERbEW_C.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-BG6_g6N7.js";const r={title:"Modules & wallet update",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"modules--wallet-update",children:["Modules & wallet update",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#modules--wallet-update",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-XAh3cByi.js";const r={title:"Modules & wallet update",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",ul:"ul",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"modules--wallet-update",children:["Modules & wallet update",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#modules--wallet-update",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:"Sequence modules are the underlying program implementation of the wallets; wallets can change modules at runtime."}),` `,e.jsxs(s.p,{children:["The ",e.jsx(s.code,{children:"MainModule"})," is the initial module of every Sequence wallet; it differs from the other modules because it doesn't store the set of signers on contract storage; it uses the ",e.jsx(s.a,{href:"solutions/technical-references/wallet-contracts/03-wallet-factory#deploy",children:"salt"})," provided to the Factory contract."]}),` `,e.jsxs(s.h2,{id:"wallet-implementation",children:["Wallet implementation",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-implementation",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/native-network-balance-C9V0hSJE.js b/assets/native-network-balance-FGnoTKzE.js similarity index 99% rename from assets/native-network-balance-C9V0hSJE.js rename to assets/native-network-balance-FGnoTKzE.js index 43c2d9f796..601a3c88ff 100644 --- a/assets/native-network-balance-C9V0hSJE.js +++ b/assets/native-network-balance-FGnoTKzE.js @@ -1,4 +1,4 @@ -import{d as i,j as s}from"./index-BG6_g6N7.js";const r={title:"Native network balances (ie. ETH, MATIC, etc.)",description:"undefined"};function l(n){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"native-network-balances-ie-eth-matic-etc",children:["Native network balances (ie. ETH, MATIC, etc.)",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#native-network-balances-ie-eth-matic-etc",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as s}from"./index-XAh3cByi.js";const r={title:"Native network balances (ie. ETH, MATIC, etc.)",description:"undefined"};function l(n){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"native-network-balances-ie-eth-matic-etc",children:["Native network balances (ie. ETH, MATIC, etc.)",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#native-network-balances-ie-eth-matic-etc",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h3,{id:"fetch-native-network-balance-aka-eth-on-ethereum-matic-on-polygon-avax-on-avalanche-bnb-on-bsc-etc",children:["Fetch native network balance (aka ETH on Ethereum, MATIC on Polygon, AVAX on Avalanche, BNB on BSC, etc.)",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetch-native-network-balance-aka-eth-on-ethereum-matic-on-polygon-avax-on-avalanche-bnb-on-bsc-etc",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:s.jsxs(e.em,{children:["Sequence Indexer ",s.jsx(e.code,{children:"GetEtherBalance"})," Method:"]})}),` `,s.jsxs(e.ul,{children:[` diff --git a/assets/nested-transaction-batching-Bm2olTrK.js b/assets/nested-transaction-batching-DAcdlHuc.js similarity index 89% rename from assets/nested-transaction-batching-Bm2olTrK.js rename to assets/nested-transaction-batching-DAcdlHuc.js index 9fcac4e3e1..5be4f56efe 100644 --- a/assets/nested-transaction-batching-Bm2olTrK.js +++ b/assets/nested-transaction-batching-DAcdlHuc.js @@ -1 +1 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const s={title:"Nested Transaction Batching",description:"undefined"};function a(t){const n={a:"a",div:"div",h1:"h1",header:"header",...i(),...t.components};return e.jsx(n.header,{children:e.jsxs(n.h1,{id:"nested-transaction-batching",children:["Nested Transaction Batching",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#nested-transaction-batching",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})})}function d(t={}){const{wrapper:n}={...i(),...t.components};return n?e.jsx(n,{...t,children:e.jsx(a,{...t})}):a(t)}export{d as default,s as frontmatter}; +import{d as i,j as e}from"./index-XAh3cByi.js";const s={title:"Nested Transaction Batching",description:"undefined"};function a(t){const n={a:"a",div:"div",h1:"h1",header:"header",...i(),...t.components};return e.jsx(n.header,{children:e.jsxs(n.h1,{id:"nested-transaction-batching",children:["Nested Transaction Batching",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#nested-transaction-batching",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})})}function d(t={}){const{wrapper:n}={...i(),...t.components};return n?e.jsx(n,{...t,children:e.jsx(a,{...t})}):a(t)}export{d as default,s as frontmatter}; diff --git a/assets/nft-checkout-h7_wcq32.js b/assets/nft-checkout-CrpZ8jpO.js similarity index 92% rename from assets/nft-checkout-h7_wcq32.js rename to assets/nft-checkout-CrpZ8jpO.js index 775e94cad3..7a31b08cfa 100644 --- a/assets/nft-checkout-h7_wcq32.js +++ b/assets/nft-checkout-CrpZ8jpO.js @@ -1,2 +1,2 @@ -import{d as i,j as n}from"./index-BG6_g6N7.js";const a=void 0;function o(t){const e={a:"a",div:"div",h2:"h2",...i(),...t.components};return n.jsxs(n.Fragment,{children:[n.jsxs(e.h2,{id:"integrate-nft-checkout-on-web-coming-soon",children:["Integrate NFT Checkout on web (coming soon)",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-nft-checkout-on-web-coming-soon",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as i,j as n}from"./index-XAh3cByi.js";const a=void 0;function o(t){const e={a:"a",div:"div",h2:"h2",...i(),...t.components};return n.jsxs(n.Fragment,{children:[n.jsxs(e.h2,{id:"integrate-nft-checkout-on-web-coming-soon",children:["Integrate NFT Checkout on web (coming soon)",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-nft-checkout-on-web-coming-soon",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,n.jsxs(e.h2,{id:"integrate-nft-checkout-on-mobile-coming-soon",children:["Integrate NFT Checkout on mobile (coming soon)",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-nft-checkout-on-mobile-coming-soon",children:n.jsx(e.div,{"data-autolink-icon":!0})})]})]})}function r(t={}){const{wrapper:e}={...i(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o(t)}export{r as default,a as frontmatter}; diff --git a/assets/node-gateway-CHNF87i9.js b/assets/node-gateway-DQgqSZz0.js similarity index 99% rename from assets/node-gateway-CHNF87i9.js rename to assets/node-gateway-DQgqSZz0.js index 873a023fe6..708fbad1ec 100644 --- a/assets/node-gateway-CHNF87i9.js +++ b/assets/node-gateway-DQgqSZz0.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-BG6_g6N7.js";const a={title:"Node Gateway",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...r(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"node-gateway",children:["Node Gateway",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#node-gateway",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-XAh3cByi.js";const a={title:"Node Gateway",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...r(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"node-gateway",children:["Node Gateway",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#node-gateway",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Sequence Node gateway infrastructure enables you to have fail-over resilient RPC endpoints that can scale with your application."}),` `,s.jsx(e.p,{children:"By using our infrastructure, you save money for not having to deploy your own stack, and benefits from the feature of aggregating multiple public RPC providers into a single endpoint for use."}),` `,s.jsxs(e.h2,{id:"give-it-a-try",children:["Give it a try",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#give-it-a-try",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/node-gateway-TxKmukUr.js b/assets/node-gateway-PMwccG6C.js similarity index 95% rename from assets/node-gateway-TxKmukUr.js rename to assets/node-gateway-PMwccG6C.js index 31a228646a..883694bd7f 100644 --- a/assets/node-gateway-TxKmukUr.js +++ b/assets/node-gateway-PMwccG6C.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";import{V as r}from"./Video-CiIVMpgC.js";const s={title:"Node Gateway in Builder",description:"undefined"};function n(t){const a={a:"a",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"node-gateway-in-builder",children:["Node Gateway in Builder",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#node-gateway-in-builder",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";import{V as r}from"./Video--Gq6B73C.js";const s={title:"Node Gateway in Builder",description:"undefined"};function n(t){const a={a:"a",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"node-gateway-in-builder",children:["Node Gateway in Builder",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#node-gateway-in-builder",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(a.p,{children:"Sequence Builder offers a comprehensive Node Gateway dashboard that provides you with all the information needed to manage your node infrastructure, from compatibility with your favorite Web3 module to your requirement for real-time performant data for your game."}),` `,e.jsxs(a.h5,{id:"what-kind-of-performance-can-i-expect-for-my-game",children:["What kind of performance can I expect for my game?",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#what-kind-of-performance-can-i-expect-for-my-game",children:e.jsx(a.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(a.p,{children:"Sequence Node Gateway is engineered to power your gaming infrastructure. Node Gateway aggregates multiple node providers, auto-switching between them to ensure correct and in sync data availability — giving you the assurance that your decentralized applications run smoothly with low latency for your players."}),` diff --git a/assets/nodejs-CmcWYvVq.js b/assets/nodejs-bRRaAnqq.js similarity index 75% rename from assets/nodejs-CmcWYvVq.js rename to assets/nodejs-bRRaAnqq.js index 04587697eb..02edfbd55e 100644 --- a/assets/nodejs-CmcWYvVq.js +++ b/assets/nodejs-bRRaAnqq.js @@ -1 +1 @@ -import{d as r,j as n}from"./index-BG6_g6N7.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; +import{d as r,j as n}from"./index-XAh3cByi.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/onramps-TjQsBORx.js b/assets/onramps-BpYIGNda.js similarity index 91% rename from assets/onramps-TjQsBORx.js rename to assets/onramps-BpYIGNda.js index 217262a8bb..75b6361ab6 100644 --- a/assets/onramps-TjQsBORx.js +++ b/assets/onramps-BpYIGNda.js @@ -1,2 +1,2 @@ -import{d as o,j as n}from"./index-BG6_g6N7.js";const i=void 0;function a(t){const e={a:"a",div:"div",h2:"h2",...o(),...t.components};return n.jsxs(n.Fragment,{children:[n.jsxs(e.h2,{id:"integrate-onramp-on-web",children:["Integrate onramp on web",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-onramp-on-web",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as o,j as n}from"./index-XAh3cByi.js";const i=void 0;function a(t){const e={a:"a",div:"div",h2:"h2",...o(),...t.components};return n.jsxs(n.Fragment,{children:[n.jsxs(e.h2,{id:"integrate-onramp-on-web",children:["Integrate onramp on web",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-onramp-on-web",children:n.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,n.jsxs(e.h2,{id:"integrate-onramp-on-mobile",children:["Integrate onramp on mobile",n.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#integrate-onramp-on-mobile",children:n.jsx(e.div,{"data-autolink-icon":!0})})]})]})}function d(t={}){const{wrapper:e}={...o(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(a,{...t})}):a(t)}export{d as default,i as frontmatter}; diff --git a/assets/orderbook-transactions-BikCYCAV.js b/assets/orderbook-transactions-D8wEswpa.js similarity index 99% rename from assets/orderbook-transactions-BikCYCAV.js rename to assets/orderbook-transactions-D8wEswpa.js index c2cbca6c3e..2aa3cf0dcb 100644 --- a/assets/orderbook-transactions-BikCYCAV.js +++ b/assets/orderbook-transactions-D8wEswpa.js @@ -1,4 +1,4 @@ -import{d as i,j as s,e as l}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Sequence Market Orderbook Transactions",description:"undefined"};function r(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"sequence-market-orderbook-transactions",children:["Sequence Market Orderbook Transactions",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-market-orderbook-transactions",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as s,e as l}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Sequence Market Orderbook Transactions",description:"undefined"};function r(n){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"sequence-market-orderbook-transactions",children:["Sequence Market Orderbook Transactions",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-market-orderbook-transactions",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["All transactions run through a contract at address ",s.jsx(e.code,{children:"0xB537a160472183f2150d42EB1c3DD6684A55f74c"})," on all currently offered networks:"]}),` `,s.jsxs(e.ul,{children:[` `,s.jsx(e.li,{children:"polygon"}),` diff --git a/assets/overview-DSpuMOTR.js b/assets/overview-BGAHixNw.js similarity index 96% rename from assets/overview-DSpuMOTR.js rename to assets/overview-BGAHixNw.js index 9d1b545e75..9a485901d4 100644 --- a/assets/overview-DSpuMOTR.js +++ b/assets/overview-BGAHixNw.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const c=void 0;function s(n){const t={a:"a",code:"code",div:"div",h3:"h3",p:"p",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsxs(t.h3,{id:"go",children:["Go",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#go",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const c=void 0;function s(n){const t={a:"a",code:"code",div:"div",h3:"h3",p:"p",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsxs(t.h3,{id:"go",children:["Go",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#go",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.p,{children:["A complete Sequence SDK is also available in Go: ",e.jsx(t.a,{href:"https://github.com/0xsequence/go-sequence",children:"https://github.com/0xsequence/go-sequence"}),"."]}),` `,e.jsxs(t.p,{children:[e.jsx(t.a,{href:"https://github.com/0xsequence/go-sequence",children:"go-sequence"})," is the equivalent of ",e.jsx(t.a,{href:"https://github.com/0xsequence/sequence.js",children:"0xsequence"}),` but for Go / Golang backends. In fact, all of Sequence's infrastructure is written in Go and is built with `,e.jsx(t.a,{href:"https://github.com/0xsequence/go-sequence",children:"go-sequence"}),"."]}),` diff --git a/assets/overview-U9derJST.js b/assets/overview-BLLc4xjx.js similarity index 99% rename from assets/overview-U9derJST.js rename to assets/overview-BLLc4xjx.js index 402dcefd2c..609bd064e6 100644 --- a/assets/overview-U9derJST.js +++ b/assets/overview-BLLc4xjx.js @@ -1,4 +1,4 @@ -import{d as n,j as e}from"./index-BG6_g6N7.js";const l={title:"Metadata",description:"undefined"};function i(a){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"metadata",children:["Metadata",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as e}from"./index-XAh3cByi.js";const l={title:"Metadata",description:"undefined"};function i(a){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"metadata",children:["Metadata",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:`The Sequence Metadata API service offers a simple and fast API to query token & NFT metadata for Ethereum-compatible chains.`}),` `,e.jsx(s.p,{children:"To learn how to use the Sequence Metadata service, please read:"}),` diff --git a/assets/overview-CTbNnWyN.js b/assets/overview-BZ4LPOHF.js similarity index 98% rename from assets/overview-CTbNnWyN.js rename to assets/overview-BZ4LPOHF.js index 133e4cde5d..ca62951fcf 100644 --- a/assets/overview-CTbNnWyN.js +++ b/assets/overview-BZ4LPOHF.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const r={title:"Indexer",description:"undefined"};function a(t){const n={a:"a",aside:"aside",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"indexer",children:["Indexer",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#indexer",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const r={title:"Indexer",description:"undefined"};function a(t){const n={a:"a",aside:"aside",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...i(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"indexer",children:["Indexer",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#indexer",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.aside,{"data-callout":"note",children:e.jsx(n.p,{children:e.jsx(n.a,{href:"https://0xsequence.redoc.ly/tag/indexer",children:"Indexer API documentation and testing"})})}),` `,e.jsx(n.p,{children:"The Sequence Indexer is a modular web3 service that makes it easy to query blockchain token and NFT data from Ethereum-compatible networks. The Indexer automatically indexes every ERC20, ERC721 and ERC1155 token from Ethereum-compatible chains."}),` `,e.jsxs(n.p,{children:[`The Sequence Indexer is a powerful tool that can be used to build wallets, games, and dapps that diff --git a/assets/overview-UQh9Rpu9.js b/assets/overview-BkBlR5TZ.js similarity index 99% rename from assets/overview-UQh9Rpu9.js rename to assets/overview-BkBlR5TZ.js index 8b7f7cf65d..a283f18ccf 100644 --- a/assets/overview-UQh9Rpu9.js +++ b/assets/overview-BkBlR5TZ.js @@ -1,4 +1,4 @@ -import{d as i,j as s}from"./index-BG6_g6N7.js";const l={title:"Relayer API",description:"undefined"};function a(n){const e={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"relayer-api",children:["Relayer API",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#relayer-api",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as s}from"./index-XAh3cByi.js";const l={title:"Relayer API",description:"undefined"};function a(n){const e={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...i(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"relayer-api",children:["Relayer API",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#relayer-api",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.aside,{"data-callout":"note",children:s.jsx(e.p,{children:s.jsx(e.a,{href:"https://0xsequence.redoc.ly/tag/relayer",children:"Relayer API documentation and endpoints"})})}),` `,s.jsx(e.p,{children:"The Sequence Relayer service offers a simple interface for dispatching meta-transactions on Ethereum-compatible networks."}),` `,s.jsx(e.p,{children:"Meta-transactions are the idea of a transaction inside of a transaction. The benefits of Sequence meta-transactions are that they allow:"}),` diff --git a/assets/overview-BtwLSJPF.js b/assets/overview-BtwLSJPF.js deleted file mode 100644 index 0777efc943..0000000000 --- a/assets/overview-BtwLSJPF.js +++ /dev/null @@ -1,6 +0,0 @@ -import{d as i,j as e,e as n}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";import{C as s,a as r}from"./CardGrid-Dee1eEnV.js";const u={title:"Sequence Market",description:"undefined"};function o(a){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",hr:"hr",p:"p",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-market",children:["Sequence Market",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-market",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` -`,e.jsx(t.p,{children:"The Sequence Marketplace API service offers a simple and fast way to interact with sequence marketplace protocols to build a custom marketplace while accelerating your development time. The API is designed to be easy to use and to have all the features you need to build a fully functional marketplace."}),` -`,e.jsx(t.hr,{}),` -`,e.jsxs(n,{type:"tip",children:[e.jsxs(t.p,{children:["Sequence Market contract is fully audited and can be found at ",e.jsx(t.a,{href:"https://github.com/0xsequence/marketplace-contracts",children:"https://github.com/0xsequence/marketplace-contracts"})]}),e.jsxs(t.p,{children:["The officially maintained contract address is ",e.jsx(t.code,{children:"0xB537a160472183f2150d42EB1c3DD6684A55f74c"}),", and is available with the same address on all networks supported by the sequence stack."]})]}),` -`,e.jsxs(t.h2,{id:"overview",children:["Overview",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` -`,e.jsxs(s,{children:[e.jsx(r,{title:"Quickstart",description:"Use or copy a demo custom marketplace built for an Aviator game",icon:"✈",link:"/solutions/marketplaces/orderbook/quickstart"}),e.jsx(r,{title:"Custom Marketplace Guide",description:"End to end walkthrough of how to build a complete custom marketplace",icon:"✈",link:"/guides/custom-marketplace"}),e.jsx(r,{title:"Get Top Orders",description:"Build experiences to enable the best order offered",icon:"⛰️",link:"/api/marketplace/examples/get-top-orders"}),e.jsx(r,{title:"Get Orderbook Details",description:"Query the orderbook details based on collection and properties",icon:"🎞️",link:"/api/marketplace/examples/get-orderbook"}),e.jsx(r,{title:"Get User Activities",description:"Follow along with your users by enabling experiences that promote tx history",icon:"📓",link:"/api/marketplace/examples/get-user-activities"}),e.jsx(r,{title:"Orderbook Transactions",description:"Send transactions to create or fulfill orders on the orderbook marketlace",icon:"🧱",link:"/api/marketplace/examples/orderbook-transactions"})]})]})}function p(a={}){const{wrapper:t}={...i(),...a.components};return t?e.jsx(t,{...a,children:e.jsx(o,{...a})}):o(a)}export{p as default,u as frontmatter}; diff --git a/assets/overview-C9WkyCuH.js b/assets/overview-CDAMgW9r.js similarity index 99% rename from assets/overview-C9WkyCuH.js rename to assets/overview-CDAMgW9r.js index 42e4c5dc5f..15e4a63cf3 100644 --- a/assets/overview-C9WkyCuH.js +++ b/assets/overview-CDAMgW9r.js @@ -1,4 +1,4 @@ -import{g as Xu,f as Wa,h as ji,d as Va,j as Mt}from"./index-BG6_g6N7.js";const Zu=[{inputs:[{internalType:"bytes32",type:"bytes32"}],name:"getAlternativeSignature",outputs:[{internalType:"string",type:"string"}],stateMutability:"view",type:"function"}];var el=Object.freeze({__proto__:null,abi:Zu});const tl=[{type:"function",name:"isValidSignature",constant:!0,inputs:[{type:"bytes32"},{type:"bytes"}],outputs:[{type:"bytes4"}],payable:!1,stateMutability:"view"}],rl={isValidSignatureBytes32:"0x1626ba7e"};var nl=Object.freeze({__proto__:null,abi:tl,returns:rl});const il=[{inputs:[{internalType:"bytes",name:"error",type:"bytes"}],name:"ERC1271Revert",type:"error"},{inputs:[{internalType:"bytes",name:"error",type:"bytes"}],name:"ERC6492DeployFailed",type:"error"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSig",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"},{internalType:"bool",name:"allowSideEffects",type:"bool"},{internalType:"bool",name:"deployAlreadyDeployed",type:"bool"}],name:"isValidSigImpl",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSigNoThrow",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSigWithSideEffects",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSigWithSideEffectsNoThrow",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}];var sl=Object.freeze({__proto__:null,abi:il});const ol=[{type:"function",name:"deploy",constant:!1,inputs:[{type:"address"},{type:"bytes32"}],outputs:[],payable:!0,stateMutability:"payable"}];var al=Object.freeze({__proto__:null,abi:ol});const fl=[{type:"function",name:"nonce",constant:!0,inputs:[],outputs:[{type:"uint256"}],payable:!1,stateMutability:"view"},{type:"function",name:"readNonce",constant:!0,inputs:[{type:"uint256"}],outputs:[{type:"uint256"}],payable:!1,stateMutability:"view"},{type:"function",name:"updateImplementation",constant:!1,inputs:[{type:"address"}],outputs:[],payable:!1,stateMutability:"nonpayable"},{type:"function",name:"selfExecute",constant:!1,inputs:[{components:[{type:"bool",name:"delegateCall"},{type:"bool",name:"revertOnError"},{type:"uint256",name:"gasLimit"},{type:"address",name:"target"},{type:"uint256",name:"value"},{type:"bytes",name:"data"}],type:"tuple[]"}],outputs:[],payable:!1,stateMutability:"nonpayable"},{type:"function",name:"execute",constant:!1,inputs:[{components:[{type:"bool",name:"delegateCall"},{type:"bool",name:"revertOnError"},{type:"uint256",name:"gasLimit"},{type:"address",name:"target"},{type:"uint256",name:"value"},{type:"bytes",name:"data"}],type:"tuple[]"},{type:"uint256"},{type:"bytes"}],outputs:[],payable:!1,stateMutability:"nonpayable"},{type:"function",name:"createContract",inputs:[{type:"bytes"}],payable:!0,stateMutability:"payable"},{type:"function",name:"setExtraImageHash",constant:!1,inputs:[{type:"bytes32",name:"imageHash"},{type:"uint256",name:"expiration"}],outputs:[],payable:!1,stateMutability:"nonpayable"}];var ul=Object.freeze({__proto__:null,abi:fl});const ll=[{type:"function",name:"updateImageHash",constant:!0,inputs:[{type:"bytes32"}],outputs:[],payable:!1,stateMutability:"view"},{type:"function",name:"imageHash",constant:!0,inputs:[],outputs:[{type:"bytes32"}],payable:!1,stateMutability:"view"}];var cl=Object.freeze({__proto__:null,abi:ll});const hl=[{inputs:[{internalType:"address",name:"_factory",type:"address"},{internalType:"address",name:"_mainModule",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_wallet",type:"address"},{indexed:!0,internalType:"bytes32",name:"_imageHash",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"_threshold",type:"uint256"},{indexed:!1,internalType:"bytes",name:"_signers",type:"bytes"}],name:"RequiredConfig",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_wallet",type:"address"},{indexed:!0,internalType:"address",name:"_signer",type:"address"}],name:"RequiredSigner",type:"event"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callBalanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callBlockNumber",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_i",type:"uint256"}],name:"callBlockhash",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"callChainId",outputs:[{internalType:"uint256",name:"id",type:"uint256"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callCode",outputs:[{internalType:"bytes",name:"code",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callCodeHash",outputs:[{internalType:"bytes32",name:"codeHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callCodeSize",outputs:[{internalType:"uint256",name:"size",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callCoinbase",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"callDifficulty",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callGasLeft",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callGasLimit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callGasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callOrigin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"callTimestamp",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"knownImageHashes",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"lastImageHashUpdate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"lastSignerUpdate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"lastWalletUpdate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"bool",name:"delegateCall",type:"bool"},{internalType:"bool",name:"revertOnError",type:"bool"},{internalType:"uint256",name:"gasLimit",type:"uint256"},{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],internalType:"struct IModuleCalls.Transaction[]",name:"_txs",type:"tuple[]"}],name:"multiCall",outputs:[{internalType:"bool[]",name:"_successes",type:"bool[]"},{internalType:"bytes[]",name:"_results",type:"bytes[]"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"},{internalType:"uint256",name:"_threshold",type:"uint256"},{components:[{internalType:"uint256",name:"weight",type:"uint256"},{internalType:"address",name:"signer",type:"address"}],internalType:"struct RequireUtils.Member[]",name:"_members",type:"tuple[]"},{internalType:"bool",name:"_index",type:"bool"}],name:"publishConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"uint256",name:"_sizeMembers",type:"uint256"},{internalType:"bytes",name:"_signature",type:"bytes"},{internalType:"bool",name:"_index",type:"bool"}],name:"publishInitialSigners",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"},{internalType:"uint256",name:"_nonce",type:"uint256"}],name:"requireMinNonce",outputs:[],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_expiration",type:"uint256"}],name:"requireNonExpired",outputs:[],stateMutability:"view",type:"function"}];var dl=Object.freeze({__proto__:null,abi:hl});const gl=[{inputs:[{internalType:"address",name:"",type:"address"}],name:"requireFreshSigner",outputs:[],stateMutability:"nonpayable",type:"function"}];var pl=Object.freeze({__proto__:null,abi:gl});const Lt={erc6492:sl,erc5719:el,erc1271:nl,factory:al,mainModule:ul,mainModuleUpgradable:cl,sequenceUtils:dl,requireFreshSigner:pl};var po={exports:{}};const ml={},vl=Object.freeze(Object.defineProperty({__proto__:null,default:ml},Symbol.toStringTag,{value:"Module"})),yl=Xu(vl);po.exports;(function(t){(function(e,r){function n(_,u){if(!_)throw new Error(u||"Assertion failed")}function i(_,u){_.super_=u;var d=function(){};d.prototype=u.prototype,_.prototype=new d,_.prototype.constructor=_}function s(_,u,d){if(s.isBN(_))return _;this.negative=0,this.words=null,this.length=0,this.red=null,_!==null&&((u==="le"||u==="be")&&(d=u,u=10),this._init(_||0,u||10,d||"be"))}typeof e=="object"?e.exports=s:r.BN=s,s.BN=s,s.wordSize=26;var o;try{typeof window<"u"&&typeof window.Buffer<"u"?o=window.Buffer:o=yl.Buffer}catch{}s.isBN=function(u){return u instanceof s?!0:u!==null&&typeof u=="object"&&u.constructor.wordSize===s.wordSize&&Array.isArray(u.words)},s.max=function(u,d){return u.cmp(d)>0?u:d},s.min=function(u,d){return u.cmp(d)<0?u:d},s.prototype._init=function(u,d,w){if(typeof u=="number")return this._initNumber(u,d,w);if(typeof u=="object")return this._initArray(u,d,w);d==="hex"&&(d=16),n(d===(d|0)&&d>=2&&d<=36),u=u.toString().replace(/\s+/g,"");var E=0;u[0]==="-"&&(E++,this.negative=1),E=0;E-=3)m=u[E]|u[E-1]<<8|u[E-2]<<16,this.words[c]|=m<>>26-b&67108863,b+=24,b>=26&&(b-=26,c++);else if(w==="le")for(E=0,c=0;E>>26-b&67108863,b+=24,b>=26&&(b-=26,c++);return this._strip()};function a(_,u){var d=_.charCodeAt(u);if(d>=48&&d<=57)return d-48;if(d>=65&&d<=70)return d-55;if(d>=97&&d<=102)return d-87;n(!1,"Invalid character in "+_)}function l(_,u,d){var w=a(_,d);return d-1>=u&&(w|=a(_,d-1)<<4),w}s.prototype._parseHex=function(u,d,w){this.length=Math.ceil((u.length-d)/6),this.words=new Array(this.length);for(var E=0;E=d;E-=2)b=l(u,d,E)<=18?(c-=18,m+=1,this.words[m]|=b>>>26):c+=8;else{var p=u.length-d;for(E=p%2===0?d+1:d;E=18?(c-=18,m+=1,this.words[m]|=b>>>26):c+=8}this._strip()};function g(_,u,d,w){for(var E=0,c=0,m=Math.min(_.length,d),b=u;b=49?c=p-49+10:p>=17?c=p-17+10:c=p,n(p>=0&&c1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},s.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{s.prototype[Symbol.for("nodejs.util.inspect.custom")]=A}catch{s.prototype.inspect=A}else s.prototype.inspect=A;function A(){return(this.red?""}var I=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],k=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];s.prototype.toString=function(u,d){u=u||10,d=d|0||1;var w;if(u===16||u==="hex"){w="";for(var E=0,c=0,m=0;m>>24-E&16777215,E+=2,E>=26&&(E-=26,m--),c!==0||m!==this.length-1?w=I[6-p.length]+p+w:w=p+w}for(c!==0&&(w=c.toString(16)+w);w.length%d!==0;)w="0"+w;return this.negative!==0&&(w="-"+w),w}if(u===(u|0)&&u>=2&&u<=36){var f=M[u],v=k[u];w="";var T=this.clone();for(T.negative=0;!T.isZero();){var h=T.modrn(v).toString(u);T=T.idivn(v),T.isZero()?w=h+w:w=I[f-h.length]+h+w}for(this.isZero()&&(w="0"+w);w.length%d!==0;)w="0"+w;return this.negative!==0&&(w="-"+w),w}n(!1,"Base should be between 2 and 36")},s.prototype.toNumber=function(){var u=this.words[0];return this.length===2?u+=this.words[1]*67108864:this.length===3&&this.words[2]===1?u+=4503599627370496+this.words[1]*67108864:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-u:u},s.prototype.toJSON=function(){return this.toString(16,2)},o&&(s.prototype.toBuffer=function(u,d){return this.toArrayLike(o,u,d)}),s.prototype.toArray=function(u,d){return this.toArrayLike(Array,u,d)};var P=function(u,d){return u.allocUnsafe?u.allocUnsafe(d):new u(d)};s.prototype.toArrayLike=function(u,d,w){this._strip();var E=this.byteLength(),c=w||Math.max(1,E);n(E<=c,"byte array longer than desired length"),n(c>0,"Requested array length <= 0");var m=P(u,c),b=d==="le"?"LE":"BE";return this["_toArrayLike"+b](m,E),m},s.prototype._toArrayLikeLE=function(u,d){for(var w=0,E=0,c=0,m=0;c>8&255),w>16&255),m===6?(w>24&255),E=0,m=0):(E=b>>>24,m+=2)}if(w=0&&(u[w--]=b>>8&255),w>=0&&(u[w--]=b>>16&255),m===6?(w>=0&&(u[w--]=b>>24&255),E=0,m=0):(E=b>>>24,m+=2)}if(w>=0)for(u[w--]=E;w>=0;)u[w--]=0},Math.clz32?s.prototype._countBits=function(u){return 32-Math.clz32(u)}:s.prototype._countBits=function(u){var d=u,w=0;return d>=4096&&(w+=13,d>>>=13),d>=64&&(w+=7,d>>>=7),d>=8&&(w+=4,d>>>=4),d>=2&&(w+=2,d>>>=2),w+d},s.prototype._zeroBits=function(u){if(u===0)return 26;var d=u,w=0;return d&8191||(w+=13,d>>>=13),d&127||(w+=7,d>>>=7),d&15||(w+=4,d>>>=4),d&3||(w+=2,d>>>=2),d&1||w++,w},s.prototype.bitLength=function(){var u=this.words[this.length-1],d=this._countBits(u);return(this.length-1)*26+d};function j(_){for(var u=new Array(_.bitLength()),d=0;d>>E&1}return u}s.prototype.zeroBits=function(){if(this.isZero())return 0;for(var u=0,d=0;du.length?this.clone().ior(u):u.clone().ior(this)},s.prototype.uor=function(u){return this.length>u.length?this.clone().iuor(u):u.clone().iuor(this)},s.prototype.iuand=function(u){var d;this.length>u.length?d=u:d=this;for(var w=0;wu.length?this.clone().iand(u):u.clone().iand(this)},s.prototype.uand=function(u){return this.length>u.length?this.clone().iuand(u):u.clone().iuand(this)},s.prototype.iuxor=function(u){var d,w;this.length>u.length?(d=this,w=u):(d=u,w=this);for(var E=0;Eu.length?this.clone().ixor(u):u.clone().ixor(this)},s.prototype.uxor=function(u){return this.length>u.length?this.clone().iuxor(u):u.clone().iuxor(this)},s.prototype.inotn=function(u){n(typeof u=="number"&&u>=0);var d=Math.ceil(u/26)|0,w=u%26;this._expand(d),w>0&&d--;for(var E=0;E0&&(this.words[E]=~this.words[E]&67108863>>26-w),this._strip()},s.prototype.notn=function(u){return this.clone().inotn(u)},s.prototype.setn=function(u,d){n(typeof u=="number"&&u>=0);var w=u/26|0,E=u%26;return this._expand(w+1),d?this.words[w]=this.words[w]|1<u.length?(w=this,E=u):(w=u,E=this);for(var c=0,m=0;m>>26;for(;c!==0&&m>>26;if(this.length=w.length,c!==0)this.words[this.length]=c,this.length++;else if(w!==this)for(;mu.length?this.clone().iadd(u):u.clone().iadd(this)},s.prototype.isub=function(u){if(u.negative!==0){u.negative=0;var d=this.iadd(u);return u.negative=1,d._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(u),this.negative=1,this._normSign();var w=this.cmp(u);if(w===0)return this.negative=0,this.length=1,this.words[0]=0,this;var E,c;w>0?(E=this,c=u):(E=u,c=this);for(var m=0,b=0;b>26,this.words[b]=d&67108863;for(;m!==0&&b>26,this.words[b]=d&67108863;if(m===0&&b>>26,T=p&67108863,h=Math.min(f,u.length-1),x=Math.max(0,f-_.length+1);x<=h;x++){var S=f-x|0;E=_.words[S]|0,c=u.words[x]|0,m=E*c+T,v+=m/67108864|0,T=m&67108863}d.words[f]=T|0,p=v|0}return p!==0?d.words[f]=p|0:d.length--,d._strip()}var W=function(u,d,w){var E=u.words,c=d.words,m=w.words,b=0,p,f,v,T=E[0]|0,h=T&8191,x=T>>>13,S=E[1]|0,N=S&8191,L=S>>>13,z=E[2]|0,D=z&8191,U=z>>>13,te=E[3]|0,V=te&8191,Q=te>>>13,It=E[4]|0,me=It&8191,oe=It>>>13,tt=E[5]|0,Ae=tt&8191,Ee=tt>>>13,Lr=E[6]|0,xe=Lr&8191,_e=Lr>>>13,Dr=E[7]|0,Se=Dr&8191,Ie=Dr>>>13,Ur=E[8]|0,Me=Ur&8191,Ne=Ur>>>13,Fr=E[9]|0,ke=Fr&8191,Te=Fr>>>13,Hr=c[0]|0,Ce=Hr&8191,Oe=Hr>>>13,qr=c[1]|0,Pe=qr&8191,Re=qr>>>13,zr=c[2]|0,Be=zr&8191,Le=zr>>>13,Gr=c[3]|0,De=Gr&8191,Ue=Gr>>>13,jr=c[4]|0,Fe=jr&8191,He=jr>>>13,Wr=c[5]|0,qe=Wr&8191,ze=Wr>>>13,Vr=c[6]|0,Ge=Vr&8191,je=Vr>>>13,Kr=c[7]|0,We=Kr&8191,Ve=Kr>>>13,$r=c[8]|0,Ke=$r&8191,$e=$r>>>13,Jr=c[9]|0,Je=Jr&8191,Ye=Jr>>>13;w.negative=u.negative^d.negative,w.length=19,p=Math.imul(h,Ce),f=Math.imul(h,Oe),f=f+Math.imul(x,Ce)|0,v=Math.imul(x,Oe);var Ar=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(Ar>>>26)|0,Ar&=67108863,p=Math.imul(N,Ce),f=Math.imul(N,Oe),f=f+Math.imul(L,Ce)|0,v=Math.imul(L,Oe),p=p+Math.imul(h,Pe)|0,f=f+Math.imul(h,Re)|0,f=f+Math.imul(x,Pe)|0,v=v+Math.imul(x,Re)|0;var Er=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(Er>>>26)|0,Er&=67108863,p=Math.imul(D,Ce),f=Math.imul(D,Oe),f=f+Math.imul(U,Ce)|0,v=Math.imul(U,Oe),p=p+Math.imul(N,Pe)|0,f=f+Math.imul(N,Re)|0,f=f+Math.imul(L,Pe)|0,v=v+Math.imul(L,Re)|0,p=p+Math.imul(h,Be)|0,f=f+Math.imul(h,Le)|0,f=f+Math.imul(x,Be)|0,v=v+Math.imul(x,Le)|0;var xr=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(xr>>>26)|0,xr&=67108863,p=Math.imul(V,Ce),f=Math.imul(V,Oe),f=f+Math.imul(Q,Ce)|0,v=Math.imul(Q,Oe),p=p+Math.imul(D,Pe)|0,f=f+Math.imul(D,Re)|0,f=f+Math.imul(U,Pe)|0,v=v+Math.imul(U,Re)|0,p=p+Math.imul(N,Be)|0,f=f+Math.imul(N,Le)|0,f=f+Math.imul(L,Be)|0,v=v+Math.imul(L,Le)|0,p=p+Math.imul(h,De)|0,f=f+Math.imul(h,Ue)|0,f=f+Math.imul(x,De)|0,v=v+Math.imul(x,Ue)|0;var _r=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(_r>>>26)|0,_r&=67108863,p=Math.imul(me,Ce),f=Math.imul(me,Oe),f=f+Math.imul(oe,Ce)|0,v=Math.imul(oe,Oe),p=p+Math.imul(V,Pe)|0,f=f+Math.imul(V,Re)|0,f=f+Math.imul(Q,Pe)|0,v=v+Math.imul(Q,Re)|0,p=p+Math.imul(D,Be)|0,f=f+Math.imul(D,Le)|0,f=f+Math.imul(U,Be)|0,v=v+Math.imul(U,Le)|0,p=p+Math.imul(N,De)|0,f=f+Math.imul(N,Ue)|0,f=f+Math.imul(L,De)|0,v=v+Math.imul(L,Ue)|0,p=p+Math.imul(h,Fe)|0,f=f+Math.imul(h,He)|0,f=f+Math.imul(x,Fe)|0,v=v+Math.imul(x,He)|0;var Sr=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(Sr>>>26)|0,Sr&=67108863,p=Math.imul(Ae,Ce),f=Math.imul(Ae,Oe),f=f+Math.imul(Ee,Ce)|0,v=Math.imul(Ee,Oe),p=p+Math.imul(me,Pe)|0,f=f+Math.imul(me,Re)|0,f=f+Math.imul(oe,Pe)|0,v=v+Math.imul(oe,Re)|0,p=p+Math.imul(V,Be)|0,f=f+Math.imul(V,Le)|0,f=f+Math.imul(Q,Be)|0,v=v+Math.imul(Q,Le)|0,p=p+Math.imul(D,De)|0,f=f+Math.imul(D,Ue)|0,f=f+Math.imul(U,De)|0,v=v+Math.imul(U,Ue)|0,p=p+Math.imul(N,Fe)|0,f=f+Math.imul(N,He)|0,f=f+Math.imul(L,Fe)|0,v=v+Math.imul(L,He)|0,p=p+Math.imul(h,qe)|0,f=f+Math.imul(h,ze)|0,f=f+Math.imul(x,qe)|0,v=v+Math.imul(x,ze)|0;var fs=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(fs>>>26)|0,fs&=67108863,p=Math.imul(xe,Ce),f=Math.imul(xe,Oe),f=f+Math.imul(_e,Ce)|0,v=Math.imul(_e,Oe),p=p+Math.imul(Ae,Pe)|0,f=f+Math.imul(Ae,Re)|0,f=f+Math.imul(Ee,Pe)|0,v=v+Math.imul(Ee,Re)|0,p=p+Math.imul(me,Be)|0,f=f+Math.imul(me,Le)|0,f=f+Math.imul(oe,Be)|0,v=v+Math.imul(oe,Le)|0,p=p+Math.imul(V,De)|0,f=f+Math.imul(V,Ue)|0,f=f+Math.imul(Q,De)|0,v=v+Math.imul(Q,Ue)|0,p=p+Math.imul(D,Fe)|0,f=f+Math.imul(D,He)|0,f=f+Math.imul(U,Fe)|0,v=v+Math.imul(U,He)|0,p=p+Math.imul(N,qe)|0,f=f+Math.imul(N,ze)|0,f=f+Math.imul(L,qe)|0,v=v+Math.imul(L,ze)|0,p=p+Math.imul(h,Ge)|0,f=f+Math.imul(h,je)|0,f=f+Math.imul(x,Ge)|0,v=v+Math.imul(x,je)|0;var us=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(us>>>26)|0,us&=67108863,p=Math.imul(Se,Ce),f=Math.imul(Se,Oe),f=f+Math.imul(Ie,Ce)|0,v=Math.imul(Ie,Oe),p=p+Math.imul(xe,Pe)|0,f=f+Math.imul(xe,Re)|0,f=f+Math.imul(_e,Pe)|0,v=v+Math.imul(_e,Re)|0,p=p+Math.imul(Ae,Be)|0,f=f+Math.imul(Ae,Le)|0,f=f+Math.imul(Ee,Be)|0,v=v+Math.imul(Ee,Le)|0,p=p+Math.imul(me,De)|0,f=f+Math.imul(me,Ue)|0,f=f+Math.imul(oe,De)|0,v=v+Math.imul(oe,Ue)|0,p=p+Math.imul(V,Fe)|0,f=f+Math.imul(V,He)|0,f=f+Math.imul(Q,Fe)|0,v=v+Math.imul(Q,He)|0,p=p+Math.imul(D,qe)|0,f=f+Math.imul(D,ze)|0,f=f+Math.imul(U,qe)|0,v=v+Math.imul(U,ze)|0,p=p+Math.imul(N,Ge)|0,f=f+Math.imul(N,je)|0,f=f+Math.imul(L,Ge)|0,v=v+Math.imul(L,je)|0,p=p+Math.imul(h,We)|0,f=f+Math.imul(h,Ve)|0,f=f+Math.imul(x,We)|0,v=v+Math.imul(x,Ve)|0;var ls=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(ls>>>26)|0,ls&=67108863,p=Math.imul(Me,Ce),f=Math.imul(Me,Oe),f=f+Math.imul(Ne,Ce)|0,v=Math.imul(Ne,Oe),p=p+Math.imul(Se,Pe)|0,f=f+Math.imul(Se,Re)|0,f=f+Math.imul(Ie,Pe)|0,v=v+Math.imul(Ie,Re)|0,p=p+Math.imul(xe,Be)|0,f=f+Math.imul(xe,Le)|0,f=f+Math.imul(_e,Be)|0,v=v+Math.imul(_e,Le)|0,p=p+Math.imul(Ae,De)|0,f=f+Math.imul(Ae,Ue)|0,f=f+Math.imul(Ee,De)|0,v=v+Math.imul(Ee,Ue)|0,p=p+Math.imul(me,Fe)|0,f=f+Math.imul(me,He)|0,f=f+Math.imul(oe,Fe)|0,v=v+Math.imul(oe,He)|0,p=p+Math.imul(V,qe)|0,f=f+Math.imul(V,ze)|0,f=f+Math.imul(Q,qe)|0,v=v+Math.imul(Q,ze)|0,p=p+Math.imul(D,Ge)|0,f=f+Math.imul(D,je)|0,f=f+Math.imul(U,Ge)|0,v=v+Math.imul(U,je)|0,p=p+Math.imul(N,We)|0,f=f+Math.imul(N,Ve)|0,f=f+Math.imul(L,We)|0,v=v+Math.imul(L,Ve)|0,p=p+Math.imul(h,Ke)|0,f=f+Math.imul(h,$e)|0,f=f+Math.imul(x,Ke)|0,v=v+Math.imul(x,$e)|0;var cs=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(cs>>>26)|0,cs&=67108863,p=Math.imul(ke,Ce),f=Math.imul(ke,Oe),f=f+Math.imul(Te,Ce)|0,v=Math.imul(Te,Oe),p=p+Math.imul(Me,Pe)|0,f=f+Math.imul(Me,Re)|0,f=f+Math.imul(Ne,Pe)|0,v=v+Math.imul(Ne,Re)|0,p=p+Math.imul(Se,Be)|0,f=f+Math.imul(Se,Le)|0,f=f+Math.imul(Ie,Be)|0,v=v+Math.imul(Ie,Le)|0,p=p+Math.imul(xe,De)|0,f=f+Math.imul(xe,Ue)|0,f=f+Math.imul(_e,De)|0,v=v+Math.imul(_e,Ue)|0,p=p+Math.imul(Ae,Fe)|0,f=f+Math.imul(Ae,He)|0,f=f+Math.imul(Ee,Fe)|0,v=v+Math.imul(Ee,He)|0,p=p+Math.imul(me,qe)|0,f=f+Math.imul(me,ze)|0,f=f+Math.imul(oe,qe)|0,v=v+Math.imul(oe,ze)|0,p=p+Math.imul(V,Ge)|0,f=f+Math.imul(V,je)|0,f=f+Math.imul(Q,Ge)|0,v=v+Math.imul(Q,je)|0,p=p+Math.imul(D,We)|0,f=f+Math.imul(D,Ve)|0,f=f+Math.imul(U,We)|0,v=v+Math.imul(U,Ve)|0,p=p+Math.imul(N,Ke)|0,f=f+Math.imul(N,$e)|0,f=f+Math.imul(L,Ke)|0,v=v+Math.imul(L,$e)|0,p=p+Math.imul(h,Je)|0,f=f+Math.imul(h,Ye)|0,f=f+Math.imul(x,Je)|0,v=v+Math.imul(x,Ye)|0;var hs=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(hs>>>26)|0,hs&=67108863,p=Math.imul(ke,Pe),f=Math.imul(ke,Re),f=f+Math.imul(Te,Pe)|0,v=Math.imul(Te,Re),p=p+Math.imul(Me,Be)|0,f=f+Math.imul(Me,Le)|0,f=f+Math.imul(Ne,Be)|0,v=v+Math.imul(Ne,Le)|0,p=p+Math.imul(Se,De)|0,f=f+Math.imul(Se,Ue)|0,f=f+Math.imul(Ie,De)|0,v=v+Math.imul(Ie,Ue)|0,p=p+Math.imul(xe,Fe)|0,f=f+Math.imul(xe,He)|0,f=f+Math.imul(_e,Fe)|0,v=v+Math.imul(_e,He)|0,p=p+Math.imul(Ae,qe)|0,f=f+Math.imul(Ae,ze)|0,f=f+Math.imul(Ee,qe)|0,v=v+Math.imul(Ee,ze)|0,p=p+Math.imul(me,Ge)|0,f=f+Math.imul(me,je)|0,f=f+Math.imul(oe,Ge)|0,v=v+Math.imul(oe,je)|0,p=p+Math.imul(V,We)|0,f=f+Math.imul(V,Ve)|0,f=f+Math.imul(Q,We)|0,v=v+Math.imul(Q,Ve)|0,p=p+Math.imul(D,Ke)|0,f=f+Math.imul(D,$e)|0,f=f+Math.imul(U,Ke)|0,v=v+Math.imul(U,$e)|0,p=p+Math.imul(N,Je)|0,f=f+Math.imul(N,Ye)|0,f=f+Math.imul(L,Je)|0,v=v+Math.imul(L,Ye)|0;var ds=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(ds>>>26)|0,ds&=67108863,p=Math.imul(ke,Be),f=Math.imul(ke,Le),f=f+Math.imul(Te,Be)|0,v=Math.imul(Te,Le),p=p+Math.imul(Me,De)|0,f=f+Math.imul(Me,Ue)|0,f=f+Math.imul(Ne,De)|0,v=v+Math.imul(Ne,Ue)|0,p=p+Math.imul(Se,Fe)|0,f=f+Math.imul(Se,He)|0,f=f+Math.imul(Ie,Fe)|0,v=v+Math.imul(Ie,He)|0,p=p+Math.imul(xe,qe)|0,f=f+Math.imul(xe,ze)|0,f=f+Math.imul(_e,qe)|0,v=v+Math.imul(_e,ze)|0,p=p+Math.imul(Ae,Ge)|0,f=f+Math.imul(Ae,je)|0,f=f+Math.imul(Ee,Ge)|0,v=v+Math.imul(Ee,je)|0,p=p+Math.imul(me,We)|0,f=f+Math.imul(me,Ve)|0,f=f+Math.imul(oe,We)|0,v=v+Math.imul(oe,Ve)|0,p=p+Math.imul(V,Ke)|0,f=f+Math.imul(V,$e)|0,f=f+Math.imul(Q,Ke)|0,v=v+Math.imul(Q,$e)|0,p=p+Math.imul(D,Je)|0,f=f+Math.imul(D,Ye)|0,f=f+Math.imul(U,Je)|0,v=v+Math.imul(U,Ye)|0;var gs=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(gs>>>26)|0,gs&=67108863,p=Math.imul(ke,De),f=Math.imul(ke,Ue),f=f+Math.imul(Te,De)|0,v=Math.imul(Te,Ue),p=p+Math.imul(Me,Fe)|0,f=f+Math.imul(Me,He)|0,f=f+Math.imul(Ne,Fe)|0,v=v+Math.imul(Ne,He)|0,p=p+Math.imul(Se,qe)|0,f=f+Math.imul(Se,ze)|0,f=f+Math.imul(Ie,qe)|0,v=v+Math.imul(Ie,ze)|0,p=p+Math.imul(xe,Ge)|0,f=f+Math.imul(xe,je)|0,f=f+Math.imul(_e,Ge)|0,v=v+Math.imul(_e,je)|0,p=p+Math.imul(Ae,We)|0,f=f+Math.imul(Ae,Ve)|0,f=f+Math.imul(Ee,We)|0,v=v+Math.imul(Ee,Ve)|0,p=p+Math.imul(me,Ke)|0,f=f+Math.imul(me,$e)|0,f=f+Math.imul(oe,Ke)|0,v=v+Math.imul(oe,$e)|0,p=p+Math.imul(V,Je)|0,f=f+Math.imul(V,Ye)|0,f=f+Math.imul(Q,Je)|0,v=v+Math.imul(Q,Ye)|0;var ps=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(ps>>>26)|0,ps&=67108863,p=Math.imul(ke,Fe),f=Math.imul(ke,He),f=f+Math.imul(Te,Fe)|0,v=Math.imul(Te,He),p=p+Math.imul(Me,qe)|0,f=f+Math.imul(Me,ze)|0,f=f+Math.imul(Ne,qe)|0,v=v+Math.imul(Ne,ze)|0,p=p+Math.imul(Se,Ge)|0,f=f+Math.imul(Se,je)|0,f=f+Math.imul(Ie,Ge)|0,v=v+Math.imul(Ie,je)|0,p=p+Math.imul(xe,We)|0,f=f+Math.imul(xe,Ve)|0,f=f+Math.imul(_e,We)|0,v=v+Math.imul(_e,Ve)|0,p=p+Math.imul(Ae,Ke)|0,f=f+Math.imul(Ae,$e)|0,f=f+Math.imul(Ee,Ke)|0,v=v+Math.imul(Ee,$e)|0,p=p+Math.imul(me,Je)|0,f=f+Math.imul(me,Ye)|0,f=f+Math.imul(oe,Je)|0,v=v+Math.imul(oe,Ye)|0;var ms=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(ms>>>26)|0,ms&=67108863,p=Math.imul(ke,qe),f=Math.imul(ke,ze),f=f+Math.imul(Te,qe)|0,v=Math.imul(Te,ze),p=p+Math.imul(Me,Ge)|0,f=f+Math.imul(Me,je)|0,f=f+Math.imul(Ne,Ge)|0,v=v+Math.imul(Ne,je)|0,p=p+Math.imul(Se,We)|0,f=f+Math.imul(Se,Ve)|0,f=f+Math.imul(Ie,We)|0,v=v+Math.imul(Ie,Ve)|0,p=p+Math.imul(xe,Ke)|0,f=f+Math.imul(xe,$e)|0,f=f+Math.imul(_e,Ke)|0,v=v+Math.imul(_e,$e)|0,p=p+Math.imul(Ae,Je)|0,f=f+Math.imul(Ae,Ye)|0,f=f+Math.imul(Ee,Je)|0,v=v+Math.imul(Ee,Ye)|0;var vs=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(vs>>>26)|0,vs&=67108863,p=Math.imul(ke,Ge),f=Math.imul(ke,je),f=f+Math.imul(Te,Ge)|0,v=Math.imul(Te,je),p=p+Math.imul(Me,We)|0,f=f+Math.imul(Me,Ve)|0,f=f+Math.imul(Ne,We)|0,v=v+Math.imul(Ne,Ve)|0,p=p+Math.imul(Se,Ke)|0,f=f+Math.imul(Se,$e)|0,f=f+Math.imul(Ie,Ke)|0,v=v+Math.imul(Ie,$e)|0,p=p+Math.imul(xe,Je)|0,f=f+Math.imul(xe,Ye)|0,f=f+Math.imul(_e,Je)|0,v=v+Math.imul(_e,Ye)|0;var ys=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(ys>>>26)|0,ys&=67108863,p=Math.imul(ke,We),f=Math.imul(ke,Ve),f=f+Math.imul(Te,We)|0,v=Math.imul(Te,Ve),p=p+Math.imul(Me,Ke)|0,f=f+Math.imul(Me,$e)|0,f=f+Math.imul(Ne,Ke)|0,v=v+Math.imul(Ne,$e)|0,p=p+Math.imul(Se,Je)|0,f=f+Math.imul(Se,Ye)|0,f=f+Math.imul(Ie,Je)|0,v=v+Math.imul(Ie,Ye)|0;var bs=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(bs>>>26)|0,bs&=67108863,p=Math.imul(ke,Ke),f=Math.imul(ke,$e),f=f+Math.imul(Te,Ke)|0,v=Math.imul(Te,$e),p=p+Math.imul(Me,Je)|0,f=f+Math.imul(Me,Ye)|0,f=f+Math.imul(Ne,Je)|0,v=v+Math.imul(Ne,Ye)|0;var ws=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(ws>>>26)|0,ws&=67108863,p=Math.imul(ke,Je),f=Math.imul(ke,Ye),f=f+Math.imul(Te,Je)|0,v=Math.imul(Te,Ye);var As=(b+p|0)+((f&8191)<<13)|0;return b=(v+(f>>>13)|0)+(As>>>26)|0,As&=67108863,m[0]=Ar,m[1]=Er,m[2]=xr,m[3]=_r,m[4]=Sr,m[5]=fs,m[6]=us,m[7]=ls,m[8]=cs,m[9]=hs,m[10]=ds,m[11]=gs,m[12]=ps,m[13]=ms,m[14]=vs,m[15]=ys,m[16]=bs,m[17]=ws,m[18]=As,b!==0&&(m[19]=b,w.length++),w};Math.imul||(W=B);function H(_,u,d){d.negative=u.negative^_.negative,d.length=_.length+u.length;for(var w=0,E=0,c=0;c>>26)|0,E+=m>>>26,m&=67108863}d.words[c]=b,w=m,m=E}return w!==0?d.words[c]=w:d.length--,d._strip()}function J(_,u,d){return H(_,u,d)}s.prototype.mulTo=function(u,d){var w,E=this.length+u.length;return this.length===10&&u.length===10?w=W(this,u,d):E<63?w=B(this,u,d):E<1024?w=H(this,u,d):w=J(this,u,d),w},s.prototype.mul=function(u){var d=new s(null);return d.words=new Array(this.length+u.length),this.mulTo(u,d)},s.prototype.mulf=function(u){var d=new s(null);return d.words=new Array(this.length+u.length),J(this,u,d)},s.prototype.imul=function(u){return this.clone().mulTo(u,this)},s.prototype.imuln=function(u){var d=u<0;d&&(u=-u),n(typeof u=="number"),n(u<67108864);for(var w=0,E=0;E>=26,w+=c/67108864|0,w+=m>>>26,this.words[E]=m&67108863}return w!==0&&(this.words[E]=w,this.length++),d?this.ineg():this},s.prototype.muln=function(u){return this.clone().imuln(u)},s.prototype.sqr=function(){return this.mul(this)},s.prototype.isqr=function(){return this.imul(this.clone())},s.prototype.pow=function(u){var d=j(u);if(d.length===0)return new s(1);for(var w=this,E=0;E=0);var d=u%26,w=(u-d)/26,E=67108863>>>26-d<<26-d,c;if(d!==0){var m=0;for(c=0;c>>26-d}m&&(this.words[c]=m,this.length++)}if(w!==0){for(c=this.length-1;c>=0;c--)this.words[c+w]=this.words[c];for(c=0;c=0);var E;d?E=(d-d%26)/26:E=0;var c=u%26,m=Math.min((u-c)/26,this.length),b=67108863^67108863>>>c<m)for(this.length-=m,f=0;f=0&&(v!==0||f>=E);f--){var T=this.words[f]|0;this.words[f]=v<<26-c|T>>>c,v=T&b}return p&&v!==0&&(p.words[p.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},s.prototype.ishrn=function(u,d,w){return n(this.negative===0),this.iushrn(u,d,w)},s.prototype.shln=function(u){return this.clone().ishln(u)},s.prototype.ushln=function(u){return this.clone().iushln(u)},s.prototype.shrn=function(u){return this.clone().ishrn(u)},s.prototype.ushrn=function(u){return this.clone().iushrn(u)},s.prototype.testn=function(u){n(typeof u=="number"&&u>=0);var d=u%26,w=(u-d)/26,E=1<=0);var d=u%26,w=(u-d)/26;if(n(this.negative===0,"imaskn works only with positive numbers"),this.length<=w)return this;if(d!==0&&w++,this.length=Math.min(w,this.length),d!==0){var E=67108863^67108863>>>d<=67108864;d++)this.words[d]-=67108864,d===this.length-1?this.words[d+1]=1:this.words[d+1]++;return this.length=Math.max(this.length,d+1),this},s.prototype.isubn=function(u){if(n(typeof u=="number"),n(u<67108864),u<0)return this.iaddn(-u);if(this.negative!==0)return this.negative=0,this.iaddn(u),this.negative=1,this;if(this.words[0]-=u,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var d=0;d>26)-(p/67108864|0),this.words[c+w]=m&67108863}for(;c>26,this.words[c+w]=m&67108863;if(b===0)return this._strip();for(n(b===-1),b=0,c=0;c>26,this.words[c]=m&67108863;return this.negative=1,this._strip()},s.prototype._wordDiv=function(u,d){var w=this.length-u.length,E=this.clone(),c=u,m=c.words[c.length-1]|0,b=this._countBits(m);w=26-b,w!==0&&(c=c.ushln(w),E.iushln(w),m=c.words[c.length-1]|0);var p=E.length-c.length,f;if(d!=="mod"){f=new s(null),f.length=p+1,f.words=new Array(f.length);for(var v=0;v=0;h--){var x=(E.words[c.length+h]|0)*67108864+(E.words[c.length+h-1]|0);for(x=Math.min(x/m|0,67108863),E._ishlnsubmul(c,x,h);E.negative!==0;)x--,E.negative=0,E._ishlnsubmul(c,1,h),E.isZero()||(E.negative^=1);f&&(f.words[h]=x)}return f&&f._strip(),E._strip(),d!=="div"&&w!==0&&E.iushrn(w),{div:f||null,mod:E}},s.prototype.divmod=function(u,d,w){if(n(!u.isZero()),this.isZero())return{div:new s(0),mod:new s(0)};var E,c,m;return this.negative!==0&&u.negative===0?(m=this.neg().divmod(u,d),d!=="mod"&&(E=m.div.neg()),d!=="div"&&(c=m.mod.neg(),w&&c.negative!==0&&c.iadd(u)),{div:E,mod:c}):this.negative===0&&u.negative!==0?(m=this.divmod(u.neg(),d),d!=="mod"&&(E=m.div.neg()),{div:E,mod:m.mod}):this.negative&u.negative?(m=this.neg().divmod(u.neg(),d),d!=="div"&&(c=m.mod.neg(),w&&c.negative!==0&&c.isub(u)),{div:m.div,mod:c}):u.length>this.length||this.cmp(u)<0?{div:new s(0),mod:this}:u.length===1?d==="div"?{div:this.divn(u.words[0]),mod:null}:d==="mod"?{div:null,mod:new s(this.modrn(u.words[0]))}:{div:this.divn(u.words[0]),mod:new s(this.modrn(u.words[0]))}:this._wordDiv(u,d)},s.prototype.div=function(u){return this.divmod(u,"div",!1).div},s.prototype.mod=function(u){return this.divmod(u,"mod",!1).mod},s.prototype.umod=function(u){return this.divmod(u,"mod",!0).mod},s.prototype.divRound=function(u){var d=this.divmod(u);if(d.mod.isZero())return d.div;var w=d.div.negative!==0?d.mod.isub(u):d.mod,E=u.ushrn(1),c=u.andln(1),m=w.cmp(E);return m<0||c===1&&m===0?d.div:d.div.negative!==0?d.div.isubn(1):d.div.iaddn(1)},s.prototype.modrn=function(u){var d=u<0;d&&(u=-u),n(u<=67108863);for(var w=(1<<26)%u,E=0,c=this.length-1;c>=0;c--)E=(w*E+(this.words[c]|0))%u;return d?-E:E},s.prototype.modn=function(u){return this.modrn(u)},s.prototype.idivn=function(u){var d=u<0;d&&(u=-u),n(u<=67108863);for(var w=0,E=this.length-1;E>=0;E--){var c=(this.words[E]|0)+w*67108864;this.words[E]=c/u|0,w=c%u}return this._strip(),d?this.ineg():this},s.prototype.divn=function(u){return this.clone().idivn(u)},s.prototype.egcd=function(u){n(u.negative===0),n(!u.isZero());var d=this,w=u.clone();d.negative!==0?d=d.umod(u):d=d.clone();for(var E=new s(1),c=new s(0),m=new s(0),b=new s(1),p=0;d.isEven()&&w.isEven();)d.iushrn(1),w.iushrn(1),++p;for(var f=w.clone(),v=d.clone();!d.isZero();){for(var T=0,h=1;!(d.words[0]&h)&&T<26;++T,h<<=1);if(T>0)for(d.iushrn(T);T-- >0;)(E.isOdd()||c.isOdd())&&(E.iadd(f),c.isub(v)),E.iushrn(1),c.iushrn(1);for(var x=0,S=1;!(w.words[0]&S)&&x<26;++x,S<<=1);if(x>0)for(w.iushrn(x);x-- >0;)(m.isOdd()||b.isOdd())&&(m.iadd(f),b.isub(v)),m.iushrn(1),b.iushrn(1);d.cmp(w)>=0?(d.isub(w),E.isub(m),c.isub(b)):(w.isub(d),m.isub(E),b.isub(c))}return{a:m,b,gcd:w.iushln(p)}},s.prototype._invmp=function(u){n(u.negative===0),n(!u.isZero());var d=this,w=u.clone();d.negative!==0?d=d.umod(u):d=d.clone();for(var E=new s(1),c=new s(0),m=w.clone();d.cmpn(1)>0&&w.cmpn(1)>0;){for(var b=0,p=1;!(d.words[0]&p)&&b<26;++b,p<<=1);if(b>0)for(d.iushrn(b);b-- >0;)E.isOdd()&&E.iadd(m),E.iushrn(1);for(var f=0,v=1;!(w.words[0]&v)&&f<26;++f,v<<=1);if(f>0)for(w.iushrn(f);f-- >0;)c.isOdd()&&c.iadd(m),c.iushrn(1);d.cmp(w)>=0?(d.isub(w),E.isub(c)):(w.isub(d),c.isub(E))}var T;return d.cmpn(1)===0?T=E:T=c,T.cmpn(0)<0&&T.iadd(u),T},s.prototype.gcd=function(u){if(this.isZero())return u.abs();if(u.isZero())return this.abs();var d=this.clone(),w=u.clone();d.negative=0,w.negative=0;for(var E=0;d.isEven()&&w.isEven();E++)d.iushrn(1),w.iushrn(1);do{for(;d.isEven();)d.iushrn(1);for(;w.isEven();)w.iushrn(1);var c=d.cmp(w);if(c<0){var m=d;d=w,w=m}else if(c===0||w.cmpn(1)===0)break;d.isub(w)}while(!0);return w.iushln(E)},s.prototype.invm=function(u){return this.egcd(u).a.umod(u)},s.prototype.isEven=function(){return(this.words[0]&1)===0},s.prototype.isOdd=function(){return(this.words[0]&1)===1},s.prototype.andln=function(u){return this.words[0]&u},s.prototype.bincn=function(u){n(typeof u=="number");var d=u%26,w=(u-d)/26,E=1<>>26,b&=67108863,this.words[m]=b}return c!==0&&(this.words[m]=c,this.length++),this},s.prototype.isZero=function(){return this.length===1&&this.words[0]===0},s.prototype.cmpn=function(u){var d=u<0;if(this.negative!==0&&!d)return-1;if(this.negative===0&&d)return 1;this._strip();var w;if(this.length>1)w=1;else{d&&(u=-u),n(u<=67108863,"Number is too big");var E=this.words[0]|0;w=E===u?0:Eu.length)return 1;if(this.length=0;w--){var E=this.words[w]|0,c=u.words[w]|0;if(E!==c){Ec&&(d=1);break}}return d},s.prototype.gtn=function(u){return this.cmpn(u)===1},s.prototype.gt=function(u){return this.cmp(u)===1},s.prototype.gten=function(u){return this.cmpn(u)>=0},s.prototype.gte=function(u){return this.cmp(u)>=0},s.prototype.ltn=function(u){return this.cmpn(u)===-1},s.prototype.lt=function(u){return this.cmp(u)===-1},s.prototype.lten=function(u){return this.cmpn(u)<=0},s.prototype.lte=function(u){return this.cmp(u)<=0},s.prototype.eqn=function(u){return this.cmpn(u)===0},s.prototype.eq=function(u){return this.cmp(u)===0},s.red=function(u){return new le(u)},s.prototype.toRed=function(u){return n(!this.red,"Already a number in reduction context"),n(this.negative===0,"red works only with positives"),u.convertTo(this)._forceRed(u)},s.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},s.prototype._forceRed=function(u){return this.red=u,this},s.prototype.forceRed=function(u){return n(!this.red,"Already a number in reduction context"),this._forceRed(u)},s.prototype.redAdd=function(u){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,u)},s.prototype.redIAdd=function(u){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,u)},s.prototype.redSub=function(u){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,u)},s.prototype.redISub=function(u){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,u)},s.prototype.redShl=function(u){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,u)},s.prototype.redMul=function(u){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,u),this.red.mul(this,u)},s.prototype.redIMul=function(u){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,u),this.red.imul(this,u)},s.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},s.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},s.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},s.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},s.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},s.prototype.redPow=function(u){return n(this.red&&!u.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,u)};var K={k256:null,p224:null,p192:null,p25519:null};function Y(_,u){this.name=_,this.p=new s(u,16),this.n=this.p.bitLength(),this.k=new s(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}Y.prototype._tmp=function(){var u=new s(null);return u.words=new Array(Math.ceil(this.n/13)),u},Y.prototype.ireduce=function(u){var d=u,w;do this.split(d,this.tmp),d=this.imulK(d),d=d.iadd(this.tmp),w=d.bitLength();while(w>this.n);var E=w0?d.isub(this.p):d.strip!==void 0?d.strip():d._strip(),d},Y.prototype.split=function(u,d){u.iushrn(this.n,0,d)},Y.prototype.imulK=function(u){return u.imul(this.k)};function ye(){Y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(ye,Y),ye.prototype.split=function(u,d){for(var w=4194303,E=Math.min(u.length,9),c=0;c>>22,m=b}m>>>=22,u.words[c-10]=m,m===0&&u.length>10?u.length-=10:u.length-=9},ye.prototype.imulK=function(u){u.words[u.length]=0,u.words[u.length+1]=0,u.length+=2;for(var d=0,w=0;w>>=26,u.words[w]=c,d=E}return d!==0&&(u.words[u.length++]=d),u},s._prime=function(u){if(K[u])return K[u];var d;if(u==="k256")d=new ye;else if(u==="p224")d=new de;else if(u==="p192")d=new X;else if(u==="p25519")d=new we;else throw new Error("Unknown prime "+u);return K[u]=d,d};function le(_){if(typeof _=="string"){var u=s._prime(_);this.m=u.p,this.prime=u}else n(_.gtn(1),"modulus must be greater than 1"),this.m=_,this.prime=null}le.prototype._verify1=function(u){n(u.negative===0,"red works only with positives"),n(u.red,"red works only with red numbers")},le.prototype._verify2=function(u,d){n((u.negative|d.negative)===0,"red works only with positives"),n(u.red&&u.red===d.red,"red works only with red numbers")},le.prototype.imod=function(u){return this.prime?this.prime.ireduce(u)._forceRed(this):(y(u,u.umod(this.m)._forceRed(this)),u)},le.prototype.neg=function(u){return u.isZero()?u.clone():this.m.sub(u)._forceRed(this)},le.prototype.add=function(u,d){this._verify2(u,d);var w=u.add(d);return w.cmp(this.m)>=0&&w.isub(this.m),w._forceRed(this)},le.prototype.iadd=function(u,d){this._verify2(u,d);var w=u.iadd(d);return w.cmp(this.m)>=0&&w.isub(this.m),w},le.prototype.sub=function(u,d){this._verify2(u,d);var w=u.sub(d);return w.cmpn(0)<0&&w.iadd(this.m),w._forceRed(this)},le.prototype.isub=function(u,d){this._verify2(u,d);var w=u.isub(d);return w.cmpn(0)<0&&w.iadd(this.m),w},le.prototype.shl=function(u,d){return this._verify1(u),this.imod(u.ushln(d))},le.prototype.imul=function(u,d){return this._verify2(u,d),this.imod(u.imul(d))},le.prototype.mul=function(u,d){return this._verify2(u,d),this.imod(u.mul(d))},le.prototype.isqr=function(u){return this.imul(u,u.clone())},le.prototype.sqr=function(u){return this.mul(u,u)},le.prototype.sqrt=function(u){if(u.isZero())return u.clone();var d=this.m.andln(3);if(n(d%2===1),d===3){var w=this.m.add(new s(1)).iushrn(2);return this.pow(u,w)}for(var E=this.m.subn(1),c=0;!E.isZero()&&E.andln(1)===0;)c++,E.iushrn(1);n(!E.isZero());var m=new s(1).toRed(this),b=m.redNeg(),p=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new s(2*f*f).toRed(this);this.pow(f,p).cmp(b)!==0;)f.redIAdd(b);for(var v=this.pow(f,E),T=this.pow(u,E.addn(1).iushrn(1)),h=this.pow(u,E),x=c;h.cmp(m)!==0;){for(var S=h,N=0;S.cmp(m)!==0;N++)S=S.redSqr();n(N=0;c--){for(var v=d.words[c],T=f-1;T>=0;T--){var h=v>>T&1;if(m!==E[0]&&(m=this.sqr(m)),h===0&&b===0){p=0;continue}b<<=1,b|=h,p++,!(p!==w&&(c!==0||T!==0))&&(m=this.mul(m,E[b]),p=0,b=0)}f=26}return m},le.prototype.convertTo=function(u){var d=u.umod(this.m);return d===u?d.clone():d},le.prototype.convertFrom=function(u){var d=u.clone();return d.red=null,d},s.mont=function(u){return new at(u)};function at(_){le.call(this,_),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new s(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(at,le),at.prototype.convertTo=function(u){return this.imod(u.ushln(this.shift))},at.prototype.convertFrom=function(u){var d=this.imod(u.mul(this.rinv));return d.red=null,d},at.prototype.imul=function(u,d){if(u.isZero()||d.isZero())return u.words[0]=0,u.length=1,u;var w=u.imul(d),E=w.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),c=w.isub(E).iushrn(this.shift),m=c;return c.cmp(this.m)>=0?m=c.isub(this.m):c.cmpn(0)<0&&(m=c.iadd(this.m)),m._forceRed(this)},at.prototype.mul=function(u,d){if(u.isZero()||d.isZero())return new s(0)._forceRed(this);var w=u.mul(d),E=w.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),c=w.isub(E).iushrn(this.shift),m=c;return c.cmp(this.m)>=0?m=c.isub(this.m):c.cmpn(0)<0&&(m=c.iadd(this.m)),m._forceRed(this)},at.prototype.invm=function(u){var d=this.imod(u._invmp(this.m).mul(this.r2));return d._forceRed(this)}})(t,Wa)})(po);var bl=po.exports;const ee=ji(bl),wl="logger/5.7.0";let Ko=!1,$o=!1;const vi={debug:1,default:2,info:2,warning:3,error:4,off:5};let Jo=vi.default,Es=null;function Al(){try{const t=[];if(["NFD","NFC","NFKD","NFKC"].forEach(e=>{try{if("test".normalize(e)!=="test")throw new Error("bad normalize")}catch{t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if("é".normalize("NFD")!=="é")throw new Error("broken implementation")}catch(t){return t.message}return null}const Yo=Al();var Gs;(function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"})(Gs||(Gs={}));var Vt;(function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"})(Vt||(Vt={}));const Qo="0123456789abcdef";let R=class ft{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,r){const n=e.toLowerCase();vi[n]==null&&this.throwArgumentError("invalid log level name","logLevel",e),!(Jo>vi[n])&&console.log.apply(console,r)}debug(...e){this._log(ft.levels.DEBUG,e)}info(...e){this._log(ft.levels.INFO,e)}warn(...e){this._log(ft.levels.WARNING,e)}makeError(e,r,n){if($o)return this.makeError("censored error",r,{});r||(r=ft.errors.UNKNOWN_ERROR),n||(n={});const i=[];Object.keys(n).forEach(l=>{const g=n[l];try{if(g instanceof Uint8Array){let y="";for(let A=0;A>4],y+=Qo[g[A]&15];i.push(l+"=Uint8Array(0x"+y+")")}else i.push(l+"="+JSON.stringify(g))}catch{i.push(l+"="+JSON.stringify(n[l].toString()))}}),i.push(`code=${r}`),i.push(`version=${this.version}`);const s=e;let o="";switch(r){case Vt.NUMERIC_FAULT:{o="NUMERIC_FAULT";const l=e;switch(l){case"overflow":case"underflow":case"division-by-zero":o+="-"+l;break;case"negative-power":case"negative-width":o+="-unsupported";break;case"unbound-bitwise-result":o+="-unbound-result";break}break}case Vt.CALL_EXCEPTION:case Vt.INSUFFICIENT_FUNDS:case Vt.MISSING_NEW:case Vt.NONCE_EXPIRED:case Vt.REPLACEMENT_UNDERPRICED:case Vt.TRANSACTION_REPLACED:case Vt.UNPREDICTABLE_GAS_LIMIT:o=r;break}o&&(e+=" [ See: https://links.ethers.org/v5-errors-"+o+" ]"),i.length&&(e+=" ("+i.join(", ")+")");const a=new Error(e);return a.reason=s,a.code=r,Object.keys(n).forEach(function(l){a[l]=n[l]}),a}throwError(e,r,n){throw this.makeError(e,r,n)}throwArgumentError(e,r,n){return this.throwError(e,ft.errors.INVALID_ARGUMENT,{argument:r,value:n})}assert(e,r,n,i){e||this.throwError(r,n,i)}assertArgument(e,r,n,i){e||this.throwArgumentError(r,n,i)}checkNormalize(e){Yo&&this.throwError("platform missing String.prototype.normalize",ft.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Yo})}checkSafeUint53(e,r){typeof e=="number"&&(r==null&&(r="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(r,ft.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(r,ft.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,r,n){n?n=": "+n:n="",er&&this.throwError("too many arguments"+n,ft.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:r})}checkNew(e,r){(e===Object||e==null)&&this.throwError("missing new",ft.errors.MISSING_NEW,{name:r.name})}checkAbstract(e,r){e===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",ft.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):(e===Object||e==null)&&this.throwError("missing new",ft.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return Es||(Es=new ft(wl)),Es}static setCensorship(e,r){if(!e&&r&&this.globalLogger().throwError("cannot permanently disable censorship",ft.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Ko){if(!e)return;this.globalLogger().throwError("error censorship permanent",ft.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}$o=!!e,Ko=!!r}static setLogLevel(e){const r=vi[e.toLowerCase()];if(r==null){ft.globalLogger().warn("invalid log level - "+e);return}Jo=r}static from(e){return new ft(e)}};R.errors=Vt;R.levels=Gs;const El="bytes/5.7.0",rt=new R(El);function Ka(t){return!!t.toHexString}function yn(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return yn(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function Or(t){return pe(t)&&!(t.length%2)||Wi(t)}function Xo(t){return typeof t=="number"&&t==t&&t%1===0}function Wi(t){if(t==null)return!1;if(t.constructor===Uint8Array)return!0;if(typeof t=="string"||!Xo(t.length)||t.length<0)return!1;for(let e=0;e=256)return!1}return!0}function q(t,e){if(e||(e={}),typeof t=="number"){rt.checkSafeUint53(t,"invalid arrayify value");const r=[];for(;t;)r.unshift(t&255),t=parseInt(String(t/256));return r.length===0&&r.push(0),yn(new Uint8Array(r))}if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),Ka(t)&&(t=t.toHexString()),pe(t)){let r=t.substring(2);r.length%2&&(e.hexPad==="left"?r="0"+r:e.hexPad==="right"?r+="0":rt.throwArgumentError("hex data is odd-length","value",t));const n=[];for(let i=0;iq(i)),r=e.reduce((i,s)=>i+s.length,0),n=new Uint8Array(r);return e.reduce((i,s)=>(n.set(s,i),i+s.length),0),yn(n)}function En(t){let e=q(t);if(e.length===0)return e;let r=0;for(;re&&rt.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),yn(r)}function pe(t,e){return!(typeof t!="string"||!t.match(/^0x[0-9A-Fa-f]*$/)||e&&t.length!==2+2*e)}const xs="0123456789abcdef";function F(t,e){if(e||(e={}),typeof t=="number"){rt.checkSafeUint53(t,"invalid hexlify value");let r="";for(;t;)r=xs[t&15]+r,t=Math.floor(t/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof t=="bigint")return t=t.toString(16),t.length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),Ka(t))return t.toHexString();if(pe(t))return t.length%2&&(e.hexPad==="left"?t="0x0"+t.substring(2):e.hexPad==="right"?t+="0":rt.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(Wi(t)){let r="0x";for(let n=0;n>4]+xs[i&15]}return r}return rt.throwArgumentError("invalid hexlify value","value",t)}function nn(t){if(typeof t!="string")t=F(t);else if(!pe(t)||t.length%2)return null;return(t.length-2)/2}function gt(t,e,r){return typeof t!="string"?t=F(t):(!pe(t)||t.length%2)&&rt.throwArgumentError("invalid hexData","value",t),e=2+2*e,r!=null?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}function _t(t){let e="0x";return t.forEach(r=>{e+=F(r).substring(2)}),e}function mo(t){const e=xl(F(t,{hexPad:"left"}));return e==="0x"?"0x0":e}function xl(t){typeof t!="string"&&(t=F(t)),pe(t)||rt.throwArgumentError("invalid hex string","value",t),t=t.substring(2);let e=0;for(;e2*e+2&&rt.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}function Vi(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Or(t)){let r=q(t);r.length===64?(e.v=27+(r[32]>>7),r[32]&=127,e.r=F(r.slice(0,32)),e.s=F(r.slice(32,64))):r.length===65?(e.r=F(r.slice(0,32)),e.s=F(r.slice(32,64)),e.v=r[64]):rt.throwArgumentError("invalid signature string","signature",t),e.v<27&&(e.v===0||e.v===1?e.v+=27:rt.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=F(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,e._vs!=null){const i=yi(q(e._vs),32);e._vs=F(i);const s=i[0]>=128?1:0;e.recoveryParam==null?e.recoveryParam=s:e.recoveryParam!==s&&rt.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),i[0]&=127;const o=F(i);e.s==null?e.s=o:e.s!==o&&rt.throwArgumentError("signature v mismatch _vs","signature",t)}if(e.recoveryParam==null)e.v==null?rt.throwArgumentError("signature missing v and recoveryParam","signature",t):e.v===0||e.v===1?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(e.v==null)e.v=27+e.recoveryParam;else{const i=e.v===0||e.v===1?e.v:1-e.v%2;e.recoveryParam!==i&&rt.throwArgumentError("signature recoveryParam mismatch v","signature",t)}e.r==null||!pe(e.r)?rt.throwArgumentError("signature missing or invalid r","signature",t):e.r=it(e.r,32),e.s==null||!pe(e.s)?rt.throwArgumentError("signature missing or invalid s","signature",t):e.s=it(e.s,32);const r=q(e.s);r[0]>=128&&rt.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const n=F(r);e._vs&&(pe(e._vs)||rt.throwArgumentError("signature invalid _vs","signature",t),e._vs=it(e._vs,32)),e._vs==null?e._vs=n:e._vs!==n&&rt.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}const _l="bignumber/5.7.0";var ki=ee.BN;const ur=new R(_l),_s={},Zo=9007199254740991;let ea=!1;class O{constructor(e,r){e!==_s&&ur.throwError("cannot call constructor directly; use BigNumber.from",R.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return xt(ne(this).fromTwos(e))}toTwos(e){return xt(ne(this).toTwos(e))}abs(){return this._hex[0]==="-"?O.from(this._hex.substring(1)):this}add(e){return xt(ne(this).add(ne(e)))}sub(e){return xt(ne(this).sub(ne(e)))}div(e){return O.from(e).isZero()&&Ot("division-by-zero","div"),xt(ne(this).div(ne(e)))}mul(e){return xt(ne(this).mul(ne(e)))}mod(e){const r=ne(e);return r.isNeg()&&Ot("division-by-zero","mod"),xt(ne(this).umod(r))}pow(e){const r=ne(e);return r.isNeg()&&Ot("negative-power","pow"),xt(ne(this).pow(r))}and(e){const r=ne(e);return(this.isNegative()||r.isNeg())&&Ot("unbound-bitwise-result","and"),xt(ne(this).and(r))}or(e){const r=ne(e);return(this.isNegative()||r.isNeg())&&Ot("unbound-bitwise-result","or"),xt(ne(this).or(r))}xor(e){const r=ne(e);return(this.isNegative()||r.isNeg())&&Ot("unbound-bitwise-result","xor"),xt(ne(this).xor(r))}mask(e){return(this.isNegative()||e<0)&&Ot("negative-width","mask"),xt(ne(this).maskn(e))}shl(e){return(this.isNegative()||e<0)&&Ot("negative-width","shl"),xt(ne(this).shln(e))}shr(e){return(this.isNegative()||e<0)&&Ot("negative-width","shr"),xt(ne(this).shrn(e))}eq(e){return ne(this).eq(ne(e))}lt(e){return ne(this).lt(ne(e))}lte(e){return ne(this).lte(ne(e))}gt(e){return ne(this).gt(ne(e))}gte(e){return ne(this).gte(ne(e))}isNegative(){return this._hex[0]==="-"}isZero(){return ne(this).isZero()}toNumber(){try{return ne(this).toNumber()}catch{Ot("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return ur.throwError("this platform does not support BigInt",R.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?ea||(ea=!0,ur.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?ur.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",R.errors.UNEXPECTED_ARGUMENT,{}):ur.throwError("BigNumber.toString does not accept parameters",R.errors.UNEXPECTED_ARGUMENT,{})),ne(this).toString(10)}toHexString(){return this._hex}toJSON(e){return{type:"BigNumber",hex:this.toHexString()}}static from(e){if(e instanceof O)return e;if(typeof e=="string")return e.match(/^-?0x[0-9a-f]+$/i)?new O(_s,$n(e)):e.match(/^-?[0-9]+$/)?new O(_s,$n(new ki(e))):ur.throwArgumentError("invalid BigNumber string","value",e);if(typeof e=="number")return e%1&&Ot("underflow","BigNumber.from",e),(e>=Zo||e<=-Zo)&&Ot("overflow","BigNumber.from",e),O.from(String(e));const r=e;if(typeof r=="bigint")return O.from(r.toString());if(Wi(r))return O.from(F(r));if(r)if(r.toHexString){const n=r.toHexString();if(typeof n=="string")return O.from(n)}else{let n=r._hex;if(n==null&&r.type==="BigNumber"&&(n=r.hex),typeof n=="string"&&(pe(n)||n[0]==="-"&&pe(n.substring(1))))return O.from(n)}return ur.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!!(e&&e._isBigNumber)}}function $n(t){if(typeof t!="string")return $n(t.toString(16));if(t[0]==="-")return t=t.substring(1),t[0]==="-"&&ur.throwArgumentError("invalid hex","value",t),t=$n(t),t==="0x00"?t:"-"+t;if(t.substring(0,2)!=="0x"&&(t="0x"+t),t==="0x")return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&t.substring(0,4)==="0x00";)t="0x"+t.substring(4);return t}function xt(t){return O.from($n(t))}function ne(t){const e=O.from(t).toHexString();return e[0]==="-"?new ki("-"+e.substring(3),16):new ki(e.substring(2),16)}function Ot(t,e,r){const n={fault:t,operation:e};return r!=null&&(n.value=r),ur.throwError(t,R.errors.NUMERIC_FAULT,n)}function Sl(t){return new ki(t,36).toString(16)}const Il="properties/5.7.0";var Ml=function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(y){try{g(n.next(y))}catch(A){o(A)}}function l(y){try{g(n.throw(y))}catch(A){o(A)}}function g(y){y.done?s(y.value):i(y.value).then(a,l)}g((n=n.apply(t,e||[])).next())})};const $a=new R(Il);function G(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}function dn(t,e){for(let r=0;r<32;r++){if(t[e])return t[e];if(!t.prototype||typeof t.prototype!="object")break;t=Object.getPrototypeOf(t.prototype).constructor}return null}function ot(t){return Ml(this,void 0,void 0,function*(){const e=Object.keys(t).map(n=>{const i=t[n];return Promise.resolve(i).then(s=>({key:n,value:s}))});return(yield Promise.all(e)).reduce((n,i)=>(n[i.key]=i.value,n),{})})}function Tt(t){const e={};for(const r in t)e[r]=t[r];return e}const Nl={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function Ja(t){if(t==null||Nl[typeof t])return!0;if(Array.isArray(t)||typeof t=="object"){if(!Object.isFrozen(t))return!1;const e=Object.keys(t);for(let r=0;rxn(e)));if(typeof t=="object"){const e={};for(const r in t){const n=t[r];n!==void 0&&G(e,r,xn(n))}return e}return $a.throwArgumentError(`Cannot deepCopy ${typeof t}`,"object",t)}function xn(t){return kl(t)}class ri{constructor(e){for(const r in e)this[r]=xn(e[r])}}const ni="abi/5.7.0",ae=new R(ni),sn={};let ta={calldata:!0,memory:!0,storage:!0},Tl={calldata:!0,memory:!0};function li(t,e){if(t==="bytes"||t==="string"){if(ta[e])return!0}else if(t==="address"){if(e==="payable")return!0}else if((t.indexOf("[")>=0||t==="tuple")&&Tl[e])return!0;return(ta[e]||e==="payable")&&ae.throwArgumentError("invalid modifier","name",e),!1}function Cl(t,e){let r=t;function n(a){ae.throwArgumentError(`unexpected character at position ${a}`,"param",t)}t=t.replace(/\s/g," ");function i(a){let l={type:"",name:"",parent:a,state:{allowType:!0}};return e&&(l.indexed=!1),l}let s={type:"",name:"",state:{allowType:!0}},o=s;for(let a=0;aJSON.parse(i.format(e)))),JSON.stringify(n)}let r="";return this.baseType==="array"?(r+=this.arrayChildren.format(e),r+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):this.baseType==="tuple"?(e!==he.sighash&&(r+=this.type),r+="("+this.components.map(n=>n.format(e)).join(e===he.full?", ":",")+")"):r+=this.type,e!==he.sighash&&(this.indexed===!0&&(r+=" indexed"),e===he.full&&this.name&&(r+=" "+this.name)),r}static from(e,r){return typeof e=="string"?ut.fromString(e,r):ut.fromObject(e)}static fromObject(e){return ut.isParamType(e)?e:new ut(sn,{name:e.name||null,type:cn(e.type),indexed:e.indexed==null?null:!!e.indexed,components:e.components?e.components.map(ut.fromObject):null})}static fromString(e,r){function n(i){return ut.fromObject({name:i.name,type:i.type,indexed:i.indexed,components:i.components})}return n(Cl(e,!!r))}static isParamType(e){return!!(e!=null&&e._isParamType)}}function Jn(t,e){return Rl(t).map(r=>ut.fromString(r,e))}class hr{constructor(e,r){e!==sn&&ae.throwError("use a static from method",R.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),bi(this,r),this._isFragment=!0,Object.freeze(this)}static from(e){return hr.isFragment(e)?e:typeof e=="string"?hr.fromString(e):hr.fromObject(e)}static fromObject(e){if(hr.isFragment(e))return e;switch(e.type){case"function":return tr.fromObject(e);case"event":return cr.fromObject(e);case"constructor":return er.fromObject(e);case"error":return Nr.fromObject(e);case"fallback":case"receive":return null}return ae.throwArgumentError("invalid fragment object","value",e)}static fromString(e){return e=e.replace(/\s/g," "),e=e.replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," "),e=e.trim(),e.split(" ")[0]==="event"?cr.fromString(e.substring(5).trim()):e.split(" ")[0]==="function"?tr.fromString(e.substring(8).trim()):e.split("(")[0].trim()==="constructor"?er.fromString(e.trim()):e.split(" ")[0]==="error"?Nr.fromString(e.substring(5).trim()):ae.throwArgumentError("unsupported fragment","value",e)}static isFragment(e){return!!(e&&e._isFragment)}}class cr extends hr{format(e){if(e||(e=he.sighash),he[e]||ae.throwArgumentError("invalid format type","format",e),e===he.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});let r="";return e!==he.sighash&&(r+="event "),r+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===he.full?", ":",")+") ",e!==he.sighash&&this.anonymous&&(r+="anonymous "),r.trim()}static from(e){return typeof e=="string"?cr.fromString(e):cr.fromObject(e)}static fromObject(e){if(cr.isEventFragment(e))return e;e.type!=="event"&&ae.throwArgumentError("invalid event object","value",e);const r={name:Yn(e.name),anonymous:e.anonymous,inputs:e.inputs?e.inputs.map(ut.fromObject):[],type:"event"};return new cr(sn,r)}static fromString(e){let r=e.match(Qn);r||ae.throwArgumentError("invalid event string","value",e);let n=!1;return r[3].split(" ").forEach(i=>{switch(i.trim()){case"anonymous":n=!0;break;case"":break;default:ae.warn("unknown modifier: "+i)}}),cr.fromObject({name:r[1].trim(),anonymous:n,inputs:Jn(r[2],!0),type:"event"})}static isEventFragment(e){return e&&e._isFragment&&e.type==="event"}}function Ya(t,e){e.gas=null;let r=t.split("@");return r.length!==1?(r.length>2&&ae.throwArgumentError("invalid human-readable ABI signature","value",t),r[1].match(/^[0-9]+$/)||ae.throwArgumentError("invalid human-readable ABI signature gas","value",t),e.gas=O.from(r[1]),r[0]):t}function Qa(t,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",t.split(" ").forEach(r=>{switch(r.trim()){case"constant":e.constant=!0;break;case"payable":e.payable=!0,e.stateMutability="payable";break;case"nonpayable":e.payable=!1,e.stateMutability="nonpayable";break;case"pure":e.constant=!0,e.stateMutability="pure";break;case"view":e.constant=!0,e.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+r)}})}function Xa(t){let e={constant:!1,payable:!0,stateMutability:"payable"};return t.stateMutability!=null?(e.stateMutability=t.stateMutability,e.constant=e.stateMutability==="view"||e.stateMutability==="pure",t.constant!=null&&!!t.constant!==e.constant&&ae.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",t),e.payable=e.stateMutability==="payable",t.payable!=null&&!!t.payable!==e.payable&&ae.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",t)):t.payable!=null?(e.payable=!!t.payable,t.constant==null&&!e.payable&&t.type!=="constructor"&&ae.throwArgumentError("unable to determine stateMutability","value",t),e.constant=!!t.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&ae.throwArgumentError("cannot have constant payable function","value",t)):t.constant!=null?(e.constant=!!t.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):t.type!=="constructor"&&ae.throwArgumentError("unable to determine stateMutability","value",t),e}class er extends hr{format(e){if(e||(e=he.sighash),he[e]||ae.throwArgumentError("invalid format type","format",e),e===he.json)return JSON.stringify({type:"constructor",stateMutability:this.stateMutability!=="nonpayable"?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});e===he.sighash&&ae.throwError("cannot format a constructor for sighash",R.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let r="constructor("+this.inputs.map(n=>n.format(e)).join(e===he.full?", ":",")+") ";return this.stateMutability&&this.stateMutability!=="nonpayable"&&(r+=this.stateMutability+" "),r.trim()}static from(e){return typeof e=="string"?er.fromString(e):er.fromObject(e)}static fromObject(e){if(er.isConstructorFragment(e))return e;e.type!=="constructor"&&ae.throwArgumentError("invalid constructor object","value",e);let r=Xa(e);r.constant&&ae.throwArgumentError("constructor cannot be constant","value",e);const n={name:null,type:e.type,inputs:e.inputs?e.inputs.map(ut.fromObject):[],payable:r.payable,stateMutability:r.stateMutability,gas:e.gas?O.from(e.gas):null};return new er(sn,n)}static fromString(e){let r={type:"constructor"};e=Ya(e,r);let n=e.match(Qn);return(!n||n[1].trim()!=="constructor")&&ae.throwArgumentError("invalid constructor string","value",e),r.inputs=Jn(n[2].trim(),!1),Qa(n[3].trim(),r),er.fromObject(r)}static isConstructorFragment(e){return e&&e._isFragment&&e.type==="constructor"}}class tr extends er{format(e){if(e||(e=he.sighash),he[e]||ae.throwArgumentError("invalid format type","format",e),e===he.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:this.stateMutability!=="nonpayable"?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(n=>JSON.parse(n.format(e))),outputs:this.outputs.map(n=>JSON.parse(n.format(e)))});let r="";return e!==he.sighash&&(r+="function "),r+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===he.full?", ":",")+") ",e!==he.sighash&&(this.stateMutability?this.stateMutability!=="nonpayable"&&(r+=this.stateMutability+" "):this.constant&&(r+="view "),this.outputs&&this.outputs.length&&(r+="returns ("+this.outputs.map(n=>n.format(e)).join(", ")+") "),this.gas!=null&&(r+="@"+this.gas.toString()+" ")),r.trim()}static from(e){return typeof e=="string"?tr.fromString(e):tr.fromObject(e)}static fromObject(e){if(tr.isFunctionFragment(e))return e;e.type!=="function"&&ae.throwArgumentError("invalid function object","value",e);let r=Xa(e);const n={type:e.type,name:Yn(e.name),constant:r.constant,inputs:e.inputs?e.inputs.map(ut.fromObject):[],outputs:e.outputs?e.outputs.map(ut.fromObject):[],payable:r.payable,stateMutability:r.stateMutability,gas:e.gas?O.from(e.gas):null};return new tr(sn,n)}static fromString(e){let r={type:"function"};e=Ya(e,r);let n=e.split(" returns ");n.length>2&&ae.throwArgumentError("invalid function string","value",e);let i=n[0].match(Qn);if(i||ae.throwArgumentError("invalid function signature","value",e),r.name=i[1].trim(),r.name&&Yn(r.name),r.inputs=Jn(i[2],!1),Qa(i[3].trim(),r),n.length>1){let s=n[1].match(Qn);(s[1].trim()!=""||s[3].trim()!="")&&ae.throwArgumentError("unexpected tokens","value",e),r.outputs=Jn(s[2],!1)}else r.outputs=[];return tr.fromObject(r)}static isFunctionFragment(e){return e&&e._isFragment&&e.type==="function"}}function ra(t){const e=t.format();return(e==="Error(string)"||e==="Panic(uint256)")&&ae.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",t),t}class Nr extends hr{format(e){if(e||(e=he.sighash),he[e]||ae.throwArgumentError("invalid format type","format",e),e===he.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});let r="";return e!==he.sighash&&(r+="error "),r+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===he.full?", ":",")+") ",r.trim()}static from(e){return typeof e=="string"?Nr.fromString(e):Nr.fromObject(e)}static fromObject(e){if(Nr.isErrorFragment(e))return e;e.type!=="error"&&ae.throwArgumentError("invalid error object","value",e);const r={type:e.type,name:Yn(e.name),inputs:e.inputs?e.inputs.map(ut.fromObject):[]};return ra(new Nr(sn,r))}static fromString(e){let r={type:"error"},n=e.match(Qn);return n||ae.throwArgumentError("invalid error signature","value",e),r.name=n[1].trim(),r.name&&Yn(r.name),r.inputs=Jn(n[2],!1),ra(Nr.fromObject(r))}static isErrorFragment(e){return e&&e._isFragment&&e.type==="error"}}function cn(t){return t.match(/^uint($|[^1-9])/)?t="uint256"+t.substring(4):t.match(/^int($|[^1-9])/)&&(t="int256"+t.substring(3)),t}const Pl=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function Yn(t){return(!t||!t.match(Pl))&&ae.throwArgumentError(`invalid identifier "${t}"`,"value",t),t}const Qn=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");function Rl(t){t=t.trim();let e=[],r="",n=0;for(let i=0;ithis.wordSize&&vo.throwError("value out-of-bounds",R.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:r.length}),r.length%this.wordSize&&(r=ht([this._padding.slice(r.length%this.wordSize),r])),r}writeValue(e){return this._writeData(this._getValue(e))}writeUpdatableValue(){const e=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,r=>{this._data[e]=this._getValue(r)}}}class Ti{constructor(e,r,n,i){G(this,"_data",q(e)),G(this,"wordSize",r||32),G(this,"_coerceFunc",n),G(this,"allowLoose",i),this._offset=0}get data(){return F(this._data)}get consumed(){return this._offset}static coerce(e,r){let n=e.match("^u?int([0-9]+)$");return n&&parseInt(n[1])<=48&&(r=r.toNumber()),r}coerce(e,r){return this._coerceFunc?this._coerceFunc(e,r):Ti.coerce(e,r)}_peekBytes(e,r,n){let i=Math.ceil(r/this.wordSize)*this.wordSize;return this._offset+i>this._data.length&&(this.allowLoose&&n&&this._offset+r<=this._data.length?i=r:vo.throwError("data out-of-bounds",R.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+i})),this._data.slice(this._offset,this._offset+i)}subReader(e){return new Ti(this._data.slice(this._offset+e),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(e,r){let n=this._peekBytes(0,e,!!r);return this._offset+=n.length,n.slice(0,e)}readValue(){return O.from(this.readBytes(this.wordSize))}}var Za={exports:{}};/** +import{g as Xu,f as Wa,h as ji,d as Va,j as Mt}from"./index-XAh3cByi.js";const Zu=[{inputs:[{internalType:"bytes32",type:"bytes32"}],name:"getAlternativeSignature",outputs:[{internalType:"string",type:"string"}],stateMutability:"view",type:"function"}];var el=Object.freeze({__proto__:null,abi:Zu});const tl=[{type:"function",name:"isValidSignature",constant:!0,inputs:[{type:"bytes32"},{type:"bytes"}],outputs:[{type:"bytes4"}],payable:!1,stateMutability:"view"}],rl={isValidSignatureBytes32:"0x1626ba7e"};var nl=Object.freeze({__proto__:null,abi:tl,returns:rl});const il=[{inputs:[{internalType:"bytes",name:"error",type:"bytes"}],name:"ERC1271Revert",type:"error"},{inputs:[{internalType:"bytes",name:"error",type:"bytes"}],name:"ERC6492DeployFailed",type:"error"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSig",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"},{internalType:"bool",name:"allowSideEffects",type:"bool"},{internalType:"bool",name:"deployAlreadyDeployed",type:"bool"}],name:"isValidSigImpl",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSigNoThrow",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSigWithSideEffects",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],name:"isValidSigWithSideEffectsNoThrow",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}];var sl=Object.freeze({__proto__:null,abi:il});const ol=[{type:"function",name:"deploy",constant:!1,inputs:[{type:"address"},{type:"bytes32"}],outputs:[],payable:!0,stateMutability:"payable"}];var al=Object.freeze({__proto__:null,abi:ol});const fl=[{type:"function",name:"nonce",constant:!0,inputs:[],outputs:[{type:"uint256"}],payable:!1,stateMutability:"view"},{type:"function",name:"readNonce",constant:!0,inputs:[{type:"uint256"}],outputs:[{type:"uint256"}],payable:!1,stateMutability:"view"},{type:"function",name:"updateImplementation",constant:!1,inputs:[{type:"address"}],outputs:[],payable:!1,stateMutability:"nonpayable"},{type:"function",name:"selfExecute",constant:!1,inputs:[{components:[{type:"bool",name:"delegateCall"},{type:"bool",name:"revertOnError"},{type:"uint256",name:"gasLimit"},{type:"address",name:"target"},{type:"uint256",name:"value"},{type:"bytes",name:"data"}],type:"tuple[]"}],outputs:[],payable:!1,stateMutability:"nonpayable"},{type:"function",name:"execute",constant:!1,inputs:[{components:[{type:"bool",name:"delegateCall"},{type:"bool",name:"revertOnError"},{type:"uint256",name:"gasLimit"},{type:"address",name:"target"},{type:"uint256",name:"value"},{type:"bytes",name:"data"}],type:"tuple[]"},{type:"uint256"},{type:"bytes"}],outputs:[],payable:!1,stateMutability:"nonpayable"},{type:"function",name:"createContract",inputs:[{type:"bytes"}],payable:!0,stateMutability:"payable"},{type:"function",name:"setExtraImageHash",constant:!1,inputs:[{type:"bytes32",name:"imageHash"},{type:"uint256",name:"expiration"}],outputs:[],payable:!1,stateMutability:"nonpayable"}];var ul=Object.freeze({__proto__:null,abi:fl});const ll=[{type:"function",name:"updateImageHash",constant:!0,inputs:[{type:"bytes32"}],outputs:[],payable:!1,stateMutability:"view"},{type:"function",name:"imageHash",constant:!0,inputs:[],outputs:[{type:"bytes32"}],payable:!1,stateMutability:"view"}];var cl=Object.freeze({__proto__:null,abi:ll});const hl=[{inputs:[{internalType:"address",name:"_factory",type:"address"},{internalType:"address",name:"_mainModule",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_wallet",type:"address"},{indexed:!0,internalType:"bytes32",name:"_imageHash",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"_threshold",type:"uint256"},{indexed:!1,internalType:"bytes",name:"_signers",type:"bytes"}],name:"RequiredConfig",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"_wallet",type:"address"},{indexed:!0,internalType:"address",name:"_signer",type:"address"}],name:"RequiredSigner",type:"event"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callBalanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callBlockNumber",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_i",type:"uint256"}],name:"callBlockhash",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"callChainId",outputs:[{internalType:"uint256",name:"id",type:"uint256"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callCode",outputs:[{internalType:"bytes",name:"code",type:"bytes"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callCodeHash",outputs:[{internalType:"bytes32",name:"codeHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"_addr",type:"address"}],name:"callCodeSize",outputs:[{internalType:"uint256",name:"size",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callCoinbase",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"callDifficulty",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callGasLeft",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callGasLimit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callGasPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"callOrigin",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"callTimestamp",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"knownImageHashes",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"",type:"bytes32"}],name:"lastImageHashUpdate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"lastSignerUpdate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"",type:"address"}],name:"lastWalletUpdate",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{components:[{internalType:"bool",name:"delegateCall",type:"bool"},{internalType:"bool",name:"revertOnError",type:"bool"},{internalType:"uint256",name:"gasLimit",type:"uint256"},{internalType:"address",name:"target",type:"address"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bytes",name:"data",type:"bytes"}],internalType:"struct IModuleCalls.Transaction[]",name:"_txs",type:"tuple[]"}],name:"multiCall",outputs:[{internalType:"bool[]",name:"_successes",type:"bool[]"},{internalType:"bytes[]",name:"_results",type:"bytes[]"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"},{internalType:"uint256",name:"_threshold",type:"uint256"},{components:[{internalType:"uint256",name:"weight",type:"uint256"},{internalType:"address",name:"signer",type:"address"}],internalType:"struct RequireUtils.Member[]",name:"_members",type:"tuple[]"},{internalType:"bool",name:"_index",type:"bool"}],name:"publishConfig",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"uint256",name:"_sizeMembers",type:"uint256"},{internalType:"bytes",name:"_signature",type:"bytes"},{internalType:"bool",name:"_index",type:"bool"}],name:"publishInitialSigners",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_wallet",type:"address"},{internalType:"uint256",name:"_nonce",type:"uint256"}],name:"requireMinNonce",outputs:[],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_expiration",type:"uint256"}],name:"requireNonExpired",outputs:[],stateMutability:"view",type:"function"}];var dl=Object.freeze({__proto__:null,abi:hl});const gl=[{inputs:[{internalType:"address",name:"",type:"address"}],name:"requireFreshSigner",outputs:[],stateMutability:"nonpayable",type:"function"}];var pl=Object.freeze({__proto__:null,abi:gl});const Lt={erc6492:sl,erc5719:el,erc1271:nl,factory:al,mainModule:ul,mainModuleUpgradable:cl,sequenceUtils:dl,requireFreshSigner:pl};var po={exports:{}};const ml={},vl=Object.freeze(Object.defineProperty({__proto__:null,default:ml},Symbol.toStringTag,{value:"Module"})),yl=Xu(vl);po.exports;(function(t){(function(e,r){function n(_,u){if(!_)throw new Error(u||"Assertion failed")}function i(_,u){_.super_=u;var d=function(){};d.prototype=u.prototype,_.prototype=new d,_.prototype.constructor=_}function s(_,u,d){if(s.isBN(_))return _;this.negative=0,this.words=null,this.length=0,this.red=null,_!==null&&((u==="le"||u==="be")&&(d=u,u=10),this._init(_||0,u||10,d||"be"))}typeof e=="object"?e.exports=s:r.BN=s,s.BN=s,s.wordSize=26;var o;try{typeof window<"u"&&typeof window.Buffer<"u"?o=window.Buffer:o=yl.Buffer}catch{}s.isBN=function(u){return u instanceof s?!0:u!==null&&typeof u=="object"&&u.constructor.wordSize===s.wordSize&&Array.isArray(u.words)},s.max=function(u,d){return u.cmp(d)>0?u:d},s.min=function(u,d){return u.cmp(d)<0?u:d},s.prototype._init=function(u,d,w){if(typeof u=="number")return this._initNumber(u,d,w);if(typeof u=="object")return this._initArray(u,d,w);d==="hex"&&(d=16),n(d===(d|0)&&d>=2&&d<=36),u=u.toString().replace(/\s+/g,"");var E=0;u[0]==="-"&&(E++,this.negative=1),E=0;E-=3)m=u[E]|u[E-1]<<8|u[E-2]<<16,this.words[c]|=m<>>26-b&67108863,b+=24,b>=26&&(b-=26,c++);else if(w==="le")for(E=0,c=0;E>>26-b&67108863,b+=24,b>=26&&(b-=26,c++);return this._strip()};function a(_,u){var d=_.charCodeAt(u);if(d>=48&&d<=57)return d-48;if(d>=65&&d<=70)return d-55;if(d>=97&&d<=102)return d-87;n(!1,"Invalid character in "+_)}function l(_,u,d){var w=a(_,d);return d-1>=u&&(w|=a(_,d-1)<<4),w}s.prototype._parseHex=function(u,d,w){this.length=Math.ceil((u.length-d)/6),this.words=new Array(this.length);for(var E=0;E=d;E-=2)b=l(u,d,E)<=18?(c-=18,m+=1,this.words[m]|=b>>>26):c+=8;else{var p=u.length-d;for(E=p%2===0?d+1:d;E=18?(c-=18,m+=1,this.words[m]|=b>>>26):c+=8}this._strip()};function g(_,u,d,w){for(var E=0,c=0,m=Math.min(_.length,d),b=u;b=49?c=p-49+10:p>=17?c=p-17+10:c=p,n(p>=0&&c1&&this.words[this.length-1]===0;)this.length--;return this._normSign()},s.prototype._normSign=function(){return this.length===1&&this.words[0]===0&&(this.negative=0),this},typeof Symbol<"u"&&typeof Symbol.for=="function")try{s.prototype[Symbol.for("nodejs.util.inspect.custom")]=A}catch{s.prototype.inspect=A}else s.prototype.inspect=A;function A(){return(this.red?""}var I=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],M=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],k=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];s.prototype.toString=function(u,d){u=u||10,d=d|0||1;var w;if(u===16||u==="hex"){w="";for(var E=0,c=0,m=0;m>>24-E&16777215,E+=2,E>=26&&(E-=26,m--),c!==0||m!==this.length-1?w=I[6-p.length]+p+w:w=p+w}for(c!==0&&(w=c.toString(16)+w);w.length%d!==0;)w="0"+w;return this.negative!==0&&(w="-"+w),w}if(u===(u|0)&&u>=2&&u<=36){var f=M[u],v=k[u];w="";var T=this.clone();for(T.negative=0;!T.isZero();){var h=T.modrn(v).toString(u);T=T.idivn(v),T.isZero()?w=h+w:w=I[f-h.length]+h+w}for(this.isZero()&&(w="0"+w);w.length%d!==0;)w="0"+w;return this.negative!==0&&(w="-"+w),w}n(!1,"Base should be between 2 and 36")},s.prototype.toNumber=function(){var u=this.words[0];return this.length===2?u+=this.words[1]*67108864:this.length===3&&this.words[2]===1?u+=4503599627370496+this.words[1]*67108864:this.length>2&&n(!1,"Number can only safely store up to 53 bits"),this.negative!==0?-u:u},s.prototype.toJSON=function(){return this.toString(16,2)},o&&(s.prototype.toBuffer=function(u,d){return this.toArrayLike(o,u,d)}),s.prototype.toArray=function(u,d){return this.toArrayLike(Array,u,d)};var P=function(u,d){return u.allocUnsafe?u.allocUnsafe(d):new u(d)};s.prototype.toArrayLike=function(u,d,w){this._strip();var E=this.byteLength(),c=w||Math.max(1,E);n(E<=c,"byte array longer than desired length"),n(c>0,"Requested array length <= 0");var m=P(u,c),b=d==="le"?"LE":"BE";return this["_toArrayLike"+b](m,E),m},s.prototype._toArrayLikeLE=function(u,d){for(var w=0,E=0,c=0,m=0;c>8&255),w>16&255),m===6?(w>24&255),E=0,m=0):(E=b>>>24,m+=2)}if(w=0&&(u[w--]=b>>8&255),w>=0&&(u[w--]=b>>16&255),m===6?(w>=0&&(u[w--]=b>>24&255),E=0,m=0):(E=b>>>24,m+=2)}if(w>=0)for(u[w--]=E;w>=0;)u[w--]=0},Math.clz32?s.prototype._countBits=function(u){return 32-Math.clz32(u)}:s.prototype._countBits=function(u){var d=u,w=0;return d>=4096&&(w+=13,d>>>=13),d>=64&&(w+=7,d>>>=7),d>=8&&(w+=4,d>>>=4),d>=2&&(w+=2,d>>>=2),w+d},s.prototype._zeroBits=function(u){if(u===0)return 26;var d=u,w=0;return d&8191||(w+=13,d>>>=13),d&127||(w+=7,d>>>=7),d&15||(w+=4,d>>>=4),d&3||(w+=2,d>>>=2),d&1||w++,w},s.prototype.bitLength=function(){var u=this.words[this.length-1],d=this._countBits(u);return(this.length-1)*26+d};function j(_){for(var u=new Array(_.bitLength()),d=0;d>>E&1}return u}s.prototype.zeroBits=function(){if(this.isZero())return 0;for(var u=0,d=0;du.length?this.clone().ior(u):u.clone().ior(this)},s.prototype.uor=function(u){return this.length>u.length?this.clone().iuor(u):u.clone().iuor(this)},s.prototype.iuand=function(u){var d;this.length>u.length?d=u:d=this;for(var w=0;wu.length?this.clone().iand(u):u.clone().iand(this)},s.prototype.uand=function(u){return this.length>u.length?this.clone().iuand(u):u.clone().iuand(this)},s.prototype.iuxor=function(u){var d,w;this.length>u.length?(d=this,w=u):(d=u,w=this);for(var E=0;Eu.length?this.clone().ixor(u):u.clone().ixor(this)},s.prototype.uxor=function(u){return this.length>u.length?this.clone().iuxor(u):u.clone().iuxor(this)},s.prototype.inotn=function(u){n(typeof u=="number"&&u>=0);var d=Math.ceil(u/26)|0,w=u%26;this._expand(d),w>0&&d--;for(var E=0;E0&&(this.words[E]=~this.words[E]&67108863>>26-w),this._strip()},s.prototype.notn=function(u){return this.clone().inotn(u)},s.prototype.setn=function(u,d){n(typeof u=="number"&&u>=0);var w=u/26|0,E=u%26;return this._expand(w+1),d?this.words[w]=this.words[w]|1<u.length?(w=this,E=u):(w=u,E=this);for(var c=0,m=0;m>>26;for(;c!==0&&m>>26;if(this.length=w.length,c!==0)this.words[this.length]=c,this.length++;else if(w!==this)for(;mu.length?this.clone().iadd(u):u.clone().iadd(this)},s.prototype.isub=function(u){if(u.negative!==0){u.negative=0;var d=this.iadd(u);return u.negative=1,d._normSign()}else if(this.negative!==0)return this.negative=0,this.iadd(u),this.negative=1,this._normSign();var w=this.cmp(u);if(w===0)return this.negative=0,this.length=1,this.words[0]=0,this;var E,c;w>0?(E=this,c=u):(E=u,c=this);for(var m=0,b=0;b>26,this.words[b]=d&67108863;for(;m!==0&&b>26,this.words[b]=d&67108863;if(m===0&&b>>26,T=p&67108863,h=Math.min(f,u.length-1),x=Math.max(0,f-_.length+1);x<=h;x++){var S=f-x|0;E=_.words[S]|0,c=u.words[x]|0,m=E*c+T,v+=m/67108864|0,T=m&67108863}d.words[f]=T|0,p=v|0}return p!==0?d.words[f]=p|0:d.length--,d._strip()}var W=function(u,d,w){var E=u.words,c=d.words,m=w.words,b=0,p,f,v,T=E[0]|0,h=T&8191,x=T>>>13,S=E[1]|0,N=S&8191,L=S>>>13,z=E[2]|0,D=z&8191,U=z>>>13,te=E[3]|0,V=te&8191,Q=te>>>13,It=E[4]|0,me=It&8191,oe=It>>>13,tt=E[5]|0,Ae=tt&8191,Ee=tt>>>13,Lr=E[6]|0,xe=Lr&8191,_e=Lr>>>13,Dr=E[7]|0,Se=Dr&8191,Ie=Dr>>>13,Ur=E[8]|0,Me=Ur&8191,Ne=Ur>>>13,Fr=E[9]|0,ke=Fr&8191,Te=Fr>>>13,Hr=c[0]|0,Ce=Hr&8191,Oe=Hr>>>13,qr=c[1]|0,Pe=qr&8191,Re=qr>>>13,zr=c[2]|0,Be=zr&8191,Le=zr>>>13,Gr=c[3]|0,De=Gr&8191,Ue=Gr>>>13,jr=c[4]|0,Fe=jr&8191,He=jr>>>13,Wr=c[5]|0,qe=Wr&8191,ze=Wr>>>13,Vr=c[6]|0,Ge=Vr&8191,je=Vr>>>13,Kr=c[7]|0,We=Kr&8191,Ve=Kr>>>13,$r=c[8]|0,Ke=$r&8191,$e=$r>>>13,Jr=c[9]|0,Je=Jr&8191,Ye=Jr>>>13;w.negative=u.negative^d.negative,w.length=19,p=Math.imul(h,Ce),f=Math.imul(h,Oe),f=f+Math.imul(x,Ce)|0,v=Math.imul(x,Oe);var Ar=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(Ar>>>26)|0,Ar&=67108863,p=Math.imul(N,Ce),f=Math.imul(N,Oe),f=f+Math.imul(L,Ce)|0,v=Math.imul(L,Oe),p=p+Math.imul(h,Pe)|0,f=f+Math.imul(h,Re)|0,f=f+Math.imul(x,Pe)|0,v=v+Math.imul(x,Re)|0;var Er=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(Er>>>26)|0,Er&=67108863,p=Math.imul(D,Ce),f=Math.imul(D,Oe),f=f+Math.imul(U,Ce)|0,v=Math.imul(U,Oe),p=p+Math.imul(N,Pe)|0,f=f+Math.imul(N,Re)|0,f=f+Math.imul(L,Pe)|0,v=v+Math.imul(L,Re)|0,p=p+Math.imul(h,Be)|0,f=f+Math.imul(h,Le)|0,f=f+Math.imul(x,Be)|0,v=v+Math.imul(x,Le)|0;var xr=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(xr>>>26)|0,xr&=67108863,p=Math.imul(V,Ce),f=Math.imul(V,Oe),f=f+Math.imul(Q,Ce)|0,v=Math.imul(Q,Oe),p=p+Math.imul(D,Pe)|0,f=f+Math.imul(D,Re)|0,f=f+Math.imul(U,Pe)|0,v=v+Math.imul(U,Re)|0,p=p+Math.imul(N,Be)|0,f=f+Math.imul(N,Le)|0,f=f+Math.imul(L,Be)|0,v=v+Math.imul(L,Le)|0,p=p+Math.imul(h,De)|0,f=f+Math.imul(h,Ue)|0,f=f+Math.imul(x,De)|0,v=v+Math.imul(x,Ue)|0;var _r=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(_r>>>26)|0,_r&=67108863,p=Math.imul(me,Ce),f=Math.imul(me,Oe),f=f+Math.imul(oe,Ce)|0,v=Math.imul(oe,Oe),p=p+Math.imul(V,Pe)|0,f=f+Math.imul(V,Re)|0,f=f+Math.imul(Q,Pe)|0,v=v+Math.imul(Q,Re)|0,p=p+Math.imul(D,Be)|0,f=f+Math.imul(D,Le)|0,f=f+Math.imul(U,Be)|0,v=v+Math.imul(U,Le)|0,p=p+Math.imul(N,De)|0,f=f+Math.imul(N,Ue)|0,f=f+Math.imul(L,De)|0,v=v+Math.imul(L,Ue)|0,p=p+Math.imul(h,Fe)|0,f=f+Math.imul(h,He)|0,f=f+Math.imul(x,Fe)|0,v=v+Math.imul(x,He)|0;var Sr=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(Sr>>>26)|0,Sr&=67108863,p=Math.imul(Ae,Ce),f=Math.imul(Ae,Oe),f=f+Math.imul(Ee,Ce)|0,v=Math.imul(Ee,Oe),p=p+Math.imul(me,Pe)|0,f=f+Math.imul(me,Re)|0,f=f+Math.imul(oe,Pe)|0,v=v+Math.imul(oe,Re)|0,p=p+Math.imul(V,Be)|0,f=f+Math.imul(V,Le)|0,f=f+Math.imul(Q,Be)|0,v=v+Math.imul(Q,Le)|0,p=p+Math.imul(D,De)|0,f=f+Math.imul(D,Ue)|0,f=f+Math.imul(U,De)|0,v=v+Math.imul(U,Ue)|0,p=p+Math.imul(N,Fe)|0,f=f+Math.imul(N,He)|0,f=f+Math.imul(L,Fe)|0,v=v+Math.imul(L,He)|0,p=p+Math.imul(h,qe)|0,f=f+Math.imul(h,ze)|0,f=f+Math.imul(x,qe)|0,v=v+Math.imul(x,ze)|0;var fs=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(fs>>>26)|0,fs&=67108863,p=Math.imul(xe,Ce),f=Math.imul(xe,Oe),f=f+Math.imul(_e,Ce)|0,v=Math.imul(_e,Oe),p=p+Math.imul(Ae,Pe)|0,f=f+Math.imul(Ae,Re)|0,f=f+Math.imul(Ee,Pe)|0,v=v+Math.imul(Ee,Re)|0,p=p+Math.imul(me,Be)|0,f=f+Math.imul(me,Le)|0,f=f+Math.imul(oe,Be)|0,v=v+Math.imul(oe,Le)|0,p=p+Math.imul(V,De)|0,f=f+Math.imul(V,Ue)|0,f=f+Math.imul(Q,De)|0,v=v+Math.imul(Q,Ue)|0,p=p+Math.imul(D,Fe)|0,f=f+Math.imul(D,He)|0,f=f+Math.imul(U,Fe)|0,v=v+Math.imul(U,He)|0,p=p+Math.imul(N,qe)|0,f=f+Math.imul(N,ze)|0,f=f+Math.imul(L,qe)|0,v=v+Math.imul(L,ze)|0,p=p+Math.imul(h,Ge)|0,f=f+Math.imul(h,je)|0,f=f+Math.imul(x,Ge)|0,v=v+Math.imul(x,je)|0;var us=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(us>>>26)|0,us&=67108863,p=Math.imul(Se,Ce),f=Math.imul(Se,Oe),f=f+Math.imul(Ie,Ce)|0,v=Math.imul(Ie,Oe),p=p+Math.imul(xe,Pe)|0,f=f+Math.imul(xe,Re)|0,f=f+Math.imul(_e,Pe)|0,v=v+Math.imul(_e,Re)|0,p=p+Math.imul(Ae,Be)|0,f=f+Math.imul(Ae,Le)|0,f=f+Math.imul(Ee,Be)|0,v=v+Math.imul(Ee,Le)|0,p=p+Math.imul(me,De)|0,f=f+Math.imul(me,Ue)|0,f=f+Math.imul(oe,De)|0,v=v+Math.imul(oe,Ue)|0,p=p+Math.imul(V,Fe)|0,f=f+Math.imul(V,He)|0,f=f+Math.imul(Q,Fe)|0,v=v+Math.imul(Q,He)|0,p=p+Math.imul(D,qe)|0,f=f+Math.imul(D,ze)|0,f=f+Math.imul(U,qe)|0,v=v+Math.imul(U,ze)|0,p=p+Math.imul(N,Ge)|0,f=f+Math.imul(N,je)|0,f=f+Math.imul(L,Ge)|0,v=v+Math.imul(L,je)|0,p=p+Math.imul(h,We)|0,f=f+Math.imul(h,Ve)|0,f=f+Math.imul(x,We)|0,v=v+Math.imul(x,Ve)|0;var ls=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(ls>>>26)|0,ls&=67108863,p=Math.imul(Me,Ce),f=Math.imul(Me,Oe),f=f+Math.imul(Ne,Ce)|0,v=Math.imul(Ne,Oe),p=p+Math.imul(Se,Pe)|0,f=f+Math.imul(Se,Re)|0,f=f+Math.imul(Ie,Pe)|0,v=v+Math.imul(Ie,Re)|0,p=p+Math.imul(xe,Be)|0,f=f+Math.imul(xe,Le)|0,f=f+Math.imul(_e,Be)|0,v=v+Math.imul(_e,Le)|0,p=p+Math.imul(Ae,De)|0,f=f+Math.imul(Ae,Ue)|0,f=f+Math.imul(Ee,De)|0,v=v+Math.imul(Ee,Ue)|0,p=p+Math.imul(me,Fe)|0,f=f+Math.imul(me,He)|0,f=f+Math.imul(oe,Fe)|0,v=v+Math.imul(oe,He)|0,p=p+Math.imul(V,qe)|0,f=f+Math.imul(V,ze)|0,f=f+Math.imul(Q,qe)|0,v=v+Math.imul(Q,ze)|0,p=p+Math.imul(D,Ge)|0,f=f+Math.imul(D,je)|0,f=f+Math.imul(U,Ge)|0,v=v+Math.imul(U,je)|0,p=p+Math.imul(N,We)|0,f=f+Math.imul(N,Ve)|0,f=f+Math.imul(L,We)|0,v=v+Math.imul(L,Ve)|0,p=p+Math.imul(h,Ke)|0,f=f+Math.imul(h,$e)|0,f=f+Math.imul(x,Ke)|0,v=v+Math.imul(x,$e)|0;var cs=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(cs>>>26)|0,cs&=67108863,p=Math.imul(ke,Ce),f=Math.imul(ke,Oe),f=f+Math.imul(Te,Ce)|0,v=Math.imul(Te,Oe),p=p+Math.imul(Me,Pe)|0,f=f+Math.imul(Me,Re)|0,f=f+Math.imul(Ne,Pe)|0,v=v+Math.imul(Ne,Re)|0,p=p+Math.imul(Se,Be)|0,f=f+Math.imul(Se,Le)|0,f=f+Math.imul(Ie,Be)|0,v=v+Math.imul(Ie,Le)|0,p=p+Math.imul(xe,De)|0,f=f+Math.imul(xe,Ue)|0,f=f+Math.imul(_e,De)|0,v=v+Math.imul(_e,Ue)|0,p=p+Math.imul(Ae,Fe)|0,f=f+Math.imul(Ae,He)|0,f=f+Math.imul(Ee,Fe)|0,v=v+Math.imul(Ee,He)|0,p=p+Math.imul(me,qe)|0,f=f+Math.imul(me,ze)|0,f=f+Math.imul(oe,qe)|0,v=v+Math.imul(oe,ze)|0,p=p+Math.imul(V,Ge)|0,f=f+Math.imul(V,je)|0,f=f+Math.imul(Q,Ge)|0,v=v+Math.imul(Q,je)|0,p=p+Math.imul(D,We)|0,f=f+Math.imul(D,Ve)|0,f=f+Math.imul(U,We)|0,v=v+Math.imul(U,Ve)|0,p=p+Math.imul(N,Ke)|0,f=f+Math.imul(N,$e)|0,f=f+Math.imul(L,Ke)|0,v=v+Math.imul(L,$e)|0,p=p+Math.imul(h,Je)|0,f=f+Math.imul(h,Ye)|0,f=f+Math.imul(x,Je)|0,v=v+Math.imul(x,Ye)|0;var hs=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(hs>>>26)|0,hs&=67108863,p=Math.imul(ke,Pe),f=Math.imul(ke,Re),f=f+Math.imul(Te,Pe)|0,v=Math.imul(Te,Re),p=p+Math.imul(Me,Be)|0,f=f+Math.imul(Me,Le)|0,f=f+Math.imul(Ne,Be)|0,v=v+Math.imul(Ne,Le)|0,p=p+Math.imul(Se,De)|0,f=f+Math.imul(Se,Ue)|0,f=f+Math.imul(Ie,De)|0,v=v+Math.imul(Ie,Ue)|0,p=p+Math.imul(xe,Fe)|0,f=f+Math.imul(xe,He)|0,f=f+Math.imul(_e,Fe)|0,v=v+Math.imul(_e,He)|0,p=p+Math.imul(Ae,qe)|0,f=f+Math.imul(Ae,ze)|0,f=f+Math.imul(Ee,qe)|0,v=v+Math.imul(Ee,ze)|0,p=p+Math.imul(me,Ge)|0,f=f+Math.imul(me,je)|0,f=f+Math.imul(oe,Ge)|0,v=v+Math.imul(oe,je)|0,p=p+Math.imul(V,We)|0,f=f+Math.imul(V,Ve)|0,f=f+Math.imul(Q,We)|0,v=v+Math.imul(Q,Ve)|0,p=p+Math.imul(D,Ke)|0,f=f+Math.imul(D,$e)|0,f=f+Math.imul(U,Ke)|0,v=v+Math.imul(U,$e)|0,p=p+Math.imul(N,Je)|0,f=f+Math.imul(N,Ye)|0,f=f+Math.imul(L,Je)|0,v=v+Math.imul(L,Ye)|0;var ds=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(ds>>>26)|0,ds&=67108863,p=Math.imul(ke,Be),f=Math.imul(ke,Le),f=f+Math.imul(Te,Be)|0,v=Math.imul(Te,Le),p=p+Math.imul(Me,De)|0,f=f+Math.imul(Me,Ue)|0,f=f+Math.imul(Ne,De)|0,v=v+Math.imul(Ne,Ue)|0,p=p+Math.imul(Se,Fe)|0,f=f+Math.imul(Se,He)|0,f=f+Math.imul(Ie,Fe)|0,v=v+Math.imul(Ie,He)|0,p=p+Math.imul(xe,qe)|0,f=f+Math.imul(xe,ze)|0,f=f+Math.imul(_e,qe)|0,v=v+Math.imul(_e,ze)|0,p=p+Math.imul(Ae,Ge)|0,f=f+Math.imul(Ae,je)|0,f=f+Math.imul(Ee,Ge)|0,v=v+Math.imul(Ee,je)|0,p=p+Math.imul(me,We)|0,f=f+Math.imul(me,Ve)|0,f=f+Math.imul(oe,We)|0,v=v+Math.imul(oe,Ve)|0,p=p+Math.imul(V,Ke)|0,f=f+Math.imul(V,$e)|0,f=f+Math.imul(Q,Ke)|0,v=v+Math.imul(Q,$e)|0,p=p+Math.imul(D,Je)|0,f=f+Math.imul(D,Ye)|0,f=f+Math.imul(U,Je)|0,v=v+Math.imul(U,Ye)|0;var gs=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(gs>>>26)|0,gs&=67108863,p=Math.imul(ke,De),f=Math.imul(ke,Ue),f=f+Math.imul(Te,De)|0,v=Math.imul(Te,Ue),p=p+Math.imul(Me,Fe)|0,f=f+Math.imul(Me,He)|0,f=f+Math.imul(Ne,Fe)|0,v=v+Math.imul(Ne,He)|0,p=p+Math.imul(Se,qe)|0,f=f+Math.imul(Se,ze)|0,f=f+Math.imul(Ie,qe)|0,v=v+Math.imul(Ie,ze)|0,p=p+Math.imul(xe,Ge)|0,f=f+Math.imul(xe,je)|0,f=f+Math.imul(_e,Ge)|0,v=v+Math.imul(_e,je)|0,p=p+Math.imul(Ae,We)|0,f=f+Math.imul(Ae,Ve)|0,f=f+Math.imul(Ee,We)|0,v=v+Math.imul(Ee,Ve)|0,p=p+Math.imul(me,Ke)|0,f=f+Math.imul(me,$e)|0,f=f+Math.imul(oe,Ke)|0,v=v+Math.imul(oe,$e)|0,p=p+Math.imul(V,Je)|0,f=f+Math.imul(V,Ye)|0,f=f+Math.imul(Q,Je)|0,v=v+Math.imul(Q,Ye)|0;var ps=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(ps>>>26)|0,ps&=67108863,p=Math.imul(ke,Fe),f=Math.imul(ke,He),f=f+Math.imul(Te,Fe)|0,v=Math.imul(Te,He),p=p+Math.imul(Me,qe)|0,f=f+Math.imul(Me,ze)|0,f=f+Math.imul(Ne,qe)|0,v=v+Math.imul(Ne,ze)|0,p=p+Math.imul(Se,Ge)|0,f=f+Math.imul(Se,je)|0,f=f+Math.imul(Ie,Ge)|0,v=v+Math.imul(Ie,je)|0,p=p+Math.imul(xe,We)|0,f=f+Math.imul(xe,Ve)|0,f=f+Math.imul(_e,We)|0,v=v+Math.imul(_e,Ve)|0,p=p+Math.imul(Ae,Ke)|0,f=f+Math.imul(Ae,$e)|0,f=f+Math.imul(Ee,Ke)|0,v=v+Math.imul(Ee,$e)|0,p=p+Math.imul(me,Je)|0,f=f+Math.imul(me,Ye)|0,f=f+Math.imul(oe,Je)|0,v=v+Math.imul(oe,Ye)|0;var ms=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(ms>>>26)|0,ms&=67108863,p=Math.imul(ke,qe),f=Math.imul(ke,ze),f=f+Math.imul(Te,qe)|0,v=Math.imul(Te,ze),p=p+Math.imul(Me,Ge)|0,f=f+Math.imul(Me,je)|0,f=f+Math.imul(Ne,Ge)|0,v=v+Math.imul(Ne,je)|0,p=p+Math.imul(Se,We)|0,f=f+Math.imul(Se,Ve)|0,f=f+Math.imul(Ie,We)|0,v=v+Math.imul(Ie,Ve)|0,p=p+Math.imul(xe,Ke)|0,f=f+Math.imul(xe,$e)|0,f=f+Math.imul(_e,Ke)|0,v=v+Math.imul(_e,$e)|0,p=p+Math.imul(Ae,Je)|0,f=f+Math.imul(Ae,Ye)|0,f=f+Math.imul(Ee,Je)|0,v=v+Math.imul(Ee,Ye)|0;var vs=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(vs>>>26)|0,vs&=67108863,p=Math.imul(ke,Ge),f=Math.imul(ke,je),f=f+Math.imul(Te,Ge)|0,v=Math.imul(Te,je),p=p+Math.imul(Me,We)|0,f=f+Math.imul(Me,Ve)|0,f=f+Math.imul(Ne,We)|0,v=v+Math.imul(Ne,Ve)|0,p=p+Math.imul(Se,Ke)|0,f=f+Math.imul(Se,$e)|0,f=f+Math.imul(Ie,Ke)|0,v=v+Math.imul(Ie,$e)|0,p=p+Math.imul(xe,Je)|0,f=f+Math.imul(xe,Ye)|0,f=f+Math.imul(_e,Je)|0,v=v+Math.imul(_e,Ye)|0;var ys=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(ys>>>26)|0,ys&=67108863,p=Math.imul(ke,We),f=Math.imul(ke,Ve),f=f+Math.imul(Te,We)|0,v=Math.imul(Te,Ve),p=p+Math.imul(Me,Ke)|0,f=f+Math.imul(Me,$e)|0,f=f+Math.imul(Ne,Ke)|0,v=v+Math.imul(Ne,$e)|0,p=p+Math.imul(Se,Je)|0,f=f+Math.imul(Se,Ye)|0,f=f+Math.imul(Ie,Je)|0,v=v+Math.imul(Ie,Ye)|0;var bs=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(bs>>>26)|0,bs&=67108863,p=Math.imul(ke,Ke),f=Math.imul(ke,$e),f=f+Math.imul(Te,Ke)|0,v=Math.imul(Te,$e),p=p+Math.imul(Me,Je)|0,f=f+Math.imul(Me,Ye)|0,f=f+Math.imul(Ne,Je)|0,v=v+Math.imul(Ne,Ye)|0;var ws=(b+p|0)+((f&8191)<<13)|0;b=(v+(f>>>13)|0)+(ws>>>26)|0,ws&=67108863,p=Math.imul(ke,Je),f=Math.imul(ke,Ye),f=f+Math.imul(Te,Je)|0,v=Math.imul(Te,Ye);var As=(b+p|0)+((f&8191)<<13)|0;return b=(v+(f>>>13)|0)+(As>>>26)|0,As&=67108863,m[0]=Ar,m[1]=Er,m[2]=xr,m[3]=_r,m[4]=Sr,m[5]=fs,m[6]=us,m[7]=ls,m[8]=cs,m[9]=hs,m[10]=ds,m[11]=gs,m[12]=ps,m[13]=ms,m[14]=vs,m[15]=ys,m[16]=bs,m[17]=ws,m[18]=As,b!==0&&(m[19]=b,w.length++),w};Math.imul||(W=B);function H(_,u,d){d.negative=u.negative^_.negative,d.length=_.length+u.length;for(var w=0,E=0,c=0;c>>26)|0,E+=m>>>26,m&=67108863}d.words[c]=b,w=m,m=E}return w!==0?d.words[c]=w:d.length--,d._strip()}function J(_,u,d){return H(_,u,d)}s.prototype.mulTo=function(u,d){var w,E=this.length+u.length;return this.length===10&&u.length===10?w=W(this,u,d):E<63?w=B(this,u,d):E<1024?w=H(this,u,d):w=J(this,u,d),w},s.prototype.mul=function(u){var d=new s(null);return d.words=new Array(this.length+u.length),this.mulTo(u,d)},s.prototype.mulf=function(u){var d=new s(null);return d.words=new Array(this.length+u.length),J(this,u,d)},s.prototype.imul=function(u){return this.clone().mulTo(u,this)},s.prototype.imuln=function(u){var d=u<0;d&&(u=-u),n(typeof u=="number"),n(u<67108864);for(var w=0,E=0;E>=26,w+=c/67108864|0,w+=m>>>26,this.words[E]=m&67108863}return w!==0&&(this.words[E]=w,this.length++),d?this.ineg():this},s.prototype.muln=function(u){return this.clone().imuln(u)},s.prototype.sqr=function(){return this.mul(this)},s.prototype.isqr=function(){return this.imul(this.clone())},s.prototype.pow=function(u){var d=j(u);if(d.length===0)return new s(1);for(var w=this,E=0;E=0);var d=u%26,w=(u-d)/26,E=67108863>>>26-d<<26-d,c;if(d!==0){var m=0;for(c=0;c>>26-d}m&&(this.words[c]=m,this.length++)}if(w!==0){for(c=this.length-1;c>=0;c--)this.words[c+w]=this.words[c];for(c=0;c=0);var E;d?E=(d-d%26)/26:E=0;var c=u%26,m=Math.min((u-c)/26,this.length),b=67108863^67108863>>>c<m)for(this.length-=m,f=0;f=0&&(v!==0||f>=E);f--){var T=this.words[f]|0;this.words[f]=v<<26-c|T>>>c,v=T&b}return p&&v!==0&&(p.words[p.length++]=v),this.length===0&&(this.words[0]=0,this.length=1),this._strip()},s.prototype.ishrn=function(u,d,w){return n(this.negative===0),this.iushrn(u,d,w)},s.prototype.shln=function(u){return this.clone().ishln(u)},s.prototype.ushln=function(u){return this.clone().iushln(u)},s.prototype.shrn=function(u){return this.clone().ishrn(u)},s.prototype.ushrn=function(u){return this.clone().iushrn(u)},s.prototype.testn=function(u){n(typeof u=="number"&&u>=0);var d=u%26,w=(u-d)/26,E=1<=0);var d=u%26,w=(u-d)/26;if(n(this.negative===0,"imaskn works only with positive numbers"),this.length<=w)return this;if(d!==0&&w++,this.length=Math.min(w,this.length),d!==0){var E=67108863^67108863>>>d<=67108864;d++)this.words[d]-=67108864,d===this.length-1?this.words[d+1]=1:this.words[d+1]++;return this.length=Math.max(this.length,d+1),this},s.prototype.isubn=function(u){if(n(typeof u=="number"),n(u<67108864),u<0)return this.iaddn(-u);if(this.negative!==0)return this.negative=0,this.iaddn(u),this.negative=1,this;if(this.words[0]-=u,this.length===1&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var d=0;d>26)-(p/67108864|0),this.words[c+w]=m&67108863}for(;c>26,this.words[c+w]=m&67108863;if(b===0)return this._strip();for(n(b===-1),b=0,c=0;c>26,this.words[c]=m&67108863;return this.negative=1,this._strip()},s.prototype._wordDiv=function(u,d){var w=this.length-u.length,E=this.clone(),c=u,m=c.words[c.length-1]|0,b=this._countBits(m);w=26-b,w!==0&&(c=c.ushln(w),E.iushln(w),m=c.words[c.length-1]|0);var p=E.length-c.length,f;if(d!=="mod"){f=new s(null),f.length=p+1,f.words=new Array(f.length);for(var v=0;v=0;h--){var x=(E.words[c.length+h]|0)*67108864+(E.words[c.length+h-1]|0);for(x=Math.min(x/m|0,67108863),E._ishlnsubmul(c,x,h);E.negative!==0;)x--,E.negative=0,E._ishlnsubmul(c,1,h),E.isZero()||(E.negative^=1);f&&(f.words[h]=x)}return f&&f._strip(),E._strip(),d!=="div"&&w!==0&&E.iushrn(w),{div:f||null,mod:E}},s.prototype.divmod=function(u,d,w){if(n(!u.isZero()),this.isZero())return{div:new s(0),mod:new s(0)};var E,c,m;return this.negative!==0&&u.negative===0?(m=this.neg().divmod(u,d),d!=="mod"&&(E=m.div.neg()),d!=="div"&&(c=m.mod.neg(),w&&c.negative!==0&&c.iadd(u)),{div:E,mod:c}):this.negative===0&&u.negative!==0?(m=this.divmod(u.neg(),d),d!=="mod"&&(E=m.div.neg()),{div:E,mod:m.mod}):this.negative&u.negative?(m=this.neg().divmod(u.neg(),d),d!=="div"&&(c=m.mod.neg(),w&&c.negative!==0&&c.isub(u)),{div:m.div,mod:c}):u.length>this.length||this.cmp(u)<0?{div:new s(0),mod:this}:u.length===1?d==="div"?{div:this.divn(u.words[0]),mod:null}:d==="mod"?{div:null,mod:new s(this.modrn(u.words[0]))}:{div:this.divn(u.words[0]),mod:new s(this.modrn(u.words[0]))}:this._wordDiv(u,d)},s.prototype.div=function(u){return this.divmod(u,"div",!1).div},s.prototype.mod=function(u){return this.divmod(u,"mod",!1).mod},s.prototype.umod=function(u){return this.divmod(u,"mod",!0).mod},s.prototype.divRound=function(u){var d=this.divmod(u);if(d.mod.isZero())return d.div;var w=d.div.negative!==0?d.mod.isub(u):d.mod,E=u.ushrn(1),c=u.andln(1),m=w.cmp(E);return m<0||c===1&&m===0?d.div:d.div.negative!==0?d.div.isubn(1):d.div.iaddn(1)},s.prototype.modrn=function(u){var d=u<0;d&&(u=-u),n(u<=67108863);for(var w=(1<<26)%u,E=0,c=this.length-1;c>=0;c--)E=(w*E+(this.words[c]|0))%u;return d?-E:E},s.prototype.modn=function(u){return this.modrn(u)},s.prototype.idivn=function(u){var d=u<0;d&&(u=-u),n(u<=67108863);for(var w=0,E=this.length-1;E>=0;E--){var c=(this.words[E]|0)+w*67108864;this.words[E]=c/u|0,w=c%u}return this._strip(),d?this.ineg():this},s.prototype.divn=function(u){return this.clone().idivn(u)},s.prototype.egcd=function(u){n(u.negative===0),n(!u.isZero());var d=this,w=u.clone();d.negative!==0?d=d.umod(u):d=d.clone();for(var E=new s(1),c=new s(0),m=new s(0),b=new s(1),p=0;d.isEven()&&w.isEven();)d.iushrn(1),w.iushrn(1),++p;for(var f=w.clone(),v=d.clone();!d.isZero();){for(var T=0,h=1;!(d.words[0]&h)&&T<26;++T,h<<=1);if(T>0)for(d.iushrn(T);T-- >0;)(E.isOdd()||c.isOdd())&&(E.iadd(f),c.isub(v)),E.iushrn(1),c.iushrn(1);for(var x=0,S=1;!(w.words[0]&S)&&x<26;++x,S<<=1);if(x>0)for(w.iushrn(x);x-- >0;)(m.isOdd()||b.isOdd())&&(m.iadd(f),b.isub(v)),m.iushrn(1),b.iushrn(1);d.cmp(w)>=0?(d.isub(w),E.isub(m),c.isub(b)):(w.isub(d),m.isub(E),b.isub(c))}return{a:m,b,gcd:w.iushln(p)}},s.prototype._invmp=function(u){n(u.negative===0),n(!u.isZero());var d=this,w=u.clone();d.negative!==0?d=d.umod(u):d=d.clone();for(var E=new s(1),c=new s(0),m=w.clone();d.cmpn(1)>0&&w.cmpn(1)>0;){for(var b=0,p=1;!(d.words[0]&p)&&b<26;++b,p<<=1);if(b>0)for(d.iushrn(b);b-- >0;)E.isOdd()&&E.iadd(m),E.iushrn(1);for(var f=0,v=1;!(w.words[0]&v)&&f<26;++f,v<<=1);if(f>0)for(w.iushrn(f);f-- >0;)c.isOdd()&&c.iadd(m),c.iushrn(1);d.cmp(w)>=0?(d.isub(w),E.isub(c)):(w.isub(d),c.isub(E))}var T;return d.cmpn(1)===0?T=E:T=c,T.cmpn(0)<0&&T.iadd(u),T},s.prototype.gcd=function(u){if(this.isZero())return u.abs();if(u.isZero())return this.abs();var d=this.clone(),w=u.clone();d.negative=0,w.negative=0;for(var E=0;d.isEven()&&w.isEven();E++)d.iushrn(1),w.iushrn(1);do{for(;d.isEven();)d.iushrn(1);for(;w.isEven();)w.iushrn(1);var c=d.cmp(w);if(c<0){var m=d;d=w,w=m}else if(c===0||w.cmpn(1)===0)break;d.isub(w)}while(!0);return w.iushln(E)},s.prototype.invm=function(u){return this.egcd(u).a.umod(u)},s.prototype.isEven=function(){return(this.words[0]&1)===0},s.prototype.isOdd=function(){return(this.words[0]&1)===1},s.prototype.andln=function(u){return this.words[0]&u},s.prototype.bincn=function(u){n(typeof u=="number");var d=u%26,w=(u-d)/26,E=1<>>26,b&=67108863,this.words[m]=b}return c!==0&&(this.words[m]=c,this.length++),this},s.prototype.isZero=function(){return this.length===1&&this.words[0]===0},s.prototype.cmpn=function(u){var d=u<0;if(this.negative!==0&&!d)return-1;if(this.negative===0&&d)return 1;this._strip();var w;if(this.length>1)w=1;else{d&&(u=-u),n(u<=67108863,"Number is too big");var E=this.words[0]|0;w=E===u?0:Eu.length)return 1;if(this.length=0;w--){var E=this.words[w]|0,c=u.words[w]|0;if(E!==c){Ec&&(d=1);break}}return d},s.prototype.gtn=function(u){return this.cmpn(u)===1},s.prototype.gt=function(u){return this.cmp(u)===1},s.prototype.gten=function(u){return this.cmpn(u)>=0},s.prototype.gte=function(u){return this.cmp(u)>=0},s.prototype.ltn=function(u){return this.cmpn(u)===-1},s.prototype.lt=function(u){return this.cmp(u)===-1},s.prototype.lten=function(u){return this.cmpn(u)<=0},s.prototype.lte=function(u){return this.cmp(u)<=0},s.prototype.eqn=function(u){return this.cmpn(u)===0},s.prototype.eq=function(u){return this.cmp(u)===0},s.red=function(u){return new le(u)},s.prototype.toRed=function(u){return n(!this.red,"Already a number in reduction context"),n(this.negative===0,"red works only with positives"),u.convertTo(this)._forceRed(u)},s.prototype.fromRed=function(){return n(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},s.prototype._forceRed=function(u){return this.red=u,this},s.prototype.forceRed=function(u){return n(!this.red,"Already a number in reduction context"),this._forceRed(u)},s.prototype.redAdd=function(u){return n(this.red,"redAdd works only with red numbers"),this.red.add(this,u)},s.prototype.redIAdd=function(u){return n(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,u)},s.prototype.redSub=function(u){return n(this.red,"redSub works only with red numbers"),this.red.sub(this,u)},s.prototype.redISub=function(u){return n(this.red,"redISub works only with red numbers"),this.red.isub(this,u)},s.prototype.redShl=function(u){return n(this.red,"redShl works only with red numbers"),this.red.shl(this,u)},s.prototype.redMul=function(u){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,u),this.red.mul(this,u)},s.prototype.redIMul=function(u){return n(this.red,"redMul works only with red numbers"),this.red._verify2(this,u),this.red.imul(this,u)},s.prototype.redSqr=function(){return n(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},s.prototype.redISqr=function(){return n(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},s.prototype.redSqrt=function(){return n(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},s.prototype.redInvm=function(){return n(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},s.prototype.redNeg=function(){return n(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},s.prototype.redPow=function(u){return n(this.red&&!u.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,u)};var K={k256:null,p224:null,p192:null,p25519:null};function Y(_,u){this.name=_,this.p=new s(u,16),this.n=this.p.bitLength(),this.k=new s(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}Y.prototype._tmp=function(){var u=new s(null);return u.words=new Array(Math.ceil(this.n/13)),u},Y.prototype.ireduce=function(u){var d=u,w;do this.split(d,this.tmp),d=this.imulK(d),d=d.iadd(this.tmp),w=d.bitLength();while(w>this.n);var E=w0?d.isub(this.p):d.strip!==void 0?d.strip():d._strip(),d},Y.prototype.split=function(u,d){u.iushrn(this.n,0,d)},Y.prototype.imulK=function(u){return u.imul(this.k)};function ye(){Y.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}i(ye,Y),ye.prototype.split=function(u,d){for(var w=4194303,E=Math.min(u.length,9),c=0;c>>22,m=b}m>>>=22,u.words[c-10]=m,m===0&&u.length>10?u.length-=10:u.length-=9},ye.prototype.imulK=function(u){u.words[u.length]=0,u.words[u.length+1]=0,u.length+=2;for(var d=0,w=0;w>>=26,u.words[w]=c,d=E}return d!==0&&(u.words[u.length++]=d),u},s._prime=function(u){if(K[u])return K[u];var d;if(u==="k256")d=new ye;else if(u==="p224")d=new de;else if(u==="p192")d=new X;else if(u==="p25519")d=new we;else throw new Error("Unknown prime "+u);return K[u]=d,d};function le(_){if(typeof _=="string"){var u=s._prime(_);this.m=u.p,this.prime=u}else n(_.gtn(1),"modulus must be greater than 1"),this.m=_,this.prime=null}le.prototype._verify1=function(u){n(u.negative===0,"red works only with positives"),n(u.red,"red works only with red numbers")},le.prototype._verify2=function(u,d){n((u.negative|d.negative)===0,"red works only with positives"),n(u.red&&u.red===d.red,"red works only with red numbers")},le.prototype.imod=function(u){return this.prime?this.prime.ireduce(u)._forceRed(this):(y(u,u.umod(this.m)._forceRed(this)),u)},le.prototype.neg=function(u){return u.isZero()?u.clone():this.m.sub(u)._forceRed(this)},le.prototype.add=function(u,d){this._verify2(u,d);var w=u.add(d);return w.cmp(this.m)>=0&&w.isub(this.m),w._forceRed(this)},le.prototype.iadd=function(u,d){this._verify2(u,d);var w=u.iadd(d);return w.cmp(this.m)>=0&&w.isub(this.m),w},le.prototype.sub=function(u,d){this._verify2(u,d);var w=u.sub(d);return w.cmpn(0)<0&&w.iadd(this.m),w._forceRed(this)},le.prototype.isub=function(u,d){this._verify2(u,d);var w=u.isub(d);return w.cmpn(0)<0&&w.iadd(this.m),w},le.prototype.shl=function(u,d){return this._verify1(u),this.imod(u.ushln(d))},le.prototype.imul=function(u,d){return this._verify2(u,d),this.imod(u.imul(d))},le.prototype.mul=function(u,d){return this._verify2(u,d),this.imod(u.mul(d))},le.prototype.isqr=function(u){return this.imul(u,u.clone())},le.prototype.sqr=function(u){return this.mul(u,u)},le.prototype.sqrt=function(u){if(u.isZero())return u.clone();var d=this.m.andln(3);if(n(d%2===1),d===3){var w=this.m.add(new s(1)).iushrn(2);return this.pow(u,w)}for(var E=this.m.subn(1),c=0;!E.isZero()&&E.andln(1)===0;)c++,E.iushrn(1);n(!E.isZero());var m=new s(1).toRed(this),b=m.redNeg(),p=this.m.subn(1).iushrn(1),f=this.m.bitLength();for(f=new s(2*f*f).toRed(this);this.pow(f,p).cmp(b)!==0;)f.redIAdd(b);for(var v=this.pow(f,E),T=this.pow(u,E.addn(1).iushrn(1)),h=this.pow(u,E),x=c;h.cmp(m)!==0;){for(var S=h,N=0;S.cmp(m)!==0;N++)S=S.redSqr();n(N=0;c--){for(var v=d.words[c],T=f-1;T>=0;T--){var h=v>>T&1;if(m!==E[0]&&(m=this.sqr(m)),h===0&&b===0){p=0;continue}b<<=1,b|=h,p++,!(p!==w&&(c!==0||T!==0))&&(m=this.mul(m,E[b]),p=0,b=0)}f=26}return m},le.prototype.convertTo=function(u){var d=u.umod(this.m);return d===u?d.clone():d},le.prototype.convertFrom=function(u){var d=u.clone();return d.red=null,d},s.mont=function(u){return new at(u)};function at(_){le.call(this,_),this.shift=this.m.bitLength(),this.shift%26!==0&&(this.shift+=26-this.shift%26),this.r=new s(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}i(at,le),at.prototype.convertTo=function(u){return this.imod(u.ushln(this.shift))},at.prototype.convertFrom=function(u){var d=this.imod(u.mul(this.rinv));return d.red=null,d},at.prototype.imul=function(u,d){if(u.isZero()||d.isZero())return u.words[0]=0,u.length=1,u;var w=u.imul(d),E=w.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),c=w.isub(E).iushrn(this.shift),m=c;return c.cmp(this.m)>=0?m=c.isub(this.m):c.cmpn(0)<0&&(m=c.iadd(this.m)),m._forceRed(this)},at.prototype.mul=function(u,d){if(u.isZero()||d.isZero())return new s(0)._forceRed(this);var w=u.mul(d),E=w.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),c=w.isub(E).iushrn(this.shift),m=c;return c.cmp(this.m)>=0?m=c.isub(this.m):c.cmpn(0)<0&&(m=c.iadd(this.m)),m._forceRed(this)},at.prototype.invm=function(u){var d=this.imod(u._invmp(this.m).mul(this.r2));return d._forceRed(this)}})(t,Wa)})(po);var bl=po.exports;const ee=ji(bl),wl="logger/5.7.0";let Ko=!1,$o=!1;const vi={debug:1,default:2,info:2,warning:3,error:4,off:5};let Jo=vi.default,Es=null;function Al(){try{const t=[];if(["NFD","NFC","NFKD","NFKC"].forEach(e=>{try{if("test".normalize(e)!=="test")throw new Error("bad normalize")}catch{t.push(e)}}),t.length)throw new Error("missing "+t.join(", "));if("é".normalize("NFD")!=="é")throw new Error("broken implementation")}catch(t){return t.message}return null}const Yo=Al();var Gs;(function(t){t.DEBUG="DEBUG",t.INFO="INFO",t.WARNING="WARNING",t.ERROR="ERROR",t.OFF="OFF"})(Gs||(Gs={}));var Vt;(function(t){t.UNKNOWN_ERROR="UNKNOWN_ERROR",t.NOT_IMPLEMENTED="NOT_IMPLEMENTED",t.UNSUPPORTED_OPERATION="UNSUPPORTED_OPERATION",t.NETWORK_ERROR="NETWORK_ERROR",t.SERVER_ERROR="SERVER_ERROR",t.TIMEOUT="TIMEOUT",t.BUFFER_OVERRUN="BUFFER_OVERRUN",t.NUMERIC_FAULT="NUMERIC_FAULT",t.MISSING_NEW="MISSING_NEW",t.INVALID_ARGUMENT="INVALID_ARGUMENT",t.MISSING_ARGUMENT="MISSING_ARGUMENT",t.UNEXPECTED_ARGUMENT="UNEXPECTED_ARGUMENT",t.CALL_EXCEPTION="CALL_EXCEPTION",t.INSUFFICIENT_FUNDS="INSUFFICIENT_FUNDS",t.NONCE_EXPIRED="NONCE_EXPIRED",t.REPLACEMENT_UNDERPRICED="REPLACEMENT_UNDERPRICED",t.UNPREDICTABLE_GAS_LIMIT="UNPREDICTABLE_GAS_LIMIT",t.TRANSACTION_REPLACED="TRANSACTION_REPLACED",t.ACTION_REJECTED="ACTION_REJECTED"})(Vt||(Vt={}));const Qo="0123456789abcdef";let R=class ft{constructor(e){Object.defineProperty(this,"version",{enumerable:!0,value:e,writable:!1})}_log(e,r){const n=e.toLowerCase();vi[n]==null&&this.throwArgumentError("invalid log level name","logLevel",e),!(Jo>vi[n])&&console.log.apply(console,r)}debug(...e){this._log(ft.levels.DEBUG,e)}info(...e){this._log(ft.levels.INFO,e)}warn(...e){this._log(ft.levels.WARNING,e)}makeError(e,r,n){if($o)return this.makeError("censored error",r,{});r||(r=ft.errors.UNKNOWN_ERROR),n||(n={});const i=[];Object.keys(n).forEach(l=>{const g=n[l];try{if(g instanceof Uint8Array){let y="";for(let A=0;A>4],y+=Qo[g[A]&15];i.push(l+"=Uint8Array(0x"+y+")")}else i.push(l+"="+JSON.stringify(g))}catch{i.push(l+"="+JSON.stringify(n[l].toString()))}}),i.push(`code=${r}`),i.push(`version=${this.version}`);const s=e;let o="";switch(r){case Vt.NUMERIC_FAULT:{o="NUMERIC_FAULT";const l=e;switch(l){case"overflow":case"underflow":case"division-by-zero":o+="-"+l;break;case"negative-power":case"negative-width":o+="-unsupported";break;case"unbound-bitwise-result":o+="-unbound-result";break}break}case Vt.CALL_EXCEPTION:case Vt.INSUFFICIENT_FUNDS:case Vt.MISSING_NEW:case Vt.NONCE_EXPIRED:case Vt.REPLACEMENT_UNDERPRICED:case Vt.TRANSACTION_REPLACED:case Vt.UNPREDICTABLE_GAS_LIMIT:o=r;break}o&&(e+=" [ See: https://links.ethers.org/v5-errors-"+o+" ]"),i.length&&(e+=" ("+i.join(", ")+")");const a=new Error(e);return a.reason=s,a.code=r,Object.keys(n).forEach(function(l){a[l]=n[l]}),a}throwError(e,r,n){throw this.makeError(e,r,n)}throwArgumentError(e,r,n){return this.throwError(e,ft.errors.INVALID_ARGUMENT,{argument:r,value:n})}assert(e,r,n,i){e||this.throwError(r,n,i)}assertArgument(e,r,n,i){e||this.throwArgumentError(r,n,i)}checkNormalize(e){Yo&&this.throwError("platform missing String.prototype.normalize",ft.errors.UNSUPPORTED_OPERATION,{operation:"String.prototype.normalize",form:Yo})}checkSafeUint53(e,r){typeof e=="number"&&(r==null&&(r="value not safe"),(e<0||e>=9007199254740991)&&this.throwError(r,ft.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"out-of-safe-range",value:e}),e%1&&this.throwError(r,ft.errors.NUMERIC_FAULT,{operation:"checkSafeInteger",fault:"non-integer",value:e}))}checkArgumentCount(e,r,n){n?n=": "+n:n="",er&&this.throwError("too many arguments"+n,ft.errors.UNEXPECTED_ARGUMENT,{count:e,expectedCount:r})}checkNew(e,r){(e===Object||e==null)&&this.throwError("missing new",ft.errors.MISSING_NEW,{name:r.name})}checkAbstract(e,r){e===r?this.throwError("cannot instantiate abstract class "+JSON.stringify(r.name)+" directly; use a sub-class",ft.errors.UNSUPPORTED_OPERATION,{name:e.name,operation:"new"}):(e===Object||e==null)&&this.throwError("missing new",ft.errors.MISSING_NEW,{name:r.name})}static globalLogger(){return Es||(Es=new ft(wl)),Es}static setCensorship(e,r){if(!e&&r&&this.globalLogger().throwError("cannot permanently disable censorship",ft.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"}),Ko){if(!e)return;this.globalLogger().throwError("error censorship permanent",ft.errors.UNSUPPORTED_OPERATION,{operation:"setCensorship"})}$o=!!e,Ko=!!r}static setLogLevel(e){const r=vi[e.toLowerCase()];if(r==null){ft.globalLogger().warn("invalid log level - "+e);return}Jo=r}static from(e){return new ft(e)}};R.errors=Vt;R.levels=Gs;const El="bytes/5.7.0",rt=new R(El);function Ka(t){return!!t.toHexString}function yn(t){return t.slice||(t.slice=function(){const e=Array.prototype.slice.call(arguments);return yn(new Uint8Array(Array.prototype.slice.apply(t,e)))}),t}function Or(t){return pe(t)&&!(t.length%2)||Wi(t)}function Xo(t){return typeof t=="number"&&t==t&&t%1===0}function Wi(t){if(t==null)return!1;if(t.constructor===Uint8Array)return!0;if(typeof t=="string"||!Xo(t.length)||t.length<0)return!1;for(let e=0;e=256)return!1}return!0}function q(t,e){if(e||(e={}),typeof t=="number"){rt.checkSafeUint53(t,"invalid arrayify value");const r=[];for(;t;)r.unshift(t&255),t=parseInt(String(t/256));return r.length===0&&r.push(0),yn(new Uint8Array(r))}if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),Ka(t)&&(t=t.toHexString()),pe(t)){let r=t.substring(2);r.length%2&&(e.hexPad==="left"?r="0"+r:e.hexPad==="right"?r+="0":rt.throwArgumentError("hex data is odd-length","value",t));const n=[];for(let i=0;iq(i)),r=e.reduce((i,s)=>i+s.length,0),n=new Uint8Array(r);return e.reduce((i,s)=>(n.set(s,i),i+s.length),0),yn(n)}function En(t){let e=q(t);if(e.length===0)return e;let r=0;for(;re&&rt.throwArgumentError("value out of range","value",arguments[0]);const r=new Uint8Array(e);return r.set(t,e-t.length),yn(r)}function pe(t,e){return!(typeof t!="string"||!t.match(/^0x[0-9A-Fa-f]*$/)||e&&t.length!==2+2*e)}const xs="0123456789abcdef";function F(t,e){if(e||(e={}),typeof t=="number"){rt.checkSafeUint53(t,"invalid hexlify value");let r="";for(;t;)r=xs[t&15]+r,t=Math.floor(t/16);return r.length?(r.length%2&&(r="0"+r),"0x"+r):"0x00"}if(typeof t=="bigint")return t=t.toString(16),t.length%2?"0x0"+t:"0x"+t;if(e.allowMissingPrefix&&typeof t=="string"&&t.substring(0,2)!=="0x"&&(t="0x"+t),Ka(t))return t.toHexString();if(pe(t))return t.length%2&&(e.hexPad==="left"?t="0x0"+t.substring(2):e.hexPad==="right"?t+="0":rt.throwArgumentError("hex data is odd-length","value",t)),t.toLowerCase();if(Wi(t)){let r="0x";for(let n=0;n>4]+xs[i&15]}return r}return rt.throwArgumentError("invalid hexlify value","value",t)}function nn(t){if(typeof t!="string")t=F(t);else if(!pe(t)||t.length%2)return null;return(t.length-2)/2}function gt(t,e,r){return typeof t!="string"?t=F(t):(!pe(t)||t.length%2)&&rt.throwArgumentError("invalid hexData","value",t),e=2+2*e,r!=null?"0x"+t.substring(e,2+2*r):"0x"+t.substring(e)}function _t(t){let e="0x";return t.forEach(r=>{e+=F(r).substring(2)}),e}function mo(t){const e=xl(F(t,{hexPad:"left"}));return e==="0x"?"0x0":e}function xl(t){typeof t!="string"&&(t=F(t)),pe(t)||rt.throwArgumentError("invalid hex string","value",t),t=t.substring(2);let e=0;for(;e2*e+2&&rt.throwArgumentError("value out of range","value",arguments[1]);t.length<2*e+2;)t="0x0"+t.substring(2);return t}function Vi(t){const e={r:"0x",s:"0x",_vs:"0x",recoveryParam:0,v:0,yParityAndS:"0x",compact:"0x"};if(Or(t)){let r=q(t);r.length===64?(e.v=27+(r[32]>>7),r[32]&=127,e.r=F(r.slice(0,32)),e.s=F(r.slice(32,64))):r.length===65?(e.r=F(r.slice(0,32)),e.s=F(r.slice(32,64)),e.v=r[64]):rt.throwArgumentError("invalid signature string","signature",t),e.v<27&&(e.v===0||e.v===1?e.v+=27:rt.throwArgumentError("signature invalid v byte","signature",t)),e.recoveryParam=1-e.v%2,e.recoveryParam&&(r[32]|=128),e._vs=F(r.slice(32,64))}else{if(e.r=t.r,e.s=t.s,e.v=t.v,e.recoveryParam=t.recoveryParam,e._vs=t._vs,e._vs!=null){const i=yi(q(e._vs),32);e._vs=F(i);const s=i[0]>=128?1:0;e.recoveryParam==null?e.recoveryParam=s:e.recoveryParam!==s&&rt.throwArgumentError("signature recoveryParam mismatch _vs","signature",t),i[0]&=127;const o=F(i);e.s==null?e.s=o:e.s!==o&&rt.throwArgumentError("signature v mismatch _vs","signature",t)}if(e.recoveryParam==null)e.v==null?rt.throwArgumentError("signature missing v and recoveryParam","signature",t):e.v===0||e.v===1?e.recoveryParam=e.v:e.recoveryParam=1-e.v%2;else if(e.v==null)e.v=27+e.recoveryParam;else{const i=e.v===0||e.v===1?e.v:1-e.v%2;e.recoveryParam!==i&&rt.throwArgumentError("signature recoveryParam mismatch v","signature",t)}e.r==null||!pe(e.r)?rt.throwArgumentError("signature missing or invalid r","signature",t):e.r=it(e.r,32),e.s==null||!pe(e.s)?rt.throwArgumentError("signature missing or invalid s","signature",t):e.s=it(e.s,32);const r=q(e.s);r[0]>=128&&rt.throwArgumentError("signature s out of range","signature",t),e.recoveryParam&&(r[0]|=128);const n=F(r);e._vs&&(pe(e._vs)||rt.throwArgumentError("signature invalid _vs","signature",t),e._vs=it(e._vs,32)),e._vs==null?e._vs=n:e._vs!==n&&rt.throwArgumentError("signature _vs mismatch v and s","signature",t)}return e.yParityAndS=e._vs,e.compact=e.r+e.yParityAndS.substring(2),e}const _l="bignumber/5.7.0";var ki=ee.BN;const ur=new R(_l),_s={},Zo=9007199254740991;let ea=!1;class O{constructor(e,r){e!==_s&&ur.throwError("cannot call constructor directly; use BigNumber.from",R.errors.UNSUPPORTED_OPERATION,{operation:"new (BigNumber)"}),this._hex=r,this._isBigNumber=!0,Object.freeze(this)}fromTwos(e){return xt(ne(this).fromTwos(e))}toTwos(e){return xt(ne(this).toTwos(e))}abs(){return this._hex[0]==="-"?O.from(this._hex.substring(1)):this}add(e){return xt(ne(this).add(ne(e)))}sub(e){return xt(ne(this).sub(ne(e)))}div(e){return O.from(e).isZero()&&Ot("division-by-zero","div"),xt(ne(this).div(ne(e)))}mul(e){return xt(ne(this).mul(ne(e)))}mod(e){const r=ne(e);return r.isNeg()&&Ot("division-by-zero","mod"),xt(ne(this).umod(r))}pow(e){const r=ne(e);return r.isNeg()&&Ot("negative-power","pow"),xt(ne(this).pow(r))}and(e){const r=ne(e);return(this.isNegative()||r.isNeg())&&Ot("unbound-bitwise-result","and"),xt(ne(this).and(r))}or(e){const r=ne(e);return(this.isNegative()||r.isNeg())&&Ot("unbound-bitwise-result","or"),xt(ne(this).or(r))}xor(e){const r=ne(e);return(this.isNegative()||r.isNeg())&&Ot("unbound-bitwise-result","xor"),xt(ne(this).xor(r))}mask(e){return(this.isNegative()||e<0)&&Ot("negative-width","mask"),xt(ne(this).maskn(e))}shl(e){return(this.isNegative()||e<0)&&Ot("negative-width","shl"),xt(ne(this).shln(e))}shr(e){return(this.isNegative()||e<0)&&Ot("negative-width","shr"),xt(ne(this).shrn(e))}eq(e){return ne(this).eq(ne(e))}lt(e){return ne(this).lt(ne(e))}lte(e){return ne(this).lte(ne(e))}gt(e){return ne(this).gt(ne(e))}gte(e){return ne(this).gte(ne(e))}isNegative(){return this._hex[0]==="-"}isZero(){return ne(this).isZero()}toNumber(){try{return ne(this).toNumber()}catch{Ot("overflow","toNumber",this.toString())}return null}toBigInt(){try{return BigInt(this.toString())}catch{}return ur.throwError("this platform does not support BigInt",R.errors.UNSUPPORTED_OPERATION,{value:this.toString()})}toString(){return arguments.length>0&&(arguments[0]===10?ea||(ea=!0,ur.warn("BigNumber.toString does not accept any parameters; base-10 is assumed")):arguments[0]===16?ur.throwError("BigNumber.toString does not accept any parameters; use bigNumber.toHexString()",R.errors.UNEXPECTED_ARGUMENT,{}):ur.throwError("BigNumber.toString does not accept parameters",R.errors.UNEXPECTED_ARGUMENT,{})),ne(this).toString(10)}toHexString(){return this._hex}toJSON(e){return{type:"BigNumber",hex:this.toHexString()}}static from(e){if(e instanceof O)return e;if(typeof e=="string")return e.match(/^-?0x[0-9a-f]+$/i)?new O(_s,$n(e)):e.match(/^-?[0-9]+$/)?new O(_s,$n(new ki(e))):ur.throwArgumentError("invalid BigNumber string","value",e);if(typeof e=="number")return e%1&&Ot("underflow","BigNumber.from",e),(e>=Zo||e<=-Zo)&&Ot("overflow","BigNumber.from",e),O.from(String(e));const r=e;if(typeof r=="bigint")return O.from(r.toString());if(Wi(r))return O.from(F(r));if(r)if(r.toHexString){const n=r.toHexString();if(typeof n=="string")return O.from(n)}else{let n=r._hex;if(n==null&&r.type==="BigNumber"&&(n=r.hex),typeof n=="string"&&(pe(n)||n[0]==="-"&&pe(n.substring(1))))return O.from(n)}return ur.throwArgumentError("invalid BigNumber value","value",e)}static isBigNumber(e){return!!(e&&e._isBigNumber)}}function $n(t){if(typeof t!="string")return $n(t.toString(16));if(t[0]==="-")return t=t.substring(1),t[0]==="-"&&ur.throwArgumentError("invalid hex","value",t),t=$n(t),t==="0x00"?t:"-"+t;if(t.substring(0,2)!=="0x"&&(t="0x"+t),t==="0x")return"0x00";for(t.length%2&&(t="0x0"+t.substring(2));t.length>4&&t.substring(0,4)==="0x00";)t="0x"+t.substring(4);return t}function xt(t){return O.from($n(t))}function ne(t){const e=O.from(t).toHexString();return e[0]==="-"?new ki("-"+e.substring(3),16):new ki(e.substring(2),16)}function Ot(t,e,r){const n={fault:t,operation:e};return r!=null&&(n.value=r),ur.throwError(t,R.errors.NUMERIC_FAULT,n)}function Sl(t){return new ki(t,36).toString(16)}const Il="properties/5.7.0";var Ml=function(t,e,r,n){function i(s){return s instanceof r?s:new r(function(o){o(s)})}return new(r||(r=Promise))(function(s,o){function a(y){try{g(n.next(y))}catch(A){o(A)}}function l(y){try{g(n.throw(y))}catch(A){o(A)}}function g(y){y.done?s(y.value):i(y.value).then(a,l)}g((n=n.apply(t,e||[])).next())})};const $a=new R(Il);function G(t,e,r){Object.defineProperty(t,e,{enumerable:!0,value:r,writable:!1})}function dn(t,e){for(let r=0;r<32;r++){if(t[e])return t[e];if(!t.prototype||typeof t.prototype!="object")break;t=Object.getPrototypeOf(t.prototype).constructor}return null}function ot(t){return Ml(this,void 0,void 0,function*(){const e=Object.keys(t).map(n=>{const i=t[n];return Promise.resolve(i).then(s=>({key:n,value:s}))});return(yield Promise.all(e)).reduce((n,i)=>(n[i.key]=i.value,n),{})})}function Tt(t){const e={};for(const r in t)e[r]=t[r];return e}const Nl={bigint:!0,boolean:!0,function:!0,number:!0,string:!0};function Ja(t){if(t==null||Nl[typeof t])return!0;if(Array.isArray(t)||typeof t=="object"){if(!Object.isFrozen(t))return!1;const e=Object.keys(t);for(let r=0;rxn(e)));if(typeof t=="object"){const e={};for(const r in t){const n=t[r];n!==void 0&&G(e,r,xn(n))}return e}return $a.throwArgumentError(`Cannot deepCopy ${typeof t}`,"object",t)}function xn(t){return kl(t)}class ri{constructor(e){for(const r in e)this[r]=xn(e[r])}}const ni="abi/5.7.0",ae=new R(ni),sn={};let ta={calldata:!0,memory:!0,storage:!0},Tl={calldata:!0,memory:!0};function li(t,e){if(t==="bytes"||t==="string"){if(ta[e])return!0}else if(t==="address"){if(e==="payable")return!0}else if((t.indexOf("[")>=0||t==="tuple")&&Tl[e])return!0;return(ta[e]||e==="payable")&&ae.throwArgumentError("invalid modifier","name",e),!1}function Cl(t,e){let r=t;function n(a){ae.throwArgumentError(`unexpected character at position ${a}`,"param",t)}t=t.replace(/\s/g," ");function i(a){let l={type:"",name:"",parent:a,state:{allowType:!0}};return e&&(l.indexed=!1),l}let s={type:"",name:"",state:{allowType:!0}},o=s;for(let a=0;aJSON.parse(i.format(e)))),JSON.stringify(n)}let r="";return this.baseType==="array"?(r+=this.arrayChildren.format(e),r+="["+(this.arrayLength<0?"":String(this.arrayLength))+"]"):this.baseType==="tuple"?(e!==he.sighash&&(r+=this.type),r+="("+this.components.map(n=>n.format(e)).join(e===he.full?", ":",")+")"):r+=this.type,e!==he.sighash&&(this.indexed===!0&&(r+=" indexed"),e===he.full&&this.name&&(r+=" "+this.name)),r}static from(e,r){return typeof e=="string"?ut.fromString(e,r):ut.fromObject(e)}static fromObject(e){return ut.isParamType(e)?e:new ut(sn,{name:e.name||null,type:cn(e.type),indexed:e.indexed==null?null:!!e.indexed,components:e.components?e.components.map(ut.fromObject):null})}static fromString(e,r){function n(i){return ut.fromObject({name:i.name,type:i.type,indexed:i.indexed,components:i.components})}return n(Cl(e,!!r))}static isParamType(e){return!!(e!=null&&e._isParamType)}}function Jn(t,e){return Rl(t).map(r=>ut.fromString(r,e))}class hr{constructor(e,r){e!==sn&&ae.throwError("use a static from method",R.errors.UNSUPPORTED_OPERATION,{operation:"new Fragment()"}),bi(this,r),this._isFragment=!0,Object.freeze(this)}static from(e){return hr.isFragment(e)?e:typeof e=="string"?hr.fromString(e):hr.fromObject(e)}static fromObject(e){if(hr.isFragment(e))return e;switch(e.type){case"function":return tr.fromObject(e);case"event":return cr.fromObject(e);case"constructor":return er.fromObject(e);case"error":return Nr.fromObject(e);case"fallback":case"receive":return null}return ae.throwArgumentError("invalid fragment object","value",e)}static fromString(e){return e=e.replace(/\s/g," "),e=e.replace(/\(/g," (").replace(/\)/g,") ").replace(/\s+/g," "),e=e.trim(),e.split(" ")[0]==="event"?cr.fromString(e.substring(5).trim()):e.split(" ")[0]==="function"?tr.fromString(e.substring(8).trim()):e.split("(")[0].trim()==="constructor"?er.fromString(e.trim()):e.split(" ")[0]==="error"?Nr.fromString(e.substring(5).trim()):ae.throwArgumentError("unsupported fragment","value",e)}static isFragment(e){return!!(e&&e._isFragment)}}class cr extends hr{format(e){if(e||(e=he.sighash),he[e]||ae.throwArgumentError("invalid format type","format",e),e===he.json)return JSON.stringify({type:"event",anonymous:this.anonymous,name:this.name,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});let r="";return e!==he.sighash&&(r+="event "),r+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===he.full?", ":",")+") ",e!==he.sighash&&this.anonymous&&(r+="anonymous "),r.trim()}static from(e){return typeof e=="string"?cr.fromString(e):cr.fromObject(e)}static fromObject(e){if(cr.isEventFragment(e))return e;e.type!=="event"&&ae.throwArgumentError("invalid event object","value",e);const r={name:Yn(e.name),anonymous:e.anonymous,inputs:e.inputs?e.inputs.map(ut.fromObject):[],type:"event"};return new cr(sn,r)}static fromString(e){let r=e.match(Qn);r||ae.throwArgumentError("invalid event string","value",e);let n=!1;return r[3].split(" ").forEach(i=>{switch(i.trim()){case"anonymous":n=!0;break;case"":break;default:ae.warn("unknown modifier: "+i)}}),cr.fromObject({name:r[1].trim(),anonymous:n,inputs:Jn(r[2],!0),type:"event"})}static isEventFragment(e){return e&&e._isFragment&&e.type==="event"}}function Ya(t,e){e.gas=null;let r=t.split("@");return r.length!==1?(r.length>2&&ae.throwArgumentError("invalid human-readable ABI signature","value",t),r[1].match(/^[0-9]+$/)||ae.throwArgumentError("invalid human-readable ABI signature gas","value",t),e.gas=O.from(r[1]),r[0]):t}function Qa(t,e){e.constant=!1,e.payable=!1,e.stateMutability="nonpayable",t.split(" ").forEach(r=>{switch(r.trim()){case"constant":e.constant=!0;break;case"payable":e.payable=!0,e.stateMutability="payable";break;case"nonpayable":e.payable=!1,e.stateMutability="nonpayable";break;case"pure":e.constant=!0,e.stateMutability="pure";break;case"view":e.constant=!0,e.stateMutability="view";break;case"external":case"public":case"":break;default:console.log("unknown modifier: "+r)}})}function Xa(t){let e={constant:!1,payable:!0,stateMutability:"payable"};return t.stateMutability!=null?(e.stateMutability=t.stateMutability,e.constant=e.stateMutability==="view"||e.stateMutability==="pure",t.constant!=null&&!!t.constant!==e.constant&&ae.throwArgumentError("cannot have constant function with mutability "+e.stateMutability,"value",t),e.payable=e.stateMutability==="payable",t.payable!=null&&!!t.payable!==e.payable&&ae.throwArgumentError("cannot have payable function with mutability "+e.stateMutability,"value",t)):t.payable!=null?(e.payable=!!t.payable,t.constant==null&&!e.payable&&t.type!=="constructor"&&ae.throwArgumentError("unable to determine stateMutability","value",t),e.constant=!!t.constant,e.constant?e.stateMutability="view":e.stateMutability=e.payable?"payable":"nonpayable",e.payable&&e.constant&&ae.throwArgumentError("cannot have constant payable function","value",t)):t.constant!=null?(e.constant=!!t.constant,e.payable=!e.constant,e.stateMutability=e.constant?"view":"payable"):t.type!=="constructor"&&ae.throwArgumentError("unable to determine stateMutability","value",t),e}class er extends hr{format(e){if(e||(e=he.sighash),he[e]||ae.throwArgumentError("invalid format type","format",e),e===he.json)return JSON.stringify({type:"constructor",stateMutability:this.stateMutability!=="nonpayable"?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});e===he.sighash&&ae.throwError("cannot format a constructor for sighash",R.errors.UNSUPPORTED_OPERATION,{operation:"format(sighash)"});let r="constructor("+this.inputs.map(n=>n.format(e)).join(e===he.full?", ":",")+") ";return this.stateMutability&&this.stateMutability!=="nonpayable"&&(r+=this.stateMutability+" "),r.trim()}static from(e){return typeof e=="string"?er.fromString(e):er.fromObject(e)}static fromObject(e){if(er.isConstructorFragment(e))return e;e.type!=="constructor"&&ae.throwArgumentError("invalid constructor object","value",e);let r=Xa(e);r.constant&&ae.throwArgumentError("constructor cannot be constant","value",e);const n={name:null,type:e.type,inputs:e.inputs?e.inputs.map(ut.fromObject):[],payable:r.payable,stateMutability:r.stateMutability,gas:e.gas?O.from(e.gas):null};return new er(sn,n)}static fromString(e){let r={type:"constructor"};e=Ya(e,r);let n=e.match(Qn);return(!n||n[1].trim()!=="constructor")&&ae.throwArgumentError("invalid constructor string","value",e),r.inputs=Jn(n[2].trim(),!1),Qa(n[3].trim(),r),er.fromObject(r)}static isConstructorFragment(e){return e&&e._isFragment&&e.type==="constructor"}}class tr extends er{format(e){if(e||(e=he.sighash),he[e]||ae.throwArgumentError("invalid format type","format",e),e===he.json)return JSON.stringify({type:"function",name:this.name,constant:this.constant,stateMutability:this.stateMutability!=="nonpayable"?this.stateMutability:void 0,payable:this.payable,gas:this.gas?this.gas.toNumber():void 0,inputs:this.inputs.map(n=>JSON.parse(n.format(e))),outputs:this.outputs.map(n=>JSON.parse(n.format(e)))});let r="";return e!==he.sighash&&(r+="function "),r+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===he.full?", ":",")+") ",e!==he.sighash&&(this.stateMutability?this.stateMutability!=="nonpayable"&&(r+=this.stateMutability+" "):this.constant&&(r+="view "),this.outputs&&this.outputs.length&&(r+="returns ("+this.outputs.map(n=>n.format(e)).join(", ")+") "),this.gas!=null&&(r+="@"+this.gas.toString()+" ")),r.trim()}static from(e){return typeof e=="string"?tr.fromString(e):tr.fromObject(e)}static fromObject(e){if(tr.isFunctionFragment(e))return e;e.type!=="function"&&ae.throwArgumentError("invalid function object","value",e);let r=Xa(e);const n={type:e.type,name:Yn(e.name),constant:r.constant,inputs:e.inputs?e.inputs.map(ut.fromObject):[],outputs:e.outputs?e.outputs.map(ut.fromObject):[],payable:r.payable,stateMutability:r.stateMutability,gas:e.gas?O.from(e.gas):null};return new tr(sn,n)}static fromString(e){let r={type:"function"};e=Ya(e,r);let n=e.split(" returns ");n.length>2&&ae.throwArgumentError("invalid function string","value",e);let i=n[0].match(Qn);if(i||ae.throwArgumentError("invalid function signature","value",e),r.name=i[1].trim(),r.name&&Yn(r.name),r.inputs=Jn(i[2],!1),Qa(i[3].trim(),r),n.length>1){let s=n[1].match(Qn);(s[1].trim()!=""||s[3].trim()!="")&&ae.throwArgumentError("unexpected tokens","value",e),r.outputs=Jn(s[2],!1)}else r.outputs=[];return tr.fromObject(r)}static isFunctionFragment(e){return e&&e._isFragment&&e.type==="function"}}function ra(t){const e=t.format();return(e==="Error(string)"||e==="Panic(uint256)")&&ae.throwArgumentError(`cannot specify user defined ${e} error`,"fragment",t),t}class Nr extends hr{format(e){if(e||(e=he.sighash),he[e]||ae.throwArgumentError("invalid format type","format",e),e===he.json)return JSON.stringify({type:"error",name:this.name,inputs:this.inputs.map(n=>JSON.parse(n.format(e)))});let r="";return e!==he.sighash&&(r+="error "),r+=this.name+"("+this.inputs.map(n=>n.format(e)).join(e===he.full?", ":",")+") ",r.trim()}static from(e){return typeof e=="string"?Nr.fromString(e):Nr.fromObject(e)}static fromObject(e){if(Nr.isErrorFragment(e))return e;e.type!=="error"&&ae.throwArgumentError("invalid error object","value",e);const r={type:e.type,name:Yn(e.name),inputs:e.inputs?e.inputs.map(ut.fromObject):[]};return ra(new Nr(sn,r))}static fromString(e){let r={type:"error"},n=e.match(Qn);return n||ae.throwArgumentError("invalid error signature","value",e),r.name=n[1].trim(),r.name&&Yn(r.name),r.inputs=Jn(n[2],!1),ra(Nr.fromObject(r))}static isErrorFragment(e){return e&&e._isFragment&&e.type==="error"}}function cn(t){return t.match(/^uint($|[^1-9])/)?t="uint256"+t.substring(4):t.match(/^int($|[^1-9])/)&&(t="int256"+t.substring(3)),t}const Pl=new RegExp("^[a-zA-Z$_][a-zA-Z0-9$_]*$");function Yn(t){return(!t||!t.match(Pl))&&ae.throwArgumentError(`invalid identifier "${t}"`,"value",t),t}const Qn=new RegExp("^([^)(]*)\\((.*)\\)([^)(]*)$");function Rl(t){t=t.trim();let e=[],r="",n=0;for(let i=0;ithis.wordSize&&vo.throwError("value out-of-bounds",R.errors.BUFFER_OVERRUN,{length:this.wordSize,offset:r.length}),r.length%this.wordSize&&(r=ht([this._padding.slice(r.length%this.wordSize),r])),r}writeValue(e){return this._writeData(this._getValue(e))}writeUpdatableValue(){const e=this._data.length;return this._data.push(this._padding),this._dataLength+=this.wordSize,r=>{this._data[e]=this._getValue(r)}}}class Ti{constructor(e,r,n,i){G(this,"_data",q(e)),G(this,"wordSize",r||32),G(this,"_coerceFunc",n),G(this,"allowLoose",i),this._offset=0}get data(){return F(this._data)}get consumed(){return this._offset}static coerce(e,r){let n=e.match("^u?int([0-9]+)$");return n&&parseInt(n[1])<=48&&(r=r.toNumber()),r}coerce(e,r){return this._coerceFunc?this._coerceFunc(e,r):Ti.coerce(e,r)}_peekBytes(e,r,n){let i=Math.ceil(r/this.wordSize)*this.wordSize;return this._offset+i>this._data.length&&(this.allowLoose&&n&&this._offset+r<=this._data.length?i=r:vo.throwError("data out-of-bounds",R.errors.BUFFER_OVERRUN,{length:this._data.length,offset:this._offset+i})),this._data.slice(this._offset,this._offset+i)}subReader(e){return new Ti(this._data.slice(this._offset+e),this.wordSize,this._coerceFunc,this.allowLoose)}readBytes(e,r){let n=this._peekBytes(0,e,!!r);return this._offset+=n.length,n.slice(0,e)}readValue(){return O.from(this.readBytes(this.wordSize))}}var Za={exports:{}};/** * [js-sha3]{@link https://github.com/emn178/js-sha3} * * @version 0.8.0 diff --git a/assets/overview-D-xf1SpI.js b/assets/overview-CWpWBH8h.js similarity index 97% rename from assets/overview-D-xf1SpI.js rename to assets/overview-CWpWBH8h.js index 4875d9b47d..f72161f909 100644 --- a/assets/overview-D-xf1SpI.js +++ b/assets/overview-CWpWBH8h.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const o={title:"Introduction",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"introduction",children:["Introduction",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const o={title:"Introduction",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"introduction",children:["Introduction",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["The Sequence Unity Embedded Wallet SDK provides full Sequence ",e.jsx(n.a,{href:"/solutions/wallets/embedded-wallet/overview",children:"Embedded Wallet"})," and ",e.jsx(n.a,{href:"/api/indexer/overview",children:"Indexer"})," integration for your Unity Games, integrated with our own purpose-built for Unity SequenceEthereum library. That's right, no Nethereum required!"]}),` `,e.jsxs(n.p,{children:["This SDK follows ",e.jsx(n.a,{href:"https://semver.org/",children:"Semantic Versioning"})," (",e.jsx(n.code,{children:"major.minor.patch"}),"). While we're still in ",e.jsx(n.code,{children:"0.x.y"})," builds, API breaking changes can be made at any time. After ",e.jsx(n.code,{children:"1.0.0"}),", breaking changes will always cause a ",e.jsx(n.code,{children:"major"})," version increment, non-breaking new features will cause a ",e.jsx(n.code,{children:"minor"})," version increment, and bugfixes will cause a ",e.jsx(n.code,{children:"patch"})," version increment."]}),` `,e.jsxs(n.h2,{id:"requirements",children:["Requirements",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#requirements",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/overview-DIS-xE0C.js b/assets/overview-CYxss-oC.js similarity index 97% rename from assets/overview-DIS-xE0C.js rename to assets/overview-CYxss-oC.js index 4e4407c3f2..40581ac339 100644 --- a/assets/overview-DIS-xE0C.js +++ b/assets/overview-CYxss-oC.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-BG6_g6N7.js";const o={title:"SequenceKit SDK",description:"undefined"};function i(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequencekit-sdk",children:["SequenceKit SDK",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequencekit-sdk",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-XAh3cByi.js";const o={title:"SequenceKit SDK",description:"undefined"};function i(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequencekit-sdk",children:["SequenceKit SDK",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequencekit-sdk",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular ",e.jsx(n.a,{href:"https://wagmi.sh/",children:"wagmi"})," library, unlock a realm of possibilities in the world of web3."]}),` `,e.jsxs(n.h2,{id:"key-features",children:["Key Features",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#key-features",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.ul,{children:[` diff --git a/assets/overview-DaiROQHz.js b/assets/overview-Cg5A0toO.js similarity index 98% rename from assets/overview-DaiROQHz.js rename to assets/overview-Cg5A0toO.js index f2be16c71d..9faf5d4727 100644 --- a/assets/overview-DaiROQHz.js +++ b/assets/overview-Cg5A0toO.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const r={title:"Sequence Wallets Overview",description:"undefined"};function s(n){const t={a:"a",div:"div",h1:"h1",h3:"h3",header:"header",img:"img",p:"p",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-wallets-overview",children:["Sequence Wallets Overview",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-wallets-overview",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const r={title:"Sequence Wallets Overview",description:"undefined"};function s(n){const t={a:"a",div:"div",h1:"h1",h3:"h3",header:"header",img:"img",p:"p",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-wallets-overview",children:["Sequence Wallets Overview",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-wallets-overview",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Sequence offers multiple wallet options to integrate into your products. We have two main choices: the Embedded Wallet and the Universal Wallet. Both are completely non-custodial."}),` `,e.jsx(t.p,{children:"The Embedded Wallet is designed for a traditional gaming experience. It operates without intrusive pop-ups, modals, or transaction signing that might distract players. Users can easily log in using common social logins or other authentication methods and dive straight into the game. We support popular game engines like Unreal and Unity, as well as Typescript for seamless integration into your preferred framework."}),` `,e.jsxs(t.p,{children:["On the other hand, the Universal Wallet targets native blockchain users, particularly those involved in gaming and gaming assets. It provides a familiar environment for existing blockchain users and enables developers to create compelling web3 experiences. The ",e.jsx(t.a,{href:"/sdk/typescript/guides/overview",children:"Typescript SDK"})," makes integration straightforward."]}),` diff --git a/assets/overview-CoEZJSU7.js b/assets/overview-CoEZJSU7.js new file mode 100644 index 0000000000..5ce20563ef --- /dev/null +++ b/assets/overview-CoEZJSU7.js @@ -0,0 +1,6 @@ +import{d as i,j as e,e as n}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";import{C as s,a}from"./CardGrid-Bkj_ERUR.js";const p={title:"Sequence Market",description:"undefined"};function o(r){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",hr:"hr",p:"p",...i(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-market",children:["Sequence Market",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-market",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +`,e.jsx(t.p,{children:"The Sequence Marketplace API service offers a simple and fast way to interact with sequence marketplace protocols to build a custom marketplace while accelerating your development time. The API is designed to be easy to use and to have all the features you need to build a fully functional marketplace."}),` +`,e.jsx(t.hr,{}),` +`,e.jsxs(n,{type:"tip",children:[e.jsxs(t.p,{children:["Sequence Market contract is fully audited and can be found at ",e.jsx(t.a,{href:"https://github.com/0xsequence/marketplace-contracts",children:"https://github.com/0xsequence/marketplace-contracts"})]}),e.jsxs(t.p,{children:["The officially maintained contract address is ",e.jsx(t.code,{children:"0xB537a160472183f2150d42EB1c3DD6684A55f74c"}),", and is available with the same address on all networks supported by the sequence stack."]})]}),` +`,e.jsxs(t.h2,{id:"overview",children:["Overview",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#overview",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` +`,e.jsxs(s,{children:[e.jsx(a,{title:"Quickstart",description:"Use or copy a demo custom marketplace built for an Aviator game",icon:"✈",link:"/solutions/marketplaces/orderbook/quickstart"}),e.jsx(a,{title:"Custom Marketplace Guide",description:"End to end walkthrough of how to build a complete custom marketplace",icon:"🎖️",link:"/guides/custom-marketplace"}),e.jsx(a,{title:"Creating Orders",description:"Create orders on the Sequence Marketplace Protocol",icon:"🔨",link:"/api/marketplace/examples/orderbook-transactions"}),e.jsx(a,{title:"Get Top Orders",description:"Build experiences to enable the best order offered",icon:"⛰️",link:"/api/marketplace/examples/get-top-orders"}),e.jsx(a,{title:"Get Orderbook Details",description:"Query the orderbook details based on collection and properties",icon:"🎞️",link:"/api/marketplace/examples/get-orderbook"}),e.jsx(a,{title:"Get User Activities",description:"Follow along with your users by enabling experiences that promote tx history",icon:"📓",link:"/api/marketplace/examples/get-user-activities"}),e.jsx(a,{title:"Orderbook Transactions",description:"Send transactions to create or fulfill orders on the orderbook marketlace",icon:"🧱",link:"/api/marketplace/examples/orderbook-transactions"})]})]})}function u(r={}){const{wrapper:t}={...i(),...r.components};return t?e.jsx(t,{...r,children:e.jsx(o,{...r})}):o(r)}export{u as default,p as frontmatter}; diff --git a/assets/overview-BQpMzbxx.js b/assets/overview-D96e7635.js similarity index 97% rename from assets/overview-BQpMzbxx.js rename to assets/overview-D96e7635.js index 9660dacbec..4665123aa6 100644 --- a/assets/overview-BQpMzbxx.js +++ b/assets/overview-D96e7635.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const s={title:"Wallet Connectors",description:"undefined"};function t(o){const n={a:"a",div:"div",h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...r(),...o.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"wallet-connectors",children:["Wallet Connectors",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-connectors",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const s={title:"Wallet Connectors",description:"undefined"};function t(o){const n={a:"a",div:"div",h1:"h1",header:"header",li:"li",p:"p",ul:"ul",...r(),...o.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"wallet-connectors",children:["Wallet Connectors",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-connectors",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:`Sequence is compatible with all standard Ethereum libraries and connectors. If you've developed your dapp to with work Metamask, it will also automatically work with Sequence.`}),` `,e.jsxs(n.p,{children:[`Our SDKs offer all the functionality you'd need to build a web3 dapp, but you can also diff --git a/assets/overview-DknqsGX5.js b/assets/overview-DbOhfer9.js similarity index 97% rename from assets/overview-DknqsGX5.js rename to assets/overview-DbOhfer9.js index 6226db9c65..4c34992d6c 100644 --- a/assets/overview-DknqsGX5.js +++ b/assets/overview-DbOhfer9.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-BG6_g6N7.js";const s={slug:"/unreal-waas-sdk",title:"Introduction",description:"undefined"};function r(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"introduction",children:["Introduction",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-XAh3cByi.js";const s={slug:"/unreal-waas-sdk",title:"Introduction",description:"undefined"};function r(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"introduction",children:["Introduction",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#introduction",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["The Sequence Unreal Embedded Wallet SDK provides full Sequence ",e.jsx(n.a,{href:"/solutions/wallets/embedded-wallet/overview",children:"Embedded Wallet"})," and ",e.jsx(n.a,{href:"/api/indexer/overview",children:"Indexer"})," integration for games built on the Unreal Framework."]}),` `,e.jsxs(n.p,{children:["This SDK follows ",e.jsx(n.a,{href:"https://semver.org/",children:"Semantic Versioning"})," (",e.jsx(n.code,{children:"major.minor.patch"}),"). While we're still in ",e.jsx(n.code,{children:"0.x.y"})," builds, API breaking changes can be made at any time. After ",e.jsx(n.code,{children:"1.0.0"}),", breaking changes will always cause a ",e.jsx(n.code,{children:"major"})," version increment, non-breaking new features will cause a ",e.jsx(n.code,{children:"minor"})," version increment, and bugfixes will cause a ",e.jsx(n.code,{children:"patch"})," version increment."]}),` `,e.jsxs(n.p,{children:["Sequence Unreal SDK is only available as a private beta at the moment. To get access, get in touch with ",e.jsx(n.a,{href:"https://sequence.xyz/contact",children:"Sequence BD Team"}),"."]}),` diff --git a/assets/overview-BUH6NkdU.js b/assets/overview-DpWGOv1k.js similarity index 94% rename from assets/overview-BUH6NkdU.js rename to assets/overview-DpWGOv1k.js index 9366acb44e..db76f5e9d3 100644 --- a/assets/overview-BUH6NkdU.js +++ b/assets/overview-DpWGOv1k.js @@ -1,5 +1,5 @@ -import{d as s,j as e}from"./index-BG6_g6N7.js";const d={title:"Sequence Embedded Wallet",description:"undefined"};function t(a){const n={a:"a",aside:"aside",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",...s(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequence-embedded-wallet",children:["Sequence Embedded Wallet",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-embedded-wallet",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` -`,e.jsxs(n.p,{children:["Sequence Embedded Wallet enables the creation, management and usage of fully functional EVM compatible wallets that can be easily integrated into your game or experience through our various SDKs such as ",e.jsx(n.a,{href:"/solutions/wallets/embedded-wallet/quickstart",children:"TypeScript"}),", ",e.jsx(n.a,{href:"/sdk/unity/overview",children:"Unity"})," and ",e.jsx(n.a,{href:"/sdk/unreal/overview",children:"Unreal"})]}),` +import{d as s,j as e}from"./index-XAh3cByi.js";const d={title:"Sequence Embedded Wallet",description:"undefined"};function t(a){const n={a:"a",aside:"aside",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",...s(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequence-embedded-wallet",children:["Sequence Embedded Wallet",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-embedded-wallet",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +`,e.jsxs(n.p,{children:["Sequence Embedded Wallet enables the creation, management and usage of fully functional EVM compatible wallets that can be easily integrated into your game or experience through our various SDKs such as ",e.jsx(n.a,{href:"/solutions/wallets/embedded-wallet/quickstart",children:"TypeScript"}),", ",e.jsx(n.a,{href:"/sdk/unity/overview",children:"Unity"})," and ",e.jsx(n.a,{href:"/sdk/unreal/overview",children:"Unreal"}),"."]}),` `,e.jsx(n.p,{children:"These headless wallets can be created on-demand for each user and allow you to integrate an application with an Ethereum compatible blockchain, while using familiar constructions like RPC APIs. Additionally, no necessary pop-up modals, user-facing confirmations, and other distractions so you can provide a truly native and seamless gaming experience."}),` `,e.jsxs(n.p,{children:["Sequence Embedded Wallet offers real non-custodial wallets and the system guarantees that each created wallet can only be accessed with the consent of the owner of the wallet. This is made possible by utilizing the power of ",e.jsx(n.a,{href:"https://aws.amazon.com/ec2/nitro/nitro-enclaves/",children:"AWS Nitro Enclaves"})," to handle sensitive data in a secure environment that nobody can access - not even Sequence."]}),` `,e.jsxs(n.h2,{id:"try-a-demo",children:["Try a Demo",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#try-a-demo",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/overview-DWxXbuA7.js b/assets/overview-DvG5SP2k.js similarity index 95% rename from assets/overview-DWxXbuA7.js rename to assets/overview-DvG5SP2k.js index b6387bccca..8b788145e4 100644 --- a/assets/overview-DWxXbuA7.js +++ b/assets/overview-DvG5SP2k.js @@ -1,4 +1,4 @@ -import{d as o,j as e}from"./index-BG6_g6N7.js";import{C as r,a as i}from"./CardGrid-Dee1eEnV.js";const c={title:"Sequence Builder",description:"undefined"};function s(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...o(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-builder",children:["Sequence Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as o,j as e}from"./index-XAh3cByi.js";import{C as r,a as i}from"./CardGrid-Bkj_ERUR.js";const c={title:"Sequence Builder",description:"undefined"};function s(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...o(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"sequence-builder",children:["Sequence Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,` `,e.jsxs(t.p,{children:[e.jsx(t.a,{href:"https://sequence.build/",children:"Builder"})," is Sequence's all-inclusive, no-code tool for managing your projects, API keys, as well as contract and marketplace deployments. It also provides user access management so multiple people in your team can easily work on the same project. In addition to these powerful features, Builder also provides easy to use interfaces for managing sponsored wallets with your gas tank, and integration tools for SequenceKit, Node Gateway and Indexer."]}),` `,e.jsx(t.p,{children:"To learn more about how to leverage the powerful features of the Builder, follow the guides below."}),` diff --git a/assets/overview-Liyqgcat.js b/assets/overview-DwER1j4Y.js similarity index 95% rename from assets/overview-Liyqgcat.js rename to assets/overview-DwER1j4Y.js index 5664c48ac3..3a2e71b5f5 100644 --- a/assets/overview-Liyqgcat.js +++ b/assets/overview-DwER1j4Y.js @@ -1,3 +1,3 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const o={title:"Marketplace API",description:"undefined"};function n(t){const a={a:"a",aside:"aside",div:"div",h1:"h1",header:"header",p:"p",...r(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"marketplace-api",children:["Marketplace API",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#marketplace-api",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const o={title:"Marketplace API",description:"undefined"};function n(t){const a={a:"a",aside:"aside",div:"div",h1:"h1",header:"header",p:"p",...r(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"marketplace-api",children:["Marketplace API",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#marketplace-api",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(a.aside,{"data-callout":"note",children:e.jsx(a.p,{children:e.jsx(a.a,{href:"https://0xsequence.redoc.ly/tag/marketplace",children:"Marketplace API documentation and testing"})})}),` `,e.jsxs(a.p,{children:["The Sequence Marketplace API service offers a simple and fast way to interact with sequence marketplace protocols. The API is designed to be easy to use and to have all the features you need to build a fully functional marketplace. Check out our various ",e.jsx(a.a,{href:"/api/marketplace/examples/orderbook-transactions",children:"examples"})," or our ",e.jsx(a.a,{href:"/guides/custom-marketplace",children:"custom marketplace guide"})," for an end to end walkthrough."]})]})}function c(t={}){const{wrapper:a}={...r(),...t.components};return a?e.jsx(a,{...t,children:e.jsx(n,{...t})}):n(t)}export{c as default,o as frontmatter}; diff --git a/assets/overview-C9MJKnib.js b/assets/overview-HTLbolaJ.js similarity index 99% rename from assets/overview-C9MJKnib.js rename to assets/overview-HTLbolaJ.js index 86d50b5520..91a45829f0 100644 --- a/assets/overview-C9MJKnib.js +++ b/assets/overview-HTLbolaJ.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-BG6_g6N7.js";const r=void 0;function n(i){const e={a:"a",code:"code",div:"div",h2:"h2",h4:"h4",p:"p",pre:"pre",span:"span",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"install",children:["Install",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#install",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` +import{d as l,j as s}from"./index-XAh3cByi.js";const r=void 0;function n(i){const e={a:"a",code:"code",div:"div",h2:"h2",h4:"h4",p:"p",pre:"pre",span:"span",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsxs(e.h2,{id:"install",children:["Install",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#install",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["Sequence.js is a modular web3 stack and smart wallet package for Ethereum chains. You can think of it similar to ethers.js, but tailored to the Sequence stack which streamlines common functions needed for blockchain-enabled game development. The sequence.js SDK is composed of several sub-packages combined into a single meta-package called ",s.jsx(e.code,{children:"0xsequence"}),`. To add the SDK to your project, add a dependency on 0xsequence to your package.json:`]}),` `,s.jsx(e.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsx(e.code,{children:s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"npm"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" install"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" 0xsequence"}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" ethers"})]})})}),` diff --git a/assets/overview-BOmdhlJZ.js b/assets/overview-y8tVh3Xz.js similarity index 98% rename from assets/overview-BOmdhlJZ.js rename to assets/overview-y8tVh3Xz.js index de1a4e25eb..7e4638cc28 100644 --- a/assets/overview-BOmdhlJZ.js +++ b/assets/overview-y8tVh3Xz.js @@ -1,4 +1,4 @@ -import{d as n,j as e}from"./index-BG6_g6N7.js";const s={title:"Marketplaces Overview",description:"undefined"};function r(a){const t={a:"a",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",strong:"strong",...n(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"marketplaces-overview",children:["Marketplaces Overview",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#marketplaces-overview",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as e}from"./index-XAh3cByi.js";const s={title:"Marketplaces Overview",description:"undefined"};function r(a){const t={a:"a",div:"div",h1:"h1",h3:"h3",header:"header",p:"p",strong:"strong",...n(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"marketplaces-overview",children:["Marketplaces Overview",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#marketplaces-overview",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(t.p,{children:["Sequence provides a variety of options for your marketplace and in-game store to accelerate your development, namely our ",e.jsx(t.strong,{children:"white-label marketplace"})," as well as our suite of ",e.jsx(t.strong,{children:"Marketplace APIs"}),"."]}),` `,e.jsxs(t.h3,{id:"what-are-the-differences-between-these-options",children:["What are the differences between these options?",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#what-are-the-differences-between-these-options",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.p,{children:[e.jsx(t.strong,{children:"White-Label Marketplace"}),`: diff --git a/assets/packaging-B6eIowig.js b/assets/packaging-LeiF0rZR.js similarity index 98% rename from assets/packaging-B6eIowig.js rename to assets/packaging-LeiF0rZR.js index 481b85cd0c..53b79c82e0 100644 --- a/assets/packaging-B6eIowig.js +++ b/assets/packaging-LeiF0rZR.js @@ -1,4 +1,4 @@ -import{d as o,j as e}from"./index-BG6_g6N7.js";const a={title:"Packaging",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",ul:"ul",...o(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"packaging",children:["Packaging",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#packaging",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as o,j as e}from"./index-XAh3cByi.js";const a={title:"Packaging",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",ul:"ul",...o(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"packaging",children:["Packaging",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#packaging",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"To set your system up for Packaging please refer to the following links:"}),` `,e.jsxs(n.ul,{children:[` `,e.jsx(n.li,{children:e.jsx(n.a,{href:"https://docs.unrealengine.com/5.0/en-US/packaging-unreal-engine-projects/",children:"Windows and macOS"})}),` diff --git a/assets/platforms-CHWtGtxA.js b/assets/platforms-KqDT2jgY.js similarity index 97% rename from assets/platforms-CHWtGtxA.js rename to assets/platforms-KqDT2jgY.js index 6cbc9941e9..cf1a1bf58f 100644 --- a/assets/platforms-CHWtGtxA.js +++ b/assets/platforms-KqDT2jgY.js @@ -1,4 +1,4 @@ -import{d as l,j as e}from"./index-BG6_g6N7.js";const a={title:"Platforms",description:"undefined"};function s(n){const t={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",img:"img",p:"p",...l(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"platforms",children:["Platforms",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#platforms",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as e}from"./index-XAh3cByi.js";const a={title:"Platforms",description:"undefined"};function s(n){const t={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",img:"img",p:"p",...l(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"platforms",children:["Platforms",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#platforms",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(t.h2,{id:"web-wallet",children:["Web Wallet",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#web-wallet",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.p,{children:["Sequence works beautifully on all modern Web Browsers! Try it at ",e.jsx(t.a,{href:"https://sequence.app",children:"https://sequence.app"})," from any computer, phone or tablet."]}),` `,e.jsxs(t.p,{children:["See ",e.jsx(t.a,{href:"/solutions/wallets/universal-wallet/quickstart",children:"Build With Sequence"})," to get started."]}),` diff --git a/assets/project-management-BedU01yT.js b/assets/project-management-N3iaYEL6.js similarity index 95% rename from assets/project-management-BedU01yT.js rename to assets/project-management-N3iaYEL6.js index 8e8a38cf1d..2e9d8a25c4 100644 --- a/assets/project-management-BedU01yT.js +++ b/assets/project-management-N3iaYEL6.js @@ -1,4 +1,4 @@ -import{d as o,j as e}from"./index-BG6_g6N7.js";import{V as a}from"./Video-CiIVMpgC.js";const d={title:"Project Management",description:"undefined"};function n(r){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...o(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"project-management",children:["Project Management",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#project-management",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as o,j as e}from"./index-XAh3cByi.js";import{V as a}from"./Video--Gq6B73C.js";const d={title:"Project Management",description:"undefined"};function n(r){const t={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...o(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"project-management",children:["Project Management",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#project-management",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(t.p,{children:["Creation of projects is seamless in just several clicks. This process requires no KYC, only that users comply with Global ",e.jsx(t.a,{href:"https://support.sequence.xyz/en/article/sequence-list-of-restricted-regions-1eked2s/",children:"regulations and policies"}),", and an agreement to the platforms' terms of service."]}),` `,e.jsxs(t.h5,{id:"project-name",children:["Project Name",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#project-name",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.p,{children:["Choose a ",e.jsx(t.code,{children:"project name"})," - something playful, serious, or just something unique to distinguish your new project amongst the other projects linked to your wallet."]}),` diff --git a/assets/project-settings-BEPVGB9H.js b/assets/project-settings-CpIzeA-Q.js similarity index 99% rename from assets/project-settings-BEPVGB9H.js rename to assets/project-settings-CpIzeA-Q.js index bcded45193..aa09159edf 100644 --- a/assets/project-settings-BEPVGB9H.js +++ b/assets/project-settings-CpIzeA-Q.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-BG6_g6N7.js";import{V as r}from"./Video-CiIVMpgC.js";const a={title:"Settings in Builder",description:"undefined"};function n(t){const i={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"settings-in-builder",children:["Settings in Builder",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#settings-in-builder",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-XAh3cByi.js";import{V as r}from"./Video--Gq6B73C.js";const a={title:"Settings in Builder",description:"undefined"};function n(t){const i={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",header:"header",img:"img",li:"li",ol:"ol",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(i.header,{children:e.jsxs(i.h1,{id:"settings-in-builder",children:["Settings in Builder",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#settings-in-builder",children:e.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(i.h2,{id:"settings-options",children:["Settings Options",e.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#settings-options",children:e.jsx(i.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(i.p,{children:"There are various actions available for your project in Settings of Sequence Builder."}),` `,e.jsx(i.p,{children:"The Settings section in Sequence Builder is categorized into six sections:"}),` diff --git a/assets/quickstart-wN0C4fyk.js b/assets/quickstart-1dbVxPAa.js similarity index 99% rename from assets/quickstart-wN0C4fyk.js rename to assets/quickstart-1dbVxPAa.js index b70ce5e727..5c15df6172 100644 --- a/assets/quickstart-wN0C4fyk.js +++ b/assets/quickstart-1dbVxPAa.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const l={title:"Quickstart",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"quickstart",children:["Quickstart",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const l={title:"Quickstart",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"quickstart",children:["Quickstart",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:"You can quickly try out a Sequence Embedded Wallet integration before doing a complete configuration specific to your application. There are several ways to test out the features:"}),` `,e.jsxs(s.ul,{children:[` `,e.jsxs(s.li,{children:["Try out ",e.jsx(s.a,{href:"https://waas-demo.sequence.xyz/",children:"Sequence WaaS demo"}),", showcasing a sample authentication and transaction flow leveraging Sequence Kit for web applications"]}),` diff --git a/assets/quickstart-Bl_DmpQ5.js b/assets/quickstart-B2yWkumm.js similarity index 99% rename from assets/quickstart-Bl_DmpQ5.js rename to assets/quickstart-B2yWkumm.js index 3126396e14..54518e8a38 100644 --- a/assets/quickstart-Bl_DmpQ5.js +++ b/assets/quickstart-B2yWkumm.js @@ -1,4 +1,4 @@ -import{d as a,j as s}from"./index-BG6_g6N7.js";const l={title:"Quickstart",description:"undefined"};function n(i){const e={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"quickstart",children:["Quickstart",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as s}from"./index-XAh3cByi.js";const l={title:"Quickstart",description:"undefined"};function n(i){const e={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"quickstart",children:["Quickstart",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h2,{id:"try-a-demo",children:["Try a Demo",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#try-a-demo",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.aside,{"data-callout":"info",children:s.jsxs(e.p,{children:["Try out the Universal Wallet leveraging SequenceKit at our ",s.jsx(e.a,{href:"https://0xsequence.github.io/kit/",children:"demo"})]})}),` `,s.jsxs(e.h2,{id:"template",children:["Template",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#template",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/quickstart-8ohN6OYL.js b/assets/quickstart-BvKzNEEx.js similarity index 98% rename from assets/quickstart-8ohN6OYL.js rename to assets/quickstart-BvKzNEEx.js index 193dbe00b9..706a8af85f 100644 --- a/assets/quickstart-8ohN6OYL.js +++ b/assets/quickstart-BvKzNEEx.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const l={title:"Quickstart",description:"undefined"};function n(a){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"quickstart",children:["Quickstart",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const l={title:"Quickstart",description:"undefined"};function n(a){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"quickstart",children:["Quickstart",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.h2,{id:"try-a-demo",children:["Try a Demo",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#try-a-demo",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(s.aside,{"data-callout":"info",children:e.jsxs(s.p,{children:["Check out our ",e.jsx(s.a,{href:"https://0xsequence-demos.github.io/aviator-custom-marketplace/",children:"demo"})," to see a custom marketplace in action."]})}),` `,e.jsxs(s.h2,{id:"template",children:["Template",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#template",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/rainbow-kit-6b9hKeGZ.js b/assets/rainbow-kit-CyvrPIna.js similarity index 99% rename from assets/rainbow-kit-6b9hKeGZ.js rename to assets/rainbow-kit-CyvrPIna.js index c489f3df1b..d3c0cbfbba 100644 --- a/assets/rainbow-kit-6b9hKeGZ.js +++ b/assets/rainbow-kit-CyvrPIna.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-BG6_g6N7.js";const l={sidebar_label:"Using RainbowKit",title:"Using RainbowKit",description:"undefined"};function n(i){const s={a:"a",br:"br",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-rainbowkit",children:["Using RainbowKit",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-rainbowkit",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-XAh3cByi.js";const l={sidebar_label:"Using RainbowKit",title:"Using RainbowKit",description:"undefined"};function n(i){const s={a:"a",br:"br",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-rainbowkit",children:["Using RainbowKit",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-rainbowkit",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:"The Sequence wallet can be added to RainbowKit through the connector."}),` `,e.jsxs(s.p,{children:[`:::tip Try it live :) Try `,e.jsx(s.a,{href:"https://0xsequence.github.io/demo-dapp-rainbowkit/",children:"a live Dapp example"})," using Sequence + Metamask + Rainbow + Wallet Connect with RainbowKit."]}),` diff --git a/assets/reactnative-CmcWYvVq.js b/assets/reactnative-CmcWYvVq.js deleted file mode 100644 index 04587697eb..0000000000 --- a/assets/reactnative-CmcWYvVq.js +++ /dev/null @@ -1 +0,0 @@ -import{d as r,j as n}from"./index-BG6_g6N7.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/reactnative-bRRaAnqq.js b/assets/reactnative-bRRaAnqq.js new file mode 100644 index 0000000000..02edfbd55e --- /dev/null +++ b/assets/reactnative-bRRaAnqq.js @@ -0,0 +1 @@ +import{d as r,j as n}from"./index-XAh3cByi.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/read-from-blockchain-CPlWtf_o.js b/assets/read-from-blockchain-DSRwD8AT.js similarity index 97% rename from assets/read-from-blockchain-CPlWtf_o.js rename to assets/read-from-blockchain-DSRwD8AT.js index be579b551f..d1b87ccf20 100644 --- a/assets/read-from-blockchain-CPlWtf_o.js +++ b/assets/read-from-blockchain-DSRwD8AT.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const c={title:"Read from Blockchain",description:"undefined"};function i(s){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"read-from-blockchain",children:["Read from Blockchain",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#read-from-blockchain",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const c={title:"Read from Blockchain",description:"undefined"};function i(s){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"read-from-blockchain",children:["Read from Blockchain",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#read-from-blockchain",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Reading from the blockchain is done using Unity-Native implementation of our ",e.jsx(n.a,{href:"/api/indexer/overview",children:"Sequence Indexer"}),"."]}),` `,e.jsxs(n.p,{children:["We recommend creating an instance of the ",e.jsxs(n.a,{href:"https://github.com/0xsequence/sequence-unity/blob/master/Assets/SequenceSDK/Indexer/ChainIndexer.cs",children:[e.jsx(n.code,{children:"ChainIndexer"})," class"]}),". This will expose you to all the functionality offered by the ",e.jsxs(n.a,{href:"https://github.com/0xsequence/sequence-unity/blob/master/Assets/SequenceSDK/Indexer/IIndexer.cs",children:[e.jsx(n.code,{children:"IIndexer"})," interface"]}),"."]}),` `,e.jsxs(n.div,{className:"code-group",children:[e.jsx(n.div,{"data-title":"C#",children:e.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0","data-title":"C#","data-lang":"shell",children:e.jsx(n.code,{children:e.jsxs(n.span,{className:"line",children:[e.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"IIndexer"}),e.jsx(n.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" polygonIndexer"}),e.jsx(n.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" ="}),e.jsx(n.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" new"}),e.jsx(n.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" ChainIndexer"}),e.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"("}),e.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:"Chain.Polygon"}),e.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:");"})]})})})}),e.jsx(n.div,{children:e.jsxs(n.p,{children:[e.jsx(n.code,{children:"ChainIndexer"})," is essentially a wrapper of the ",e.jsxs(n.a,{href:"https://github.com/0xsequence/sequence-unity/blob/master/Assets/SequenceSDK/Indexer/Indexer.cs",children:[e.jsx(n.code,{children:"Indexer"})," static class"]})," which is fully documented here: ",e.jsx(n.a,{href:"https://docs.sequence.xyz/unity-sdk/indexer/guides",children:"https://docs.sequence.xyz/unity-sdk/indexer/guides"}),"."]})})]})]})}function a(s={}){const{wrapper:n}={...r(),...s.components};return n?e.jsx(n,{...s,children:e.jsx(i,{...s})}):i(s)}export{a as default,c as frontmatter}; diff --git a/assets/response-payloads-CETFlBt0.js b/assets/response-payloads-D-an3Jm8.js similarity index 99% rename from assets/response-payloads-CETFlBt0.js rename to assets/response-payloads-D-an3Jm8.js index 8f18cf6680..9b02374a96 100644 --- a/assets/response-payloads-CETFlBt0.js +++ b/assets/response-payloads-D-an3Jm8.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-BG6_g6N7.js";const a={title:"Response Payloads",description:"undefined"};function l(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"response-payloads",children:["Response Payloads",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#response-payloads",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-XAh3cByi.js";const a={title:"Response Payloads",description:"undefined"};function l(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"response-payloads",children:["Response Payloads",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#response-payloads",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"When interacting with the Sequence Embedded Wallet API, each intent payload will trigger a corresponding response payload. This could be either a successful response or a prompt for a different action."}),` `,s.jsxs(e.h2,{id:"general-response-structure",children:["General Response Structure",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#general-response-structure",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:"Regardless of the specific response type, all responses have a standard structure with the following fields:"}),` diff --git a/assets/rest-api-pqC53yKO.js b/assets/rest-api-BI_aWE-a.js similarity index 99% rename from assets/rest-api-pqC53yKO.js rename to assets/rest-api-BI_aWE-a.js index ddee88d761..30f3aa0fb5 100644 --- a/assets/rest-api-pqC53yKO.js +++ b/assets/rest-api-BI_aWE-a.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const t={title:"Metadata REST API Reference & Usage",description:"undefined"};function n(a){const s={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"metadata-rest-api-reference--usage",children:["Metadata REST API Reference & Usage",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata-rest-api-reference--usage",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const t={title:"Metadata REST API Reference & Usage",description:"undefined"};function n(a){const s={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"metadata-rest-api-reference--usage",children:["Metadata REST API Reference & Usage",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#metadata-rest-api-reference--usage",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:`The Sequence Metadata API service offers a simple and fast API to query token & NFT metadata for Ethereum-compatible chains.`}),` `,e.jsxs(s.p,{children:[`Quite simply, the Metadata API allows you to query the token metadata of any ERC20, ERC721 or ERC1155 diff --git a/assets/restricted-regions-DMToWn06.js b/assets/restricted-regions-CYv9rag1.js similarity index 98% rename from assets/restricted-regions-DMToWn06.js rename to assets/restricted-regions-CYv9rag1.js index 852141c570..06be107be7 100644 --- a/assets/restricted-regions-DMToWn06.js +++ b/assets/restricted-regions-CYv9rag1.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-BG6_g6N7.js";const t={title:"Sequence list of Restricted Regions",description:"undefined"};function l(i){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...s(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequence-list-of-restricted-regions",children:["Sequence list of Restricted Regions",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-list-of-restricted-regions",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-XAh3cByi.js";const t={title:"Sequence list of Restricted Regions",description:"undefined"};function l(i){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",ul:"ul",...s(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequence-list-of-restricted-regions",children:["Sequence list of Restricted Regions",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-list-of-restricted-regions",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"In order to comply with regulations and policies mandated by Canada, USA and other global jurisdictions, Sequence will not be fully available in the following regions. Please be aware that external third-party money service providers that can help you on-ramp with crypto, at their own discretion, may deny funding to certain geographical locations"}),` `,e.jsx(n.p,{children:"At this time, Limited Access regions only refer to some states within the United States of America. Sequence can be accessed from these regions, however, the Skyweaver Market feature will not be available in the following US states:"}),` `,e.jsxs(n.h2,{id:"us-states-with-limited-access-to-sequence",children:["US states with limited access to Sequence",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#us-states-with-limited-access-to-sequence",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/send-batch-transactions-DcC06Qp6.js b/assets/send-batch-transactions-B38hFBSw.js similarity index 99% rename from assets/send-batch-transactions-DcC06Qp6.js rename to assets/send-batch-transactions-B38hFBSw.js index dfcff8d87b..90aebd61cf 100644 --- a/assets/send-batch-transactions-DcC06Qp6.js +++ b/assets/send-batch-transactions-B38hFBSw.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-BG6_g6N7.js";const l={title:"Sending a Batch of Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-a-batch-of-transactions",children:["Sending a Batch of Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-a-batch-of-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-XAh3cByi.js";const l={title:"Sending a Batch of Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-a-batch-of-transactions",children:["Sending a Batch of Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-a-batch-of-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:"Likewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:"}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" transaction1"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` `,s.jsx(n.span,{className:"line",children:s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" to: recipient1Address,"})}),` diff --git a/assets/send-batch-transactions-DpZcOhd6.js b/assets/send-batch-transactions-OQwn86ac.js similarity index 99% rename from assets/send-batch-transactions-DpZcOhd6.js rename to assets/send-batch-transactions-OQwn86ac.js index dfcff8d87b..90aebd61cf 100644 --- a/assets/send-batch-transactions-DpZcOhd6.js +++ b/assets/send-batch-transactions-OQwn86ac.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-BG6_g6N7.js";const l={title:"Sending a Batch of Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-a-batch-of-transactions",children:["Sending a Batch of Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-a-batch-of-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-XAh3cByi.js";const l={title:"Sending a Batch of Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-a-batch-of-transactions",children:["Sending a Batch of Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-a-batch-of-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:"Likewise, bundling multiple transactions to be sent in a single native transaction is equally as easy:"}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" transaction1"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` `,s.jsx(n.span,{className:"line",children:s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" to: recipient1Address,"})}),` diff --git a/assets/send-erc1155-5QlLUvZE.js b/assets/send-erc1155-DNSlJbT7.js similarity index 99% rename from assets/send-erc1155-5QlLUvZE.js rename to assets/send-erc1155-DNSlJbT7.js index a28bd0022f..79cc4dbe36 100644 --- a/assets/send-erc1155-5QlLUvZE.js +++ b/assets/send-erc1155-DNSlJbT7.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-BG6_g6N7.js";const r={title:"Sending ERC-1155 (Collectible) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-1155-collectible-tokens",children:["Sending ERC-1155 (Collectible) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-1155-collectible-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-XAh3cByi.js";const r={title:"Sending ERC-1155 (Collectible) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-1155-collectible-tokens",children:["Sending ERC-1155 (Collectible) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-1155-collectible-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:`Sending an ERC-1155 collectible is similar to sending an ERC-20 token. The only notable difference is in the contract standard itself:`}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" erc1155Interface"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` diff --git a/assets/send-erc1155-BXzP7rSa.js b/assets/send-erc1155-DS0K_6oD.js similarity index 99% rename from assets/send-erc1155-BXzP7rSa.js rename to assets/send-erc1155-DS0K_6oD.js index a28bd0022f..79cc4dbe36 100644 --- a/assets/send-erc1155-BXzP7rSa.js +++ b/assets/send-erc1155-DS0K_6oD.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-BG6_g6N7.js";const r={title:"Sending ERC-1155 (Collectible) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-1155-collectible-tokens",children:["Sending ERC-1155 (Collectible) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-1155-collectible-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-XAh3cByi.js";const r={title:"Sending ERC-1155 (Collectible) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-1155-collectible-tokens",children:["Sending ERC-1155 (Collectible) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-1155-collectible-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:`Sending an ERC-1155 collectible is similar to sending an ERC-20 token. The only notable difference is in the contract standard itself:`}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" erc1155Interface"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` diff --git a/assets/send-erc20-CbDF6eXa.js b/assets/send-erc20-DmBfTjby.js similarity index 99% rename from assets/send-erc20-CbDF6eXa.js rename to assets/send-erc20-DmBfTjby.js index 4d9bf2235e..1bd670f554 100644 --- a/assets/send-erc20-CbDF6eXa.js +++ b/assets/send-erc20-DmBfTjby.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-BG6_g6N7.js";const r={title:"Sending ERC-20 Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-20-tokens",children:["Sending ERC-20 Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-20-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-XAh3cByi.js";const r={title:"Sending ERC-20 Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-20-tokens",children:["Sending ERC-20 Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-20-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:"You can ask the wallet to send a single ERC-20 token transfer:"}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" erc20Interface"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` `,s.jsx(n.span,{className:"line",children:s.jsx(n.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" 'function transfer(address _to, uint256 _value)'"})}),` diff --git a/assets/send-erc20-DUAYivtC.js b/assets/send-erc20-Po8Pymkk.js similarity index 99% rename from assets/send-erc20-DUAYivtC.js rename to assets/send-erc20-Po8Pymkk.js index 4d9bf2235e..1bd670f554 100644 --- a/assets/send-erc20-DUAYivtC.js +++ b/assets/send-erc20-Po8Pymkk.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-BG6_g6N7.js";const r={title:"Sending ERC-20 Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-20-tokens",children:["Sending ERC-20 Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-20-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-XAh3cByi.js";const r={title:"Sending ERC-20 Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-20-tokens",children:["Sending ERC-20 Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-20-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:"You can ask the wallet to send a single ERC-20 token transfer:"}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" erc20Interface"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` `,s.jsx(n.span,{className:"line",children:s.jsx(n.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:" 'function transfer(address _to, uint256 _value)'"})}),` diff --git a/assets/send-erc721-XUFXULfg.js b/assets/send-erc721-CDOc4LBC.js similarity index 99% rename from assets/send-erc721-XUFXULfg.js rename to assets/send-erc721-CDOc4LBC.js index c9526d6393..ea627eaf37 100644 --- a/assets/send-erc721-XUFXULfg.js +++ b/assets/send-erc721-CDOc4LBC.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-BG6_g6N7.js";const r={title:"Sending ERC-721 (NFT) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-721-nft-tokens",children:["Sending ERC-721 (NFT) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-721-nft-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-XAh3cByi.js";const r={title:"Sending ERC-721 (NFT) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-721-nft-tokens",children:["Sending ERC-721 (NFT) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-721-nft-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:`Sending an ERC-721 NFT is similar to sending an ERC-20 token. The only notable difference is in the contract standard itself:`}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" erc721Interface"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` diff --git a/assets/send-erc721-b4IvLCEY.js b/assets/send-erc721-Cx2qgeNv.js similarity index 99% rename from assets/send-erc721-b4IvLCEY.js rename to assets/send-erc721-Cx2qgeNv.js index c9526d6393..ea627eaf37 100644 --- a/assets/send-erc721-b4IvLCEY.js +++ b/assets/send-erc721-Cx2qgeNv.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-BG6_g6N7.js";const r={title:"Sending ERC-721 (NFT) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-721-nft-tokens",children:["Sending ERC-721 (NFT) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-721-nft-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-XAh3cByi.js";const r={title:"Sending ERC-721 (NFT) Tokens",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-erc-721-nft-tokens",children:["Sending ERC-721 (NFT) Tokens",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-erc-721-nft-tokens",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(n.p,{children:`Sending an ERC-721 NFT is similar to sending an ERC-20 token. The only notable difference is in the contract standard itself:`}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" erc721Interface"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" new"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ethers.utils."}),s.jsx(n.span,{style:{color:"#6F42C1","--shiki-dark":"#DCBDFB"},children:"Interface"}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:"(["})]}),` diff --git a/assets/send-transaction-BmGbocLX.js b/assets/send-transaction-DSTS1xZz.js similarity index 98% rename from assets/send-transaction-BmGbocLX.js rename to assets/send-transaction-DSTS1xZz.js index 3bbf339b72..44fb6131be 100644 --- a/assets/send-transaction-BmGbocLX.js +++ b/assets/send-transaction-DSTS1xZz.js @@ -1,4 +1,4 @@ -import{d as a,j as s}from"./index-BG6_g6N7.js";const l={title:"Sending Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...a(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-transactions",children:["Sending Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as s}from"./index-XAh3cByi.js";const l={title:"Sending Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...a(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-transactions",children:["Sending Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(n.p,{children:[`Signing a transaction will only retrieve the signed payload. If you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from `,s.jsx(n.code,{children:"signTransactions"})," to ",s.jsx(n.code,{children:"sendTransaction"}),"):"]}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" transaction"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` diff --git a/assets/send-transaction-zvyG1lNM.js b/assets/send-transaction-fSumlfko.js similarity index 98% rename from assets/send-transaction-zvyG1lNM.js rename to assets/send-transaction-fSumlfko.js index 3bbf339b72..44fb6131be 100644 --- a/assets/send-transaction-zvyG1lNM.js +++ b/assets/send-transaction-fSumlfko.js @@ -1,4 +1,4 @@ -import{d as a,j as s}from"./index-BG6_g6N7.js";const l={title:"Sending Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...a(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-transactions",children:["Sending Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as s}from"./index-XAh3cByi.js";const l={title:"Sending Transactions",description:"undefined"};function i(e){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...a(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(n.header,{children:s.jsxs(n.h1,{id:"sending-transactions",children:["Sending Transactions",s.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-transactions",children:s.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(n.p,{children:[`Signing a transaction will only retrieve the signed payload. If you want the wallet to actually dispatch the transaction to the network as well, that requires only a small modification to the previous example (note the change from `,s.jsx(n.code,{children:"signTransactions"})," to ",s.jsx(n.code,{children:"sendTransaction"}),"):"]}),` `,s.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(n.code,{children:[s.jsxs(n.span,{className:"line",children:[s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(n.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" transaction"}),s.jsx(n.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(n.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` diff --git a/assets/send-transactions-S9TI-AiN.js b/assets/send-transactions-CSpBsPvC.js similarity index 99% rename from assets/send-transactions-S9TI-AiN.js rename to assets/send-transactions-CSpBsPvC.js index 7e3220ad6f..cd0e6aaa95 100644 --- a/assets/send-transactions-S9TI-AiN.js +++ b/assets/send-transactions-CSpBsPvC.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-BG6_g6N7.js";const r=void 0;function n(e){const i={a:"a",code:"code",div:"div",h2:"h2",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsxs(i.h2,{id:"sending-transactions",children:["Sending transactions",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-transactions",children:s.jsx(i.div,{"data-autolink-icon":!0})})]}),` +import{d as l,j as s}from"./index-XAh3cByi.js";const r=void 0;function n(e){const i={a:"a",code:"code",div:"div",h2:"h2",pre:"pre",span:"span",...l(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsxs(i.h2,{id:"sending-transactions",children:["Sending transactions",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sending-transactions",children:s.jsx(i.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(i.div,{className:"code-group",children:[s.jsx(i.div,{"data-title":"TypeScript",children:s.jsx(i.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0","data-title":"TypeScript","data-lang":"typescript",children:s.jsxs(i.code,{children:[s.jsxs(i.span,{className:"line",children:[s.jsx(i.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"const"}),s.jsx(i.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" transactions"}),s.jsx(i.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(i.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" ["})]}),` `,s.jsx(i.span,{className:"line",children:s.jsx(i.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})}),` `,s.jsxs(i.span,{className:"line",children:[s.jsx(i.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" to: "}),s.jsx(i.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"'0x468E8e29F6cfb0F6b7ff10ec6A1AB516ec849c04'"}),s.jsx(i.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` diff --git a/assets/sequence-kit-BnjjrzMO.js b/assets/sequence-kit-BOtrrYpD.js similarity index 97% rename from assets/sequence-kit-BnjjrzMO.js rename to assets/sequence-kit-BOtrrYpD.js index 902160c839..f667f4ca6a 100644 --- a/assets/sequence-kit-BnjjrzMO.js +++ b/assets/sequence-kit-BOtrrYpD.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-BG6_g6N7.js";const o={slug:"overview",title:"Sequence Kit Documentation",description:"undefined"};function i(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-XAh3cByi.js";const o={slug:"overview",title:"Sequence Kit Documentation",description:"undefined"};function i(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular ",e.jsx(n.a,{href:"https://wagmi.sh/",children:"wagmi"})," library, unlock a realm of possibilities in the world of web3."]}),` `,e.jsxs(n.h2,{id:"key-features",children:["Key Features",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#key-features",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.ul,{children:[` diff --git a/assets/sequence-kit-DuUPFsg3.js b/assets/sequence-kit-CVI04nXa.js similarity index 97% rename from assets/sequence-kit-DuUPFsg3.js rename to assets/sequence-kit-CVI04nXa.js index 902160c839..f667f4ca6a 100644 --- a/assets/sequence-kit-DuUPFsg3.js +++ b/assets/sequence-kit-CVI04nXa.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-BG6_g6N7.js";const o={slug:"overview",title:"Sequence Kit Documentation",description:"undefined"};function i(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-XAh3cByi.js";const o={slug:"overview",title:"Sequence Kit Documentation",description:"undefined"};function i(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",strong:"strong",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:["Sequence Kit: Seamlessly Integrate Web3 Wallets into Your Applications",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sequence-kit-seamlessly-integrate-web3-wallets-into-your-applications",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Sequence Kit 🧰 is the ultimate toolkit for effortlessly integrating web3 wallets into your applications, providing your users with a smooth and secure onboarding experience. With our robust tools built on the popular ",e.jsx(n.a,{href:"https://wagmi.sh/",children:"wagmi"})," library, unlock a realm of possibilities in the world of web3."]}),` `,e.jsxs(n.h2,{id:"key-features",children:["Key Features",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#key-features",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(n.ul,{children:[` diff --git a/assets/sequence-kit-CmcWYvVq.js b/assets/sequence-kit-CmcWYvVq.js deleted file mode 100644 index 04587697eb..0000000000 --- a/assets/sequence-kit-CmcWYvVq.js +++ /dev/null @@ -1 +0,0 @@ -import{d as r,j as n}from"./index-BG6_g6N7.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/sequence-kit-bRRaAnqq.js b/assets/sequence-kit-bRRaAnqq.js new file mode 100644 index 0000000000..02edfbd55e --- /dev/null +++ b/assets/sequence-kit-bRRaAnqq.js @@ -0,0 +1 @@ +import{d as r,j as n}from"./index-XAh3cByi.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/session-keys-C8SkETx6.js b/assets/session-keys-BgNhPm9c.js similarity index 99% rename from assets/session-keys-C8SkETx6.js rename to assets/session-keys-BgNhPm9c.js index 62d8afab90..f559f9c1c7 100644 --- a/assets/session-keys-C8SkETx6.js +++ b/assets/session-keys-BgNhPm9c.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-BG6_g6N7.js";const a={title:"No-Wallet-Confirmation Signatures",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...r(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"no-wallet-confirmation-signatures",children:["No-Wallet-Confirmation Signatures",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#no-wallet-confirmation-signatures",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-XAh3cByi.js";const a={title:"No-Wallet-Confirmation Signatures",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...r(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"no-wallet-confirmation-signatures",children:["No-Wallet-Confirmation Signatures",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#no-wallet-confirmation-signatures",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["It is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using ",s.jsx(e.em,{children:"session keys"}),", or ephemeral keys."]}),` `,s.jsx(e.header,{children:s.jsxs(e.h1,{id:"session-keys",children:["Session Keys",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#session-keys",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Session keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet."}),` diff --git a/assets/session-keys-hgo25RMV.js b/assets/session-keys-DBkmJwFz.js similarity index 99% rename from assets/session-keys-hgo25RMV.js rename to assets/session-keys-DBkmJwFz.js index 62d8afab90..f559f9c1c7 100644 --- a/assets/session-keys-hgo25RMV.js +++ b/assets/session-keys-DBkmJwFz.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-BG6_g6N7.js";const a={title:"No-Wallet-Confirmation Signatures",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...r(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"no-wallet-confirmation-signatures",children:["No-Wallet-Confirmation Signatures",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#no-wallet-confirmation-signatures",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-XAh3cByi.js";const a={title:"No-Wallet-Confirmation Signatures",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...r(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"no-wallet-confirmation-signatures",children:["No-Wallet-Confirmation Signatures",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#no-wallet-confirmation-signatures",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["It is possible to build an application where users sign messages without requiring a confirmation in their Sequence wallet every time. This is possible using ",s.jsx(e.em,{children:"session keys"}),", or ephemeral keys."]}),` `,s.jsx(e.header,{children:s.jsxs(e.h1,{id:"session-keys",children:["Session Keys",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#session-keys",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Session keys are ephemeral private keys that can be generated and stored client-side, typically in a user's local storage. They provide a convenient and secure way for users to authorize specific actions in a decentralized application without requiring them to confirm each action through their primary wallet."}),` diff --git a/assets/setup-CgbuV_IG.js b/assets/setup-Clkkkxmz.js similarity index 97% rename from assets/setup-CgbuV_IG.js rename to assets/setup-Clkkkxmz.js index f4bf87f181..fd3ee93af2 100644 --- a/assets/setup-CgbuV_IG.js +++ b/assets/setup-Clkkkxmz.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-BG6_g6N7.js";const r={title:"Setup",description:"undefined"};function i(t){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",li:"li",ol:"ol",p:"p",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"setup",children:["Setup",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#setup",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-XAh3cByi.js";const r={title:"Setup",description:"undefined"};function i(t){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",li:"li",ol:"ol",p:"p",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"setup",children:["Setup",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#setup",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.ol,{children:[` `,e.jsxs(n.li,{children:[` `,e.jsxs(n.p,{children:["Navigate to the Resources folder imported via the ",e.jsx(n.code,{children:"Setup"})," sample and locate the ",e.jsx(n.code,{children:"SequenceConfig"})," ScriptableObject"]}),` diff --git a/assets/setup-KITvMpFu.js b/assets/setup-DLZnlf8a.js similarity index 97% rename from assets/setup-KITvMpFu.js rename to assets/setup-DLZnlf8a.js index b5077bbc53..3fb0517711 100644 --- a/assets/setup-KITvMpFu.js +++ b/assets/setup-DLZnlf8a.js @@ -1,4 +1,4 @@ -import{d as o,j as e}from"./index-BG6_g6N7.js";const r={title:"Setup",description:"undefined"};function i(t){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",li:"li",ol:"ol",p:"p",...o(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"setup",children:["Setup",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#setup",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as o,j as e}from"./index-XAh3cByi.js";const r={title:"Setup",description:"undefined"};function i(t){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",li:"li",ol:"ol",p:"p",...o(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"setup",children:["Setup",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#setup",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.ol,{children:[` `,e.jsxs(n.li,{children:[` `,e.jsxs(n.p,{children:["Once you have the the ",e.jsx(n.code,{children:"SequencePlugin"})," folder, you'll need to go to your project directory and create a ",e.jsx(n.code,{children:"Plugins"})," folder in it, then copy over the ",e.jsx(n.code,{children:"SequencePlugin"})," folder into the ",e.jsx(n.code,{children:"Plugins"})," folder. If a ",e.jsx(n.code,{children:"Plugins"})," folder already exists just copy the ",e.jsx(n.code,{children:"SequencePlugin"})," folder into it."]}),` diff --git a/assets/sign-message-D9pzRJyv.js b/assets/sign-message-CnPe3YyQ.js similarity index 99% rename from assets/sign-message-D9pzRJyv.js rename to assets/sign-message-CnPe3YyQ.js index 6b46425059..0484b3b934 100644 --- a/assets/sign-message-D9pzRJyv.js +++ b/assets/sign-message-CnPe3YyQ.js @@ -1,4 +1,4 @@ -import{d as n,j as s,e as a}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c={title:"Signing & Verifying Messages",description:"undefined"};function l(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"signing--verifying-messages",children:["Signing & Verifying Messages",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#signing--verifying-messages",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s,e as a}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c={title:"Signing & Verifying Messages",description:"undefined"};function l(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"signing--verifying-messages",children:["Signing & Verifying Messages",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#signing--verifying-messages",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h2,{id:"signing-messages",children:["Signing Messages",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#signing-messages",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:"Sequence wallets are able to sign arbitrary messages."}),` `,s.jsx(e.strong,{children:"To request a user's signature of a simple message:"}),` diff --git a/assets/sign-message-DJ6UFovk.js b/assets/sign-message-jXkjk3js.js similarity index 99% rename from assets/sign-message-DJ6UFovk.js rename to assets/sign-message-jXkjk3js.js index 4158a8c56f..3b1603075d 100644 --- a/assets/sign-message-DJ6UFovk.js +++ b/assets/sign-message-jXkjk3js.js @@ -1,4 +1,4 @@ -import{d as n,j as s,e as a}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c={title:"Signing & Verifying Messages",description:"undefined"};function l(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"signing--verifying-messages",children:["Signing & Verifying Messages",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#signing--verifying-messages",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s,e as a}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const c={title:"Signing & Verifying Messages",description:"undefined"};function l(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"signing--verifying-messages",children:["Signing & Verifying Messages",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#signing--verifying-messages",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h2,{id:"signing-messages",children:["Signing Messages",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#signing-messages",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:"Sequence wallets are able to sign arbitrary messages."}),` `,s.jsx(e.strong,{children:"To request a user's signature of a simple message:"}),` diff --git a/assets/sign-messages-CE-Wb7OK.js b/assets/sign-messages-DMd5lgMk.js similarity index 97% rename from assets/sign-messages-CE-Wb7OK.js rename to assets/sign-messages-DMd5lgMk.js index c06b50a066..0e6b6f5569 100644 --- a/assets/sign-messages-CE-Wb7OK.js +++ b/assets/sign-messages-DMd5lgMk.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const l={title:"Sign Messages",description:"undefined"};function a(n){const s={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"sign-messages",children:["Sign Messages",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sign-messages",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const l={title:"Sign Messages",description:"undefined"};function a(n){const s={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"sign-messages",children:["Sign Messages",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#sign-messages",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.p,{children:["Signing a message is an ",e.jsx(s.a,{href:"https://medium.com/@sonusprocks/async-await-in-c-unity-explained-in-easy-words-571ebb6a9369",children:"asynchronous Task"}),". You can use ",e.jsx(s.code,{children:"await"})," when calling ",e.jsx(s.code,{children:"WaaSWallet.SignMessage"})," from within an async Task if you wish to obtain the ",e.jsx(s.code,{children:"SignMessageReturn"})," object directly. Or, you can take the recommended approach which is to setup a handler function for the ",e.jsx(s.code,{children:"WaaSWallet.OnSignMessageComplete"})," event and call the ",e.jsx(s.code,{children:"WaaSWallet.SignMessage"})," method from anywhere (without await). For example:"]}),` `,e.jsx(s.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:e.jsxs(s.code,{children:[e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:"public void OnSignMessageCompleteHandler(string signature) {"})}),` `,e.jsx(s.span,{className:"line",children:e.jsx(s.span,{children:" // Do something"})}),` diff --git a/assets/signature-encoding-DNayVe2a.js b/assets/signature-encoding-Do-fAxy8.js similarity index 99% rename from assets/signature-encoding-DNayVe2a.js rename to assets/signature-encoding-Do-fAxy8.js index 1842e42a2c..29edb92429 100644 --- a/assets/signature-encoding-DNayVe2a.js +++ b/assets/signature-encoding-Do-fAxy8.js @@ -1,4 +1,4 @@ -import{d as a,j as s}from"./index-BG6_g6N7.js";const r={title:"Signature Encoding",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"signature-encoding",children:["Signature Encoding",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#signature-encoding",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as s}from"./index-XAh3cByi.js";const r={title:"Signature Encoding",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"signature-encoding",children:["Signature Encoding",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#signature-encoding",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["Sequence Wallets support ",s.jsx(e.a,{href:"https://eips.ethereum.org/EIPS/eip-1271",children:"ERC-1271 Standard Contract Signature Verification"})," to allow signing of transactions and messages."]}),` `,s.jsxs(e.h2,{id:"erc-191-ethereum-signed-data",children:["ERC-191 Ethereum Signed Data",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#erc-191-ethereum-signed-data",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["Messages encoded with as ",s.jsx(e.a,{href:"https://eips.ethereum.org/EIPS/eip-191",children:"ERC-191 Ethereum Signed Data"})," are able to be created and signed as follows."]}),` diff --git a/assets/style-C52A2J_O.css b/assets/style-C52A2J_O.css new file mode 100644 index 0000000000..ca8a909992 --- /dev/null +++ b/assets/style-C52A2J_O.css @@ -0,0 +1 @@ +@layer vocs_preflight;:root{--vocs-color_white: rgba(255 255 255 / 100%);--vocs-color_black: rgba(0 0 0 / 100%);--vocs-color_background: rgba(255 255 255 / 100%);--vocs-color_background2: #f9f9f9;--vocs-color_background3: #f6f6f6;--vocs-color_background4: #f0f0f0;--vocs-color_background5: #e8e8e8;--vocs-color_backgroundAccent: #5b5bd6;--vocs-color_backgroundAccentHover: #5151cd;--vocs-color_backgroundAccentText: rgba(255 255 255 / 100%);--vocs-color_backgroundBlueTint: #008cff0b;--vocs-color_backgroundDark: #f9f9f9;--vocs-color_backgroundGreenTint: #00a32f0b;--vocs-color_backgroundGreenTint2: #00a43319;--vocs-color_backgroundIrisTint: #0000ff07;--vocs-color_backgroundRedTint: #ff000008;--vocs-color_backgroundRedTint2: #f3000d14;--vocs-color_backgroundYellowTint: #f4dd0016;--vocs-color_border: #ececec;--vocs-color_border2: #cecece;--vocs-color_borderAccent: #5753c6;--vocs-color_borderBlue: #009eff2a;--vocs-color_borderGreen: #019c393b;--vocs-color_borderIris: #dadcff;--vocs-color_borderRed: #ff000824;--vocs-color_borderYellow: #ffd5008f;--vocs-color_heading: #202020;--vocs-color_inverted: rgba(0 0 0 / 100%);--vocs-color_shadow: #0000000f;--vocs-color_shadow2: #00000006;--vocs-color_text: #4c4c4c;--vocs-color_text2: #646464;--vocs-color_text3: #838383;--vocs-color_text4: #bbbbbb;--vocs-color_textAccent: #5753c6;--vocs-color_textAccentHover: #272962;--vocs-color_textBlue: #0d74ce;--vocs-color_textBlueHover: #113264;--vocs-color_textGreen: #218358;--vocs-color_textGreenHover: #193b2d;--vocs-color_textIris: #5753c6;--vocs-color_textIrisHover: #272962;--vocs-color_textRed: #ce2c31;--vocs-color_textRedHover: #641723;--vocs-color_textYellow: #9e6c00;--vocs-color_textYellowHover: #473b1f;--vocs-color_title: #202020}:root.dark{--vocs-color_white: rgba(255 255 255 / 100%);--vocs-color_black: rgba(0 0 0 / 100%);--vocs-color_background: #232225;--vocs-color_background2: #2b292d;--vocs-color_background3: #2e2c31;--vocs-color_background4: #323035;--vocs-color_background5: #3c393f;--vocs-color_backgroundAccent: #5b5bd6;--vocs-color_backgroundAccentHover: #5753c6;--vocs-color_backgroundAccentText: rgba(255 255 255 / 100%);--vocs-color_backgroundBlueTint: #008ff519;--vocs-color_backgroundDark: #1e1d1f;--vocs-color_backgroundGreenTint: #00a43319;--vocs-color_backgroundGreenTint2: #00a83829;--vocs-color_backgroundIrisTint: #000bff19;--vocs-color_backgroundRedTint: #f3000d14;--vocs-color_backgroundRedTint2: #ff000824;--vocs-color_backgroundYellowTint: #f4dd0016;--vocs-color_border: #3c393f;--vocs-color_border2: #6f6d78;--vocs-color_borderAccent: #6e6ade;--vocs-color_borderBlue: #009eff2a;--vocs-color_borderGreen: #019c393b;--vocs-color_borderIris: #303374;--vocs-color_borderRed: #ff000824;--vocs-color_borderYellow: #f4dd0016;--vocs-color_heading: #e9e9ea;--vocs-color_inverted: rgba(255 255 255 / 100%);--vocs-color_shadow: #00000000;--vocs-color_shadow2: rgba(0, 0, 0, .05);--vocs-color_text: #cfcfcf;--vocs-color_text2: #bdbdbe;--vocs-color_text3: #a7a7a8;--vocs-color_text4: #656567;--vocs-color_textAccent: #b1a9ff;--vocs-color_textAccentHover: #6e6ade;--vocs-color_textBlue: #70b8ff;--vocs-color_textBlueHover: #3b9eff;--vocs-color_textGreen: #3dd68c;--vocs-color_textGreenHover: #33b074;--vocs-color_textIris: #b1a9ff;--vocs-color_textIrisHover: #6e6ade;--vocs-color_textRed: #ff9592;--vocs-color_textRedHover: #ec5d5e;--vocs-color_textYellow: #f5e147;--vocs-color_textYellowHover: #e2a336;--vocs-color_title: rgba(255 255 255 / 100%)}:root{--vocs-color_blockquoteBorder: var(--vocs-color_border);--vocs-color_blockquoteText: var(--vocs-color_text3);--vocs-color_dangerBackground: var(--vocs-color_backgroundRedTint);--vocs-color_dangerBorder: var(--vocs-color_borderRed);--vocs-color_dangerText: var(--vocs-color_textRed);--vocs-color_dangerTextHover: var(--vocs-color_textRedHover);--vocs-color_infoBackground: var(--vocs-color_backgroundBlueTint);--vocs-color_infoBorder: var(--vocs-color_borderBlue);--vocs-color_infoText: var(--vocs-color_textBlue);--vocs-color_infoTextHover: var(--vocs-color_textBlueHover);--vocs-color_noteBackground: var(--vocs-color_background2);--vocs-color_noteBorder: var(--vocs-color_border);--vocs-color_noteText: var(--vocs-color_text2);--vocs-color_successBackground: var(--vocs-color_backgroundGreenTint);--vocs-color_successBorder: var(--vocs-color_borderGreen);--vocs-color_successText: var(--vocs-color_textGreen);--vocs-color_successTextHover: var(--vocs-color_textGreenHover);--vocs-color_tipBackground: var(--vocs-color_backgroundIrisTint);--vocs-color_tipBorder: var(--vocs-color_borderIris);--vocs-color_tipText: var(--vocs-color_textIris);--vocs-color_tipTextHover: var(--vocs-color_textIrisHover);--vocs-color_warningBackground: var(--vocs-color_backgroundYellowTint);--vocs-color_warningBorder: var(--vocs-color_borderYellow);--vocs-color_warningText: var(--vocs-color_textYellow);--vocs-color_warningTextHover: var(--vocs-color_textYellowHover);--vocs-color_codeBlockBackground: var(--vocs-color_background2);--vocs-color_codeCharacterHighlightBackground: var(--vocs-color_background5);--vocs-color_codeHighlightBackground: var(--vocs-color_background4);--vocs-color_codeHighlightBorder: var(--vocs-color_border2);--vocs-color_codeInlineBackground: var(--vocs-color_background4);--vocs-color_codeInlineBorder: var(--vocs-color_border);--vocs-color_codeInlineText: var(--vocs-color_textAccent);--vocs-color_codeTitleBackground: var(--vocs-color_background4);--vocs-color_lineNumber: var(--vocs-color_text4);--vocs-color_hr: var(--vocs-color_border);--vocs-color_link: var(--vocs-color_textAccent);--vocs-color_linkHover: var(--vocs-color_textAccentHover);--vocs-color_searchHighlightBackground: var(--vocs-color_borderAccent);--vocs-color_searchHighlightText: var(--vocs-color_background);--vocs-color_tableBorder: var(--vocs-color_border);--vocs-color_tableHeaderBackground: var(--vocs-color_background2);--vocs-color_tableHeaderText: var(--vocs-color_text2);--vocs-borderRadius_0: 0;--vocs-borderRadius_2: 2px;--vocs-borderRadius_3: 3px;--vocs-borderRadius_4: 4px;--vocs-borderRadius_6: 6px;--vocs-borderRadius_8: 8px;--vocs-fontFamily_default: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--vocs-fontFamily_mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--vocs-fontSize_9: .5625rem;--vocs-fontSize_11: .6875rem;--vocs-fontSize_12: .75rem;--vocs-fontSize_13: .8125rem;--vocs-fontSize_14: .875rem;--vocs-fontSize_15: .9375rem;--vocs-fontSize_16: 1rem;--vocs-fontSize_18: 1.125rem;--vocs-fontSize_20: 1.25rem;--vocs-fontSize_24: 1.5rem;--vocs-fontSize_32: 2rem;--vocs-fontSize_64: 3rem;--vocs-fontSize_root: 16px;--vocs-fontSize_h1: var(--vocs-fontSize_32);--vocs-fontSize_h2: var(--vocs-fontSize_24);--vocs-fontSize_h3: var(--vocs-fontSize_20);--vocs-fontSize_h4: var(--vocs-fontSize_18);--vocs-fontSize_h5: var(--vocs-fontSize_16);--vocs-fontSize_h6: var(--vocs-fontSize_16);--vocs-fontSize_calloutCodeBlock: .8em;--vocs-fontSize_code: .875em;--vocs-fontSize_codeBlock: var(--vocs-fontSize_14);--vocs-fontSize_lineNumber: var(--vocs-fontSize_15);--vocs-fontSize_subtitle: var(--vocs-fontSize_20);--vocs-fontSize_th: var(--vocs-fontSize_14);--vocs-fontSize_td: var(--vocs-fontSize_14);--vocs-fontWeight_regular: 300;--vocs-fontWeight_medium: 400;--vocs-fontWeight_semibold: 500;--vocs-lineHeight_code: 1.75em;--vocs-lineHeight_heading: 1.5em;--vocs-lineHeight_listItem: 1.5em;--vocs-lineHeight_outlineItem: 1em;--vocs-lineHeight_paragraph: 1.75em;--vocs-lineHeight_sidebarItem: 1.375em;--vocs-space_0: 0px;--vocs-space_1: 1px;--vocs-space_2: .125rem;--vocs-space_3: .1875rem;--vocs-space_4: .25rem;--vocs-space_6: .375rem;--vocs-space_8: .5rem;--vocs-space_12: .75rem;--vocs-space_14: .875rem;--vocs-space_16: 1rem;--vocs-space_18: 1.125rem;--vocs-space_20: 1.25rem;--vocs-space_22: 1.375rem;--vocs-space_24: 1.5rem;--vocs-space_28: 1.75rem;--vocs-space_32: 2rem;--vocs-space_36: 2.25rem;--vocs-space_40: 2.5rem;--vocs-space_44: 2.75rem;--vocs-space_48: 3rem;--vocs-space_56: 3.5rem;--vocs-space_64: 4rem;--vocs-space_72: 4.5rem;--vocs-space_80: 5rem;--vocs-zIndex_backdrop: 69420;--vocs-zIndex_drawer: 69421;--vocs-zIndex_gutterRight: 11;--vocs-zIndex_gutterLeft: 14;--vocs-zIndex_gutterTop: 13;--vocs-zIndex_gutterTopCurtain: 12;--vocs-zIndex_popover: 69422;--vocs-zIndex_surface: 10;--vocs-content_horizontalPadding: var(--vocs-space_48);--vocs-content_verticalPadding: var(--vocs-space_32);--vocs-content_width: calc(70ch + (var(--vocs-content_horizontalPadding) * 2));--vocs-outline_width: 280px;--vocs-sidebar_horizontalPadding: var(--vocs-space_24);--vocs-sidebar_verticalPadding: var(--vocs-space_0);--vocs-sidebar_width: 300px;--vocs-topNav_height: 60px;--vocs-topNav_horizontalPadding: var(--vocs-content_horizontalPadding);--vocs-topNav_curtainHeight: 40px}@media screen and (max-width: 1080px){:root{--vocs-content_verticalPadding: var(--vocs-space_48);--vocs-content_horizontalPadding: var(--vocs-space_24);--vocs-sidebar_horizontalPadding: var(--vocs-space_16);--vocs-sidebar_verticalPadding: var(--vocs-space_16);--vocs-sidebar_width: 300px;--vocs-topNav_height: 48px}}@media screen and (max-width: 720px){:root{--vocs-content_horizontalPadding: var(--vocs-space_16);--vocs-content_verticalPadding: var(--vocs-space_32)}}.vocs_Banner{background-color:var(--vocs_Banner_bannerBackgroundColor, var(--vocs-color_backgroundAccent));border-bottom:1px solid var(--vocs_Banner_bannerBackgroundColor, var(--vocs-color_borderAccent));color:var(--vocs_Banner_bannerTextColor, var(--vocs-color_backgroundAccentText));height:var(--vocs_Banner_bannerHeight, 36px);position:fixed;top:0;width:100%;z-index:var(--vocs-zIndex_gutterTop)}.vocs_Banner_content{font-size:var(--vocs-fontSize_14);overflow-x:scroll;padding-left:var(--vocs-space_8);padding-right:var(--vocs-space_8);margin-right:var(--vocs-space_24);-ms-overflow-style:none;scrollbar-width:none;white-space:pre}.vocs_Banner_content::-webkit-scrollbar{display:none}.vocs_Banner_inner{align-items:center;display:flex;height:100%;justify-content:center;position:relative;width:100%}.vocs_Banner_closeButton{align-items:center;background-color:var(--vocs_Banner_bannerBackgroundColor, var(--vocs-color_backgroundAccent));display:flex;justify-content:center;height:100%;position:absolute;right:0;width:var(--vocs-space_24)}.vocs_Banner_content a{font-weight:400;text-underline-offset:2px;text-decoration:underline}@media screen and (max-width: 1080px){.vocs_Banner{position:initial}}.vocs_DocsLayout{--vocs_DocsLayout_leftGutterWidth: max(calc((100vw - var(--vocs-content_width)) / 2), var(--vocs-sidebar_width))}.vocs_DocsLayout_content{background-color:var(--vocs-color_background);margin-left:auto;margin-right:auto;max-width:var(--vocs-content_width);min-height:100vh}.vocs_DocsLayout_content_withSidebar{margin-left:var(--vocs_DocsLayout_leftGutterWidth);margin-right:unset}.vocs_DocsLayout_gutterLeft{background-color:var(--vocs-color_backgroundDark);justify-content:flex-end;display:flex;height:100vh;position:fixed;top:var(--vocs_Banner_bannerHeight, 0px);width:var(--vocs_DocsLayout_leftGutterWidth);z-index:var(--vocs-zIndex_gutterLeft)}.vocs_DocsLayout_gutterTop{align-items:center;background-color:color-mix(in srgb,var(--vocs-color_background) 98%,transparent);height:var(--vocs-topNav_height);width:100vw;z-index:var(--vocs-zIndex_gutterTop)}.vocs_DocsLayout_gutterTopCurtain{display:flex;height:var(--vocs-topNav_curtainHeight);width:100vw;z-index:var(--vocs-zIndex_gutterTopCurtain)}.vocs_DocsLayout_gutterTopCurtain_hidden{background:unset;display:none}.vocs_DocsLayout_gutterRight{display:flex;height:100vh;overflow-y:auto;padding:calc(var(--vocs-content_verticalPadding) + var(--vocs-topNav_height) + var(--vocs-space_8)) var(--vocs-space_24) 0 0;position:fixed;top:var(--vocs_Banner_bannerHeight, 0px);right:0;width:calc((100vw - var(--vocs-content_width)) / 2);z-index:var(--vocs-zIndex_gutterRight)}.vocs_DocsLayout_gutterRight::-webkit-scrollbar{display:none}.vocs_DocsLayout_gutterRight_withSidebar{width:calc(100vw - var(--vocs-content_width) - var(--vocs_DocsLayout_leftGutterWidth))}.vocs_DocsLayout_outlinePopover{display:none;overflow-y:auto;height:calc(100vh - var(--vocs-topNav_height) - var(--vocs-topNav_curtainHeight))}.vocs_DocsLayout_sidebar{padding:var(--vocs-space_0) var(--vocs-sidebar_horizontalPadding) var(--vocs-space_24) var(--vocs-sidebar_horizontalPadding)}.vocs_DocsLayout_sidebarDrawer{display:none}@media screen and (max-width: 720px){.vocs_DocsLayout_content{overflow-x:hidden}}@media screen and (min-width: 1081px){.vocs_DocsLayout_content_withTopNav{padding-top:calc(var(--vocs-topNav_height) + var(--vocs_Banner_bannerHeight, 0px))}.vocs_DocsLayout_gutterTop{padding-left:calc(var(--vocs_DocsLayout_leftGutterWidth) - var(--vocs-sidebar_width));padding-right:calc(var(--vocs_DocsLayout_leftGutterWidth) - var(--vocs-sidebar_width));position:fixed;top:var(--vocs_Banner_bannerHeight, 0px)}.vocs_DocsLayout_gutterTop_offsetLeftGutter{padding-left:var(--vocs_DocsLayout_leftGutterWidth)}.vocs_DocsLayout_gutterTopCurtain{position:fixed;top:calc(var(--vocs-topNav_height) + var(--vocs_Banner_bannerHeight, 0px))}.vocs_DocsLayout_gutterTopCurtain_withSidebar{margin-left:var(--vocs_DocsLayout_leftGutterWidth)}}@media screen and (max-width: 1080px){.vocs_DocsLayout_content{margin-left:auto;margin-right:auto}.vocs_DocsLayout_gutterLeft{display:none}.vocs_DocsLayout_gutterTop{position:initial}.vocs_DocsLayout_gutterTop_sticky,.vocs_DocsLayout_gutterTopCurtain{position:sticky;top:0}.vocs_DocsLayout_outlinePopover,.vocs_DocsLayout_sidebarDrawer{display:block}}@media screen and (max-width: 1280px){.vocs_DocsLayout_gutterRight{display:none}}@layer vocs_reset_reset;html,body,.vocs_DocsLayout{font-family:var(--vocs-fontFamily_default);font-feature-settings:"rlig" 1,"calt" 1;font-size:var(--vocs-fontSize_root)}button,select{text-transform:none;-webkit-appearance:button;-moz-appearance:button;appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{outline:auto}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none;-moz-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;-moz-appearance:button;appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1}input::placeholder,textarea::placeholder{opacity:1}button,[role=button]{cursor:pointer}:disabled{overflow:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}@layer vocs_reset_reset{*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid}*:focus-visible{outline:2px solid var(--vocs-color_borderAccent);outline-offset:2px;outline-style:dashed}html,body{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:inherit;margin:0;padding:0;border:0;text-rendering:optimizeLegibility}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit;text-wrap:balance}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--vocs-fontFamily_mono);font-size:var(--vocs-fontSize_root)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-color:inherit;border-collapse:collapse;text-indent:0}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}}.vocs_Tabs{background-color:var(--vocs-color_codeBlockBackground);border:1px solid var(--vocs-color_codeInlineBorder);border-radius:var(--vocs-borderRadius_4)}.vocs_Tabs_list{background-color:var(--vocs-color_codeTitleBackground);border-bottom:1px solid var(--vocs-color_border);border-top-left-radius:var(--vocs-borderRadius_4);border-top-right-radius:var(--vocs-borderRadius_4);display:flex;padding:var(--vocs-space_0) var(--vocs-space_14)}.vocs_Tabs_trigger{border-bottom:2px solid transparent;color:var(--vocs-color_text3);font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_medium);padding:var(--vocs-space_8) var(--vocs-space_8) var(--vocs-space_6) var(--vocs-space_8);transition:color .1s}.vocs_Tabs_trigger:hover{color:var(--vocs-color_text)}.vocs_Tabs_trigger[data-state=active]{border-bottom:2px solid var(--vocs-color_borderAccent);color:var(--vocs-color_text)}.vocs_Tabs_content{background-color:var(--vocs-color_codeBlockBackground)}.vocs_Tabs_content:not([data-shiki=true]){padding:var(--vocs-space_20) var(--vocs-space_22)}.vocs_Tabs pre{margin-bottom:var(--vocs-space_0)}@media screen and (max-width: 720px){.vocs_Tabs_list{border-radius:0;padding:var(--vocs-space_0) var(--vocs-space_8)}.vocs_Tabs_content:not([data-shiki=true]){padding:var(--vocs-space_20) var(--vocs-space_16)}.vocs_Tabs pre{margin:unset}}.vocs_CodeBlock{border:1px solid var(--vocs-color_codeInlineBorder);border-radius:var(--vocs-borderRadius_4)}.vocs_Tabs .vocs_CodeBlock,undefined .vocs_CodeBlock{border:none;margin-left:unset;margin-right:unset}.vocs_CodeBlock code{display:grid;font-size:var(--vocs-fontSize_codeBlock)}undefined .vocs_CodeBlock code{font-size:var(--vocs-fontSize_calloutCodeBlock)}.vocs_CodeBlock pre{background-color:var(--vocs-color_codeBlockBackground);border-radius:var(--vocs-borderRadius_4);overflow-x:auto;padding:var(--vocs-space_20) var(--vocs-space_0)}undefined .vocs_CodeBlock pre{background-color:color-mix(in srgb,var(--vocs-color_codeBlockBackground) 65%,transparent)!important;border:1px solid var(--vocs-color_codeInlineBorder);border-radius:var(--vocs-borderRadius_4);padding:var(--vocs-space_12) var(--vocs-space_0)}.vocs_CodeBlock .line{border-left:2px solid transparent;padding:var(--vocs-space_0) var(--vocs-space_22);line-height:var(--vocs-lineHeight_code)}undefined .vocs_CodeBlock .line{padding:var(--vocs-space_0) var(--vocs-space_12)}.vocs_CodeBlock .twoslash-popup-info .line{padding:var(--vocs-space_0) var(--vocs-space_4)}.vocs_CodeBlock .twoslash-popup-info-hover .line{display:inline-block;padding:var(--vocs-space_0) var(--vocs-space_8)}.vocs_CodeBlock .twoslash-error-line,.vocs_CodeBlock .twoslash-tag-line{padding:var(--vocs-space_0) var(--vocs-space_22)}.vocs_CodeBlock [data-line-numbers]{counter-reset:line}.vocs_CodeBlock [data-line-numbers]>.line{padding:var(--vocs-space_0) var(--vocs-space_16)}.vocs_CodeBlock [data-line-numbers]>.line:before{content:counter(line);color:var(--vocs-color_lineNumber);display:inline-block;font-size:var(--vocs-fontSize_lineNumber);margin-right:var(--vocs-space_16);text-align:right;width:1rem}.vocs_CodeBlock [data-line-numbers]>.line:not(.diff.remove+.diff.add):before{counter-increment:line}.vocs_CodeBlock [data-line-numbers]>.line.diff:after{margin-left:calc(-1 * var(--vocs-space_4))}.vocs_CodeBlock .highlighted{background-color:var(--vocs-color_codeHighlightBackground);border-left:2px solid var(--vocs-color_codeHighlightBorder);box-sizing:content-box}.vocs_CodeBlock .highlighted-word{border-radius:var(--vocs-borderRadius_2);background-color:var(--vocs-color_codeCharacterHighlightBackground)!important;box-shadow:0 0 0 4px var(--vocs-color_codeCharacterHighlightBackground)}.vocs_CodeBlock .has-diff{position:relative}.vocs_CodeBlock .line.diff:after{position:absolute;left:var(--vocs-space_8)}.vocs_CodeBlock .line.diff.add{background-color:var(--vocs-color_backgroundGreenTint2)}.vocs_CodeBlock .line.diff.add:after{content:"+";color:var(--vocs-color_textGreen)}.vocs_CodeBlock .line.diff.remove{background-color:var(--vocs-color_backgroundRedTint2);opacity:.6}.vocs_CodeBlock .line.diff.remove>span{filter:grayscale(1)}.vocs_CodeBlock .line.diff.remove:after{content:"-";color:var(--vocs-color_textRed)}.vocs_CodeBlock .has-focused>code>.line:not(.focused),.vocs_CodeBlock .has-focused>code>.twoslash-meta-line:not(.focused){opacity:.3;transition:opacity .2s}.vocs_CodeBlock:hover .has-focused .line:not(.focused),.vocs_CodeBlock:hover .has-focused .twoslash-meta-line:not(.focused){opacity:1;transition:opacity .2s}@media screen and (max-width: 720px){.vocs_CodeBlock{border-radius:0;border-right:none;border-left:none;margin-left:calc(-1 * var(--vocs-space_16));margin-right:calc(-1 * var(--vocs-space_16))}.vocs_CodeBlock pre{border-radius:0}.vocs_CodeBlock .line,.vocs_CodeBlock .twoslash-error-line,.vocs_CodeBlock .twoslash-tag-line{padding:0 var(--vocs-space_16)}.vocs_CodeBlock .line.diff:after{left:var(--vocs-space_6)}}.vocs_Header{border-bottom:1px solid var(--vocs-color_border)}.vocs_Header:not(:last-child){margin-bottom:var(--vocs-space_28);padding-bottom:var(--vocs-space_28)}[data-layout=landing] .vocs_Header{padding-bottom:var(--vocs-space_16)}[data-layout=landing] .vocs_Header:not(:first-child){padding-top:var(--vocs-space_36)}.vocs_H2{font-size:var(--vocs-fontSize_h2);letter-spacing:-.02em}.vocs_H2.vocs_H2:not(:last-child){margin-bottom:var(--vocs-space_24)}:not(.vocs_Header)+.vocs_H2:not(:only-child){border-top:1px solid var(--vocs-color_border);margin-top:var(--vocs-space_56);padding-top:var(--vocs-space_24)}[data-layout=landing] .vocs_H2.vocs_H2{border-top:none;margin-top:var(--vocs-space_24);padding-top:0}.vocs_H3{font-size:var(--vocs-fontSize_h3)}.vocs_H3:not(:first-child){margin-top:var(--vocs-space_18);padding-top:var(--vocs-space_18)}.vocs_H3.vocs_H3:not(:last-child){margin-bottom:var(--vocs-space_24)}.vocs_H2+.vocs_H3{padding-top:var(--vocs-space_0)}.vocs_H4{font-size:var(--vocs-fontSize_h4)}.vocs_H4:not(:first-child){margin-top:var(--vocs-space_18);padding-top:var(--vocs-space_12)}.vocs_H4.vocs_H4:not(:last-child){margin-bottom:var(--vocs-space_24)}.vocs_H3+.vocs_H4{padding-top:var(--vocs-space_0)}.vocs_H5{font-size:var(--vocs-fontSize_h5)}.vocs_H5:not(:first-child){margin-top:var(--vocs-space_16)}.vocs_H5.vocs_H5:not(:last-child){margin-bottom:var(--vocs-space_24)}.vocs_H4+.vocs_H5{padding-top:var(--vocs-space_0)}.vocs_H6{font-size:var(--vocs-fontSize_h6)}.vocs_H6:not(:first-child){margin-top:var(--vocs-space_16)}.vocs_H6.vocs_H6:not(:last-child){margin-bottom:var(--vocs-space_24)}.vocs_H5+.vocs_H6{padding-top:var(--vocs-space_0)}.vocs_Step:not(:last-child){margin-bottom:var(--vocs-space_24)}.vocs_Step_title{margin-bottom:var(--vocs-space_8);position:relative}.vocs_Step_title:before{content:counter(step);align-items:center;background-color:var(--vocs-color_background5);border-radius:100%;border:.5em solid var(--vocs-color_background);box-sizing:content-box;color:var(--vocs-color_text2);counter-increment:step;display:flex;font-size:.625em;font-weight:var(--vocs-fontWeight_regular);height:2em;justify-content:center;left:calc(-25.125px - 1.45em);position:absolute;top:-.25em;width:2em}.vocs_H2+.vocs_Step_content,.vocs_H3+.vocs_Step_content,.vocs_H4+.vocs_Step_content,.vocs_H5+.vocs_Step_content,.vocs_H6+.vocs_Step_content{margin-top:calc(var(--vocs-space_8) * -1)}.vocs_Step_content>*:not(:last-child){margin-bottom:var(--vocs-space_16)}.vocs_Step_content>*:last-child{margin-bottom:var(--vocs-space_0)}@media screen and (max-width: 720px){.vocs_Step_content>.vocs_Tabs,.vocs_Step_content>.vocs_CodeBlock{outline:6px solid var(--vocs-color_background);margin-left:calc(-1 * var(--vocs-space_44) - 2px);margin-right:calc(-1 * var(--vocs-space_16))}.vocs_Step_content .vocs_Tabs pre.shiki{border-top:none}}.vocs_Callout{border-radius:var(--vocs-borderRadius_4);font-size:var(--vocs-fontSize_14);padding:var(--vocs-space_16) var(--vocs-space_20);margin-bottom:var(--vocs-space_16)}.vocs_Callout_note{background-color:var(--vocs-color_noteBackground);border:1px solid var(--vocs-color_noteBorder);color:var(--vocs-color_noteText)}.vocs_Callout_info{background-color:var(--vocs-color_infoBackground);border:1px solid var(--vocs-color_infoBorder);color:var(--vocs-color_infoText)}.vocs_Callout_warning{background-color:var(--vocs-color_warningBackground);border:1px solid var(--vocs-color_warningBorder);color:var(--vocs-color_warningText)}.vocs_Callout_danger{background-color:var(--vocs-color_dangerBackground);border:1px solid var(--vocs-color_dangerBorder);color:var(--vocs-color_dangerText)}.vocs_Callout_tip{background-color:var(--vocs-color_tipBackground);border:1px solid var(--vocs-color_tipBorder);color:var(--vocs-color_tipText)}.vocs_Callout_success{background-color:var(--vocs-color_successBackground);border:1px solid var(--vocs-color_successBorder);color:var(--vocs-color_successText)}@media screen and (max-width: 720px){:not(.vocs_Step_content)>.vocs_Callout{border-radius:0;border-left-width:0;border-right-width:0;margin-left:calc(-1 * var(--vocs-space_16));margin-right:calc(-1 * var(--vocs-space_16))}}.vocs_Content{background-color:var(--vocs-color_background);max-width:var(--vocs-content_width);padding:var(--vocs-content_verticalPadding) var(--vocs-content_horizontalPadding);width:100%}.vocs_Callout>*+.vocs_Details{margin-top:-8px}@layer vocs_global_global;:root.dark{color-scheme:dark}:root.dark pre.shiki span:not(.line),:root.dark :not(pre.shiki) .line span{color:var(--shiki-dark)!important}pre.shiki{background-color:var(--vocs-color_codeBlockBackground)!important}.vocs_Content>*:not(:last-child),.vocs_Details>*:not(:last-child){margin-bottom:var(--vocs-space_24)}.vocs_Callout>*:not(:last-child),.vocs_Callout>.vocs_Details>*:not(:last-child){margin-bottom:var(--vocs-space_16)}.vocs_Content>*:last-child,.vocs_Callout>*:last-child,.vocs_Details>*:last-child{margin-bottom:var(--vocs-space_0)}#app[aria-hidden=true]{background:var(--vocs-color_background)}@layer vocs_global_global{:root{background-color:var(--vocs-color_background);color:var(--vocs-color_text);line-height:var(--vocs-lineHeight_paragraph);font-size:var(--vocs-fontSize_root);font-weight:var(--vocs-fontWeight_regular)}}@media screen and (max-width: 720px){:root{background-color:var(--vocs-color_backgroundDark)}}:root{--vocs-twoslash_borderColor: var(--vocs-color_border2);--vocs-twoslash_underlineColor: currentColor;--vocs-twoslash_popupBackground: var(--vocs-color_background2);--vocs-twoslash_popupShadow: rgba(0, 0, 0, .08) 0px 1px 4px;--vocs-twoslash_matchedColor: inherit;--vocs-twoslash_unmatchedColor: #888;--vocs-twoslash_cursorColor: #8888;--vocs-twoslash_errorColor: var(--vocs-color_textRed);--vocs-twoslash_errorBackground: var(--vocs-color_backgroundRedTint2);--vocs-twoslash_highlightedBackground: var(--vocs-color_background);--vocs-twoslash_highlightedBorder: var(--vocs-color_background);--vocs-twoslash_tagColor: var(--vocs-color_textBlue);--vocs-twoslash_tagBackground: var(--vocs-color_backgroundBlueTint);--vocs-twoslash_tagWarnColor: var(--vocs-color_textYellow);--vocs-twoslash_tagWarnBackground: var(--vocs-color_backgroundYellowTint);--vocs-twoslash_tagAnnotateColor: var(--vocs-color_textGreen);--vocs-twoslash_tagAnnotateBackground: var(--vocs-color_backgroundGreenTint2)}:root.dark{--vocs-twoslash_borderColor: var(--vocs-color_border2);--vocs-twoslash_underlineColor: currentColor;--vocs-twoslash_popupBackground: var(--vocs-color_background5);--vocs-twoslash_popupShadow: rgba(0, 0, 0, .08) 0px 1px 4px;--vocs-twoslash_matchedColor: inherit;--vocs-twoslash_unmatchedColor: #888;--vocs-twoslash_cursorColor: #8888;--vocs-twoslash_errorColor: var(--vocs-color_textRed);--vocs-twoslash_errorBackground: var(--vocs-color_backgroundRedTint2);--vocs-twoslash_highlightedBackground: var(--vocs-color_background);--vocs-twoslash_highlightedBorder: var(--vocs-color_background);--vocs-twoslash_tagColor: var(--vocs-color_textBlue);--vocs-twoslash_tagBackground: var(--vocs-color_backgroundBlueTint);--vocs-twoslash_tagWarnColor: var(--vocs-color_textYellow);--vocs-twoslash_tagWarnBackground: var(--vocs-color_backgroundYellowTint);--vocs-twoslash_tagAnnotateColor: var(--vocs-color_textGreen);--vocs-twoslash_tagAnnotateBackground: var(--vocs-color_backgroundGreenTint2)}:root .twoslash-popup-info-hover,:root .twoslash-popup-info{--shiki-light-bg: var(--vocs-color_background2)}:root .twoslash-popup-info{width:-moz-max-content;width:max-content}:root.dark .twoslash-popup-info,:root.dark .twoslash-popup-info-hover{--shiki-dark-bg: var(--vocs-color_background5)}.twoslash-query-persisted>.twoslash-popup-info{z-index:1}:not(.twoslash-query-persisted)>.twoslash-popup-info{z-index:2}.twoslash:hover .twoslash-hover{border-color:var(--vocs-twoslash_underlineColor)}.twoslash .twoslash-hover{border-bottom:1px dotted transparent;transition-timing-function:ease;transition:border-color .3s}.twoslash-query-persisted{position:relative}.twoslash .twoslash-popup-info{position:absolute;top:0;left:0;opacity:0;display:inline-block;transform:translateY(1.1em);background:var(--vocs-twoslash_popupBackground);border:1px solid var(--vocs-twoslash_borderColor);transition:opacity .3s;border-radius:4px;max-width:540px;padding:4px 6px;pointer-events:none;text-align:left;z-index:20;white-space:pre-wrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;box-shadow:var(--vocs-twoslash_popupShadow)}.twoslash .twoslash-popup-info-hover{background:var(--vocs-twoslash_popupBackground);border:1px solid var(--vocs-twoslash_borderColor);border-radius:4px;box-shadow:var(--vocs-twoslash_popupShadow);display:inline-block;max-width:500px;pointer-events:auto;position:fixed;opacity:1;transition:opacity .3s;white-space:pre-wrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:20}.twoslash .twoslash-popup-scroll-container{max-height:300px;padding:4px 0;overflow-y:auto;-ms-overflow-style:none;scrollbar-width:none}.twoslash-popup-arrow{position:absolute;top:-4px;left:1em;border-top:1px solid var(--vocs-twoslash_borderColor);border-right:1px solid var(--vocs-twoslash_borderColor);background:var(--vocs-twoslash_popupBackground);transform:rotate(-45deg);width:6px;height:6px;pointer-events:none}.twoslash .twoslash-popup-scroll-container::-webkit-scrollbar{display:none}.twoslash .twoslash-popup-jsdoc{border-top:1px solid var(--vocs-color_border2);color:var(--vocs-color_text);font-family:sans-serif;font-weight:500;margin-top:4px;padding:4px 10px 0}.twoslash-tag-line+.twoslash-tag-line{margin-top:-.2em}.twoslash-query-persisted .twoslash-popup-info{z-index:9;transform:translateY(1.5em)}.twoslash-hover:hover .twoslash-popup-info,.twoslash-query-persisted .twoslash-popup-info{opacity:1;pointer-events:auto}.twoslash-popup-info:hover,.twoslash-popup-info-hover:hover{-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.twoslash-error-line{position:relative;background-color:var(--vocs-twoslash_errorBackground);border-left:2px solid var(--vocs-twoslash_errorColor);color:var(--vocs-twoslash_errorColor);margin:.2em 0}.twoslash-error{background:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23c94824'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left;padding-bottom:2px}.twoslash-completion-cursor{position:relative}.twoslash-completion-cursor .twoslash-completion-list{-webkit-user-select:none;-moz-user-select:none;user-select:none;position:absolute;top:0;left:0;transform:translateY(1.2em);margin:3px 0 0 -1px;z-index:8;box-shadow:var(--vocs-twoslash_popupShadow);background:var(--vocs-twoslash_popupBackground);border:1px solid var(--vocs-twoslash_borderColor)}.twoslash-completion-list{border-radius:4px;font-size:.8rem;padding:4px;display:flex;flex-direction:column;gap:4px;width:240px}.twoslash-completion-list:hover{-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.twoslash-completion-list:before{content:" ";background-color:var(--vocs-twoslash_cursorColor);width:2px;position:absolute;top:-1.6em;height:1.4em;left:-1px}.twoslash-completion-list .twoslash-completion-list-item{overflow:hidden;display:flex;align-items:center;gap:.5em;line-height:1em}.twoslash-completion-list .twoslash-completion-list-item span.twoslash-completions-unmatched.twoslash-completions-unmatched.twoslash-completions-unmatched{color:var(--vocs-twoslash_unmatchedColor)!important}.twoslash-completion-list .deprecated{text-decoration:line-through;opacity:.5}.twoslash-completion-list .twoslash-completion-list-item span.twoslash-completions-matched.twoslash-completions-unmatched.twoslash-completions-unmatched{color:var(--vocs-twoslash_matchedColor)!important}.twoslash-tag-line{position:relative;background-color:var(--vocs-twoslash_tagBackground);border-left:2px solid var(--vocs-twoslash_tagColor);color:var(--vocs-twoslash_tagColor);margin:.2em 0;display:flex;align-items:center;gap:.3em}.twoslash-tag-line+.line[data-empty-line]+.twoslash-tag-line{margin-top:-1.95em}.twoslash-tag-line .twoslash-tag-icon{width:1.1em;color:inherit}.twoslash-tag-line.twoslash-tag-error-line{background-color:var(--vocs-twoslash_errorBackground);border-left:2px solid var(--vocs-twoslash_errorColor);color:var(--vocs-twoslash_errorColor)}.twoslash-tag-line.twoslash-tag-warn-line{background-color:var(--vocs-twoslash_tagWarnBackground);border-left:2px solid var(--vocs-twoslash_tagWarnColor);color:var(--vocs-twoslash_tagWarnColor)}.twoslash-tag-line.twoslash-tag-annotate-line{background-color:var(--vocs-twoslash_tagAnnotateBackground);border-left:2px solid var(--vocs-twoslash_tagAnnotateColor);color:var(--vocs-twoslash_tagAnnotateColor)}.twoslash-highlighted{border-radius:var(--vocs-borderRadius_2);background-color:var(--vocs-color_codeCharacterHighlightBackground)!important;box-shadow:0 0 0 4px var(--vocs-color_codeCharacterHighlightBackground)}@media (prefers-reduced-motion: reduce){.twoslash *{transition:none!important}}.vocs_ExternalLink:after{content:"";background-color:currentColor;color:var(--vocs_ExternalLink_arrowColor);display:inline-block;height:.5em;margin-left:.325em;margin-right:.25em;width:.5em;-webkit-mask:var(--vocs_ExternalLink_iconUrl) no-repeat center / contain;mask:var(--vocs_ExternalLink_iconUrl) no-repeat center / contain}.vocs_Link_accent_underlined{color:var(--vocs-color_link);font-weight:var(--vocs-fontWeight_medium);text-underline-offset:var(--vocs-space_2);text-decoration:underline;transition:color .1s}.vocs_Link_accent_underlined:hover{color:var(--vocs-color_linkHover)}.vocs_Link_styleless{--vocs_ExternalLink_arrowColor: var(--vocs-color_text3)}.vocs_NotFound{align-items:center;display:flex;flex-direction:column;max-width:400px;margin:0 auto;padding-top:var(--vocs-space_64)}.vocs_NotFound_divider{border-color:var(--vocs-color_border);width:50%}.vocs_H1{font-size:var(--vocs-fontSize_h1);letter-spacing:-.02em}.vocs_Heading{align-items:center;color:var(--vocs-color_heading);font-weight:var(--vocs-fontWeight_semibold);gap:.25em;line-height:var(--vocs-lineHeight_heading);position:relative}.vocs_Heading_slugTarget{position:absolute;top:0;visibility:hidden}@media screen and (min-width: 1081px){.vocs_Heading_slugTarget{top:calc(-1 * (var(--vocs-topNav_height)))}.vocs_Header .vocs_Heading_slugTarget,.vocs_Step_title .vocs_Heading_slugTarget,.vocs_Header+.vocs_Heading .vocs_Heading_slugTarget{top:calc(-1 * (var(--vocs-topNav_height) + var(--vocs-space_24)))}}@media screen and (max-width: 1080px){.vocs_Heading_slugTarget{top:calc(-1 * var(--vocs-topNav_curtainHeight))}.vocs_Header .vocs_Heading_slugTarget,.vocs_Header+.vocs_Heading .vocs_Heading_slugTarget{top:calc(-1 * calc(var(--vocs-topNav_curtainHeight) + var(--vocs-space_24)))}}.vocs_Blockquote{border-left:2px solid var(--vocs-color_blockquoteBorder);padding-left:var(--vocs-space_16);margin-bottom:var(--vocs-space_16)}.vocs_H2+.vocs_List,.vocs_H3+.vocs_List,.vocs_H4+.vocs_List,.vocs_H5+.vocs_List,.vocs_H6+.vocs_List{margin-top:calc(var(--vocs-space_8) * -1)}.vocs_Paragraph+.vocs_List{margin-top:calc(-1 * var(--vocs-space_8))}.vocs_List_ordered{list-style:decimal;padding-left:var(--vocs-space_20);margin-bottom:var(--vocs-space_16)}.vocs_List_ordered .vocs_List_ordered{list-style:lower-alpha}.vocs_List_ordered .vocs_List_ordered .vocs_List_ordered{list-style:lower-roman}.vocs_List_unordered{list-style:disc;padding-left:var(--vocs-space_24);margin-bottom:var(--vocs-space_16)}.vocs_List_unordered .vocs_List_unordered{list-style:circle}.vocs_List_ordered .vocs_List_ordered,.vocs_List_unordered .vocs_List_unordered,.vocs_List_ordered .vocs_List_unordered,.vocs_List_unordered .vocs_List_ordered{margin-bottom:var(--vocs-space_0);padding-top:var(--vocs-space_8);padding-left:var(--vocs-space_16);padding-bottom:var(--vocs-space_0)}.vocs_List_unordered.contains-task-list{list-style:none;padding-left:var(--vocs-space_12)}.vocs_Paragraph{line-height:var(--vocs-lineHeight_paragraph)}.vocs_Blockquote>.vocs_Paragraph{color:var(--vocs-color_blockquoteText);margin-bottom:var(--vocs-space_8)}.vocs_H2+.vocs_Paragraph,.vocs_H3+.vocs_Paragraph,.vocs_H4+.vocs_Paragraph,.vocs_H5+.vocs_Paragraph,.vocs_H6+.vocs_Paragraph,.vocs_List+.vocs_Paragraph{margin-top:calc(var(--vocs-space_8) * -1)}.vocs_Paragraph+.vocs_Paragraph{margin-top:calc(-1 * var(--vocs-space_8))}:root:not(.dark) .vocs_utils_visibleDark{display:none}:root.dark .vocs_utils_visibleLight{display:none}.vocs_utils_visuallyHidden{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.vocs_DesktopSearch_search{align-items:center;background-color:var(--vocs-color_backgroundDark);border:1px solid var(--vocs-color_backgroundDark);border-radius:var(--vocs-borderRadius_8);color:var(--vocs-color_text2);display:flex;font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_medium);gap:var(--vocs-space_6);height:var(--vocs-space_40);max-width:15.5rem;padding-left:var(--vocs-space_12);padding-right:var(--vocs-space_12);position:relative;width:100%;transition:color .1s,border-color .1s}.vocs_DesktopSearch_search:hover{color:var(--vocs-color_text);border-color:var(--vocs-color_text3)}.vocs_DesktopSearch_searchCommand{align-items:center;border:1.5px solid var(--vocs-color_text3);border-radius:var(--vocs-borderRadius_4);color:var(--vocs-color_text3);display:flex;height:var(--vocs-space_12);justify-content:center;margin-left:auto;margin-top:var(--vocs-space_1);padding:var(--vocs-space_1);width:var(--vocs-space_12)}.vocs_Kbd{color:var(--vocs-color_text2);display:inline-block;border-radius:var(--vocs-borderRadius_3);font-size:var(--vocs-fontSize_11);font-family:var(--vocs-fontFamily_default);font-feature-settings:cv08;line-height:105%;min-width:20px;padding:var(--vocs-space_3);padding-left:var(--vocs-space_4);padding-right:var(--vocs-space_4);padding-top:var(--vocs-space_3);text-align:center;text-transform:capitalize;vertical-align:baseline;border:.5px solid var(--vocs-color_border);background-color:var(--vocs-color_background3);box-shadow:var(--vocs-color_shadow2) 0 2px 0 0}.vocs_KeyboardShortcut{align-items:center;display:inline-flex;gap:var(--vocs-space_6);font-size:var(--vocs-fontSize_12)}.vocs_KeyboardShortcut_kbdGroup{align-items:center;display:inline-flex;gap:var(--vocs-space_3)}@media screen and (max-width: 720px){.vocs_KeyboardShortcut{display:none}}@keyframes vocs_SearchDialog_fadeIn{0%{opacity:0}to{opacity:1}}@keyframes vocs_SearchDialog_fadeAndSlideIn{0%{opacity:0;transform:translate(-50%,-5%) scale(.96)}to{opacity:1;transform:translate(-50%) scale(1)}}.vocs_SearchDialog{animation:vocs_SearchDialog_fadeAndSlideIn .1s ease-in-out;background:var(--vocs-color_background);border-radius:var(--vocs-borderRadius_6);display:flex;flex-direction:column;gap:var(--vocs-space_8);height:-moz-min-content;height:min-content;left:50%;margin:64px auto;max-height:min(100vh - 128px,900px);padding:var(--vocs-space_12);padding-bottom:var(--vocs-space_8);position:fixed;top:0;transform:translate(-50%);width:min(100vw - 60px,775px);z-index:var(--vocs-zIndex_backdrop)}.vocs_SearchDialog_overlay{animation:vocs_SearchDialog_fadeIn .1s ease-in-out;background:#0009;position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vocs-zIndex_backdrop)}.vocs_SearchDialog_searchBox{align-items:center;border:1px solid var(--vocs-color_border);border-radius:var(--vocs-borderRadius_4);display:flex;gap:var(--vocs-space_8);padding-left:var(--vocs-space_8);padding-right:var(--vocs-space_8);margin-bottom:var(--vocs-space_8);width:100%}.vocs_SearchDialog_searchBox:focus-within{border-color:var(--vocs-color_borderAccent)}.vocs_SearchDialog_searchInput{background:transparent;display:flex;font-size:var(--vocs-fontSize_16);height:var(--vocs-space_40);width:100%}.vocs_SearchDialog_searchInput:focus{outline:none}.vocs_SearchDialog_searchInput::-moz-placeholder{color:var(--vocs-color_text4)}.vocs_SearchDialog_searchInput::placeholder{color:var(--vocs-color_text4)}.vocs_SearchDialog_searchInputIcon{color:var(--vocs-color_text3)}.vocs_SearchDialog_searchInputIconMobile{display:none}.vocs_SearchDialog_results{display:flex;flex-direction:column;gap:var(--vocs-space_8);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;width:100%}.vocs_SearchDialog_result{border:1.5px solid var(--vocs-color_border);border-radius:var(--vocs-borderRadius_4);width:100%}.vocs_SearchDialog_result:focus-within{border-color:var(--vocs-color_borderAccent)}.vocs_SearchDialog_result>a{display:flex;flex-direction:column;gap:var(--vocs-space_8);min-height:var(--vocs-space_36);outline:none;justify-content:center;padding:var(--vocs-space_12);width:100%}.vocs_SearchDialog_resultSelected{border-color:var(--vocs-color_borderAccent)}.vocs_SearchDialog_resultIcon{color:var(--vocs-color_textAccent);margin-right:1px;width:15px}.vocs_SearchDialog_titles{align-items:center;display:flex;flex-wrap:wrap;font-weight:var(--vocs-fontWeight_medium);gap:var(--vocs-space_4);line-height:22px}.vocs_SearchDialog_title{align-items:center;display:flex;gap:var(--vocs-space_4);white-space:nowrap}.vocs_SearchDialog_titleIcon{color:var(--vocs-color_text);display:inline-block;opacity:.5}.vocs_SearchDialog_resultSelected .vocs_SearchDialog_title,.vocs_SearchDialog_resultSelected .vocs_SearchDialog_titleIcon{color:var(--vocs-color_textAccent)}.vocs_SearchDialog_content{padding:0}.vocs_SearchDialog_excerpt{max-height:8.75rem;overflow:hidden;opacity:.5;position:relative}.vocs_SearchDialog_excerpt:before{content:"";position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vocs-color_background),transparent);z-index:1000}.vocs_SearchDialog_excerpt:after{content:"";position:absolute;bottom:-1px;left:0;width:100%;height:12px;background:linear-gradient(transparent,var(--vocs-color_background));z-index:1000}.vocs_SearchDialog_title mark,.vocs_SearchDialog_excerpt mark{background-color:var(--vocs-color_searchHighlightBackground);color:var(--vocs-color_searchHighlightText);border-radius:var(--vocs-borderRadius_2);padding-bottom:0;padding-left:var(--vocs-space_2);padding-right:var(--vocs-space_2);padding-top:0}.vocs_SearchDialog_resultSelected .vocs_SearchDialog_excerpt{opacity:1}.vocs_SearchDialog_searchShortcuts{align-items:center;color:var(--vocs-color_text2);display:flex;gap:var(--vocs-space_20);font-size:var(--vocs-fontSize_14)}.vocs_SearchDialog_searchShortcutsGroup{align-items:center;display:inline-flex;gap:var(--vocs-space_3);margin-right:var(--vocs-space_6)}@media screen and (max-width: 720px){.vocs_SearchDialog{border-radius:0;height:calc(100vh - env(safe-area-inset-top) - env(safe-area-inset-bottom));margin:0;max-height:unset;width:100vw}.vocs_SearchDialog_searchInputIconDesktop{display:none}.vocs_SearchDialog_searchInputIconMobile{display:block}.vocs_SearchDialog_excerpt{opacity:1}.vocs_SearchDialog_searchShortcuts{display:none}}.vocs_DesktopTopNav{align-items:center;display:flex;justify-content:space-between;padding:0 var(--vocs-topNav_horizontalPadding);height:var(--vocs-topNav_height)}.vocs_DesktopTopNav_withLogo{padding-left:calc(((100% - var(--vocs-content_width)) / 2) + var(--vocs-topNav_horizontalPadding))}.vocs_DesktopTopNav_button{border-radius:var(--vocs-borderRadius_4);padding:var(--vocs-space_8)}.vocs_DesktopTopNav_content{right:calc(-1 * var(--vocs-space_24))}.vocs_DesktopTopNav_curtain{background:linear-gradient(var(--vocs-color_background),transparent 70%);height:30px;opacity:.98;width:100%}.vocs_DesktopTopNav_divider{background-color:var(--vocs-color_border);height:35%;width:1px}.vocs_DesktopTopNav_group{align-items:center;display:flex}.vocs_DesktopTopNav_icon{color:var(--vocs-color_text2);transition:color .1s}.vocs_DesktopTopNav_button:hover .vocs_DesktopTopNav_icon{color:var(--vocs-color_text)}.vocs_DesktopTopNav_item{align-items:center;display:flex;height:100%;position:relative}.vocs_DesktopTopNav_logo{padding-left:var(--vocs-sidebar_horizontalPadding);padding-right:var(--vocs-sidebar_horizontalPadding);width:var(--vocs-sidebar_width)}.vocs_DesktopTopNav_logoWrapper{display:flex;height:100%;justify-content:flex-end;left:0;position:absolute;width:var(--vocs_DocsLayout_leftGutterWidth)}.vocs_DesktopTopNav_section{align-items:center;display:flex;height:100%;gap:var(--vocs-space_24)}@media screen and (max-width: 1080px){.vocs_DesktopTopNav,.vocs_DesktopTopNav_curtain{display:none}}@media screen and (max-width: 1280px){.vocs_DesktopTopNav_hideCompact{display:none}}.vocs_Icon{align-items:center;display:flex;height:var(--vocs_Icon_size);width:var(--vocs_Icon_size)}:root:not(.dark) .vocs_Logo_logoDark{display:none}:root.dark .vocs_Logo_logoLight{display:none}.vocs_NavLogo_logoImage{height:50%;width:auto}.vocs_NavLogo_title{font-size:var(--vocs-fontSize_18);font-weight:var(--vocs-fontWeight_semibold);line-height:var(--vocs-lineHeight_heading)}@keyframes vocs_NavigationMenu_fadeIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.vocs_NavigationMenu_list{display:flex;gap:var(--vocs-space_20)}.vocs_NavigationMenu_link{align-items:center;display:flex;font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_medium);height:100%}.vocs_NavigationMenu_link:hover,.vocs_NavigationMenu_link[data-active=true]{color:var(--vocs-color_textAccent)}.vocs_NavigationMenu_trigger:after{content:"";background-color:currentColor;color:var(--vocs-color_text3);display:inline-block;height:.625em;margin-left:.325em;width:.625em;-webkit-mask:var(--vocs_NavigationMenu_chevronDownIcon) no-repeat center / contain;mask:var(--vocs_NavigationMenu_chevronDownIcon) no-repeat center / contain}.vocs_NavigationMenu_content{background-color:var(--vocs-color_background2);border:1px solid var(--vocs-color_border);border-radius:var(--vocs-borderRadius_4);box-shadow:0 3px 10px var(--vocs-color_shadow);display:flex;flex-direction:column;padding:var(--vocs-space_12) var(--vocs-space_16);position:absolute;top:calc(100% + var(--vocs-space_8));min-width:200px;z-index:var(--vocs-zIndex_popover);animation:vocs_NavigationMenu_fadeIn .5s cubic-bezier(.16,1,.3,1)}.vocs_Footer{--vocs_Footer_iconWidth: 24px;display:flex;flex-direction:column;gap:var(--vocs-space_32);max-width:var(--vocs-content_width);overflow-x:hidden;padding:var(--vocs-space_28) var(--vocs-content_horizontalPadding) var(--vocs-space_48)}.vocs_Footer_container{border-bottom:1px solid var(--vocs-color_border);display:flex;justify-content:space-between;padding-bottom:var(--vocs-space_16)}.vocs_Footer_editLink{align-items:center;display:flex;font-size:var(--vocs-fontSize_14);gap:var(--vocs-space_8);text-decoration:none}.vocs_Footer_lastUpdated{color:var(--vocs-color_text3);font-size:var(--vocs-fontSize_14)}.vocs_Footer_navigation{display:flex;justify-content:space-between}.vocs_Footer_navigationIcon{width:var(--vocs_Footer_iconWidth)}.vocs_Footer_navigationIcon_left{display:flex}.vocs_Footer_navigationIcon_right{display:flex;justify-content:flex-end}.vocs_Footer_navigationItem{display:flex;flex-direction:column;gap:var(--vocs-space_4)}.vocs_Footer_navigationItem_right{align-items:flex-end}.vocs_Footer_navigationText{align-items:center;display:flex;font-size:var(--vocs-fontSize_18);font-weight:var(--vocs-fontWeight_medium)}.vocs_Footer_navigationTextInner{overflow:hidden;text-overflow:ellipsis;width:26ch;white-space:pre}@media screen and (max-width: 720px){.vocs_Footer_navigationIcon_left,.vocs_Footer_navigationIcon_right{justify-content:center}.vocs_Footer_navigationText{font-size:var(--vocs-fontSize_12)}}@media screen and (max-width: 480px){.vocs_Footer_navigationTextInner{width:20ch}}.vocs_MobileSearch_searchButton{align-items:center;display:flex;color:var(--vocs-color_text);height:var(--vocs-space_28);justify-content:center;width:var(--vocs-space_28)}@keyframes vocs_MobileTopNav_fadeIn{0%{opacity:0}to{opacity:1}}.vocs_MobileTopNav{align-items:center;background-color:var(--vocs-color_backgroundDark);border-bottom:1px solid var(--vocs-color_border);display:none;height:100%;justify-content:space-between;padding:var(--vocs-space_0) var(--vocs-content_horizontalPadding);width:100%}.vocs_MobileTopNav_button{border-radius:var(--vocs-borderRadius_4);padding:var(--vocs-space_8)}.vocs_MobileTopNav_content{left:calc(-1 * var(--vocs-space_24))}.vocs_MobileTopNav_curtain{align-items:center;background-color:var(--vocs-color_backgroundDark);border-bottom:1px solid var(--vocs-color_border);display:none;justify-content:space-between;font-size:var(--vocs-fontSize_13);font-weight:var(--vocs-fontWeight_medium);height:100%;padding:var(--vocs-space_0) var(--vocs-content_horizontalPadding);width:100%}.vocs_MobileTopNav_curtainGroup{align-items:center;display:flex;gap:var(--vocs-space_12)}.vocs_MobileTopNav_divider{background-color:var(--vocs-color_border);height:35%;width:1px}.vocs_MobileTopNav_group{align-items:center;display:flex;height:100%}.vocs_MobileTopNav_icon{color:var(--vocs-color_text2);transition:color .1s}.vocs_MobileTopNav_button:hover .vocs_MobileTopNav_icon{color:var(--vocs-color_text)}.vocs_MobileTopNav_item{position:relative}.vocs_MobileTopNav_logo{align-items:center;display:flex;height:var(--vocs-topNav_height)}.vocs_MobileTopNav_logoImage{height:30%}.vocs_MobileTopNav_menuTrigger{align-items:center;display:flex;gap:var(--vocs-space_8)}.vocs_MobileTopNav_menuTitle{max-width:22ch;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:pre}.vocs_MobileTopNav_navigation{margin-left:var(--vocs-space_8)}.vocs_MobileTopNav_navigationContent{display:flex;flex-direction:column;margin-left:var(--vocs-space_8)}.vocs_MobileTopNav_navigationItem{align-items:center;display:flex;justify-content:flex-start;font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_medium);width:100%}.vocs_MobileTopNav_navigationItem:hover,.vocs_MobileTopNav_navigationItem[data-active=true],.vocs_MobileTopNav_navigationItem[data-state=open]{color:var(--vocs-color_textAccent)}.vocs_MobileTopNav_trigger:after{content:"";background-color:currentColor;display:inline-block;height:.625em;margin-left:.325em;width:.625em;-webkit-mask:var(--vocs_MobileTopNav_chevronDownIcon) no-repeat center / contain;mask:var(--vocs_MobileTopNav_chevronDownIcon) no-repeat center / contain}.vocs_MobileTopNav_trigger[data-state=open]:after{-webkit-mask:var(--vocs_MobileTopNav_chevronUpIcon) no-repeat center / contain;mask:var(--vocs_MobileTopNav_chevronUpIcon) no-repeat center / contain}.vocs_MobileTopNav_outlineTrigger{animation:vocs_MobileTopNav_fadeIn .5s cubic-bezier(.16,1,.3,1);align-items:center;color:var(--vocs-color_text2);display:flex;gap:var(--vocs-space_6)}.vocs_MobileTopNav_outlineTrigger[data-state=open]{color:var(--vocs-color_textAccent)}.vocs_MobileTopNav_outlinePopover{display:none;overflow-y:scroll;padding:var(--vocs-space_16);max-height:80vh}.vocs_MobileTopNav_section{align-items:center;display:flex;height:100%;gap:var(--vocs-space_16)}.vocs_MobileTopNav_separator{background-color:var(--vocs-color_border);height:1.75em;width:1px}.vocs_MobileTopNav_sidebarPopover{display:none;overflow-y:scroll;padding:0 var(--vocs-sidebar_horizontalPadding);max-height:80vh;width:var(--vocs-sidebar_width)}.vocs_MobileTopNav_title{font-size:var(--vocs-fontSize_18);font-weight:var(--vocs-fontWeight_semibold);line-height:var(--vocs-lineHeight_heading)}.vocs_MobileTopNav_topNavPopover{display:none;overflow-y:scroll;padding:var(--vocs-sidebar_verticalPadding) var(--vocs-sidebar_horizontalPadding);max-height:80vh;width:var(--vocs-sidebar_width)}@media screen and (max-width: 1080px){.vocs_MobileTopNav,.vocs_MobileTopNav_curtain{display:flex}.vocs_MobileTopNav_outlinePopover{display:block;max-width:300px}.vocs_MobileTopNav_sidebarPopover{display:block}.vocs_MobileTopNav_topNavPopover{display:flex;flex-direction:column}}@media screen and (max-width: 720px){.vocs_MobileTopNav_navigation:not(.vocs_MobileTopNav_navigation_compact){display:none}}@media screen and (min-width: 721px){.vocs_MobileTopNav_navigation.vocs_MobileTopNav_navigation_compact{display:none}}.vocs_Outline{width:100%}.vocs_Outline_nav{display:flex;flex-direction:column;gap:var(--vocs-space_8)}.vocs_DocsLayout_gutterRight .vocs_Outline_nav{border-left:1px solid var(--vocs-color_border);padding-left:var(--vocs-space_16)}.vocs_Outline_heading{color:var(--vocs-color_title);font-size:var(--vocs-fontSize_13);font-weight:var(--vocs-fontWeight_semibold);line-height:var(--vocs-lineHeight_heading);letter-spacing:.025em}.vocs_Outline_items .vocs_Outline_items{padding-left:var(--vocs-space_12)}.vocs_Outline_item{line-height:var(--vocs-lineHeight_outlineItem);margin-bottom:var(--vocs-space_8);overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.vocs_Outline_link{color:var(--vocs-color_text2);font-weight:var(--vocs-fontWeight_medium);font-size:var(--vocs-fontSize_13);transition:color .1s}.vocs_Outline_link[data-active=true]{color:var(--vocs-color_textAccent)}.vocs_Outline_link[data-active=true]:hover{color:var(--vocs-color_textAccentHover)}.vocs_Outline_link:hover{color:var(--vocs-color_text)}.vocs_Popover{background-color:var(--vocs-color_background2);border:1px solid var(--vocs-color_border);border-radius:var(--vocs-borderRadius_4);margin:0 var(--vocs-space_6);z-index:var(--vocs-zIndex_popover)}.vocs_Sidebar{display:flex;flex-direction:column;font-size:var(--vocs-fontSize_14);overflow-y:auto;width:var(--vocs-sidebar_width)}.vocs_Sidebar_backLink{text-align:left}.vocs_Sidebar_divider{background-color:var(--vocs-color_border);width:100%;height:1px}.vocs_Sidebar_navigation{outline:0}.vocs_Sidebar_navigation:first-child{padding-top:var(--vocs-space_16)}.vocs_Sidebar_group{display:flex;flex-direction:column}.vocs_Sidebar_logo{align-items:center;display:flex;height:var(--vocs-topNav_height);padding-top:var(--vocs-space_4)}.vocs_Sidebar_logoWrapper{background-color:var(--vocs-color_backgroundDark);position:sticky;top:0;z-index:var(--vocs-zIndex_gutterTopCurtain)}.vocs_Sidebar_section{display:flex;flex-direction:column;font-size:1em}.vocs_Sidebar_navigation>.vocs_Sidebar_group>.vocs_Sidebar_section+.vocs_Sidebar_section{border-top:1px solid var(--vocs-color_border)}.vocs_Sidebar_levelCollapsed{gap:var(--vocs-space_4);padding-bottom:var(--vocs-space_12)}.vocs_Sidebar_levelInset{border-left:1px solid var(--vocs-color_border);font-size:var(--vocs-fontSize_13);margin-top:var(--vocs-space_8);padding-left:var(--vocs-space_12)}.vocs_Sidebar_levelInset.vocs_Sidebar_levelInset.vocs_Sidebar_levelInset{font-weight:var(--vocs-fontWeight_regular);padding-top:0;padding-bottom:0}.vocs_Sidebar_items{display:flex;flex-direction:column;gap:.625em;padding-top:var(--vocs-space_16);padding-bottom:var(--vocs-space_16);font-weight:var(--vocs-fontWeight_medium)}.vocs_Sidebar_level .vocs_Sidebar_items{padding-top:var(--vocs-space_6)}.vocs_Sidebar_item{color:var(--vocs-color_text3);letter-spacing:.25px;line-height:var(--vocs-lineHeight_sidebarItem);width:100%;transition:color .1s}.vocs_Sidebar_item:hover{color:var(--vocs-color_text)}.vocs_Sidebar_item[data-active=true]{color:var(--vocs-color_textAccent)}.vocs_Sidebar_sectionHeader{align-items:center;display:flex;justify-content:space-between}.vocs_Sidebar_level>.vocs_Sidebar_sectionHeader{padding-top:var(--vocs-space_12)}.vocs_Sidebar_sectionHeaderActive{color:var(--vocs-color_text)}.vocs_Sidebar_sectionTitle{color:var(--vocs-color_title);font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_semibold);letter-spacing:.25px;width:100%}.vocs_Sidebar_sectionCollapse{color:var(--vocs-color_text3);transform:rotate(90deg);transition:transform .25s}.vocs_Sidebar_sectionCollapseActive{transform:rotate(0)}@media screen and (max-width: 1080px){.vocs_Sidebar{width:100%}.vocs_Sidebar_logoWrapper{display:none}}.vocs_SkipLink{background:var(--vocs-color_background);border-radius:var(--vocs-borderRadius_4);color:var(--vocs-color_link);font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_semibold);left:var(--vocs-space_8);padding:var(--vocs-space_8) var(--vocs-space_16);position:fixed;text-decoration:none;top:var(--vocs-space_8);z-index:999}.vocs_SkipLink:focus{clip:auto;-webkit-clip-path:none;clip-path:none;height:auto;width:auto}:root{--vocs-fontFamily_default: Inter}:root.dark{--vocs-fontFamily_default: Inter}:root{--vocs-color_background: #f0f0f0}:root.dark{--vocs-color_background: #111111}body,html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-font-feature-settings:"kern" 1;-o-font-feature-settings:"kern" 1;font-feature-settings:"kern" 1;font-kerning:normal}@font-face{font-family:Roboto Mono;src:url(/fonts/RobotoMono-VariableFont_wght.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Inter;src:url(/fonts/Inter-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:Inter;src:url(/fonts/Inter-SemiBold.ttf) format("truetype");font-weight:600;font-style:normal}@font-face{font-family:Inter;src:url(/fonts/Inter-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:Inter;src:url(/fonts/Inter-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@layer vocs_preflight{*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }}.pointer-events-none{pointer-events:none!important}.visible{visibility:visible!important}.static{position:static!important}.fixed{position:fixed!important}.absolute{position:absolute!important}.relative{position:relative!important}.inset-0{top:0!important;right:0!important;bottom:0!important;left:0!important}.z-0{z-index:0!important}.z-10{z-index:10!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-30{margin-top:7.5rem!important;margin-bottom:7.5rem!important}.-mb-10{margin-bottom:-2.5rem!important}.mr-8{margin-right:2rem!important}.mt-1{margin-top:.25rem!important}.mt-30{margin-top:7.5rem!important}.block{display:block!important}.inline{display:inline!important}.flex{display:flex!important}.table{display:table!important}.contents{display:contents!important}.hidden{display:none!important}.aspect-\[2\]{aspect-ratio:2!important}.h-3{height:.75rem!important}.h-fit{height:-moz-fit-content!important;height:fit-content!important}.h-full{height:100%!important}.max-h-\[600px\]{max-height:600px!important}.w-1\/2{width:50%!important}.w-3{width:.75rem!important}.w-32{width:8rem!important}.w-52{width:13rem!important}.w-\[22px\]{width:22px!important}.w-fit{width:-moz-fit-content!important;width:fit-content!important}.w-full{width:100%!important}.max-w-24{max-width:6rem!important}.max-w-3xl{max-width:840px!important}.max-w-screen-lg{max-width:1080px!important}.max-w-xl{max-width:610px!important}.flex-1{flex:1 1 0%!important}.shrink-0{flex-shrink:0!important}.grow{flex-grow:1!important}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite!important}.flex-col{flex-direction:column!important}.flex-wrap{flex-wrap:wrap!important}.items-start{align-items:flex-start!important}.items-center{align-items:center!important}.justify-center{justify-content:center!important}.justify-between{justify-content:space-between!important}.gap-1{gap:.25rem!important}.gap-10{gap:2.5rem!important}.gap-2{gap:.5rem!important}.gap-2\.5{gap:.625rem!important}.gap-3{gap:.75rem!important}.gap-30{gap:7.5rem!important}.gap-4{gap:1rem!important}.gap-5{gap:1.25rem!important}.gap-x-10{-moz-column-gap:2.5rem!important;column-gap:2.5rem!important}.gap-y-5{row-gap:1.25rem!important}.overflow-hidden{overflow:hidden!important}.text-wrap{text-wrap:wrap!important}.rounded{border-radius:.25rem!important}.rounded-full{border-radius:9999px!important}.rounded-lg{border-radius:.5rem!important}.rounded-md{border-radius:.375rem!important}.rounded-xl{border-radius:.75rem!important}.border{border-width:1px!important}.border-2{border-width:2px!important}.border-t{border-top-width:1px!important}.border-black-10{border-color:#0000001a!important}.border-b-black-80{border-bottom-color:#000c!important}.border-l-transparent{border-left-color:transparent!important}.border-r-black-80{border-right-color:#000c!important}.border-t-black-80{border-top-color:#000c!important}.bg-black-7{background-color:#00000012!important}.bg-transparent{background-color:transparent!important}.bg-white{--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important}.from-\[\#0A3F16\]{--tw-gradient-from: #0A3F16 var(--tw-gradient-from-position) !important;--tw-gradient-to: rgb(10 63 22 / 0) var(--tw-gradient-to-position) !important;--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important}.from-\[\#3400A0\]{--tw-gradient-from: #3400A0 var(--tw-gradient-from-position) !important;--tw-gradient-to: rgb(52 0 160 / 0) var(--tw-gradient-to-position) !important;--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important}.from-\[\#897031\]{--tw-gradient-from: #897031 var(--tw-gradient-from-position) !important;--tw-gradient-to: rgb(137 112 49 / 0) var(--tw-gradient-to-position) !important;--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position) !important}.object-cover{-o-object-fit:cover!important;object-fit:cover!important}.p-3{padding:.75rem!important}.p-4{padding:1rem!important}.px-3{padding-left:.75rem!important;padding-right:.75rem!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.px-5{padding-left:1.25rem!important;padding-right:1.25rem!important}.px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-0\.5{padding-top:.125rem!important;padding-bottom:.125rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-3{padding-top:.75rem!important;padding-bottom:.75rem!important}.py-5{padding-top:1.25rem!important;padding-bottom:1.25rem!important}.py-7{padding-top:1.75rem!important;padding-bottom:1.75rem!important}.pb-40{padding-bottom:10rem!important}.pl-1{padding-left:.25rem!important}.pr-4{padding-right:1rem!important}.pr-6{padding-right:1.5rem!important}.pt-15{padding-top:3.75rem!important}.pt-20{padding-top:5rem!important}.text-center{text-align:center!important}.text-3xl{font-size:1.875rem!important;line-height:2.25rem!important}.text-\[0\.625rem\]{font-size:.625rem!important}.text-sm{font-size:.875rem!important;line-height:1.25rem!important}.text-xl{font-size:1.25rem!important;line-height:1.75rem!important}.text-xs{font-size:.75rem!important;line-height:1rem!important}.font-bold{font-weight:700!important}.font-medium{font-weight:500!important}.lowercase{text-transform:lowercase!important}.leading-5{line-height:1.25rem!important}.leading-6{line-height:1.5rem!important}.leading-7{line-height:1.75rem!important}.leading-\[1rem\]{line-height:1rem!important}.text-black-80{color:#000c!important}.opacity-20{opacity:.2!important}.mix-blend-normal{mix-blend-mode:normal!important}.outline-none{outline:2px solid transparent!important;outline-offset:2px!important}.invert{--tw-invert: invert(100%) !important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.text-themed-primary{color:#000c}.text-themed-primary:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-themed-secondary{color:#00000080}.text-themed-secondary:is(.dark *){color:#ffffff80}.hover-fade{opacity:1;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.hover-fade:hover{opacity:.5}.bg-matrix-light{background:linear-gradient(0deg,#f0f0f0,#f0f0f099 30%,#f0f0f099 70%,#f0f0f0),linear-gradient(90deg,transparent 0%,rgba(240,240,240,.6) 40%,rgba(240,240,240,.6) 60%,transparent 100%),url(/img/matrix-bg-light.svg)!important;background-size:cover!important;background-position:center center!important}.bg-gradient-light{background:linear-gradient(180deg,#f0f0f0,#fff0 49.83%,#f0f0f0),linear-gradient(90deg,#d2e4ff,#d2e4ff80 25.3%,#fff0 49.83%,#d2e4ff80 75.47%,#d2e4ff)!important}#home-install .vocs_CodeGroup{display:flex;height:100%;flex-direction:column}#home-install .vocs_Tabs_content{flex:1}#home-install .vocs_Code{font-size:18px}.vocs_MobileTopNav_navigation{display:block!important}.tabs{display:flex}.tabs button{padding:10px 20px;cursor:pointer;border:none;background-color:transparent;border-bottom:3px solid transparent;transition:all .3s ease}.tabs button.active{border-bottom-color:#fff;font-weight:700}.tab-panels{padding-top:20px;animation:fadeIn .3s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;padding:1rem}.card{background-color:#3c393f;border-radius:10px;height:240px;padding:1rem;color:#fff;box-shadow:0 4px 8px #0000001a;display:flex;flex-direction:column;justify-content:space-between}.card-icon{font-size:2rem}.card-content{margin:auto;margin-top:1rem}.card-title{margin:0;font-size:1.25rem}.card-description{margin:0;font-size:1rem;opacity:.7}.card-link{text-decoration:none;color:inherit}table{text-align:center;width:100%;border-collapse:collapse}th,td{padding:8px;text-align:left;border:1px solid #3e3e3e;color:#fff}.network-logos{width:30px;height:auto}.cell-content{font-size:14px;float:left;display:flex;align-items:center;justify-content:center}.cell-image{width:30px;height:auto;float:left;margin:5px}.cell-text{min-width:140px}.widget{margin:10px auto auto;border:1px solid #3e3e3e;background-color:#1a1a1a;border-radius:20px;box-shadow:0 4px 8px #0000001a;overflow:hidden;width:400px;display:flex;flex-direction:column;align-items:center;padding:20px}.widget-body{width:100%;flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;margin-bottom:0}.widget-footer{width:100%;text-align:center;color:gray}.mint-image{border:1px solid #3e3e3e;border-radius:15px;max-width:100%;max-height:auto;margin:0}.mint-button{margin:5px;background-image:linear-gradient(to right,#7537f9,#651fff);color:#fff;padding:11px 24px;border-radius:30px;font-size:16px;font-weight:700;border:none;cursor:pointer;text-align:center;box-shadow:0 4px 8px #0003;transition:background-color .3s,box-shadow .3s}.mint-button:hover{background-image:linear-gradient(to right,#612cd2,#541ad1);box-shadow:0 6px 12px #0000004d}.dashed-box{margin:20px;padding:5px;border:2px dashed #541ad1}.video-container{position:relative;width:560px;height:315px}.preview-image{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer}.video-frame{position:absolute;top:0;left:0;width:100%;height:100%;border:none;display:none}.network-logo{border-radius:15px}.placeholder\:text-black-50::-moz-placeholder{color:#00000080!important}.placeholder\:text-black-50::placeholder{color:#00000080!important}.disabled\:pointer-events-none:disabled{pointer-events:none!important}.dark\:border-white-10:is(.dark *){border-color:#ffffff1a!important}.dark\:border-white-25:is(.dark *){border-color:#ffffff40!important}.dark\:border-b-white:is(.dark *){--tw-border-opacity: 1 !important;border-bottom-color:rgb(255 255 255 / var(--tw-border-opacity))!important}.dark\:border-r-white:is(.dark *){--tw-border-opacity: 1 !important;border-right-color:rgb(255 255 255 / var(--tw-border-opacity))!important}.dark\:border-t-white:is(.dark *){--tw-border-opacity: 1 !important;border-top-color:rgb(255 255 255 / var(--tw-border-opacity))!important}.dark\:bg-white-10:is(.dark *){background-color:#ffffff1a!important}.dark\:bg-white-15:is(.dark *){background-color:#ffffff26!important}.dark\:bg-gradient-to-b:is(.dark *){background-image:linear-gradient(to bottom,var(--tw-gradient-stops))!important}.dark\:text-white-80:is(.dark *){color:#fffc!important}.dark\:mix-blend-multiply:is(.dark *){mix-blend-mode:multiply!important}.dark\:invert-0:is(.dark *){--tw-invert: invert(0) !important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.dark\:bg-matrix-dark:is(.dark *){background:linear-gradient(0deg,#111 0%,transparent 30%,transparent 70%,#111 100%),linear-gradient(90deg,transparent 0%,rgba(17,17,17,.6) 40%,rgba(17,17,17,.6) 60%,transparent 100%),url(/img/matrix-bg-dark.svg)!important;background-size:cover!important;background-position:center center!important}.dark\:bg-gradient-dark:is(.dark *){background:linear-gradient(90deg,#1110,#111111bf,#1110),linear-gradient(180deg,#111,#1110 40%,#1110 60%,#111),linear-gradient(270deg,#0b6af940,#1d92ff4d)!important}.dark\:placeholder\:text-white-50:is(.dark *)::-moz-placeholder{color:#ffffff80!important}.dark\:placeholder\:text-white-50:is(.dark *)::placeholder{color:#ffffff80!important}@media (min-width: 848px){.md\:w-\[calc\(33\%-\(16px\/3\)\)\]{width:calc(33% - (16px / 3))!important}.md\:w-\[calc\(50\%-20px\)\]{width:calc(50% - 20px)!important}.md\:w-\[calc\(50\%-8px\)\]{width:calc(50% - 8px)!important}.md\:max-w-\[378px\]{max-width:378px!important}.md\:grow{flex-grow:1!important}.md\:flex-row{flex-direction:row!important}.md\:items-start{align-items:flex-start!important}.md\:pr-0{padding-right:0!important}}.vocs_Section{border-top:1px solid var(--vocs-color_border);margin-top:var(--vocs-space_56);padding-top:var(--vocs-space_24)}.vocs_Anchor{color:var(--vocs-color_link);font-weight:var(--vocs-fontWeight_medium);text-underline-offset:var(--vocs-space_2);text-decoration:underline;transition:color .1s}.vocs_Callout_danger .vocs_Anchor{color:var(--vocs-color_dangerText)}.vocs_Callout_danger .vocs_Anchor:hover{color:var(--vocs-color_dangerTextHover)}.vocs_Callout_info .vocs_Anchor{color:var(--vocs-color_infoText)}.vocs_Callout_info .vocs_Anchor:hover{color:var(--vocs-color_infoTextHover)}.vocs_Callout_success .vocs_Anchor{color:var(--vocs-color_successText)}.vocs_Callout_success .vocs_Anchor:hover{color:var(--vocs-color_successTextHover)}.vocs_Callout_tip .vocs_Anchor{color:var(--vocs-color_tipText)}.vocs_Callout_tip .vocs_Anchor:hover{color:var(--vocs-color_tipTextHover)}.vocs_Callout_warning .vocs_Anchor{color:var(--vocs-color_warningText)}.vocs_Callout_warning .vocs_Anchor:hover{color:var(--vocs-color_warningTextHover)}.vocs_Anchor:hover{color:var(--vocs-color_linkHover)}.vocs_Section a.data-footnote-backref{color:var(--vocs-color_link);font-weight:var(--vocs-fontWeight_medium);text-underline-offset:var(--vocs-space_2);text-decoration:underline}.vocs_Section a.data-footnote-backref:hover{color:var(--vocs-color_linkHover)}.vocs_Autolink{opacity:0;margin-top:.1em;position:absolute;transition:opacity .1s,transform .1s;transform:translate(-2px) scale(.98)}.vocs_Heading:hover .vocs_Autolink{opacity:1;transform:translate(0) scale(1)}.vocs_Pre_wrapper{position:relative}.vocs_Code{transition:color .1s}:not(.vocs_Pre)>.vocs_Code{background-color:var(--vocs-color_codeInlineBackground);border:1px solid var(--vocs-color_codeInlineBorder);border-radius:var(--vocs-borderRadius_4);color:var(--vocs-color_codeInlineText);font-size:var(--vocs-fontSize_code);padding:var(--vocs-space_3) var(--vocs-space_6)}.vocs_Anchor>.vocs_Code{color:var(--vocs-color_link);text-decoration:underline;text-underline-offset:var(--vocs-space_2)}.vocs_Anchor:hover>.vocs_Code{color:var(--vocs-color_linkHover)}.vocs_Callout_danger .vocs_Code{color:var(--vocs-color_dangerText)}.vocs_Callout_info .vocs_Code{color:var(--vocs-color_infoText)}.vocs_Callout_success .vocs_Code{color:var(--vocs-color_successText)}.vocs_Callout_tip .vocs_Code{color:var(--vocs-color_tipText)}.vocs_Callout_warning .vocs_Code{color:var(--vocs-color_warningText)}.vocs_Heading .vocs_Code{color:inherit}.twoslash-popup-info-hover>.vocs_Code{background-color:inherit;padding:0;text-wrap:wrap}.twoslash-popup-jsdoc .vocs_Code{display:inline}.vocs_Authors{color:var(--vocs-color_text3);font-size:var(--vocs-fontSize_14)}.vocs_Authors_authors{color:var(--vocs-color_text)}.vocs_Authors_link{text-decoration:underline;text-underline-offset:2px}.vocs_Authors_link:hover{color:var(--vocs-color_text2)}.vocs_Authors_separator{color:var(--vocs-color_text3)}.vocs_BlogPosts{display:flex;flex-direction:column;gap:var(--vocs-space_32)}.vocs_BlogPosts_description{margin-top:var(--vocs-space_16)}.vocs_BlogPosts_divider{border-color:var(--vocs-color_background4)}.vocs_BlogPosts_post:hover .vocs_BlogPosts_readMore{color:var(--vocs-color_textAccent)}.vocs_BlogPosts_title{font-size:var(--vocs-fontSize_h2);font-weight:var(--vocs-fontWeight_semibold)}.vocs_Sponsors{border-radius:var(--vocs-borderRadius_8);display:flex;flex-direction:column;gap:var(--vocs-space_4);overflow:hidden}.vocs_Sponsors_title{background-color:var(--vocs-color_background3);color:var(--vocs-color_text3);font-size:var(--vocs-fontSize_13);font-weight:var(--vocs-fontWeight_medium);padding:var(--vocs-space_4) 0;text-align:center}.vocs_Sponsors_row{display:flex;flex-direction:row;gap:var(--vocs-space_4)}.vocs_Sponsors_column{align-items:center;background-color:var(--vocs-color_background3);display:flex;justify-content:center;padding:var(--vocs-space_32);width:calc(var(--vocs_Sponsors_columns) * 100%)}.vocs_Sponsors_sponsor{transition:background-color .1s}.vocs_Sponsors_sponsor:hover{background-color:var(--vocs-color_background5)}.dark .vocs_Sponsors_sponsor:hover{background-color:var(--vocs-color_white)}.vocs_Sponsors_image{filter:grayscale(1);height:var(--vocs_Sponsors_height);transition:filter .1s}.dark .vocs_Sponsors_image{filter:grayscale(1) invert(1)}.vocs_Sponsors_column:hover .vocs_Sponsors_image{filter:none}.vocs_AutolinkIcon{background-color:var(--vocs-color_textAccent);display:inline-block;margin-left:.25em;height:.8em;width:.8em;-webkit-mask:var(--vocs_AutolinkIcon_iconUrl) no-repeat center / contain;mask:var(--vocs_AutolinkIcon_iconUrl) no-repeat center / contain;transition:background-color .1s}.vocs_Autolink:hover .vocs_AutolinkIcon{background-color:var(--vocs-color_textAccentHover)}@media screen and (max-width: 720px){.vocs_CodeGroup{border-radius:0;border-right:none;border-left:none;margin-left:calc(-1 * var(--vocs-space_16));margin-right:calc(-1 * var(--vocs-space_16))}}.vocs_Steps{border-left:1.5px solid var(--vocs-color_border);counter-reset:step;padding-left:var(--vocs-space_24);margin-left:var(--vocs-space_12);margin-top:var(--vocs-space_24)}@media screen and (max-width: 720px){.vocs_Steps{margin-left:var(--vocs-space_4)}}.vocs_Subtitle{color:var(--vocs-color_text2);font-size:var(--vocs-fontSize_subtitle);font-weight:var(--vocs-fontWeight_regular);letter-spacing:-.02em;line-height:var(--vocs-lineHeight_heading);margin-top:var(--vocs-space_4);text-wrap:balance}.vocs_HorizontalRule{border-top:1px solid var(--vocs-color_hr);margin-bottom:var(--vocs-space_16)}.vocs_ListItem{line-height:var(--vocs-lineHeight_listItem)}.vocs_ListItem:not(:last-child){margin-bottom:.5em}.vocs_CopyButton{align-items:center;background-color:color-mix(in srgb,var(--vocs-color_background2) 75%,transparent);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);border:1px solid var(--vocs-color_border);border-radius:var(--vocs-borderRadius_4);color:var(--vocs-color_text3);display:flex;justify-content:center;position:absolute;right:var(--vocs-space_18);top:var(--vocs-space_18);opacity:0;height:32px;width:32px;transition:background-color .15s,opacity .15s;z-index:var(--vocs-zIndex_surface)}.vocs_CopyButton:hover{background-color:var(--vocs-color_background4);transition:background-color .05s}.vocs_CopyButton:focus-visible{background-color:var(--vocs-color_background4);opacity:1;transition:background-color .05s}.vocs_CopyButton:hover:active{background-color:var(--vocs-color_background2)}.vocs_Pre:hover .vocs_CopyButton{opacity:1}.vocs_CodeTitle{align-items:center;background-color:var(--vocs-color_codeTitleBackground);border-bottom:1px solid var(--vocs-color_border);color:var(--vocs-color_text3);display:flex;font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_medium);gap:var(--vocs-space_6);padding:var(--vocs-space_8) var(--vocs-space_24)}.vocs_CodeGroup .vocs_CodeTitle{display:none}@media screen and (max-width: 720px){.vocs_CodeTitle{border-radius:0;padding-left:var(--vocs-space_16);padding-right:var(--vocs-space_16)}}.vocs_CalloutTitle{font-size:var(--vocs-fontSize_12);letter-spacing:.02em;text-transform:uppercase}.vocs_Strong{font-weight:var(--vocs-fontWeight_semibold)}.vocs_Content>.vocs_Strong{display:block}.vocs_Callout>.vocs_Strong{display:block;margin-bottom:var(--vocs-space_4)}.vocs_Summary{cursor:pointer}.vocs_Summary.vocs_Summary:hover{text-decoration:underline}.vocs_Details[open] .vocs_Summary{margin-bottom:var(--vocs-space_4)}.vocs_Callout .vocs_Summary{font-weight:var(--vocs-fontWeight_medium)}.vocs_Details .vocs_Summary.vocs_Summary{margin-bottom:0}.vocs_Table{display:block;border-collapse:collapse;overflow-x:auto;margin-bottom:var(--vocs-space_24)}.vocs_TableCell{border:1px solid var(--vocs-color_tableBorder);font-size:var(--vocs-fontSize_td);padding:var(--vocs-space_8) var(--vocs-space_12)}.vocs_TableHeader{border:1px solid var(--vocs-color_tableBorder);background-color:var(--vocs-color_tableHeaderBackground);color:var(--vocs-color_tableHeaderText);font-size:var(--vocs-fontSize_th);font-weight:var(--vocs-fontWeight_medium);padding:var(--vocs-space_8) var(--vocs-space_12);text-align:left}.vocs_TableHeader[align=center]{text-align:center}.vocs_TableHeader[align=right]{text-align:right}.vocs_TableRow{border-top:1px solid var(--vocs-color_tableBorder)}.vocs_TableRow:nth-child(2n){background-color:var(--vocs-color_background2)}.vocs_Button_button{align-items:center;background:var(--vocs-color_background4);border:1px solid var(--vocs-color_border);border-radius:var(--vocs-borderRadius_4);color:var(--vocs-color_text);display:flex;font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_medium);height:36px;padding:0 var(--vocs-space_16);transition:background .1s;white-space:pre;width:-moz-fit-content;width:fit-content}.vocs_Button_button:hover{background:var(--vocs-color_background3)}.vocs_Button_button_accent{background:var(--vocs-color_backgroundAccent);color:var(--vocs-color_backgroundAccentText);border:1px solid var(--vocs-color_borderAccent)}.vocs_Button_button_accent:hover{background:var(--vocs-color_backgroundAccentHover)}.vocs_HomePage{align-items:center;display:flex;flex-direction:column;padding-top:var(--vocs-space_64);text-align:center;gap:var(--vocs-space_32)}.vocs_HomePage_logo{display:flex;justify-content:center;height:48px}.vocs_HomePage_title{font-size:var(--vocs-fontSize_64);font-weight:var(--vocs-fontWeight_semibold);line-height:1em}.vocs_HomePage_tagline{color:var(--vocs-color_text2);font-size:var(--vocs-fontSize_20);font-weight:var(--vocs-fontWeight_medium);line-height:1.5em}.vocs_HomePage_title+.vocs_HomePage_tagline{margin-top:calc(-1 * var(--vocs-space_8))}.vocs_HomePage_description{color:var(--vocs-color_text);font-size:var(--vocs-fontSize_16);font-weight:var(--vocs-fontWeight_regular);line-height:var(--vocs-lineHeight_paragraph)}.vocs_HomePage_tagline+.vocs_HomePage_description{margin-top:calc(-1 * var(--vocs-space_8))}.vocs_HomePage_buttons{display:flex;gap:var(--vocs-space_16)}.vocs_HomePage_tabs{min-width:300px}.vocs_HomePage_tabsList{display:flex;justify-content:center}.vocs_HomePage_tabsContent{color:var(--vocs-color_text2);font-family:var(--vocs-fontFamily_mono)}.vocs_HomePage_packageManager{color:var(--vocs-color_textAccent)}@media screen and (max-width: 720px){.vocs_HomePage{padding-top:var(--vocs-space_32)}.vocs_HomePage_logo{height:36px}} diff --git a/assets/style-DH5g7dF6.css b/assets/style-DH5g7dF6.css deleted file mode 100644 index 84fd960928..0000000000 --- a/assets/style-DH5g7dF6.css +++ /dev/null @@ -1 +0,0 @@ -@layer vocs_preflight;:root{--vocs-color_white: rgba(255 255 255 / 100%);--vocs-color_black: rgba(0 0 0 / 100%);--vocs-color_background: rgba(255 255 255 / 100%);--vocs-color_background2: #f9f9f9;--vocs-color_background3: #f6f6f6;--vocs-color_background4: #f0f0f0;--vocs-color_background5: #e8e8e8;--vocs-color_backgroundAccent: #5b5bd6;--vocs-color_backgroundAccentHover: #5151cd;--vocs-color_backgroundAccentText: rgba(255 255 255 / 100%);--vocs-color_backgroundBlueTint: #008cff0b;--vocs-color_backgroundDark: #f9f9f9;--vocs-color_backgroundGreenTint: #00a32f0b;--vocs-color_backgroundGreenTint2: #00a43319;--vocs-color_backgroundIrisTint: #0000ff07;--vocs-color_backgroundRedTint: #ff000008;--vocs-color_backgroundRedTint2: #f3000d14;--vocs-color_backgroundYellowTint: #f4dd0016;--vocs-color_border: #ececec;--vocs-color_border2: #cecece;--vocs-color_borderAccent: #5753c6;--vocs-color_borderBlue: #009eff2a;--vocs-color_borderGreen: #019c393b;--vocs-color_borderIris: #dadcff;--vocs-color_borderRed: #ff000824;--vocs-color_borderYellow: #ffd5008f;--vocs-color_heading: #202020;--vocs-color_inverted: rgba(0 0 0 / 100%);--vocs-color_shadow: #0000000f;--vocs-color_shadow2: #00000006;--vocs-color_text: #4c4c4c;--vocs-color_text2: #646464;--vocs-color_text3: #838383;--vocs-color_text4: #bbbbbb;--vocs-color_textAccent: #5753c6;--vocs-color_textAccentHover: #272962;--vocs-color_textBlue: #0d74ce;--vocs-color_textBlueHover: #113264;--vocs-color_textGreen: #218358;--vocs-color_textGreenHover: #193b2d;--vocs-color_textIris: #5753c6;--vocs-color_textIrisHover: #272962;--vocs-color_textRed: #ce2c31;--vocs-color_textRedHover: #641723;--vocs-color_textYellow: #9e6c00;--vocs-color_textYellowHover: #473b1f;--vocs-color_title: #202020}:root.dark{--vocs-color_white: rgba(255 255 255 / 100%);--vocs-color_black: rgba(0 0 0 / 100%);--vocs-color_background: #232225;--vocs-color_background2: #2b292d;--vocs-color_background3: #2e2c31;--vocs-color_background4: #323035;--vocs-color_background5: #3c393f;--vocs-color_backgroundAccent: #5b5bd6;--vocs-color_backgroundAccentHover: #5753c6;--vocs-color_backgroundAccentText: rgba(255 255 255 / 100%);--vocs-color_backgroundBlueTint: #008ff519;--vocs-color_backgroundDark: #1e1d1f;--vocs-color_backgroundGreenTint: #00a43319;--vocs-color_backgroundGreenTint2: #00a83829;--vocs-color_backgroundIrisTint: #000bff19;--vocs-color_backgroundRedTint: #f3000d14;--vocs-color_backgroundRedTint2: #ff000824;--vocs-color_backgroundYellowTint: #f4dd0016;--vocs-color_border: #3c393f;--vocs-color_border2: #6f6d78;--vocs-color_borderAccent: #6e6ade;--vocs-color_borderBlue: #009eff2a;--vocs-color_borderGreen: #019c393b;--vocs-color_borderIris: #303374;--vocs-color_borderRed: #ff000824;--vocs-color_borderYellow: #f4dd0016;--vocs-color_heading: #e9e9ea;--vocs-color_inverted: rgba(255 255 255 / 100%);--vocs-color_shadow: #00000000;--vocs-color_shadow2: rgba(0, 0, 0, .05);--vocs-color_text: #cfcfcf;--vocs-color_text2: #bdbdbe;--vocs-color_text3: #a7a7a8;--vocs-color_text4: #656567;--vocs-color_textAccent: #b1a9ff;--vocs-color_textAccentHover: #6e6ade;--vocs-color_textBlue: #70b8ff;--vocs-color_textBlueHover: #3b9eff;--vocs-color_textGreen: #3dd68c;--vocs-color_textGreenHover: #33b074;--vocs-color_textIris: #b1a9ff;--vocs-color_textIrisHover: #6e6ade;--vocs-color_textRed: #ff9592;--vocs-color_textRedHover: #ec5d5e;--vocs-color_textYellow: #f5e147;--vocs-color_textYellowHover: #e2a336;--vocs-color_title: rgba(255 255 255 / 100%)}:root{--vocs-color_blockquoteBorder: var(--vocs-color_border);--vocs-color_blockquoteText: var(--vocs-color_text3);--vocs-color_dangerBackground: var(--vocs-color_backgroundRedTint);--vocs-color_dangerBorder: var(--vocs-color_borderRed);--vocs-color_dangerText: var(--vocs-color_textRed);--vocs-color_dangerTextHover: var(--vocs-color_textRedHover);--vocs-color_infoBackground: var(--vocs-color_backgroundBlueTint);--vocs-color_infoBorder: var(--vocs-color_borderBlue);--vocs-color_infoText: var(--vocs-color_textBlue);--vocs-color_infoTextHover: var(--vocs-color_textBlueHover);--vocs-color_noteBackground: var(--vocs-color_background2);--vocs-color_noteBorder: var(--vocs-color_border);--vocs-color_noteText: var(--vocs-color_text2);--vocs-color_successBackground: var(--vocs-color_backgroundGreenTint);--vocs-color_successBorder: var(--vocs-color_borderGreen);--vocs-color_successText: var(--vocs-color_textGreen);--vocs-color_successTextHover: var(--vocs-color_textGreenHover);--vocs-color_tipBackground: var(--vocs-color_backgroundIrisTint);--vocs-color_tipBorder: var(--vocs-color_borderIris);--vocs-color_tipText: var(--vocs-color_textIris);--vocs-color_tipTextHover: var(--vocs-color_textIrisHover);--vocs-color_warningBackground: var(--vocs-color_backgroundYellowTint);--vocs-color_warningBorder: var(--vocs-color_borderYellow);--vocs-color_warningText: var(--vocs-color_textYellow);--vocs-color_warningTextHover: var(--vocs-color_textYellowHover);--vocs-color_codeBlockBackground: var(--vocs-color_background2);--vocs-color_codeCharacterHighlightBackground: var(--vocs-color_background5);--vocs-color_codeHighlightBackground: var(--vocs-color_background4);--vocs-color_codeHighlightBorder: var(--vocs-color_border2);--vocs-color_codeInlineBackground: var(--vocs-color_background4);--vocs-color_codeInlineBorder: var(--vocs-color_border);--vocs-color_codeInlineText: var(--vocs-color_textAccent);--vocs-color_codeTitleBackground: var(--vocs-color_background4);--vocs-color_lineNumber: var(--vocs-color_text4);--vocs-color_hr: var(--vocs-color_border);--vocs-color_link: var(--vocs-color_textAccent);--vocs-color_linkHover: var(--vocs-color_textAccentHover);--vocs-color_searchHighlightBackground: var(--vocs-color_borderAccent);--vocs-color_searchHighlightText: var(--vocs-color_background);--vocs-color_tableBorder: var(--vocs-color_border);--vocs-color_tableHeaderBackground: var(--vocs-color_background2);--vocs-color_tableHeaderText: var(--vocs-color_text2);--vocs-borderRadius_0: 0;--vocs-borderRadius_2: 2px;--vocs-borderRadius_3: 3px;--vocs-borderRadius_4: 4px;--vocs-borderRadius_6: 6px;--vocs-borderRadius_8: 8px;--vocs-fontFamily_default: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;--vocs-fontFamily_mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--vocs-fontSize_9: .5625rem;--vocs-fontSize_11: .6875rem;--vocs-fontSize_12: .75rem;--vocs-fontSize_13: .8125rem;--vocs-fontSize_14: .875rem;--vocs-fontSize_15: .9375rem;--vocs-fontSize_16: 1rem;--vocs-fontSize_18: 1.125rem;--vocs-fontSize_20: 1.25rem;--vocs-fontSize_24: 1.5rem;--vocs-fontSize_32: 2rem;--vocs-fontSize_64: 3rem;--vocs-fontSize_root: 16px;--vocs-fontSize_h1: var(--vocs-fontSize_32);--vocs-fontSize_h2: var(--vocs-fontSize_24);--vocs-fontSize_h3: var(--vocs-fontSize_20);--vocs-fontSize_h4: var(--vocs-fontSize_18);--vocs-fontSize_h5: var(--vocs-fontSize_16);--vocs-fontSize_h6: var(--vocs-fontSize_16);--vocs-fontSize_calloutCodeBlock: .8em;--vocs-fontSize_code: .875em;--vocs-fontSize_codeBlock: var(--vocs-fontSize_14);--vocs-fontSize_lineNumber: var(--vocs-fontSize_15);--vocs-fontSize_subtitle: var(--vocs-fontSize_20);--vocs-fontSize_th: var(--vocs-fontSize_14);--vocs-fontSize_td: var(--vocs-fontSize_14);--vocs-fontWeight_regular: 300;--vocs-fontWeight_medium: 400;--vocs-fontWeight_semibold: 500;--vocs-lineHeight_code: 1.75em;--vocs-lineHeight_heading: 1.5em;--vocs-lineHeight_listItem: 1.5em;--vocs-lineHeight_outlineItem: 1em;--vocs-lineHeight_paragraph: 1.75em;--vocs-lineHeight_sidebarItem: 1.375em;--vocs-space_0: 0px;--vocs-space_1: 1px;--vocs-space_2: .125rem;--vocs-space_3: .1875rem;--vocs-space_4: .25rem;--vocs-space_6: .375rem;--vocs-space_8: .5rem;--vocs-space_12: .75rem;--vocs-space_14: .875rem;--vocs-space_16: 1rem;--vocs-space_18: 1.125rem;--vocs-space_20: 1.25rem;--vocs-space_22: 1.375rem;--vocs-space_24: 1.5rem;--vocs-space_28: 1.75rem;--vocs-space_32: 2rem;--vocs-space_36: 2.25rem;--vocs-space_40: 2.5rem;--vocs-space_44: 2.75rem;--vocs-space_48: 3rem;--vocs-space_56: 3.5rem;--vocs-space_64: 4rem;--vocs-space_72: 4.5rem;--vocs-space_80: 5rem;--vocs-zIndex_backdrop: 69420;--vocs-zIndex_drawer: 69421;--vocs-zIndex_gutterRight: 11;--vocs-zIndex_gutterLeft: 14;--vocs-zIndex_gutterTop: 13;--vocs-zIndex_gutterTopCurtain: 12;--vocs-zIndex_popover: 69422;--vocs-zIndex_surface: 10;--vocs-content_horizontalPadding: var(--vocs-space_48);--vocs-content_verticalPadding: var(--vocs-space_32);--vocs-content_width: calc(70ch + (var(--vocs-content_horizontalPadding) * 2));--vocs-outline_width: 280px;--vocs-sidebar_horizontalPadding: var(--vocs-space_24);--vocs-sidebar_verticalPadding: var(--vocs-space_0);--vocs-sidebar_width: 300px;--vocs-topNav_height: 60px;--vocs-topNav_horizontalPadding: var(--vocs-content_horizontalPadding);--vocs-topNav_curtainHeight: 40px}@media screen and (max-width: 1080px){:root{--vocs-content_verticalPadding: var(--vocs-space_48);--vocs-content_horizontalPadding: var(--vocs-space_24);--vocs-sidebar_horizontalPadding: var(--vocs-space_16);--vocs-sidebar_verticalPadding: var(--vocs-space_16);--vocs-sidebar_width: 300px;--vocs-topNav_height: 48px}}@media screen and (max-width: 720px){:root{--vocs-content_horizontalPadding: var(--vocs-space_16);--vocs-content_verticalPadding: var(--vocs-space_32)}}.vocs_Banner{background-color:var(--vocs_Banner_bannerBackgroundColor, var(--vocs-color_backgroundAccent));border-bottom:1px solid var(--vocs_Banner_bannerBackgroundColor, var(--vocs-color_borderAccent));color:var(--vocs_Banner_bannerTextColor, var(--vocs-color_backgroundAccentText));height:var(--vocs_Banner_bannerHeight, 36px);position:fixed;top:0;width:100%;z-index:var(--vocs-zIndex_gutterTop)}.vocs_Banner_content{font-size:var(--vocs-fontSize_14);overflow-x:scroll;padding-left:var(--vocs-space_8);padding-right:var(--vocs-space_8);margin-right:var(--vocs-space_24);-ms-overflow-style:none;scrollbar-width:none;white-space:pre}.vocs_Banner_content::-webkit-scrollbar{display:none}.vocs_Banner_inner{align-items:center;display:flex;height:100%;justify-content:center;position:relative;width:100%}.vocs_Banner_closeButton{align-items:center;background-color:var(--vocs_Banner_bannerBackgroundColor, var(--vocs-color_backgroundAccent));display:flex;justify-content:center;height:100%;position:absolute;right:0;width:var(--vocs-space_24)}.vocs_Banner_content a{font-weight:400;text-underline-offset:2px;text-decoration:underline}@media screen and (max-width: 1080px){.vocs_Banner{position:initial}}.vocs_DocsLayout{--vocs_DocsLayout_leftGutterWidth: max(calc((100vw - var(--vocs-content_width)) / 2), var(--vocs-sidebar_width))}.vocs_DocsLayout_content{background-color:var(--vocs-color_background);margin-left:auto;margin-right:auto;max-width:var(--vocs-content_width);min-height:100vh}.vocs_DocsLayout_content_withSidebar{margin-left:var(--vocs_DocsLayout_leftGutterWidth);margin-right:unset}.vocs_DocsLayout_gutterLeft{background-color:var(--vocs-color_backgroundDark);justify-content:flex-end;display:flex;height:100vh;position:fixed;top:var(--vocs_Banner_bannerHeight, 0px);width:var(--vocs_DocsLayout_leftGutterWidth);z-index:var(--vocs-zIndex_gutterLeft)}.vocs_DocsLayout_gutterTop{align-items:center;background-color:color-mix(in srgb,var(--vocs-color_background) 98%,transparent);height:var(--vocs-topNav_height);width:100vw;z-index:var(--vocs-zIndex_gutterTop)}.vocs_DocsLayout_gutterTopCurtain{display:flex;height:var(--vocs-topNav_curtainHeight);width:100vw;z-index:var(--vocs-zIndex_gutterTopCurtain)}.vocs_DocsLayout_gutterTopCurtain_hidden{background:unset;display:none}.vocs_DocsLayout_gutterRight{display:flex;height:100vh;overflow-y:auto;padding:calc(var(--vocs-content_verticalPadding) + var(--vocs-topNav_height) + var(--vocs-space_8)) var(--vocs-space_24) 0 0;position:fixed;top:var(--vocs_Banner_bannerHeight, 0px);right:0;width:calc((100vw - var(--vocs-content_width)) / 2);z-index:var(--vocs-zIndex_gutterRight)}.vocs_DocsLayout_gutterRight::-webkit-scrollbar{display:none}.vocs_DocsLayout_gutterRight_withSidebar{width:calc(100vw - var(--vocs-content_width) - var(--vocs_DocsLayout_leftGutterWidth))}.vocs_DocsLayout_outlinePopover{display:none;overflow-y:auto;height:calc(100vh - var(--vocs-topNav_height) - var(--vocs-topNav_curtainHeight))}.vocs_DocsLayout_sidebar{padding:var(--vocs-space_0) var(--vocs-sidebar_horizontalPadding) var(--vocs-space_24) var(--vocs-sidebar_horizontalPadding)}.vocs_DocsLayout_sidebarDrawer{display:none}@media screen and (max-width: 720px){.vocs_DocsLayout_content{overflow-x:hidden}}@media screen and (min-width: 1081px){.vocs_DocsLayout_content_withTopNav{padding-top:calc(var(--vocs-topNav_height) + var(--vocs_Banner_bannerHeight, 0px))}.vocs_DocsLayout_gutterTop{padding-left:calc(var(--vocs_DocsLayout_leftGutterWidth) - var(--vocs-sidebar_width));padding-right:calc(var(--vocs_DocsLayout_leftGutterWidth) - var(--vocs-sidebar_width));position:fixed;top:var(--vocs_Banner_bannerHeight, 0px)}.vocs_DocsLayout_gutterTop_offsetLeftGutter{padding-left:var(--vocs_DocsLayout_leftGutterWidth)}.vocs_DocsLayout_gutterTopCurtain{position:fixed;top:calc(var(--vocs-topNav_height) + var(--vocs_Banner_bannerHeight, 0px))}.vocs_DocsLayout_gutterTopCurtain_withSidebar{margin-left:var(--vocs_DocsLayout_leftGutterWidth)}}@media screen and (max-width: 1080px){.vocs_DocsLayout_content{margin-left:auto;margin-right:auto}.vocs_DocsLayout_gutterLeft{display:none}.vocs_DocsLayout_gutterTop{position:initial}.vocs_DocsLayout_gutterTop_sticky,.vocs_DocsLayout_gutterTopCurtain{position:sticky;top:0}.vocs_DocsLayout_outlinePopover,.vocs_DocsLayout_sidebarDrawer{display:block}}@media screen and (max-width: 1280px){.vocs_DocsLayout_gutterRight{display:none}}@layer vocs_reset_reset;html,body,.vocs_DocsLayout{font-family:var(--vocs-fontFamily_default);font-feature-settings:"rlig" 1,"calt" 1;font-size:var(--vocs-fontSize_root)}button,select{text-transform:none;-webkit-appearance:button;-moz-appearance:button;appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{outline:auto}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none;-moz-appearance:none;appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;-moz-appearance:button;appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1}input::placeholder,textarea::placeholder{opacity:1}button,[role=button]{cursor:pointer}:disabled{overflow:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}@layer vocs_reset_reset{*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid}*:focus-visible{outline:2px solid var(--vocs-color_borderAccent);outline-offset:2px;outline-style:dashed}html,body{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:inherit;margin:0;padding:0;border:0;text-rendering:optimizeLegibility}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit;text-wrap:balance}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--vocs-fontFamily_mono);font-size:var(--vocs-fontSize_root)}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{border-color:inherit;border-collapse:collapse;text-indent:0}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;color:inherit;margin:0;padding:0}}.vocs_Tabs{background-color:var(--vocs-color_codeBlockBackground);border:1px solid var(--vocs-color_codeInlineBorder);border-radius:var(--vocs-borderRadius_4)}.vocs_Tabs_list{background-color:var(--vocs-color_codeTitleBackground);border-bottom:1px solid var(--vocs-color_border);border-top-left-radius:var(--vocs-borderRadius_4);border-top-right-radius:var(--vocs-borderRadius_4);display:flex;padding:var(--vocs-space_0) var(--vocs-space_14)}.vocs_Tabs_trigger{border-bottom:2px solid transparent;color:var(--vocs-color_text3);font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_medium);padding:var(--vocs-space_8) var(--vocs-space_8) var(--vocs-space_6) var(--vocs-space_8);transition:color .1s}.vocs_Tabs_trigger:hover{color:var(--vocs-color_text)}.vocs_Tabs_trigger[data-state=active]{border-bottom:2px solid var(--vocs-color_borderAccent);color:var(--vocs-color_text)}.vocs_Tabs_content{background-color:var(--vocs-color_codeBlockBackground)}.vocs_Tabs_content:not([data-shiki=true]){padding:var(--vocs-space_20) var(--vocs-space_22)}.vocs_Tabs pre{margin-bottom:var(--vocs-space_0)}@media screen and (max-width: 720px){.vocs_Tabs_list{border-radius:0;padding:var(--vocs-space_0) var(--vocs-space_8)}.vocs_Tabs_content:not([data-shiki=true]){padding:var(--vocs-space_20) var(--vocs-space_16)}.vocs_Tabs pre{margin:unset}}.vocs_CodeBlock{border:1px solid var(--vocs-color_codeInlineBorder);border-radius:var(--vocs-borderRadius_4)}.vocs_Tabs .vocs_CodeBlock,.vocs_Callout .vocs_CodeBlock{border:none;margin-left:unset;margin-right:unset}.vocs_CodeBlock code{display:grid;font-size:var(--vocs-fontSize_codeBlock)}.vocs_Callout .vocs_CodeBlock code{font-size:var(--vocs-fontSize_calloutCodeBlock)}.vocs_CodeBlock pre{background-color:var(--vocs-color_codeBlockBackground);border-radius:var(--vocs-borderRadius_4);overflow-x:auto;padding:var(--vocs-space_20) var(--vocs-space_0)}.vocs_Callout .vocs_CodeBlock pre{background-color:color-mix(in srgb,var(--vocs-color_codeBlockBackground) 65%,transparent)!important;border:1px solid var(--vocs-color_codeInlineBorder);border-radius:var(--vocs-borderRadius_4);padding:var(--vocs-space_12) var(--vocs-space_0)}.vocs_CodeBlock .line{border-left:2px solid transparent;padding:var(--vocs-space_0) var(--vocs-space_22);line-height:var(--vocs-lineHeight_code)}.vocs_Callout .vocs_CodeBlock .line{padding:var(--vocs-space_0) var(--vocs-space_12)}.vocs_CodeBlock .twoslash-popup-info .line{padding:var(--vocs-space_0) var(--vocs-space_4)}.vocs_CodeBlock .twoslash-popup-info-hover .line{display:inline-block;padding:var(--vocs-space_0) var(--vocs-space_8)}.vocs_CodeBlock .twoslash-error-line,.vocs_CodeBlock .twoslash-tag-line{padding:var(--vocs-space_0) var(--vocs-space_22)}.vocs_CodeBlock [data-line-numbers]{counter-reset:line}.vocs_CodeBlock [data-line-numbers]>.line{padding:var(--vocs-space_0) var(--vocs-space_16)}.vocs_CodeBlock [data-line-numbers]>.line:before{content:counter(line);color:var(--vocs-color_lineNumber);display:inline-block;font-size:var(--vocs-fontSize_lineNumber);margin-right:var(--vocs-space_16);text-align:right;width:1rem}.vocs_CodeBlock [data-line-numbers]>.line:not(.diff.remove+.diff.add):before{counter-increment:line}.vocs_CodeBlock [data-line-numbers]>.line.diff:after{margin-left:calc(-1 * var(--vocs-space_4))}.vocs_CodeBlock .highlighted{background-color:var(--vocs-color_codeHighlightBackground);border-left:2px solid var(--vocs-color_codeHighlightBorder);box-sizing:content-box}.vocs_CodeBlock .highlighted-word{border-radius:var(--vocs-borderRadius_2);background-color:var(--vocs-color_codeCharacterHighlightBackground)!important;box-shadow:0 0 0 4px var(--vocs-color_codeCharacterHighlightBackground)}.vocs_CodeBlock .has-diff{position:relative}.vocs_CodeBlock .line.diff:after{position:absolute;left:var(--vocs-space_8)}.vocs_CodeBlock .line.diff.add{background-color:var(--vocs-color_backgroundGreenTint2)}.vocs_CodeBlock .line.diff.add:after{content:"+";color:var(--vocs-color_textGreen)}.vocs_CodeBlock .line.diff.remove{background-color:var(--vocs-color_backgroundRedTint2);opacity:.6}.vocs_CodeBlock .line.diff.remove>span{filter:grayscale(1)}.vocs_CodeBlock .line.diff.remove:after{content:"-";color:var(--vocs-color_textRed)}.vocs_CodeBlock .has-focused>code>.line:not(.focused),.vocs_CodeBlock .has-focused>code>.twoslash-meta-line:not(.focused){opacity:.3;transition:opacity .2s}.vocs_CodeBlock:hover .has-focused .line:not(.focused),.vocs_CodeBlock:hover .has-focused .twoslash-meta-line:not(.focused){opacity:1;transition:opacity .2s}@media screen and (max-width: 720px){.vocs_CodeBlock{border-radius:0;border-right:none;border-left:none;margin-left:calc(-1 * var(--vocs-space_16));margin-right:calc(-1 * var(--vocs-space_16))}.vocs_CodeBlock pre{border-radius:0}.vocs_CodeBlock .line,.vocs_CodeBlock .twoslash-error-line,.vocs_CodeBlock .twoslash-tag-line{padding:0 var(--vocs-space_16)}.vocs_CodeBlock .line.diff:after{left:var(--vocs-space_6)}}.vocs_Header{border-bottom:1px solid var(--vocs-color_border)}.vocs_Header:not(:last-child){margin-bottom:var(--vocs-space_28);padding-bottom:var(--vocs-space_28)}[data-layout=landing] .vocs_Header{padding-bottom:var(--vocs-space_16)}[data-layout=landing] .vocs_Header:not(:first-child){padding-top:var(--vocs-space_36)}.vocs_H2{font-size:var(--vocs-fontSize_h2);letter-spacing:-.02em}.vocs_H2.vocs_H2:not(:last-child){margin-bottom:var(--vocs-space_24)}:not(.vocs_Header)+.vocs_H2:not(:only-child){border-top:1px solid var(--vocs-color_border);margin-top:var(--vocs-space_56);padding-top:var(--vocs-space_24)}[data-layout=landing] .vocs_H2.vocs_H2{border-top:none;margin-top:var(--vocs-space_24);padding-top:0}.vocs_H3{font-size:var(--vocs-fontSize_h3)}.vocs_H3:not(:first-child){margin-top:var(--vocs-space_18);padding-top:var(--vocs-space_18)}.vocs_H3.vocs_H3:not(:last-child){margin-bottom:var(--vocs-space_24)}.vocs_H2+.vocs_H3{padding-top:var(--vocs-space_0)}.vocs_H4{font-size:var(--vocs-fontSize_h4)}.vocs_H4:not(:first-child){margin-top:var(--vocs-space_18);padding-top:var(--vocs-space_12)}.vocs_H4.vocs_H4:not(:last-child){margin-bottom:var(--vocs-space_24)}.vocs_H3+.vocs_H4{padding-top:var(--vocs-space_0)}.vocs_H5{font-size:var(--vocs-fontSize_h5)}.vocs_H5:not(:first-child){margin-top:var(--vocs-space_16)}.vocs_H5.vocs_H5:not(:last-child){margin-bottom:var(--vocs-space_24)}.vocs_H4+.vocs_H5{padding-top:var(--vocs-space_0)}.vocs_H6{font-size:var(--vocs-fontSize_h6)}.vocs_H6:not(:first-child){margin-top:var(--vocs-space_16)}.vocs_H6.vocs_H6:not(:last-child){margin-bottom:var(--vocs-space_24)}.vocs_H5+.vocs_H6{padding-top:var(--vocs-space_0)}.vocs_Step:not(:last-child){margin-bottom:var(--vocs-space_24)}.vocs_Step_title{margin-bottom:var(--vocs-space_8);position:relative}.vocs_Step_title:before{content:counter(step);align-items:center;background-color:var(--vocs-color_background5);border-radius:100%;border:.5em solid var(--vocs-color_background);box-sizing:content-box;color:var(--vocs-color_text2);counter-increment:step;display:flex;font-size:.625em;font-weight:var(--vocs-fontWeight_regular);height:2em;justify-content:center;left:calc(-25.125px - 1.45em);position:absolute;top:-.25em;width:2em}.vocs_H2+.vocs_Step_content,.vocs_H3+.vocs_Step_content,.vocs_H4+.vocs_Step_content,.vocs_H5+.vocs_Step_content,.vocs_H6+.vocs_Step_content{margin-top:calc(var(--vocs-space_8) * -1)}.vocs_Step_content>*:not(:last-child){margin-bottom:var(--vocs-space_16)}.vocs_Step_content>*:last-child{margin-bottom:var(--vocs-space_0)}@media screen and (max-width: 720px){.vocs_Step_content>.vocs_Tabs,.vocs_Step_content>.vocs_CodeBlock{outline:6px solid var(--vocs-color_background);margin-left:calc(-1 * var(--vocs-space_44) - 2px);margin-right:calc(-1 * var(--vocs-space_16))}.vocs_Step_content .vocs_Tabs pre.shiki{border-top:none}}.vocs_Callout{border-radius:var(--vocs-borderRadius_4);font-size:var(--vocs-fontSize_14);padding:var(--vocs-space_16) var(--vocs-space_20);margin-bottom:var(--vocs-space_16)}.vocs_Callout_note{background-color:var(--vocs-color_noteBackground);border:1px solid var(--vocs-color_noteBorder);color:var(--vocs-color_noteText)}.vocs_Callout_info{background-color:var(--vocs-color_infoBackground);border:1px solid var(--vocs-color_infoBorder);color:var(--vocs-color_infoText)}.vocs_Callout_warning{background-color:var(--vocs-color_warningBackground);border:1px solid var(--vocs-color_warningBorder);color:var(--vocs-color_warningText)}.vocs_Callout_danger{background-color:var(--vocs-color_dangerBackground);border:1px solid var(--vocs-color_dangerBorder);color:var(--vocs-color_dangerText)}.vocs_Callout_tip{background-color:var(--vocs-color_tipBackground);border:1px solid var(--vocs-color_tipBorder);color:var(--vocs-color_tipText)}.vocs_Callout_success{background-color:var(--vocs-color_successBackground);border:1px solid var(--vocs-color_successBorder);color:var(--vocs-color_successText)}@media screen and (max-width: 720px){:not(undefined)>.vocs_Callout{border-radius:0;border-left-width:0;border-right-width:0;margin-left:calc(-1 * var(--vocs-space_16));margin-right:calc(-1 * var(--vocs-space_16))}}.vocs_Content{background-color:var(--vocs-color_background);max-width:var(--vocs-content_width);padding:var(--vocs-content_verticalPadding) var(--vocs-content_horizontalPadding);width:100%}.vocs_Callout>*+.vocs_Details{margin-top:-8px}@layer vocs_global_global;:root.dark{color-scheme:dark}:root.dark pre.shiki span:not(.line),:root.dark :not(pre.shiki) .line span{color:var(--shiki-dark)!important}pre.shiki{background-color:var(--vocs-color_codeBlockBackground)!important}.vocs_Content>*:not(:last-child),.vocs_Details>*:not(:last-child){margin-bottom:var(--vocs-space_24)}.vocs_Callout>*:not(:last-child),.vocs_Callout>.vocs_Details>*:not(:last-child){margin-bottom:var(--vocs-space_16)}.vocs_Content>*:last-child,.vocs_Callout>*:last-child,.vocs_Details>*:last-child{margin-bottom:var(--vocs-space_0)}#app[aria-hidden=true]{background:var(--vocs-color_background)}@layer vocs_global_global{:root{background-color:var(--vocs-color_background);color:var(--vocs-color_text);line-height:var(--vocs-lineHeight_paragraph);font-size:var(--vocs-fontSize_root);font-weight:var(--vocs-fontWeight_regular)}}@media screen and (max-width: 720px){:root{background-color:var(--vocs-color_backgroundDark)}}:root{--vocs-twoslash_borderColor: var(--vocs-color_border2);--vocs-twoslash_underlineColor: currentColor;--vocs-twoslash_popupBackground: var(--vocs-color_background2);--vocs-twoslash_popupShadow: rgba(0, 0, 0, .08) 0px 1px 4px;--vocs-twoslash_matchedColor: inherit;--vocs-twoslash_unmatchedColor: #888;--vocs-twoslash_cursorColor: #8888;--vocs-twoslash_errorColor: var(--vocs-color_textRed);--vocs-twoslash_errorBackground: var(--vocs-color_backgroundRedTint2);--vocs-twoslash_highlightedBackground: var(--vocs-color_background);--vocs-twoslash_highlightedBorder: var(--vocs-color_background);--vocs-twoslash_tagColor: var(--vocs-color_textBlue);--vocs-twoslash_tagBackground: var(--vocs-color_backgroundBlueTint);--vocs-twoslash_tagWarnColor: var(--vocs-color_textYellow);--vocs-twoslash_tagWarnBackground: var(--vocs-color_backgroundYellowTint);--vocs-twoslash_tagAnnotateColor: var(--vocs-color_textGreen);--vocs-twoslash_tagAnnotateBackground: var(--vocs-color_backgroundGreenTint2)}:root.dark{--vocs-twoslash_borderColor: var(--vocs-color_border2);--vocs-twoslash_underlineColor: currentColor;--vocs-twoslash_popupBackground: var(--vocs-color_background5);--vocs-twoslash_popupShadow: rgba(0, 0, 0, .08) 0px 1px 4px;--vocs-twoslash_matchedColor: inherit;--vocs-twoslash_unmatchedColor: #888;--vocs-twoslash_cursorColor: #8888;--vocs-twoslash_errorColor: var(--vocs-color_textRed);--vocs-twoslash_errorBackground: var(--vocs-color_backgroundRedTint2);--vocs-twoslash_highlightedBackground: var(--vocs-color_background);--vocs-twoslash_highlightedBorder: var(--vocs-color_background);--vocs-twoslash_tagColor: var(--vocs-color_textBlue);--vocs-twoslash_tagBackground: var(--vocs-color_backgroundBlueTint);--vocs-twoslash_tagWarnColor: var(--vocs-color_textYellow);--vocs-twoslash_tagWarnBackground: var(--vocs-color_backgroundYellowTint);--vocs-twoslash_tagAnnotateColor: var(--vocs-color_textGreen);--vocs-twoslash_tagAnnotateBackground: var(--vocs-color_backgroundGreenTint2)}:root .twoslash-popup-info-hover,:root .twoslash-popup-info{--shiki-light-bg: var(--vocs-color_background2)}:root .twoslash-popup-info{width:-moz-max-content;width:max-content}:root.dark .twoslash-popup-info,:root.dark .twoslash-popup-info-hover{--shiki-dark-bg: var(--vocs-color_background5)}.twoslash-query-persisted>.twoslash-popup-info{z-index:1}:not(.twoslash-query-persisted)>.twoslash-popup-info{z-index:2}.twoslash:hover .twoslash-hover{border-color:var(--vocs-twoslash_underlineColor)}.twoslash .twoslash-hover{border-bottom:1px dotted transparent;transition-timing-function:ease;transition:border-color .3s}.twoslash-query-persisted{position:relative}.twoslash .twoslash-popup-info{position:absolute;top:0;left:0;opacity:0;display:inline-block;transform:translateY(1.1em);background:var(--vocs-twoslash_popupBackground);border:1px solid var(--vocs-twoslash_borderColor);transition:opacity .3s;border-radius:4px;max-width:540px;padding:4px 6px;pointer-events:none;text-align:left;z-index:20;white-space:pre-wrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;box-shadow:var(--vocs-twoslash_popupShadow)}.twoslash .twoslash-popup-info-hover{background:var(--vocs-twoslash_popupBackground);border:1px solid var(--vocs-twoslash_borderColor);border-radius:4px;box-shadow:var(--vocs-twoslash_popupShadow);display:inline-block;max-width:500px;pointer-events:auto;position:fixed;opacity:1;transition:opacity .3s;white-space:pre-wrap;-webkit-user-select:none;-moz-user-select:none;user-select:none;z-index:20}.twoslash .twoslash-popup-scroll-container{max-height:300px;padding:4px 0;overflow-y:auto;-ms-overflow-style:none;scrollbar-width:none}.twoslash-popup-arrow{position:absolute;top:-4px;left:1em;border-top:1px solid var(--vocs-twoslash_borderColor);border-right:1px solid var(--vocs-twoslash_borderColor);background:var(--vocs-twoslash_popupBackground);transform:rotate(-45deg);width:6px;height:6px;pointer-events:none}.twoslash .twoslash-popup-scroll-container::-webkit-scrollbar{display:none}.twoslash .twoslash-popup-jsdoc{border-top:1px solid var(--vocs-color_border2);color:var(--vocs-color_text);font-family:sans-serif;font-weight:500;margin-top:4px;padding:4px 10px 0}.twoslash-tag-line+.twoslash-tag-line{margin-top:-.2em}.twoslash-query-persisted .twoslash-popup-info{z-index:9;transform:translateY(1.5em)}.twoslash-hover:hover .twoslash-popup-info,.twoslash-query-persisted .twoslash-popup-info{opacity:1;pointer-events:auto}.twoslash-popup-info:hover,.twoslash-popup-info-hover:hover{-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.twoslash-error-line{position:relative;background-color:var(--vocs-twoslash_errorBackground);border-left:2px solid var(--vocs-twoslash_errorColor);color:var(--vocs-twoslash_errorColor);margin:.2em 0}.twoslash-error{background:url("data:image/svg+xml,%3Csvg%20xmlns%3D'http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg'%20viewBox%3D'0%200%206%203'%20enable-background%3D'new%200%200%206%203'%20height%3D'3'%20width%3D'6'%3E%3Cg%20fill%3D'%23c94824'%3E%3Cpolygon%20points%3D'5.5%2C0%202.5%2C3%201.1%2C3%204.1%2C0'%2F%3E%3Cpolygon%20points%3D'4%2C0%206%2C2%206%2C0.6%205.4%2C0'%2F%3E%3Cpolygon%20points%3D'0%2C2%201%2C3%202.4%2C3%200%2C0.6'%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E") repeat-x bottom left;padding-bottom:2px}.twoslash-completion-cursor{position:relative}.twoslash-completion-cursor .twoslash-completion-list{-webkit-user-select:none;-moz-user-select:none;user-select:none;position:absolute;top:0;left:0;transform:translateY(1.2em);margin:3px 0 0 -1px;z-index:8;box-shadow:var(--vocs-twoslash_popupShadow);background:var(--vocs-twoslash_popupBackground);border:1px solid var(--vocs-twoslash_borderColor)}.twoslash-completion-list{border-radius:4px;font-size:.8rem;padding:4px;display:flex;flex-direction:column;gap:4px;width:240px}.twoslash-completion-list:hover{-webkit-user-select:auto;-moz-user-select:auto;user-select:auto}.twoslash-completion-list:before{content:" ";background-color:var(--vocs-twoslash_cursorColor);width:2px;position:absolute;top:-1.6em;height:1.4em;left:-1px}.twoslash-completion-list .twoslash-completion-list-item{overflow:hidden;display:flex;align-items:center;gap:.5em;line-height:1em}.twoslash-completion-list .twoslash-completion-list-item span.twoslash-completions-unmatched.twoslash-completions-unmatched.twoslash-completions-unmatched{color:var(--vocs-twoslash_unmatchedColor)!important}.twoslash-completion-list .deprecated{text-decoration:line-through;opacity:.5}.twoslash-completion-list .twoslash-completion-list-item span.twoslash-completions-matched.twoslash-completions-unmatched.twoslash-completions-unmatched{color:var(--vocs-twoslash_matchedColor)!important}.twoslash-tag-line{position:relative;background-color:var(--vocs-twoslash_tagBackground);border-left:2px solid var(--vocs-twoslash_tagColor);color:var(--vocs-twoslash_tagColor);margin:.2em 0;display:flex;align-items:center;gap:.3em}.twoslash-tag-line+.line[data-empty-line]+.twoslash-tag-line{margin-top:-1.95em}.twoslash-tag-line .twoslash-tag-icon{width:1.1em;color:inherit}.twoslash-tag-line.twoslash-tag-error-line{background-color:var(--vocs-twoslash_errorBackground);border-left:2px solid var(--vocs-twoslash_errorColor);color:var(--vocs-twoslash_errorColor)}.twoslash-tag-line.twoslash-tag-warn-line{background-color:var(--vocs-twoslash_tagWarnBackground);border-left:2px solid var(--vocs-twoslash_tagWarnColor);color:var(--vocs-twoslash_tagWarnColor)}.twoslash-tag-line.twoslash-tag-annotate-line{background-color:var(--vocs-twoslash_tagAnnotateBackground);border-left:2px solid var(--vocs-twoslash_tagAnnotateColor);color:var(--vocs-twoslash_tagAnnotateColor)}.twoslash-highlighted{border-radius:var(--vocs-borderRadius_2);background-color:var(--vocs-color_codeCharacterHighlightBackground)!important;box-shadow:0 0 0 4px var(--vocs-color_codeCharacterHighlightBackground)}@media (prefers-reduced-motion: reduce){.twoslash *{transition:none!important}}.vocs_ExternalLink:after{content:"";background-color:currentColor;color:var(--vocs_ExternalLink_arrowColor);display:inline-block;height:.5em;margin-left:.325em;margin-right:.25em;width:.5em;-webkit-mask:var(--vocs_ExternalLink_iconUrl) no-repeat center / contain;mask:var(--vocs_ExternalLink_iconUrl) no-repeat center / contain}.vocs_Link_accent_underlined{color:var(--vocs-color_link);font-weight:var(--vocs-fontWeight_medium);text-underline-offset:var(--vocs-space_2);text-decoration:underline;transition:color .1s}.vocs_Link_accent_underlined:hover{color:var(--vocs-color_linkHover)}.vocs_Link_styleless{--vocs_ExternalLink_arrowColor: var(--vocs-color_text3)}.vocs_NotFound{align-items:center;display:flex;flex-direction:column;max-width:400px;margin:0 auto;padding-top:var(--vocs-space_64)}.vocs_NotFound_divider{border-color:var(--vocs-color_border);width:50%}.vocs_H1{font-size:var(--vocs-fontSize_h1);letter-spacing:-.02em}.vocs_Heading{align-items:center;color:var(--vocs-color_heading);font-weight:var(--vocs-fontWeight_semibold);gap:.25em;line-height:var(--vocs-lineHeight_heading);position:relative}.vocs_Heading_slugTarget{position:absolute;top:0;visibility:hidden}@media screen and (min-width: 1081px){.vocs_Heading_slugTarget{top:calc(-1 * (var(--vocs-topNav_height)))}.vocs_Header .vocs_Heading_slugTarget,.vocs_Step_title .vocs_Heading_slugTarget,.vocs_Header+.vocs_Heading .vocs_Heading_slugTarget{top:calc(-1 * (var(--vocs-topNav_height) + var(--vocs-space_24)))}}@media screen and (max-width: 1080px){.vocs_Heading_slugTarget{top:calc(-1 * var(--vocs-topNav_curtainHeight))}.vocs_Header .vocs_Heading_slugTarget,.vocs_Header+.vocs_Heading .vocs_Heading_slugTarget{top:calc(-1 * calc(var(--vocs-topNav_curtainHeight) + var(--vocs-space_24)))}}.vocs_Blockquote{border-left:2px solid var(--vocs-color_blockquoteBorder);padding-left:var(--vocs-space_16);margin-bottom:var(--vocs-space_16)}.vocs_H2+.vocs_List,.vocs_H3+.vocs_List,.vocs_H4+.vocs_List,.vocs_H5+.vocs_List,.vocs_H6+.vocs_List{margin-top:calc(var(--vocs-space_8) * -1)}.vocs_Paragraph+.vocs_List{margin-top:calc(-1 * var(--vocs-space_8))}.vocs_List_ordered{list-style:decimal;padding-left:var(--vocs-space_20);margin-bottom:var(--vocs-space_16)}.vocs_List_ordered .vocs_List_ordered{list-style:lower-alpha}.vocs_List_ordered .vocs_List_ordered .vocs_List_ordered{list-style:lower-roman}.vocs_List_unordered{list-style:disc;padding-left:var(--vocs-space_24);margin-bottom:var(--vocs-space_16)}.vocs_List_unordered .vocs_List_unordered{list-style:circle}.vocs_List_ordered .vocs_List_ordered,.vocs_List_unordered .vocs_List_unordered,.vocs_List_ordered .vocs_List_unordered,.vocs_List_unordered .vocs_List_ordered{margin-bottom:var(--vocs-space_0);padding-top:var(--vocs-space_8);padding-left:var(--vocs-space_16);padding-bottom:var(--vocs-space_0)}.vocs_List_unordered.contains-task-list{list-style:none;padding-left:var(--vocs-space_12)}.vocs_Paragraph{line-height:var(--vocs-lineHeight_paragraph)}.vocs_Blockquote>.vocs_Paragraph{color:var(--vocs-color_blockquoteText);margin-bottom:var(--vocs-space_8)}.vocs_H2+.vocs_Paragraph,.vocs_H3+.vocs_Paragraph,.vocs_H4+.vocs_Paragraph,.vocs_H5+.vocs_Paragraph,.vocs_H6+.vocs_Paragraph,.vocs_List+.vocs_Paragraph{margin-top:calc(var(--vocs-space_8) * -1)}.vocs_Paragraph+.vocs_Paragraph{margin-top:calc(-1 * var(--vocs-space_8))}:root:not(.dark) .vocs_utils_visibleDark{display:none}:root.dark .vocs_utils_visibleLight{display:none}.vocs_utils_visuallyHidden{clip:rect(0 0 0 0);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.vocs_DesktopSearch_search{align-items:center;background-color:var(--vocs-color_backgroundDark);border:1px solid var(--vocs-color_backgroundDark);border-radius:var(--vocs-borderRadius_8);color:var(--vocs-color_text2);display:flex;font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_medium);gap:var(--vocs-space_6);height:var(--vocs-space_40);max-width:15.5rem;padding-left:var(--vocs-space_12);padding-right:var(--vocs-space_12);position:relative;width:100%;transition:color .1s,border-color .1s}.vocs_DesktopSearch_search:hover{color:var(--vocs-color_text);border-color:var(--vocs-color_text3)}.vocs_DesktopSearch_searchCommand{align-items:center;border:1.5px solid var(--vocs-color_text3);border-radius:var(--vocs-borderRadius_4);color:var(--vocs-color_text3);display:flex;height:var(--vocs-space_12);justify-content:center;margin-left:auto;margin-top:var(--vocs-space_1);padding:var(--vocs-space_1);width:var(--vocs-space_12)}.vocs_Kbd{color:var(--vocs-color_text2);display:inline-block;border-radius:var(--vocs-borderRadius_3);font-size:var(--vocs-fontSize_11);font-family:var(--vocs-fontFamily_default);font-feature-settings:cv08;line-height:105%;min-width:20px;padding:var(--vocs-space_3);padding-left:var(--vocs-space_4);padding-right:var(--vocs-space_4);padding-top:var(--vocs-space_3);text-align:center;text-transform:capitalize;vertical-align:baseline;border:.5px solid var(--vocs-color_border);background-color:var(--vocs-color_background3);box-shadow:var(--vocs-color_shadow2) 0 2px 0 0}.vocs_KeyboardShortcut{align-items:center;display:inline-flex;gap:var(--vocs-space_6);font-size:var(--vocs-fontSize_12)}.vocs_KeyboardShortcut_kbdGroup{align-items:center;display:inline-flex;gap:var(--vocs-space_3)}@media screen and (max-width: 720px){.vocs_KeyboardShortcut{display:none}}@keyframes vocs_SearchDialog_fadeIn{0%{opacity:0}to{opacity:1}}@keyframes vocs_SearchDialog_fadeAndSlideIn{0%{opacity:0;transform:translate(-50%,-5%) scale(.96)}to{opacity:1;transform:translate(-50%) scale(1)}}.vocs_SearchDialog{animation:vocs_SearchDialog_fadeAndSlideIn .1s ease-in-out;background:var(--vocs-color_background);border-radius:var(--vocs-borderRadius_6);display:flex;flex-direction:column;gap:var(--vocs-space_8);height:-moz-min-content;height:min-content;left:50%;margin:64px auto;max-height:min(100vh - 128px,900px);padding:var(--vocs-space_12);padding-bottom:var(--vocs-space_8);position:fixed;top:0;transform:translate(-50%);width:min(100vw - 60px,775px);z-index:var(--vocs-zIndex_backdrop)}.vocs_SearchDialog_overlay{animation:vocs_SearchDialog_fadeIn .1s ease-in-out;background:#0009;position:fixed;top:0;right:0;bottom:0;left:0;z-index:var(--vocs-zIndex_backdrop)}.vocs_SearchDialog_searchBox{align-items:center;border:1px solid var(--vocs-color_border);border-radius:var(--vocs-borderRadius_4);display:flex;gap:var(--vocs-space_8);padding-left:var(--vocs-space_8);padding-right:var(--vocs-space_8);margin-bottom:var(--vocs-space_8);width:100%}.vocs_SearchDialog_searchBox:focus-within{border-color:var(--vocs-color_borderAccent)}.vocs_SearchDialog_searchInput{background:transparent;display:flex;font-size:var(--vocs-fontSize_16);height:var(--vocs-space_40);width:100%}.vocs_SearchDialog_searchInput:focus{outline:none}.vocs_SearchDialog_searchInput::-moz-placeholder{color:var(--vocs-color_text4)}.vocs_SearchDialog_searchInput::placeholder{color:var(--vocs-color_text4)}.vocs_SearchDialog_searchInputIcon{color:var(--vocs-color_text3)}.vocs_SearchDialog_searchInputIconMobile{display:none}.vocs_SearchDialog_results{display:flex;flex-direction:column;gap:var(--vocs-space_8);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;width:100%}.vocs_SearchDialog_result{border:1.5px solid var(--vocs-color_border);border-radius:var(--vocs-borderRadius_4);width:100%}.vocs_SearchDialog_result:focus-within{border-color:var(--vocs-color_borderAccent)}.vocs_SearchDialog_result>a{display:flex;flex-direction:column;gap:var(--vocs-space_8);min-height:var(--vocs-space_36);outline:none;justify-content:center;padding:var(--vocs-space_12);width:100%}.vocs_SearchDialog_resultSelected{border-color:var(--vocs-color_borderAccent)}.vocs_SearchDialog_resultIcon{color:var(--vocs-color_textAccent);margin-right:1px;width:15px}.vocs_SearchDialog_titles{align-items:center;display:flex;flex-wrap:wrap;font-weight:var(--vocs-fontWeight_medium);gap:var(--vocs-space_4);line-height:22px}.vocs_SearchDialog_title{align-items:center;display:flex;gap:var(--vocs-space_4);white-space:nowrap}.vocs_SearchDialog_titleIcon{color:var(--vocs-color_text);display:inline-block;opacity:.5}.vocs_SearchDialog_resultSelected .vocs_SearchDialog_title,.vocs_SearchDialog_resultSelected .vocs_SearchDialog_titleIcon{color:var(--vocs-color_textAccent)}.vocs_SearchDialog_content{padding:0}.vocs_SearchDialog_excerpt{max-height:8.75rem;overflow:hidden;opacity:.5;position:relative}.vocs_SearchDialog_excerpt:before{content:"";position:absolute;top:-1px;left:0;width:100%;height:8px;background:linear-gradient(var(--vocs-color_background),transparent);z-index:1000}.vocs_SearchDialog_excerpt:after{content:"";position:absolute;bottom:-1px;left:0;width:100%;height:12px;background:linear-gradient(transparent,var(--vocs-color_background));z-index:1000}.vocs_SearchDialog_title mark,.vocs_SearchDialog_excerpt mark{background-color:var(--vocs-color_searchHighlightBackground);color:var(--vocs-color_searchHighlightText);border-radius:var(--vocs-borderRadius_2);padding-bottom:0;padding-left:var(--vocs-space_2);padding-right:var(--vocs-space_2);padding-top:0}.vocs_SearchDialog_resultSelected .vocs_SearchDialog_excerpt{opacity:1}.vocs_SearchDialog_searchShortcuts{align-items:center;color:var(--vocs-color_text2);display:flex;gap:var(--vocs-space_20);font-size:var(--vocs-fontSize_14)}.vocs_SearchDialog_searchShortcutsGroup{align-items:center;display:inline-flex;gap:var(--vocs-space_3);margin-right:var(--vocs-space_6)}@media screen and (max-width: 720px){.vocs_SearchDialog{border-radius:0;height:calc(100vh - env(safe-area-inset-top) - env(safe-area-inset-bottom));margin:0;max-height:unset;width:100vw}.vocs_SearchDialog_searchInputIconDesktop{display:none}.vocs_SearchDialog_searchInputIconMobile{display:block}.vocs_SearchDialog_excerpt{opacity:1}.vocs_SearchDialog_searchShortcuts{display:none}}.vocs_DesktopTopNav{align-items:center;display:flex;justify-content:space-between;padding:0 var(--vocs-topNav_horizontalPadding);height:var(--vocs-topNav_height)}.vocs_DesktopTopNav_withLogo{padding-left:calc(((100% - var(--vocs-content_width)) / 2) + var(--vocs-topNav_horizontalPadding))}.vocs_DesktopTopNav_button{border-radius:var(--vocs-borderRadius_4);padding:var(--vocs-space_8)}.vocs_DesktopTopNav_content{right:calc(-1 * var(--vocs-space_24))}.vocs_DesktopTopNav_curtain{background:linear-gradient(var(--vocs-color_background),transparent 70%);height:30px;opacity:.98;width:100%}.vocs_DesktopTopNav_divider{background-color:var(--vocs-color_border);height:35%;width:1px}.vocs_DesktopTopNav_group{align-items:center;display:flex}.vocs_DesktopTopNav_icon{color:var(--vocs-color_text2);transition:color .1s}.vocs_DesktopTopNav_button:hover .vocs_DesktopTopNav_icon{color:var(--vocs-color_text)}.vocs_DesktopTopNav_item{align-items:center;display:flex;height:100%;position:relative}.vocs_DesktopTopNav_logo{padding-left:var(--vocs-sidebar_horizontalPadding);padding-right:var(--vocs-sidebar_horizontalPadding);width:var(--vocs-sidebar_width)}.vocs_DesktopTopNav_logoWrapper{display:flex;height:100%;justify-content:flex-end;left:0;position:absolute;width:var(--vocs_DocsLayout_leftGutterWidth)}.vocs_DesktopTopNav_section{align-items:center;display:flex;height:100%;gap:var(--vocs-space_24)}@media screen and (max-width: 1080px){.vocs_DesktopTopNav,.vocs_DesktopTopNav_curtain{display:none}}@media screen and (max-width: 1280px){.vocs_DesktopTopNav_hideCompact{display:none}}.vocs_Icon{align-items:center;display:flex;height:var(--vocs_Icon_size);width:var(--vocs_Icon_size)}:root:not(.dark) .vocs_Logo_logoDark{display:none}:root.dark .vocs_Logo_logoLight{display:none}.vocs_NavLogo_logoImage{height:50%;width:auto}.vocs_NavLogo_title{font-size:var(--vocs-fontSize_18);font-weight:var(--vocs-fontWeight_semibold);line-height:var(--vocs-lineHeight_heading)}@keyframes vocs_NavigationMenu_fadeIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.vocs_NavigationMenu_list{display:flex;gap:var(--vocs-space_20)}.vocs_NavigationMenu_link{align-items:center;display:flex;font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_medium);height:100%}.vocs_NavigationMenu_link:hover,.vocs_NavigationMenu_link[data-active=true]{color:var(--vocs-color_textAccent)}.vocs_NavigationMenu_trigger:after{content:"";background-color:currentColor;color:var(--vocs-color_text3);display:inline-block;height:.625em;margin-left:.325em;width:.625em;-webkit-mask:var(--vocs_NavigationMenu_chevronDownIcon) no-repeat center / contain;mask:var(--vocs_NavigationMenu_chevronDownIcon) no-repeat center / contain}.vocs_NavigationMenu_content{background-color:var(--vocs-color_background2);border:1px solid var(--vocs-color_border);border-radius:var(--vocs-borderRadius_4);box-shadow:0 3px 10px var(--vocs-color_shadow);display:flex;flex-direction:column;padding:var(--vocs-space_12) var(--vocs-space_16);position:absolute;top:calc(100% + var(--vocs-space_8));min-width:200px;z-index:var(--vocs-zIndex_popover);animation:vocs_NavigationMenu_fadeIn .5s cubic-bezier(.16,1,.3,1)}.vocs_Footer{--vocs_Footer_iconWidth: 24px;display:flex;flex-direction:column;gap:var(--vocs-space_32);max-width:var(--vocs-content_width);overflow-x:hidden;padding:var(--vocs-space_28) var(--vocs-content_horizontalPadding) var(--vocs-space_48)}.vocs_Footer_container{border-bottom:1px solid var(--vocs-color_border);display:flex;justify-content:space-between;padding-bottom:var(--vocs-space_16)}.vocs_Footer_editLink{align-items:center;display:flex;font-size:var(--vocs-fontSize_14);gap:var(--vocs-space_8);text-decoration:none}.vocs_Footer_lastUpdated{color:var(--vocs-color_text3);font-size:var(--vocs-fontSize_14)}.vocs_Footer_navigation{display:flex;justify-content:space-between}.vocs_Footer_navigationIcon{width:var(--vocs_Footer_iconWidth)}.vocs_Footer_navigationIcon_left{display:flex}.vocs_Footer_navigationIcon_right{display:flex;justify-content:flex-end}.vocs_Footer_navigationItem{display:flex;flex-direction:column;gap:var(--vocs-space_4)}.vocs_Footer_navigationItem_right{align-items:flex-end}.vocs_Footer_navigationText{align-items:center;display:flex;font-size:var(--vocs-fontSize_18);font-weight:var(--vocs-fontWeight_medium)}.vocs_Footer_navigationTextInner{overflow:hidden;text-overflow:ellipsis;width:26ch;white-space:pre}@media screen and (max-width: 720px){.vocs_Footer_navigationIcon_left,.vocs_Footer_navigationIcon_right{justify-content:center}.vocs_Footer_navigationText{font-size:var(--vocs-fontSize_12)}}@media screen and (max-width: 480px){.vocs_Footer_navigationTextInner{width:20ch}}.vocs_MobileSearch_searchButton{align-items:center;display:flex;color:var(--vocs-color_text);height:var(--vocs-space_28);justify-content:center;width:var(--vocs-space_28)}@keyframes vocs_MobileTopNav_fadeIn{0%{opacity:0}to{opacity:1}}.vocs_MobileTopNav{align-items:center;background-color:var(--vocs-color_backgroundDark);border-bottom:1px solid var(--vocs-color_border);display:none;height:100%;justify-content:space-between;padding:var(--vocs-space_0) var(--vocs-content_horizontalPadding);width:100%}.vocs_MobileTopNav_button{border-radius:var(--vocs-borderRadius_4);padding:var(--vocs-space_8)}.vocs_MobileTopNav_content{left:calc(-1 * var(--vocs-space_24))}.vocs_MobileTopNav_curtain{align-items:center;background-color:var(--vocs-color_backgroundDark);border-bottom:1px solid var(--vocs-color_border);display:none;justify-content:space-between;font-size:var(--vocs-fontSize_13);font-weight:var(--vocs-fontWeight_medium);height:100%;padding:var(--vocs-space_0) var(--vocs-content_horizontalPadding);width:100%}.vocs_MobileTopNav_curtainGroup{align-items:center;display:flex;gap:var(--vocs-space_12)}.vocs_MobileTopNav_divider{background-color:var(--vocs-color_border);height:35%;width:1px}.vocs_MobileTopNav_group{align-items:center;display:flex;height:100%}.vocs_MobileTopNav_icon{color:var(--vocs-color_text2);transition:color .1s}.vocs_MobileTopNav_button:hover .vocs_MobileTopNav_icon{color:var(--vocs-color_text)}.vocs_MobileTopNav_item{position:relative}.vocs_MobileTopNav_logo{align-items:center;display:flex;height:var(--vocs-topNav_height)}.vocs_MobileTopNav_logoImage{height:30%}.vocs_MobileTopNav_menuTrigger{align-items:center;display:flex;gap:var(--vocs-space_8)}.vocs_MobileTopNav_menuTitle{max-width:22ch;overflow:hidden;text-align:left;text-overflow:ellipsis;white-space:pre}.vocs_MobileTopNav_navigation{margin-left:var(--vocs-space_8)}.vocs_MobileTopNav_navigationContent{display:flex;flex-direction:column;margin-left:var(--vocs-space_8)}.vocs_MobileTopNav_navigationItem{align-items:center;display:flex;justify-content:flex-start;font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_medium);width:100%}.vocs_MobileTopNav_navigationItem:hover,.vocs_MobileTopNav_navigationItem[data-active=true],.vocs_MobileTopNav_navigationItem[data-state=open]{color:var(--vocs-color_textAccent)}.vocs_MobileTopNav_trigger:after{content:"";background-color:currentColor;display:inline-block;height:.625em;margin-left:.325em;width:.625em;-webkit-mask:var(--vocs_MobileTopNav_chevronDownIcon) no-repeat center / contain;mask:var(--vocs_MobileTopNav_chevronDownIcon) no-repeat center / contain}.vocs_MobileTopNav_trigger[data-state=open]:after{-webkit-mask:var(--vocs_MobileTopNav_chevronUpIcon) no-repeat center / contain;mask:var(--vocs_MobileTopNav_chevronUpIcon) no-repeat center / contain}.vocs_MobileTopNav_outlineTrigger{animation:vocs_MobileTopNav_fadeIn .5s cubic-bezier(.16,1,.3,1);align-items:center;color:var(--vocs-color_text2);display:flex;gap:var(--vocs-space_6)}.vocs_MobileTopNav_outlineTrigger[data-state=open]{color:var(--vocs-color_textAccent)}.vocs_MobileTopNav_outlinePopover{display:none;overflow-y:scroll;padding:var(--vocs-space_16);max-height:80vh}.vocs_MobileTopNav_section{align-items:center;display:flex;height:100%;gap:var(--vocs-space_16)}.vocs_MobileTopNav_separator{background-color:var(--vocs-color_border);height:1.75em;width:1px}.vocs_MobileTopNav_sidebarPopover{display:none;overflow-y:scroll;padding:0 var(--vocs-sidebar_horizontalPadding);max-height:80vh;width:var(--vocs-sidebar_width)}.vocs_MobileTopNav_title{font-size:var(--vocs-fontSize_18);font-weight:var(--vocs-fontWeight_semibold);line-height:var(--vocs-lineHeight_heading)}.vocs_MobileTopNav_topNavPopover{display:none;overflow-y:scroll;padding:var(--vocs-sidebar_verticalPadding) var(--vocs-sidebar_horizontalPadding);max-height:80vh;width:var(--vocs-sidebar_width)}@media screen and (max-width: 1080px){.vocs_MobileTopNav,.vocs_MobileTopNav_curtain{display:flex}.vocs_MobileTopNav_outlinePopover{display:block;max-width:300px}.vocs_MobileTopNav_sidebarPopover{display:block}.vocs_MobileTopNav_topNavPopover{display:flex;flex-direction:column}}@media screen and (max-width: 720px){.vocs_MobileTopNav_navigation:not(.vocs_MobileTopNav_navigation_compact){display:none}}@media screen and (min-width: 721px){.vocs_MobileTopNav_navigation.vocs_MobileTopNav_navigation_compact{display:none}}.vocs_Outline{width:100%}.vocs_Outline_nav{display:flex;flex-direction:column;gap:var(--vocs-space_8)}.vocs_DocsLayout_gutterRight .vocs_Outline_nav{border-left:1px solid var(--vocs-color_border);padding-left:var(--vocs-space_16)}.vocs_Outline_heading{color:var(--vocs-color_title);font-size:var(--vocs-fontSize_13);font-weight:var(--vocs-fontWeight_semibold);line-height:var(--vocs-lineHeight_heading);letter-spacing:.025em}.vocs_Outline_items .vocs_Outline_items{padding-left:var(--vocs-space_12)}.vocs_Outline_item{line-height:var(--vocs-lineHeight_outlineItem);margin-bottom:var(--vocs-space_8);overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}.vocs_Outline_link{color:var(--vocs-color_text2);font-weight:var(--vocs-fontWeight_medium);font-size:var(--vocs-fontSize_13);transition:color .1s}.vocs_Outline_link[data-active=true]{color:var(--vocs-color_textAccent)}.vocs_Outline_link[data-active=true]:hover{color:var(--vocs-color_textAccentHover)}.vocs_Outline_link:hover{color:var(--vocs-color_text)}.vocs_Popover{background-color:var(--vocs-color_background2);border:1px solid var(--vocs-color_border);border-radius:var(--vocs-borderRadius_4);margin:0 var(--vocs-space_6);z-index:var(--vocs-zIndex_popover)}.vocs_Sidebar{display:flex;flex-direction:column;font-size:var(--vocs-fontSize_14);overflow-y:auto;width:var(--vocs-sidebar_width)}.vocs_Sidebar_backLink{text-align:left}.vocs_Sidebar_divider{background-color:var(--vocs-color_border);width:100%;height:1px}.vocs_Sidebar_navigation{outline:0}.vocs_Sidebar_navigation:first-child{padding-top:var(--vocs-space_16)}.vocs_Sidebar_group{display:flex;flex-direction:column}.vocs_Sidebar_logo{align-items:center;display:flex;height:var(--vocs-topNav_height);padding-top:var(--vocs-space_4)}.vocs_Sidebar_logoWrapper{background-color:var(--vocs-color_backgroundDark);position:sticky;top:0;z-index:var(--vocs-zIndex_gutterTopCurtain)}.vocs_Sidebar_section{display:flex;flex-direction:column;font-size:1em}.vocs_Sidebar_navigation>.vocs_Sidebar_group>.vocs_Sidebar_section+.vocs_Sidebar_section{border-top:1px solid var(--vocs-color_border)}.vocs_Sidebar_levelCollapsed{gap:var(--vocs-space_4);padding-bottom:var(--vocs-space_12)}.vocs_Sidebar_levelInset{border-left:1px solid var(--vocs-color_border);font-size:var(--vocs-fontSize_13);margin-top:var(--vocs-space_8);padding-left:var(--vocs-space_12)}.vocs_Sidebar_levelInset.vocs_Sidebar_levelInset.vocs_Sidebar_levelInset{font-weight:var(--vocs-fontWeight_regular);padding-top:0;padding-bottom:0}.vocs_Sidebar_items{display:flex;flex-direction:column;gap:.625em;padding-top:var(--vocs-space_16);padding-bottom:var(--vocs-space_16);font-weight:var(--vocs-fontWeight_medium)}.vocs_Sidebar_level .vocs_Sidebar_items{padding-top:var(--vocs-space_6)}.vocs_Sidebar_item{color:var(--vocs-color_text3);letter-spacing:.25px;line-height:var(--vocs-lineHeight_sidebarItem);width:100%;transition:color .1s}.vocs_Sidebar_item:hover{color:var(--vocs-color_text)}.vocs_Sidebar_item[data-active=true]{color:var(--vocs-color_textAccent)}.vocs_Sidebar_sectionHeader{align-items:center;display:flex;justify-content:space-between}.vocs_Sidebar_level>.vocs_Sidebar_sectionHeader{padding-top:var(--vocs-space_12)}.vocs_Sidebar_sectionHeaderActive{color:var(--vocs-color_text)}.vocs_Sidebar_sectionTitle{color:var(--vocs-color_title);font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_semibold);letter-spacing:.25px;width:100%}.vocs_Sidebar_sectionCollapse{color:var(--vocs-color_text3);transform:rotate(90deg);transition:transform .25s}.vocs_Sidebar_sectionCollapseActive{transform:rotate(0)}@media screen and (max-width: 1080px){.vocs_Sidebar{width:100%}.vocs_Sidebar_logoWrapper{display:none}}.vocs_SkipLink{background:var(--vocs-color_background);border-radius:var(--vocs-borderRadius_4);color:var(--vocs-color_link);font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_semibold);left:var(--vocs-space_8);padding:var(--vocs-space_8) var(--vocs-space_16);position:fixed;text-decoration:none;top:var(--vocs-space_8);z-index:999}.vocs_SkipLink:focus{clip:auto;-webkit-clip-path:none;clip-path:none;height:auto;width:auto}:root{--vocs-fontFamily_default: Inter}:root.dark{--vocs-fontFamily_default: Inter}:root{--vocs-color_background: #f0f0f0}:root.dark{--vocs-color_background: #111111}body,html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-ms-font-feature-settings:"kern" 1;-o-font-feature-settings:"kern" 1;font-feature-settings:"kern" 1;font-kerning:normal}@font-face{font-family:Roboto Mono;src:url(/fonts/RobotoMono-VariableFont_wght.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Inter;src:url(/fonts/Inter-Bold.ttf) format("truetype");font-weight:700;font-style:normal}@font-face{font-family:Inter;src:url(/fonts/Inter-SemiBold.ttf) format("truetype");font-weight:600;font-style:normal}@font-face{font-family:Inter;src:url(/fonts/Inter-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:Inter;src:url(/fonts/Inter-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@layer vocs_preflight{*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji",Segoe UI Symbol,"Noto Color Emoji";font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }}.pointer-events-none{pointer-events:none!important}.visible{visibility:visible!important}.static{position:static!important}.fixed{position:fixed!important}.absolute{position:absolute!important}.relative{position:relative!important}.inset-0{top:0!important;right:0!important;bottom:0!important;left:0!important}.z-0{z-index:0!important}.z-10{z-index:10!important}.mx-auto{margin-left:auto!important;margin-right:auto!important}.my-30{margin-top:7.5rem!important;margin-bottom:7.5rem!important}.-mb-10{margin-bottom:-2.5rem!important}.mr-8{margin-right:2rem!important}.mt-1{margin-top:.25rem!important}.mt-30{margin-top:7.5rem!important}.block{display:block!important}.inline{display:inline!important}.flex{display:flex!important}.table{display:table!important}.contents{display:contents!important}.hidden{display:none!important}.aspect-\[2\]{aspect-ratio:2!important}.h-3{height:.75rem!important}.h-fit{height:-moz-fit-content!important;height:fit-content!important}.h-full{height:100%!important}.max-h-\[600px\]{max-height:600px!important}.w-1\/2{width:50%!important}.w-3{width:.75rem!important}.w-32{width:8rem!important}.w-52{width:13rem!important}.w-\[22px\]{width:22px!important}.w-fit{width:-moz-fit-content!important;width:fit-content!important}.w-full{width:100%!important}.max-w-24{max-width:6rem!important}.max-w-3xl{max-width:840px!important}.max-w-screen-lg{max-width:1080px!important}.max-w-xl{max-width:610px!important}.flex-1{flex:1 1 0%!important}.shrink-0{flex-shrink:0!important}.grow{flex-grow:1!important}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skew(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))!important}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:spin 1s linear infinite!important}.flex-col{flex-direction:column!important}.flex-wrap{flex-wrap:wrap!important}.items-start{align-items:flex-start!important}.items-center{align-items:center!important}.justify-center{justify-content:center!important}.justify-between{justify-content:space-between!important}.gap-1{gap:.25rem!important}.gap-10{gap:2.5rem!important}.gap-2{gap:.5rem!important}.gap-2\.5{gap:.625rem!important}.gap-3{gap:.75rem!important}.gap-30{gap:7.5rem!important}.gap-4{gap:1rem!important}.gap-5{gap:1.25rem!important}.gap-x-10{-moz-column-gap:2.5rem!important;column-gap:2.5rem!important}.gap-y-5{row-gap:1.25rem!important}.overflow-hidden{overflow:hidden!important}.text-wrap{text-wrap:wrap!important}.rounded{border-radius:.25rem!important}.rounded-full{border-radius:9999px!important}.rounded-lg{border-radius:.5rem!important}.rounded-md{border-radius:.375rem!important}.rounded-xl{border-radius:.75rem!important}.border{border-width:1px!important}.border-2{border-width:2px!important}.border-t{border-top-width:1px!important}.border-black-10{border-color:#0000001a!important}.border-b-black-80{border-bottom-color:#000c!important}.border-l-transparent{border-left-color:transparent!important}.border-r-black-80{border-right-color:#000c!important}.border-t-black-80{border-top-color:#000c!important}.bg-black-7{background-color:#00000012!important}.bg-transparent{background-color:transparent!important}.bg-white{--tw-bg-opacity: 1 !important;background-color:rgb(255 255 255 / var(--tw-bg-opacity))!important}.from-\[\#0A3F16\]{--tw-gradient-from: #0A3F16 var(--tw-gradient-from-position) !important;--tw-gradient-to: rgb(10 63 22 / 0) var(--tw-gradient-to-position) !important;--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important}.from-\[\#3400A0\]{--tw-gradient-from: #3400A0 var(--tw-gradient-from-position) !important;--tw-gradient-to: rgb(52 0 160 / 0) var(--tw-gradient-to-position) !important;--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important}.from-\[\#897031\]{--tw-gradient-from: #897031 var(--tw-gradient-from-position) !important;--tw-gradient-to: rgb(137 112 49 / 0) var(--tw-gradient-to-position) !important;--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to) !important}.to-transparent{--tw-gradient-to: transparent var(--tw-gradient-to-position) !important}.object-cover{-o-object-fit:cover!important;object-fit:cover!important}.p-3{padding:.75rem!important}.p-4{padding:1rem!important}.px-3{padding-left:.75rem!important;padding-right:.75rem!important}.px-4{padding-left:1rem!important;padding-right:1rem!important}.px-5{padding-left:1.25rem!important;padding-right:1.25rem!important}.px-6{padding-left:1.5rem!important;padding-right:1.5rem!important}.py-0{padding-top:0!important;padding-bottom:0!important}.py-0\.5{padding-top:.125rem!important;padding-bottom:.125rem!important}.py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.py-3{padding-top:.75rem!important;padding-bottom:.75rem!important}.py-5{padding-top:1.25rem!important;padding-bottom:1.25rem!important}.py-7{padding-top:1.75rem!important;padding-bottom:1.75rem!important}.pb-40{padding-bottom:10rem!important}.pl-1{padding-left:.25rem!important}.pr-4{padding-right:1rem!important}.pr-6{padding-right:1.5rem!important}.pt-15{padding-top:3.75rem!important}.pt-20{padding-top:5rem!important}.text-center{text-align:center!important}.text-3xl{font-size:1.875rem!important;line-height:2.25rem!important}.text-\[0\.625rem\]{font-size:.625rem!important}.text-sm{font-size:.875rem!important;line-height:1.25rem!important}.text-xl{font-size:1.25rem!important;line-height:1.75rem!important}.text-xs{font-size:.75rem!important;line-height:1rem!important}.font-bold{font-weight:700!important}.font-medium{font-weight:500!important}.lowercase{text-transform:lowercase!important}.leading-5{line-height:1.25rem!important}.leading-6{line-height:1.5rem!important}.leading-7{line-height:1.75rem!important}.leading-\[1rem\]{line-height:1rem!important}.text-black-80{color:#000c!important}.opacity-20{opacity:.2!important}.mix-blend-normal{mix-blend-mode:normal!important}.outline-none{outline:2px solid transparent!important;outline-offset:2px!important}.invert{--tw-invert: invert(100%) !important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.text-themed-primary{color:#000c}.text-themed-primary:is(.dark *){--tw-text-opacity: 1;color:rgb(255 255 255 / var(--tw-text-opacity))}.text-themed-secondary{color:#00000080}.text-themed-secondary:is(.dark *){color:#ffffff80}.hover-fade{opacity:1;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.hover-fade:hover{opacity:.5}.bg-matrix-light{background:linear-gradient(0deg,#f0f0f0,#f0f0f099 30%,#f0f0f099 70%,#f0f0f0),linear-gradient(90deg,transparent 0%,rgba(240,240,240,.6) 40%,rgba(240,240,240,.6) 60%,transparent 100%),url(/img/matrix-bg-light.svg)!important;background-size:cover!important;background-position:center center!important}.bg-gradient-light{background:linear-gradient(180deg,#f0f0f0,#fff0 49.83%,#f0f0f0),linear-gradient(90deg,#d2e4ff,#d2e4ff80 25.3%,#fff0 49.83%,#d2e4ff80 75.47%,#d2e4ff)!important}#home-install .vocs_CodeGroup{display:flex;height:100%;flex-direction:column}#home-install .vocs_Tabs_content{flex:1}#home-install .vocs_Code{font-size:18px}.vocs_MobileTopNav_navigation{display:block!important}.tabs{display:flex}.tabs button{padding:10px 20px;cursor:pointer;border:none;background-color:transparent;border-bottom:3px solid transparent;transition:all .3s ease}.tabs button.active{border-bottom-color:#fff;font-weight:700}.tab-panels{padding-top:20px;animation:fadeIn .3s}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;padding:1rem}.card{background-color:#3c393f;border-radius:10px;height:240px;padding:1rem;color:#fff;box-shadow:0 4px 8px #0000001a;display:flex;flex-direction:column;justify-content:space-between}.card-icon{font-size:2rem}.card-content{margin:auto;margin-top:1rem}.card-title{margin:0;font-size:1.25rem}.card-description{margin:0;font-size:1rem;opacity:.7}.card-link{text-decoration:none;color:inherit}table{text-align:center;width:100%;border-collapse:collapse}th,td{padding:8px;text-align:left;border:1px solid #3e3e3e;color:#fff}.network-logos{width:30px;height:auto}.cell-content{font-size:14px;float:left;display:flex;align-items:center;justify-content:center}.cell-image{width:30px;height:auto;float:left;margin:5px}.cell-text{min-width:140px}.widget{margin:10px auto auto;border:1px solid #3e3e3e;background-color:#1a1a1a;border-radius:20px;box-shadow:0 4px 8px #0000001a;overflow:hidden;width:400px;display:flex;flex-direction:column;align-items:center;padding:20px}.widget-body{width:100%;flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;margin-bottom:0}.widget-footer{width:100%;text-align:center;color:gray}.mint-image{border:1px solid #3e3e3e;border-radius:15px;max-width:100%;max-height:auto;margin:0}.mint-button{margin:5px;background-image:linear-gradient(to right,#7537f9,#651fff);color:#fff;padding:11px 24px;border-radius:30px;font-size:16px;font-weight:700;border:none;cursor:pointer;text-align:center;box-shadow:0 4px 8px #0003;transition:background-color .3s,box-shadow .3s}.mint-button:hover{background-image:linear-gradient(to right,#612cd2,#541ad1);box-shadow:0 6px 12px #0000004d}.dashed-box{margin:20px;padding:5px;border:2px dashed #541ad1}.video-container{position:relative;width:560px;height:315px}.preview-image{position:absolute;top:0;left:0;width:100%;height:100%;cursor:pointer}.video-frame{position:absolute;top:0;left:0;width:100%;height:100%;border:none;display:none}.network-logo{border-radius:15px}.placeholder\:text-black-50::-moz-placeholder{color:#00000080!important}.placeholder\:text-black-50::placeholder{color:#00000080!important}.disabled\:pointer-events-none:disabled{pointer-events:none!important}.dark\:border-white-10:is(.dark *){border-color:#ffffff1a!important}.dark\:border-white-25:is(.dark *){border-color:#ffffff40!important}.dark\:border-b-white:is(.dark *){--tw-border-opacity: 1 !important;border-bottom-color:rgb(255 255 255 / var(--tw-border-opacity))!important}.dark\:border-r-white:is(.dark *){--tw-border-opacity: 1 !important;border-right-color:rgb(255 255 255 / var(--tw-border-opacity))!important}.dark\:border-t-white:is(.dark *){--tw-border-opacity: 1 !important;border-top-color:rgb(255 255 255 / var(--tw-border-opacity))!important}.dark\:bg-white-10:is(.dark *){background-color:#ffffff1a!important}.dark\:bg-white-15:is(.dark *){background-color:#ffffff26!important}.dark\:bg-gradient-to-b:is(.dark *){background-image:linear-gradient(to bottom,var(--tw-gradient-stops))!important}.dark\:text-white-80:is(.dark *){color:#fffc!important}.dark\:mix-blend-multiply:is(.dark *){mix-blend-mode:multiply!important}.dark\:invert-0:is(.dark *){--tw-invert: invert(0) !important;filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)!important}.dark\:bg-matrix-dark:is(.dark *){background:linear-gradient(0deg,#111 0%,transparent 30%,transparent 70%,#111 100%),linear-gradient(90deg,transparent 0%,rgba(17,17,17,.6) 40%,rgba(17,17,17,.6) 60%,transparent 100%),url(/img/matrix-bg-dark.svg)!important;background-size:cover!important;background-position:center center!important}.dark\:bg-gradient-dark:is(.dark *){background:linear-gradient(90deg,#1110,#111111bf,#1110),linear-gradient(180deg,#111,#1110 40%,#1110 60%,#111),linear-gradient(270deg,#0b6af940,#1d92ff4d)!important}.dark\:placeholder\:text-white-50:is(.dark *)::-moz-placeholder{color:#ffffff80!important}.dark\:placeholder\:text-white-50:is(.dark *)::placeholder{color:#ffffff80!important}@media (min-width: 848px){.md\:w-\[calc\(33\%-\(16px\/3\)\)\]{width:calc(33% - (16px / 3))!important}.md\:w-\[calc\(50\%-20px\)\]{width:calc(50% - 20px)!important}.md\:w-\[calc\(50\%-8px\)\]{width:calc(50% - 8px)!important}.md\:max-w-\[378px\]{max-width:378px!important}.md\:grow{flex-grow:1!important}.md\:flex-row{flex-direction:row!important}.md\:items-start{align-items:flex-start!important}.md\:pr-0{padding-right:0!important}}.vocs_Section{border-top:1px solid var(--vocs-color_border);margin-top:var(--vocs-space_56);padding-top:var(--vocs-space_24)}.vocs_Anchor{color:var(--vocs-color_link);font-weight:var(--vocs-fontWeight_medium);text-underline-offset:var(--vocs-space_2);text-decoration:underline;transition:color .1s}.vocs_Callout_danger .vocs_Anchor{color:var(--vocs-color_dangerText)}.vocs_Callout_danger .vocs_Anchor:hover{color:var(--vocs-color_dangerTextHover)}.vocs_Callout_info .vocs_Anchor{color:var(--vocs-color_infoText)}.vocs_Callout_info .vocs_Anchor:hover{color:var(--vocs-color_infoTextHover)}.vocs_Callout_success .vocs_Anchor{color:var(--vocs-color_successText)}.vocs_Callout_success .vocs_Anchor:hover{color:var(--vocs-color_successTextHover)}.vocs_Callout_tip .vocs_Anchor{color:var(--vocs-color_tipText)}.vocs_Callout_tip .vocs_Anchor:hover{color:var(--vocs-color_tipTextHover)}.vocs_Callout_warning .vocs_Anchor{color:var(--vocs-color_warningText)}.vocs_Callout_warning .vocs_Anchor:hover{color:var(--vocs-color_warningTextHover)}.vocs_Anchor:hover{color:var(--vocs-color_linkHover)}.vocs_Section a.data-footnote-backref{color:var(--vocs-color_link);font-weight:var(--vocs-fontWeight_medium);text-underline-offset:var(--vocs-space_2);text-decoration:underline}.vocs_Section a.data-footnote-backref:hover{color:var(--vocs-color_linkHover)}.vocs_Autolink{opacity:0;margin-top:.1em;position:absolute;transition:opacity .1s,transform .1s;transform:translate(-2px) scale(.98)}.vocs_Heading:hover .vocs_Autolink{opacity:1;transform:translate(0) scale(1)}.vocs_Pre_wrapper{position:relative}.vocs_Code{transition:color .1s}:not(.vocs_Pre)>.vocs_Code{background-color:var(--vocs-color_codeInlineBackground);border:1px solid var(--vocs-color_codeInlineBorder);border-radius:var(--vocs-borderRadius_4);color:var(--vocs-color_codeInlineText);font-size:var(--vocs-fontSize_code);padding:var(--vocs-space_3) var(--vocs-space_6)}.vocs_Anchor>.vocs_Code{color:var(--vocs-color_link);text-decoration:underline;text-underline-offset:var(--vocs-space_2)}.vocs_Anchor:hover>.vocs_Code{color:var(--vocs-color_linkHover)}.vocs_Callout_danger .vocs_Code{color:var(--vocs-color_dangerText)}.vocs_Callout_info .vocs_Code{color:var(--vocs-color_infoText)}.vocs_Callout_success .vocs_Code{color:var(--vocs-color_successText)}.vocs_Callout_tip .vocs_Code{color:var(--vocs-color_tipText)}.vocs_Callout_warning .vocs_Code{color:var(--vocs-color_warningText)}.vocs_Heading .vocs_Code{color:inherit}.twoslash-popup-info-hover>.vocs_Code{background-color:inherit;padding:0;text-wrap:wrap}.twoslash-popup-jsdoc .vocs_Code{display:inline}.vocs_Authors{color:var(--vocs-color_text3);font-size:var(--vocs-fontSize_14)}.vocs_Authors_authors{color:var(--vocs-color_text)}.vocs_Authors_link{text-decoration:underline;text-underline-offset:2px}.vocs_Authors_link:hover{color:var(--vocs-color_text2)}.vocs_Authors_separator{color:var(--vocs-color_text3)}.vocs_BlogPosts{display:flex;flex-direction:column;gap:var(--vocs-space_32)}.vocs_BlogPosts_description{margin-top:var(--vocs-space_16)}.vocs_BlogPosts_divider{border-color:var(--vocs-color_background4)}.vocs_BlogPosts_post:hover .vocs_BlogPosts_readMore{color:var(--vocs-color_textAccent)}.vocs_BlogPosts_title{font-size:var(--vocs-fontSize_h2);font-weight:var(--vocs-fontWeight_semibold)}.vocs_Sponsors{border-radius:var(--vocs-borderRadius_8);display:flex;flex-direction:column;gap:var(--vocs-space_4);overflow:hidden}.vocs_Sponsors_title{background-color:var(--vocs-color_background3);color:var(--vocs-color_text3);font-size:var(--vocs-fontSize_13);font-weight:var(--vocs-fontWeight_medium);padding:var(--vocs-space_4) 0;text-align:center}.vocs_Sponsors_row{display:flex;flex-direction:row;gap:var(--vocs-space_4)}.vocs_Sponsors_column{align-items:center;background-color:var(--vocs-color_background3);display:flex;justify-content:center;padding:var(--vocs-space_32);width:calc(var(--vocs_Sponsors_columns) * 100%)}.vocs_Sponsors_sponsor{transition:background-color .1s}.vocs_Sponsors_sponsor:hover{background-color:var(--vocs-color_background5)}.dark .vocs_Sponsors_sponsor:hover{background-color:var(--vocs-color_white)}.vocs_Sponsors_image{filter:grayscale(1);height:var(--vocs_Sponsors_height);transition:filter .1s}.dark .vocs_Sponsors_image{filter:grayscale(1) invert(1)}.vocs_Sponsors_column:hover .vocs_Sponsors_image{filter:none}.vocs_AutolinkIcon{background-color:var(--vocs-color_textAccent);display:inline-block;margin-left:.25em;height:.8em;width:.8em;-webkit-mask:var(--vocs_AutolinkIcon_iconUrl) no-repeat center / contain;mask:var(--vocs_AutolinkIcon_iconUrl) no-repeat center / contain;transition:background-color .1s}.vocs_Autolink:hover .vocs_AutolinkIcon{background-color:var(--vocs-color_textAccentHover)}@media screen and (max-width: 720px){.vocs_CodeGroup{border-radius:0;border-right:none;border-left:none;margin-left:calc(-1 * var(--vocs-space_16));margin-right:calc(-1 * var(--vocs-space_16))}}.vocs_Steps{border-left:1.5px solid var(--vocs-color_border);counter-reset:step;padding-left:var(--vocs-space_24);margin-left:var(--vocs-space_12);margin-top:var(--vocs-space_24)}@media screen and (max-width: 720px){.vocs_Steps{margin-left:var(--vocs-space_4)}}.vocs_Subtitle{color:var(--vocs-color_text2);font-size:var(--vocs-fontSize_subtitle);font-weight:var(--vocs-fontWeight_regular);letter-spacing:-.02em;line-height:var(--vocs-lineHeight_heading);margin-top:var(--vocs-space_4);text-wrap:balance}.vocs_HorizontalRule{border-top:1px solid var(--vocs-color_hr);margin-bottom:var(--vocs-space_16)}.vocs_ListItem{line-height:var(--vocs-lineHeight_listItem)}.vocs_ListItem:not(:last-child){margin-bottom:.5em}.vocs_CopyButton{align-items:center;background-color:color-mix(in srgb,var(--vocs-color_background2) 75%,transparent);-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);border:1px solid var(--vocs-color_border);border-radius:var(--vocs-borderRadius_4);color:var(--vocs-color_text3);display:flex;justify-content:center;position:absolute;right:var(--vocs-space_18);top:var(--vocs-space_18);opacity:0;height:32px;width:32px;transition:background-color .15s,opacity .15s;z-index:var(--vocs-zIndex_surface)}.vocs_CopyButton:hover{background-color:var(--vocs-color_background4);transition:background-color .05s}.vocs_CopyButton:focus-visible{background-color:var(--vocs-color_background4);opacity:1;transition:background-color .05s}.vocs_CopyButton:hover:active{background-color:var(--vocs-color_background2)}.vocs_Pre:hover .vocs_CopyButton{opacity:1}.vocs_CodeTitle{align-items:center;background-color:var(--vocs-color_codeTitleBackground);border-bottom:1px solid var(--vocs-color_border);color:var(--vocs-color_text3);display:flex;font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_medium);gap:var(--vocs-space_6);padding:var(--vocs-space_8) var(--vocs-space_24)}.vocs_CodeGroup .vocs_CodeTitle{display:none}@media screen and (max-width: 720px){.vocs_CodeTitle{border-radius:0;padding-left:var(--vocs-space_16);padding-right:var(--vocs-space_16)}}.vocs_CalloutTitle{font-size:var(--vocs-fontSize_12);letter-spacing:.02em;text-transform:uppercase}.vocs_Strong{font-weight:var(--vocs-fontWeight_semibold)}.vocs_Content>.vocs_Strong{display:block}.vocs_Callout>.vocs_Strong{display:block;margin-bottom:var(--vocs-space_4)}.vocs_Summary{cursor:pointer}.vocs_Summary.vocs_Summary:hover{text-decoration:underline}.vocs_Details[open] .vocs_Summary{margin-bottom:var(--vocs-space_4)}.vocs_Callout .vocs_Summary{font-weight:var(--vocs-fontWeight_medium)}.vocs_Details .vocs_Summary.vocs_Summary{margin-bottom:0}.vocs_Table{display:block;border-collapse:collapse;overflow-x:auto;margin-bottom:var(--vocs-space_24)}.vocs_TableCell{border:1px solid var(--vocs-color_tableBorder);font-size:var(--vocs-fontSize_td);padding:var(--vocs-space_8) var(--vocs-space_12)}.vocs_TableHeader{border:1px solid var(--vocs-color_tableBorder);background-color:var(--vocs-color_tableHeaderBackground);color:var(--vocs-color_tableHeaderText);font-size:var(--vocs-fontSize_th);font-weight:var(--vocs-fontWeight_medium);padding:var(--vocs-space_8) var(--vocs-space_12);text-align:left}.vocs_TableHeader[align=center]{text-align:center}.vocs_TableHeader[align=right]{text-align:right}.vocs_TableRow{border-top:1px solid var(--vocs-color_tableBorder)}.vocs_TableRow:nth-child(2n){background-color:var(--vocs-color_background2)}.vocs_Button_button{align-items:center;background:var(--vocs-color_background4);border:1px solid var(--vocs-color_border);border-radius:var(--vocs-borderRadius_4);color:var(--vocs-color_text);display:flex;font-size:var(--vocs-fontSize_14);font-weight:var(--vocs-fontWeight_medium);height:36px;padding:0 var(--vocs-space_16);transition:background .1s;white-space:pre;width:-moz-fit-content;width:fit-content}.vocs_Button_button:hover{background:var(--vocs-color_background3)}.vocs_Button_button_accent{background:var(--vocs-color_backgroundAccent);color:var(--vocs-color_backgroundAccentText);border:1px solid var(--vocs-color_borderAccent)}.vocs_Button_button_accent:hover{background:var(--vocs-color_backgroundAccentHover)}.vocs_HomePage{align-items:center;display:flex;flex-direction:column;padding-top:var(--vocs-space_64);text-align:center;gap:var(--vocs-space_32)}.vocs_HomePage_logo{display:flex;justify-content:center;height:48px}.vocs_HomePage_title{font-size:var(--vocs-fontSize_64);font-weight:var(--vocs-fontWeight_semibold);line-height:1em}.vocs_HomePage_tagline{color:var(--vocs-color_text2);font-size:var(--vocs-fontSize_20);font-weight:var(--vocs-fontWeight_medium);line-height:1.5em}.vocs_HomePage_title+.vocs_HomePage_tagline{margin-top:calc(-1 * var(--vocs-space_8))}.vocs_HomePage_description{color:var(--vocs-color_text);font-size:var(--vocs-fontSize_16);font-weight:var(--vocs-fontWeight_regular);line-height:var(--vocs-lineHeight_paragraph)}.vocs_HomePage_tagline+.vocs_HomePage_description{margin-top:calc(-1 * var(--vocs-space_8))}.vocs_HomePage_buttons{display:flex;gap:var(--vocs-space_16)}.vocs_HomePage_tabs{min-width:300px}.vocs_HomePage_tabsList{display:flex;justify-content:center}.vocs_HomePage_tabsContent{color:var(--vocs-color_text2);font-family:var(--vocs-fontFamily_mono)}.vocs_HomePage_packageManager{color:var(--vocs-color_textAccent)}@media screen and (max-width: 720px){.vocs_HomePage{padding-top:var(--vocs-space_32)}.vocs_HomePage_logo{height:36px}} diff --git a/assets/support-BXsHU3sh.js b/assets/support-D7INvvTC.js similarity index 94% rename from assets/support-BXsHU3sh.js rename to assets/support-D7INvvTC.js index 5955f293d8..a22b87c495 100644 --- a/assets/support-BXsHU3sh.js +++ b/assets/support-D7INvvTC.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const s={title:"Support",description:"undefined"};function o(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"support",children:["Support",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#support",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const s={title:"Support",description:"undefined"};function o(n){const t={a:"a",div:"div",h1:"h1",header:"header",p:"p",...r(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"support",children:["Support",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#support",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Sequence has a front line Support Team in multiple timezones to tackle problems that arise with the Stack, as well as answer any question for new projects in order to integrate web3 experiences in games and applications."}),` `,e.jsx(t.p,{children:"If one of the members of the team does not know the answer, we'll further investigate (with backup support from the Sequence dev team) to get to the bottom of your troubles."}),` `,e.jsx(t.p,{children:e.jsx(t.a,{href:"https://go.crisp.chat/chat/embed/?website_id=9ef4395b-6bb1-4645-8e02-6071d89290a1",children:"Start talking to support today"})})]})}function i(n={}){const{wrapper:t}={...r(),...n.components};return t?e.jsx(t,{...n,children:e.jsx(o,{...n})}):o(n)}export{i as default,s as frontmatter}; diff --git a/assets/template-in-game-wallet-D1hUQ_72.js b/assets/template-in-game-wallet-DfMkrqjt.js similarity index 99% rename from assets/template-in-game-wallet-D1hUQ_72.js rename to assets/template-in-game-wallet-DfMkrqjt.js index 26c18b85d1..9257364af9 100644 --- a/assets/template-in-game-wallet-D1hUQ_72.js +++ b/assets/template-in-game-wallet-DfMkrqjt.js @@ -1,4 +1,4 @@ -import{d as n,j as e}from"./index-BG6_g6N7.js";const l={title:"Quickstart",description:"undefined"};function a(i){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"quickstart",children:["Quickstart",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as e}from"./index-XAh3cByi.js";const l={title:"Quickstart",description:"undefined"};function a(i){const s={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...n(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"quickstart",children:["Quickstart",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#quickstart",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.h2,{id:"try-a-demo",children:["Try a Demo",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#try-a-demo",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(s.aside,{"data-callout":"info",children:e.jsxs(s.p,{children:["Try out seamless UX of our in-game wallet at our ",e.jsx(s.a,{href:"https://0xsequence.github.io/demo-waas-auth/",children:"demo"})]})}),` `,e.jsxs(s.h2,{id:"template",children:["Template",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#template",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/token-directory-BodrMyGl.js b/assets/token-directory-CW87wFck.js similarity index 99% rename from assets/token-directory-BodrMyGl.js rename to assets/token-directory-CW87wFck.js index 3fcb12c780..d9aff0de73 100644 --- a/assets/token-directory-BodrMyGl.js +++ b/assets/token-directory-CW87wFck.js @@ -1,4 +1,4 @@ -import{d as a,j as e,e as t}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const l={title:"Token Directory",description:"undefined"};function s(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"token-directory",children:["Token Directory",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#token-directory",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e,e as t}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const l={title:"Token Directory",description:"undefined"};function s(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"token-directory",children:["Token Directory",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#token-directory",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Sequence maintains an open ",e.jsx(n.a,{href:"https://github.com/0xsequence/token-directory/",children:"token directory on github"}),", that allows Sequence infrastructure to filter spam from verified tokens."]}),` `,e.jsxs(n.p,{children:["While the infrastructure also watches sources like ",e.jsx(n.a,{href:"https://www.coingecko.com/",children:"CoinGecko"})," and ",e.jsx(n.a,{href:"https://opensea.com",children:"OpenSea"})," for verified contracts, all new tokens that are to be used - not verified from these sources - must be maintained manually."]}),` `,e.jsx(n.p,{children:"When tokens are added to various blockchains, the default is for these tokens to not be included in the default wallet settings."}),` diff --git a/assets/token-metadata-CUklviEo.js b/assets/token-metadata-CIPxOBpl.js similarity index 99% rename from assets/token-metadata-CUklviEo.js rename to assets/token-metadata-CIPxOBpl.js index e3cd35cfd2..6cfb8d552b 100644 --- a/assets/token-metadata-CUklviEo.js +++ b/assets/token-metadata-CIPxOBpl.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-BG6_g6N7.js";const l={title:"Token Metadata",description:"undefined"};function i(a){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...a.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"token-metadata",children:["Token Metadata",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#token-metadata",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-XAh3cByi.js";const l={title:"Token Metadata",description:"undefined"};function i(a){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...a.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"token-metadata",children:["Token Metadata",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#token-metadata",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["Sequence provides a metadata service for fetching token metadata for any ERC721 or ERC1155 contract, on ",s.jsx(e.a,{href:"/solutions/technical-references/chain-support",children:"any EVM chain"}),"."]}),` `,s.jsxs(e.ul,{children:[` `,s.jsx(e.li,{children:s.jsx(e.a,{href:"/api/metadata/token-metadata#fetch-token-metadata-for-any-erc721-or-erc1155-contract",children:"Learn how to query token metadata directly for any contract"})}),` diff --git a/assets/tokens-FSt-V0Oa.js b/assets/tokens-CFgywGKb.js similarity index 98% rename from assets/tokens-FSt-V0Oa.js rename to assets/tokens-CFgywGKb.js index c7cd50807e..f8c0050e45 100644 --- a/assets/tokens-FSt-V0Oa.js +++ b/assets/tokens-CFgywGKb.js @@ -1,4 +1,4 @@ -import{d as r,j as e}from"./index-BG6_g6N7.js";const t={title:"Tokens",description:"undefined"};function i(a){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"tokens",children:["Tokens",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tokens",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as e}from"./index-XAh3cByi.js";const t={title:"Tokens",description:"undefined"};function i(a){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...r(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"tokens",children:["Tokens",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tokens",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["Since their use is so ubiquitous, we've provided ",e.jsx(n.code,{children:"ERC20"}),", ",e.jsx(n.code,{children:"ERC721"}),", and ",e.jsx(n.code,{children:"ERC1155"})," wrappers of the ",e.jsx(n.code,{children:"Contract"})," class with pre-defined ABIs for your convenience. When interacting with tokens, it is recommended to use these."]}),` `,e.jsx(n.p,{children:"Any of these contract wrappers can be created via a standard constructor requiring only the contract address. For example:"}),` `,e.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:e.jsx(n.code,{children:e.jsx(n.span,{className:"line",children:e.jsx(n.span,{children:"ERC20 erc20 = new ERC20(contractAddress);"})})})}),` diff --git a/assets/transaction-history-CjK8dQQ5.js b/assets/transaction-history-DqLsRW4P.js similarity index 99% rename from assets/transaction-history-CjK8dQQ5.js rename to assets/transaction-history-DqLsRW4P.js index fa18fcaba2..e0cd291001 100644 --- a/assets/transaction-history-CjK8dQQ5.js +++ b/assets/transaction-history-DqLsRW4P.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-BG6_g6N7.js";const a={title:"Wallet transaction history",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...l(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallet-transaction-history",children:["Wallet transaction history",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-transaction-history",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-XAh3cByi.js";const a={title:"Wallet transaction history",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...l(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallet-transaction-history",children:["Wallet transaction history",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-transaction-history",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h2,{id:"fetch-the-transaction-history-for-any-wallet-address",children:["Fetch the transaction history for any wallet address",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetch-the-transaction-history-for-any-wallet-address",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:`Fetches the transaction / token history for any wallet address of any ERC20, ERC721 and ERC1155 token. The response includes decoded transaction details for easy consumption / rendering.`}),` diff --git a/assets/transaction-receipts-B1HmepHQ.js b/assets/transaction-receipts-yzrSE4zJ.js similarity index 99% rename from assets/transaction-receipts-B1HmepHQ.js rename to assets/transaction-receipts-yzrSE4zJ.js index 66f791eaca..688e640a0a 100644 --- a/assets/transaction-receipts-B1HmepHQ.js +++ b/assets/transaction-receipts-yzrSE4zJ.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-BG6_g6N7.js";const r={title:"Transaction receipts",description:"undefined"};function l(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"transaction-receipts",children:["Transaction receipts",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#transaction-receipts",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-XAh3cByi.js";const r={title:"Transaction receipts",description:"undefined"};function l(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",header:"header",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"transaction-receipts",children:["Transaction receipts",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#transaction-receipts",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.p,{children:["Any methods that involve sending transactions will return either ",s.jsx(e.em,{children:"successful"})," or ",s.jsx(e.em,{children:"failed"})," transaction receipts. Failed transaction receipts are generated without executing the transaction."]}),` `,s.jsxs(e.h2,{id:"successful-transaction-response",children:["Successful transaction response",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#successful-transaction-response",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["Any transaction that is successfully included in a block will return a ",s.jsx(e.code,{children:"SentTransactionResponse"})," object. This must be checked for before accessing the transaction hash, using the ",s.jsx(e.code,{children:"isSentTransactionResponse"})," type guard."]}),` diff --git a/assets/transation-history-token-contract-B07NOy5Q.js b/assets/transation-history-token-contract-BY-5X07Z.js similarity index 99% rename from assets/transation-history-token-contract-B07NOy5Q.js rename to assets/transation-history-token-contract-BY-5X07Z.js index 8bf60d5a8f..5427ec1fd3 100644 --- a/assets/transation-history-token-contract-B07NOy5Q.js +++ b/assets/transation-history-token-contract-BY-5X07Z.js @@ -1,4 +1,4 @@ -import{d as r,j as s}from"./index-BG6_g6N7.js";const a={title:"Contract token history",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"contract-token-history",children:["Contract token history",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-token-history",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s}from"./index-XAh3cByi.js";const a={title:"Contract token history",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...r(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"contract-token-history",children:["Contract token history",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#contract-token-history",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h3,{id:"fetch--listen-to-the-transaction-history-for-any-erc20-erc721-erc1155-contract",children:["Fetch / listen to the transaction history for any ERC20, ERC721, ERC1155 contract.",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetch--listen-to-the-transaction-history-for-any-erc20-erc721-erc1155-contract",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:`This query is helpful to track transaction history of a particular token contract. In this example, we use the Skyweaver token contract address 0x631998e91476DA5B870D741192fc5Cbc55F5a52E diff --git a/assets/transfers-Bw3dzTjO.js b/assets/transfers-B4DgcCGY.js similarity index 96% rename from assets/transfers-Bw3dzTjO.js rename to assets/transfers-B4DgcCGY.js index e1abd84211..6c316b813f 100644 --- a/assets/transfers-Bw3dzTjO.js +++ b/assets/transfers-B4DgcCGY.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-BG6_g6N7.js";const s={title:"Transfers",description:"undefined"};function t(r){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...a(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"transfers",children:["Transfers",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#transfers",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-XAh3cByi.js";const s={title:"Transfers",description:"undefined"};function t(r){const n={a:"a",code:"code",div:"div",h1:"h1",header:"header",p:"p",pre:"pre",span:"span",...a(),...r.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"transfers",children:["Transfers",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#transfers",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["In order to transfer ETH (or the gas currency for your network), it is recommended to use ",e.jsx(n.code,{children:"TranferEth.CreateTransaction"})]}),` `,e.jsx(n.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:e.jsxs(n.code,{children:[e.jsx(n.span,{className:"line",children:e.jsx(n.span,{children:"EthTransaction transferTransaction = await TransferEth.CreateTransaction(client, wallet, recipientAddress, DecimalNormalizer.Normalize(1));"})}),` `,e.jsx(n.span,{className:"line",children:e.jsx(n.span,{children:"TransactionReceipt receipt = await wallet.SendTransactionAndWaitForReceipt(client, transferTransaction);"})})]})}),` diff --git a/assets/trust-contract-recovery-flow-C7vU9CCb.js b/assets/trust-contract-recovery-flow-CL-gRzKa.js similarity index 98% rename from assets/trust-contract-recovery-flow-C7vU9CCb.js rename to assets/trust-contract-recovery-flow-CL-gRzKa.js index 35ff030d93..29abad3345 100644 --- a/assets/trust-contract-recovery-flow-C7vU9CCb.js +++ b/assets/trust-contract-recovery-flow-CL-gRzKa.js @@ -1,4 +1,4 @@ -import{d as o,j as e}from"./index-BG6_g6N7.js";const a={title:"Trust Contract Recovery Flow",description:"undefined"};function r(n){const t={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",...o(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"trust-contract-recovery-flow",children:["Trust Contract Recovery Flow",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#trust-contract-recovery-flow",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as o,j as e}from"./index-XAh3cByi.js";const a={title:"Trust Contract Recovery Flow",description:"undefined"};function r(n){const t={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",...o(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"trust-contract-recovery-flow",children:["Trust Contract Recovery Flow",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#trust-contract-recovery-flow",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Sequence WaaS accounts are protected by a disaster recovery mechanism contract called Trust. This document outlines the working mechanism behind the Trust contract, as well as the recovery flow to be triggered during a disaster scenario."}),` `,e.jsxs(t.h2,{id:"trust-contract-architecture",children:["Trust Contract Architecture",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#trust-contract-architecture",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(t.p,{children:"Trust is essentially a time lock contract. For every configured WaaS tenant project, there are two Trust contract instances deployed. One instance is controlled by the recovery wallet of the project. The other instance is controlled by the Sequence recovery wallet. In their default state, Trust contracts are in locked status. While locked, neither party can access WaaS accounts created under the tenant configuration."}),` diff --git a/assets/typescript-CmcWYvVq.js b/assets/typescript-CmcWYvVq.js deleted file mode 100644 index 04587697eb..0000000000 --- a/assets/typescript-CmcWYvVq.js +++ /dev/null @@ -1 +0,0 @@ -import{d as r,j as n}from"./index-BG6_g6N7.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/typescript-bRRaAnqq.js b/assets/typescript-bRRaAnqq.js new file mode 100644 index 0000000000..02edfbd55e --- /dev/null +++ b/assets/typescript-bRRaAnqq.js @@ -0,0 +1 @@ +import{d as r,j as n}from"./index-XAh3cByi.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/unique-tokens-CUmAK7tg.js b/assets/unique-tokens-DZawjbRT.js similarity index 99% rename from assets/unique-tokens-CUmAK7tg.js rename to assets/unique-tokens-DZawjbRT.js index 44074d8a54..bd28c9514b 100644 --- a/assets/unique-tokens-CUmAK7tg.js +++ b/assets/unique-tokens-DZawjbRT.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-BG6_g6N7.js";const a={title:"Tokens in a contract",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...l(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"tokens-in-a-contract",children:["Tokens in a contract",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tokens-in-a-contract",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-XAh3cByi.js";const a={title:"Tokens in a contract",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...l(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"tokens-in-a-contract",children:["Tokens in a contract",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#tokens-in-a-contract",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h3,{id:"fetch-all-unique-tokens-in-a-particular-erc207211155-contract-including-total-supplies",children:["Fetch all unique tokens in a particular ERC20/721/1155 contract, including total supplies",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#fetch-all-unique-tokens-in-a-particular-erc207211155-contract-including-total-supplies",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.strong,{children:"Fetches token supplies and metadata for any ERC20, ERC721, ERC1155 contract."}),` `,s.jsx(e.p,{children:`This query is helpful to render all tokens in a token contract, or to query the total token supplies. diff --git a/assets/unity-CmcWYvVq.js b/assets/unity-CmcWYvVq.js deleted file mode 100644 index 04587697eb..0000000000 --- a/assets/unity-CmcWYvVq.js +++ /dev/null @@ -1 +0,0 @@ -import{d as r,j as n}from"./index-BG6_g6N7.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/unity-bRRaAnqq.js b/assets/unity-bRRaAnqq.js new file mode 100644 index 0000000000..02edfbd55e --- /dev/null +++ b/assets/unity-bRRaAnqq.js @@ -0,0 +1 @@ +import{d as r,j as n}from"./index-XAh3cByi.js";const a=void 0;function o(t){return n.jsx(n.Fragment,{})}function u(t={}){const{wrapper:e}={...r(),...t.components};return e?n.jsx(e,{...t,children:n.jsx(o,{...t})}):o()}export{u as default,a as frontmatter}; diff --git a/assets/unity-guide-W8MN8zEw.js b/assets/unity-guide-23-brBJD.js similarity index 98% rename from assets/unity-guide-W8MN8zEw.js rename to assets/unity-guide-23-brBJD.js index eaf7306f15..b206d27fc0 100644 --- a/assets/unity-guide-W8MN8zEw.js +++ b/assets/unity-guide-23-brBJD.js @@ -1,4 +1,4 @@ -import{d as t,j as e}from"./index-BG6_g6N7.js";import{V as i}from"./Video-CiIVMpgC.js";const c={title:"Intro to Jelly Forest",description:"undefined"};function a(s){const n={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...t(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"intro-to-jelly-forest",children:["Intro to Jelly Forest",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#intro-to-jelly-forest",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as t,j as e}from"./index-XAh3cByi.js";import{V as i}from"./Video--Gq6B73C.js";const c={title:"Intro to Jelly Forest - Unity Game Guide",description:"undefined"};function a(s){const n={a:"a",aside:"aside",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",img:"img",li:"li",ol:"ol",p:"p",pre:"pre",span:"span",ul:"ul",...t(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"intro-to-jelly-forest---unity-game-guide",children:["Intro to Jelly Forest - Unity Game Guide",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#intro-to-jelly-forest---unity-game-guide",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"Jelly Forest is a blockchain-enabled 2D runner game. The game features social sign in, multi-tiered upgrades (with higher tier requiring lower tier upgrades as inputs to build/mint), and cosmetic upgrades, all of which are stored in an embedded non-custodial smart contract wallet. There are no transaction signing popups or gas fee payment requirements emposed on players."}),` `,e.jsxs(n.p,{children:["Learn ",e.jsx(n.a,{href:"https://docs-v2.sequence.xyz/solutions/technical-references/wallet-contracts/why",children:"why smart contract wallets here"})]}),` `,e.jsxs(n.p,{children:["Learn ",e.jsx(n.a,{href:"https://docs-v2.sequence.xyz/solutions/wallets/overview#what-are-the-differences-between-these-options",children:"what an embedded wallet is here"})]}),` diff --git a/assets/use-wallets-CXkYQaLo.js b/assets/use-wallets-h6ggXjOH.js similarity index 99% rename from assets/use-wallets-CXkYQaLo.js rename to assets/use-wallets-h6ggXjOH.js index 14495cca86..15f396d284 100644 --- a/assets/use-wallets-CXkYQaLo.js +++ b/assets/use-wallets-h6ggXjOH.js @@ -1,4 +1,4 @@ -import{d as n,j as s,e as a}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Wallets and transactions",description:"undefined"};function l(i){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallets-and-transactions",children:["Wallets and transactions",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallets-and-transactions",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s,e as a}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Wallets and transactions",description:"undefined"};function l(i){const e={a:"a",aside:"aside",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",h4:"h4",h5:"h5",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",...n(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallets-and-transactions",children:["Wallets and transactions",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallets-and-transactions",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Once the SDK is initialized and the user has been authenticated, you can access the wallet corresponding to that user's account. The wallet is the entry point to all the operations that can be performed on the user's account."}),` `,s.jsxs(e.h2,{id:"wallet-address",children:["Wallet address",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-address",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.p,{children:["The wallet address is unique to each user, can't be changed, and is used to identify the user's account. It is a string of 42 characters starting with ",s.jsx(e.code,{children:"0x"}),"."]}),` diff --git a/assets/validation-CfnXhEnq.js b/assets/validation-CXQf-5w4.js similarity index 99% rename from assets/validation-CfnXhEnq.js rename to assets/validation-CXQf-5w4.js index 195539dadc..55c0eb501c 100644 --- a/assets/validation-CfnXhEnq.js +++ b/assets/validation-CXQf-5w4.js @@ -1,4 +1,4 @@ -import{d as n,j as s}from"./index-BG6_g6N7.js";const l={title:"Validation",description:"undefined"};function a(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"validation",children:["Validation",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#validation",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as s}from"./index-XAh3cByi.js";const l={title:"Validation",description:"undefined"};function a(e){const i={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",...n(),...e.components};return s.jsxs(s.Fragment,{children:[s.jsx(i.header,{children:s.jsxs(i.h1,{id:"validation",children:["Validation",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#validation",children:s.jsx(i.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(i.p,{children:"Users with Auth + Embedded Wallet go through two distinct flows based on the login method:"}),` `,s.jsxs(i.h3,{id:"email-login-one-time-code",children:["Email login (one-time code)",s.jsx(i.a,{"aria-hidden":"true",tabIndex:"-1",href:"#email-login-one-time-code",children:s.jsx(i.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(i.p,{children:"For users logging in with an email, Amazon Cognito sends a one-time code to validate their identity. This is a trusted method that does not require additional verification."}),` diff --git a/assets/wagmi-GHgWQy9I.js b/assets/wagmi-D7WyxJYo.js similarity index 99% rename from assets/wagmi-GHgWQy9I.js rename to assets/wagmi-D7WyxJYo.js index e70b34077a..5609b7bba1 100644 --- a/assets/wagmi-GHgWQy9I.js +++ b/assets/wagmi-D7WyxJYo.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-BG6_g6N7.js";const l={sidebar_label:"Using Wagmi",title:"Using Wagmi",description:"undefined"};function i(n){const s={a:"a",br:"br",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-wagmi",children:["Using Wagmi",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-wagmi",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-XAh3cByi.js";const l={sidebar_label:"Using Wagmi",title:"Using Wagmi",description:"undefined"};function i(n){const s={a:"a",br:"br",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-wagmi",children:["Using Wagmi",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-wagmi",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:"The Sequence wallet used with Wagmi through the connector."}),` `,e.jsxs(s.p,{children:[`:::tip Try it live :) Try `,e.jsx(s.a,{href:"https://0xsequence.github.io/demo-dapp-wagmi/",children:"a live Dapp example"})," using Sequence + Metamask + Wallet Connect with wagmi."]}),` diff --git a/assets/wallet-configuration-BS7RGyuJ.js b/assets/wallet-configuration-YYRBOscK.js similarity index 99% rename from assets/wallet-configuration-BS7RGyuJ.js rename to assets/wallet-configuration-YYRBOscK.js index c1f50b593f..4bdd1d1ca7 100644 --- a/assets/wallet-configuration-BS7RGyuJ.js +++ b/assets/wallet-configuration-YYRBOscK.js @@ -1,4 +1,4 @@ -import{d as a,j as s}from"./index-BG6_g6N7.js";const r={title:"Wallet Configuration",description:"undefined"};function l(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...a(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallet-configuration",children:["Wallet Configuration",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-configuration",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as s}from"./index-XAh3cByi.js";const r={title:"Wallet Configuration",description:"undefined"};function l(i){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...a(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallet-configuration",children:["Wallet Configuration",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-configuration",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Every Sequence wallet has a configuration defined by a threshold and a list of signers with their corresponding weights."}),` `,s.jsxs(e.h2,{id:"configuration-layout",children:["Configuration layout",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#configuration-layout",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsxs(e.table,{children:[s.jsx(e.thead,{children:s.jsxs(e.tr,{children:[s.jsx(e.th,{children:"Name"}),s.jsx(e.th,{children:"Type"}),s.jsx(e.th,{children:"Range"}),s.jsx(e.th,{children:"Description"})]})}),s.jsxs(e.tbody,{children:[s.jsxs(e.tr,{children:[s.jsx(e.td,{children:"Threshold"}),s.jsx(e.td,{children:s.jsx(e.code,{children:"uint16"})}),s.jsx(e.td,{children:"1 - 65535"}),s.jsx(e.td,{children:'Required combined total "weight" of signers for a signature to be considered valid.'})]}),s.jsxs(e.tr,{children:[s.jsx(e.td,{children:"Signers"}),s.jsx(e.td,{children:s.jsx(e.code,{children:"signer[]"})}),s.jsx(e.td,{children:"unlimited - bounded by gas"}),s.jsx(e.td,{children:'List of signers that with their corresponding "weight"s.'})]})]})]}),` diff --git a/assets/wallet-context-CS_RygO9.js b/assets/wallet-context-BavaH71B.js similarity index 98% rename from assets/wallet-context-CS_RygO9.js rename to assets/wallet-context-BavaH71B.js index a63f69d077..cf967d064b 100644 --- a/assets/wallet-context-CS_RygO9.js +++ b/assets/wallet-context-BavaH71B.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-BG6_g6N7.js";const a={title:"Wallet Context",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",h1:"h1",header:"header",pre:"pre",span:"span",...l(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallet-context",children:["Wallet Context",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-context",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-XAh3cByi.js";const a={title:"Wallet Context",description:"undefined"};function i(n){const e={a:"a",code:"code",div:"div",h1:"h1",header:"header",pre:"pre",span:"span",...l(),...n.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"wallet-context",children:["Wallet Context",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-context",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.pre,{className:"shiki shiki-themes github-light github-dark-dimmed",style:{backgroundColor:"#fff","--shiki-dark-bg":"#22272e",color:"#24292e","--shiki-dark":"#adbac7"},tabIndex:"0",children:s.jsxs(e.code,{children:[s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:"export"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" const"}),s.jsx(e.span,{style:{color:"#005CC5","--shiki-dark":"#6CB6FF"},children:" sequenceContext"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:":"}),s.jsx(e.span,{style:{color:"#6F42C1","--shiki-dark":"#F69D50"},children:" WalletContext"}),s.jsx(e.span,{style:{color:"#D73A49","--shiki-dark":"#F47067"},children:" ="}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" {"})]}),` `,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" factory: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"'0xf9D09D634Fb818b05149329C1dcCFAeA53639d96'"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` `,s.jsxs(e.span,{className:"line",children:[s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:" mainModule: "}),s.jsx(e.span,{style:{color:"#032F62","--shiki-dark":"#96D0FF"},children:"'0xd01F11855bCcb95f88D7A48492F66410d4637313'"}),s.jsx(e.span,{style:{color:"#24292E","--shiki-dark":"#ADBAC7"},children:","})]}),` diff --git a/assets/wallet-factory-CUnVnojT.js b/assets/wallet-factory-BmKesde3.js similarity index 99% rename from assets/wallet-factory-CUnVnojT.js rename to assets/wallet-factory-BmKesde3.js index 13c5b6715f..f5df9a80bc 100644 --- a/assets/wallet-factory-CUnVnojT.js +++ b/assets/wallet-factory-BmKesde3.js @@ -1,4 +1,4 @@ -import{d as a,j as e,e as t}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Wallet Factory",description:"undefined"};function r(n){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"wallet-factory",children:["Wallet Factory",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-factory",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e,e as t}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Wallet Factory",description:"undefined"};function r(n){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",h4:"h4",header:"header",p:"p",pre:"pre",span:"span",strong:"strong",table:"table",tbody:"tbody",td:"td",th:"th",thead:"thead",tr:"tr",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"wallet-factory",children:["Wallet Factory",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-factory",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(s.p,{children:["Sequence Wallets are created using the ",e.jsx(s.a,{href:"https://github.com/0xsequence/wallet-contracts/blob/e0c5382636a88b4db4bcf0a70623355d7cd30fb4/contracts/Factory.sol",children:"Factory"})," contract, when called it creates child ",e.jsx(s.a,{href:"https://github.com/0xsequence/wallet-contracts/blob/e0c5382636a88b4db4bcf0a70623355d7cd30fb4/contracts/Wallet.sol",children:"MinimalUpgradeableProxies"}),' contracts, which are in essence the "boot" code of all Sequence wallets.']}),` `,e.jsxs(s.h2,{id:"factory-api",children:["Factory API",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#factory-api",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(s.h3,{id:"deploy",children:["deploy",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#deploy",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/wallet-sdks-xDR8aVZr.js b/assets/wallet-sdks-BSJMRl7O.js similarity index 97% rename from assets/wallet-sdks-xDR8aVZr.js rename to assets/wallet-sdks-BSJMRl7O.js index f285943d86..db15be94ed 100644 --- a/assets/wallet-sdks-xDR8aVZr.js +++ b/assets/wallet-sdks-BSJMRl7O.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-BG6_g6N7.js";import{V as r}from"./Video-CiIVMpgC.js";const o={title:"Wallet SDKs in Builder",description:"undefined"};function i(n){const t={a:"a",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",strong:"strong",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"wallet-sdks-in-builder",children:["Wallet SDKs in Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-sdks-in-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-XAh3cByi.js";import{V as r}from"./Video--Gq6B73C.js";const o={title:"Wallet SDKs in Builder",description:"undefined"};function i(n){const t={a:"a",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",strong:"strong",...a(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(t.header,{children:e.jsxs(t.h1,{id:"wallet-sdks-in-builder",children:["Wallet SDKs in Builder",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-sdks-in-builder",children:e.jsx(t.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(t.p,{children:"Sequence Builder offers multiple SDK options for integrating Sequence Wallet into your project."}),` `,e.jsxs(t.h3,{id:"how-can-i-integrate-a-wallet-into-my-game-with-these-options",children:["How can I integrate a Wallet into my game with these options?",e.jsx(t.a,{"aria-hidden":"true",tabIndex:"-1",href:"#how-can-i-integrate-a-wallet-into-my-game-with-these-options",children:e.jsx(t.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(t.p,{children:["In the Wallets SDK section of Builder, simply select ",e.jsx(t.strong,{children:"SequenceKit"}),", input wallet details, click 'save', and code snippets will be generated for you to use. The same can be done for ",e.jsx(t.strong,{children:"Web SDK"})," (watch the tutorial below for additional guidance). ",e.jsx(t.strong,{children:"Unity SDK"})," and ",e.jsx(t.strong,{children:"Unreal SDK"})," will help you integrate the same way, but by interacting their respective game engines. Note that both SDKs are receiving updates and will be available shortly."]}),` diff --git a/assets/wallet-ui-WnJsCVYt.js b/assets/wallet-ui-Cp42pJMw.js similarity index 99% rename from assets/wallet-ui-WnJsCVYt.js rename to assets/wallet-ui-Cp42pJMw.js index 9dd5b7a228..c96e40a473 100644 --- a/assets/wallet-ui-WnJsCVYt.js +++ b/assets/wallet-ui-Cp42pJMw.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-BG6_g6N7.js";const o={title:"Wallet UI",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",...s(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"wallet-ui",children:["Wallet UI",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-ui",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-XAh3cByi.js";const o={title:"Wallet UI",description:"undefined"};function t(i){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",ol:"ol",p:"p",...s(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"wallet-ui",children:["Wallet UI",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallet-ui",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"As a Wallet as a Service product, this SDK requires no UI. However, as we expect some apps will still choose to provide some form of wallet UI to users, we are making efforts to provide a default UI for you to use."}),` `,e.jsxs(n.p,{children:["This UI can be found under ",e.jsx(n.code,{children:"SequenceExamples"}),"."]}),` `,e.jsxs(n.p,{children:["To add the UI to your scene, you can add the ",e.jsx(n.code,{children:"WalletPanel"})," prefab found under ",e.jsx(n.code,{children:"SequenceExamples > Prefabs"}),". It is opened using the Open method; you must provide an ",e.jsx(n.a,{href:"https://github.com/0xsequence/sequence-unity/blob/master/Assets/SequenceSDK/WaaS/IWallet.cs",children:e.jsx(n.code,{children:"IWallet"})})," (e.g. a ",e.jsx(n.code,{children:"WaaSWallet"}),") as an argument."]}),` diff --git a/assets/wallets-DeiwdX_O.js b/assets/wallets-Bg9NQDuM.js similarity index 99% rename from assets/wallets-DeiwdX_O.js rename to assets/wallets-Bg9NQDuM.js index c0b757f640..3b5a3d1a1a 100644 --- a/assets/wallets-DeiwdX_O.js +++ b/assets/wallets-Bg9NQDuM.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-BG6_g6N7.js";const l={title:"Wallets",description:"undefined"};function t(i){const a={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...s(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"wallets",children:["Wallets",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallets",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-XAh3cByi.js";const l={title:"Wallets",description:"undefined"};function t(i){const a={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...s(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"wallets",children:["Wallets",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#wallets",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(a.p,{children:["In the context of SequenceEthereum, a ",e.jsx(a.code,{children:"Wallet"})," is defined by the ",e.jsx(a.code,{children:"IWallet"})," interface. There are currently 2 implementations of the ",e.jsx(a.code,{children:"IWallet"})," interface in this SDK."]}),` `,e.jsxs(a.h2,{id:"1-ethwallet",children:["1. ",e.jsx(a.a,{href:"https://github.com/0xsequence/sequence-unity/blob/master/Assets/SequenceSDK/Ethereum/Wallet/EthWallet.cs",children:"EthWallet"}),e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#1-ethwallet",children:e.jsx(a.div,{"data-autolink-icon":!0})})]}),` `,e.jsxs(a.p,{children:[e.jsx(a.code,{children:"EthWallet"})," is a standard ",e.jsx(a.a,{href:"https://ethereum.stackexchange.com/questions/5828/what-is-an-eoa-account",children:"EOA wallet"})," for EVM chains."]}),` diff --git a/assets/web3-onboard-Dq4ozGES.js b/assets/web3-onboard-IYPOmbp3.js similarity index 99% rename from assets/web3-onboard-Dq4ozGES.js rename to assets/web3-onboard-IYPOmbp3.js index 6094e72804..5d6afc0a0a 100644 --- a/assets/web3-onboard-Dq4ozGES.js +++ b/assets/web3-onboard-IYPOmbp3.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const l={sidebar_label:"Using Web3 Onboard",title:"Using Web3-Onboard",description:"undefined"};function a(n){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-web3-onboard",children:["Using Web3-Onboard",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-web3-onboard",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const l={sidebar_label:"Using Web3 Onboard",title:"Using Web3-Onboard",description:"undefined"};function a(n){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...i(),...n.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-web3-onboard",children:["Using Web3-Onboard",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-web3-onboard",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:"The Sequence wallet can be added through the Blocknative web3-onboard package."}),` `,e.jsxs(s.p,{children:[`:::tip Try it live :) Try `,e.jsx(s.a,{href:"https://0xsequence.github.io/demo-dapp-web3-onboard/",children:"a live Dapp example"})," using Sequence + Metamask + Wallet Connect with Web3-Onboard."]}),` diff --git a/assets/web3-react-v6-wOO63-pn.js b/assets/web3-react-v6-YR0ZVYS3.js similarity index 99% rename from assets/web3-react-v6-wOO63-pn.js rename to assets/web3-react-v6-YR0ZVYS3.js index 7201a187c8..f09005cefc 100644 --- a/assets/web3-react-v6-wOO63-pn.js +++ b/assets/web3-react-v6-YR0ZVYS3.js @@ -1,4 +1,4 @@ -import{d as a,j as e}from"./index-BG6_g6N7.js";const l={sidebar_label:"Web3 React V6",title:"Using Web3-React V6",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-web3-react-v6",children:["Using Web3-React V6",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-web3-react-v6",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` +import{d as a,j as e}from"./index-XAh3cByi.js";const l={sidebar_label:"Web3 React V6",title:"Using Web3-React V6",description:"undefined"};function n(i){const s={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...a(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(s.header,{children:e.jsxs(s.h1,{id:"using-web3-react-v6",children:["Using Web3-React V6",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-web3-react-v6",children:e.jsx(s.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(s.p,{children:"The connector is available for web3-react V6. Please note that later versions of web3-react cannot be used with the Web3-React V6 connector due to breaking changes."}),` `,e.jsxs(s.h2,{id:"installation",children:["Installation",e.jsx(s.a,{"aria-hidden":"true",tabIndex:"-1",href:"#installation",children:e.jsx(s.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(s.p,{children:"The connector may be installed via the npm package:"}),` diff --git a/assets/web3modal-D4SuzK9s.js b/assets/web3modal-DMIWfhnk.js similarity index 96% rename from assets/web3modal-D4SuzK9s.js rename to assets/web3modal-DMIWfhnk.js index a1b9f97a09..e53fbb0439 100644 --- a/assets/web3modal-D4SuzK9s.js +++ b/assets/web3modal-DMIWfhnk.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const s={sidebar_label:"Using Web3Modal",title:"Using Web3Modal",description:"undefined"};function t(a){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"using-web3modal",children:["Using Web3Modal",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-web3modal",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const s={sidebar_label:"Using Web3Modal",title:"Using Web3Modal",description:"undefined"};function t(a){const n={a:"a",div:"div",h1:"h1",h2:"h2",header:"header",p:"p",...i(),...a.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"using-web3modal",children:["Using Web3Modal",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#using-web3modal",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:"The Sequence wallet can easily be used with Web3Modal."}),` `,e.jsxs(n.p,{children:[`:::tip Try it live :) Try `,e.jsx(n.a,{href:"https://0xsequence.github.io/demo-dapp-web3modal/",children:"a live Dapp example"})," using Sequence + Wallet Connect with Web3Modal."]}),` diff --git a/assets/webgl-guide-CiV3i4Bp.js b/assets/webgl-guide-Bgv-p5F2.js similarity index 99% rename from assets/webgl-guide-CiV3i4Bp.js rename to assets/webgl-guide-Bgv-p5F2.js index 1666daae3e..7ce0ba1232 100644 --- a/assets/webgl-guide-CiV3i4Bp.js +++ b/assets/webgl-guide-Bgv-p5F2.js @@ -1,4 +1,4 @@ -import{d as r,j as s,e as i}from"./index-BG6_g6N7.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Aviator Web3 Game with WebGL",description:"undefined"};function n(l){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",h5:"h5",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...r(),...l.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"aviator-web3-game-with-webgl",children:["Aviator Web3 Game with WebGL",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#aviator-web3-game-with-webgl",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as r,j as s,e as i}from"./index-XAh3cByi.js";import"./HomePage.css.js.vanilla-l0sNRNKZ.js";const d={title:"Aviator Web3 Game with WebGL",description:"undefined"};function n(l){const e={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h4:"h4",h5:"h5",header:"header",hr:"hr",li:"li",p:"p",pre:"pre",span:"span",ul:"ul",...r(),...l.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"aviator-web3-game-with-webgl",children:["Aviator Web3 Game with WebGL",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#aviator-web3-game-with-webgl",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsx(e.p,{children:"Time to complete: 40 minutes"}),` `,s.jsx(e.p,{children:"In this guide we will go through the process of integrating WebGL in a game, leveraging tools from the Sequence Stack to earn achievements and use custom ERC1155's to play in-game."}),` `,s.jsxs(i,{type:"info",children:[s.jsxs(e.p,{children:["You can play a live version of the game ",s.jsx(e.a,{href:"https://0xsequence.github.io/waas-airplane-demo/",children:"here"})]}),s.jsxs(e.p,{children:["Where the full code to this game can be found ",s.jsx(e.a,{href:"https://github.com/0xsequence/waas-airplane-demo/tree/cloudflare-integration",children:"here"})]}),s.jsxs(e.p,{children:["And the full template code we'll be using for the guide can be found ",s.jsx(e.a,{href:"https://github.com/0xsequence-demos/template-webgl-js-sequence-kit-starter",children:"here"})]})]}),` diff --git a/assets/webhook-listener-boiSohwl.js b/assets/webhook-listener-DrikxAuv.js similarity index 99% rename from assets/webhook-listener-boiSohwl.js rename to assets/webhook-listener-DrikxAuv.js index 9ea1183ef3..5a13f862f4 100644 --- a/assets/webhook-listener-boiSohwl.js +++ b/assets/webhook-listener-DrikxAuv.js @@ -1,4 +1,4 @@ -import{d as l,j as s}from"./index-BG6_g6N7.js";const a={title:"Webhook",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"webhook",children:["Webhook",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#webhook",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` +import{d as l,j as s}from"./index-XAh3cByi.js";const a={title:"Webhook",description:"undefined"};function n(i){const e={a:"a",code:"code",div:"div",em:"em",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",pre:"pre",span:"span",strong:"strong",ul:"ul",...l(),...i.components};return s.jsxs(s.Fragment,{children:[s.jsx(e.header,{children:s.jsxs(e.h1,{id:"webhook",children:["Webhook",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#webhook",children:s.jsx(e.div,{"data-autolink-icon":!0})})]})}),` `,s.jsxs(e.h2,{id:"listen-to-blockchain-events-with-webhooks",children:["Listen to Blockchain Events with Webhooks",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#listen-to-blockchain-events-with-webhooks",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` `,s.jsx(e.p,{children:"You can listen to transactions via webhooks using the Sequence Indexer. Our filters allow you to listen to events with a particular contract address and/or account address and specific token ids."}),` `,s.jsxs(e.h3,{id:"registering-a-webhook",children:["Registering a Webhook",s.jsx(e.a,{"aria-hidden":"true",tabIndex:"-1",href:"#registering-a-webhook",children:s.jsx(e.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/marketplaces-DHQK1A-o.js b/assets/white-label-marketplace-BSVmR35g.js similarity index 94% rename from assets/marketplaces-DHQK1A-o.js rename to assets/white-label-marketplace-BSVmR35g.js index bb9fba2e1a..684c5f89af 100644 --- a/assets/marketplaces-DHQK1A-o.js +++ b/assets/white-label-marketplace-BSVmR35g.js @@ -1,4 +1,4 @@ -import{d as n,j as e}from"./index-BG6_g6N7.js";import{V as r}from"./Video-CiIVMpgC.js";const l={title:"Launch your white-label marketplace",description:"undefined"};function t(i){const a={a:"a",aside:"aside",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...n(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"launch-your-white-label-marketplace",children:["Launch your white-label marketplace",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#launch-your-white-label-marketplace",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` +import{d as n,j as e}from"./index-XAh3cByi.js";import{V as r}from"./Video--Gq6B73C.js";const l={title:"Launch your white-label marketplace",description:"undefined"};function t(i){const a={a:"a",aside:"aside",div:"div",h1:"h1",h2:"h2",h5:"h5",header:"header",p:"p",...n(),...i.components};return e.jsxs(e.Fragment,{children:[e.jsx(a.header,{children:e.jsxs(a.h1,{id:"launch-your-white-label-marketplace",children:["Launch your white-label marketplace",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#launch-your-white-label-marketplace",children:e.jsx(a.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(a.p,{children:"Sequence Builder provides game builders with a white-label marketplace that can be launched in seconds. With Builder, you can customize your marketplace and integrate it directly into your game experience, all with no-coding experience necessary."}),` `,e.jsxs(a.h2,{id:"try-it-out",children:["Try it out",e.jsx(a.a,{"aria-hidden":"true",tabIndex:"-1",href:"#try-it-out",children:e.jsx(a.div,{"data-autolink-icon":!0})})]}),` `,e.jsx(a.aside,{"data-callout":"info",children:e.jsxs(a.p,{children:["Get started quickly at ",e.jsx(a.a,{href:"https://sequence.build/",children:"Sequence Builder"})," to launch your marketplace."]})}),` diff --git a/assets/why-DX16Xg2z.js b/assets/why-BvKi4BXZ.js similarity index 98% rename from assets/why-DX16Xg2z.js rename to assets/why-BvKi4BXZ.js index fbf985d607..a9fd78a2e1 100644 --- a/assets/why-DX16Xg2z.js +++ b/assets/why-BvKi4BXZ.js @@ -1,4 +1,4 @@ -import{d as s,j as e}from"./index-BG6_g6N7.js";const i={title:"Why smart contracts wallets?",description:"undefined"};function a(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"why-smart-contracts-wallets",children:["Why smart contracts wallets?",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#why-smart-contracts-wallets",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as s,j as e}from"./index-XAh3cByi.js";const i={title:"Why smart contracts wallets?",description:"undefined"};function a(t){const n={a:"a",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",li:"li",p:"p",ul:"ul",...s(),...t.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"why-smart-contracts-wallets",children:["Why smart contracts wallets?",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#why-smart-contracts-wallets",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsx(n.p,{children:`Ethereum wallets may take two different forms, Externally owned accounts (EOAs) or Smart Contract Wallets. The Sequence wallet is implemented as a smart contract, which allows the system to provide additional security and functionality.`}),` `,e.jsxs(n.h2,{id:"externally-owned-accounts",children:["Externally owned accounts",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#externally-owned-accounts",children:e.jsx(n.div,{"data-autolink-icon":!0})})]}),` diff --git a/assets/write-to-blockchain-CM6-sEql.js b/assets/write-to-blockchain-A_WQTQqs.js similarity index 99% rename from assets/write-to-blockchain-CM6-sEql.js rename to assets/write-to-blockchain-A_WQTQqs.js index 0732af9188..38e675aeb2 100644 --- a/assets/write-to-blockchain-CM6-sEql.js +++ b/assets/write-to-blockchain-A_WQTQqs.js @@ -1,4 +1,4 @@ -import{d as i,j as e}from"./index-BG6_g6N7.js";const l={title:"Write to Blockchain",description:"undefined"};function a(s){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...i(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"write-to-blockchain",children:["Write to Blockchain",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#write-to-blockchain",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` +import{d as i,j as e}from"./index-XAh3cByi.js";const l={title:"Write to Blockchain",description:"undefined"};function a(s){const n={a:"a",code:"code",div:"div",h1:"h1",h2:"h2",h3:"h3",header:"header",p:"p",pre:"pre",span:"span",...i(),...s.components};return e.jsxs(e.Fragment,{children:[e.jsx(n.header,{children:e.jsxs(n.h1,{id:"write-to-blockchain",children:["Write to Blockchain",e.jsx(n.a,{"aria-hidden":"true",tabIndex:"-1",href:"#write-to-blockchain",children:e.jsx(n.div,{"data-autolink-icon":!0})})]})}),` `,e.jsxs(n.p,{children:["The blockchain can be thought of as a general-purpose, publically viewable and verified, database. To write to a blockchain, similar to with a typical database, you must make a ",e.jsx("u",{children:"transaction"}),"."]}),` `,e.jsxs(n.p,{children:["Typically, creating a blockchain transaction is rather complex, but WaaS handles that complexity for you and exposes 5 types of ",e.jsx(n.code,{children:"Transactions"}),"."]}),` `,e.jsxs(n.p,{children:["Sending a transaction is an ",e.jsx(n.a,{href:"https://medium.com/@sonusprocks/async-await-in-c-unity-explained-in-easy-words-571ebb6a9369",children:"asynchronous Task"}),". You can use ",e.jsx(n.code,{children:"await"})," when calling ",e.jsx(n.code,{children:"WaaSWallet.SendTransaction"})," from within an async Task if you wish to obtain the ",e.jsx(n.code,{children:"TransactionReturn"})," object directly. Or, you can take the recommended approach which is to setup handler functions for the ",e.jsx(n.code,{children:"WaaSWallet.OnSendTransactionComplete"})," and ",e.jsx(n.code,{children:"WaaSWallet.OnSendTransactionFailed"})," events and call the ",e.jsx(n.code,{children:"WaaSWallet.SendTransaction"})," method from anywhere (without await). For example:"]}),` diff --git a/guides/custom-marketplace/index.html b/guides/custom-marketplace/index.html index 18ec4beffb..a23f607688 100644 --- a/guides/custom-marketplace/index.html +++ b/guides/custom-marketplace/index.html @@ -12,11 +12,11 @@ - - + + -
Skip to content

Build a Custom Marketplace

+
Skip to content

Build a Custom Marketplace

In this guide we will go through the process of creating a custom marketplace from a few simple tools from the Sequence stack.

The tools will enable you to perform: